<?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>39589</bug_id>
          
          <creation_ts>2010-05-24 03:21:08 -0700</creation_ts>
          <short_desc>Add LayoutTestController methods to test DeviceOrientation</short_desc>
          <delta_ts>2010-07-30 07:17:05 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>42834</dependson>
    
    <dependson>43237</dependson>
          <blocked>30335</blocked>
    
    <blocked>39590</blocked>
    
    <blocked>43181</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andreip</cc>
    
    <cc>bulach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>hans</cc>
    
    <cc>jorlow</cc>
    
    <cc>morrita</cc>
    
    <cc>satish</cc>
    
    <cc>steveblock</cc>
    
    <cc>victorw</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>229683</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-24 03:21:08 -0700</bug_when>
    <thetext>These LayoutTestsController methods will be used to configure a mock DeviceOrientationClient to test DeviceOrientation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252439</commentid>
    <comment_count>1</comment_count>
      <attachid>61790</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-16 03:26:34 -0700</bug_when>
    <thetext>Created attachment 61790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252440</commentid>
    <comment_count>2</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-16 03:54:45 -0700</bug_when>
    <thetext>This patch isn&apos;t complete but I&apos;d value some feedback on the structure I&apos;ve used to provide the mock implementation, as I don&apos;t think there&apos;s much precedent to follow. The only other instance of a mock that&apos;s configurable from LayoutTestController that I&apos;m aware of is Geolocation, and that&apos;s currently in turmoil as we have two parallel implementations.

My intention is to provide a platform-independent mock for DeviceOrientationClient. This will ensure that all platforms use the same mock for consistency in testing. At the same time, the way in which the mock is inserted is left up to the platform.

Included in the patch is DeviceOrientationClientAndroid, to provide an example. It acts as a proxy to the real DeviceOrientationClient, which is owned by the WebViewCore. In normal use, the WebViewCore provides DeviceOrientationClientImpl, but provides DeviceOrientationClientMock when required in DumpRenderTree.

Currently, the decision of whether to use the mock is delayed until the corresponding LayoutTestController method is called. This allows LayoutTests which use both the real implementation and the mock implementation.

An alternative would be to have the WebViewCore simply provide either DeviceOrientationClientImpl or DeviceOrientationClientMock when instantiating the Page object, thus eliminating the DeviceOrientationClientAndroid proxy. The disadvantage of this approach is that the decision to use the mock would then have to be made at start-up time. DumpRenderTree would have to set the use of the mock when configuring the WebViewCore. This means that no layout tests can use the real DeviceOrientationClient implementation.

In reality, I think there are unlikely to be layout tests for DeviceOrientation (and other similarly mocked features) which need the real implementation, so I&apos;m leaning towards the latter approach.

What do people think?

Once we have agreed on the approach, I&apos;ll complete the patch. Is it required to provide a complete working implementation for Mac, even though the feature is not enabled for Mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252442</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-16 04:01:30 -0700</bug_when>
    <thetext>Attachment 61790 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3562058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252453</commentid>
    <comment_count>4</comment_count>
      <attachid>61793</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-16 04:27:48 -0700</bug_when>
    <thetext>Created attachment 61793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252457</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-16 04:36:28 -0700</bug_when>
    <thetext>Attachment 61793 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3560053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252492</commentid>
    <comment_count>6</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-16 06:56:47 -0700</bug_when>
    <thetext>&gt; An alternative would be to have the WebViewCore simply provide either
&gt; DeviceOrientationClientImpl or DeviceOrientationClientMock when instantiating
&gt; the Page object, thus eliminating the DeviceOrientationClientAndroid proxy. The
&gt; disadvantage of this approach is that the decision to use the mock would then
&gt; have to be made at start-up time. DumpRenderTree would have to set the use of
&gt; the mock when configuring the WebViewCore. This means that no layout tests can
&gt; use the real DeviceOrientationClient implementation.
Looking at the Mac implementation of WebView and DumpRenderTree, the page object is instantiated immediately from WebView.initWithFrame. So if we&apos;re to add the ability to configure the WebView to use the mock DeviceOrientationClient, we need to either ...
- Add &apos;useMockDeviceOrientationClient&apos; parameter to WebView.initWithFrame.
- Add a WebView.useMockDeviceOrientationClient method, and modify Page to use a new setDeviceOrientationClient method, rather than the DeviceOrientationClient constructor argument.

This former approach isn&apos;t scalable. The latter is, and by removing the DeviceOrientationClient argument from the Page constructor, avoids the scalability problem there too. Note that this approach was taken for the SpeechInputClient in Bug 41518.

I think it&apos;s probably best to make the change to add Page.setDeviceOrientationClient. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252502</commentid>
    <comment_count>7</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-16 07:16:18 -0700</bug_when>
    <thetext>Not a review, just a drive-by comment:

&gt; This former approach isn&apos;t scalable. The latter is, and by removing the DeviceOrientationClient argument from the Page constructor, avoids the scalability problem there too. Note that this approach was taken for the SpeechInputClient in Bug 41518.
&gt; 
&gt; I think it&apos;s probably best to make the change to add Page.setDeviceOrientationClient. What do you think?

Yes this was the reason I chose a setter for the client pointer in the speech input patch. The Page constructor is quite overloaded with 9 parameters now and many of them are used in only few of the ports. A setter would clean it up, while allowing the webkit layer to switch to the mock when necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252513</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-16 07:46:33 -0700</bug_when>
    <thetext>Attachment 61793 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3580054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252565</commentid>
    <comment_count>9</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-16 09:44:44 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Not a review, just a drive-by comment:
&gt; 
&gt; &gt; This former approach isn&apos;t scalable. The latter is, and by removing the DeviceOrientationClient argument from the Page constructor, avoids the scalability problem there too. Note that this approach was taken for the SpeechInputClient in Bug 41518.
&gt; &gt; 
&gt; &gt; I think it&apos;s probably best to make the change to add Page.setDeviceOrientationClient. What do you think?
&gt; 
&gt; Yes this was the reason I chose a setter for the client pointer in the speech input patch. The Page constructor is quite overloaded with 9 parameters now and many of them are used in only few of the ports. A setter would clean it up, while allowing the webkit layer to switch to the mock when necessary.

I agree with Satish&apos;s comment. It makes some sense to have these members initialized to null, and allow them to be set by embedders that implement them. This would be a nice bonus on top of being able to easily inject a mock implementation.

One downside would be that doing lazy initialization (which we mentioned in Bug 42265) of these members becomes more complicated. But, as was also pointed out in that discussion, these objects are very light-weight, so I don&apos;t think it&apos;s an important thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254464</commentid>
    <comment_count>10</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-21 12:48:16 -0700</bug_when>
    <thetext>&gt; A setter would clean it up, while allowing the webkit layer to switch to the
&gt; mock when necessary.
The more I think about it, the more I think that the argument about providing a mock isn&apos;t a good one. In all cases, (assuming the feature is enabled) we should provide a non-null client before the feature can be used ...
- For normal use, we provide the real client
- For DRT when the mock is always used, we provide the mock
- For DRT when a mock is injected in response to LayoutTestController method, we should use a proxy client that can handle switching between the real implementation and the mock

All of these can be achieved by passing a client to the constructor, without the need for a client setter method.

I think that an approach whereby the client is replaced with a mock in response to a LayoutTestController method, using a second call to a setter, is somewhat abusing the idea of a client.

I think the advantage of a setter method is that it avoids the long list of arguments to the page constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254470</commentid>
    <comment_count>11</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-21 12:53:37 -0700</bug_when>
    <thetext>There are many instances in WebKit/DRT codebase where Page() is constructed with many of the clients set to 0. All those are valid scenarios, in some cases the particular feature is not enabled and in other cases not implemented for the platform (e.g. client based geolocation only on few platforms). Wouldn&apos;t a setter make this relationship clearer, since the optional client parameters could be set by the platforms which have these features enabled and the rest can safely ignore without passing 0 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254476</commentid>
    <comment_count>12</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-21 13:00:24 -0700</bug_when>
    <thetext>&gt; There are many instances in WebKit/DRT codebase where Page() is constructed
&gt; with many of the clients set to 0. All those are valid scenarios, in some cases
&gt; the particular feature is not enabled and in other cases not implemented for
&gt; the platform (e.g. client based geolocation only on few platforms). Wouldn&apos;t a
&gt; setter make this relationship clearer, since the optional client parameters
&gt; could be set by the platforms which have these features enabled and the rest
&gt; can safely ignore without passing 0 ?

Agreed.

See also the webkit-dev thread &apos;Clients and the Page constructor&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255254</commentid>
    <comment_count>13</comment_count>
      <attachid>62392</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-23 01:20:44 -0700</bug_when>
    <thetext>Created attachment 62392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255256</commentid>
    <comment_count>14</comment_count>
      <attachid>62392</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-23 01:21:34 -0700</bug_when>
    <thetext>Comment on attachment 62392
Patch

Not yet ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255457</commentid>
    <comment_count>15</comment_count>
      <attachid>62442</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-23 10:19:36 -0700</bug_when>
    <thetext>Created attachment 62442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255464</commentid>
    <comment_count>16</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-23 10:32:17 -0700</bug_when>
    <thetext>The latest patch reflects my current thinking on the best way to add a mock for testing in a way that allows the mock to be shared between platforms. I&apos;ve provided the new LayoutTestController methods, a common mock, and the plumbing for Mac. The patch isn&apos;t in a state that&apos;s ready for submission, but should demonstrate the idea.

The mock client implementation lives in WebCore/platform/mock/. Each platform&apos;s WebView passes a client implementation to the Page. In DRT, this implementation is the mock. Both the client interface and the mock will have to be exposed in WebKit, so WebKit wrappers are needed. The wrappers can be (largely) platform-independent, so are provided to prevent (most) platforms from having to replicate this wrapping. These are currently in a new WebKit/mock directory.

On Mac, because WebKit types are ObjectiveC, the shared WebKit wrappers can not be used. Instead, Mac provides its own wrappers around the WebCore types. Any platform is able to do this if need be.

Note that the changes to WebView.mm obviously aren&apos;t suitable for submission, as WebDeviceOrientationClient is added as a parameter to the main init method. The problem is that the Mac WebView instantiates the Page object directly from the init method, so a setter for the WebDeviceOrientationClient can&apos;t be used. One alternative is to modify the Page object to set the client with a setter, but this creates the problem of a time window in which the client is not set. Another possibility is for Mac to use proxy client, which can be later configured to use either the real or mock client, but this adds the need for more plumbing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256056</commentid>
    <comment_count>17</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-26 08:45:13 -0700</bug_when>
    <thetext>The file WebGeolocationclient.h is present under WebKit/mock, even though the interface defined seems to be useful for both the mock and the real implementation. How about moving it to somewhere like WebKit/common?

In fact a slightly better layout for the mock and common code in WebKit may be
  WebKit/common/public : platform independent public headers like the one above
  WebKit/common/src : platform independent .cpp/.h internal to WebKit
The mock headers could go under /public and implementation could go under /src. Or if you prefer there could be a /mock directory under /public and /src.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256585</commentid>
    <comment_count>18</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-07-27 07:46:21 -0700</bug_when>
    <thetext>Looks like WebDeviceOrientationClient is used only decide whether to use the real Webcore client or a mock client. To handle the Webcore client methods startUpdating() etc, you&apos;d need to add more methods to WebDeviceOrientationClient or define a new interface which needs to be implemented by the WebKit embedder.

To simplify things, how about making DRT set a flag in WebKit to create mock objects instead of real ones? That way the embedder doesn&apos;t need to know the implementation (real or mock) of these objects. Access to the mock objects can be via an exported/public interface in WebKit and layoutTestController could call WebView after initialization to get a struct filled with all the mock object pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256619</commentid>
    <comment_count>19</comment_count>
      <attachid>62442</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-27 08:35:22 -0700</bug_when>
    <thetext>Comment on attachment 62442
Patch

There&apos;a another patch up for review that uses a mock client.  Please coordinate so we don&apos;t end up with a mess of where the mocks go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256624</commentid>
    <comment_count>20</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-27 08:38:19 -0700</bug_when>
    <thetext>Hi Adam. Are you referring to Satish&apos;s mock for SpeechInput? I&apos;m aware of that one and we&apos;re coordinating, but I&apos;d appreciate your comments on the approach here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256696</commentid>
    <comment_count>21</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-27 10:59:30 -0700</bug_when>
    <thetext>&gt; To handle the Webcore client methods startUpdating() etc, you&apos;d need to add
&gt; more methods to WebDeviceOrientationClient or define a new interface which
&gt; needs to be implemented by the WebKit embedder.
Exactly. My intent was the latter. Each platform would provide a WebDeviceOrientationClientFoo class for the &apos;real&apos; client that implements WebDeviceOrientationClient. This is exactly the same as each platform does for other types that it exposes in its WebKit API. The only difference is that because both the &apos;real&apos; implementation and the mock both implement WebDeviceOrientationClient, the mock can be switched in for testing.

&gt; To simplify things, how about making DRT set a flag in WebKit to create mock
&gt; objects instead of real ones? That way the embedder doesn&apos;t need to know the
&gt; implementation (real or mock) of these objects. Access to the mock objects can
&gt; be via an exported/public interface in WebKit and layoutTestController could
&gt; call WebView after initialization to get a struct filled with all the mock
&gt; object pointers.
Yes, you could do this. But as you point out, DRT still needs to get at the mock implementation to configure it, so each platform&apos;s WebKit layer would have to expose an interface for this mock. Also, it puts testing logic in the WebView layer, rather than keeping it in DRT. With my proposal, although the mock is exposed by the WebKit layer for use by the embedder, it doesn&apos;t add the need for any test logic to WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257202</commentid>
    <comment_count>22</comment_count>
      <attachid>62834</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-28 09:35:48 -0700</bug_when>
    <thetext>Created attachment 62834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257205</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 09:39:35 -0700</bug_when>
    <thetext>Attachment 62834 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/mac/WebView/WebViewPrivate.h:622:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257213</commentid>
    <comment_count>24</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-07-28 09:52:08 -0700</bug_when>
    <thetext>Attachment 62834 did not build on qt:
Build output: http://queues.webkit.org/results/3634092</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257230</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-28 10:10:24 -0700</bug_when>
    <thetext>Attachment 62834 did not build on mac:
Build output: http://queues.webkit.org/results/3571594</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257595</commentid>
    <comment_count>26</comment_count>
      <attachid>62930</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-29 02:31:58 -0700</bug_when>
    <thetext>Created attachment 62930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257598</commentid>
    <comment_count>27</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-07-29 02:37:54 -0700</bug_when>
    <thetext>Attachment 62930 did not build on qt:
Build output: http://queues.webkit.org/results/3571621</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257599</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-29 02:39:01 -0700</bug_when>
    <thetext>Attachment 62930 did not build on mac:
Build output: http://queues.webkit.org/results/3576627</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257601</commentid>
    <comment_count>29</comment_count>
      <attachid>62931</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-29 03:00:31 -0700</bug_when>
    <thetext>Created attachment 62931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257604</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-29 03:06:09 -0700</bug_when>
    <thetext>Attachment 62931 did not build on mac:
Build output: http://queues.webkit.org/results/3597557</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257609</commentid>
    <comment_count>31</comment_count>
      <attachid>62934</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-29 03:17:43 -0700</bug_when>
    <thetext>Created attachment 62934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257618</commentid>
    <comment_count>32</comment_count>
      <attachid>62934</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-29 03:39:54 -0700</bug_when>
    <thetext>Comment on attachment 62934
Patch

WebKitTools/DumpRenderTree/chromium/LayoutTestController.cpp:1319
 +  }
ASSERT_NOT_IMPLEMENTED();

WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:448
 +      // See https://bugs.webkit.org/show_bug.cgi?id=30335.
ditto

WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm:326
 +      // See https://bugs.webkit.org/show_bug.cgi?id=30335.
ditto

WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:690
 +  }
ditto

WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp:381
 +      // See https://bugs.webkit.org/show_bug.cgi?id=30335.
ditto

WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp:277
 +      // See https://bugs.webkit.org/show_bug.cgi?id=30335.
ditto


r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257624</commentid>
    <comment_count>33</comment_count>
      <attachid>62934</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-29 04:10:04 -0700</bug_when>
    <thetext>Comment on attachment 62934
Patch

After discussion with jorlow, decided that asserting isn&apos;t appropriate and that the precedent here is a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257629</commentid>
    <comment_count>34</comment_count>
      <attachid>62934</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-29 04:41:47 -0700</bug_when>
    <thetext>Comment on attachment 62934
Patch

Clearing flags on attachment: 62934

Committed r64270: &lt;http://trac.webkit.org/changeset/64270&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257630</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-29 04:41:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257790</commentid>
    <comment_count>36</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-29 11:23:26 -0700</bug_when>
    <thetext>Steve:

This is causing a lot of problems for us in Chromium land.  I know it&apos;s not really procedure since this didn&apos;t break anything on an official builder, but I think (hope) you won&apos;t mind if we revert this temporarily reverting this.

Hans: in a local Chromium client, please revert the revert (git revert &lt;the change&gt;) and run the ui tests and unit tests.  It&apos;s probably easy fixes, but I&apos;m not sure what to do for now.

Steve, we&apos;ll try to make sure this gets back in tomorrow or we&apos;ll just disable device orientation in Chromium for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257804</commentid>
    <comment_count>37</comment_count>
    <who name="Victor Wang">victorw</who>
    <bug_when>2010-07-29 12:11:09 -0700</bug_when>
    <thetext>Reverted r64270 for reason:

The patch breaks chromium webkit unittest

Committed r64299: &lt;http://trac.webkit.org/changeset/64299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258102</commentid>
    <comment_count>38</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-30 02:56:29 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Steve:
&gt; 
&gt; This is causing a lot of problems for us in Chromium land.  I know it&apos;s not really procedure since this didn&apos;t break anything on an official builder, but I think (hope) you won&apos;t mind if we revert this temporarily reverting this.
&gt; 
&gt; Hans: in a local Chromium client, please revert the revert (git revert &lt;the change&gt;) and run the ui tests and unit tests.  It&apos;s probably easy fixes, but I&apos;m not sure what to do for now.
&gt; 
&gt; Steve, we&apos;ll try to make sure this gets back in tomorrow or we&apos;ll just disable device orientation in Chromium for now.

The problem in Chromium is that for some code paths, the runtime flag for device orientation is accidentally left on even though no DeviceOrientationClient is provided.

Creating Bug 43237 to explicitly set the flag to off in chromium until we have a proper implementation.

After that is landed, this patch should be re-landed.

Sorry for the inconvenience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258106</commentid>
    <comment_count>39</comment_count>
      <attachid>63042</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-30 03:13:00 -0700</bug_when>
    <thetext>Created attachment 63042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258107</commentid>
    <comment_count>40</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-30 03:14:23 -0700</bug_when>
    <thetext>Updated patch adds new mock files to build files for all platforms, which I probably should have done before.

Should not be landed until Bug 43237 is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258112</commentid>
    <comment_count>41</comment_count>
      <attachid>63042</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-30 03:25:29 -0700</bug_when>
    <thetext>Comment on attachment 63042
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258156</commentid>
    <comment_count>42</comment_count>
      <attachid>63042</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-30 05:35:32 -0700</bug_when>
    <thetext>Comment on attachment 63042
Patch

Rejecting patch 63042 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:
TestControllerWin.cpp
patching file WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp
patching file WebKitTools/Scripts/build-webkit
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/dom/DeviceOrientation/basic-operation-expected.txt
patching file LayoutTests/fast/dom/DeviceOrientation/basic-operation.html
patching file LayoutTests/fast/dom/DeviceOrientation/script-tests/basic-operation.js
patching file LayoutTests/platform/gtk/Skipped

Full output: http://queues.webkit.org/results/3621277</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258159</commentid>
    <comment_count>43</comment_count>
      <attachid>63052</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-30 05:45:58 -0700</bug_when>
    <thetext>Created attachment 63052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258169</commentid>
    <comment_count>44</comment_count>
      <attachid>63052</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-30 06:02:48 -0700</bug_when>
    <thetext>Comment on attachment 63052
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258187</commentid>
    <comment_count>45</comment_count>
      <attachid>63052</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-30 07:16:53 -0700</bug_when>
    <thetext>Comment on attachment 63052
Patch

Clearing flags on attachment: 63052

Committed r64356: &lt;http://trac.webkit.org/changeset/64356&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258188</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-30 07:17:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61790</attachid>
            <date>2010-07-16 03:26:34 -0700</date>
            <delta_ts>2010-07-16 04:27:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100716112631.patch</filename>
            <type>text/plain</type>
            <size>21253</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzUzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMTYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0
aW9uLmh0bWwKKworICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6On5EZXZpY2VPcmllbnRhdGlv
bkNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6dGltZXJG
aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s6Omxhc3RPcmllbnRhdGlvbik6CisKIDIwMTAtMDctMTYgIE1pa2hhaWwgTmFnYW5vdiAgPG1u
YWdhbm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCShyZXZpc2lvbiA2MzUz
MykKKysrIFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDEyICszMiwxMSBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbjsKIAogY2xhc3Mg
RGV2aWNlT3JpZW50YXRpb25DbGllbnQgewogcHVibGljOgorICAgIHZpcnR1YWwgfkRldmljZU9y
aWVudGF0aW9uQ2xpZW50KCkge30KKwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCBE
ZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7fQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyKQorICAgIDogbV9jb250cm9sbGVyKGNvbnRy
b2xsZXIpCisgICAgLCBtX3RpbWVyKHRoaXMsICZEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6
OnRpbWVyRmlyZWQpCisgICAgLCBtX2lzVXBkYXRpbmcoZmFsc2UpCit7Cit9CisKK3ZvaWQgRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2lzVXBk
YXRpbmcgPSB0cnVlOworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3Rv
cFVwZGF0aW5nKCkKK3sKKyAgICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKKyAgICBtX3RpbWVyLnN0
b3AoKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0
aW9uKFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+IG9yaWVudGF0aW9uKQoreworICAgIG1f
b3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKKyAgICBpZiAobV9pc1VwZGF0aW5nICYmICFtX3Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2
b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZChUaW1lcjxEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVy
LCB0aW1lciA9PSAmbV90aW1lcik7CisgICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9jb250cm9s
bGVyLT5kaWRDaGFuZ2VEZXZpY2VPcmllbnRhdGlvbihtX29yaWVudGF0aW9uLmdldCgpKTsKK30K
KworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorI2RlZmluZSBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b24uaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIlRp
bWVyLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXI7CisKKy8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudCB1c2VkIHRvIHRlc3QgdGhlIGZlYXR1cmUgaW4KKy8vIER1bXBSZW5kZXJUcmVlLiBF
bWJlZGRlcnMgc2hvdWxkIHNob3VsZCBjb25maWd1cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0
aGlzCisvLyBjbGllbnQgd2hlbiBydW5uaW5nIER1bXBSZW5kZXJUcmVlLgorY2xhc3MgRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrIDogcHVibGljIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyKik7CisKKyAgICAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudAorICAgIHZp
cnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGlu
ZygpOworICAgIHZpcnR1YWwgRGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb24uZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0T3JpZW50
YXRpb24oUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4pOworCitwcml2YXRlOgorICAgIHZv
aWQgdGltZXJGaXJlZChUaW1lcjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+Kik7CisKKyAg
ICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+IG1fb3JpZW50YXRpb247CisgICAgRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CisgICAgVGltZXI8RGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrPiBtX3RpbWVyOworICAgIGJvb2wgbV9pc1VwZGF0aW5nOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrX2gKSW5kZXg6IFdlYktpdC9hbmRyb2lkL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50QW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2FuZHJvaWQvV2Vi
Q29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYktpdC9hbmRyb2lkL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50QW5kcm9pZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEFuZHJvaWQu
aCIKKworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisKKyNpbmNsdWRlICJXZWJWaWV3
Q29yZS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0RldmljZU9yaWVudGF0aW9uQ2xpZW50
QW5kcm9pZDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkKCkKK3sKKyAgICBMT0coIkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50QW5kcm9pZDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRy
b2lkKCkiKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEFuZHJvaWQ6OnNldFdl
YlZpZXdDb3JlKFdlYlZpZXdDb3JlKiB3ZWJWaWV3Q29yZSkKK3sKKyAgICBtX3dlYlZpZXdDb3Jl
ID0gd2ViVmlld0NvcmU7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lk
OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX3dlYlZpZXdDb3JlLT5kZXZpY2VPcmllbnRhdGlv
bkNsaWVudCgpLT5zdGFydFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25D
bGllbnRBbmRyb2lkOjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1fd2ViVmlld0NvcmUtPmRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KCktPnN0b3BVcGRhdGluZygpOworfQorCitEZXZpY2VPcmllbnRh
dGlvbiogRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkOjpsYXN0T3JpZW50YXRpb24oKSBj
b25zdAoreworICAgIHJldHVybiBtX3dlYlZpZXdDb3JlLT5kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCgpLT5sYXN0T3JpZW50YXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisj
ZW5kaWYgLy8gRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKSW5kZXg6IFdlYktpdC9hbmRyb2lk
L1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50QW5kcm9pZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9hbmRyb2lkL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50QW5kcm9pZC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2FuZHJvaWQvV2ViQ29yZVN1cHBv
cnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkX2gK
KyNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkX2gKKworI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIFdlYlZpZXdDb3JlOworCisvLyBUaGUgQW5kcm9p
ZCBpbXBsZW1lbnRhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC4gQWN0cyBhcyBhIHBy
b3h5IHRvCisvLyB0aGUgRGV2aWNlT3JpZW50YXRpb25DbGllbnQgb3duZWQgYnkgdGhlIFdlYlZp
ZXdDb3JlLiBUaGUgV2ViVmlld0NvcmUKKy8vIG9yZGluYXJpbHkgcHJvdmlkZXMgdGhlIHJlYWwg
Y2xpZW50IChEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwpLCBidXQgdGhlCisvLyBtb2NrIGNs
aWVudCAoRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKSB3aGVuIHJ1bm5pbmcgaW4gRHVtcFJl
bmRlclRyZWUuCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEFuZHJvaWQgOiBwdWJsaWMg
RGV2aWNlT3JpZW50YXRpb25DbGllbnQgeworcHVibGljOgorICAgIERldmljZU9yaWVudGF0aW9u
Q2xpZW50QW5kcm9pZCgpOworCisgICAgdm9pZCBzZXRXZWJWaWV3Q29yZShXZWJWaWV3Q29yZSop
OworCisgICAgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRVcGRhdGluZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2aXJ0
dWFsIERldmljZU9yaWVudGF0aW9uKiBsYXN0T3JpZW50YXRpb24oKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBXZWJWaWV3Q29yZSogbV93ZWJWaWV3Q29yZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IGFuZHJvaWQKKworI2VuZGlmIC8vIERldmljZU9yaWVudGF0aW9uQ2xpZW50QW5kcm9pZF9oCklu
ZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2MzUzNykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA3LTE2ICBTdGV2ZSBCbG9jayAgPHN0ZXZl
YmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgTGF5b3V0VGVzdENvbnRyb2xsZXIgbWV0aG9kcyB0byB0ZXN0IERldmlj
ZU9yaWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTU4OQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoc2V0TW9ja0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKwogMjAxMC0wNy0xNiAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEaXJrIFNjaHVsemUuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MzUzMykKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTY1LDYgKzk2NSwzMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXREb21haW5S
ZWxheGF0aW9uRm9yCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwog
fQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCA2
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBi
b29sIGNhblByb3ZpZGVBbHBoYSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRz
WzBdLCBleGNlcHRpb24pOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisgICAgZG91YmxlIGFs
cGhhID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsK
KyAgICBBU1NFUlQoISpleGNlcHRpb24pOworICAgIGJvb2wgY2FuUHJvdmlkZUJldGEgPSBKU1Zh
bHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1syXSwgZXhjZXB0aW9uKTsKKyAgICBBU1NF
UlQoISpleGNlcHRpb24pOworICAgIGRvdWJsZSBiZXRhID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGFyZ3VtZW50c1szXSwgZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOwor
ICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1
bWVudHNbNF0sIGV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAgICBkb3Vi
bGUgZ2FtbWEgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzVdLCBleGNlcHRp
b24pOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbihjYW5Qcm92aWRlQWxwaGEsIGFscGhhLCBjYW5Qcm92aWRlQmV0YSwg
YmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAg
IGlmIChhcmd1bWVudENvdW50IDwgMykKQEAgLTE4MTksNiArMTg0Myw3IEBAIEpTU3RhdGljRnVu
Y3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAic2V0SWNvbkRhdGFiYXNl
RW5hYmxlZCIsIHNldEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCIsIHNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TWFpbkZyYW1lSXNGaXJz
dFJlc3BvbmRlciIsIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXJDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAorICAgICAgICB7ICJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCBzZXRNb2NrRGV2aWNlT3Jp
ZW50YXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25F
cnJvciIsIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE5ld1dpbmRvd3NDb3B5QmFja0Zvcndh
cmRMaXN0Iiwgc2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3RDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCShyZXZpc2lvbiA2MzUzMykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBwcm9m
aWxpbmdFbmFibGVkKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQo
Ym9vbCBmbGFnKTsKICAgICB2b2lkIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIoYm9vbCBm
bGFnKTsKKyAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVB
bHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9v
bCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUs
IGRvdWJsZSBhY2N1cmFjeSk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRM
b2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlz
aW9uIDYzNTMzKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNiArMzIwLDE3IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGEKICAgICBbV2ViVmlldyBfc2V0RG9t
YWluUmVsYXhhdGlvbkZvcmJpZGRlbjpmb3JiaWRkZW4gZm9yVVJMU2NoZW1lOihOU1N0cmluZyAq
KXNjaGVtZUNGU3RyaW5nLmdldCgpXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxw
aGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1t
YSwgZG91YmxlIGdhbW1hKQoreworICAgIFVOVVNFRF9QQVJBTShjYW5Qcm92aWRlQWxwaGEpOwor
ICAgIFVOVVNFRF9QQVJBTShhbHBoYSk7CisgICAgVU5VU0VEX1BBUkFNKGNhblByb3ZpZGVCZXRh
KTsKKyAgICBVTlVTRURfUEFSQU0oYmV0YSk7CisgICAgVU5VU0VEX1BBUkFNKGNhblByb3ZpZGVH
YW1tYSk7CisgICAgVU5VU0VEX1BBUkFNKGdhbW1hKTsKKyAgICAvLyBUT0RPCit9CisKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBs
YXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFs
bG9jXSBpbml0V2l0aFRpbWVzdGFtcDowIGxhdGl0dWRlOmxhdGl0dWRlIGxvbmdpdHVkZTpsb25n
aXR1ZGUgYWNjdXJhY3k6YWNjdXJhY3ldOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjM1MzcpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAx
MC0wNy0xNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExheW91dFRlc3RDb250
cm9sbGVyIG1ldGhvZHMgdG8gdGVzdCBEZXZpY2VPcmllbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODkKKworICAgICAgICAqIGZhc3Qv
ZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQt
dGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzOiBBZGRlZC4KKwogMjAxMC0wNy0xNiAgTmlrb2xhcyBa
aW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aXJrIFNjaHVsemUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlv
bi9iYXNpYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9i
YXNpYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBA
CitUZXN0cyB0aGUgYmFzaWMgb3BlcmF0aW9uIG9mIERldmljZU9yaWVudGF0aW9uIHVzaW5nIHRo
ZSBtb2NrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmFscGhhIGlzIG1vY2tBbHBoYQorUEFTUyBkZXZpY2VPcmllbnRhdGlvbkV2
ZW50LmJldGEgaXMgbW9ja0JldGEKK1BBU1MgZGV2aWNlT3JpZW50YXRpb25FdmVudC5nYW1tYSBp
cyBtb2NrR2FtbWEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNp
Yy1vcGVyYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZp
Y2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3Njcmlw
dC10ZXN0cy9iYXNpYy1vcGVyYXRpb24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhlIGJh
c2ljIG9wZXJhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbiB1c2luZyB0aGUgbW9jay4iKTsKKwor
dmFyIG1vY2tBbHBoYSA9IDEuMTsKK3ZhciBtb2NrQmV0YSA9IDIuMjsKK3ZhciBtb2NrR2FtbWEg
PSAzLjM7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKHRydWUsIG1vY2tBbHBoYSwgdHJ1
ZSwgbW9ja0JldGEsIHRydWUsIG1vY2tHYW1tYSk7CitlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVz
dCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOworCit2
YXIgZGV2aWNlT3JpZW50YXRpb25FdmVudDsKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJkZXZp
Y2VvcmllbnRhdGlvbiIsIGZ1bmN0aW9uKGUpIHsKKyAgICBkZXZpY2VPcmllbnRhdGlvbkV2ZW50
ID0gZTsKKyAgICBzaG91bGRCZSgnZGV2aWNlT3JpZW50YXRpb25FdmVudC5hbHBoYScsICdtb2Nr
QWxwaGEnKTsKKyAgICBzaG91bGRCZSgnZGV2aWNlT3JpZW50YXRpb25FdmVudC5iZXRhJywgJ21v
Y2tCZXRhJyk7CisgICAgc2hvdWxkQmUoJ2RldmljZU9yaWVudGF0aW9uRXZlbnQuZ2FtbWEnLCAn
bW9ja0dhbW1hJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61793</attachid>
            <date>2010-07-16 04:27:48 -0700</date>
            <delta_ts>2010-07-23 01:20:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100716122745.patch</filename>
            <type>text/plain</type>
            <size>20705</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMTYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0
aW9uLmh0bWwKKworICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6On5EZXZpY2VPcmllbnRhdGlv
bkNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6dGltZXJG
aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s6Omxhc3RPcmllbnRhdGlvbik6CisKIDIwMTAtMDctMTYgIE1pa2hhaWwgTmFnYW5vdiAgPG1u
YWdhbm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCShyZXZpc2lvbiA2MzU0
MCkKKysrIFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDEyICszMiwxMSBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbjsKIAogY2xhc3Mg
RGV2aWNlT3JpZW50YXRpb25DbGllbnQgewogcHVibGljOgorICAgIHZpcnR1YWwgfkRldmljZU9y
aWVudGF0aW9uQ2xpZW50KCkge30KKwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCBE
ZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7fQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyKQorICAgIDogbV9jb250cm9sbGVyKGNvbnRy
b2xsZXIpCisgICAgLCBtX3RpbWVyKHRoaXMsICZEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6
OnRpbWVyRmlyZWQpCisgICAgLCBtX2lzVXBkYXRpbmcoZmFsc2UpCit7Cit9CisKK3ZvaWQgRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2lzVXBk
YXRpbmcgPSB0cnVlOworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3Rv
cFVwZGF0aW5nKCkKK3sKKyAgICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKKyAgICBtX3RpbWVyLnN0
b3AoKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0
aW9uKFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+IG9yaWVudGF0aW9uKQoreworICAgIG1f
b3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsKKyAgICBpZiAobV9pc1VwZGF0aW5nICYmICFtX3Rp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2
b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZChUaW1lcjxEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVy
LCB0aW1lciA9PSAmbV90aW1lcik7CisgICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9jb250cm9s
bGVyLT5kaWRDaGFuZ2VEZXZpY2VPcmllbnRhdGlvbihtX29yaWVudGF0aW9uLmdldCgpKTsKK30K
KworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorI2RlZmluZSBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b24uaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIlRp
bWVyLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXI7CisKKy8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudCB1c2VkIHRvIHRlc3QgdGhlIGZlYXR1cmUgaW4KKy8vIER1bXBSZW5kZXJUcmVlLiBF
bWJlZGRlcnMgc2hvdWxkIHNob3VsZCBjb25maWd1cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0
aGlzCisvLyBjbGllbnQgd2hlbiBydW5uaW5nIER1bXBSZW5kZXJUcmVlLgorY2xhc3MgRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrIDogcHVibGljIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyKik7CisKKyAgICAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudAorICAgIHZp
cnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGlu
ZygpOworICAgIHZpcnR1YWwgRGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb24uZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0T3JpZW50
YXRpb24oUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4pOworCitwcml2YXRlOgorICAgIHZv
aWQgdGltZXJGaXJlZChUaW1lcjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+Kik7CisKKyAg
ICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+IG1fb3JpZW50YXRpb247CisgICAgRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CisgICAgVGltZXI8RGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrPiBtX3RpbWVyOworICAgIGJvb2wgbV9pc1VwZGF0aW5nOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrX2gKSW5kZXg6IFdlYktpdC9hbmRyb2lkL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50QW5kcm9pZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2FuZHJvaWQvV2Vi
Q29yZVN1cHBvcnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYktpdC9hbmRyb2lkL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50QW5kcm9pZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEFuZHJvaWQu
aCIKKworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisKKyNpbmNsdWRlICJXZWJWaWV3
Q29yZS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0RldmljZU9yaWVudGF0aW9uQ2xpZW50
QW5kcm9pZDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkKCkKK3sKKyAgICBMT0coIkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50QW5kcm9pZDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRy
b2lkKCkiKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEFuZHJvaWQ6OnNldFdl
YlZpZXdDb3JlKFdlYlZpZXdDb3JlKiB3ZWJWaWV3Q29yZSkKK3sKKyAgICBtX3dlYlZpZXdDb3Jl
ID0gd2ViVmlld0NvcmU7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lk
OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX3dlYlZpZXdDb3JlLT5kZXZpY2VPcmllbnRhdGlv
bkNsaWVudCgpLT5zdGFydFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25D
bGllbnRBbmRyb2lkOjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1fd2ViVmlld0NvcmUtPmRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KCktPnN0b3BVcGRhdGluZygpOworfQorCitEZXZpY2VPcmllbnRh
dGlvbiogRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkOjpsYXN0T3JpZW50YXRpb24oKSBj
b25zdAoreworICAgIHJldHVybiBtX3dlYlZpZXdDb3JlLT5kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCgpLT5sYXN0T3JpZW50YXRpb24oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisj
ZW5kaWYgLy8gRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKSW5kZXg6IFdlYktpdC9hbmRyb2lk
L1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xpZW50QW5kcm9pZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9hbmRyb2lkL1dlYkNvcmVTdXBwb3J0L0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50QW5kcm9pZC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2FuZHJvaWQvV2ViQ29yZVN1cHBv
cnQvRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkX2gK
KyNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25DbGllbnRBbmRyb2lkX2gKKworI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIFdlYlZpZXdDb3JlOworCisvLyBUaGUgQW5kcm9p
ZCBpbXBsZW1lbnRhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC4gQWN0cyBhcyBhIHBy
b3h5IHRvCisvLyB0aGUgRGV2aWNlT3JpZW50YXRpb25DbGllbnQgb3duZWQgYnkgdGhlIFdlYlZp
ZXdDb3JlLiBUaGUgV2ViVmlld0NvcmUKKy8vIG9yZGluYXJpbHkgcHJvdmlkZXMgdGhlIHJlYWwg
Y2xpZW50IChEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwpLCBidXQgdGhlCisvLyBtb2NrIGNs
aWVudCAoRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKSB3aGVuIHJ1bm5pbmcgaW4gRHVtcFJl
bmRlclRyZWUuCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEFuZHJvaWQgOiBwdWJsaWMg
RGV2aWNlT3JpZW50YXRpb25DbGllbnQgeworcHVibGljOgorICAgIERldmljZU9yaWVudGF0aW9u
Q2xpZW50QW5kcm9pZCgpOworCisgICAgdm9pZCBzZXRXZWJWaWV3Q29yZShXZWJWaWV3Q29yZSop
OworCisgICAgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRVcGRhdGluZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2aXJ0
dWFsIERldmljZU9yaWVudGF0aW9uKiBsYXN0T3JpZW50YXRpb24oKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBXZWJWaWV3Q29yZSogbV93ZWJWaWV3Q29yZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IGFuZHJvaWQKKworI2VuZGlmIC8vIERldmljZU9yaWVudGF0aW9uQ2xpZW50QW5kcm9pZF9oCklu
ZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA3LTE2ICBTdGV2ZSBCbG9jayAgPHN0ZXZl
YmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgTGF5b3V0VGVzdENvbnRyb2xsZXIgbWV0aG9kcyB0byB0ZXN0IERldmlj
ZU9yaWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTU4OQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoc2V0TW9ja0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKwogMjAxMC0wNy0xNiAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEaXJrIFNjaHVsemUuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2MzU0MCkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcwLDYgKzk3MCwyNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXREb21haW5S
ZWxheGF0aW9uRm9yCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwog
fQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCA2
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBi
b29sIGNhblByb3ZpZGVBbHBoYSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRz
WzBdKTsKKyAgICBkb3VibGUgYWxwaGEgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1l
bnRzWzFdLCBleGNlcHRpb24pOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisgICAgYm9vbCBj
YW5Qcm92aWRlQmV0YSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzJdKTsK
KyAgICBkb3VibGUgYmV0YSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbM10s
IGV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAgICBib29sIGNhblByb3Zp
ZGVHYW1tYSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzRdKTsKKyAgICBk
b3VibGUgZ2FtbWEgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzVdLCBleGNl
cHRpb24pOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIq
PihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldE1v
Y2tEZXZpY2VPcmllbnRhdGlvbihjYW5Qcm92aWRlQWxwaGEsIGFscGhhLCBjYW5Qcm92aWRlQmV0
YSwgYmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewog
ICAgIGlmIChhcmd1bWVudENvdW50IDwgMykKQEAgLTE4MjQsNiArMTg0NSw3IEBAIEpTU3RhdGlj
RnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAic2V0SWNvbkRhdGFi
YXNlRW5hYmxlZCIsIHNldEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCIsIHNldEphdmFTY3JpcHRQcm9m
aWxpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TWFpbkZyYW1lSXNG
aXJzdFJlc3BvbmRlciIsIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXJDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorICAgICAgICB7ICJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCBzZXRNb2NrRGV2aWNl
T3JpZW50YXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRp
b25FcnJvciIsIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE5ld1dpbmRvd3NDb3B5QmFja0Zv
cndhcmRMaXN0Iiwgc2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3RDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBw
cm9maWxpbmdFbmFibGVkKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIoYm9v
bCBmbGFnKTsKKyAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3Zp
ZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwg
Ym9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAgdm9pZCBzZXRNb2NrR2Vv
bG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzNTQwKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDctMTYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBMYXlvdXRUZXN0
Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5CisKKyAgICAgICAgKiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBmYXN0L2RvbS9EZXZp
Y2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2Jh
c2ljLW9wZXJhdGlvbi5qczogQWRkZWQuCisKIDIwMTAtMDctMTYgIE5pa29sYXMgWmltbWVybWFu
biAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGly
ayBTY2h1bHplLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24v
YmFzaWMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFz
aWMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAor
VGVzdHMgdGhlIGJhc2ljIG9wZXJhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbiB1c2luZyB0aGUg
bW9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGV2aWNlT3JpZW50
YXRpb25FdmVudC5hbHBoYSBpcyBtb2NrQWxwaGEKK1BBU1MgZGV2aWNlT3JpZW50YXRpb25FdmVu
dC5iZXRhIGlzIG1vY2tCZXRhCitQQVNTIGRldmljZU9yaWVudGF0aW9uRXZlbnQuZ2FtbWEgaXMg
bW9ja0dhbW1hCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMt
b3BlcmF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNl
T3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9iYXNpYy1vcGVyYXRpb24uanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQt
dGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5qcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRoZSBiYXNp
YyBvcGVyYXRpb24gb2YgRGV2aWNlT3JpZW50YXRpb24gdXNpbmcgdGhlIG1vY2suIik7CisKK3Zh
ciBtb2NrQWxwaGEgPSAxLjE7Cit2YXIgbW9ja0JldGEgPSAyLjI7Cit2YXIgbW9ja0dhbW1hID0g
My4zOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVlLCBtb2NrQWxwaGEsIHRydWUs
IG1vY2tCZXRhLCB0cnVlLCBtb2NrR2FtbWEpOworZWxzZQorICAgIGRlYnVnKCdUaGlzIHRlc3Qg
Y2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKKwordmFy
IGRldmljZU9yaWVudGF0aW9uRXZlbnQ7Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZGV2aWNl
b3JpZW50YXRpb24iLCBmdW5jdGlvbihlKSB7CisgICAgZGV2aWNlT3JpZW50YXRpb25FdmVudCA9
IGU7CisgICAgc2hvdWxkQmUoJ2RldmljZU9yaWVudGF0aW9uRXZlbnQuYWxwaGEnLCAnbW9ja0Fs
cGhhJyk7CisgICAgc2hvdWxkQmUoJ2RldmljZU9yaWVudGF0aW9uRXZlbnQuYmV0YScsICdtb2Nr
QmV0YScpOworICAgIHNob3VsZEJlKCdkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmdhbW1hJywgJ21v
Y2tHYW1tYScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3dpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDYzNTQwKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTExMDksNiArMTEwOSw3IEBAIGZh
c3QvZG9tL2NsaWVudC13aWR0aC1oZWlnaHQtcXVpcmtzLmh0bWwKIGZhc3QvZG9tL2NsaWVudC13
aWR0aC1oZWlnaHQuaHRtbAogZmFzdC9kb20vY3NzVGFyZ2V0LWNyYXNoLmh0bWwKIGZhc3QvZG9t
L2ZyYW1lLWxvYWRpbmctdmlhLWRvY3VtZW50LXdyaXRlLmh0bWwKK2Zhc3QvZG9tL0RldmljZU9y
aWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlv
bi9jcmVhdGUtZXZlbnQuaHRtbAogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vb3B0aW9uYWwt
ZXZlbnQtcHJvcGVydGllcy5odG1sCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi93aW5kb3ct
cHJvcGVydHkuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62392</attachid>
            <date>2010-07-23 01:20:44 -0700</date>
            <delta_ts>2010-07-23 10:19:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100723092041.patch</filename>
            <type>text/plain</type>
            <size>70584</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMTYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0
aW9uLmh0bWwKKworICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6On5EZXZpY2VPcmllbnRhdGlv
bkNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6dGltZXJG
aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s6Omxhc3RPcmllbnRhdGlvbik6CisKIDIwMTAtMDctMTYgIE1pa2hhaWwgTmFnYW5vdiAgPG1u
YWdhbm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUuZXhwLmluCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTM5Myw2ICszOTMsNyBAQCBfX1pON1dlYkNvcmUxNmlzRW5kT2ZQ
YXJhZ3JhcGhFUktOU18xNVZpCiBfX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlND
OUV4ZWNTdGF0ZUVSTlMwXzlXZWFrR0NNYXBJUE5TXzEwU3RyaW5nSW1wbEVQTlMwXzhKU1N0cmlu
Z0VFRVM1XwogX19aTjdXZWJDb3JlMTdDcmVkZW50aWFsU3RvcmFnZTNnZXRFUktOU18xNVByb3Rl
Y3Rpb25TcGFjZUUKIF9fWk43V2ViQ29yZTE3RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVU
eXBlRVJLTlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTE3RGV2aWNlT3JpZW50YXRpb242Y3JlYXRl
RWJkYmRiZAogX19aTjdXZWJDb3JlMTdHbHlwaFBhZ2VUcmVlTm9kZTE4dHJlZUdseXBoUGFnZUNv
dW50RXYKIF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxMWdldE5QT2JqZWN0RXYKIF9f
Wk43V2ViQ29yZTE3SGlzdG9yeUNvbnRyb2xsZXIyNnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRl
RXYKQEAgLTQ2OCw2ICs0NjksOSBAQCBfX1pON1dlYkNvcmUyNkNTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uCiBfX1pON1dlYkNvcmUyNk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyNmNyZWF0ZUVQ
TlNfNUZyYW1lRVBOU18zMk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RQogX19aTjdX
ZWJDb3JlMjZ1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvckV2CiBfX1pON1dlYkNvcmUyN0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYlJL
TlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrMTRz
ZXRPcmllbnRhdGlvbkVOM1dURjEwUGFzc1JlZlB0cklOU18xN0RldmljZU9yaWVudGF0aW9uRUVF
CitfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja0MxRXYKK19fWk43V2Vi
Q29yZTI3RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOXNldENsaWVudEVQTlNfMjNEZXZpY2VP
cmllbnRhdGlvbkNsaWVudEUKIF9fWk43V2ViQ29yZTI3YXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFs
bGVyRXYKIF9fWk43V2ViQ29yZTI5aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHRFaWIKIF9f
Wk43V2ViQ29yZTI5c2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3JFYgpAQCAtNTE2LDcgKzUy
MCw3IEBAIF9fWk43V2ViQ29yZTRQYWdlNmdvQmFja0V2CiBfX1pON1dlYkNvcmU0UGFnZThnb1Rv
SXRlbUVQTlNfMTFIaXN0b3J5SXRlbUVOU18xM0ZyYW1lTG9hZFR5cGVFCiBfX1pON1dlYkNvcmU0
UGFnZTlnb0ZvcndhcmRFdgogX19aTjdXZWJDb3JlNFBhZ2U5aW5pdEdyb3VwRXYKLV9fWk43V2Vi
Q29yZTRQYWdlQzFFUE5TXzEyQ2hyb21lQ2xpZW50RVBOU18xN0NvbnRleHRNZW51Q2xpZW50RVBO
U18xMkVkaXRvckNsaWVudEVQTlNfMTBEcmFnQ2xpZW50RVBOU18xNUluc3BlY3RvckNsaWVudEVQ
TlNfMThQbHVnaW5IYWx0ZXJDbGllbnRFUE5TXzI3R2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50
RVBOU18yM0RldmljZU9yaWVudGF0aW9uQ2xpZW50RVBOU18yN0JhY2tGb3J3YXJkQ29udHJvbGxl
ckNsaWVudEUKK19fWk43V2ViQ29yZTRQYWdlQzFFUE5TXzEyQ2hyb21lQ2xpZW50RVBOU18xN0Nv
bnRleHRNZW51Q2xpZW50RVBOU18xMkVkaXRvckNsaWVudEVQTlNfMTBEcmFnQ2xpZW50RVBOU18x
NUluc3BlY3RvckNsaWVudEVQTlNfMThQbHVnaW5IYWx0ZXJDbGllbnRFUE5TXzI3R2VvbG9jYXRp
b25Db250cm9sbGVyQ2xpZW50RVBOU18yN0JhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudEUKIF9f
Wk43V2ViQ29yZTRQYWdlRDFFdgogX19aTjdXZWJDb3JlNGNvcmVFUDIwTlNVUkxQcm90ZWN0aW9u
U3BhY2UKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9i
YWxPYmplY3RFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkUKSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgy
LDEwICsxMTgyLDEyIEBACiAJCTU0QzUwRjdCMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUw
QTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBFMUI0
ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLzsgfTsKKwkJNTkwRTFC
NDkxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQg
LyogRGV2aWNlT3JpZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1OTBFMUI0QjExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmll
bnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU5MEUxQjRBMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0
aW9uRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk1OTEzOTUzQjExMDc1ODQ1MDA4M0VDNTUgLyog
Sk5JQnJpZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OTEzOTUzQTExMDc1ODQ1MDA4M0VDNTUgLyogSk5JQnJpZGdlLmggKi87IH07CiAJCTU5MTM5
NTNEMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkxMzk1M0MxMTA3NTg0RTAwODNFQzU1IC8qIEpO
SUJyaWRnZS5jcHAgKi87IH07CisJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5jcHAgKi87IH07CisJCTU5MzA5QTEzMTFGNEFFNkEwMDI1MDYwMyAvKiBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAvKiBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1OTYyMjk3ODExMzNFRkQ3MDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU5NjIyOTc3MTEzM0VGRDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUu
Y3BwICovOyB9OwogCQk1OTYyMjk3QTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTk5RTc1
OTAxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5RTc1OEYxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTk0
LDggKzExOTYsOCBAQAogCQk1OUE4NjAwNjExOURBRjdGMDBERUYxRUYgLyogSlNEZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5QTg2MDA1MTE5REFGN0YwMERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZl
bnQuY3BwICovOyB9OwogCQk1OUE4NjAwODExOURBRkExMDBERUYxRUYgLyogSlNEZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OUE4NjAwNzExOURBRkExMDBERUYxRUYgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50
LmggKi87IH07CiAJCTU5QThGMUQ0MTFBNjk1MDgwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTlBOEYxRDMxMUE2OTUwODAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlci5jcHAgKi87IH07Ci0JCTU5QThGMUQ2MTFBNjk1MTMwMDFBQzM0QSAvKiBEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU5QThGMUQ1MTFBNjk1MTMwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIuaCAqLzsgfTsKLQkJNTlBOEYxRDgxMUE2OTUyMDAwMUFDMzRBIC8qIERldmljZU9y
aWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25DbGll
bnQuaCAqLzsgfTsKKwkJNTlBOEYxRDYxMUE2OTUxMzAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTlBOEYxRDUxMUE2OTUxMzAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTU5QThGMUQ4MTFBNjk1MjAwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBOEYxRDcxMUE2
OTUyMDAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTlBOUU3QjAxMTA0NzU4ODAwREZC
NEMxIC8qIEphdmFJbnN0YW5jZUpTQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1OUE5RTdBRjExMDQ3NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNl
SlNDLmNwcCAqLzsgfTsKIAkJNTlBOUU3QjIxMTA0NzU5NDAwREZCNEMxIC8qIEphdmFJbnN0YW5j
ZUpTQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlB
OUU3QjExMTA0NzU5NDAwREZCNEMxIC8qIEphdmFJbnN0YW5jZUpTQy5oICovOyB9OwogCQk1OUI1
OTc3MzExMDg2NTZCMDA3MTU5RTggLyogQnJpZGdlSlNDLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QjU5NzcyMTEwODY1NkIwMDcxNTlFOCAvKiBC
cmlkZ2VKU0MuY3BwICovOyB9OwpAQCAtNjkzNiw2ICs2OTM4LDggQEAKIAkJNTkwRTFCNEExMUU0
RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTEzOTUzQTExMDc1ODQ1
MDA4M0VDNTUgLyogSk5JQnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpOSUJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTEzOTUzQzExMDc1
ODRFMDA4M0VDNTUgLyogSk5JQnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpOSUJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5
MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAz
IC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgcGF0aCA9IG1vY2svRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU5NjIyOTc3MTEzM0VGRDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvbG9jYXRpb25Qb3NpdGlv
bkNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5NzkxMTMzRUZF
MjAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTk5RTc1OEYxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCcmlkZ2UuaDsgcGF0aCA9IGJyaWRnZS9C
cmlkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMDEzLDYgKzEyMDE3LDgg
QEAKIAkJNTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAv
KiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKKwkJCQk1OTMwOUExMDExRjRBRTU4
MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAqLywKIAkJCSk7CiAJ
CQluYW1lID0gbW9jazsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xOTgxMSw2ICsx
OTgxNyw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1
ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBa
b29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTkzMDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8q
IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMjIwMSw2
ICsyMjIwOCw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1
OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTkzMDlB
MTExMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2
aXNpb24gNjM1NDApCisrKyBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxNSArMjksMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRGV2aWNlT3JpZW50YXRpb247CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI7CiAKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0
dWFsIH5EZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0VXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGlu
ZygpID0gMDsKICAgICB2aXJ0dWFsIERldmljZU9yaWVudGF0aW9uKiBsYXN0T3JpZW50YXRpb24o
KSBjb25zdCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5EZXZpY2VPcmllbnRhdGlv
bkNsaWVudCgpIHt9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDYzNTQwKQor
KysgV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTAgKzM0LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoUGFnZSog
cGFnZSwgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcGFnZShwYWdl
KQotICAgICwgbV9jbGllbnQoY2xpZW50KQordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI6OnNldENsaWVudChEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogY2xpZW50KQogeworICAgIG1f
Y2xpZW50ID0gY2xpZW50OworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNl
dENvbnRyb2xsZXIodGhpcyk7CiB9CiAKIHZvaWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
OjphZGRMaXN0ZW5lcihET01XaW5kb3cqIHdpbmRvdykKSW5kZXg6IFdlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSAr
MzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbjsK
IGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50OwotY2xhc3MgUGFnZTsKIAogY2xhc3MgRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyIHsKIHB1YmxpYzoKLSAgICBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIoUGFnZSosIERldmljZU9yaWVudGF0aW9uQ2xpZW50Kik7CisgICAgRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyKCkgeyB9CisKKyAgICB2b2lkIHNldENsaWVudChEZXZpY2VP
cmllbnRhdGlvbkNsaWVudCopOwogCiAgICAgdm9pZCBhZGRMaXN0ZW5lcihET01XaW5kb3cqKTsK
ICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKERPTVdpbmRvdyopOwpAQCAtNDYsNyArNDcsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VEZXZpY2VPcmllbnRhdGlvbihEZXZpY2VPcmllbnRh
dGlvbiopOwogCiBwcml2YXRlOgotICAgIFBhZ2UqIG1fcGFnZTsKICAgICBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudCogbV9jbGllbnQ7CiAgICAgdHlwZWRlZiBIYXNoQ291bnRlZFNldDxET01XaW5k
b3cqPiBMaXN0ZW5lcnNTZXQ7CiAgICAgTGlzdGVuZXJzU2V0IG1fbGlzdGVuZXJzOwpJbmRleDog
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAJKHJldmlzaW9uIDYzNTQwKQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MTMsNyArMTQxMyw3IEBAIGJvb2wgRE9NV2luZG93Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEEKICAgICAgICAgYWRkQmVmb3JlVW5sb2FkRXZlbnRMaXN0
ZW5lcih0aGlzKTsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIGVsc2UgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCAmJiBmcmFt
ZSgpICYmIGZyYW1lKCktPnBhZ2UoKSkKLSAgICAgICAgZnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VP
cmllbnRhdGlvbigpLT5hZGRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgZnJhbWUoKS0+cGFnZSgp
LT5kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKS0+YWRkTGlzdGVuZXIodGhpcyk7CiAjZW5k
aWYKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTQzMCw3ICsxNDMwLDcgQEAgYm9vbCBET01XaW5k
b3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29ucwogICAgICAgICByZW1vdmVCZWZvcmVVbmxvYWRF
dmVudExpc3RlbmVyKHRoaXMpOwogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50
ICYmIGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpKQotICAgICAgICBmcmFtZSgpLT5wYWdlKCkt
PmRldmljZU9yaWVudGF0aW9uKCktPnJlbW92ZUxpc3RlbmVyKHRoaXMpOworICAgICAgICBmcmFt
ZSgpLT5wYWdlKCktPmRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpLT5yZW1vdmVMaXN0ZW5l
cih0aGlzKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTA4LDcgKzE1MDgsNyBA
QCB2b2lkIERPTVdpbmRvdzo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoCiAKICNpZiBFTkFCTEUo
REVWSUNFX09SSUVOVEFUSU9OKQogICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKSkK
LSAgICAgICAgZnJhbWUoKS0+cGFnZSgpLT5kZXZpY2VPcmllbnRhdGlvbigpLT5yZW1vdmVBbGxM
aXN0ZW5lcnModGhpcyk7CisgICAgICAgIGZyYW1lKCktPnBhZ2UoKS0+ZGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyKCktPnJlbW92ZUFsbExpc3RlbmVycyh0aGlzKTsKICNlbmRpZgogCiAgICAg
cmVtb3ZlQWxsVW5sb2FkRXZlbnRMaXN0ZW5lcnModGhpcyk7CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA2
MzU0MCkKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcg
KzEyMiw3IEBAIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogICAgICAgICBmcmFt
ZXNbaV0tPmRvY3VtZW50KCktPmRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWUsIGZhbHNlLCBmYWxzZSkpOwogfQogCi1QYWdlOjpQYWdlKENocm9tZUNsaWVudCogY2hy
b21lQ2xpZW50LCBDb250ZXh0TWVudUNsaWVudCogY29udGV4dE1lbnVDbGllbnQsIEVkaXRvckNs
aWVudCogZWRpdG9yQ2xpZW50LCBEcmFnQ2xpZW50KiBkcmFnQ2xpZW50LCBJbnNwZWN0b3JDbGll
bnQqIGluc3BlY3RvckNsaWVudCwgUGx1Z2luSGFsdGVyQ2xpZW50KiBwbHVnaW5IYWx0ZXJDbGll
bnQsIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCogZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xp
ZW50LCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQsIEJh
Y2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCogYmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50KQor
UGFnZTo6UGFnZShDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCwgQ29udGV4dE1lbnVDbGllbnQq
IGNvbnRleHRNZW51Q2xpZW50LCBFZGl0b3JDbGllbnQqIGVkaXRvckNsaWVudCwgRHJhZ0NsaWVu
dCogZHJhZ0NsaWVudCwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQsIFBsdWdpbkhh
bHRlckNsaWVudCogcGx1Z2luSGFsdGVyQ2xpZW50LCBHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGll
bnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCwgQmFja0ZvcndhcmRDb250cm9sbGVyQ2xp
ZW50KiBiYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQpCiAgICAgOiBtX2Nocm9tZShuZXcgQ2hy
b21lKHRoaXMsIGNocm9tZUNsaWVudCkpCiAgICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIobmV3
IFNlbGVjdGlvbkNvbnRyb2xsZXIoMCwgdHJ1ZSkpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
QEAgLTEzOSw3ICsxMzksNyBAQCBQYWdlOjpQYWdlKENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50
LCBDCiAgICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihuZXcgR2VvbG9jYXRpb25Db250cm9s
bGVyKHRoaXMsIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFC
TEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIobmV3IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcih0aGlzLCBkZXZpY2VPcmllbnRhdGlv
bkNsaWVudCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihuZXcgRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudCgwKQpAQCAtMTc4LDkgKzE3OCw2IEBAIFBhZ2U6
OlBhZ2UoQ2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQsIEMKICNpZiAhRU5BQkxFKENMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikKICAgICBVTlVTRURfUEFSQU0oZ2VvbG9jYXRpb25Db250cm9sbGVy
Q2xpZW50KTsKICNlbmRpZgotI2lmICFFTkFCTEUoQ0xJRU5UX0RFVklDRV9PUklFTlRBVElPTikK
LSAgICBVTlVTRURfUEFSQU0oZGV2aWNlT3JpZW50YXRpb25DbGllbnQpOwotI2VuZGlmCiAKICAg
ICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+
OwpJbmRleDogV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
UGFnZS5oCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDcgKzkwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIHZvaWQgc2V0TmVlZHNSZWFwcGx5U3R5bGVzKCk7CiAKLSAgICAgICAg
UGFnZShDaHJvbWVDbGllbnQqLCBDb250ZXh0TWVudUNsaWVudCosIEVkaXRvckNsaWVudCosIERy
YWdDbGllbnQqLCBJbnNwZWN0b3JDbGllbnQqLCBQbHVnaW5IYWx0ZXJDbGllbnQqLCBHZW9sb2Nh
dGlvbkNvbnRyb2xsZXJDbGllbnQqLCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCosIEJhY2tGb3J3
YXJkQ29udHJvbGxlckNsaWVudCopOworICAgICAgICBQYWdlKENocm9tZUNsaWVudCosIENvbnRl
eHRNZW51Q2xpZW50KiwgRWRpdG9yQ2xpZW50KiwgRHJhZ0NsaWVudCosIEluc3BlY3RvckNsaWVu
dCosIFBsdWdpbkhhbHRlckNsaWVudCosIEdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCosIEJh
Y2tGb3J3YXJkQ29udHJvbGxlckNsaWVudCopOwogICAgICAgICB+UGFnZSgpOwogCiAgICAgICAg
IFJlbmRlclRoZW1lKiB0aGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWUuZ2V0KCk7IH07Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5oIgorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKQorICAgIDogbV9jb250cm9sbGVyKDApCisg
ICAgLCBtX3RpbWVyKHRoaXMsICZEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnRpbWVyRmly
ZWQpCisgICAgLCBtX2lzVXBkYXRpbmcoZmFsc2UpCit7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ciogY29udHJvbGxlcikKK3sKKyAgICBtX2NvbnRyb2xsZXIgPSBjb250cm9sbGVyOworfQorCit2
b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZygpCit7CisgICAg
bV9pc1VwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s6OnN0b3BVcGRhdGluZygpCit7CisgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7CisgICAgbV90
aW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzZXRP
cmllbnRhdGlvbihQYXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9uPiBvcmllbnRhdGlvbikKK3sK
KyAgICBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247CisgICAgaWYgKG1faXNVcGRhdGluZyAm
JiAhbV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQoVGltZXI8
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiogdGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNF
RCh0aW1lciwgdGltZXIgPT0gJm1fdGltZXIpOworICAgIG1fdGltZXIuc3RvcCgpOworICAgIG1f
Y29udHJvbGxlci0+ZGlkQ2hhbmdlRGV2aWNlT3JpZW50YXRpb24obV9vcmllbnRhdGlvbi5nZXQo
KSk7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja19o
CisjZGVmaW5lIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja19oCisKKyNpbmNsdWRlICJEZXZp
Y2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisj
aW5jbHVkZSAiVGltZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcjsKKworLy8gQSBtb2NrIGltcGxlbWVudGF0aW9uIG9mIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50IHVzZWQgdG8gdGVzdCB0aGUgZmVhdHVyZSBpbgorLy8gRHVtcFJl
bmRlclRyZWUuIEVtYmVkZGVycyBzaG91bGQgc2hvdWxkIGNvbmZpZ3VyZSB0aGUgUGFnZSBvYmpl
Y3QgdG8gdXNlIHRoaXMKKy8vIGNsaWVudCB3aGVuIHJ1bm5pbmcgRHVtcFJlbmRlclRyZWUuCitj
bGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMgRGV2aWNlT3JpZW50YXRp
b25DbGllbnQgeworcHVibGljOgorICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOwor
CisgICAgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRVcGRhdGluZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2
aXJ0dWFsIERldmljZU9yaWVudGF0aW9uKiBsYXN0T3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVy
biBtX29yaWVudGF0aW9uLmdldCgpOyB9CisKKyAgICB2b2lkIHNldE9yaWVudGF0aW9uKFBhc3NS
ZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHRpbWVyRmly
ZWQoVGltZXI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiopOworCisgICAgUmVmUHRyPERl
dmljZU9yaWVudGF0aW9uPiBtX29yaWVudGF0aW9uOworICAgIERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlciogbV9jb250cm9sbGVyOworICAgIFRpbWVyPERldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jaz4gbV90aW1lcjsKKyAgICBib29sIG1faXNVcGRhdGluZzsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja19oCklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1
NSw3IEBAIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVIKICAgICAgICAg
Ly8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGluZyBpdHNlbGYsIHdlIG1pZ2h0IGxl
YWsgdGhlIHdvcmxkLgogICAgICAgICAvLyBUaGUgY29tbWVudCBzYWlkIHRoYXQgdGhlIENhY2hl
IGNvZGUgZG9lcyBub3Qga25vdyBhYm91dCBDYWNoZWRJbWFnZXMKICAgICAgICAgLy8gaG9sZGlu
ZyBGcmFtZXMgYW5kIHdvbid0IGtub3cgdG8gYnJlYWsgdGhlIGN5Y2xlLiBCdXQgCi0gICAgICAg
IG1fcGFnZS5zZXQobmV3IFBhZ2UobV9jaHJvbWVDbGllbnQuZ2V0KCksIGR1bW15Q29udGV4dE1l
bnVDbGllbnQsIGR1bW15RWRpdG9yQ2xpZW50LCBkdW1teURyYWdDbGllbnQsIGR1bW15SW5zcGVj
dG9yQ2xpZW50LCAwLCAwLCAwLCAwKSk7CisgICAgICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UobV9j
aHJvbWVDbGllbnQuZ2V0KCksIGR1bW15Q29udGV4dE1lbnVDbGllbnQsIGR1bW15RWRpdG9yQ2xp
ZW50LCBkdW1teURyYWdDbGllbnQsIGR1bW15SW5zcGVjdG9yQ2xpZW50LCAwLCAwLCAwKSk7CiAg
ICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICAg
ICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZChmYWxzZSk7CiAgICAg
ICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwpJbmRleDog
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjM1NDApCisr
KyBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw2ICsxMTQsMTQgQEAKIAkJNTFGREM0RDMwQjBBRjVDMTAwRjg0RUIzIC8qIFdlYkhp
c3RvcnlJdGVtUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGREM0RDIwQjBBRjVDMTAwRjg0RUIzIC8qIFdlYkhpc3RvcnlJdGVtUHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUy
NDFBREY1MEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI0MUFERjMwQjFCQzQ4QTAwNDAxMkJEIC8qIFdl
YkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTI0MUFERjYwQjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNhY2hlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI0MUFERjQwQjFCQzQ4QTAwNDAxMkJE
IC8qIFdlYkNhY2hlLm1tICovOyB9OworCQk1OTMwOUEyMzExRjRCNjVGMDAyNTA2MDMgLyogV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTkzMDlBMjIxMUY0QjY1RjAwMjUwNjAzIC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jay5tbSAqLzsgfTsKKwkJNTkzMDlBMjUxMUY0QjY2OTAwMjUw
NjAzIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkzMDlBMjQxMUY0QjY2OTAwMjUwNjAzIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU5QjQ4QUY4MTFGNDkyMkYwMDhGODFBQyAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTlCNDhBRjcxMUY0OTIyRjAwOEY4MUFDIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNTlCNDhCMDQxMUY0OTIzOTAwOEY4MUFDIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTlCNDhCMDMxMUY0OTIzOTAwOEY4MUFDIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
Lm1tICovOyB9OworCQk1OUI0OEIwNjExRjQ5MjQzMDA4RjgxQUMgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTlCNDhCMDUxMUY0OTI0MzAwOEY4MUFDIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50SW50ZXJuYWwuaCAqLzsgfTsKKwkJNTlCNDhCMDgxMUY0OTYyNjAwOEY4MUFDIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OUI0OEIwNzExRjQ5NjI2MDA4RjgxQUMgLyogV2ViRGV2aWNlT3JpZW50
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1OUI0OEIwQTExRjQ5NjJEMDA4RjgxQUMgLyogV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUI0OEIwOTExRjQ5
NjJEMDA4RjgxQUMgLyogV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gKi87IH07CisJCTU5QjQ4QjBD
MTFGNDk2MzcwMDhGODFBQyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUI0OEIwQjExRjQ5NjM3
MDA4RjgxQUMgLyogV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oICovOyB9OwogCQk1RDdC
RjgxNDBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDdCRjgxMjBDMkExRDkwMDA4Q0UwNkQgLyog
V2ViSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNUQ3QkY4MTUwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEN0JGODEzMEMyQTFE
OTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi87IH07CiAJCTVERTgzQTdBMEQwRjdGOTQw
MENBRDEyQSAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubmliIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REU4M0E3NDBEMEY3Rjk0MDBDQUQx
MkEgLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYiAqLzsgfTsKQEAgLTUxNyw2ICs1
MjUsMTQgQEAKIAkJNTFGREM0RDIwQjBBRjVDMTAwRjg0RUIzIC8qIFdlYkhpc3RvcnlJdGVtUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJIaXN0b3J5SXRlbVBy
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0MUFERjMwQjFCQzQ4QTAw
NDAxMkJEIC8qIFdlYkNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjQxQURGNDBCMUJDNDhB
MDA0MDEyQkQgLyogV2ViQ2FjaGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5MzA5
QTIyMTFGNEI2NUYwMDI1MDYwMyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2subW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5MzA5QTI0
MTFGNEI2NjkwMDI1MDYwMyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5QjQ4QUY3MTFGNDkyMkYwMDhG
ODFBQyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1OUI0OEIwMzExRjQ5MjM5MDA4RjgxQUMgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTlCNDhCMDUxMUY0OTI0MzAwOEY4MUFDIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1OUI0OEIwNzExRjQ5NjI2MDA4RjgxQUMgLyogV2ViRGV2aWNlT3JpZW50YXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTlCNDhCMDkxMUY0OTYyRDAwOEY4MUFDIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU5QjQ4QjBCMTFGNDk2MzcwMDhGODFBQyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0
aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QkY4MTIwQzJB
MUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
N0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1REU4M0E3NTBEMEY3Rjk0MDBDQUQxMkEgLyogRW5nbGlzaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIubmli
OyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovV2ViSmF2YVNjcmlwdFRleHRJ
bnB1dFBhbmVsLm5pYjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtMTEwNCw2ICsx
MTIwLDE0IEBACiAJCTlDN0NBQkJCMDE5MEEzN0MwRUNBMTZFQSAvKiBXZWJWaWV3ICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1OTMwOUEyNDExRjRCNjY5
MDAyNTA2MDMgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggKi8sCisJCQkJNTkz
MDlBMjIxMUY0QjY1RjAwMjUwNjAzIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5t
bSAqLywKKwkJCQk1OUI0OEIwQjExRjQ5NjM3MDA4RjgxQUMgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25JbnRlcm5hbC5oICovLAorCQkJCTU5QjQ4QjA5MTFGNDk2MkQwMDhGODFBQyAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvbi5tbSAqLywKKwkJCQk1OUI0OEIwNzExRjQ5NjI2MDA4RjgxQUMgLyogV2Vi
RGV2aWNlT3JpZW50YXRpb24uaCAqLywKKwkJCQk1OUI0OEIwNTExRjQ5MjQzMDA4RjgxQUMgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRlcm5hbC5oICovLAorCQkJCTU5QjQ4QjAzMTFG
NDkyMzkwMDhGODFBQyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbSAqLywKKwkJCQk1
OUI0OEFGNzExRjQ5MjJGMDA4RjgxQUMgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCAq
LywKIAkJCQlGNTJDQTZCRDAyREY5RDBGMDE4NjM1Q0EgLyogSFRNTCAqLywKIAkJCQk1MUU5NEMw
NzA2QzAyQ0EzMDBBOUIwOUUgLyogUERGICovLAogCQkJCTgzNzM0MzVBMDYyNEVFMEQwMEYzQjI4
OSAvKiBXZWJBcmNoaXZlLmggKi8sCkBAIC0xNTU3LDYgKzE1ODEsMTEgQEAKIAkJCQk5Mzk4MTA3
MTA4MjRCRjAxMDA4REYwMzggLyogV2ViVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRDNCMEY4MTA3NkMzRjcwMDAzOUI5NiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxRjQ0ODRGMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTlCNDhBRjgxMUY0OTIyRjAwOEY4MUFDIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1OUI0OEIwNjExRjQ5
MjQzMDA4RjgxQUMgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTlCNDhCMDgxMUY0OTYyNjAwOEY4MUFDIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OUI0OEIwQzExRjQ5NjM3MDA4RjgxQUMgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTkzMDlB
MjUxMUY0QjY2OTAwMjUwNjAzIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0xOTE2LDYgKzE5NDUsOSBAQAogCQkJCTkzOTgxMEU4MDgyNEJGMDEw
MDhERjAzOCAvKiBXZWJWaWV3RmFjdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRDNCMEY5
MTA3NkMzRjcwMDAzOUI5NiAvKiBXZWJXaW5kb3dBbmltYXRpb24ubSBpbiBTb3VyY2VzICovLAog
CQkJCTQxRjQ0ODUwMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTU5QjQ4QjA0MTFGNDkyMzkwMDhGODFBQyAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTU5QjQ4QjBBMTFGNDk2MkQwMDhG
ODFBQyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTU5MzA5
QTIzMTFGNEI2NUYwMDI1MDYwMyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2subW0g
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZp
c2lvbiA2MzU0MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzIsNyArMjcyLDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdl
YlZpZXdDbGllbnQqIAogICAgIGlmIChkZXZUb29sc0NsaWVudCkKICAgICAgICAgbV9kZXZUb29s
c0FnZW50ID0gbmV3IFdlYkRldlRvb2xzQWdlbnRJbXBsKHRoaXMsIGRldlRvb2xzQ2xpZW50KTsK
IAotICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UoJm1fY2hyb21lQ2xpZW50SW1wbCwgJm1fY29udGV4
dE1lbnVDbGllbnRJbXBsLCAmbV9lZGl0b3JDbGllbnRJbXBsLCAmbV9kcmFnQ2xpZW50SW1wbCwg
Jm1faW5zcGVjdG9yQ2xpZW50SW1wbCwgMCwgMCwgMCwgMCkpOworICAgIG1fcGFnZS5zZXQobmV3
IFBhZ2UoJm1fY2hyb21lQ2xpZW50SW1wbCwgJm1fY29udGV4dE1lbnVDbGllbnRJbXBsLCAmbV9l
ZGl0b3JDbGllbnRJbXBsLCAmbV9kcmFnQ2xpZW50SW1wbCwgJm1faW5zcGVjdG9yQ2xpZW50SW1w
bCwgMCwgMCwgMCkpOwogCiAgICAgLy8gdGhlIHBhZ2Ugd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0
aGUgdmFyaW91cyBjbGllbnRzCiAKSW5kZXg6IFdlYktpdC9tYWMvV2ViS2l0LmV4cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYktpdC5leHAJKHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0
L21hYy9XZWJLaXQuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsOCBAQAogLm9iamNfY2xh
c3NfbmFtZV9XZWJEYXRhU291cmNlCiAub2JqY19jbGFzc19uYW1lX1dlYkRhdGFiYXNlTWFuYWdl
cgogLm9iamNfY2xhc3NfbmFtZV9XZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUKKy5vYmpjX2NsYXNz
X25hbWVfV2ViRGV2aWNlT3JpZW50YXRpb24KKy5vYmpjX2NsYXNzX25hbWVfV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrCiAub2JqY19jbGFzc19uYW1lX1dlYkRvd25sb2FkCiAub2JqY19j
bGFzc19uYW1lX1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldwogLm9iamNfY2xhc3NfbmFtZV9XZWJG
b3JtRGVsZWdhdGUKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlv
bi5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0
aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xhc3MgV2Vi
RGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbDsKKworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRh
dGlvbiA6IE5TT2JqZWN0IHsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsICptX2lu
dGVybmFsOworfQorCistIChpZClpbml0V2l0aENhblByb3ZpZGVBbHBoYTooYm9vbCljYW5Qcm92
aWRlQWxwaGEgYWxwaGE6KGRvdWJsZSlhbHBoYSBjYW5Qcm92aWRlQmV0YTooYm9vbCljYW5Qcm92
aWRlQmV0YSBiZXRhOihkb3VibGUpYmV0YSBjYW5Qcm92aWRlR2FtbWE6KGJvb2wpY2FuUHJvdmlk
ZUdhbW1hIGdhbW1hOihkb3VibGUpZ2FtbWE7CisKK0BlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorCisjaW1w
b3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvUmVmUHRy
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkRldmljZU9y
aWVudGF0aW9uSW50ZXJuYWwgOiBOU09iamVjdAoreworQHB1YmxpYworICAgIFJlZlB0cjxEZXZp
Y2VPcmllbnRhdGlvbj4gbV9vcmllbnRhdGlvbjsKK30KKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2
aWNlT3JpZW50YXRpb246KFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+KWNvcmVEZXZpY2VP
cmllbnRhdGlvbjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkRldmljZU9yaWVudGF0aW9u
SW50ZXJuYWwKKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246KFBhc3NSZWZQ
dHI8RGV2aWNlT3JpZW50YXRpb24+KWNvcmVEZXZpY2VPcmllbnRhdGlvbgoreworICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IG1fb3JpZW50YXRpb24gPSBjb3JlRGV2aWNlT3JpZW50YXRpb247CisgICAgcmV0dXJuIHNlbGY7
Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJEZXZpY2VPcmllbnRhdGlvbgorCitQYXNz
UmVmUHRyPERldmljZU9yaWVudGF0aW9uPiBjb3JlKFdlYkRldmljZU9yaWVudGF0aW9uICpvcmll
bnRhdGlvbikKK3sKKyAgICByZXR1cm4gb3JpZW50YXRpb24gPyBvcmllbnRhdGlvbi0+bV9pbnRl
cm5hbC0+bV9vcmllbnRhdGlvbi5yZWxlYXNlKCkgOiAwOworfQorCistIChpZClpbml0V2l0aENh
blByb3ZpZGVBbHBoYTooYm9vbCljYW5Qcm92aWRlQWxwaGEgYWxwaGE6KGRvdWJsZSlhbHBoYSBj
YW5Qcm92aWRlQmV0YTooYm9vbCljYW5Qcm92aWRlQmV0YSBiZXRhOihkb3VibGUpYmV0YSBjYW5Q
cm92aWRlR2FtbWE6KGJvb2wpY2FuUHJvdmlkZUdhbW1hIGdhbW1hOihkb3VibGUpZ2FtbWEKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICBtX2ludGVybmFsID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsIGFs
bG9jXSBpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbjpEZXZpY2VPcmllbnRhdGlvbjo6Y3Jl
YXRlKGNhblByb3ZpZGVBbHBoYSwgYWxwaGEsIGNhblByb3ZpZGVCZXRhLCBiZXRhLCBjYW5Qcm92
aWRlR2FtbWEsIGdhbW1hKV07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxv
YworeworICAgIFttX2ludGVybmFsIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBP
V05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK0BjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEludGVybmFsOworCitAaW50ZXJm
YWNlIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IDogTlNPYmplY3QgeworICAgIFdlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50SW50ZXJuYWwgKm1faW50ZXJuYWw7Cit9CisKK0BlbmQKSW5kZXg6
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW0J
KHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorCisjaW1wb3J0ICJXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEludGVybmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitA
aW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRlcm5hbAorCistIChp
ZClpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbkNsaWVudDooRGV2aWNlT3JpZW50YXRpb25D
bGllbnQqKWNvcmVDbGllbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICgh
c2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBtX2NsaWVudC5zZXQoY29yZUNsaWVudCk7
CisgICAgcmV0dXJuIHNlbGY7Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudAorCitEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogY29yZShXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCAqY2xpZW50KQoreworICAgIHJldHVybiBjbGllbnQgPyBjbGll
bnQtPm1faW50ZXJuYWwtPm1fY2xpZW50LmdldCgpIDogMDsKK30KKworLSAodm9pZClkZWFsbG9j
Cit7CisgICAgW21faW50ZXJuYWwgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQor
CitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudEludGVybmFsLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRlcm5hbC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oPgor
I2ltcG9ydCA8d3RmL093blB0ci5oPgorCitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50SW50ZXJuYWwgOiBOU09iamVjdCB7CitAcHVibGljCisgICAgT3duUHRyPFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50PiBtX2NsaWVudDsKK30KKworLSAoaWQpaW5pdFdpdGhD
b3JlRGV2aWNlT3JpZW50YXRpb25DbGllbnQ6KFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50Kiljb3JlQ2xpZW50OworQGVuZAorCitXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCogY29yZShXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCAqKTsKSW5kZXg6IFdlYktpdC9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJX
ZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQuaCIKKworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sgOiBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7Cit9CisKKy0gKGlkKWluaXQ7CistICh2b2lkKXNldE9y
aWVudGF0aW9uOihXZWJEZXZpY2VPcmllbnRhdGlvbiopb3JpZW50YXRpb247CisKK0BlbmQKSW5k
ZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2subW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2subW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKworI2lt
cG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2Vi
RGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9EZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suaD4KKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2sKKworLSAoaWQpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAg
aWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jayogbW9ja0NsaWVudCA9IG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsK
KyAgICBfaW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW50ZXJuYWwgYWxs
b2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uQ2xpZW50Om1vY2tDbGllbnRdOworICAg
IHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldE9yaWVudGF0aW9uOihXZWJEZXZpY2VPcmll
bnRhdGlvbiopb3JpZW50YXRpb24KK3sKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sq
IG1vY2tDbGllbnQgPSBzdGF0aWNfY2FzdDxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqPihj
b3JlKHNlbGYpKTsKKyAgICBtb2NrQ2xpZW50LT5zZXRPcmllbnRhdGlvbihjb3JlKG9yaWVudGF0
aW9uKSk7Cit9CisKK0BlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmll
bnRhdGlvbkludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRl
dmljZU9yaWVudGF0aW9uSW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbi5oIgorCisj
aW1wb3J0IDxXZWJDb3JlL0RldmljZU9yaWVudGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCitQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uPiBjb3JlKFdl
YkRldmljZU9yaWVudGF0aW9uICopOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDYzNTQwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgIldlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkRlbGVnYXRlSW1w
bGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEb2N1bWVudC5oIgogI2ltcG9ydCAiV2ViRG9jdW1l
bnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRG93bmxvYWQuaCIKQEAgLTExMiw2ICsxMTMsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgpAQCAtNjc2LDcgKzY3OCw3IEBAIC0gKHZv
aWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICNlbHNlCiAgICAgV2ViR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50KiBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQgPSAwOwog
I2VuZGlmCi0gICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViQ2hyb21lQ2xpZW50
KHNlbGYpLCBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQoc2VsZiksIG5ldyBXZWJFZGl0b3JDbGll
bnQoc2VsZiksIG5ldyBXZWJEcmFnQ2xpZW50KHNlbGYpLCBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50
KHNlbGYpLCBuZXcgV2ViUGx1Z2luSGFsdGVyQ2xpZW50KHNlbGYpLCBnZW9sb2NhdGlvbkNvbnRy
b2xsZXJDbGllbnQsIDAsIDApOworICAgIF9wcml2YXRlLT5wYWdlID0gbmV3IFBhZ2UobmV3IFdl
YkNocm9tZUNsaWVudChzZWxmKSwgbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHNlbGYpLCBuZXcg
V2ViRWRpdG9yQ2xpZW50KHNlbGYpLCBuZXcgV2ViRHJhZ0NsaWVudChzZWxmKSwgbmV3IFdlYklu
c3BlY3RvckNsaWVudChzZWxmKSwgbmV3IFdlYlBsdWdpbkhhbHRlckNsaWVudChzZWxmKSwgZ2Vv
bG9jYXRpb25Db250cm9sbGVyQ2xpZW50LCAwKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRD
YW5TdGFydE1lZGlhKFtzZWxmIHdpbmRvd10pOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5n
cygpLT5zZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgoW1tzZWxmIHByZWZlcmVuY2VzXSBfbG9j
YWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7CkBAIC01ODc1LDYgKzU4NzcsMjUgQEAgLSAodm9pZClf
Z2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOihOUwogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlv
biBXZWJWaWV3IChXZWJEZXZpY2VPcmllbnRhdGlvbikKKworLSAodm9pZClfc2V0RGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQ6KFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiljbGllbnQKK3sKKyAg
ICBpZiAoX3ByaXZhdGUpIHsKKyAgICAgICAgX3ByaXZhdGUtPl9kZXZpY2VPcmllbnRhdGlvbkNs
aWVudCA9IGNsaWVudDsKKyAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPmRldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcigpLT5zZXRDbGllbnQoY29yZShjbGllbnQpKTsKKyAgICB9Cit9CisKKy0gKFdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50KilfZGV2aWNlT3JpZW50YXRpb25DbGllbnQKK3sKKyAg
ICBpZiAoX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBfcHJpdmF0ZS0+X2RldmljZU9yaWVudGF0
aW9uQ2xpZW50OworICAgIHJldHVybiBuaWw7Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0aW9u
IFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQogCiAtIChKU1ZhbHVlUmVmKV9jb21w
dXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZiljb250ZXh0IGZvckVs
ZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShy
ZXZpc2lvbiA2MzU0MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBQYWdlOwogfQogCitAY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBAY2xhc3Mg
V2ViSW5zcGVjdG9yOwogQGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBAY2xhc3MgV2ViUGx1Z2lu
RGF0YWJhc2U7CkBAIC0xNzQsNSArMTc1LDYgQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0ZSA6
IE5TT2JqZWN0IHsKICAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBnbGliUnVuTG9vcE9ic2VydmVy
OwogI2VuZGlmCiAgICAgaWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gX2dlb2xvY2F0aW9uUHJv
dmlkZXI7CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQgKl9kZXZpY2VPcmllbnRhdGlv
bkNsaWVudDsKIH0KIEBlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShy
ZXZpc2lvbiA2MzU0MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAKIEBjbGFzcyBOU0Vycm9yOwogQGNsYXNz
IFdlYkZyYW1lOworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OwogQGNsYXNzIFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb247CiBAY2xhc3MgV2ViSW5zcGVjdG9yOwogQGNsYXNzIFdlYlBy
ZWZlcmVuY2VzOwpAQCAtNjE4LDYgKzYxOSwxMSBAQCBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZp
ZXdHZW9sb2NhdGlvbikKIC0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJvcjooTlNF
cnJvciAqKWVycm9yOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYkRldmljZU9yaWVu
dGF0aW9uKQorLSAodm9pZClfc2V0RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6KFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50KiljbGllbnQ7CistIChXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCop
X2RldmljZU9yaWVudGF0aW9uQ2xpZW50OworQGVuZAorCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdl
YlZpZXdQcml2YXRlU3R5bGVJbmZvKQogLSAoSlNWYWx1ZVJlZilfY29tcHV0ZWRTdHlsZUluY2x1
ZGluZ1Zpc2l0ZWRJbmZvOihKU0NvbnRleHRSZWYpY29udGV4dCBmb3JFbGVtZW50OihKU1ZhbHVl
UmVmKXZhbHVlOwogQGVuZApJbmRleDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDYzNTQwKQorKysg
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw3ICsyNzIs
NyBAQCBRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZShRV2ViUGFnCiAgICAgY29udGV4
dE1lbnVDbGllbnQgPSBuZXcgQ29udGV4dE1lbnVDbGllbnRRdCgpOwogICAgIGVkaXRvckNsaWVu
dCA9IG5ldyBFZGl0b3JDbGllbnRRdChxKTsKICAgICBwYWdlID0gbmV3IFBhZ2UoY2hyb21lQ2xp
ZW50LCBjb250ZXh0TWVudUNsaWVudCwgZWRpdG9yQ2xpZW50LAotICAgICAgICAgICAgICAgICAg
ICBuZXcgRHJhZ0NsaWVudFF0KHEpLCBuZXcgSW5zcGVjdG9yQ2xpZW50UXQocSksIDAsIDAsIDAs
IDApOworICAgICAgICAgICAgICAgICAgICBuZXcgRHJhZ0NsaWVudFF0KHEpLCBuZXcgSW5zcGVj
dG9yQ2xpZW50UXQocSksIDAsIDAsIDApOwogCiAgICAgc2V0dGluZ3MgPSBuZXcgUVdlYlNldHRp
bmdzKHBhZ2UtPnNldHRpbmdzKCkpOwogCkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDYzNTQwKQorKysg
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3MCw3ICsyNTcwLDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojppbml0VwogICAgIGlmIChTVUND
RUVERUQobV9wcmVmZXJlbmNlcy0+c2hvdWxkVXNlSGlnaFJlc29sdXRpb25UaW1lcnMoJnVzZUhp
Z2hSZXNvbHV0aW9uVGltZXIpKSkKICAgICAgICAgU2V0dGluZ3M6OnNldFNob3VsZFVzZUhpZ2hS
ZXNvbHV0aW9uVGltZXJzKHVzZUhpZ2hSZXNvbHV0aW9uVGltZXIpOwogCi0gICAgbV9wYWdlID0g
bmV3IFBhZ2UobmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKSwgbmV3IFdlYkNvbnRleHRNZW51Q2xp
ZW50KHRoaXMpLCBuZXcgV2ViRWRpdG9yQ2xpZW50KHRoaXMpLCBuZXcgV2ViRHJhZ0NsaWVudCh0
aGlzKSwgbmV3IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKSwgbmV3IFdlYlBsdWdpbkhhbHRlckNs
aWVudCh0aGlzKSwgZ2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50LCAwLCAwKTsKKyAgICBtX3Bh
Z2UgPSBuZXcgUGFnZShuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpLCBuZXcgV2ViQ29udGV4dE1l
bnVDbGllbnQodGhpcyksIG5ldyBXZWJFZGl0b3JDbGllbnQodGhpcyksIG5ldyBXZWJEcmFnQ2xp
ZW50KHRoaXMpLCBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpLCBuZXcgV2ViUGx1Z2luSGFs
dGVyQ2xpZW50KHRoaXMpLCBnZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQsIDApOwogCiAgICAg
QlNUUiBsb2NhbFN0b3JhZ2VQYXRoOwogICAgIGlmIChTVUNDRUVERUQobV9wcmVmZXJlbmNlcy0+
bG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKCZsb2NhbFN0b3JhZ2VQYXRoKSkpIHsKSW5kZXg6IFdl
YktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDctMTYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NTg5CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjayk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOgorCiAyMDEwLTA3LTE2ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERpcmsgU2NodWx6ZS4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05NzAsNiArOTcwLDI3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldERvbWFpblJlbGF4YXRp
b25Gb3IKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0
YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDYpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGJvb2wgY2Fu
UHJvdmlkZUFscGhhID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pOwor
ICAgIGRvdWJsZSBhbHBoYSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0s
IGV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAgICBib29sIGNhblByb3Zp
ZGVCZXRhID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMl0pOworICAgIGRv
dWJsZSBiZXRhID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1szXSwgZXhjZXB0
aW9uKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1h
ID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbNF0pOworICAgIGRvdWJsZSBn
YW1tYSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbNV0sIGV4Y2VwdGlvbik7
CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBj
b250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja0Rldmlj
ZU9yaWVudGF0aW9uKGNhblByb3ZpZGVBbHBoYSwgYWxwaGEsIGNhblByb3ZpZGVCZXRhLCBiZXRh
LCBjYW5Qcm92aWRlR2FtbWEsIGdhbW1hKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYg
KGFyZ3VtZW50Q291bnQgPCAzKQpAQCAtMTgyNCw2ICsxODQ1LDcgQEAgSlNTdGF0aWNGdW5jdGlv
biogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJzZXRJY29uRGF0YWJhc2VFbmFi
bGVkIiwgc2V0SWNvbkRhdGFiYXNlRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkIiwgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0Vu
YWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNYWluRnJhbWVJc0ZpcnN0UmVz
cG9uZGVyIiwgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgICAgIHsgInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRh
dGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9y
Iiwgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExp
c3QiLCBzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIHByb2ZpbGlu
Z0VuYWJsZWQpOwogICAgIHZvaWQgc2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChib29s
IGZsYWcpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGZsYWcp
OworICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhh
LCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNh
blByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlv
bkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91
YmxlIGFjY3VyYWN5KTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lv
biA2MzU0MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsMTIgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlzYWJsZUltYWdlTAogICAgIC8vIEFsc28gbmVlZCB0byBt
YWtlIHN1cmUgaW1hZ2UgbG9hZGluZyBpcyByZS1lbmFibGVkIGZvciBlYWNoIG5ldyB0ZXN0Lgog
fQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24o
Ym9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwg
ZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgor
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUu
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0JKHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAjaW1w
b3J0IDxXZWJLaXQvV2ViQ29yZVN0YXRpc3RpY3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXRh
U291cmNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFiYXNlTWFuYWdlclByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJFZGl0aW5nRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVZpZXcuaD4KQEAg
LTI5NCw2ICsyOTUsNyBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93
CiAgICAgW3dlYlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdEZWxlZ2F0ZV07CiAgICAg
W3dlYlZpZXcgc2V0UmVzb3VyY2VMb2FkRGVsZWdhdGU6cmVzb3VyY2VMb2FkRGVsZWdhdGVdOwog
ICAgIFt3ZWJWaWV3IF9zZXRHZW9sb2NhdGlvblByb3ZpZGVyOltNb2NrR2VvbG9jYXRpb25Qcm92
aWRlciBzaGFyZWRdXTsKKyAgICBbd2ViVmlldyBfc2V0RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6
W1tXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sgYWxsb2NdIGluaXRdXTsKIAogICAgIC8v
IFJlZ2lzdGVyIHRoZSBzYW1lIHNjaGVtZXMgdGhhdCBTYWZhcmkgZG9lcwogICAgIFtXZWJWaWV3
IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWQiXTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0JKHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCwxMSBA
QAogI2ltcG9ydCA8V2ViS2l0L1dlYkFwcGxpY2F0aW9uQ2FjaGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJCYWNrRm9yd2FyZExpc3QuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJDb3JlU3RhdGlzdGlj
cy5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViRGF0YVNvdXJjZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFiYXNlTWFu
YWdlclByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uLmg+CisjaW1wb3J0IDxXZWJL
aXQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
RnJhbWUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVZpZXdQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oPgpAQCAtMzIwLDYgKzMyMiwxNiBAQCB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREb21haW5SZWxhCiAgICAgW1dlYlZpZXcgX3Nl
dERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW46Zm9yYmlkZGVuIGZvclVSTFNjaGVtZTooTlNTdHJp
bmcgKilzY2hlbWVDRlN0cmluZy5nZXQoKV07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91Ymxl
IGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRl
R2FtbWEsIGRvdWJsZSBnYW1tYSkKK3sKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbiogb3JpZW50
YXRpb24gPSBbW1dlYkRldmljZU9yaWVudGF0aW9uIGFsbG9jXSBpbml0V2l0aENhblByb3ZpZGVB
bHBoYTpjYW5Qcm92aWRlQWxwaGEgYWxwaGE6YWxwaGEgY2FuUHJvdmlkZUJldGE6Y2FuUHJvdmlk
ZUJldGEgYmV0YTpiZXRhIGNhblByb3ZpZGVHYW1tYTpjYW5Qcm92aWRlR2FtbWEgZ2FtbWE6Z2Ft
bWFdOworICAgIC8vIER1bXBSZW5kZXJUcmVlIGNvbmZpZ3VyZWQgdGhlIFdlYlZpZXcgdG8gdXNl
IE1vY2tEZXZpY2VPcmllbnRhdGlvbkNsaWVudC4KKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudCogY2xpZW50ID0gW1ttYWluRnJhbWUgd2ViVmlld10gX2RldmljZU9yaWVudGF0aW9uQ2xp
ZW50XTsKKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQgPSBz
dGF0aWNfY2FzdDxXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqPihjbGllbnQpOworICAg
IFttb2NrQ2xpZW50IHNldE9yaWVudGF0aW9uOm9yaWVudGF0aW9uXTsKKyAgICBbb3JpZW50YXRp
b24gcmVsZWFzZV07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91Ymxl
IGFjY3VyYWN5KQogewogICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uID0gW1tX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aFRpbWVzdGFtcDowIGxhdGl0dWRl
OmxhdGl0dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJhY3k6YWNjdXJhY3ldOwpJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3
Nyw2ICs2NzcsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RWRpdGluZ0JlaAog
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRFZGl0aW5nQmVoYXZpb3IobV9kcnQtPndl
YlBhZ2UoKSwgZWRpdGluZ0JlaGF2aW9yKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUg
YWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVH
YW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIERldmlj
ZU9yaWVudGF0aW9uIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM1LgorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKIHsKICAgICAgbV9pc0dl
b2xvY2F0aW9uUGVybWlzc2lvblNldCA9IHRydWU7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJ
KHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDYgKzM1NCwxMiBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDdXN0b21Qb2xpCiAgICAgICAgIHdlYlZp
ZXctPnNldFBvbGljeURlbGVnYXRlKDApOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBh
bHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdh
bW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNl
T3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxv
bmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9y
IEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZpc2lv
biA2MzU0MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNiArMjcxLDEyIEBAIGJvb2wgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29s
IGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3Vi
bGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMuCisgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDMzNS4KK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
ZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCiB7CiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgpJbmRl
eDogV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0VG9v
bHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAg
bXkgKCRsaW5rUHJlZmV0Y2hTdXBwb3J0LCAkdGhyZWVEQ2FudmFzUwogICAgICRzdmdTdXBwb3J0
LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0Jp
bmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKICAgICAkc3ZnRm9yZWlnbk9iamVjdFN1
cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd2ViU29ja2V0c1N1cHBvcnQs
ICR3ZWJUaW1pbmdTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdjc3NTdXBwb3J0LCAkeGh0bWxtcFN1
cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBhdGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQs
ICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25zU3VwcG9ydCwgJGJsb2JTbGljZVN1cHBv
cnQsICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCi0gICAgJGZpbGVSZWFkZXJTdXBwb3J0LCAk
ZmlsZVdyaXRlclN1cHBvcnQsICRkaXJlY3RvcnlVcGxvYWRTdXBwb3J0KTsKKyAgICAkZmlsZVJl
YWRlclN1cHBvcnQsICRmaWxlV3JpdGVyU3VwcG9ydCwgJGRpcmVjdG9yeVVwbG9hZFN1cHBvcnQs
ICRkZXZpY2VPcmllbnRhdGlvblN1cHBvcnQpOwogCiBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBv
cHRpb24gPT4gImxpbmstcHJlZmV0Y2giLCBkZXNjID0+ICJUb2dnbGUgcHJlIGZldGNoaW5nIHN1
cHBvcnQiLApAQCAtMjAxLDYgKzIwMSw5IEBAIG15IEBmZWF0dXJlcyA9ICgKIAogICAgIHsgb3B0
aW9uID0+ICJmaWxlLXdyaXRlciIsIGRlc2MgPT4gIlRvZ2dsZSBGaWxlV3JpdGVyIHN1cHBvcnQi
LAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRklMRV9XUklURVIiLCBkZWZhdWx0ID0+IDAsIHZh
bHVlID0+IFwkZmlsZVdyaXRlclN1cHBvcnQgfSwKKworICAgIHsgb3B0aW9uID0+ICJkZXZpY2Ut
b3JpZW50YXRpb24iLCBkZXNjID0+ICJUb2dnbGUgRGV2aWNlT3JpZW50YXRpb24gc3VwcG9ydCIs
CisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04iLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0IH0sCiApOwogCiAjIFVwZGF0
ZSBkZWZhdWx0cyBmcm9tIFF0J3MgcHJvamVjdCBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MzU0
MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDEwLTA3LTE2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgTGF5b3V0
VGVzdENvbnRyb2xsZXIgbWV0aG9kcyB0byB0ZXN0IERldmljZU9yaWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTU4OQorCisgICAgICAg
ICogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogZmFzdC9kb20v
RGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0
cy9iYXNpYy1vcGVyYXRpb24uanM6IEFkZGVkLgorCiAyMDEwLTA3LTE2ICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5
IERpcmsgU2NodWx6ZS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0
aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9u
L2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIg
QEAKK1Rlc3RzIHRoZSBiYXNpYyBvcGVyYXRpb24gb2YgRGV2aWNlT3JpZW50YXRpb24gdXNpbmcg
dGhlIG1vY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRldmljZU9y
aWVudGF0aW9uRXZlbnQuYWxwaGEgaXMgbW9ja0FscGhhCitQQVNTIGRldmljZU9yaWVudGF0aW9u
RXZlbnQuYmV0YSBpcyBtb2NrQmV0YQorUEFTUyBkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmdhbW1h
IGlzIG1vY2tHYW1tYQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jh
c2ljLW9wZXJhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0Rl
dmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9u
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9iYXNpYy1vcGVyYXRpb24uanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2Ny
aXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9iYXNpYy1vcGVyYXRpb24u
anMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGUg
YmFzaWMgb3BlcmF0aW9uIG9mIERldmljZU9yaWVudGF0aW9uIHVzaW5nIHRoZSBtb2NrLiIpOwor
Cit2YXIgbW9ja0FscGhhID0gMS4xOwordmFyIG1vY2tCZXRhID0gMi4yOwordmFyIG1vY2tHYW1t
YSA9IDMuMzsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNb2NrRGV2aWNlT3JpZW50YXRpb24odHJ1ZSwgbW9ja0FscGhhLCB0
cnVlLCBtb2NrQmV0YSwgdHJ1ZSwgbW9ja0dhbW1hKTsKK2Vsc2UKKyAgICBkZWJ1ZygnVGhpcyB0
ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9sbGVyJyk7CisK
K3ZhciBkZXZpY2VPcmllbnRhdGlvbkV2ZW50Oword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImRl
dmljZW9yaWVudGF0aW9uIiwgZnVuY3Rpb24oZSkgeworICAgIGRldmljZU9yaWVudGF0aW9uRXZl
bnQgPSBlOworICAgIHNob3VsZEJlKCdkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmFscGhhJywgJ21v
Y2tBbHBoYScpOworICAgIHNob3VsZEJlKCdkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmJldGEnLCAn
bW9ja0JldGEnKTsKKyAgICBzaG91bGRCZSgnZGV2aWNlT3JpZW50YXRpb25FdmVudC5nYW1tYScs
ICdtb2NrR2FtbWEnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA2MzU0MCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA5LDYgKzExMDksNyBA
QCBmYXN0L2RvbS9jbGllbnQtd2lkdGgtaGVpZ2h0LXF1aXJrcy5odG1sCiBmYXN0L2RvbS9jbGll
bnQtd2lkdGgtaGVpZ2h0Lmh0bWwKIGZhc3QvZG9tL2Nzc1RhcmdldC1jcmFzaC5odG1sCiBmYXN0
L2RvbS9mcmFtZS1sb2FkaW5nLXZpYS1kb2N1bWVudC13cml0ZS5odG1sCitmYXN0L2RvbS9EZXZp
Y2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbAogZmFzdC9kb20vRGV2aWNlT3JpZW50
YXRpb24vY3JlYXRlLWV2ZW50Lmh0bWwKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL29wdGlv
bmFsLWV2ZW50LXByb3BlcnRpZXMuaHRtbAogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vd2lu
ZG93LXByb3BlcnR5Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62442</attachid>
            <date>2010-07-23 10:19:36 -0700</date>
            <delta_ts>2010-07-28 09:35:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100723181933.patch</filename>
            <type>text/plain</type>
            <size>69080</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMTYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0
aW9uLmh0bWwKKworICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6On5EZXZpY2VPcmllbnRhdGlv
bkNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6dGltZXJG
aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s6Omxhc3RPcmllbnRhdGlvbik6CisKIDIwMTAtMDctMTYgIE1pa2hhaWwgTmFnYW5vdiAgPG1u
YWdhbm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUuZXhwLmluCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTM5Myw2ICszOTMsNyBAQCBfX1pON1dlYkNvcmUxNmlzRW5kT2ZQ
YXJhZ3JhcGhFUktOU18xNVZpCiBfX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlND
OUV4ZWNTdGF0ZUVSTlMwXzlXZWFrR0NNYXBJUE5TXzEwU3RyaW5nSW1wbEVQTlMwXzhKU1N0cmlu
Z0VFRVM1XwogX19aTjdXZWJDb3JlMTdDcmVkZW50aWFsU3RvcmFnZTNnZXRFUktOU18xNVByb3Rl
Y3Rpb25TcGFjZUUKIF9fWk43V2ViQ29yZTE3RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVU
eXBlRVJLTlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTE3RGV2aWNlT3JpZW50YXRpb242Y3JlYXRl
RWJkYmRiZAogX19aTjdXZWJDb3JlMTdHbHlwaFBhZ2VUcmVlTm9kZTE4dHJlZUdseXBoUGFnZUNv
dW50RXYKIF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxMWdldE5QT2JqZWN0RXYKIF9f
Wk43V2ViQ29yZTE3SGlzdG9yeUNvbnRyb2xsZXIyNnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRl
RXYKQEAgLTQ2OCw2ICs0NjksOCBAQCBfX1pON1dlYkNvcmUyNkNTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uCiBfX1pON1dlYkNvcmUyNk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyNmNyZWF0ZUVQ
TlNfNUZyYW1lRVBOU18zMk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50RQogX19aTjdX
ZWJDb3JlMjZ1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvckV2CiBfX1pON1dlYkNvcmUyN0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYlJL
TlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrMTRz
ZXRPcmllbnRhdGlvbkVOM1dURjEwUGFzc1JlZlB0cklOU18xN0RldmljZU9yaWVudGF0aW9uRUVF
CitfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja0MxRXYKIF9fWk43V2Vi
Q29yZTI3YXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFsbGVyRXYKIF9fWk43V2ViQ29yZTI5aXNDaGFy
YWN0ZXJTbWFydFJlcGxhY2VFeGVtcHRFaWIKIF9fWk43V2ViQ29yZTI5c2V0VXNlc1Rlc3RNb2Rl
Rm9jdXNSaW5nQ29sb3JFYgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDYzNTQwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExODIsMTAgKzExODIsMTIgQEAKIAkJ
NTRDNTBGN0IwRTgwMURGMzAwOTgzMkEwIC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NEM1MEY3QTBF
ODAxREYzMDA5ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLzsgfTsKIAkJ
NTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1
M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUz
RDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1OTBFMUI0
OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAv
KiBEZXZpY2VPcmllbnRhdGlvbi5oICovOyB9OworCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQg
LyogRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU5
MEUxQjRCMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFC
NEExMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAg
Ki87IH07CiAJCTU5MTM5NTNCMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MTM5NTNBMTEwNzU4NDUw
MDgzRUM1NSAvKiBKTklCcmlkZ2UuaCAqLzsgfTsKIAkJNTkxMzk1M0QxMTA3NTg0RTAwODNFQzU1
IC8qIEpOSUJyaWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OTEzOTUzQzExMDc1ODRFMDA4M0VDNTUgLyogSk5JQnJpZGdlLmNwcCAqLzsgfTsK
KwkJNTkzMDlBMTExMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTMw
OUExMDExRjRBRTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAq
LzsgfTsKKwkJNTkzMDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU5NjIy
OTc4MTEzM0VGRDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk2MjI5NzcxMTMzRUZE
NzAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi87IH07CiAJCTU5NjIy
OTdBMTEzM0VGRTIwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5NjIyOTc5MTEzM0VGRTIw
MERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OTlFNzU5MDExMDU1QTFGMDBEOTA0RkEg
LyogQnJpZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OTlFNzU4RjExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExOTQsOCArMTE5Niw4IEBACiAJCTU5
QTg2MDA2MTE5REFGN0YwMERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBODYwMDUxMTlE
QUY3RjAwREVGMUVGIC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAgKi87IH07CiAJCTU5
QTg2MDA4MTE5REFGQTEwMERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTg2MDA3MTE5REFG
QTEwMERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCAqLzsgfTsKIAkJNTlBOEYx
RDQxMUE2OTUwODAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFEMzExQTY5
NTA4MDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcCAqLzsgfTsKLQkJ
NTlBOEYxRDYxMUE2OTUxMzAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBOEYxRDUx
MUE2OTUxMzAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oICovOyB9Owot
CQk1OUE4RjFEODExQTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QThGMUQ3MTFB
Njk1MjAwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oICovOyB9OworCQk1OUE4
RjFENjExQTY5NTEzMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFENTExQTY5
NTEzMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTlBOEYxRDgxMUE2OTUyMDAw
MUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMzNEEgLyogRGV2
aWNlT3JpZW50YXRpb25DbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1OUE5RTdCMDExMDQ3NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNl
SlNDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
QTlFN0FGMTEwNDc1ODgwMERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwICovOyB9OwogCQk1
OUE5RTdCMjExMDQ3NTk0MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE5RTdCMTExMDQ3NTk0MDBERkI0
QzEgLyogSmF2YUluc3RhbmNlSlNDLmggKi87IH07CiAJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlF
OCAvKiBCcmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTlCNTk3NzIxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgKi87IH07
CkBAIC02OTM2LDYgKzY5MzgsOCBAQAogCQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MTM5NTNBMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlk
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSk5JQnJpZGdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MTM5NTNDMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklC
cmlkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSk5JQnJpZGdl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTAxMUY0QUU1ODAwMjUw
NjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBwYXRo
ID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5oOyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5NzcxMTMzRUZENzAw
REM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9j
YXRpb25Qb3NpdGlvbkNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdl
b2xvY2F0aW9uUG9zaXRpb25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
OTlFNzU4RjExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEJyaWRnZS5oOyBwYXRoID0gYnJpZGdlL0JyaWRnZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTIwMTMsNiArMTIwMTcsOCBAQAogCQk1OUM3N0YxMDEwNTQ1
OTFDMDA1MDYxMDQgLyogbW9jayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jay5oICovLAorCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBtb2NrOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5ODExLDYgKzE5ODE3LDcgQEAKIAkJCQlFMUJF
NTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1OTMwOUExMzExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyMjAxLDYgKzIyMjA4LDcgQEAKIAkJCQk5
M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNT
QXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1OTMwOUExMTExRjRBRTU4MDAyNTA2MDMg
LyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
V2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCShyZXZpc2lvbiA2MzU0MCkKKysrIFdl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDE1ICsyOSwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZXZpY2VPcmllbnRh
dGlvbjsKK2NsYXNzIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKIAogY2xhc3MgRGV2aWNl
T3JpZW50YXRpb25DbGllbnQgewogcHVibGljOgorICAgIHZpcnR1YWwgfkRldmljZU9yaWVudGF0
aW9uQ2xpZW50KCkge30KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGlu
ZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1
YWwgRGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKLQotcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgfkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkge30KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyLmNwcAkocmV2aXNpb24gNjM1NDApCisrKyBXZWJDb3JlL2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4
IEBAIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6RGV2aWNlT3JpZW4KICAgICA6IG1fcGFn
ZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogeworICAgIEFTU0VSVChtX2NsaWVudCk7
CisgICAgbV9jbGllbnQtPnNldENvbnRyb2xsZXIodGhpcyk7CiB9CiAKIHZvaWQgRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyOjphZGRMaXN0ZW5lcihET01XaW5kb3cqIHdpbmRvdykKSW5kZXg6
IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEzLDcgKzE0MTMsNyBAQCBib29sIERPTVdpbmRvdzo6
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBCiAgICAgICAgIGFkZEJlZm9yZVVubG9hZEV2ZW50TGlz
dGVuZXIodGhpcyk7CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICBlbHNlIGlm
IChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9uRXZlbnQgJiYgZnJh
bWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkpCi0gICAgICAgIGZyYW1lKCktPnBhZ2UoKS0+ZGV2aWNl
T3JpZW50YXRpb24oKS0+YWRkTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGZyYW1lKCktPnBhZ2Uo
KS0+ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKCktPmFkZExpc3RlbmVyKHRoaXMpOwogI2Vu
ZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0MzAsNyArMTQzMCw3IEBAIGJvb2wgRE9NV2lu
ZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnMKICAgICAgICAgcmVtb3ZlQmVmb3JlVW5sb2Fk
RXZlbnRMaXN0ZW5lcih0aGlzKTsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAg
IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVu
dCAmJiBmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKSkKLSAgICAgICAgZnJhbWUoKS0+cGFnZSgp
LT5kZXZpY2VPcmllbnRhdGlvbigpLT5yZW1vdmVMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgZnJh
bWUoKS0+cGFnZSgpLT5kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKS0+cmVtb3ZlTGlzdGVu
ZXIodGhpcyk7CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTUwOCw3ICsxNTA4LDcg
QEAgdm9pZCBET01XaW5kb3c6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKAogCiAjaWYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikKICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkp
Ci0gICAgICAgIGZyYW1lKCktPnBhZ2UoKS0+ZGV2aWNlT3JpZW50YXRpb24oKS0+cmVtb3ZlQWxs
TGlzdGVuZXJzKHRoaXMpOworICAgICAgICBmcmFtZSgpLT5wYWdlKCktPmRldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcigpLT5yZW1vdmVBbGxMaXN0ZW5lcnModGhpcyk7CiAjZW5kaWYKIAogICAg
IHJlbW92ZUFsbFVubG9hZEV2ZW50TGlzdGVuZXJzKHRoaXMpOwpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIK
KworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6RGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrKCkKKyAgICA6IG1fY29udHJvbGxlcigwKQorICAgICwgbV90aW1lcih0aGlz
LCAmRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKQorICAgICwgbV9pc1Vw
ZGF0aW5nKGZhbHNlKQoreworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6
c2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7
CisgICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKK30KKwordm9pZCBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIG1faXNVcGRhdGluZyA9IHRy
dWU7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmco
KQoreworICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOworICAgIG1fdGltZXIuc3RvcCgpOworfQor
Cit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24oUGFzc1Jl
ZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4gb3JpZW50YXRpb24pCit7CisgICAgbV9vcmllbnRhdGlv
biA9IG9yaWVudGF0aW9uOworICAgIGlmIChtX2lzVXBkYXRpbmcgJiYgIW1fdGltZXIuaXNBY3Rp
dmUoKSkKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jaz4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09
ICZtX3RpbWVyKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX2NvbnRyb2xsZXItPmRpZENo
YW5nZURldmljZU9yaWVudGF0aW9uKG1fb3JpZW50YXRpb24uZ2V0KCkpOworfQorCit9CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9X
TkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorI2RlZmluZSBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIK
KyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIlRpbWVyLmgi
CisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI7CisKKy8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCB1c2VkIHRvIHRlc3QgdGhlIGZlYXR1cmUgaW4KKy8vIER1bXBSZW5kZXJUcmVlLiBFbWJlZGRl
cnMgc2hvdWxkIHNob3VsZCBjb25maWd1cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0aGlzCisv
LyBjbGllbnQgd2hlbiBydW5uaW5nIER1bXBSZW5kZXJUcmVlLgorY2xhc3MgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrIDogcHVibGljIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKKworICAgIC8vIERldmljZU9y
aWVudGF0aW9uQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKik7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCBEZXZpY2VPcmll
bnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbi5n
ZXQoKTsgfQorCisgICAgdm9pZCBzZXRPcmllbnRhdGlvbihQYXNzUmVmUHRyPERldmljZU9yaWVu
dGF0aW9uPik7CisKK3ByaXZhdGU6CisgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPERldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jaz4qKTsKKworICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4g
bV9vcmllbnRhdGlvbjsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJv
bGxlcjsKKyAgICBUaW1lcjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+IG1fdGltZXI7Cisg
ICAgYm9vbCBtX2lzVXBkYXRpbmc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaApJbmRleDogV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjM1NDApCisrKyBXZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsx
MTQsMTEgQEAKIAkJNTFGREM0RDMwQjBBRjVDMTAwRjg0RUIzIC8qIFdlYkhpc3RvcnlJdGVtUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFG
REM0RDIwQjBBRjVDMTAwRjg0RUIzIC8qIFdlYkhpc3RvcnlJdGVtUHJpdmF0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyNDFBREY1MEIxQkM0
OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTI0MUFERjMwQjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNhY2hlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI0MUFERjYw
QjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNhY2hlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTI0MUFERjQwQjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNhY2hl
Lm1tICovOyB9OworCQk1OUEzQzQ3QzExRjlFNzExMDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU5QTNDNDdCMTFGOUU3MTEwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU5
QTNDNDdFMTFGOUU3MTgwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTNDNDdEMTFG
OUU3MTgwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbSAqLzsgfTsKKwkJ
NTlBM0M0ODAxMUY5RTcyMDAwM0UwMjMwIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
QTNDNDdGMTFGOUU3MjAwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEludGVy
bmFsLmggKi87IH07CisJCTU5QTNDNDgyMTFGOUU3MjkwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU5QTNDNDgxMTFGOUU3MjkwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1OUEzQzRCNDExRjlGRUZDMDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTlBM0M0QjMxMUY5RkVGQzAwM0UwMjMwIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5tbSAqLzsgfTsKIAkJNUQ3QkY4MTQwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4
MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVEN0JGODE1MEMyQTFEOTAwMDhDRTA2RCAv
KiBXZWJJbnNwZWN0b3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1RDdCRjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovOyB9
OwogCQk1REU4M0E3QTBEMEY3Rjk0MDBDQUQxMkEgLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsLm5pYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NURFODNBNzQwRDBGN0Y5NDAwQ0FEMTJBIC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5u
aWIgKi87IH07CkBAIC01MTcsNiArNTIyLDExIEBACiAJCTUxRkRDNEQyMEIwQUY1QzEwMEY4NEVC
MyAvKiBXZWJIaXN0b3J5SXRlbVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyNDFBREYzMEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTI0MUFERjQwQjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNhY2hlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNhY2hlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1OUEzQzQ3QjExRjlFNzExMDAzRTAyMzAgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTlB
M0M0N0QxMUY5RTcxODAwM0UwMjMwIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5QTNDNDdGMTFGOUU3
MjAwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW50
ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTlBM0M0ODExMUY5RTcyOTAw
M0UwMjMwIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTlBM0M0QjMxMUY5RkVGQzAwM0UwMjMwIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYklu
c3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0JGODEzMEMyQTFEOTAwMDhDRTA2
RCAvKiBXZWJJbnNwZWN0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViSW5zcGVjdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REU4
M0E3NTBEMEY3Rjk0MDBDQUQxMkEgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIubmliOyBuYW1lID0gRW5nbGlzaDsgcGF0
aCA9IEVuZ2xpc2gubHByb2ovV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYjsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtMTEwNCw2ICsxMTE0LDExIEBACiAJCTlDN0NBQkJC
MDE5MEEzN0MwRUNBMTZFQSAvKiBXZWJWaWV3ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk1OUEzQzRCMzExRjlGRUZDMDAzRTAyMzAgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLm1tICovLAorCQkJCTU5QTNDNDgxMTFGOUU3MjkwMDNFMDIz
MCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKKwkJCQk1OUEzQzQ3RjEx
RjlFNzIwMDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRlcm5hbC5oICov
LAorCQkJCTU5QTNDNDdEMTFGOUU3MTgwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudC5tbSAqLywKKwkJCQk1OUEzQzQ3QjExRjlFNzExMDAzRTAyMzAgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaCAqLywKIAkJCQlGNTJDQTZCRDAyREY5RDBGMDE4NjM1Q0EgLyogSFRN
TCAqLywKIAkJCQk1MUU5NEMwNzA2QzAyQ0EzMDBBOUIwOUUgLyogUERGICovLAogCQkJCTgzNzM0
MzVBMDYyNEVFMEQwMEYzQjI4OSAvKiBXZWJBcmNoaXZlLmggKi8sCkBAIC0xNTU3LDYgKzE1NzIs
OSBAQAogCQkJCTkzOTgxMDcxMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJWaWV3UHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZEM0IwRjgxMDc2QzNGNzAwMDM5Qjk2IC8qIFdlYldpbmRvd0Fu
aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGNDQ4NEYxMDMzOEU4QzAwMzBFNTVFIC8q
IFdlYldvcmtlcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OUEzQzQ3QzExRjlFNzEx
MDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU5QTNDNDgwMTFGOUU3MjAwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OUEzQzQ4MjExRjlFNzI5MDAzRTAyMzAg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5
MTYsNiArMTkzNCw4IEBACiAJCQkJOTM5ODEwRTgwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXdG
YWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0IwRjkxMDc2QzNGNzAwMDM5Qjk2IC8q
IFdlYldpbmRvd0FuaW1hdGlvbi5tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGNDQ4NTAxMDMzOEU4
QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTlB
M0M0N0UxMUY5RTcxODAwM0UwMjMwIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTlBM0M0QjQxMUY5RkVGQzAwM0UwMjMwIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViS2l0L21hYy9X
ZWJLaXQuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViS2l0LmV4cAkocmV2aXNpb24g
NjM1NDApCisrKyBXZWJLaXQvbWFjL1dlYktpdC5leHAJKHdvcmtpbmcgY29weSkKQEAgLTcsNiAr
Nyw3IEBACiAub2JqY19jbGFzc19uYW1lX1dlYkRhdGFTb3VyY2UKIC5vYmpjX2NsYXNzX25hbWVf
V2ViRGF0YWJhc2VNYW5hZ2VyCiAub2JqY19jbGFzc19uYW1lX1dlYkRlZmF1bHRQb2xpY3lEZWxl
Z2F0ZQorLm9iamNfY2xhc3NfbmFtZV9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sKIC5v
YmpjX2NsYXNzX25hbWVfV2ViRG93bmxvYWQKIC5vYmpjX2NsYXNzX25hbWVfV2ViRHluYW1pY1Nj
cm9sbEJhcnNWaWV3CiAub2JqY19jbGFzc19uYW1lX1dlYkZvcm1EZWxlZ2F0ZQpJbmRleDogV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK0BjbGFzcyBXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudEludGVybmFsOworCitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50IDogTlNPYmplY3QgeworICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
SW50ZXJuYWwgKm1faW50ZXJuYWw7Cit9CisKK0BlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW0JKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW0JKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudC5oIgorCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEludGVy
bmFsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24gV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRlcm5hbAorCistIChpZClpbml0V2l0aENvcmVEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudDooRGV2aWNlT3JpZW50YXRpb25DbGllbnQqKWNvcmVDbGllbnQK
K3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICBtX2NvcmUuc2V0KGNvcmVDbGllbnQpOworICAgIHJldHVybiBzZWxmOwor
fQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQKKwor
RGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNvcmUoV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQg
KmNsaWVudCkKK3sKKyAgICByZXR1cm4gY2xpZW50ID8gY2xpZW50LT5tX2ludGVybmFsLT5tX2Nv
cmUuZ2V0KCkgOiAwOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbbV9pbnRlcm5hbCBy
ZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKK0BlbmQKSW5kZXg6IFdlYktpdC9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEludGVybmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW50ZXJu
YWwuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudEludGVybmFsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
T1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorCisjaW1wb3J0IDxX
ZWJDb3JlL0RldmljZU9yaWVudGF0aW9uQ2xpZW50Lmg+CisjaW1wb3J0IDx3dGYvT3duUHRyLmg+
CisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRlcm5hbCA6IE5TT2Jq
ZWN0IHsKK0BwdWJsaWMKKyAgICBPd25QdHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGll
bnQ+IG1fY29yZTsKK30KKworLSAoaWQpaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25DbGll
bnQ6KFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50Kiljb3JlQ2xpZW50OworQGVuZAor
CitXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogY29yZShXZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudCAqKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dC5oIgorCitAaW50ZXJmYWNlIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayA6IFdlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK30KKworLSAoaWQpaW5pdDsKKy0gKHZvaWQpc2V0T3Jp
ZW50YXRpb25XaXRoQ2FuUHJvdmlkZUFscGhhOihib29sKWNhblByb3ZpZGVBbHBoYSBhbHBoYToo
ZG91YmxlKWFscGhhIGNhblByb3ZpZGVCZXRhOihib29sKWNhblByb3ZpZGVCZXRhIGJldGE6KGRv
dWJsZSliZXRhIGNhblByb3ZpZGVHYW1tYTooYm9vbCljYW5Qcm92aWRlR2FtbWEgZ2FtbWE6KGRv
dWJsZSlnYW1tYTsKKworQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5tbQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5oIgorCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudElu
dGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0RldmljZU9yaWVudGF0aW9uLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oPgorI2ltcG9ydCA8d3RmL1Jl
ZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGltcGxlbWVudGF0aW9uIFdl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaworCistIChpZClpbml0Cit7CisgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBtb2NrQ2xpZW50ID0gbmV3IERldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jaygpOworICAgIG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50SW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uQ2xp
ZW50Om1vY2tDbGllbnRdOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldE9yaWVu
dGF0aW9uV2l0aENhblByb3ZpZGVBbHBoYTooYm9vbCljYW5Qcm92aWRlQWxwaGEgYWxwaGE6KGRv
dWJsZSlhbHBoYSBjYW5Qcm92aWRlQmV0YTooYm9vbCljYW5Qcm92aWRlQmV0YSBiZXRhOihkb3Vi
bGUpYmV0YSBjYW5Qcm92aWRlR2FtbWE6KGJvb2wpY2FuUHJvdmlkZUdhbW1hIGdhbW1hOihkb3Vi
bGUpZ2FtbWEKK3sKKyAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+IG9yaWVudGF0aW9uID0g
RGV2aWNlT3JpZW50YXRpb246OmNyZWF0ZShjYW5Qcm92aWRlQWxwaGEsIGFscGhhLCBjYW5Qcm92
aWRlQmV0YSwgYmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSk7CisgICAgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrKiBtb2NrQ2xpZW50ID0gc3RhdGljX2Nhc3Q8RGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrKj4oY29yZShzZWxmKSk7CisgICAgbW9ja0NsaWVudC0+c2V0T3JpZW50YXRp
b24ob3JpZW50YXRpb24ucmVsZWFzZSgpKTsKK30KKworQGVuZApJbmRleDogV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5oCShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKIEBjbGFzcyBXZWJBcmNoaXZlOwogQGNsYXNz
IFdlYkJhY2tGb3J3YXJkTGlzdDsKIEBjbGFzcyBXZWJEYXRhU291cmNlOworQGNsYXNzIFdlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50OwogQGNsYXNzIFdlYkZyYW1lOwogQGNsYXNzIFdlYkZyYW1l
VmlldzsKIEBjbGFzcyBXZWJIaXN0b3J5SXRlbTsKQEAgLTE4OSw3ICsxOTAsNyBAQCBAaW50ZXJm
YWNlIFdlYlZpZXcgOiBOU1ZpZXcKICAgICBAcGFyYW0gZ3JvdXBOYW1lIFRoZSBuYW1lIG9mIHRo
ZSB3ZWJWaWV3IHNldCB0byB3aGljaCB0aGlzIHdlYlZpZXcgd2lsbCBiZSBhZGRlZC4gIE1heSBi
ZSBuaWwuCiAgICAgQHJlc3VsdCBSZXR1cm5zIGFuIGluaXRpYWxpemVkIFdlYlZpZXcuCiAqLwot
LSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZyYW1lTmFtZTooTlNTdHJpbmcgKilm
cmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0cmluZyAqKWdyb3VwTmFtZTsKKy0gKGlkKWluaXRXaXRo
RnJhbWU6KE5TUmVjdClmcmFtZSBmcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3Vw
TmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6KFdlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50ICopZGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiAKIC8qIQog
ICAgIEBtZXRob2QgY2xvc2UKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA2MzU0
MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBACiAjaW1wb3J0ICJXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaCIKICNpbXBv
cnQgIldlYkRlZmF1bHRVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJEZWxlZ2F0ZUltcGxlbWVu
dGF0aW9uQ2FjaGluZy5oIgorI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2ViRG9jdW1lbnQuaCIKICNpbXBvcnQgIldlYkRvY3VtZW50SW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYkRvd25sb2FkLmgiCkBAIC0xMTIsNiArMTEzLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KQEAgLTYyNiw3ICs2MjgsNyBAQCAtIChCT09MKV91
c2VzRG9jdW1lbnRWaWV3cwogICAgIHJldHVybiBfcHJpdmF0ZS0+dXNlc0RvY3VtZW50Vmlld3M7
CiB9CiAKLS0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJp
bmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0cmluZyAqKWdyb3VwTmFtZSB1c2VzRG9jdW1l
bnRWaWV3czooQk9PTCl1c2VzRG9jdW1lbnRWaWV3cworLSAodm9pZClfY29tbW9uSW5pdGlhbGl6
YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3Ry
aW5nICopZ3JvdXBOYW1lIHVzZXNEb2N1bWVudFZpZXdzOihCT09MKXVzZXNEb2N1bWVudFZpZXdz
IGRldmljZU9yaWVudGF0aW9uQ2xpZW50OihXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCopZGV2
aWNlT3JpZW50YXRpb25DbGllbnQKIHsKICAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tS
b3VuZFR3bygpOwogCkBAIC02NDQsNiArNjQ2LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6
YXRpb25XaXRoRnJhbWVOYQogICAgIF9wcml2YXRlLT5iYWNrZ3JvdW5kQ29sb3IgPSBbW05TQ29s
b3IgY29sb3JXaXRoRGV2aWNlV2hpdGU6MSBhbHBoYToxXSByZXRhaW5dOwogICAgIF9wcml2YXRl
LT51c2VzRG9jdW1lbnRWaWV3cyA9IHVzZXNEb2N1bWVudFZpZXdzOwogICAgIF9wcml2YXRlLT5p
bmNsdWRlc0ZsYXR0ZW5lZENvbXBvc2l0aW5nTGF5ZXJzV2hlbkRyYXdpbmdUb0JpdG1hcCA9IFlF
UzsKKyAgICBfcHJpdmF0ZS0+X2RldmljZU9yaWVudGF0aW9uQ2xpZW50ID0gZGV2aWNlT3JpZW50
YXRpb25DbGllbnQ7CiAKICAgICBXZWJGcmFtZVZpZXcgKmZyYW1lVmlldyA9IG5pbDsKICAgICBp
ZiAoX3ByaXZhdGUtPnVzZXNEb2N1bWVudFZpZXdzKSB7CkBAIC02NzYsNyArNjc5LDcgQEAgLSAo
dm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogI2Vsc2UKICAgICBXZWJHZW9s
b2NhdGlvbkNvbnRyb2xsZXJDbGllbnQqIGdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVudCA9IDA7
CiAjZW5kaWYKLSAgICBfcHJpdmF0ZS0+cGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJDaHJvbWVDbGll
bnQoc2VsZiksIG5ldyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKSwgbmV3IFdlYkVkaXRvckNs
aWVudChzZWxmKSwgbmV3IFdlYkRyYWdDbGllbnQoc2VsZiksIG5ldyBXZWJJbnNwZWN0b3JDbGll
bnQoc2VsZiksIG5ldyBXZWJQbHVnaW5IYWx0ZXJDbGllbnQoc2VsZiksIGdlb2xvY2F0aW9uQ29u
dHJvbGxlckNsaWVudCwgMCwgMCk7CisgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShuZXcg
V2ViQ2hyb21lQ2xpZW50KHNlbGYpLCBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQoc2VsZiksIG5l
dyBXZWJFZGl0b3JDbGllbnQoc2VsZiksIG5ldyBXZWJEcmFnQ2xpZW50KHNlbGYpLCBuZXcgV2Vi
SW5zcGVjdG9yQ2xpZW50KHNlbGYpLCBuZXcgV2ViUGx1Z2luSGFsdGVyQ2xpZW50KHNlbGYpLCBn
ZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQsIGNvcmUoZGV2aWNlT3JpZW50YXRpb25DbGllbnQp
LCAwKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXRDYW5TdGFydE1lZGlhKFtzZWxmIHdpbmRv
d10pOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRMb2NhbFN0b3JhZ2VEYXRh
YmFzZVBhdGgoW1tzZWxmIHByZWZlcmVuY2VzXSBfbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoXSk7
CkBAIC03MzYsNyArNzM5LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJh
bWVOYQogCiB9CiAKLS0gKGlkKV9pbml0V2l0aEZyYW1lOihOU1JlY3QpZiBmcmFtZU5hbWU6KE5T
U3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUgdXNlc0Rv
Y3VtZW50Vmlld3M6KEJPT0wpdXNlc0RvY3VtZW50Vmlld3MKKy0gKGlkKV9pbml0V2l0aEZyYW1l
OihOU1JlY3QpZiBmcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNT
dHJpbmcgKilncm91cE5hbWUgdXNlc0RvY3VtZW50Vmlld3M6KEJPT0wpdXNlc0RvY3VtZW50Vmll
d3MgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6KFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Kilk
ZXZpY2VPcmllbnRhdGlvbkNsaWVudAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFt
ZTpmXTsKICAgICBpZiAoIXNlbGYpCkBAIC03NTUsNyArNzU4LDcgQEAgLSAoaWQpX2luaXRXaXRo
RnJhbWU6KE5TUmVjdClmIGZyYW1lTmFtZQogI2VuZGlmCiAKICAgICBfcHJpdmF0ZSA9IFtbV2Vi
Vmlld1ByaXZhdGUgYWxsb2NdIGluaXRdOwotICAgIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhGcmFtZU5hbWU6ZnJhbWVOYW1lIGdyb3VwTmFtZTpncm91cE5hbWUgdXNlc0RvY3VtZW50
Vmlld3M6dXNlc0RvY3VtZW50Vmlld3NdOworICAgIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhGcmFtZU5hbWU6ZnJhbWVOYW1lIGdyb3VwTmFtZTpncm91cE5hbWUgdXNlc0RvY3VtZW50
Vmlld3M6dXNlc0RvY3VtZW50Vmlld3MgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6ZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRdOwogICAgIFtzZWxmIHNldE1haW50YWluc0JhY2tGb3J3YXJkTGlzdDog
WUVTXTsKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTI3MzQsNyArMjczNyw3IEBAIC0gKGlkKV9p
bml0V2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5ICoKICAgICAgICAgTlNSZWN0IGZyYW1lID0g
KGZyYW1lVmFsdWUgPyBbZnJhbWVWYWx1ZSByZWN0VmFsdWVdIDogTlNaZXJvUmVjdCk7CiAgICAg
ICAgIE5TU3RyaW5nICpmcmFtZU5hbWUgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTpAImZyYW1l
TmFtZSJdOwogICAgICAgICBOU1N0cmluZyAqZ3JvdXBOYW1lID0gW2FyZ3VtZW50cyBvYmplY3RG
b3JLZXk6QCJncm91cE5hbWUiXTsKLSAgICAgICAgc2VsZiA9IFtzZWxmIGluaXRXaXRoRnJhbWU6
ZnJhbWUgZnJhbWVOYW1lOmZyYW1lTmFtZSBncm91cE5hbWU6Z3JvdXBOYW1lXTsKKyAgICAgICAg
c2VsZiA9IFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgZnJhbWVOYW1lOmZyYW1lTmFtZSBncm91
cE5hbWU6Z3JvdXBOYW1lIGRldmljZU9yaWVudGF0aW9uQ2xpZW50OjBdOwogICAgIH0KIAogICAg
IHJldHVybiBzZWxmOwpAQCAtMjc4MCwxNiArMjc4MywxNiBAQCBzdGF0aWMgYm9vbCBuZWVkc1dl
YlZpZXdJbml0VGhyZWFkV29ya2FyCiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmCiB7
Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZiBmcmFtZU5hbWU6bmlsIGdyb3VwTmFt
ZTpuaWxdOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmYgZnJhbWVOYW1lOm5pbCBn
cm91cE5hbWU6bmlsIGRldmljZU9yaWVudGF0aW9uQ2xpZW50OjBdOwogfQogCi0tIChpZClpbml0
V2l0aEZyYW1lOihOU1JlY3QpZiBmcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3Vw
TmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
IGZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0cmluZyAqKWdy
b3VwTmFtZSBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDooV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnQgKilkZXZpY2VPcmllbnRhdGlvbkNsaWVudAogewogICAgIGlmIChuZWVkc1dlYlZpZXdJbml0
VGhyZWFkV29ya2Fyb3VuZCgpKQotICAgICAgICByZXR1cm4gW1tzZWxmIF93ZWJraXRfaW52b2tl
T25NYWluVGhyZWFkXSBpbml0V2l0aEZyYW1lOmYgZnJhbWVOYW1lOmZyYW1lTmFtZSBncm91cE5h
bWU6Z3JvdXBOYW1lXTsKKyAgICAgICAgcmV0dXJuIFtbc2VsZiBfd2Via2l0X2ludm9rZU9uTWFp
blRocmVhZF0gaW5pdFdpdGhGcmFtZTpmIGZyYW1lTmFtZTpmcmFtZU5hbWUgZ3JvdXBOYW1lOmdy
b3VwTmFtZSBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDpkZXZpY2VPcmllbnRhdGlvbkNsaWVudF07
CiAKICAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZFR3bygpOwotICAgIHJldHVy
biBbc2VsZiBfaW5pdFdpdGhGcmFtZTpmIGZyYW1lTmFtZTpmcmFtZU5hbWUgZ3JvdXBOYW1lOmdy
b3VwTmFtZSB1c2VzRG9jdW1lbnRWaWV3czpZRVNdOworICAgIHJldHVybiBbc2VsZiBfaW5pdFdp
dGhGcmFtZTpmIGZyYW1lTmFtZTpmcmFtZU5hbWUgZ3JvdXBOYW1lOmdyb3VwTmFtZSB1c2VzRG9j
dW1lbnRWaWV3czpZRVMgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6ZGV2aWNlT3JpZW50YXRpb25D
bGllbnRdOwogfQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgpAQCAt
Mjg0Myw3ICsyODQ2LDcgQEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIK
ICAgICAgICAgICAgIHByZWZlcmVuY2VzID0gbmlsOwogCiAgICAgICAgIExPRyhFbmNvZGluZywg
IkZyYW1lTmFtZSA9ICVALCBHcm91cE5hbWUgPSAlQCwgdXNlQmFja0ZvcndhcmRMaXN0ID0gJWRc
biIsIGZyYW1lTmFtZSwgZ3JvdXBOYW1lLCAoaW50KXVzZUJhY2tGb3J3YXJkTGlzdCk7Ci0gICAg
ICAgIFtyZXN1bHQgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpmcmFtZU5hbWUg
Z3JvdXBOYW1lOmdyb3VwTmFtZSB1c2VzRG9jdW1lbnRWaWV3czpZRVNdOworICAgICAgICBbcmVz
dWx0IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6ZnJhbWVOYW1lIGdyb3VwTmFt
ZTpncm91cE5hbWUgdXNlc0RvY3VtZW50Vmlld3M6WUVTIGRldmljZU9yaWVudGF0aW9uQ2xpZW50
OjBdOwogICAgICAgICBbcmVzdWx0IHBhZ2VdLT5iYWNrRm9yd2FyZExpc3QoKS0+c2V0RW5hYmxl
ZCh1c2VCYWNrRm9yd2FyZExpc3QpOwogICAgICAgICByZXN1bHQtPl9wcml2YXRlLT5hbGxvd3NV
bmRvID0gYWxsb3dzVW5kbzsKICAgICAgICAgaWYgKHByZWZlcmVuY2VzKQpAQCAtNTg3NSw2ICs1
ODc4LDE3IEBAIC0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJvcjooTlMKIAogQGVu
ZAogCitAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViRGV2aWNlT3JpZW50YXRpb24pCisKKy0g
KFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KilfZGV2aWNlT3JpZW50YXRpb25DbGllbnQKK3sK
KyAgICBpZiAoX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBfcHJpdmF0ZS0+X2RldmljZU9yaWVu
dGF0aW9uQ2xpZW50OworICAgIHJldHVybiBuaWw7Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0
aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQogCiAtIChKU1ZhbHVlUmVmKV9j
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZiljb250ZXh0IGZv
ckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5o
CShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBQYWdlOwogfQogCitAY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBAY2xh
c3MgV2ViSW5zcGVjdG9yOwogQGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBAY2xhc3MgV2ViUGx1
Z2luRGF0YWJhc2U7CkBAIC0xNzQsNSArMTc1LDYgQEAgQGludGVyZmFjZSBXZWJWaWV3UHJpdmF0
ZSA6IE5TT2JqZWN0IHsKICAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBnbGliUnVuTG9vcE9ic2Vy
dmVyOwogI2VuZGlmCiAgICAgaWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gX2dlb2xvY2F0aW9u
UHJvdmlkZXI7CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQgKl9kZXZpY2VPcmllbnRh
dGlvbkNsaWVudDsKIH0KIEBlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
CShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAKIEBjbGFzcyBOU0Vycm9yOwogQGNs
YXNzIFdlYkZyYW1lOworQGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50OwogQGNsYXNz
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBAY2xhc3MgV2ViSW5zcGVjdG9yOwogQGNsYXNzIFdl
YlByZWZlcmVuY2VzOwpAQCAtNDY2LDcgKzQ2Nyw3IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0
byB0aGUgQVBJLgogLSAodm9pZClfc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheTooZG91
YmxlKXRpbWVEZWxheTsKIC0gKHZvaWQpX3NldEN1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemU6
KGludCljaHVua1NpemU7CiAKLS0gKGlkKV9pbml0V2l0aEZyYW1lOihOU1JlY3QpZiBmcmFtZU5h
bWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdHJpbmcgKilncm91cE5hbWUg
dXNlc0RvY3VtZW50Vmlld3M6KEJPT0wpdXNlc0RvY3VtZW50Vmlld3M7CistIChpZClfaW5pdFdp
dGhGcmFtZTooTlNSZWN0KWYgZnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5h
bWU6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHVzZXNEb2N1bWVudFZpZXdzOihCT09MKXVzZXNEb2N1
bWVudFZpZXdzIGRldmljZU9yaWVudGF0aW9uQ2xpZW50OihXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudCopZGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiAtIChCT09MKV91c2VzRG9jdW1lbnRWaWV3
czsKIAogLSAodm9pZClzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkOihCT09MKWZs
YWc7CkBAIC02MTgsNiArNjE5LDEwIEBAIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld0dlb2xv
Y2F0aW9uKQogLSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICop
ZXJyb3I7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViVmlldyAoV2ViRGV2aWNlT3JpZW50YXRpb24p
CistIChXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCopX2RldmljZU9yaWVudGF0aW9uQ2xpZW50
OworQGVuZAorCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQog
LSAoSlNWYWx1ZVJlZilfY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvOihKU0NvbnRl
eHRSZWYpY29udGV4dCBmb3JFbGVtZW50OihKU1ZhbHVlUmVmKXZhbHVlOwogQGVuZApJbmRleDog
V2ViS2l0L21vY2svV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbW9jay9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L21vY2svV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNv
dXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9o
CisjZGVmaW5lIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50X2gKKworLy8gVGhpcyBpbnRlcmZh
Y2UsIGFuZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sgd2hpY2ggaW1wbGVtZW50cyBp
dCwgYXJlIHByb3ZpZGVkCisvLyBhcyBhIGNvbnZlbmllbmNlIHRvIGFsbG93IGVtYmVkZGVycyB0
byBwcm92aWRlIGEgbW9jayBmb3IgdGVzdGluZyBEZXZpY2VPcmllbnRhdGlvbi4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7Cit9Cit0eXBlZGVm
IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50IFdlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50Q29yZTsKKworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkge30KKyAgICB2aXJ0dWFs
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Q29yZSogdG9Db3JlKCkgY29uc3QgPSAwOworfTsK
KworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50X2gKSW5kZXg6IFdlYktpdC9t
b2NrL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L21vY2svV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9tb2NrL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgiCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jazo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkKKyAgICA6IG1fY29y
ZShuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkpCit7Cit9CisKK1dlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jazo6fldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpCit7
CisgICAgZGVsZXRlIG1fY29yZTsKK30KKworV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRDb3Jl
KiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnRvQ29yZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fY29yZTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6
OnNldE9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wg
Y2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91Ymxl
IGdhbW1hKQoreworICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4gb3JpZW50YXRpb24gPSBE
ZXZpY2VPcmllbnRhdGlvbjo6Y3JlYXRlKGNhblByb3ZpZGVBbHBoYSwgYWxwaGEsIGNhblByb3Zp
ZGVCZXRhLCBiZXRhLCBjYW5Qcm92aWRlR2FtbWEsIGdhbW1hKTsKKyAgICBtX2NvcmUtPnNldE9y
aWVudGF0aW9uKG9yaWVudGF0aW9uLnJlbGVhc2UoKSk7Cit9CkluZGV4OiBXZWJLaXQvbW9jay9X
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbW9j
ay9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKKysrIFdlYktp
dC9tb2NrL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2tfaAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5j
bHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOworfQorCit0eXBlZGVmIFdlYkNv
cmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2tDb3JlOworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sgOiBwdWJs
aWMgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQgeworcHVibGljOgorICAgIFdlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jaygpOworICAgIHZpcnR1YWwgfldlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jaygpOworICAgIHZpcnR1YWwgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRDb3Jl
KiB0b0NvcmUoKSBjb25zdDsKKyAgICB2b2lkIHNldE9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlk
ZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBi
b29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKKworcHJpdmF0ZToKKyAgICBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tDb3JlKiBtX2NvcmU7Cit9OworCisjZW5kaWYgLy8g
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzNTQw
KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTAtMDctMTYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBMYXlvdXRU
ZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5CisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRN
b2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24pOgorCiAyMDEwLTA3LTE2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDYzNTQwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzAsNiArOTcw
LDI3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldERvbWFpblJlbGF4YXRpb25Gb3IKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVm
IHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDYpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGJvb2wgY2FuUHJvdmlkZUFscGhhID0g
SlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pOworICAgIGRvdWJsZSBhbHBo
YSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbik7Cisg
ICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAgICBib29sIGNhblByb3ZpZGVCZXRhID0gSlNWYWx1
ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMl0pOworICAgIGRvdWJsZSBiZXRhID0gSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1szXSwgZXhjZXB0aW9uKTsKKyAgICBBU1NF
UlQoISpleGNlcHRpb24pOworICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0gSlNWYWx1ZVRvQm9v
bGVhbihjb250ZXh0LCBhcmd1bWVudHNbNF0pOworICAgIGRvdWJsZSBnYW1tYSA9IEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbNV0sIGV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCEq
ZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVp
bnRlcnByZXRfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGNh
blByb3ZpZGVBbHBoYSwgYWxwaGEsIGNhblByb3ZpZGVCZXRhLCBiZXRhLCBjYW5Qcm92aWRlR2Ft
bWEsIGdhbW1hKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25DYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQg
PCAzKQpAQCAtMTgyNCw2ICsxODQ1LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OgogICAgICAgICB7ICJzZXRJY29uRGF0YWJhc2VFbmFibGVkIiwgc2V0SWNvbkRh
dGFiYXNlRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkIiwgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyIiwgc2V0TWFp
bkZyYW1lSXNGaXJzdFJlc3BvbmRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1v
Y2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3QiLCBzZXROZXdXaW5k
b3dzQ29weUJhY2tGb3J3YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9u
IDYzNTQwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIHByb2ZpbGluZ0VuYWJsZWQpOwogICAg
IHZvaWQgc2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChib29sIGZsYWcpOwogICAgIHZv
aWQgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGZsYWcpOworICAgIHZvaWQgc2V0
TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEs
IGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwg
ZG91YmxlIGdhbW1hKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2Rl
LCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsK
ICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVm
IHBhdGgpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA2MzU0MCkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZGlzYWJsZUltYWdlTAogICAgIC8vIEFsc28gbmVlZCB0byBtYWtlIHN1cmUgaW1hZ2Ug
bG9hZGluZyBpcyByZS1lbmFibGVkIGZvciBlYWNoIG5ldyB0ZXN0LgogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRl
QWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJv
b2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRp
dHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9u
IDYzNTQwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2Vi
Q29yZVN0YXRpc3RpY3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJEb2N1bWVudFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJFZGl0aW5nRGVsZWdh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVZpZXcuaD4KQEAgLTE0Myw2ICsxNDQsOCBA
QCBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwZXJzaXN0ZW50CiAKIHN0YXRpYyBXZWJI
aXN0b3J5SXRlbSAqcHJldlRlc3RCRkl0ZW0gPSBuaWw7ICAvLyBjdXJyZW50IGIvZiBpdGVtIGF0
IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIHRlc3QKIAorc3RhdGljIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jayAqZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrID0gW1tXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2sgYWxsb2NdIGluaXRdOworCiAjaWYgX19PQkpDMl9fCiBzdGF0
aWMgdm9pZCBzd2l6emxlQWxsTWV0aG9kcyhDbGFzcyBpbXBvc3RlciwgQ2xhc3Mgb3JpZ2luYWwp
CiB7CkBAIC0yODcsNyArMjkwLDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGVGb250cygpCiBXZWJW
aWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKIHsKICAgICBOU1JlY3QgcmVj
dCA9IE5TTWFrZVJlY3QoMCwgMCwgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdXaWR0aCwg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdIZWlnaHQpOwotICAgIFdlYlZpZXcgKndlYlZp
ZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBmcmFtZU5hbWU6bmlsIGdy
b3VwTmFtZTpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKKyAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgZnJhbWVOYW1lOm5pbCBn
cm91cE5hbWU6QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIiBkZXZpY2VPcmllbnRhdGlvbkNs
aWVudDpkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tdOwogICAgICAgICAKICAgICBbd2ViVmll
dyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERl
bGVnYXRlOmZyYW1lTG9hZERlbGVnYXRlXTsKQEAgLTM0OSw3ICszNTIsNyBAQCB2b2lkIHRlc3RT
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvCiAgICAgXTsKIAogICAgIE5TQXV0b3JlbGVh
c2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07Ci0gICAgV2Vi
VmlldyAqd2ViVmlldyA9IFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0
IGZyYW1lTmFtZTpAIiIgZ3JvdXBOYW1lOkAiIl07CisgICAgV2ViVmlldyAqd2ViVmlldyA9IFtb
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpAIiIgZ3Jv
dXBOYW1lOkAiIiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDpkZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2tdOwogCiAgICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0gW2V4cHJlc3Npb25zIGtl
eUVudW1lcmF0b3JdOwogICAgIGlkIGV4cHJlc3Npb247CkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CShyZXZpc2lvbiA2MzU0MCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsOSArNDQsMTAgQEAK
ICNpbXBvcnQgPFdlYktpdC9XZWJBcHBsaWNhdGlvbkNhY2hlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V2ViQmFja0ZvcndhcmRMaXN0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQ29yZVN0YXRpc3RpY3Mu
aD4KKyNpbXBvcnQgPFdlYktpdC9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYkRhdGFTb3VyY2UuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhYmFzZU1hbmFn
ZXJQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJGcmFtZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lVmlld1ByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg+CkBAIC0zMjAs
NiArMzIxLDE0IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGEKICAg
ICBbV2ViVmlldyBfc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbjpmb3JiaWRkZW4gZm9yVVJM
U2NoZW1lOihOU1N0cmluZyAqKXNjaGVtZUNGU3RyaW5nLmdldCgpXTsKIH0KIAordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlk
ZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBi
b29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIC8vIER1bXBSZW5kZXJU
cmVlIGNvbmZpZ3VyZWQgdGhlIFdlYlZpZXcgdG8gdXNlIE1vY2tEZXZpY2VPcmllbnRhdGlvbkNs
aWVudC4KKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogY2xpZW50ID0gW1ttYWluRnJh
bWUgd2ViVmlld10gX2RldmljZU9yaWVudGF0aW9uQ2xpZW50XTsKKyAgICBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2sqPihjbGllbnQpOworICAgIFttb2NrQ2xpZW50IHNldE9yaWVudGF0
aW9uV2l0aENhblByb3ZpZGVBbHBoYTpjYW5Qcm92aWRlQWxwaGEgYWxwaGE6YWxwaGEgY2FuUHJv
dmlkZUJldGE6Y2FuUHJvdmlkZUJldGEgYmV0YTpiZXRhIGNhblByb3ZpZGVHYW1tYTpjYW5Qcm92
aWRlR2FtbWEgZ2FtbWE6Z2FtbWFdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGRvdWJsZSBhY2N1cmFjeSkKIHsKICAgICBXZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3Np
dGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6
MCBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3VyYWN5OmFjY3VyYWN5
XTsKQEAgLTc1MCw3ICs3NTksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0
TmV3V2luCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGY4RGF0YUNGKEFkb3B0Q0YsIEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHV0ZjhEYXRhKSk7CiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBiYXNlVVJMQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzZVVSTCkpOwogICAgIAotICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFt
ZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJdOworICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbW1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6QCIiIGdyb3VwTmFt
ZTpAIiIgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6MF07CiAKICAgICBib29sIGRvbmUgPSBmYWxz
ZTsKICAgICBBUElUZXN0RGVsZWdhdGUgKmRlbGVnYXRlID0gW1tBUElUZXN0RGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoQ29tcGxldGlvbkNvbmRpdGlvbjomZG9uZV07CkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAkocmV2aXNpb24gNjM1NDApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc3LDYgKzY3Nywx
MiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVoCiAgICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnNldEVkaXRpbmdCZWhhdmlvcihtX2RydC0+d2ViUGFnZSgpLCBl
ZGl0aW5nQmVoYXZpb3IpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9v
bCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3Vi
bGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRp
b24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogewogICAgICBtX2lzR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24g
NjM1NDApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsNiArMzU0LDEyIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGkKICAgICAgICAgd2ViVmlldy0+c2V0UG9s
aWN5RGVsZWdhdGUoMCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29s
IGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJs
ZSBnYW1tYSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlv
biBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRp
b24gbGF5b3V0IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5
b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHJldmlzaW9uIDYzNTQwKQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsMTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGF1c2VUcmFuc2l0aQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlk
ZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBi
b29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZm9yIERldmljZU9yaWVudGF0aW9uIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM1LgorfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKIHsKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gNjM1NDApCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBteSAoJGxpbmtQ
cmVmZXRjaFN1cHBvcnQsICR0aHJlZURDYW52YXNTCiAgICAgJHN2Z1N1cHBvcnQsICRzdmdBbmlt
YXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBw
b3J0LCAkc3ZnRm9udHNTdXBwb3J0LAogICAgICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2
Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3ZWJTb2NrZXRzU3VwcG9ydCwgJHdlYlRpbWlu
Z1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd2Nzc1N1cHBvcnQsICR4aHRtbG1wU3VwcG9ydCwgJHdv
cmtlcnNTdXBwb3J0LAogICAgICR4cGF0aFN1cHBvcnQsICR4c2x0U3VwcG9ydCwgJGNvdmVyYWdl
U3VwcG9ydCwgJG5vdGlmaWNhdGlvbnNTdXBwb3J0LCAkYmxvYlNsaWNlU3VwcG9ydCwgJHRpbGVk
QmFja2luZ1N0b3JlU3VwcG9ydCwKLSAgICAkZmlsZVJlYWRlclN1cHBvcnQsICRmaWxlV3JpdGVy
U3VwcG9ydCwgJGRpcmVjdG9yeVVwbG9hZFN1cHBvcnQpOworICAgICRmaWxlUmVhZGVyU3VwcG9y
dCwgJGZpbGVXcml0ZXJTdXBwb3J0LCAkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCwgJGRldmljZU9y
aWVudGF0aW9uU3VwcG9ydCk7CiAKIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAi
bGluay1wcmVmZXRjaCIsIGRlc2MgPT4gIlRvZ2dsZSBwcmUgZmV0Y2hpbmcgc3VwcG9ydCIsCkBA
IC0yMDEsNiArMjAxLDkgQEAgbXkgQGZlYXR1cmVzID0gKAogCiAgICAgeyBvcHRpb24gPT4gImZp
bGUtd3JpdGVyIiwgZGVzYyA9PiAiVG9nZ2xlIEZpbGVXcml0ZXIgc3VwcG9ydCIsCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9GSUxFX1dSSVRFUiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRm
aWxlV3JpdGVyU3VwcG9ydCB9LAorCisgICAgeyBvcHRpb24gPT4gImRldmljZS1vcmllbnRhdGlv
biIsIGRlc2MgPT4gIlRvZ2dsZSBEZXZpY2VPcmllbnRhdGlvbiBzdXBwb3J0IiwKKyAgICAgIGRl
ZmluZSA9PiAiRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUg
PT4gXCRkZXZpY2VPcmllbnRhdGlvblN1cHBvcnQgfSwKICk7CiAKICMgVXBkYXRlIGRlZmF1bHRz
IGZyb20gUXQncyBwcm9qZWN0IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYzNTQwKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAt
MDctMTYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJv
bGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5CisKKyAgICAgICAgKiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBmYXN0L2RvbS9EZXZpY2VPcmll
bnRhdGlvbi9iYXNpYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2Jhc2ljLW9w
ZXJhdGlvbi5qczogQWRkZWQuCisKIDIwMTAtMDctMTYgIE5pa29sYXMgWmltbWVybWFubiAgPG56
aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGlyayBTY2h1
bHplLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMt
b3BlcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3Bl
cmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMg
dGhlIGJhc2ljIG9wZXJhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbiB1c2luZyB0aGUgbW9jay4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGV2aWNlT3JpZW50YXRpb25F
dmVudC5hbHBoYSBpcyBtb2NrQWxwaGEKK1BBU1MgZGV2aWNlT3JpZW50YXRpb25FdmVudC5iZXRh
IGlzIG1vY2tCZXRhCitQQVNTIGRldmljZU9yaWVudGF0aW9uRXZlbnQuZ2FtbWEgaXMgbW9ja0dh
bW1hCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0
aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50
YXRpb24vYmFzaWMtb3BlcmF0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9iYXNpYy1vcGVyYXRpb24uanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2
aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMv
YmFzaWMtb3BlcmF0aW9uLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
RGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5qcwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMiBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRoZSBiYXNpYyBvcGVy
YXRpb24gb2YgRGV2aWNlT3JpZW50YXRpb24gdXNpbmcgdGhlIG1vY2suIik7CisKK3ZhciBtb2Nr
QWxwaGEgPSAxLjE7Cit2YXIgbW9ja0JldGEgPSAyLjI7Cit2YXIgbW9ja0dhbW1hID0gMy4zOwor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbih0cnVlLCBtb2NrQWxwaGEsIHRydWUsIG1vY2tC
ZXRhLCB0cnVlLCBtb2NrR2FtbWEpOworZWxzZQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5v
dCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXInKTsKKwordmFyIGRldmlj
ZU9yaWVudGF0aW9uRXZlbnQ7Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZGV2aWNlb3JpZW50
YXRpb24iLCBmdW5jdGlvbihlKSB7CisgICAgZGV2aWNlT3JpZW50YXRpb25FdmVudCA9IGU7Cisg
ICAgc2hvdWxkQmUoJ2RldmljZU9yaWVudGF0aW9uRXZlbnQuYWxwaGEnLCAnbW9ja0FscGhhJyk7
CisgICAgc2hvdWxkQmUoJ2RldmljZU9yaWVudGF0aW9uRXZlbnQuYmV0YScsICdtb2NrQmV0YScp
OworICAgIHNob3VsZEJlKCdkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmdhbW1hJywgJ21vY2tHYW1t
YScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDYzNTQwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTExMDksNiArMTEwOSw3IEBAIGZhc3QvZG9t
L2NsaWVudC13aWR0aC1oZWlnaHQtcXVpcmtzLmh0bWwKIGZhc3QvZG9tL2NsaWVudC13aWR0aC1o
ZWlnaHQuaHRtbAogZmFzdC9kb20vY3NzVGFyZ2V0LWNyYXNoLmh0bWwKIGZhc3QvZG9tL2ZyYW1l
LWxvYWRpbmctdmlhLWRvY3VtZW50LXdyaXRlLmh0bWwKK2Zhc3QvZG9tL0RldmljZU9yaWVudGF0
aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9jcmVh
dGUtZXZlbnQuaHRtbAogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vb3B0aW9uYWwtZXZlbnQt
cHJvcGVydGllcy5odG1sCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi93aW5kb3ctcHJvcGVy
dHkuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDYzNTQwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI2
Miw3ICsyNjIsNyBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzL3R5cGUucHJvdG90eXBlLmh0bWwKIHN0
b3JhZ2UvaW5kZXhlZGRiCiAKICMgVGhpcyBwb3J0IGRvZXNuJ3Qgc3VwcG9ydCBEZXZpY2VPcmll
bnRhdGlvbi4KLWZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCisjZmFzdC9kb20vRGV2aWNlT3Jp
ZW50YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50
YXRpb24uaHRtbAogCiAjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62834</attachid>
            <date>2010-07-28 09:35:48 -0700</date>
            <delta_ts>2010-07-29 02:31:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100728173545.patch</filename>
            <type>text/plain</type>
            <size>84213</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMTYgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0
aW9uLmh0bWwKKworICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6On5EZXZpY2VPcmllbnRhdGlv
bkNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0b3BVcGRhdGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6dGltZXJG
aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s6Omxhc3RPcmllbnRhdGlvbik6CisKIDIwMTAtMDctMjYgIFN0ZXZlIEJsb2NrICA8c3RldmVi
bG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gNjQyMDgpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDEsNiArNDAxLDcgQEAgX19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdy
YXBoRVJLTlNfMTVWaQogX19aTjdXZWJDb3JlMTZqc1N0cmluZ1Nsb3dDYXNlRVBOM0pTQzlFeGVj
U3RhdGVFUk5TMF85V2Vha0dDTWFwSVBOU18xMFN0cmluZ0ltcGxFUE5TMF84SlNTdHJpbmdFRUVT
NV8KIF9fWk43V2ViQ29yZTE3Q3JlZGVudGlhbFN0b3JhZ2UzZ2V0RVJLTlNfMTVQcm90ZWN0aW9u
U3BhY2VFCiBfX1pON1dlYkNvcmUxN0RPTUltcGxlbWVudGF0aW9uMTRpc1RleHRNSU1FVHlwZUVS
S05TXzZTdHJpbmdFCitfX1pON1dlYkNvcmUxN0RldmljZU9yaWVudGF0aW9uNmNyZWF0ZUViZGJk
YmQKIF9fWk43V2ViQ29yZTE3R2x5cGhQYWdlVHJlZU5vZGUxOHRyZWVHbHlwaFBhZ2VDb3VudEV2
CiBfX1pON1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTFnZXROUE9iamVjdEV2CiBfX1pON1dl
YkNvcmUxN0hpc3RvcnlDb250cm9sbGVyMjZzYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZUV2CkBA
IC00ODgsNiArNDg5LDggQEAgX19aTjdXZWJDb3JlMjZjb250ZXh0TWVudUl0ZW1UYWdGb250TWVu
dQogX19aTjdXZWJDb3JlMjZjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0V2CiBfX1pON1dlYkNv
cmUyNnVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yRXYKIF9fWk43V2ViQ29yZTI3Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUViUktOU182
U3RyaW5nRQorX19aTjdXZWJDb3JlMjdEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sxNHNldE9y
aWVudGF0aW9uRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE3RGV2aWNlT3JpZW50YXRpb25FRUUKK19f
Wk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJDb3Jl
MjdhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXJFdgogX19aTjdXZWJDb3JlMjdjb250ZXh0TWVu
dUl0ZW1UYWdTaG93Rm9udHNFdgogX19aTjdXZWJDb3JlMjdjb250ZXh0TWVudUl0ZW1UYWdVbmRl
cmxpbmVFdgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDY0MjA4KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExOTAsMTAgKzExOTAsMTIgQEAKIAkJNTRDNTBGN0Iw
RTgwMURGMzAwOTgzMkEwIC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NEM1MEY3QTBFODAxREYzMDA5
ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCAqLzsgfTsKIAkJNTUwQTBCQzkw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1
YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVh
bGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1OTBFMUI0OTExRTRFRjRC
MDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VP
cmllbnRhdGlvbi5oICovOyB9OworCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNl
T3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU5MEUxQjRCMTFF
NEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNEExMUU0RUY3
MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgKi87IH07CiAJ
CTU5MTM5NTNCMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MTM5NTNBMTEwNzU4NDUwMDgzRUM1NSAv
KiBKTklCcmlkZ2UuaCAqLzsgfTsKIAkJNTkxMzk1M0QxMTA3NTg0RTAwODNFQzU1IC8qIEpOSUJy
aWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
OTEzOTUzQzExMDc1ODRFMDA4M0VDNTUgLyogSk5JQnJpZGdlLmNwcCAqLzsgfTsKKwkJNTkzMDlB
MTExMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTMwOUExMDExRjRB
RTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAqLzsgfTsKKwkJ
NTkzMDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkzMDlBMTIx
MUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU5NjIyOTc4MTEzM0VG
RDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk2MjI5NzcxMTMzRUZENzAwREM0Q0JC
IC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi87IH07CiAJCTU5NjIyOTdBMTEzM0VG
RTIwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5NjIyOTc5MTEzM0VGRTIwMERDNENCQiAv
KiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1OTlFNzU5MDExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlFNzU4
RjExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMDIsOCArMTIwNCw4IEBACiAJCTU5QTg2MDA2MTE5
REFGN0YwMERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBODYwMDUxMTlEQUY3RjAwREVG
MUVGIC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAgKi87IH07CiAJCTU5QTg2MDA4MTE5
REFGQTEwMERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTg2MDA3MTE5REFGQTEwMERFRjFF
RiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCAqLzsgfTsKIAkJNTlBOEYxRDQxMUE2OTUw
ODAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFEMzExQTY5NTA4MDAxQUMz
NEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcCAqLzsgfTsKLQkJNTlBOEYxRDYx
MUE2OTUxMzAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBOEYxRDUxMUE2OTUxMzAw
MUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oICovOyB9OwotCQk1OUE4RjFE
ODExQTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QThGMUQ3MTFBNjk1MjAwMDFB
QzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oICovOyB9OworCQk1OUE4RjFENjExQTY5
NTEzMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFENTExQTY5NTEzMDAxQUMz
NEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTlBOEYxRDgxMUE2OTUyMDAwMUFDMzRBIC8q
IERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50
YXRpb25DbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1OUE5RTdCMDExMDQ3NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTlFN0FGMTEw
NDc1ODgwMERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwICovOyB9OwogCQk1OUE5RTdCMjEx
MDQ3NTk0MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE5RTdCMTExMDQ3NTk0MDBERkI0QzEgLyogSmF2
YUluc3RhbmNlSlNDLmggKi87IH07CiAJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlFOCAvKiBCcmlk
Z2VKU0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTlCNTk3NzIxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgKi87IH07CkBAIC02OTY0
LDYgKzY5NjYsOCBAQAogCQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmll
bnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU5MTM5NTNBMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSk5JQnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU5MTM5NTNDMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSk5JQnJpZGdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAzIC8qIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBwYXRoID0gbW9jay9E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jay5oOyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5NzcxMTMzRUZENzAwREM0Q0JCIC8q
IEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbkNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9u
UG9zaXRpb25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTlFNzU4RjEx
MDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEJyaWRnZS5oOyBwYXRoID0gYnJpZGdlL0JyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTIwNDQsNiArMTIwNDgsOCBAQAogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYx
MDQgLyogbW9jayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ay5oICovLAorCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2suY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBtb2NrOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTE5ODY4LDYgKzE5ODc0LDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZD
NTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RE
NEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1OTMwOUExMzExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODREMEUzRDExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVz
b3VyY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODREMEUzRjExRjU4MTYxMDAwODFFMUEgLyog
U1ZHUmVzb3VyY2VzQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUIwNUMzMTFGQUUxNkMw
MDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MjI2Niw2ICsyMjI3Myw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIw
MDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDRE
ODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTkzMDlBMTExMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwODREMEUzQzExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVz
b3VyY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NEQwRTNFMTFGNTgxNjEwMDA4MUUxQSAv
KiBTVkdSZXNvdXJjZXNDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODZBNDAwNjExRjZE
NkI3MDAyQ0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDY0
MjA4KQorKysgV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERl
dmljZU9yaWVudGF0aW9uOworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOwogCiBj
bGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCB+RGV2
aWNlT3JpZW50YXRpb25DbGllbnQoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xs
ZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
dGFydFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7
CiAgICAgdmlydHVhbCBEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3Qg
PSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRpb25DbGllbnQo
KSB7fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYkNv
cmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDggQEAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpEZXZpY2VPcmllbgog
ICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90aW1lcih0aGlzLCAmRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyOjp0aW1lckZpcmVkKQogeworICAgIEFTU0VSVChtX2NsaWVudCk7Cisg
ICAgbV9jbGllbnQtPnNldENvbnRyb2xsZXIodGhpcyk7CiB9CiAKIHZvaWQgRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcj4qIHRpbWVyKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0Rl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKworI2luY2x1ZGUgIkRldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkKKyAgICA6IG1f
Y29udHJvbGxlcigwKQorICAgICwgbV90aW1lcih0aGlzLCAmRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrOjp0aW1lckZpcmVkKQorICAgICwgbV9pc1VwZGF0aW5nKGZhbHNlKQoreworfQorCit2
b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgbV9jb250cm9sbGVyID0gY29u
dHJvbGxlcjsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBk
YXRpbmcoKQoreworICAgIG1faXNVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1faXNVcGRhdGluZyA9
IGZhbHNlOworICAgIG1fdGltZXIuc3RvcCgpOworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24oUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4g
b3JpZW50YXRpb24pCit7CisgICAgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOworICAgIGlm
IChtX2lzVXBkYXRpbmcgJiYgIW1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjp0
aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4qIHRpbWVyKQorewor
ICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3RpbWVyKTsKKyAgICBtX3RpbWVy
LnN0b3AoKTsKKyAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKG1f
b3JpZW50YXRpb24uZ2V0KCkpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21vY2sv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2tfaAorI2RlZmluZSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAor
CisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7CisKKy8vIEEgbW9jayBpbXBsZW1l
bnRhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB1c2VkIHRvIHRlc3QgdGhlIGZlYXR1
cmUgaW4KKy8vIER1bXBSZW5kZXJUcmVlLiBFbWJlZGRlcnMgc2hvdWxkIHNob3VsZCBjb25maWd1
cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0aGlzCisvLyBjbGllbnQgd2hlbiBydW5uaW5nIER1
bXBSZW5kZXJUcmVlLgorY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrIDogcHVibGlj
IERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2soKTsKKworICAgIC8vIERldmljZU9yaWVudGF0aW9uQ2xpZW50CisgICAgdmly
dHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik7Cisg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVw
ZGF0aW5nKCk7CisgICAgdmlydHVhbCBEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbi5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRP
cmllbnRhdGlvbihQYXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9uPik7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4qKTsK
KworICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4gbV9vcmllbnRhdGlvbjsKKyAgICBEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKKyAgICBUaW1lcjxEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s+IG1fdGltZXI7CisgICAgYm9vbCBtX2lzVXBkYXRpbmc7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2tfaApJbmRleDogV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNjQyMDgpCisrKyBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTEgQEAKIAkJNTFGREM0RDMwQjBB
RjVDMTAwRjg0RUIzIC8qIFdlYkhpc3RvcnlJdGVtUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGREM0RDIwQjBBRjVDMTAwRjg0RUIzIC8q
IFdlYkhpc3RvcnlJdGVtUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUyNDFBREY1MEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI0MUFERjMw
QjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI0MUFERjYwQjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNh
Y2hlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI0
MUFERjQwQjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNhY2hlLm1tICovOyB9OworCQk1OUEzQzQ3QzEx
RjlFNzExMDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTNDNDdCMTFGOUU3MTEwMDNF
MDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU5QTNDNDdFMTFGOUU3MTgwMDNFMDIzMCAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTNDNDdEMTFGOUU3MTgwMDNFMDIzMCAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudC5tbSAqLzsgfTsKKwkJNTlBM0M0ODAxMUY5RTcyMDAwM0UwMjMw
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTNDNDdGMTFGOUU3MjAwMDNFMDIzMCAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEludGVybmFsLmggKi87IH07CisJCTU5QTNDNDgy
MTFGOUU3MjkwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTNDNDgxMTFGOUU3
MjkwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1OUEzQzRCNDExRjlGRUZD
MDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBM0M0QjMxMUY5RkVGQzAwM0Uw
MjMwIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5tbSAqLzsgfTsKIAkJNUQ3QkY4
MTQwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdl
Ykluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTVEN0JGODE1MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDdCRjgxMzBDMkExRDkw
MDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovOyB9OwogCQk1REU4M0E3QTBEMEY3Rjk0MDBD
QUQxMkEgLyogV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYiBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURFODNBNzQwRDBGN0Y5NDAwQ0FEMTJB
IC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIgKi87IH07CkBAIC01MTcsNiArNTIy
LDExIEBACiAJCTUxRkRDNEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSGlzdG9yeUl0ZW1Qcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNDFBREYzMEIxQkM0OEEwMDQw
MTJCRCAvKiBXZWJDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0MUFERjQwQjFCQzQ4QTAw
NDAxMkJEIC8qIFdlYkNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OUEzQzQ3
QjExRjlFNzExMDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTlBM0M0N0QxMUY5RTcxODAwM0UwMjMwIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU5QTNDNDdGMTFGOUU3MjAwMDNFMDIzMCAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTlBM0M0ODExMUY5RTcyOTAwM0UwMjMwIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTlBM0M0QjMxMUY5RkVGQzAwM0UwMjMwIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQ3QkY4MTIwQzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVEN0JGODEzMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REU4M0E3NTBEMEY3Rjk0MDBDQUQxMkEgLyog
RW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIubmliOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovV2ViSmF2
YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpA
QCAtMTEwNCw2ICsxMTE0LDExIEBACiAJCTlDN0NBQkJCMDE5MEEzN0MwRUNBMTZFQSAvKiBXZWJW
aWV3ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1OUEz
QzRCMzExRjlGRUZDMDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLm1t
ICovLAorCQkJCTU5QTNDNDgxMTFGOUU3MjkwMDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2suaCAqLywKKwkJCQk1OUEzQzQ3RjExRjlFNzIwMDAzRTAyMzAgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnRJbnRlcm5hbC5oICovLAorCQkJCTU5QTNDNDdEMTFGOUU3MTgw
MDNFMDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbSAqLywKKwkJCQk1OUEzQzQ3
QjExRjlFNzExMDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCAqLywKIAkJ
CQlGNTJDQTZCRDAyREY5RDBGMDE4NjM1Q0EgLyogSFRNTCAqLywKIAkJCQk1MUU5NEMwNzA2QzAy
Q0EzMDBBOUIwOUUgLyogUERGICovLAogCQkJCTgzNzM0MzVBMDYyNEVFMEQwMEYzQjI4OSAvKiBX
ZWJBcmNoaXZlLmggKi8sCkBAIC0xNTU3LDYgKzE1NzIsOSBAQAogCQkJCTkzOTgxMDcxMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJWaWV3UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0Iw
RjgxMDc2QzNGNzAwMDM5Qjk2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFGNDQ4NEYxMDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk1OUEzQzQ3QzExRjlFNzExMDAzRTAyMzAgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU5QTNDNDgwMTFGOUU3MjAwMDNF
MDIzMCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1OUEzQzQ4MjExRjlFNzI5MDAzRTAyMzAgLyogV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5MTYsNiArMTkzNCw4IEBACiAJCQkJOTM5
ODEwRTgwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXdGYWN0b3J5Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZEM0IwRjkxMDc2QzNGNzAwMDM5Qjk2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQ
cml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTlBM0M0N0UxMUY5RTcxODAwM0UwMjMwIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTlBM0M0
QjQxMUY5RkVGQzAwM0UwMjMwIC8qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5tbSBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogV2ViS2l0L2NvbW1vbi9wdWJsaWMvV2ViRGV2aWNlT3JpZW50
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY29tbW9uL3B1YmxpYy9XZWJEZXZpY2VPcmll
bnRhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2NvbW1vbi9wdWJsaWMvV2ViRGV2aWNl
T3JpZW50YXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViRGV2aWNlT3JpZW50YXRpb25faAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlv
bl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBJbnRlcmZhY2UgZm9yIERldmljZU9yaWVu
dGF0aW9uIG9iamVjdHMgc3VwcGxpZWQgYnkgdGhlIGVtYmVkZGVyJ3MgaW1wbGVtZW50YXRpb24K
Ky8vIG9mIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IGFuZCBmb3IgY29uZmlndXJpbmcgV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLgorY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb24g
eworcHVibGljOgorICAgIHZpcnR1YWwgZG91YmxlIGFscGhhKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgZG91YmxlIGJldGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZ2FtbWEo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNhblByb3ZpZGVBbHBoYSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUHJvdmlkZUJldGEoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGNhblByb3ZpZGVHYW1tYSgpIGNvbnN0ID0gMDsKK307CisKK30KKworI2VuZGlm
IC8vIFdlYkRldmljZU9yaWVudGF0aW9uX2gKSW5kZXg6IFdlYktpdC9jb21tb24vcHVibGljL1dl
YkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2NvbW1vbi9w
dWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktp
dC9jb21tb24vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRfaAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCisKKy8vIEludGVyZmFj
ZSBmb3IgdGhlIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHRoYXQgbXVzdCBiZSBwcm92aWRlZCBi
eSB0aGUKKy8vIGVtYmVkZGVyLgorbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmlj
ZU9yaWVudGF0aW9uOworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIgewor
cHVibGljOgorICAgIHZvaWQgZGlkQ2hhbmdlRGV2aWNlT3JpZW50YXRpb24oV2ViRGV2aWNlT3Jp
ZW50YXRpb24qKSA9IDA7Cit9OworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7fQor
CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoV2ViRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CisgICAgdmlydHVhbCBXZWJEZXZpY2VP
cmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgPSAwOworfTsKKworfQorCisjZW5k
aWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRfaApJbmRleDogV2ViS2l0L2NvbW1vbi9w
dWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2NvbW1vbi9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvY29tbW9uL3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrX2gKKworI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBBbiBpbnRlcmZhY2UgdG8gYSBjbGFzcyBw
cm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGZvciB0aGUgZW1iZWRkZXIKKy8vIGZvciB0ZXN0aW5n
IERldmljZU9yaWVudGF0aW9uLgorY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
IDogcHVibGljIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+IGNyZWF0ZSgpOwor
ICAgIHZvaWQgc2V0T3JpZW50YXRpb24oY29uc3QgV2ViRGV2aWNlT3JpZW50YXRpb24mKTsKK307
CisKK30KKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja19oCkluZGV4
OiBXZWJLaXQvY29tbW9uL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEJyaWRnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2NvbW1vbi9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRCcmlkZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2NvbW1vbi9zcmMvV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRCcmlkZ2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50QnJpZGdlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW1wbDo6V2Vi
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW1wbChEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIpCisgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcik7Cit7Cit9CisK
K3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW1wbDo6ZGlkQ2hhbmdlRGV2aWNl
T3JpZW50YXRpb24oV2ViRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9uKQoreworICAgIG1f
bGFzdE9yaWVudGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb246OmNyZWF0ZShvcmllbnRhdGlvbi0+
Y2FuUHJvdmlkZUFscGhhKCksIG9yaWVudGF0aW9uLT5hbHBoYSgpLCBvcmllbnRhdGlvbi0+Y2Fu
UHJvdmlkZUJldGEoKSwgb3JpZW50YXRpb24tPmJldGEoKSwgb3JpZW50YXRpb24tPmNhblByb3Zp
ZGVHYW1tYSgpLCBvcmllbnRhdGlvbi0+Z2FtbWEoKSk7CisgICAgbV9jb250cm9sbGVyLT5kaWRD
aGFuZ2VEZXZpY2VPcmllbnRhdGlvbihtX2xhc3RPcmllbnRhdGlvbi5nZXQoKSk7Cit9CisKKwor
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRCcmlkZ2U6OldlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50QnJpZGdlKFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2Ns
aWVudChjbGllbnQpCit7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRCcmlk
Z2U6OnNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVy
KQoreworICAgIG1fY29udHJvbGxlci5zZXQobmV3IFdlYkRldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlckltcGwoY29udHJvbGxlcikpOworICAgIG1fY2xpZW50LT5zZXRDb250cm9sbGVyKG1fY29u
dHJvbGxlci5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRCcmlk
Z2U6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIG1fY2xpZW50LT5zdGFydFVwZGF0aW5nKCk7Cit9
CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRCcmlkZ2U6OnN0b3BVcGRhdGluZygp
Cit7CisgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQorCitXZWJEZXZpY2VPcmllbnRh
dGlvbiogV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRCcmlkZ2U6Omxhc3RPcmllbnRhdGlvbigp
IGNvbnN0OworeworICAgIERldmljZU9yaWVudGF0aW9uKiBvcmllbnRhdGlvbiA9IG1fY2xpZW50
LT5sYXN0T3JpZW50YXRpb24oKTsKKyAgICBpZiAoIW9yaWVudGF0aW9uKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIG1fbGFzdE9yaWVudGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb246OmNyZWF0
ZShvcmllbnRhdGlvbi0+Y2FuUHJvdmlkZUFscGhhKCksIG9yaWVudGF0aW9uLT5hbHBoYSgpLCBv
cmllbnRhdGlvbi0+Y2FuUHJvdmlkZUJldGEoKSwgb3JpZW50YXRpb24tPmJldGEoKSwgb3JpZW50
YXRpb24tPmNhblByb3ZpZGVHYW1tYSgpLCBvcmllbnRhdGlvbi0+Z2FtbWEoKSk7CisgICAgcmV0
dXJuIG1fbGFzdE9yaWVudGF0aW9uLmdldCgpOworfQorCit9CkluZGV4OiBXZWJLaXQvY29tbW9u
L3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEJyaWRnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jb21tb24vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50QnJpZGdlLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvY29tbW9uL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEJy
aWRnZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEJyaWRnZV9oCisjZGVmaW5lIFdlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50QnJpZGdlX2gKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50
LmgiCisjaW5jbHVkZSAiT3duUHRyLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb24u
aCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKyNpbmNsdWRl
ICJXZWJEZXZpY2VPcmllbnRhdGlvbkltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVySW1wbCA6IHB1YmxpYyBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIgeworICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlckltcGwoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik7CisgICAgdm9pZCBkaWRD
aGFuZ2VEZXZpY2VPcmllbnRhdGlvbihXZWJEZXZpY2VPcmllbnRhdGlvbiopOworcHJpdmF0ZToK
KyAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKKyAgICBSZWZQ
dHI8RGV2aWNlT3JpZW50YXRpb24+IG1fbGFzdE9yaWVudGF0aW9uOworfTsKKworLy8gQSB3cmFw
cGVyIGFyb3VuZCBhIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHRoYXQgaW1wbGVtZW50cwor
Ly8gRGV2aWNlT3JpZW50YXRpb25DbGllbnQsIHRvIGJlIHBhc3NlZCB0byB0aGUgUGFnZSBieSB0
aGUgV2ViVmlldy4KK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50QnJpZGdlIDogcHVi
bGljIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudEJyaWRnZShXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCop
OworCisgICAgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnQgbWV0aG9kcworICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250cm9sbGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopOworICAgIHZp
cnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGlu
ZygpOworICAgIHZpcnR1YWwgV2ViRGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigp
IGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBtX2Ns
aWVudDsKKyAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+IG1fbGFzdE9yaWVudGF0aW9uOwor
ICAgIE93blB0cjxXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsK
K307CisKK30KKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50QnJpZGdlX2gK
SW5kZXg6IFdlYktpdC9jb21tb24vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja0lt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jb21tb24vc3JjL1dlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9ja0ltcGwuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2NvbW1vbi9zcmMv
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrSW1wbC5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrSW1wbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrPiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OmNyZWF0ZSgp
Cit7CisgICAgcmV0dXJuIG5ldyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tJbXBsKCk7
Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrSW1wbDo6c2V0Q29udHJv
bGxlcihXZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAg
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVyKGNvbnRyb2xsZXIpOwor
fQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja0ltcGw6OnN0YXJ0VXBkYXRp
bmcoKQoreworICAgIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RhcnRVcGRhdGluZygp
OworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja0ltcGw6OnN0b3BVcGRh
dGluZygpCit7CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmco
KTsKK30KKworV2ViRGV2aWNlT3JpZW50YXRpb24qIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9ja0ltcGw6Omxhc3RPcmllbnRhdGlvbigpIGNvbnN0OworeworICAgIG1fbGFzdE9yaWVudGF0
aW9uLnNldChuZXcgV2ViRGV2aWNlT3JpZW50YXRpb25JbXBsKERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jazo6bGFzdE9yaWVudGF0aW9uKCkpKTsKKyAgICByZXR1cm4gbV9sYXN0T3JpZW50YXRp
b24uZ2V0KCk7Cit9CisKK3ZvaWQgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrSW1wbDo6
c2V0T3JpZW50YXRpb24oY29uc3QgV2ViRGV2aWNlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKQor
eworICAgIFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+IG9yaWVudGF0aW9uID0gRGV2aWNl
T3JpZW50YXRpb246OmNyZWF0ZShvcmllbnRhdGlvbi5jYW5Qcm92aWRlQWxwaGEoKSwgb3JpZW50
YXRpb24uYWxwaGEoKSwgb3JpZW50YXRpb24uY2FuUHJvdmlkZUJldGEoKSwgb3JpZW50YXRpb24u
YmV0YSgpLCBvcmllbnRhdGlvbi5jYW5Qcm92aWRlR2FtbWEoKSwgb3JpZW50YXRpb24uZ2FtbWEo
KSk7CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzZXRPcmllbnRhdGlvbihvcmll
bnRhdGlvbi5yZWxlYXNlKCkpOworfQorCit9CkluZGV4OiBXZWJLaXQvY29tbW9uL3NyYy9XZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nv
bW1vbi9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrSW1wbC5oCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0L2NvbW1vbi9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrSW1w
bC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tJbXBsX2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrSW1wbF9oCisKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaCIKKyNpbmNsdWRlICJPd25QdHIuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRh
dGlvbi5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgorI2lu
Y2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uSW1wbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrSW1wbAorICAgIDogcHVibGlj
IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaworICAgICwgcHVibGljIFdlYkRl
dmljZU9yaWVudGF0aW9uTW9jayB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrSW1wbCgpOworCisgICAgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnQgbWV0aG9kcworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZpcnR1YWwgV2ViRGV2aWNlT3JpZW50YXRp
b24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0OworCisgICAgLy8gV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrIG1ldGhvZHMKKyAgICB2b2lkIHNldE9yaWVudGF0aW9uKGNvbnN0IFdlYkRl
dmljZU9yaWVudGF0aW9uJik7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkRldmljZU9yaWVu
dGF0aW9uSW1wbD4gbV9sYXN0T3JpZW50YXRpb247Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaApJbmRleDogV2ViS2l0L2NvbW1vbi9zcmMvV2Vi
RGV2aWNlT3JpZW50YXRpb25JbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY29tbW9uL3Ny
Yy9XZWJEZXZpY2VPcmllbnRhdGlvbkltcGwuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nv
bW1vbi9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25JbXBsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJE
ZXZpY2VPcmllbnRhdGlvbkltcGwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkRldmlj
ZU9yaWVudGF0aW9uSW1wbDo6V2ViRGV2aWNlT3JpZW50YXRpb25JbXBsKERldmljZU9yaWVudGF0
aW9uKiBvcmllbnRhdGlvbikKKyAgICA6IG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCit7Cit9
CisKK2RvdWJsZSBXZWJEZXZpY2VPcmllbnRhdGlvbkltcGw6OmFscGhhKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9vcmllbnRhdGlvbi0+YWxwaGEoKTsKK30KKworZG91YmxlIFdlYkRldmljZU9y
aWVudGF0aW9uSW1wbDo6YmV0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fb3JpZW50YXRpb24t
PmJldGEoKTsKK30KKworZG91YmxlIFdlYkRldmljZU9yaWVudGF0aW9uSW1wbDo6Z2FtbWEoKSBj
b25zdAoreworICAgIHJldHVybiBtX29yaWVudGF0aW9uLT5nYW1tYSgpOworfQorCitib29sIFdl
YkRldmljZU9yaWVudGF0aW9uSW1wbDo6Y2FuUHJvdmlkZUFscGhhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9vcmllbnRhdGlvbi0+Y2FuUHJvdmlkZUFscGhhKCk7Cit9CisKK2Jvb2wgV2ViRGV2
aWNlT3JpZW50YXRpb25JbXBsOjpjYW5Qcm92aWRlQmV0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fb3JpZW50YXRpb24tPmNhblByb3ZpZGVCZXRhKCk7Cit9CisKK2Jvb2wgV2ViRGV2aWNlT3Jp
ZW50YXRpb25JbXBsOjpjYW5Qcm92aWRlR2FtbWEoKSBjb25zdAoreworICAgIHJldHVybiBtX29y
aWVudGF0aW9uLT5jYW5Qcm92aWRlR2FtbWEoKTsKK30KKworfQpJbmRleDogV2ViS2l0L2NvbW1v
bi9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nv
bW1vbi9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25JbXBsLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY29tbW9uL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkltcGwuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2aWNlT3JpZW50YXRpb25JbXBs
X2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRpb25JbXBsX2gKKworI2luY2x1ZGUgIkRldmlj
ZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb24uaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKKy8vIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIFdlYkRldmlj
ZU9yaWVudGF0aW9uIHVzZWQgYnkKKy8vIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay4K
K2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uSW1wbCA6IHB1YmxpYyBXZWJEZXZpY2VPcmllbnRh
dGlvbiB7CitwdWJsaWM6CisgICAgLy8gV2UgaG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgV2ViQ29y
ZSBvYmplY3QuCisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25JbXBsKERldmljZU9yaWVudGF0aW9u
Kik7CisKKyAgICAvLyBXZWJEZXZpY2VPcmllbnRhdGlvbiBtZXRob2RzCisgICAgdmlydHVhbCBk
b3VibGUgYWxwaGEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBiZXRhKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBkb3VibGUgZ2FtbWEoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUHJv
dmlkZUFscGhhKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblByb3ZpZGVCZXRhKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGNhblByb3ZpZGVHYW1tYSgpIGNvbnN0OworCitwcml2YXRl
OgorICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4gbV9vcmllbnRhdGlvbjsKK307CisKK30K
KworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uSW1wbF9oCkluZGV4OiBXZWJLaXQvbWFj
L1dlYktpdC5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJLaXQuZXhwCShyZXZpc2lv
biA2NDIwOCkKKysrIFdlYktpdC9tYWMvV2ViS2l0LmV4cAkod29ya2luZyBjb3B5KQpAQCAtNyw2
ICs3LDcgQEAKIC5vYmpjX2NsYXNzX25hbWVfV2ViRGF0YVNvdXJjZQogLm9iamNfY2xhc3NfbmFt
ZV9XZWJEYXRhYmFzZU1hbmFnZXIKIC5vYmpjX2NsYXNzX25hbWVfV2ViRGVmYXVsdFBvbGljeURl
bGVnYXRlCisub2JqY19jbGFzc19uYW1lX1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jawog
Lm9iamNfY2xhc3NfbmFtZV9XZWJEb3dubG9hZAogLm9iamNfY2xhc3NfbmFtZV9XZWJEeW5hbWlj
U2Nyb2xsQmFyc1ZpZXcKIC5vYmpjX2NsYXNzX25hbWVfV2ViRm9ybURlbGVnYXRlCkluZGV4OiBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkocmV2
aXNpb24gMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworQGNsYXNzIFdlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50SW50ZXJuYWw7CisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQgOiBOU09iamVjdCB7CisgICAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRJbnRlcm5hbCAqbV9pbnRlcm5hbDsKK30KKworQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbQkocmV2aXNpb24gMCkKKysr
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5tbQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50LmgiCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW50
ZXJuYWwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBX
ZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEludGVybmFsCisKKy0gKGlkKWluaXRXaXRoQ29yZURl
dmljZU9yaWVudGF0aW9uQ2xpZW50OihEZXZpY2VPcmllbnRhdGlvbkNsaWVudCopY29yZUNsaWVu
dAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIG1fY29yZS5zZXQoY29yZUNsaWVudCk7CisgICAgcmV0dXJuIHNlbGY7
Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudAor
CitEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogY29yZShXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCAqY2xpZW50KQoreworICAgIHJldHVybiBjbGllbnQgPyBjbGllbnQtPm1faW50ZXJuYWwtPm1f
Y29yZS5nZXQoKSA6IDA7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFttX2ludGVybmFs
IHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworQGVuZApJbmRleDogV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbnRl
cm5hbC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50SW50ZXJuYWwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisKKyNpbXBvcnQg
PFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaD4KKyNpbXBvcnQgPHd0Zi9Pd25QdHIu
aD4KKworQGludGVyZmFjZSBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEludGVybmFsIDogTlNP
YmplY3QgeworQHB1YmxpYworICAgIE93blB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNs
aWVudD4gbV9jb3JlOworfQorCistIChpZClpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbkNs
aWVudDooV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQqKWNvcmVDbGllbnQ7CitAZW5k
CisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBjb3JlKFdlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50ICopOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50LmgiCisKK0BpbnRlcmZhY2UgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrIDogV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnQgeworfQorCistIChpZClpbml0OworLSAodm9pZClzZXRP
cmllbnRhdGlvbldpdGhDYW5Qcm92aWRlQWxwaGE6KGJvb2wpY2FuUHJvdmlkZUFscGhhIGFscGhh
Oihkb3VibGUpYWxwaGEgY2FuUHJvdmlkZUJldGE6KGJvb2wpY2FuUHJvdmlkZUJldGEgYmV0YToo
ZG91YmxlKWJldGEgY2FuUHJvdmlkZUdhbW1hOihib29sKWNhblByb3ZpZGVHYW1tYSBnYW1tYToo
ZG91YmxlKWdhbW1hOworCitAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2subW0JKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLm1tCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrLmgiCisKKyNpbXBvcnQgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
SW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb24uaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg+CisjaW1wb3J0IDx3dGYv
UmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24g
V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrCisKKy0gKGlkKWluaXQKK3sKKyAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQgPSBuZXcgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrKCk7CisgICAgbV9pbnRlcm5hbCA9IFtbV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnRJbnRlcm5hbCBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb25D
bGllbnQ6bW9ja0NsaWVudF07CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0T3Jp
ZW50YXRpb25XaXRoQ2FuUHJvdmlkZUFscGhhOihib29sKWNhblByb3ZpZGVBbHBoYSBhbHBoYToo
ZG91YmxlKWFscGhhIGNhblByb3ZpZGVCZXRhOihib29sKWNhblByb3ZpZGVCZXRhIGJldGE6KGRv
dWJsZSliZXRhIGNhblByb3ZpZGVHYW1tYTooYm9vbCljYW5Qcm92aWRlR2FtbWEgZ2FtbWE6KGRv
dWJsZSlnYW1tYQoreworICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4gb3JpZW50YXRpb24g
PSBEZXZpY2VPcmllbnRhdGlvbjo6Y3JlYXRlKGNhblByb3ZpZGVBbHBoYSwgYWxwaGEsIGNhblBy
b3ZpZGVCZXRhLCBiZXRhLCBjYW5Qcm92aWRlR2FtbWEsIGdhbW1hKTsKKyAgICBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQgPSBzdGF0aWNfY2FzdDxEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2sqPihjb3JlKHNlbGYpKTsKKyAgICBtb2NrQ2xpZW50LT5zZXRPcmllbnRh
dGlvbihvcmllbnRhdGlvbi5yZWxlYXNlKCkpOworfQorCitAZW5kCkluZGV4OiBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3LmgJKHJldmlzaW9uIDY0MjA4KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogQGNsYXNzIFdlYkFyY2hpdmU7CiBAY2xh
c3MgV2ViQmFja0ZvcndhcmRMaXN0OwogQGNsYXNzIFdlYkRhdGFTb3VyY2U7CitAY2xhc3MgV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBAY2xhc3MgV2ViRnJhbWU7CiBAY2xhc3MgV2ViRnJh
bWVWaWV3OwogQGNsYXNzIFdlYkhpc3RvcnlJdGVtOwpAQCAtMTg5LDcgKzE5MCw3IEBAIEBpbnRl
cmZhY2UgV2ViVmlldyA6IE5TVmlldwogICAgIEBwYXJhbSBncm91cE5hbWUgVGhlIG5hbWUgb2Yg
dGhlIHdlYlZpZXcgc2V0IHRvIHdoaWNoIHRoaXMgd2ViVmlldyB3aWxsIGJlIGFkZGVkLiAgTWF5
IGJlIG5pbC4KICAgICBAcmVzdWx0IFJldHVybnMgYW4gaW5pdGlhbGl6ZWQgV2ViVmlldy4KICov
Ci0tIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJhbWVOYW1lOihOU1N0cmluZyAq
KWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3RyaW5nICopZ3JvdXBOYW1lOworLSAoaWQpaW5pdFdp
dGhGcmFtZTooTlNSZWN0KWZyYW1lIGZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3Jv
dXBOYW1lOihOU1N0cmluZyAqKWdyb3VwTmFtZSBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDooV2Vi
RGV2aWNlT3JpZW50YXRpb25DbGllbnQgKilkZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIAogLyoh
CiAgICAgQG1ldGhvZCBjbG9zZQpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDY0
MjA4KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgIldlYkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiV2ViRGVmYXVsdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVt
ZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0ICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEb2N1bWVudC5oIgogI2ltcG9ydCAiV2ViRG9jdW1lbnRJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRG93bmxvYWQuaCIKQEAgLTExMiw2ICsxMTMsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgpAQCAtNjI3LDcgKzYyOSw3IEBAIC0gKEJPT0wp
X3VzZXNEb2N1bWVudFZpZXdzCiAgICAgcmV0dXJuIF9wcml2YXRlLT51c2VzRG9jdW1lbnRWaWV3
czsKIH0KIAotLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0
cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHVzZXNEb2N1
bWVudFZpZXdzOihCT09MKXVzZXNEb2N1bWVudFZpZXdzCistICh2b2lkKV9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNT
dHJpbmcgKilncm91cE5hbWUgdXNlc0RvY3VtZW50Vmlld3M6KEJPT0wpdXNlc0RvY3VtZW50Vmll
d3MgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6KFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Kilk
ZXZpY2VPcmllbnRhdGlvbkNsaWVudAogewogICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVj
a1JvdW5kVHdvKCk7CiAKQEAgLTY0NSw2ICs2NDcsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPmJhY2tncm91bmRDb2xvciA9IFtbTlND
b2xvciBjb2xvcldpdGhEZXZpY2VXaGl0ZToxIGFscGhhOjFdIHJldGFpbl07CiAgICAgX3ByaXZh
dGUtPnVzZXNEb2N1bWVudFZpZXdzID0gdXNlc0RvY3VtZW50Vmlld3M7CiAgICAgX3ByaXZhdGUt
PmluY2x1ZGVzRmxhdHRlbmVkQ29tcG9zaXRpbmdMYXllcnNXaGVuRHJhd2luZ1RvQml0bWFwID0g
WUVTOworICAgIF9wcml2YXRlLT5fZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBkZXZpY2VPcmll
bnRhdGlvbkNsaWVudDsKIAogICAgIFdlYkZyYW1lVmlldyAqZnJhbWVWaWV3ID0gbmlsOwogICAg
IGlmIChfcHJpdmF0ZS0+dXNlc0RvY3VtZW50Vmlld3MpIHsKQEAgLTY4Miw2ICs2ODUsOSBAQCAt
ICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjaWYgRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikKICAgICBwYWdlQ2xpZW50cy5nZW9sb2NhdGlvbkNvbnRyb2xs
ZXJDbGllbnQgPSBuZXcgV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50KHNlbGYpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAgICBwYWdlQ2xpZW50cy5kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCA9IGNvcmUoZGV2aWNlT3JpZW50YXRpb25DbGllbnQpOworI2Vu
ZGlmCiAgICAgX3ByaXZhdGUtPnBhZ2UgPSBuZXcgUGFnZShwYWdlQ2xpZW50cyk7CiAKICAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0Q2FuU3RhcnRNZWRpYShbc2VsZiB3aW5kb3ddKTsKQEAgLTc0Miw3
ICs3NDgsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAKIH0K
IAotLSAoaWQpX2luaXRXaXRoRnJhbWU6KE5TUmVjdClmIGZyYW1lTmFtZTooTlNTdHJpbmcgKilm
cmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0cmluZyAqKWdyb3VwTmFtZSB1c2VzRG9jdW1lbnRWaWV3
czooQk9PTCl1c2VzRG9jdW1lbnRWaWV3cworLSAoaWQpX2luaXRXaXRoRnJhbWU6KE5TUmVjdClm
IGZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0cmluZyAqKWdy
b3VwTmFtZSB1c2VzRG9jdW1lbnRWaWV3czooQk9PTCl1c2VzRG9jdW1lbnRWaWV3cyBkZXZpY2VP
cmllbnRhdGlvbkNsaWVudDooV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQqKWRldmljZU9yaWVu
dGF0aW9uQ2xpZW50CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZdOwogICAg
IGlmICghc2VsZikKQEAgLTc2MSw3ICs3NjcsNyBAQCAtIChpZClfaW5pdFdpdGhGcmFtZTooTlNS
ZWN0KWYgZnJhbWVOYW1lCiAjZW5kaWYKIAogICAgIF9wcml2YXRlID0gW1tXZWJWaWV3UHJpdmF0
ZSBhbGxvY10gaW5pdF07Ci0gICAgW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1l
TmFtZTpmcmFtZU5hbWUgZ3JvdXBOYW1lOmdyb3VwTmFtZSB1c2VzRG9jdW1lbnRWaWV3czp1c2Vz
RG9jdW1lbnRWaWV3c107CisgICAgW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1l
TmFtZTpmcmFtZU5hbWUgZ3JvdXBOYW1lOmdyb3VwTmFtZSB1c2VzRG9jdW1lbnRWaWV3czp1c2Vz
RG9jdW1lbnRWaWV3cyBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDpkZXZpY2VPcmllbnRhdGlvbkNs
aWVudF07CiAgICAgW3NlbGYgc2V0TWFpbnRhaW5zQmFja0ZvcndhcmRMaXN0OiBZRVNdOwogICAg
IHJldHVybiBzZWxmOwogfQpAQCAtMjc1NCw3ICsyNzYwLDcgQEAgLSAoaWQpX2luaXRXaXRoQXJn
dW1lbnRzOihOU0RpY3Rpb25hcnkgKgogICAgICAgICBOU1JlY3QgZnJhbWUgPSAoZnJhbWVWYWx1
ZSA/IFtmcmFtZVZhbHVlIHJlY3RWYWx1ZV0gOiBOU1plcm9SZWN0KTsKICAgICAgICAgTlNTdHJp
bmcgKmZyYW1lTmFtZSA9IFthcmd1bWVudHMgb2JqZWN0Rm9yS2V5OkAiZnJhbWVOYW1lIl07CiAg
ICAgICAgIE5TU3RyaW5nICpncm91cE5hbWUgPSBbYXJndW1lbnRzIG9iamVjdEZvcktleTpAImdy
b3VwTmFtZSJdOwotICAgICAgICBzZWxmID0gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBmcmFt
ZU5hbWU6ZnJhbWVOYW1lIGdyb3VwTmFtZTpncm91cE5hbWVdOworICAgICAgICBzZWxmID0gW3Nl
bGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBmcmFtZU5hbWU6ZnJhbWVOYW1lIGdyb3VwTmFtZTpncm91
cE5hbWUgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6MF07CiAgICAgfQogCiAgICAgcmV0dXJuIHNl
bGY7CkBAIC0yODAwLDE2ICsyODA2LDE2IEBAIHN0YXRpYyBib29sIG5lZWRzV2ViVmlld0luaXRU
aHJlYWRXb3JrYXIKIAogLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWYKIHsKLSAgICByZXR1
cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF07Cisg
ICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZiBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpu
aWwgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6MF07CiB9CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6
KE5TUmVjdClmIGZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0
cmluZyAqKWdyb3VwTmFtZQorLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWYgZnJhbWVOYW1l
OihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3RyaW5nICopZ3JvdXBOYW1lIGRl
dmljZU9yaWVudGF0aW9uQ2xpZW50OihXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCAqKWRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50CiB7CiAgICAgaWYgKG5lZWRzV2ViVmlld0luaXRUaHJlYWRXb3Jr
YXJvdW5kKCkpCi0gICAgICAgIHJldHVybiBbW3NlbGYgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJl
YWRdIGluaXRXaXRoRnJhbWU6ZiBmcmFtZU5hbWU6ZnJhbWVOYW1lIGdyb3VwTmFtZTpncm91cE5h
bWVdOworICAgICAgICByZXR1cm4gW1tzZWxmIF93ZWJraXRfaW52b2tlT25NYWluVGhyZWFkXSBp
bml0V2l0aEZyYW1lOmYgZnJhbWVOYW1lOmZyYW1lTmFtZSBncm91cE5hbWU6Z3JvdXBOYW1lIGRl
dmljZU9yaWVudGF0aW9uQ2xpZW50OmRldmljZU9yaWVudGF0aW9uQ2xpZW50XTsKIAogICAgIFdl
YkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kVHdvKCk7Ci0gICAgcmV0dXJuIFtzZWxmIF9p
bml0V2l0aEZyYW1lOmYgZnJhbWVOYW1lOmZyYW1lTmFtZSBncm91cE5hbWU6Z3JvdXBOYW1lIHVz
ZXNEb2N1bWVudFZpZXdzOllFU107CisgICAgcmV0dXJuIFtzZWxmIF9pbml0V2l0aEZyYW1lOmYg
ZnJhbWVOYW1lOmZyYW1lTmFtZSBncm91cE5hbWU6Z3JvdXBOYW1lIHVzZXNEb2N1bWVudFZpZXdz
OllFUyBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDpkZXZpY2VPcmllbnRhdGlvbkNsaWVudF07CiB9
CiAKIC0gKGlkKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCkBAIC0yODYzLDcgKzI4
NjksNyBAQCAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogICAgICAgICAg
ICAgcHJlZmVyZW5jZXMgPSBuaWw7CiAKICAgICAgICAgTE9HKEVuY29kaW5nLCAiRnJhbWVOYW1l
ID0gJUAsIEdyb3VwTmFtZSA9ICVALCB1c2VCYWNrRm9yd2FyZExpc3QgPSAlZFxuIiwgZnJhbWVO
YW1lLCBncm91cE5hbWUsIChpbnQpdXNlQmFja0ZvcndhcmRMaXN0KTsKLSAgICAgICAgW3Jlc3Vs
dCBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmZyYW1lTmFtZSBncm91cE5hbWU6
Z3JvdXBOYW1lIHVzZXNEb2N1bWVudFZpZXdzOllFU107CisgICAgICAgIFtyZXN1bHQgX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpmcmFtZU5hbWUgZ3JvdXBOYW1lOmdyb3VwTmFt
ZSB1c2VzRG9jdW1lbnRWaWV3czpZRVMgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6MF07CiAgICAg
ICAgIFtyZXN1bHQgcGFnZV0tPmJhY2tGb3J3YXJkTGlzdCgpLT5zZXRFbmFibGVkKHVzZUJhY2tG
b3J3YXJkTGlzdCk7CiAgICAgICAgIHJlc3VsdC0+X3ByaXZhdGUtPmFsbG93c1VuZG8gPSBhbGxv
d3NVbmRvOwogICAgICAgICBpZiAocHJlZmVyZW5jZXMpCkBAIC01ODk1LDYgKzU5MDEsMTcgQEAg
LSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOihOUwogCiBAZW5kCiAKK0BpbXBs
ZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJEZXZpY2VPcmllbnRhdGlvbikKKworLSAoV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnQqKV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudAoreworICAgIGlmIChf
cHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIF9wcml2YXRlLT5fZGV2aWNlT3JpZW50YXRpb25DbGll
bnQ7CisgICAgcmV0dXJuIG5pbDsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViVmll
dyAoV2ViVmlld1ByaXZhdGVTdHlsZUluZm8pCiAKIC0gKEpTVmFsdWVSZWYpX2NvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRWxlbWVudDoo
SlNWYWx1ZVJlZil2YWx1ZQpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHJldmlzaW9u
IDY0MjA4KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBhZ2U7
CiB9CiAKK0BjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIEBjbGFzcyBXZWJJbnNw
ZWN0b3I7CiBAY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIEBjbGFzcyBXZWJQbHVnaW5EYXRhYmFz
ZTsKQEAgLTE3NCw1ICsxNzUsNiBAQCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmpl
Y3QgewogICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIGdsaWJSdW5Mb29wT2JzZXJ2ZXI7CiAjZW5k
aWYKICAgICBpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiBfZ2VvbG9jYXRpb25Qcm92aWRlcjsK
KyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCAqX2RldmljZU9yaWVudGF0aW9uQ2xpZW50
OwogfQogQGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9u
IDY0MjA4KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKIAogQGNsYXNzIE5TRXJyb3I7CiBAY2xhc3MgV2ViRnJh
bWU7CitAY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBAY2xhc3MgV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjsKIEBjbGFzcyBXZWJJbnNwZWN0b3I7CiBAY2xhc3MgV2ViUHJlZmVyZW5j
ZXM7CkBAIC00NjYsNyArNDY3LDcgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEku
CiAtICh2b2lkKV9zZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5Oihkb3VibGUpdGltZURl
bGF5OwogLSAodm9pZClfc2V0Q3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZTooaW50KWNodW5r
U2l6ZTsKIAotLSAoaWQpX2luaXRXaXRoRnJhbWU6KE5TUmVjdClmIGZyYW1lTmFtZTooTlNTdHJp
bmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0cmluZyAqKWdyb3VwTmFtZSB1c2VzRG9jdW1l
bnRWaWV3czooQk9PTCl1c2VzRG9jdW1lbnRWaWV3czsKKy0gKGlkKV9pbml0V2l0aEZyYW1lOihO
U1JlY3QpZiBmcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdHJp
bmcgKilncm91cE5hbWUgdXNlc0RvY3VtZW50Vmlld3M6KEJPT0wpdXNlc0RvY3VtZW50Vmlld3Mg
ZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6KFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KilkZXZp
Y2VPcmllbnRhdGlvbkNsaWVudDsKIC0gKEJPT0wpX3VzZXNEb2N1bWVudFZpZXdzOwogCiAtICh2
b2lkKXNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQ6KEJPT0wpZmxhZzsKQEAgLTYx
OCw2ICs2MTksMTAgQEAgQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3R2VvbG9jYXRpb24pCiAt
ICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKIEBl
bmQKIAorQGludGVyZmFjZSBXZWJWaWV3IChXZWJEZXZpY2VPcmllbnRhdGlvbikKKy0gKFdlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KilfZGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CitAZW5kCisK
IEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld1ByaXZhdGVTdHlsZUluZm8pCiAtIChKU1ZhbHVl
UmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZiljb250
ZXh0IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWU7CiBAZW5kCkluZGV4OiBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA2NDIwOCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDEwLTA3LTE2ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
TGF5b3V0VGVzdENvbnRyb2xsZXIgbWV0aG9kcyB0byB0ZXN0IERldmljZU9yaWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTU4OQorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoc2V0TW9ja0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKwogMjAxMC0wNy0yNyAgS2ludWtvIFlhc3VkYSAg
PGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzAsNiArOTcw
LDI3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldERvbWFpblJlbGF4YXRpb25Gb3IKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVm
IHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDYpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGJvb2wgY2FuUHJvdmlkZUFscGhhID0g
SlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pOworICAgIGRvdWJsZSBhbHBo
YSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbik7Cisg
ICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAgICBib29sIGNhblByb3ZpZGVCZXRhID0gSlNWYWx1
ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMl0pOworICAgIGRvdWJsZSBiZXRhID0gSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1szXSwgZXhjZXB0aW9uKTsKKyAgICBBU1NF
UlQoISpleGNlcHRpb24pOworICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0gSlNWYWx1ZVRvQm9v
bGVhbihjb250ZXh0LCBhcmd1bWVudHNbNF0pOworICAgIGRvdWJsZSBnYW1tYSA9IEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbNV0sIGV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCEq
ZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVp
bnRlcnByZXRfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGNh
blByb3ZpZGVBbHBoYSwgYWxwaGEsIGNhblByb3ZpZGVCZXRhLCBiZXRhLCBjYW5Qcm92aWRlR2Ft
bWEsIGdhbW1hKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25DYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQg
PCAzKQpAQCAtMTgyNCw2ICsxODQ1LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OgogICAgICAgICB7ICJzZXRJY29uRGF0YWJhc2VFbmFibGVkIiwgc2V0SWNvbkRh
dGFiYXNlRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkIiwgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyIiwgc2V0TWFp
bkZyYW1lSXNGaXJzdFJlc3BvbmRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1v
Y2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3QiLCBzZXROZXdXaW5k
b3dzQ29weUJhY2tGb3J3YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9u
IDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChib29sIHByb2ZpbGluZ0VuYWJsZWQpOwogICAg
IHZvaWQgc2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChib29sIGZsYWcpOwogICAgIHZv
aWQgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGZsYWcpOworICAgIHZvaWQgc2V0
TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEs
IGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwg
ZG91YmxlIGdhbW1hKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2Rl
LCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsK
ICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVm
IHBhdGgpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA2NDIwOCkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZGlzYWJsZUltYWdlTAogICAgIC8vIEFsc28gbmVlZCB0byBtYWtlIHN1cmUgaW1hZ2Ug
bG9hZGluZyBpcyByZS1lbmFibGVkIGZvciBlYWNoIG5ldyB0ZXN0LgogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRl
QWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJv
b2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRp
dHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9u
IDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2Vi
Q29yZVN0YXRpc3RpY3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhU291cmNlUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJEb2N1bWVudFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJFZGl0aW5nRGVsZWdh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVZpZXcuaD4KQEAgLTE0Myw2ICsxNDQsOCBA
QCBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwZXJzaXN0ZW50CiAKIHN0YXRpYyBXZWJI
aXN0b3J5SXRlbSAqcHJldlRlc3RCRkl0ZW0gPSBuaWw7ICAvLyBjdXJyZW50IGIvZiBpdGVtIGF0
IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIHRlc3QKIAorc3RhdGljIFdlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jayAqZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrID0gW1tXZWJEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2sgYWxsb2NdIGluaXRdOworCiAjaWYgX19PQkpDMl9fCiBzdGF0
aWMgdm9pZCBzd2l6emxlQWxsTWV0aG9kcyhDbGFzcyBpbXBvc3RlciwgQ2xhc3Mgb3JpZ2luYWwp
CiB7CkBAIC0yODcsNyArMjkwLDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGVGb250cygpCiBXZWJW
aWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKIHsKICAgICBOU1JlY3QgcmVj
dCA9IE5TTWFrZVJlY3QoMCwgMCwgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdXaWR0aCwg
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdIZWlnaHQpOwotICAgIFdlYlZpZXcgKndlYlZp
ZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBmcmFtZU5hbWU6bmlsIGdy
b3VwTmFtZTpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKKyAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgZnJhbWVOYW1lOm5pbCBn
cm91cE5hbWU6QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIiBkZXZpY2VPcmllbnRhdGlvbkNs
aWVudDpkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tdOwogICAgICAgICAKICAgICBbd2ViVmll
dyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERl
bGVnYXRlOmZyYW1lTG9hZERlbGVnYXRlXTsKQEAgLTM0OSw3ICszNTIsNyBAQCB2b2lkIHRlc3RT
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvCiAgICAgXTsKIAogICAgIE5TQXV0b3JlbGVh
c2VQb29sICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07Ci0gICAgV2Vi
VmlldyAqd2ViVmlldyA9IFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0
IGZyYW1lTmFtZTpAIiIgZ3JvdXBOYW1lOkAiIl07CisgICAgV2ViVmlldyAqd2ViVmlldyA9IFtb
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGZyYW1lTmFtZTpAIiIgZ3Jv
dXBOYW1lOkAiIiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudDpkZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2tdOwogCiAgICAgTlNFbnVtZXJhdG9yICplbnVtZXJhdG9yID0gW2V4cHJlc3Npb25zIGtl
eUVudW1lcmF0b3JdOwogICAgIGlkIGV4cHJlc3Npb247CkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsOSArNDQsMTAgQEAK
ICNpbXBvcnQgPFdlYktpdC9XZWJBcHBsaWNhdGlvbkNhY2hlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V2ViQmFja0ZvcndhcmRMaXN0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQ29yZVN0YXRpc3RpY3Mu
aD4KKyNpbXBvcnQgPFdlYktpdC9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYkRhdGFTb3VyY2UuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhYmFzZU1hbmFn
ZXJQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJGcmFtZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1lVmlld1ByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg+CkBAIC0zMjAs
NiArMzIxLDE0IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGEKICAg
ICBbV2ViVmlldyBfc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbjpmb3JiaWRkZW4gZm9yVVJM
U2NoZW1lOihOU1N0cmluZyAqKXNjaGVtZUNGU3RyaW5nLmdldCgpXTsKIH0KIAordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlk
ZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBi
b29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIC8vIER1bXBSZW5kZXJU
cmVlIGNvbmZpZ3VyZWQgdGhlIFdlYlZpZXcgdG8gdXNlIE1vY2tEZXZpY2VPcmllbnRhdGlvbkNs
aWVudC4KKyAgICBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogY2xpZW50ID0gW1ttYWluRnJh
bWUgd2ViVmlld10gX2RldmljZU9yaWVudGF0aW9uQ2xpZW50XTsKKyAgICBXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2sqPihjbGllbnQpOworICAgIFttb2NrQ2xpZW50IHNldE9yaWVudGF0
aW9uV2l0aENhblByb3ZpZGVBbHBoYTpjYW5Qcm92aWRlQWxwaGEgYWxwaGE6YWxwaGEgY2FuUHJv
dmlkZUJldGE6Y2FuUHJvdmlkZUJldGEgYmV0YTpiZXRhIGNhblByb3ZpZGVHYW1tYTpjYW5Qcm92
aWRlR2FtbWEgZ2FtbWE6Z2FtbWFdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGRvdWJsZSBhY2N1cmFjeSkKIHsKICAgICBXZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3Np
dGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6
MCBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3VyYWN5OmFjY3VyYWN5
XTsKQEAgLTc1MCw3ICs3NTksNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0
TmV3V2luCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGY4RGF0YUNGKEFkb3B0Q0YsIEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHV0ZjhEYXRhKSk7CiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBiYXNlVVJMQ0YoQWRvcHRDRiwgSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFzZVVSTCkpOwogICAgIAotICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFt
ZU5hbWU6QCIiIGdyb3VwTmFtZTpAIiJdOworICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbW1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmcmFtZU5hbWU6QCIiIGdyb3VwTmFt
ZTpAIiIgZGV2aWNlT3JpZW50YXRpb25DbGllbnQ6MF07CiAKICAgICBib29sIGRvbmUgPSBmYWxz
ZTsKICAgICBBUElUZXN0RGVsZWdhdGUgKmRlbGVnYXRlID0gW1tBUElUZXN0RGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoQ29tcGxldGlvbkNvbmRpdGlvbjomZG9uZV07CkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAkocmV2aXNpb24gNjQyMDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgzLDYgKzY4Mywx
MiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVoCiAgICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnNldEVkaXRpbmdCZWhhdmlvcihtX2RydC0+d2ViUGFnZSgpLCBl
ZGl0aW5nQmVoYXZpb3IpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9v
bCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3Vi
bGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRp
b24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogewogICAgICBtX2lzR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24g
NjQyMDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzUsNiArMzc1LDEyIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGkKICAgICAgICAgd2ViVmlldy0+c2V0UG9s
aWN5RGVsZWdhdGUoMCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29s
IGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJs
ZSBnYW1tYSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlv
biBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRp
b24gbGF5b3V0IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5
b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHJldmlzaW9uIDY0MjA4KQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsMTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGF1c2VUcmFuc2l0aQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlk
ZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBi
b29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZm9yIERldmljZU9yaWVudGF0aW9uIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM1LgorfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKIHsKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gNjQyMDgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBteSAoJGxpbmtQ
cmVmZXRjaFN1cHBvcnQsICR0aHJlZURDYW52YXNTCiAgICAgJHN2Z1N1cHBvcnQsICRzdmdBbmlt
YXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBw
b3J0LCAkc3ZnRm9udHNTdXBwb3J0LAogICAgICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2
Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3ZWJTb2NrZXRzU3VwcG9ydCwgJHdlYlRpbWlu
Z1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd2Nzc1N1cHBvcnQsICR4aHRtbG1wU3VwcG9ydCwgJHdv
cmtlcnNTdXBwb3J0LAogICAgICR4cGF0aFN1cHBvcnQsICR4c2x0U3VwcG9ydCwgJGNvdmVyYWdl
U3VwcG9ydCwgJG5vdGlmaWNhdGlvbnNTdXBwb3J0LCAkYmxvYlNsaWNlU3VwcG9ydCwgJHRpbGVk
QmFja2luZ1N0b3JlU3VwcG9ydCwKLSAgICAkZmlsZVJlYWRlclN1cHBvcnQsICRmaWxlV3JpdGVy
U3VwcG9ydCwgJGZpbGVTeXN0ZW1TdXBwb3J0LCAkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCk7Cisg
ICAgJGZpbGVSZWFkZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQsICRmaWxlU3lzdGVtU3Vw
cG9ydCwgJGRpcmVjdG9yeVVwbG9hZFN1cHBvcnQsICRkZXZpY2VPcmllbnRhdGlvblN1cHBvcnQp
OwogCiBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gImxpbmstcHJlZmV0Y2giLCBk
ZXNjID0+ICJUb2dnbGUgcHJlIGZldGNoaW5nIHN1cHBvcnQiLApAQCAtMjA0LDYgKzIwNCw5IEBA
IG15IEBmZWF0dXJlcyA9ICgKIAogICAgIHsgb3B0aW9uID0+ICJmaWxlLXN5c3RlbSIsIGRlc2Mg
PT4gIlRvZ2dsZSBGaWxlU3lzdGVtIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
RklMRV9TWVNURU0iLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkZmlsZVN5c3RlbVN1cHBvcnQg
fSwKKworICAgIHsgb3B0aW9uID0+ICJkZXZpY2Utb3JpZW50YXRpb24iLCBkZXNjID0+ICJUb2dn
bGUgRGV2aWNlT3JpZW50YXRpb24gc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9E
RVZJQ0VfT1JJRU5UQVRJT04iLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkZGV2aWNlT3JpZW50
YXRpb25TdXBwb3J0IH0sCiApOwogCiAjIFVwZGF0ZSBkZWZhdWx0cyBmcm9tIFF0J3MgcHJvamVj
dCBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDIwOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA3LTE2ICBTdGV2ZSBCbG9j
ayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgTGF5b3V0VGVzdENvbnRyb2xsZXIgbWV0aG9kcyB0byB0
ZXN0IERldmljZU9yaWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTU4OQorCisgICAgICAgICogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQ6CisgICAgICAgICogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3Bl
cmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRGV2aWNlT3Jp
ZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9iYXNpYy1vcGVyYXRpb24uanM6IEFkZGVk
LgorCiAyMDEwLTA3LTI4ICBYaWFuemh1IFdhbmcgIDxwaG5peHd4ekBnbWFpbC5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3Bl
cmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoZSBiYXNpYyBvcGVyYXRpb24gb2YgRGV2aWNl
T3JpZW50YXRpb24gdXNpbmcgdGhlIG1vY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGRldmljZU9yaWVudGF0aW9uRXZlbnQuYWxwaGEgaXMgbW9ja0FscGhhCitQQVNT
IGRldmljZU9yaWVudGF0aW9uRXZlbnQuYmV0YSBpcyBtb2NrQmV0YQorUEFTUyBkZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmdhbW1hIGlzIG1vY2tHYW1tYQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0Rl
dmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFz
aWMtb3BlcmF0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvYmFzaWMtb3BlcmF0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9i
YXNpYy1vcGVyYXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2
aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0
cy9iYXNpYy1vcGVyYXRpb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK2Rlc2Ny
aXB0aW9uKCJUZXN0cyB0aGUgYmFzaWMgb3BlcmF0aW9uIG9mIERldmljZU9yaWVudGF0aW9uIHVz
aW5nIHRoZSBtb2NrLiIpOworCit2YXIgbW9ja0FscGhhID0gMS4xOwordmFyIG1vY2tCZXRhID0g
Mi4yOwordmFyIG1vY2tHYW1tYSA9IDMuMzsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrRGV2aWNlT3JpZW50YXRpb24o
dHJ1ZSwgbW9ja0FscGhhLCB0cnVlLCBtb2NrQmV0YSwgdHJ1ZSwgbW9ja0dhbW1hKTsKK2Vsc2UK
KyAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRl
c3RDb250cm9sbGVyJyk7CisKK3ZhciBkZXZpY2VPcmllbnRhdGlvbkV2ZW50Oword2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoImRldmljZW9yaWVudGF0aW9uIiwgZnVuY3Rpb24oZSkgeworICAgIGRl
dmljZU9yaWVudGF0aW9uRXZlbnQgPSBlOworICAgIHNob3VsZEJlKCdkZXZpY2VPcmllbnRhdGlv
bkV2ZW50LmFscGhhJywgJ21vY2tBbHBoYScpOworICAgIHNob3VsZEJlKCdkZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmJldGEnLCAnbW9ja0JldGEnKTsKKyAgICBzaG91bGRCZSgnZGV2aWNlT3JpZW50
YXRpb25FdmVudC5nYW1tYScsICdtb2NrR2FtbWEnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30p
OworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA2NDIw
OCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDkxLDYgKzEwOTEsNyBAQCBmYXN0L2RvbS9jbGllbnQtd2lkdGgtaGVpZ2h0LXF1aXJrcy5o
dG1sCiBmYXN0L2RvbS9jbGllbnQtd2lkdGgtaGVpZ2h0Lmh0bWwKIGZhc3QvZG9tL2Nzc1Rhcmdl
dC1jcmFzaC5odG1sCiBmYXN0L2RvbS9mcmFtZS1sb2FkaW5nLXZpYS1kb2N1bWVudC13cml0ZS5o
dG1sCitmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbAogZmFz
dC9kb20vRGV2aWNlT3JpZW50YXRpb24vY3JlYXRlLWV2ZW50Lmh0bWwKIGZhc3QvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uL29wdGlvbmFsLWV2ZW50LXByb3BlcnRpZXMuaHRtbAogZmFzdC9kb20vRGV2
aWNlT3JpZW50YXRpb24vd2luZG93LXByb3BlcnR5Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkCShyZXZpc2lvbiA2NDIwOCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgY2FudmFzL3BoaWxpcC90
ZXN0cy90eXBlLnByb3RvdHlwZS5odG1sCiBzdG9yYWdlL2luZGV4ZWRkYgogCiAjIFRoaXMgcG9y
dCBkb2Vzbid0IHN1cHBvcnQgRGV2aWNlT3JpZW50YXRpb24uCi1mYXN0L2RvbS9EZXZpY2VPcmll
bnRhdGlvbgorI2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKIAogIyBMaW5rIHByZWZldGNo
IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62930</attachid>
            <date>2010-07-29 02:31:58 -0700</date>
            <delta_ts>2010-07-29 03:00:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100729103155.patch</filename>
            <type>text/plain</type>
            <size>31180</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDI2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBob29rIHVwIHRoZSBuZXcgTGF5b3V0VGVz
dENvbnRyb2xsZXIgbWV0aG9kIHRvIFdlYktpdAorICAgICAgICBmb3IgYW55IHBsYXRmb3JtLiBU
aGlzIHdpbGwgYmUgZG9uZSBpbiBsYXRlciBwYXRjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxODEgdHJhY2tzIHRoaXMgZm9yIE1hYy4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24u
aHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6On5EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrOjpzZXRPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpsYXN0T3JpZW50YXRpb24pOgorCiAy
MDEwLTA3LTI4ICBLYXZpdGEgS2FuZXRrYXIgIDxra2FuZXRrYXJAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDY0
MjA4KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNDAxLDYg
KzQwMSw3IEBAIF9fWk43V2ViQ29yZTE2aXNFbmRPZlBhcmFncmFwaEVSS05TXzE1VmkKIF9fWk43
V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOUzBfOVdlYWtHQ01h
cElQTlNfMTBTdHJpbmdJbXBsRVBOUzBfOEpTU3RyaW5nRUVFUzVfCiBfX1pON1dlYkNvcmUxN0Ny
ZWRlbnRpYWxTdG9yYWdlM2dldEVSS05TXzE1UHJvdGVjdGlvblNwYWNlRQogX19aTjdXZWJDb3Jl
MTdET01JbXBsZW1lbnRhdGlvbjE0aXNUZXh0TUlNRVR5cGVFUktOU182U3RyaW5nRQorX19aTjdX
ZWJDb3JlMTdEZXZpY2VPcmllbnRhdGlvbjZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxN0ds
eXBoUGFnZVRyZWVOb2RlMTh0cmVlR2x5cGhQYWdlQ291bnRFdgogX19aTjdXZWJDb3JlMTdIVE1M
UGx1Z0luRWxlbWVudDExZ2V0TlBPYmplY3RFdgogX19aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJv
bGxlcjI2c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGVFdgpAQCAtNDg4LDYgKzQ4OSw4IEBAIF9f
Wk43V2ViQ29yZTI2Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUKIF9fWk43V2ViQ29yZTI2Y29u
dGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtFdgogX19aTjdXZWJDb3JlMjZ1c2VzVGVzdE1vZGVGb2N1
c1JpbmdDb2xvckV2CiBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMx
RU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYlJLTlNfNlN0cmluZ0UKK19fWk43V2ViQ29y
ZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrMTRzZXRPcmllbnRhdGlvbkVOM1dURjEwUGFz
c1JlZlB0cklOU18xN0RldmljZU9yaWVudGF0aW9uRUVFCitfX1pON1dlYkNvcmUyN0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9ja0MxRXYKIF9fWk43V2ViQ29yZTI3YXBwbGljYXRpb25Jc0Fkb2Jl
SW5zdGFsbGVyRXYKIF9fWk43V2ViQ29yZTI3Y29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzRXYK
IF9fWk43V2ViQ29yZTI3Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lRXYKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NDIwOCkKKysr
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTkwLDEwICsxMTkwLDEyIEBACiAJCTU0QzUwRjdCMEU4MDFERjMwMDk4MzJBMCAvKiBY
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsg
fTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9y
aWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLzsgfTsK
KwkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBFMUI0ODExRTRFRjRC
MDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OTBFMUI0QjExRTRFRjcwMDA2OUY3ODQgLyogSlNE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MEUxQjRBMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk1OTEzOTUzQjExMDc1ODQ1MDA4
M0VDNTUgLyogSk5JQnJpZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1OTEzOTUzQTExMDc1ODQ1MDA4M0VDNTUgLyogSk5JQnJpZGdlLmggKi87IH07
CiAJCTU5MTM5NTNEMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkxMzk1M0MxMTA3NTg0RTAwODNF
QzU1IC8qIEpOSUJyaWRnZS5jcHAgKi87IH07CisJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYwMyAv
KiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAzIC8qIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi87IH07CisJCTU5MzA5QTEzMTFGNEFFNkEwMDI1
MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAvKiBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1OTYyMjk3ODExMzNFRkQ3MDBEQzRDQkIgLyogR2VvbG9j
YXRpb25Qb3NpdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU5NjIyOTc3MTEzM0VGRDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0
aW9uQ2FjaGUuY3BwICovOyB9OwogCQk1OTYyMjk3QTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9j
YXRpb25Qb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlv
bkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTk5RTc1OTAxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5RTc1OEYxMTA1NUExRjAwRDkwNEZBIC8q
IEJyaWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMjAzLDcgKzEyMDUsNyBAQAogCQk1OUE4NjAwODExOURBRkExMDBERUYxRUYgLyogSlNE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OUE4NjAwNzExOURBRkExMDBERUYxRUYgLyogSlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmggKi87IH07CiAJCTU5QThGMUQ0MTFBNjk1MDgwMDFBQzM0QSAvKiBEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTlBOEYxRDMxMUE2OTUwODAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTU5QThGMUQ2MTFBNjk1MTMwMDFBQzM0QSAvKiBE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU5QThGMUQ1MTFBNjk1MTMwMDFBQzM0QSAvKiBEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKLQkJNTlBOEYxRDgxMUE2OTUyMDAwMUFDMzRBIC8q
IERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50
YXRpb25DbGllbnQuaCAqLzsgfTsKKwkJNTlBOEYxRDgxMUE2OTUyMDAwMUFDMzRBIC8qIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25D
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1OUE5RTdCMDExMDQ3NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTlFN0FGMTEwNDc1ODgw
MERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwICovOyB9OwogCQk1OUE5RTdCMjExMDQ3NTk0
MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE5RTdCMTExMDQ3NTk0MDBERkI0QzEgLyogSmF2YUluc3Rh
bmNlSlNDLmggKi87IH07CiAJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlFOCAvKiBCcmlkZ2VKU0Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlCNTk3
NzIxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgKi87IH07CkBAIC02OTY0LDYgKzY5
NjYsOCBAQAogCQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmllbnRhdGlv
bkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU5MTM5NTNBMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSk5JQnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU5MTM5NTNDMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSk5JQnJpZGdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBwYXRoID0gbW9jay9EZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5oOyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5NzcxMTMzRUZENzAwREM0Q0JCIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNh
Y2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTlFNzU4RjExMDU1QTFG
MDBEOTA0RkEgLyogQnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJy
aWRnZS5oOyBwYXRoID0gYnJpZGdlL0JyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTIwNDQsNiArMTIwNDgsOCBAQAogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyog
bW9jayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTkz
MDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICov
LAorCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBtb2NrOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTE5ODY4LDYgKzE5ODc0LDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAy
RUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBG
REY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxNzJF
MDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OTMw
OUExMzExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwODREMEUzRDExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODREMEUzRjExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVz
b3VyY2VzQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUIwNUMzMTFGQUUxNkMwMDRENjVG
NiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjI2Niw2
ICsyMjI3Myw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1
OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRG
NEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTkzMDlB
MTExMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwODREMEUzQzExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2Vz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NEQwRTNFMTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdS
ZXNvdXJjZXNDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODZBNDAwNjExRjZENkI3MDAy
Q0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDY0MjA4KQor
KysgV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksMTUgKzI5LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERldmljZU9y
aWVudGF0aW9uOworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOwogCiBjbGFzcyBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCB+RGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFVw
ZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAg
dmlydHVhbCBEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgPSAwOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7fQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDggQEAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpEZXZpY2VPcmllbgogICAgICwg
bV9jbGllbnQoY2xpZW50KQogICAgICwgbV90aW1lcih0aGlzLCAmRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOjp0aW1lckZpcmVkKQogeworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgbV9j
bGllbnQtPnNldENvbnRyb2xsZXIodGhpcyk7CiB9CiAKIHZvaWQgRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4q
IHRpbWVyKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkKKyAgICA6IG1fY29udHJv
bGxlcigwKQorICAgICwgbV90aW1lcih0aGlzLCAmRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
Ojp0aW1lckZpcmVkKQorICAgICwgbV9pc1VwZGF0aW5nKGZhbHNlKQoreworfQorCit2b2lkIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgbV9jb250cm9sbGVyID0gY29udHJvbGxl
cjsKKyAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIG1faXNVcGRhdGluZyA9IHRydWU7
Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcoKQor
eworICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOworICAgIG1fdGltZXIuc3RvcCgpOworfQorCit2
b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24oUGFzc1JlZlB0
cjxEZXZpY2VPcmllbnRhdGlvbj4gb3JpZW50YXRpb24pCit7CisgICAgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOworICAgIGlmIChtX2lzVXBkYXRpbmcgJiYgIW1fdGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jaz4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZt
X3RpbWVyKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5n
ZURldmljZU9yaWVudGF0aW9uKG1fb3JpZW50YXRpb24uZ2V0KCkpOworfQorCit9CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAorI2RlZmluZSBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2tfaAorCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNp
bmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7
CisKKy8vIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB1
c2VkIHRvIHRlc3QgdGhlIGZlYXR1cmUgaW4KKy8vIER1bXBSZW5kZXJUcmVlLiBFbWJlZGRlcnMg
c2hvdWxkIHNob3VsZCBjb25maWd1cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0aGlzCisvLyBj
bGllbnQgd2hlbiBydW5uaW5nIER1bXBSZW5kZXJUcmVlLgorY2xhc3MgRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrIDogcHVibGljIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKKworICAgIC8vIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyKik7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCBEZXZpY2VPcmllbnRh
dGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbi5nZXQo
KTsgfQorCisgICAgdm9pZCBzZXRPcmllbnRhdGlvbihQYXNzUmVmUHRyPERldmljZU9yaWVudGF0
aW9uPik7CisKK3ByaXZhdGU6CisgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jaz4qKTsKKworICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4gbV9v
cmllbnRhdGlvbjsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxl
cjsKKyAgICBUaW1lcjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+IG1fdGltZXI7CisgICAg
Ym9vbCBtX2lzVXBkYXRpbmc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaApJbmRleDogV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQy
NjYpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
NiBAQAorMjAxMC0wNy0yOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExheW91
dFRlc3RDb250cm9sbGVyIG1ldGhvZHMgdG8gdGVzdCBEZXZpY2VPcmllbnRhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODkKKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNl
dE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
b2NrRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgICogU2NyaXB0cy9idWls
ZC13ZWJraXQ6CisKIDIwMTAtMDctMjggIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4KSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzAsNiArOTcwLDI3IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIHNldERvbWFpblJlbGF4YXRpb25Gb3IKICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDYpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKKworICAgIGJvb2wgY2FuUHJvdmlkZUFscGhhID0gSlNWYWx1ZVRv
Qm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pOworICAgIGRvdWJsZSBhbHBoYSA9IEpTVmFs
dWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbik7CisgICAgQVNTRVJU
KCEqZXhjZXB0aW9uKTsKKyAgICBib29sIGNhblByb3ZpZGVCZXRhID0gSlNWYWx1ZVRvQm9vbGVh
bihjb250ZXh0LCBhcmd1bWVudHNbMl0pOworICAgIGRvdWJsZSBiZXRhID0gSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIGFyZ3VtZW50c1szXSwgZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoISpleGNl
cHRpb24pOworICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hID0gSlNWYWx1ZVRvQm9vbGVhbihjb250
ZXh0LCBhcmd1bWVudHNbNF0pOworICAgIGRvdWJsZSBnYW1tYSA9IEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBhcmd1bWVudHNbNV0sIGV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9u
KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRf
Y2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CisgICAgY29udHJvbGxlci0+c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGNhblByb3ZpZGVB
bHBoYSwgYWxwaGEsIGNhblByb3ZpZGVCZXRhLCBiZXRhLCBjYW5Qcm92aWRlR2FtbWEsIGdhbW1h
KTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3Rh
dGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25DYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAzKQpAQCAt
MTgyNCw2ICsxODQ1LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6
OgogICAgICAgICB7ICJzZXRJY29uRGF0YWJhc2VFbmFibGVkIiwgc2V0SWNvbkRhdGFiYXNlRW5h
YmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEphdmFTY3JpcHRQcm9maWxpbmdF
bmFibGVkIiwgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyIiwgc2V0TWFpbkZyYW1lSXNG
aXJzdFJlc3BvbmRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1vY2tEZXZpY2VP
cmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
biIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3QiLCBzZXROZXdXaW5kb3dzQ29weUJh
Y2tGb3J3YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDY0MjA4KQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZChib29sIHByb2ZpbGluZ0VuYWJsZWQpOwogICAgIHZvaWQgc2V0
SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0TWFp
bkZyYW1lSXNGaXJzdFJlc3BvbmRlcihib29sIGZsYWcpOworICAgIHZvaWQgc2V0TW9ja0Rldmlj
ZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2Fu
UHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdh
bW1hKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmlu
Z1JlZiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICB2b2lk
IHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0Miw2ICs0NDIsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGlz
YWJsZUltYWdlTAogICAgIC8vIEFsc28gbmVlZCB0byBtYWtlIHN1cmUgaW1hZ2UgbG9hZGluZyBp
cyByZS1lbmFibGVkIGZvciBlYWNoIG5ldyB0ZXN0LgogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRv
dWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJv
dmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
RGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91
YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0J
KHJldmlzaW9uIDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNiArMzIwLDEzIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGEKICAgICBbV2ViVmlldyBf
c2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbjpmb3JiaWRkZW4gZm9yVVJMU2NoZW1lOihOU1N0
cmluZyAqKXNjaGVtZUNGU3RyaW5nLmdldCgpXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3Vi
bGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3Zp
ZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIERl
dmljZU9yaWVudGF0aW9uIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM1LgorCit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91
YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIFdlYkdlb2xvY2F0aW9uUG9z
aXRpb24gKnBvc2l0aW9uID0gW1tXZWJHZW9sb2NhdGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0
aFRpbWVzdGFtcDowIGxhdGl0dWRlOmxhdGl0dWRlIGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJh
Y3k6YWNjdXJhY3ldOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDY0MjA4KQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY4Myw2ICs2ODMsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0RWRpdGluZ0JlaAogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRFZGl0
aW5nQmVoYXZpb3IobV9kcnQtPndlYlBhZ2UoKSwgZWRpdGluZ0JlaGF2aW9yKTsKIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2Fu
UHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBi
ZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIERldmljZU9yaWVudGF0aW9uIGxheW91dCB0ZXN0cy4KKyAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM1LgorfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBh
bGxvdykKIHsKICAgICAgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCA9IHRydWU7CkluZGV4
OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzc1LDYgKzM3NSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDdXN0
b21Qb2xpCiAgICAgICAgIHdlYlZpZXctPnNldFBvbGljeURlbGVnYXRlKDApOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Q
cm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJl
dGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEs
NiArMjcxLDEyIEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29s
IGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJs
ZSBnYW1tYSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlv
biBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRp
b24gbGF5b3V0IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJldmlzaW9u
IDY0MjA4KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29w
eSkKQEAgLTYxLDcgKzYxLDcgQEAgbXkgKCRsaW5rUHJlZmV0Y2hTdXBwb3J0LCAkdGhyZWVEQ2Fu
dmFzUwogICAgICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VT
dXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKICAg
ICAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0
LCAkd2ViU29ja2V0c1N1cHBvcnQsICR3ZWJUaW1pbmdTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdj
c3NTdXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBhdGhT
dXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25zU3Vw
cG9ydCwgJGJsb2JTbGljZVN1cHBvcnQsICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCi0gICAg
JGZpbGVSZWFkZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQsICRmaWxlU3lzdGVtU3VwcG9y
dCwgJGRpcmVjdG9yeVVwbG9hZFN1cHBvcnQpOworICAgICRmaWxlUmVhZGVyU3VwcG9ydCwgJGZp
bGVXcml0ZXJTdXBwb3J0LCAkZmlsZVN5c3RlbVN1cHBvcnQsICRkaXJlY3RvcnlVcGxvYWRTdXBw
b3J0LCAkZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKAogICAg
IHsgb3B0aW9uID0+ICJsaW5rLXByZWZldGNoIiwgZGVzYyA9PiAiVG9nZ2xlIHByZSBmZXRjaGlu
ZyBzdXBwb3J0IiwKQEAgLTIwNCw2ICsyMDQsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAKICAgICB7
IG9wdGlvbiA9PiAiZmlsZS1zeXN0ZW0iLCBkZXNjID0+ICJUb2dnbGUgRmlsZVN5c3RlbSBzdXBw
b3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZJTEVfU1lTVEVNIiwgZGVmYXVsdCA9PiAw
LCB2YWx1ZSA9PiBcJGZpbGVTeXN0ZW1TdXBwb3J0IH0sCisKKyAgICB7IG9wdGlvbiA9PiAiZGV2
aWNlLW9yaWVudGF0aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIERldmljZU9yaWVudGF0aW9uIHN1cHBv
cnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OIiwgZGVmYXVs
dCA9PiAwLCB2YWx1ZSA9PiBcJGRldmljZU9yaWVudGF0aW9uU3VwcG9ydCB9LAogKTsKIAogIyBV
cGRhdGUgZGVmYXVsdHMgZnJvbSBRdCdzIHByb2plY3QgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NjQyNjYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMC0wNy0yOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExh
eW91dFRlc3RDb250cm9sbGVyIG1ldGhvZHMgdG8gdGVzdCBEZXZpY2VPcmllbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODkKKworICAg
ICAgICAqIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2lj
LW9wZXJhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9EZXZpY2VPcmllbnRh
dGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvU2tpcHBlZDoKKwogMjAxMC0wNy0yOSAgQWxleCBOaWNvbGFvdSAgPGFuaWNv
bGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRp
b24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGUgYmFz
aWMgb3BlcmF0aW9uIG9mIERldmljZU9yaWVudGF0aW9uIHVzaW5nIHRoZSBtb2NrLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmFs
cGhhIGlzIG1vY2tBbHBoYQorUEFTUyBkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmJldGEgaXMgbW9j
a0JldGEKK1BBU1MgZGV2aWNlT3JpZW50YXRpb25FdmVudC5nYW1tYSBpcyBtb2NrR2FtbWEKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9i
YXNpYy1vcGVyYXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmll
bnRhdGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9iYXNpYy1v
cGVyYXRpb24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VP
cmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIyIEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhlIGJhc2ljIG9wZXJhdGlvbiBv
ZiBEZXZpY2VPcmllbnRhdGlvbiB1c2luZyB0aGUgbW9jay4iKTsKKwordmFyIG1vY2tBbHBoYSA9
IDEuMTsKK3ZhciBtb2NrQmV0YSA9IDIuMjsKK3ZhciBtb2NrR2FtbWEgPSAzLjM7CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
TW9ja0RldmljZU9yaWVudGF0aW9uKHRydWUsIG1vY2tBbHBoYSwgdHJ1ZSwgbW9ja0JldGEsIHRy
dWUsIG1vY2tHYW1tYSk7CitlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1
biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOworCit2YXIgZGV2aWNlT3JpZW50
YXRpb25FdmVudDsKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJkZXZpY2VvcmllbnRhdGlvbiIs
IGZ1bmN0aW9uKGUpIHsKKyAgICBkZXZpY2VPcmllbnRhdGlvbkV2ZW50ID0gZTsKKyAgICBzaG91
bGRCZSgnZGV2aWNlT3JpZW50YXRpb25FdmVudC5hbHBoYScsICdtb2NrQWxwaGEnKTsKKyAgICBz
aG91bGRCZSgnZGV2aWNlT3JpZW50YXRpb25FdmVudC5iZXRhJywgJ21vY2tCZXRhJyk7CisgICAg
c2hvdWxkQmUoJ2RldmljZU9yaWVudGF0aW9uRXZlbnQuZ2FtbWEnLCAnbW9ja0dhbW1hJyk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
d2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAkocmV2aXNpb24gNjQyMDgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tp
cHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTA5MSw2ICsxMDkxLDcgQEAgZmFzdC9kb20vY2xpZW50
LXdpZHRoLWhlaWdodC1xdWlya3MuaHRtbAogZmFzdC9kb20vY2xpZW50LXdpZHRoLWhlaWdodC5o
dG1sCiBmYXN0L2RvbS9jc3NUYXJnZXQtY3Jhc2guaHRtbAogZmFzdC9kb20vZnJhbWUtbG9hZGlu
Zy12aWEtZG9jdW1lbnQtd3JpdGUuaHRtbAorZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFz
aWMtb3BlcmF0aW9uLmh0bWwKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2NyZWF0ZS1ldmVu
dC5odG1sCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9vcHRpb25hbC1ldmVudC1wcm9wZXJ0
aWVzLmh0bWwKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3dpbmRvdy1wcm9wZXJ0eS5odG1s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62931</attachid>
            <date>2010-07-29 03:00:31 -0700</date>
            <delta_ts>2010-07-29 03:17:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100729110028.patch</filename>
            <type>text/plain</type>
            <size>35503</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDI2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBob29rIHVwIHRoZSBuZXcgTGF5b3V0VGVz
dENvbnRyb2xsZXIgbWV0aG9kIHRvIFdlYktpdAorICAgICAgICBmb3IgYW55IHBsYXRmb3JtLiBU
aGlzIHdpbGwgYmUgZG9uZSBpbiBsYXRlciBwYXRjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxODEgdHJhY2tzIHRoaXMgZm9yIE1hYy4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24u
aHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6On5EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcik6CisgICAgICAgICogZG9tL0RldmljZU9y
aWVudGF0aW9uLmNwcDoKKyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzZXRPcmllbnRhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnRpbWVyRmly
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
OjpsYXN0T3JpZW50YXRpb24pOgorCiAyMDEwLTA3LTI4ICBLYXZpdGEgS2FuZXRrYXIgIDxra2Fu
ZXRrYXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5leHAuaW4JKHJldmlzaW9uIDY0MjA4KQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtNDAxLDYgKzQwMSw3IEBAIF9fWk43V2ViQ29yZTE2aXNFbmRPZlBh
cmFncmFwaEVSS05TXzE1VmkKIF9fWk43V2ViQ29yZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5
RXhlY1N0YXRlRVJOUzBfOVdlYWtHQ01hcElQTlNfMTBTdHJpbmdJbXBsRVBOUzBfOEpTU3RyaW5n
RUVFUzVfCiBfX1pON1dlYkNvcmUxN0NyZWRlbnRpYWxTdG9yYWdlM2dldEVSS05TXzE1UHJvdGVj
dGlvblNwYWNlRQogX19aTjdXZWJDb3JlMTdET01JbXBsZW1lbnRhdGlvbjE0aXNUZXh0TUlNRVR5
cGVFUktOU182U3RyaW5nRQorX19aTjdXZWJDb3JlMTdEZXZpY2VPcmllbnRhdGlvbjZjcmVhdGVF
YmRiZGJkCiBfX1pON1dlYkNvcmUxN0dseXBoUGFnZVRyZWVOb2RlMTh0cmVlR2x5cGhQYWdlQ291
bnRFdgogX19aTjdXZWJDb3JlMTdIVE1MUGx1Z0luRWxlbWVudDExZ2V0TlBPYmplY3RFdgogX19a
TjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjI2c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGVF
dgpAQCAtNDg4LDYgKzQ4OSw4IEBAIF9fWk43V2ViQ29yZTI2Y29udGV4dE1lbnVJdGVtVGFnRm9u
dE1lbnUKIF9fWk43V2ViQ29yZTI2Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtFdgogX19aTjdX
ZWJDb3JlMjZ1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvckV2CiBfX1pON1dlYkNvcmUyN0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYlJL
TlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrMTRz
ZXRPcmllbnRhdGlvbkVOM1dURjEwUGFzc1JlZlB0cklOU18xN0RldmljZU9yaWVudGF0aW9uRUVF
CitfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9ja0MxRXYKIF9fWk43V2Vi
Q29yZTI3YXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFsbGVyRXYKIF9fWk43V2ViQ29yZTI3Y29udGV4
dE1lbnVJdGVtVGFnU2hvd0ZvbnRzRXYKIF9fWk43V2ViQ29yZTI3Y29udGV4dE1lbnVJdGVtVGFn
VW5kZXJsaW5lRXYKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkwLDEwICsxMTkwLDEyIEBACiAJCTU0QzUw
RjdCMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTRDNTBGN0EwRTgwMURG
MzAwOTgzMkEwIC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi87IH07CiAJCTU1MEEw
QkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTkwRTFCNDkxMUU0
RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2
aWNlT3JpZW50YXRpb24uaCAqLzsgfTsKKwkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8qIERl
dmljZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OTBFMUI0
QjExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MEUxQjRBMTFF
NEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwICovOyB9
OwogCQk1OTEzOTUzQjExMDc1ODQ1MDA4M0VDNTUgLyogSk5JQnJpZGdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTEzOTUzQTExMDc1ODQ1MDA4M0VD
NTUgLyogSk5JQnJpZGdlLmggKi87IH07CiAJCTU5MTM5NTNEMTEwNzU4NEUwMDgzRUM1NSAvKiBK
TklCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTkxMzk1M0MxMTA3NTg0RTAwODNFQzU1IC8qIEpOSUJyaWRnZS5jcHAgKi87IH07CisJCTU5
MzA5QTExMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkzMDlBMTAx
MUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi87IH07
CisJCTU5MzA5QTEzMTFGNEFFNkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MzA5
QTEyMTFGNEFFNkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OTYyMjk3ODEx
MzNFRkQ3MDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5NjIyOTc3MTEzM0VGRDcwMERD
NENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwICovOyB9OwogCQk1OTYyMjk3QTEx
MzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTYyMjk3OTExMzNFRkUyMDBEQzRD
QkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTk5RTc1OTAxMTA1NUExRjAwRDkwNEZBIC8qIEJy
aWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5
RTc1OEYxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjAzLDcgKzEyMDUsNyBAQAogCQk1OUE4NjAw
ODExOURBRkExMDBERUYxRUYgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4NjAwNzExOURBRkExMDBE
RUYxRUYgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggKi87IH07CiAJCTU5QThGMUQ0MTFB
Njk1MDgwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBOEYxRDMxMUE2OTUwODAw
MUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTU5QThG
MUQ2MTFBNjk1MTMwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QThGMUQ1MTFBNjk1
MTMwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKLQkJNTlB
OEYxRDgxMUE2OTUyMDAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFENzExQTY5NTIw
MDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCAqLzsgfTsKKwkJNTlBOEYxRDgx
MUE2OTUyMDAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMz
NEEgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OUE5RTdCMDExMDQ3NTg4MDBERkI0QzEgLyogSmF2
YUluc3RhbmNlSlNDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5QTlFN0FGMTEwNDc1ODgwMERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwICov
OyB9OwogCQk1OUE5RTdCMjExMDQ3NTk0MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE5RTdCMTExMDQ3
NTk0MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmggKi87IH07CiAJCTU5QjU5NzczMTEwODY1
NkIwMDcxNTlFOCAvKiBCcmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTlCNTk3NzIxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5j
cHAgKi87IH07CkBAIC02OTY0LDYgKzY5NjYsOCBAQAogCQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3
ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MTM5NTNBMTEwNzU4NDUwMDgzRUM1NSAv
KiBKTklCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSk5JQnJpZGdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MTM5NTNDMTEwNzU4NEUwMDgzRUM1
NSAvKiBKTklCcmlkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Sk5JQnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTAxMUY0
QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
Y3BwOyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oOyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5Nzcx
MTMzRUZENzAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1OTlFNzU4RjExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJyaWRnZS5oOyBwYXRoID0gYnJpZGdlL0JyaWRnZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwNDQsNiArMTIwNDgsOCBAQAogCQk1OUM3
N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyogbW9jayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5oICovLAorCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAv
KiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBt
b2NrOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE5ODY4LDYgKzE5ODc0LDcgQEAK
IAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1OTMwOUExMzExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODREMEUzRDExRjU4MTYx
MDAwODFFMUEgLyogU1ZHUmVzb3VyY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODREMEUzRjEx
RjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4NUIwNUMzMTFGQUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yMjI2Niw2ICsyMjI3Myw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1
OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTkzMDlBMTExMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODREMEUzQzExRjU4MTYx
MDAwODFFMUEgLyogU1ZHUmVzb3VyY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NEQwRTNF
MTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNvdXJjZXNDYWNoZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwODZBNDAwNjExRjZENkI3MDAyQ0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb24uY3BwCShy
ZXZpc2lvbiA2NDIwOCkKKysrIFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCiAKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9O
KQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+
IERldmljZU9yaWVudGF0aW9uOjpjcmVhdGUoKQpAQCAtODcsMyArODksNSBAQCBib29sIERldmlj
ZU9yaWVudGF0aW9uOjpjYW5Qcm92aWRlR2FtbWEoCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkluZGV4OiBXZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDY0MjA4KQorKysgV2ViQ29yZS9k
b20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5
LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERldmljZU9yaWVudGF0aW9uOwor
Y2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOwogCiBjbGFzcyBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRpb25DbGll
bnQoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCBEZXZp
Y2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7fQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAgRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpEZXZpY2VPcmllbgogICAgICwgbV9jbGllbnQoY2xp
ZW50KQogICAgICwgbV90aW1lcih0aGlzLCAmRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjp0
aW1lckZpcmVkKQogeworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgbV9jbGllbnQtPnNldENv
bnRyb2xsZXIodGhpcyk7CiB9CiAKIHZvaWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjp0
aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4qIHRpbWVyKQpJbmRl
eDogV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAJKHJldmlzaW9uIDY0MjA4KQor
KysgV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDEwICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRldmlj
ZU9yaWVudGF0aW9uRXZlbnQuaCIKIAotI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCi0K
ICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50
YXRpb24uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50
Ojp+RGV2aWNlT3JpZW50YXRpb25FdmVudCgpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21vY2sv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgorCisjaWYgRU5B
QkxFKERFVklDRV9PUklFTlRBVElPTikKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkKKyAgICA6IG1fY29udHJvbGxl
cigwKQorICAgICwgbV90aW1lcih0aGlzLCAmRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjp0
aW1lckZpcmVkKQorICAgICwgbV9pc1VwZGF0aW5nKGZhbHNlKQoreworfQorCit2b2lkIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsK
KyAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKK30KKwordm9pZCBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIG1faXNVcGRhdGluZyA9IHRydWU7Cit9
CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdG9wVXBkYXRpbmcoKQorewor
ICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOworICAgIG1fdGltZXIuc3RvcCgpOworfQorCit2b2lk
IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50YXRpb24oUGFzc1JlZlB0cjxE
ZXZpY2VPcmllbnRhdGlvbj4gb3JpZW50YXRpb24pCit7CisgICAgbV9vcmllbnRhdGlvbiA9IG9y
aWVudGF0aW9uOworICAgIGlmIChtX2lzVXBkYXRpbmcgJiYgIW1fdGltZXIuaXNBY3RpdmUoKSkK
KyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jaz4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3Rp
bWVyKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZURl
dmljZU9yaWVudGF0aW9uKG1fb3JpZW50YXRpb24uZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05F
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKKyNkZWZpbmUgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrX2gKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisj
aW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgor
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
OworCisvLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNlT3JpZW50YXRpb25DbGllbnQg
dXNlZCB0byB0ZXN0IHRoZSBmZWF0dXJlIGluCisvLyBEdW1wUmVuZGVyVHJlZS4gRW1iZWRkZXJz
IHNob3VsZCBzaG91bGQgY29uZmlndXJlIHRoZSBQYWdlIG9iamVjdCB0byB1c2UgdGhpcworLy8g
Y2xpZW50IHdoZW4gcnVubmluZyBEdW1wUmVuZGVyVHJlZS4KK2NsYXNzIERldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jayA6IHB1YmxpYyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6
CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CisKKyAgICAvLyBEZXZpY2VPcmll
bnRhdGlvbkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZpcnR1YWwgRGV2aWNlT3JpZW50
YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb24uZ2V0
KCk7IH0KKworICAgIHZvaWQgc2V0T3JpZW50YXRpb24oUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRh
dGlvbj4pOworCitwcml2YXRlOgorICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2s+Kik7CisKKyAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb24+IG1f
b3JpZW50YXRpb247CisgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBtX2NvbnRyb2xs
ZXI7CisgICAgVGltZXI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBtX3RpbWVyOworICAg
IGJvb2wgbV9pc1VwZGF0aW5nOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKSW5kZXg6IFdlYktpdFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0
MjY2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBMYXlv
dXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5CisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChz
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBTY3JpcHRz
L2J1aWxkLXdlYmtpdDoKKwogMjAxMC0wNy0yOCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNoaW5pY2hpcm8gSGFtYWppLgpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gNjQyMDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3MCw2ICs5NzAsMjcg
QEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0RG9tYWluUmVsYXhhdGlvbkZvcgogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0
TW9ja0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgNikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGEgPSBKU1Zh
bHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7CisgICAgZG91YmxlIGFscGhhID0g
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKKyAgICBB
U1NFUlQoISpleGNlcHRpb24pOworICAgIGJvb2wgY2FuUHJvdmlkZUJldGEgPSBKU1ZhbHVlVG9C
b29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1syXSk7CisgICAgZG91YmxlIGJldGEgPSBKU1ZhbHVl
VG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzNdLCBleGNlcHRpb24pOworICAgIEFTU0VSVCgh
KmV4Y2VwdGlvbik7CisgICAgYm9vbCBjYW5Qcm92aWRlR2FtbWEgPSBKU1ZhbHVlVG9Cb29sZWFu
KGNvbnRleHQsIGFyZ3VtZW50c1s0XSk7CisgICAgZG91YmxlIGdhbW1hID0gSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIGFyZ3VtZW50c1s1XSwgZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoISpleGNl
cHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVy
cHJldF9jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oY2FuUHJv
dmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlkZUJldGEsIGJldGEsIGNhblByb3ZpZGVHYW1tYSwg
Z2FtbWEpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQor
CiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDMp
CkBAIC0xODI0LDYgKzE4NDUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6CiAgICAgICAgIHsgInNldEljb25EYXRhYmFzZUVuYWJsZWQiLCBzZXRJY29uRGF0YWJh
c2VFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0SmF2YVNjcmlwdFByb2Zp
bGluZ0VuYWJsZWQiLCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIiLCBzZXRNYWluRnJh
bWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TW9ja0Rl
dmljZU9yaWVudGF0aW9uIiwgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRp
b25FcnJvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uIiwgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdCIsIHNldE5ld1dpbmRvd3ND
b3B5QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNjQy
MDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEph
dmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgcHJvZmlsaW5nRW5hYmxlZCk7CiAgICAgdm9p
ZCBzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBz
ZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wgZmxhZyk7CisgICAgdm9pZCBzZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9v
bCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3Vi
bGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpT
U3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
ZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwogICAg
IHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0
aCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDIwOCkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBAIExheW91dFRlc3RDb250cm9sbGVy
OjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0aG9kKCJmb3JjZVJlZFNlbGVjdGlvbkNv
bG9ycyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9yY2VSZWRTZWxlY3Rpb25Db2xvcnMpOwog
ICAgIGJpbmRNZXRob2QoInNldEVkaXRpbmdCZWhhdmlvciIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0RWRpdGluZ0JlaGF2aW9yKTsKIAorICAgIGJpbmRNZXRob2QoInNldE1vY2tEZXZpY2VP
cmllbnRhdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0
aW9uKTsKKwogICAgIGJpbmRNZXRob2QoInNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0
aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9s
b2NhdGlvbkVycm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25F
cnJvcik7CkBAIC0xMzEwLDYgKzEzMTIsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0RWRpdGluZ0JlaAogICAgICAgICBsb2dFcnJvclRvQ29uc29sZSgiUGFzc2VkIGludmFsaWQg
ZWRpdGluZyBiZWhhdmlvci4gU2hvdWxkIGJlICdtYWMnIG9yICd3aW4nLiIpOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMuCisgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDMzNS4KK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAg
ICAgcmVzdWx0LT5zZXROdWxsKCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9u
IDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4Miw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogCisgICAgLy8gRGV2aWNlT3JpZW50YXRpb24gcmVsYXRlZCBmdW5jdGlv
bnMKKyAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLyBHZW9sb2NhdGlvbiByZWxhdGVkIGZ1bmN0aW9u
cy4KICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkluZGV4OiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAJKHJldmlzaW9uIDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQyLDYgKzQ0
MiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaXNhYmxlSW1hZ2VMCiAgICAgLy8g
QWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSBpbWFnZSBsb2FkaW5nIGlzIHJlLWVuYWJsZWQgZm9yIGVh
Y2ggbmV3IHRlc3QuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZp
Y2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNh
blByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBn
YW1tYSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBs
YXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWNjdXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24g
bGF5b3V0IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNjQyMDgpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsMTMgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0RG9tYWluUmVsYQogICAgIFtXZWJWaWV3IF9zZXREb21haW5SZWxheGF0aW9u
Rm9yYmlkZGVuOmZvcmJpZGRlbiBmb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopc2NoZW1lQ0ZTdHJp
bmcuZ2V0KCldOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNl
T3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Q
cm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2Ft
bWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5
b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzAzMzUuCisKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWNjdXJhY3kpCiB7CiAgICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24gPSBb
W1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoVGltZXN0YW1wOjAgbGF0aXR1
ZGU6bGF0aXR1ZGUgbG9uZ2l0dWRlOmxvbmdpdHVkZSBhY2N1cmFjeTphY2N1cmFjeV07CkluZGV4
OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNjQyMDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjgzLDYgKzY4MywxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVo
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEVkaXRpbmdCZWhhdmlvcihtX2RydC0+
d2ViUGFnZSgpLCBlZGl0aW5nQmVoYXZpb3IpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJs
ZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlk
ZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2
aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogewogICAgICBtX2lz
R2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHJldmlz
aW9uIDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDggQEAgcHVibGljIHNs
b3RzOgogICAgIC8vIHdoaWNoIGlzIGEgTWFjLXNwZWNpZmljIHRlc3QuCiAgICAgdm9pZCBhZGRE
aXNhbGxvd2VkVVJMKGNvbnN0IFFTdHJpbmcmKSB7fQogCisgICAgdm9pZCBzZXRNb2NrRGV2aWNl
T3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Q
cm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2Ft
bWEpOworCiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgY29uc3Qg
UVN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihk
b3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAgICAg
dm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdyk7CkluZGV4OiBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHAJKHJldmlzaW9uIDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc1
LDYgKzM3NSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDdXN0b21Qb2xpCiAg
ICAgICAgIHdlYlZpZXctPnNldFBvbGljeURlbGVnYXRlKDApOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxw
aGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wg
Y2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3gu
Y3BwCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xh
eW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNiArMjcxLDEy
IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmll
bnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3Zp
ZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkK
K3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQg
dGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNj
dXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0
IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJldmlzaW9uIDY0MjA4KQor
KysgV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDcgKzYxLDcgQEAgbXkgKCRsaW5rUHJlZmV0Y2hTdXBwb3J0LCAkdGhyZWVEQ2FudmFzUwogICAg
ICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAk
c3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKICAgICAkc3ZnRm9y
ZWlnbk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd2ViU29j
a2V0c1N1cHBvcnQsICR3ZWJUaW1pbmdTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdjc3NTdXBwb3J0
LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBhdGhTdXBwb3J0LCAk
eHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25zU3VwcG9ydCwgJGJs
b2JTbGljZVN1cHBvcnQsICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCi0gICAgJGZpbGVSZWFk
ZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQsICRmaWxlU3lzdGVtU3VwcG9ydCwgJGRpcmVj
dG9yeVVwbG9hZFN1cHBvcnQpOworICAgICRmaWxlUmVhZGVyU3VwcG9ydCwgJGZpbGVXcml0ZXJT
dXBwb3J0LCAkZmlsZVN5c3RlbVN1cHBvcnQsICRkaXJlY3RvcnlVcGxvYWRTdXBwb3J0LCAkZGV2
aWNlT3JpZW50YXRpb25TdXBwb3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9u
ID0+ICJsaW5rLXByZWZldGNoIiwgZGVzYyA9PiAiVG9nZ2xlIHByZSBmZXRjaGluZyBzdXBwb3J0
IiwKQEAgLTIwNCw2ICsyMDQsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAKICAgICB7IG9wdGlvbiA9
PiAiZmlsZS1zeXN0ZW0iLCBkZXNjID0+ICJUb2dnbGUgRmlsZVN5c3RlbSBzdXBwb3J0IiwKICAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZJTEVfU1lTVEVNIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9
PiBcJGZpbGVTeXN0ZW1TdXBwb3J0IH0sCisKKyAgICB7IG9wdGlvbiA9PiAiZGV2aWNlLW9yaWVu
dGF0aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIERldmljZU9yaWVudGF0aW9uIHN1cHBvcnQiLAorICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OIiwgZGVmYXVsdCA9PiAwLCB2
YWx1ZSA9PiBcJGRldmljZU9yaWVudGF0aW9uU3VwcG9ydCB9LAogKTsKIAogIyBVcGRhdGUgZGVm
YXVsdHMgZnJvbSBRdCdzIHByb2plY3QgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQyNjYpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAor
MjAxMC0wNy0yOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExheW91dFRlc3RD
b250cm9sbGVyIG1ldGhvZHMgdG8gdGVzdCBEZXZpY2VPcmllbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODkKKworICAgICAgICAqIGZh
c3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3Jp
cHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvU2tpcHBlZDoKKwogMjAxMC0wNy0yOSAgQWxleCBOaWNvbGFvdSAgPGFuaWNvbGFvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24tZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0
aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGUgYmFzaWMgb3BlcmF0
aW9uIG9mIERldmljZU9yaWVudGF0aW9uIHVzaW5nIHRoZSBtb2NrLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmFscGhhIGlzIG1v
Y2tBbHBoYQorUEFTUyBkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmJldGEgaXMgbW9ja0JldGEKK1BB
U1MgZGV2aWNlT3JpZW50YXRpb25FdmVudC5nYW1tYSBpcyBtb2NrR2FtbWEKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVy
YXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9y
aWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEy
IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9z
Y3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9iYXNpYy1vcGVyYXRpb24u
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlv
bi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIyIEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhlIGJhc2ljIG9wZXJhdGlvbiBvZiBEZXZpY2VP
cmllbnRhdGlvbiB1c2luZyB0aGUgbW9jay4iKTsKKwordmFyIG1vY2tBbHBoYSA9IDEuMTsKK3Zh
ciBtb2NrQmV0YSA9IDIuMjsKK3ZhciBtb2NrR2FtbWEgPSAzLjM7CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0Rldmlj
ZU9yaWVudGF0aW9uKHRydWUsIG1vY2tBbHBoYSwgdHJ1ZSwgbW9ja0JldGEsIHRydWUsIG1vY2tH
YW1tYSk7CitlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0
IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOworCit2YXIgZGV2aWNlT3JpZW50YXRpb25FdmVu
dDsKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJkZXZpY2VvcmllbnRhdGlvbiIsIGZ1bmN0aW9u
KGUpIHsKKyAgICBkZXZpY2VPcmllbnRhdGlvbkV2ZW50ID0gZTsKKyAgICBzaG91bGRCZSgnZGV2
aWNlT3JpZW50YXRpb25FdmVudC5hbHBoYScsICdtb2NrQWxwaGEnKTsKKyAgICBzaG91bGRCZSgn
ZGV2aWNlT3JpZW50YXRpb25FdmVudC5iZXRhJywgJ21vY2tCZXRhJyk7CisgICAgc2hvdWxkQmUo
J2RldmljZU9yaWVudGF0aW9uRXZlbnQuZ2FtbWEnLCAnbW9ja0dhbW1hJyk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2luZG93LnN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAko
cmV2aXNpb24gNjQyMDgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29y
a2luZyBjb3B5KQpAQCAtMTA5MSw2ICsxMDkxLDcgQEAgZmFzdC9kb20vY2xpZW50LXdpZHRoLWhl
aWdodC1xdWlya3MuaHRtbAogZmFzdC9kb20vY2xpZW50LXdpZHRoLWhlaWdodC5odG1sCiBmYXN0
L2RvbS9jc3NUYXJnZXQtY3Jhc2guaHRtbAogZmFzdC9kb20vZnJhbWUtbG9hZGluZy12aWEtZG9j
dW1lbnQtd3JpdGUuaHRtbAorZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0
aW9uLmh0bWwKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2NyZWF0ZS1ldmVudC5odG1sCiBm
YXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9vcHRpb25hbC1ldmVudC1wcm9wZXJ0aWVzLmh0bWwK
IGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3dpbmRvdy1wcm9wZXJ0eS5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62934</attachid>
            <date>2010-07-29 03:17:43 -0700</date>
            <delta_ts>2010-07-30 03:12:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100729111740.patch</filename>
            <type>text/plain</type>
            <size>35253</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDI2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDctMjkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBob29rIHVwIHRoZSBuZXcgTGF5b3V0VGVz
dENvbnRyb2xsZXIgbWV0aG9kIHRvIFdlYktpdAorICAgICAgICBmb3IgYW55IHBsYXRmb3JtLiBU
aGlzIHdpbGwgYmUgZG9uZSBpbiBsYXRlciBwYXRjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxODEgdHJhY2tzIHRoaXMgZm9yIE1hYy4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24u
aHRtbAorCisgICAgICAgICogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dDo6fkRldmljZU9yaWVudGF0aW9uQ2xpZW50KToKKyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcjo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBkb20v
RGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJv
bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0
YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrOjpzZXRPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2s6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpsYXN0T3JpZW50YXRpb24pOgorCiAyMDEwLTA3
LTI4ICBLYXZpdGEgS2FuZXRrYXIgIDxra2FuZXRrYXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDY0MjA4KQor
KysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNDAxLDYgKzQwMSw3
IEBAIF9fWk43V2ViQ29yZTE2aXNFbmRPZlBhcmFncmFwaEVSS05TXzE1VmkKIF9fWk43V2ViQ29y
ZTE2anNTdHJpbmdTbG93Q2FzZUVQTjNKU0M5RXhlY1N0YXRlRVJOUzBfOVdlYWtHQ01hcElQTlNf
MTBTdHJpbmdJbXBsRVBOUzBfOEpTU3RyaW5nRUVFUzVfCiBfX1pON1dlYkNvcmUxN0NyZWRlbnRp
YWxTdG9yYWdlM2dldEVSS05TXzE1UHJvdGVjdGlvblNwYWNlRQogX19aTjdXZWJDb3JlMTdET01J
bXBsZW1lbnRhdGlvbjE0aXNUZXh0TUlNRVR5cGVFUktOU182U3RyaW5nRQorX19aTjdXZWJDb3Jl
MTdEZXZpY2VPcmllbnRhdGlvbjZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxN0dseXBoUGFn
ZVRyZWVOb2RlMTh0cmVlR2x5cGhQYWdlQ291bnRFdgogX19aTjdXZWJDb3JlMTdIVE1MUGx1Z0lu
RWxlbWVudDExZ2V0TlBPYmplY3RFdgogX19aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjI2
c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGVFdgpAQCAtNDg4LDYgKzQ4OSw4IEBAIF9fWk43V2Vi
Q29yZTI2Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUKIF9fWk43V2ViQ29yZTI2Y29udGV4dE1l
bnVJdGVtVGFnT3BlbkxpbmtFdgogX19aTjdXZWJDb3JlMjZ1c2VzVGVzdE1vZGVGb2N1c1JpbmdD
b2xvckV2CiBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RG
MTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYlJLTlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTI3RGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrMTRzZXRPcmllbnRhdGlvbkVOM1dURjEwUGFzc1JlZlB0
cklOU18xN0RldmljZU9yaWVudGF0aW9uRUVFCitfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9ja0MxRXYKIF9fWk43V2ViQ29yZTI3YXBwbGljYXRpb25Jc0Fkb2JlSW5zdGFs
bGVyRXYKIF9fWk43V2ViQ29yZTI3Y29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzRXYKIF9fWk43
V2ViQ29yZTI3Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lRXYKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTkwLDEwICsxMTkwLDEyIEBACiAJCTU0QzUwRjdCMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJ
NTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNE
NiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBF
MUI0ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLzsgfTsKKwkJNTkw
RTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBFMUI0ODExRTRFRjRCMDA2OUY3
ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1OTBFMUI0QjExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU5MEUxQjRBMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVu
dGF0aW9uRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk1OTEzOTUzQjExMDc1ODQ1MDA4M0VDNTUg
LyogSk5JQnJpZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OTEzOTUzQTExMDc1ODQ1MDA4M0VDNTUgLyogSk5JQnJpZGdlLmggKi87IH07CiAJCTU5
MTM5NTNEMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkxMzk1M0MxMTA3NTg0RTAwODNFQzU1IC8q
IEpOSUJyaWRnZS5jcHAgKi87IH07CisJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5jcHAgKi87IH07CisJCTU5MzA5QTEzMTFGNEFFNkEwMDI1MDYwMyAv
KiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAvKiBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1OTYyMjk3ODExMzNFRkQ3MDBEQzRDQkIgLyogR2VvbG9jYXRpb25Q
b3NpdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5NjIyOTc3MTEzM0VGRDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2Fj
aGUuY3BwICovOyB9OwogCQk1OTYyMjk3QTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Q
b3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTk5
RTc1OTAxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5RTc1OEYxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0x
MjAzLDcgKzEyMDUsNyBAQAogCQk1OUE4NjAwODExOURBRkExMDBERUYxRUYgLyogSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OUE4NjAwNzExOURBRkExMDBERUYxRUYgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2
ZW50LmggKi87IH07CiAJCTU5QThGMUQ0MTFBNjk1MDgwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTlBOEYxRDMxMUE2OTUwODAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5jcHAgKi87IH07CiAJCTU5QThGMUQ2MTFBNjk1MTMwMDFBQzM0QSAvKiBEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU5QThGMUQ1MTFBNjk1MTMwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIuaCAqLzsgfTsKLQkJNTlBOEYxRDgxMUE2OTUyMDAwMUFDMzRBIC8qIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25D
bGllbnQuaCAqLzsgfTsKKwkJNTlBOEYxRDgxMUE2OTUyMDAwMUFDMzRBIC8qIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OUE5
RTdCMDExMDQ3NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTlFN0FGMTEwNDc1ODgwMERGQjRD
MSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwICovOyB9OwogCQk1OUE5RTdCMjExMDQ3NTk0MDBERkI0
QzEgLyogSmF2YUluc3RhbmNlSlNDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OUE5RTdCMTExMDQ3NTk0MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlND
LmggKi87IH07CiAJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlFOCAvKiBCcmlkZ2VKU0MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlCNTk3NzIxMTA4
NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgKi87IH07CkBAIC02OTY0LDYgKzY5NjYsOCBA
QAogCQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGV2aWNl
T3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU5MTM5NTNBMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSk5JQnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU5MTM5NTNDMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSk5JQnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OTMwOUEx
MjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5o
OyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5NzcxMTMzRUZENzAwREM0Q0JCIC8qIEdlb2xvY2F0aW9u
UG9zaXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
ZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uUG9zaXRpb25DYWNo
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTlFNzU4RjExMDU1QTFGMDBEOTA0
RkEgLyogQnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJyaWRnZS5o
OyBwYXRoID0gYnJpZGdlL0JyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTIwNDQsNiArMTIwNDgsOCBAQAogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyogbW9jayAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTkzMDlBMTIx
MUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovLAorCQkJ
CTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
Y3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBtb2NrOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE5ODY4LDYgKzE5ODc0LDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5NTkg
LyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0RDZF
MDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxNzJFMDExMTM2
RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1OTMwOUExMzEx
RjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwODREMEUzRDExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwODREMEUzRjExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2Vz
Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUIwNUMzMTFGQUUxNkMwMDRENjVGNiAvKiBT
VkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjI2Niw2ICsyMjI3
Myw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBY
U0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAw
RUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTkzMDlBMTExMUY0
QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwODREMEUzQzExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2VzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA4NEQwRTNFMTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNvdXJj
ZXNDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODZBNDAwNjExRjZENkI3MDAyQ0VDNTMg
LyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBX
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDY0MjA4KQorKysgV2Vi
Q29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
MTUgKzI5LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERldmljZU9yaWVudGF0
aW9uOworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOwogCiBjbGFzcyBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRp
b25DbGllbnQoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5n
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CiAgICAgdmlydHVh
bCBEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgPSAwOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+RGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7fQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuaCIKIAotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0KICNpbmNsdWRlICJE
ZXZpY2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIgpAQCAtMzksNiArMzcsOCBAQCBE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OkRldmljZU9yaWVuCiAgICAgLCBtX2NsaWVudChj
bGllbnQpCiAgICAgLCBtX3RpbWVyKHRoaXMsICZEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6
OnRpbWVyRmlyZWQpCiB7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKKyAgICBtX2NsaWVudC0+c2V0
Q29udHJvbGxlcih0aGlzKTsKIH0KIAogdm9pZCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6
OnRpbWVyRmlyZWQoVGltZXI8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPiogdGltZXIpCkBA
IC0xMDUsNSArMTA1LDMgQEAgdm9pZCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmRpZENo
YQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKQpJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAJ
KHJldmlzaW9uIDY0MjA4KQorKysgV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDYgQEAKIAogI2luY2x1ZGUgIkRldmljZU9y
aWVudGF0aW9uLmgiCiAKLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIERldmljZU9yaWVudGF0aW9uRXZlbnQ6On5EZXZpY2VPcmllbnRhdGlv
bkV2ZW50KCkKQEAgLTU3LDUgKzU1LDMgQEAgdm9pZCBEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojpp
bml0RGV2aWNlTwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoREVWSUNFX09SSUVOVEFUSU9OKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0Rldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKKworI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCkK
KyAgICA6IG1fY29udHJvbGxlcigwKQorICAgICwgbV90aW1lcih0aGlzLCAmRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKQorICAgICwgbV9pc1VwZGF0aW5nKGZhbHNlKQor
eworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgbV9jb250cm9s
bGVyID0gY29udHJvbGxlcjsKKyAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKK30KKwordm9pZCBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIG1faXNV
cGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpz
dG9wVXBkYXRpbmcoKQoreworICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOworICAgIG1fdGltZXIu
c3RvcCgpOworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c2V0T3JpZW50
YXRpb24oUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4gb3JpZW50YXRpb24pCit7CisgICAg
bV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOworICAgIGlmIChtX2lzVXBkYXRpbmcgJiYgIW1f
dGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisK
K3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjp0aW1lckZpcmVkKFRpbWVyPERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGlt
ZXIsIHRpbWVyID09ICZtX3RpbWVyKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX2NvbnRy
b2xsZXItPmRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKG1fb3JpZW50YXRpb24uZ2V0KCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21vY2sv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2tfaAorI2RlZmluZSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tfaAor
CisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI7CisKKy8vIEEgbW9jayBpbXBsZW1l
bnRhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB1c2VkIHRvIHRlc3QgdGhlIGZlYXR1
cmUgaW4KKy8vIER1bXBSZW5kZXJUcmVlLiBFbWJlZGRlcnMgc2hvdWxkIHNob3VsZCBjb25maWd1
cmUgdGhlIFBhZ2Ugb2JqZWN0IHRvIHVzZSB0aGlzCisvLyBjbGllbnQgd2hlbiBydW5uaW5nIER1
bXBSZW5kZXJUcmVlLgorY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrIDogcHVibGlj
IERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2soKTsKKworICAgIC8vIERldmljZU9yaWVudGF0aW9uQ2xpZW50CisgICAgdmly
dHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKik7Cisg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVw
ZGF0aW5nKCk7CisgICAgdmlydHVhbCBEZXZpY2VPcmllbnRhdGlvbiogbGFzdE9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbi5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRP
cmllbnRhdGlvbihQYXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9uPik7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4qKTsK
KworICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvbj4gbV9vcmllbnRhdGlvbjsKKyAgICBEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKKyAgICBUaW1lcjxEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s+IG1fdGltZXI7CisgICAgYm9vbCBtX2lzVXBkYXRpbmc7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2tfaApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQyNjYpCisrKyBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wNy0yOSAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExheW91dFRlc3RDb250cm9sbGVyIG1ldGhv
ZHMgdG8gdGVzdCBEZXZpY2VPcmllbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tEZXZpY2VPcmllbnRhdGlv
bkNhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlv
bnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50
YXRpb24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3Jp
ZW50YXRpb24pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VP
cmllbnRhdGlvbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0Rldmlj
ZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29u
dHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2
aWNlT3JpZW50YXRpb24pOgorICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDEw
LTA3LTI4ICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDIw
OCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTcwLDYgKzk3MCwyNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBz
ZXREb21haW5SZWxheGF0aW9uRm9yCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25D
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50
Q291bnQgPCA2KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisKKyAgICBib29sIGNhblByb3ZpZGVBbHBoYSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwg
YXJndW1lbnRzWzBdKTsKKyAgICBkb3VibGUgYWxwaGEgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4
dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7Cisg
ICAgYm9vbCBjYW5Qcm92aWRlQmV0YSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1l
bnRzWzJdKTsKKyAgICBkb3VibGUgYmV0YSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1
bWVudHNbM10sIGV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKyAgICBib29s
IGNhblByb3ZpZGVHYW1tYSA9IEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzRd
KTsKKyAgICBkb3VibGUgZ2FtbWEgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRz
WzVdLCBleGNlcHRpb24pOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TGF5b3V0VGVzdENv
bnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xs
ZXItPnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihjYW5Qcm92aWRlQWxwaGEsIGFscGhhLCBjYW5Q
cm92aWRlQmV0YSwgYmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50IDwgMykKQEAgLTE4MjQsNiArMTg0NSw3IEBA
IEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAic2V0
SWNvbkRhdGFiYXNlRW5hYmxlZCIsIHNldEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCIsIHNldEphdmFT
Y3JpcHRQcm9maWxpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TWFp
bkZyYW1lSXNGaXJzdFJlc3BvbmRlciIsIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXJDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCBzZXRN
b2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2Nr
R2VvbG9jYXRpb25FcnJvciIsIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE5ld1dpbmRvd3ND
b3B5QmFja0ZvcndhcmRMaXN0Iiwgc2V0TmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3RDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4
LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJs
ZWQoYm9vbCBwcm9maWxpbmdFbmFibGVkKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5BY2Nl
c3NDbGlwYm9hcmQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldE1haW5GcmFtZUlzRmlyc3RSZXNw
b25kZXIoYm9vbCBmbGFnKTsKKyAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29s
IGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3Vi
bGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAgICAgdm9pZCBz
ZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAg
ICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNl
clN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDY0MjA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjQsNiArMTY0LDggQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAog
ICAgIGJpbmRNZXRob2QoImZvcmNlUmVkU2VsZWN0aW9uQ29sb3JzIiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpmb3JjZVJlZFNlbGVjdGlvbkNvbG9ycyk7CiAgICAgYmluZE1ldGhvZCgic2V0RWRp
dGluZ0JlaGF2aW9yIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVoYXZpb3Ip
OwogCisgICAgYmluZE1ldGhvZCgic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgJkxheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOworCiAgICAgYmluZE1ldGhv
ZCgic2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKTsKQEAgLTEzMTAsNiArMTMx
MiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5nQmVoCiAgICAgICAg
IGxvZ0Vycm9yVG9Db25zb2xlKCJQYXNzZWQgaW52YWxpZCBlZGl0aW5nIGJlaGF2aW9yLiBTaG91
bGQgYmUgJ21hYycgb3IgJ3dpbicuIik7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIERl
dmljZU9yaWVudGF0aW9uIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM1LgorfQorCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsK
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNjQyMDgpCisrKyBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yODIsNiArMjgyLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkVXNlclNjcmlw
dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBhZGRVc2Vy
U3R5bGVTaGVldChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICAv
LyBEZXZpY2VPcmllbnRhdGlvbiByZWxhdGVkIGZ1bmN0aW9ucworICAgIHZvaWQgc2V0TW9ja0Rl
dmljZU9yaWVudGF0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwog
ICAgIC8vIEdlb2xvY2F0aW9uIHJlbGF0ZWQgZnVuY3Rpb25zLgogICAgIHZvaWQgc2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAg
ICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gNjQyMDgp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNiArNDQyLDEyIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmRpc2FibGVJbWFnZUwKICAgICAvLyBBbHNvIG5lZWQgdG8gbWFrZSBzdXJl
IGltYWdlIGxvYWRpbmcgaXMgcmUtZW5hYmxlZCBmb3IgZWFjaCBuZXcgdGVzdC4KIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2Fu
UHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBi
ZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIERldmljZU9yaWVudGF0aW9uIGxheW91dCB0ZXN0cy4KKyAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM1LgorfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA2NDIwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzIwLDYgKzMyMCwxMyBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXREb21haW5SZWxh
CiAgICAgW1dlYlZpZXcgX3NldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW46Zm9yYmlkZGVuIGZv
clVSTFNjaGVtZTooTlNTdHJpbmcgKilzY2hlbWVDRlN0cmluZy5nZXQoKV07CiB9CiAKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblBy
b3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0
YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkKK3sKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDMzNS4KKworfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKIHsKICAgICBX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlv
biBhbGxvY10gaW5pdFdpdGhUaW1lc3RhbXA6MCBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6
bG9uZ2l0dWRlIGFjY3VyYWN5OmFjY3VyYWN5XTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCShyZXZp
c2lvbiA2NDIwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNiArNjgzLDEyIEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEVkaXRpbmdCZWgKICAgICBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0RWRpdGluZ0JlaGF2aW9yKG1fZHJ0LT53ZWJQYWdlKCksIGVkaXRpbmdCZWhh
dmlvcik7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmll
bnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3Zp
ZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkK
K3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQg
dGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiB7CiAgICAgIG1faXNHZW9sb2NhdGlvblBlcm1pc3Npb25T
ZXQgPSB0cnVlOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gNjQyMDgpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE5Nyw2ICsxOTcsOCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgLy8gd2hpY2ggaXMg
YSBNYWMtc3BlY2lmaWMgdGVzdC4KICAgICB2b2lkIGFkZERpc2FsbG93ZWRVUkwoY29uc3QgUVN0
cmluZyYpIHt9CiAKKyAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblBy
b3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0
YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CisKICAgICB2b2lkIHNldE1v
Y2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKICAg
ICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91Ymxl
IGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbihib29sIGFsbG93KTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24g
NjQyMDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzUsNiArMzc1LDEyIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEN1c3RvbVBvbGkKICAgICAgICAgd2ViVmlldy0+c2V0UG9s
aWN5RGVsZWdhdGUoMCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29s
IGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJs
ZSBnYW1tYSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlv
biBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRp
b24gbGF5b3V0IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5
b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHJldmlzaW9uIDY0MjA4KQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsMTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGF1c2VUcmFuc2l0aQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlk
ZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBi
b29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZm9yIERldmljZU9yaWVudGF0aW9uIGxheW91dCB0ZXN0cy4KKyAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMzM1LgorfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKIHsKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gNjQyMDgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBteSAoJGxpbmtQ
cmVmZXRjaFN1cHBvcnQsICR0aHJlZURDYW52YXNTCiAgICAgJHN2Z1N1cHBvcnQsICRzdmdBbmlt
YXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBw
b3J0LCAkc3ZnRm9udHNTdXBwb3J0LAogICAgICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2
Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3ZWJTb2NrZXRzU3VwcG9ydCwgJHdlYlRpbWlu
Z1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkd2Nzc1N1cHBvcnQsICR4aHRtbG1wU3VwcG9ydCwgJHdv
cmtlcnNTdXBwb3J0LAogICAgICR4cGF0aFN1cHBvcnQsICR4c2x0U3VwcG9ydCwgJGNvdmVyYWdl
U3VwcG9ydCwgJG5vdGlmaWNhdGlvbnNTdXBwb3J0LCAkYmxvYlNsaWNlU3VwcG9ydCwgJHRpbGVk
QmFja2luZ1N0b3JlU3VwcG9ydCwKLSAgICAkZmlsZVJlYWRlclN1cHBvcnQsICRmaWxlV3JpdGVy
U3VwcG9ydCwgJGZpbGVTeXN0ZW1TdXBwb3J0LCAkZGlyZWN0b3J5VXBsb2FkU3VwcG9ydCk7Cisg
ICAgJGZpbGVSZWFkZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQsICRmaWxlU3lzdGVtU3Vw
cG9ydCwgJGRpcmVjdG9yeVVwbG9hZFN1cHBvcnQsICRkZXZpY2VPcmllbnRhdGlvblN1cHBvcnQp
OwogCiBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gImxpbmstcHJlZmV0Y2giLCBk
ZXNjID0+ICJUb2dnbGUgcHJlIGZldGNoaW5nIHN1cHBvcnQiLApAQCAtMjA0LDYgKzIwNCw5IEBA
IG15IEBmZWF0dXJlcyA9ICgKIAogICAgIHsgb3B0aW9uID0+ICJmaWxlLXN5c3RlbSIsIGRlc2Mg
PT4gIlRvZ2dsZSBGaWxlU3lzdGVtIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
RklMRV9TWVNURU0iLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkZmlsZVN5c3RlbVN1cHBvcnQg
fSwKKworICAgIHsgb3B0aW9uID0+ICJkZXZpY2Utb3JpZW50YXRpb24iLCBkZXNjID0+ICJUb2dn
bGUgRGV2aWNlT3JpZW50YXRpb24gc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9E
RVZJQ0VfT1JJRU5UQVRJT04iLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkZGV2aWNlT3JpZW50
YXRpb25TdXBwb3J0IH0sCiApOwogCiAjIFVwZGF0ZSBkZWZhdWx0cyBmcm9tIFF0J3MgcHJvamVj
dCBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDI2NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA3LTI5ICBTdGV2ZSBCbG9j
ayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgTGF5b3V0VGVzdENvbnRyb2xsZXIgbWV0aG9kcyB0byB0
ZXN0IERldmljZU9yaWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zOTU4OQorCisgICAgICAgICogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRp
b24vYmFzaWMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9iYXNpYy1vcGVyYXRp
b24uanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorCiAyMDEwLTA3
LTI5ICBBbGV4IE5pY29sYW91ICA8YW5pY29sYW9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9y
aWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTIgQEAKK1Rlc3RzIHRoZSBiYXNpYyBvcGVyYXRpb24gb2YgRGV2aWNlT3JpZW50YXRp
b24gdXNpbmcgdGhlIG1vY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGRldmljZU9yaWVudGF0aW9uRXZlbnQuYWxwaGEgaXMgbW9ja0FscGhhCitQQVNTIGRldmljZU9y
aWVudGF0aW9uRXZlbnQuYmV0YSBpcyBtb2NrQmV0YQorUEFTUyBkZXZpY2VPcmllbnRhdGlvbkV2
ZW50LmdhbW1hIGlzIG1vY2tHYW1tYQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVu
dGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0
aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYmFzaWMt
b3BlcmF0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9iYXNpYy1vcGVy
YXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50
YXRpb24vc2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3NjcmlwdC10ZXN0cy9iYXNpYy1v
cGVyYXRpb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK2Rlc2NyaXB0aW9uKCJU
ZXN0cyB0aGUgYmFzaWMgb3BlcmF0aW9uIG9mIERldmljZU9yaWVudGF0aW9uIHVzaW5nIHRoZSBt
b2NrLiIpOworCit2YXIgbW9ja0FscGhhID0gMS4xOwordmFyIG1vY2tCZXRhID0gMi4yOwordmFy
IG1vY2tHYW1tYSA9IDMuMzsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNb2NrRGV2aWNlT3JpZW50YXRpb24odHJ1ZSwgbW9j
a0FscGhhLCB0cnVlLCBtb2NrQmV0YSwgdHJ1ZSwgbW9ja0dhbW1hKTsKK2Vsc2UKKyAgICBkZWJ1
ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIExheW91dFRlc3RDb250cm9s
bGVyJyk7CisKK3ZhciBkZXZpY2VPcmllbnRhdGlvbkV2ZW50Oword2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoImRldmljZW9yaWVudGF0aW9uIiwgZnVuY3Rpb24oZSkgeworICAgIGRldmljZU9yaWVu
dGF0aW9uRXZlbnQgPSBlOworICAgIHNob3VsZEJlKCdkZXZpY2VPcmllbnRhdGlvbkV2ZW50LmFs
cGhhJywgJ21vY2tBbHBoYScpOworICAgIHNob3VsZEJlKCdkZXZpY2VPcmllbnRhdGlvbkV2ZW50
LmJldGEnLCAnbW9ja0JldGEnKTsKKyAgICBzaG91bGRCZSgnZGV2aWNlT3JpZW50YXRpb25FdmVu
dC5nYW1tYScsICdtb2NrR2FtbWEnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCit3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCShyZXZpc2lvbiA2NDIwOCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xMDkxLDYg
KzEwOTEsNyBAQCBmYXN0L2RvbS9jbGllbnQtd2lkdGgtaGVpZ2h0LXF1aXJrcy5odG1sCiBmYXN0
L2RvbS9jbGllbnQtd2lkdGgtaGVpZ2h0Lmh0bWwKIGZhc3QvZG9tL2Nzc1RhcmdldC1jcmFzaC5o
dG1sCiBmYXN0L2RvbS9mcmFtZS1sb2FkaW5nLXZpYS1kb2N1bWVudC13cml0ZS5odG1sCitmYXN0
L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbAogZmFzdC9kb20vRGV2
aWNlT3JpZW50YXRpb24vY3JlYXRlLWV2ZW50Lmh0bWwKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0
aW9uL29wdGlvbmFsLWV2ZW50LXByb3BlcnRpZXMuaHRtbAogZmFzdC9kb20vRGV2aWNlT3JpZW50
YXRpb24vd2luZG93LXByb3BlcnR5Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63042</attachid>
            <date>2010-07-30 03:13:00 -0700</date>
            <delta_ts>2010-07-30 05:45:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100730111258.patch</filename>
            <type>text/plain</type>
            <size>39140</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDM0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMDctMzAgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBob29rIHVwIHRoZSBuZXcgTGF5b3V0VGVz
dENvbnRyb2xsZXIgbWV0aG9kIHRvIFdlYktpdAorICAgICAgICBmb3IgYW55IHBsYXRmb3JtLiBU
aGlzIHdpbGwgYmUgZG9uZSBpbiBsYXRlciBwYXRjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxODEgdHJhY2tzIHRoaXMgZm9yIE1hYy4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24u
aHRtbAorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6On5EZXZpY2VP
cmllbnRhdGlvbkNsaWVudCk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6
OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcik6CisgICAgICAgICogZG9tL0RldmljZU9yaWVu
dGF0aW9uRXZlbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2s6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RvcFVw
ZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6
c2V0T3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jazo6bGFzdE9yaWVudGF0aW9uKToKKwogMjAxMC0wNy0yOSAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA2NDM0MikKKysrIFdlYkNvcmUvQW5kcm9pZC5t
awkod29ya2luZyBjb3B5KQpAQCAtNTE2LDYgKzUxNiw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAk
KExPQ0FMX1NSQ19GSUxFUykgXAogCXBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwIFwKIAlwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFk
ZXIuY3BwIFwKIAlcCisJcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
Y3BwIFwKIAlwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIFwKIAlcCiAJ
cGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIFwKSW5kZXg6
IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gNjQzNDIpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xMjc1LDYgKzEyNzUsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCiAKKyAgICBwbGF0Zm9y
bS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAKICAgICBwbGF0Zm9ybS9tb2Nr
L0dlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwCiAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNjQzNDIpCisr
KyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xODk3LDYgKzE4OTcs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIFwKIAlXZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uU2VydmljZU1vY2suY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25T
ZXJ2aWNlTW9jay5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmggXApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCShyZXZpc2lvbiA2NDM0MikKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTQwMiw2ICs0MDIsNyBAQCBfX1pON1dlYkNvcmUxNmlzRW5kT2ZQYXJhZ3Jh
cGhFUktOU18xNVZpCiBfX1pON1dlYkNvcmUxNmpzU3RyaW5nU2xvd0Nhc2VFUE4zSlNDOUV4ZWNT
dGF0ZUVSTlMwXzlXZWFrR0NNYXBJUE5TXzEwU3RyaW5nSW1wbEVQTlMwXzhKU1N0cmluZ0VFRVM1
XwogX19aTjdXZWJDb3JlMTdDcmVkZW50aWFsU3RvcmFnZTNnZXRFUktOU18xNVByb3RlY3Rpb25T
cGFjZUUKIF9fWk43V2ViQ29yZTE3RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVUeXBlRVJL
TlNfNlN0cmluZ0UKK19fWk43V2ViQ29yZTE3RGV2aWNlT3JpZW50YXRpb242Y3JlYXRlRWJkYmRi
ZAogX19aTjdXZWJDb3JlMTdHbHlwaFBhZ2VUcmVlTm9kZTE4dHJlZUdseXBoUGFnZUNvdW50RXYK
IF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxMWdldE5QT2JqZWN0RXYKIF9fWk43V2Vi
Q29yZTE3SGlzdG9yeUNvbnRyb2xsZXIyNnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlRXYKQEAg
LTQ5MCw2ICs0OTEsOCBAQCBfX1pON1dlYkNvcmUyNmNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51
CiBfX1pON1dlYkNvcmUyNmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rRXYKIF9fWk43V2ViQ29y
ZTI2dXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3JFdgogX19aTjdXZWJDb3JlMjdDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb25DMUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWJSS05TXzZT
dHJpbmdFCitfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTdEZXZpY2VPcmllbnRhdGlvbkVFRQorX19a
TjdXZWJDb3JlMjdEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tDMUV2CiBfX1pON1dlYkNvcmUy
N2FwcGxpY2F0aW9uSXNBZG9iZUluc3RhbGxlckV2CiBfX1pON1dlYkNvcmUyN2NvbnRleHRNZW51
SXRlbVRhZ1Nob3dGb250c0V2CiBfX1pON1dlYkNvcmUyN2NvbnRleHRNZW51SXRlbVRhZ1VuZGVy
bGluZUV2CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjQzNDIpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMzAxMiw2ICszMDEyLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9Mb2dnaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL05vdEltcGxlbWVudGVkLmgnLApJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA2NDM0
MikKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTkxMiw2ICs5MTIs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9MaW5rSGFzaC5jcHAgXAogICAgIHBsYXRm
b3JtL0xvZ2dpbmcuY3BwIFwKICAgICBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBcCisg
ICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIFwKICAgICBw
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIFwKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgXAogICAgIHBsYXRmb3JtL25l
dHdvcmsvQ3JlZGVudGlhbC5jcHAgXApAQCAtMTYzMCw2ICsxNjMxLDcgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuaCBcCiAgICAgcGxhdGZvcm0vR2VvbG9jYXRpb25T
ZXJ2aWNlLmggXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIFwK
KyAgICBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIFwKICAgICBw
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBcCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDY0MzQyKQor
KysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjgxNzIsNiArMjgxNzIsMTQgQEAKIAkJCQlOYW1lPSJtb2NrIg0KIAkJCQk+DQogCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG1vY2tcRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxtb2NrXERldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG1vY2tcR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAiDQogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gNjQzNDIpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE5MCwxMCArMTE5MCwxMiBAQAog
CQk1NEM1MEY3QjBFODAxREYzMDA5ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU0QzUwRjdB
MEU4MDFERjMwMDk4MzJBMCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwICovOyB9Owog
CQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3
MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTU5MEUx
QjQ5MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNDgxMUU0RUY0QjAwNjlGNzg0
IC8qIERldmljZU9yaWVudGF0aW9uLmggKi87IH07CisJCTU5MEUxQjQ5MTFFNEVGNEIwMDY5Rjc4
NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTkwRTFCNDgxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTkwRTFCNEIxMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBF
MUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNw
cCAqLzsgfTsKIAkJNTkxMzk1M0IxMTA3NTg0NTAwODNFQzU1IC8qIEpOSUJyaWRnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkxMzk1M0ExMTA3NTg0
NTAwODNFQzU1IC8qIEpOSUJyaWRnZS5oICovOyB9OwogCQk1OTEzOTUzRDExMDc1ODRFMDA4M0VD
NTUgLyogSk5JQnJpZGdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU5MTM5NTNDMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3BwICovOyB9
OworCQk1OTMwOUExMTExRjRBRTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3Bw
ICovOyB9OworCQk1OTMwOUExMzExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTk2
MjI5NzgxMTMzRUZENzAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTYyMjk3NzExMzNF
RkQ3MDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcCAqLzsgfTsKIAkJNTk2
MjI5N0ExMTMzRUZFMjAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk2MjI5NzkxMTMzRUZF
MjAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU5OUU3NTkwMTEwNTVBMUYwMEQ5MDRG
QSAvKiBCcmlkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU5OUU3NThGMTEwNTVBMUYwMEQ5MDRGQSAvKiBCcmlkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIwMyw3ICsxMjA1LDcgQEAKIAkJ
NTlBODYwMDgxMTlEQUZBMTAwREVGMUVGIC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBODYwMDcxMTlE
QUZBMTAwREVGMUVGIC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5oICovOyB9OwogCQk1OUE4
RjFENDExQTY5NTA4MDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QThGMUQzMTFB
Njk1MDgwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwICovOyB9Owog
CQk1OUE4RjFENjExQTY5NTEzMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFE
NTExQTY5NTEzMDAxQUMzNEEgLyogRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmggKi87IH07
Ci0JCTU5QThGMUQ4MTFBNjk1MjAwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBOEYxRDcx
MUE2OTUyMDAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggKi87IH07CisJCTU5
QThGMUQ4MTFBNjk1MjAwMDFBQzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBOEYxRDcxMUE2OTUy
MDAwMUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTlBOUU3QjAxMTA0NzU4ODAwREZCNEMx
IC8qIEphdmFJbnN0YW5jZUpTQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OUE5RTdBRjExMDQ3NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlND
LmNwcCAqLzsgfTsKIAkJNTlBOUU3QjIxMTA0NzU5NDAwREZCNEMxIC8qIEphdmFJbnN0YW5jZUpT
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBOUU3
QjExMTA0NzU5NDAwREZCNEMxIC8qIEphdmFJbnN0YW5jZUpTQy5oICovOyB9OwogCQk1OUI1OTc3
MzExMDg2NTZCMDA3MTU5RTggLyogQnJpZGdlSlNDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QjU5NzcyMTEwODY1NkIwMDcxNTlFOCAvKiBCcmlk
Z2VKU0MuY3BwICovOyB9OwpAQCAtNjk2NCw2ICs2OTY2LDggQEAKIAkJNTkwRTFCNEExMUU0RUY3
MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTEzOTUzQTExMDc1ODQ1MDA4
M0VDNTUgLyogSk5JQnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpO
SUJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTEzOTUzQzExMDc1ODRF
MDA4M0VDNTUgLyogSk5JQnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpOSUJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5MzA5
QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8q
IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgcGF0aCA9IG1vY2svRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5
NjIyOTc3MTEzM0VGRDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvbG9jYXRpb25Qb3NpdGlvbkNh
Y2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5NzkxMTMzRUZFMjAw
REM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTk5RTc1OEYxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCcmlkZ2UuaDsgcGF0aCA9IGJyaWRnZS9Ccmlk
Z2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMDQ0LDYgKzEyMDQ4LDggQEAK
IAkJNTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1vY2sgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAvKiBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKKwkJCQk1OTMwOUExMDExRjRBRTU4MDAy
NTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAqLywKIAkJCSk7CiAJCQlu
YW1lID0gbW9jazsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xOTg2OCw2ICsxOTg3
NCw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29t
TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTkzMDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8qIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0RDBFM0Qx
MUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0
RDBFM0YxMUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlc0NhY2hlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODVCMDVDMzExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjIyNjYsNiArMjIyNzMsNyBAQAogCQkJCTkzRjE5QjA1
MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg0RDBFM0Mx
MUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
ODREMEUzRTExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDg2QTQwMDYxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudC5oCShyZXZpc2lvbiA2NDM0MikKKysrIFdlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbjsKK2NsYXNzIERldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcjsKIAogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQgewog
cHVibGljOgorICAgIHZpcnR1YWwgfkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkge30KKworICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgRGV2aWNlT3JpZW50YXRpb24q
IGxhc3RPcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
fkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkge30KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAko
cmV2aXNpb24gNjQzNDIpCisrKyBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCiAKLSNpZiBFTkFC
TEUoREVWSUNFX09SSUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIK
ICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkRldmljZU9y
aWVudGF0aW9uRXZlbnQuaCIKQEAgLTM5LDYgKzM3LDggQEAgRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyOjpEZXZpY2VPcmllbgogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90aW1l
cih0aGlzLCAmRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjp0aW1lckZpcmVkKQogeworICAg
IEFTU0VSVChtX2NsaWVudCk7CisgICAgbV9jbGllbnQtPnNldENvbnRyb2xsZXIodGhpcyk7CiB9
CiAKIHZvaWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPERl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4qIHRpbWVyKQpAQCAtMTA1LDUgKzEwNSwzIEBAIHZv
aWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpkaWRDaGEKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKSW5kZXg6
IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiA2NDM0MikKKysr
IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw4ICsyOCw2IEBACiAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbi5oIgogCi0jaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50Ojp+RGV2aWNlT3JpZW50YXRpb25FdmVudCgpCkBAIC01Nyw1ICs1
NSwzIEBAIHZvaWQgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU8KIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2s6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpCisgICAgOiBtX2NvbnRyb2xsZXIo
MCkKKyAgICAsIG1fdGltZXIodGhpcywgJkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6dGlt
ZXJGaXJlZCkKKyAgICAsIG1faXNVcGRhdGluZyhmYWxzZSkKK3sKK30KKwordm9pZCBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s6OnNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyKiBjb250cm9sbGVyKQoreworICAgIG1fY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Cisg
ICAgQVNTRVJUKG1fY29udHJvbGxlcik7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOworfQor
Cit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RvcFVwZGF0aW5nKCkKK3sKKyAg
ICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0aW9uKFBhc3NSZWZQdHI8RGV2
aWNlT3JpZW50YXRpb24+IG9yaWVudGF0aW9uKQoreworICAgIG1fb3JpZW50YXRpb24gPSBvcmll
bnRhdGlvbjsKKyAgICBpZiAobV9pc1VwZGF0aW5nICYmICFtX3RpbWVyLmlzQWN0aXZlKCkpCisg
ICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIERldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZChUaW1lcjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV90aW1l
cik7CisgICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VEZXZp
Y2VPcmllbnRhdGlvbihtX29yaWVudGF0aW9uLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbW9j
ay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKKyNk
ZWZpbmUgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKKworI2luY2x1ZGUgIkRldmljZU9y
aWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyOworCisvLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQgdXNlZCB0byB0ZXN0IHRoZSBmZWF0dXJlIGluCisvLyBEdW1wUmVuZGVy
VHJlZS4gRW1iZWRkZXJzIHNob3VsZCBzaG91bGQgY29uZmlndXJlIHRoZSBQYWdlIG9iamVjdCB0
byB1c2UgdGhpcworLy8gY2xpZW50IHdoZW4gcnVubmluZyBEdW1wUmVuZGVyVHJlZS4KK2NsYXNz
IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayA6IHB1YmxpYyBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudCB7CitwdWJsaWM6CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CisKKyAg
ICAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9s
bGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZpcnR1
YWwgRGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZW50YXRpb24uZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0T3JpZW50YXRpb24oUGFzc1JlZlB0
cjxEZXZpY2VPcmllbnRhdGlvbj4pOworCitwcml2YXRlOgorICAgIHZvaWQgdGltZXJGaXJlZChU
aW1lcjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+Kik7CisKKyAgICBSZWZQdHI8RGV2aWNl
T3JpZW50YXRpb24+IG1fb3JpZW50YXRpb247CisgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyKiBtX2NvbnRyb2xsZXI7CisgICAgVGltZXI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
PiBtX3RpbWVyOworICAgIGJvb2wgbV9pc1VwZGF0aW5nOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKSW5kZXg6
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY0MzQyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDctMzAgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9j
a0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3Jp
ZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5NTg5CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjayk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAg
ICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDoKKwogMjAxMC0wNy0yOSAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQbHVnaW5UZXN0LmNwcApJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gNjQzNDIpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3MCw2ICs5NzAs
MjcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0RG9tYWluUmVsYXhhdGlvbkZvcgogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYg
c2V0TW9ja0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgNikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGEgPSBK
U1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7CisgICAgZG91YmxlIGFscGhh
ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKKyAg
ICBBU1NFUlQoISpleGNlcHRpb24pOworICAgIGJvb2wgY2FuUHJvdmlkZUJldGEgPSBKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1syXSk7CisgICAgZG91YmxlIGJldGEgPSBKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzNdLCBleGNlcHRpb24pOworICAgIEFTU0VS
VCghKmV4Y2VwdGlvbik7CisgICAgYm9vbCBjYW5Qcm92aWRlR2FtbWEgPSBKU1ZhbHVlVG9Cb29s
ZWFuKGNvbnRleHQsIGFyZ3VtZW50c1s0XSk7CisgICAgZG91YmxlIGdhbW1hID0gSlNWYWx1ZVRv
TnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1s1XSwgZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoISpl
eGNlcHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWlu
dGVycHJldF9jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oY2Fu
UHJvdmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlkZUJldGEsIGJldGEsIGNhblByb3ZpZGVHYW1t
YSwgZ2FtbWEpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwor
fQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCA8
IDMpCkBAIC0xODI0LDYgKzE4NDUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6CiAgICAgICAgIHsgInNldEljb25EYXRhYmFzZUVuYWJsZWQiLCBzZXRJY29uRGF0
YWJhc2VFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0SmF2YVNjcmlwdFBy
b2ZpbGluZ0VuYWJsZWQiLCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIiLCBzZXRNYWlu
RnJhbWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TW9j
a0RldmljZU9yaWVudGF0aW9uIiwgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9j
YXRpb25FcnJvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uIiwgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25DYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJkTGlzdCIsIHNldE5ld1dpbmRv
d3NDb3B5QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24g
NjQzNDIpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgcHJvZmlsaW5nRW5hYmxlZCk7CiAgICAg
dm9pZCBzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGJvb2wgZmxhZyk7CiAgICAgdm9p
ZCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wgZmxhZyk7CisgICAgdm9pZCBzZXRN
b2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwg
Ym9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBk
b3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUs
IEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwog
ICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYg
cGF0aCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NDM0MikKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBAIExheW91dFRlc3RDb250cm9s
bGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0aG9kKCJmb3JjZVJlZFNlbGVjdGlv
bkNvbG9ycyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9yY2VSZWRTZWxlY3Rpb25Db2xvcnMp
OwogICAgIGJpbmRNZXRob2QoInNldEVkaXRpbmdCZWhhdmlvciIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0RWRpdGluZ0JlaGF2aW9yKTsKIAorICAgIGJpbmRNZXRob2QoInNldE1vY2tEZXZp
Y2VPcmllbnRhdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVu
dGF0aW9uKTsKKwogICAgIGJpbmRNZXRob2QoInNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKTsKICAgICBiaW5k
TWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRp
b25FcnJvcik7CkBAIC0xMzEwLDYgKzEzMTIsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0RWRpdGluZ0JlaAogICAgICAgICBsb2dFcnJvclRvQ29uc29sZSgiUGFzc2VkIGludmFs
aWQgZWRpdGluZyBiZWhhdmlvci4gU2hvdWxkIGJlICdtYWMnIG9yICd3aW4nLiIpOwogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMuCisg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDMzNS4K
K30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7
CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlz
aW9uIDY0MzQyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4Miw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8gRGV2aWNlT3JpZW50YXRpb24gcmVsYXRlZCBmdW5j
dGlvbnMKKyAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLyBHZW9sb2NhdGlvbiByZWxhdGVkIGZ1bmN0
aW9ucy4KICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAJKHJldmlzaW9uIDY0MzQyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQyLDYg
KzQ0MiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaXNhYmxlSW1hZ2VMCiAgICAg
Ly8gQWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSBpbWFnZSBsb2FkaW5nIGlzIHJlLWVuYWJsZWQgZm9y
IGVhY2ggbmV3IHRlc3QuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29s
IGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJs
ZSBnYW1tYSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlv
biBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRp
b24gbGF5b3V0IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNjQzNDIp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsMTMgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0RG9tYWluUmVsYQogICAgIFtXZWJWaWV3IF9zZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuOmZvcmJpZGRlbiBmb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopc2NoZW1lQ0ZT
dHJpbmcuZ2V0KCldOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2
aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBj
YW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUg
Z2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24g
bGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzAzMzUuCisKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpCiB7CiAgICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqcG9zaXRpb24g
PSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRXaXRoVGltZXN0YW1wOjAgbGF0
aXR1ZGU6bGF0aXR1ZGUgbG9uZ2l0dWRlOmxvbmdpdHVkZSBhY2N1cmFjeTphY2N1cmFjeV07Cklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNjQzNDIpCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjgzLDYgKzY4MywxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRFZGl0aW5n
QmVoCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEVkaXRpbmdCZWhhdmlvcihtX2Ry
dC0+d2ViUGFnZSgpLCBlZGl0aW5nQmVoYXZpb3IpOwogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRv
dWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJv
dmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
RGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQogewogICAgICBt
X2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHJl
dmlzaW9uIDY0MzQyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDggQEAgcHVibGlj
IHNsb3RzOgogICAgIC8vIHdoaWNoIGlzIGEgTWFjLXNwZWNpZmljIHRlc3QuCiAgICAgdm9pZCBh
ZGREaXNhbGxvd2VkVVJMKGNvbnN0IFFTdHJpbmcmKSB7fQogCisgICAgdm9pZCBzZXRNb2NrRGV2
aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBj
YW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUg
Z2FtbWEpOworCiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgY29u
c3QgUVN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAg
ICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdyk7CkluZGV4OiBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDY0MzQyKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzc1LDYgKzM3NSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRDdXN0b21Qb2xp
CiAgICAgICAgIHdlYlZpZXctPnNldFBvbGljeURlbGVnYXRlKDApOwogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRl
QWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJv
b2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRp
dHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVy
V3guY3BwCShyZXZpc2lvbiA2NDM0MikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNiArMjcx
LDEyIEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VP
cmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblBy
b3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1t
YSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlvbiBsYXlv
dXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWNjdXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5
b3V0IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJldmlzaW9uIDY0MzQy
KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29weSkKQEAg
LTYxLDcgKzYxLDcgQEAgbXkgKCRsaW5rUHJlZmV0Y2hTdXBwb3J0LCAkdGhyZWVEQ2FudmFzUwog
ICAgICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0
LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKICAgICAkc3Zn
Rm9yZWlnbk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd2Vi
U29ja2V0c1N1cHBvcnQsICR3ZWJUaW1pbmdTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdjc3NTdXBw
b3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBhdGhTdXBwb3J0
LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25zU3VwcG9ydCwg
JGJsb2JTbGljZVN1cHBvcnQsICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCi0gICAgJGZpbGVS
ZWFkZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQsICRmaWxlU3lzdGVtU3VwcG9ydCwgJGRp
cmVjdG9yeVVwbG9hZFN1cHBvcnQpOworICAgICRmaWxlUmVhZGVyU3VwcG9ydCwgJGZpbGVXcml0
ZXJTdXBwb3J0LCAkZmlsZVN5c3RlbVN1cHBvcnQsICRkaXJlY3RvcnlVcGxvYWRTdXBwb3J0LCAk
ZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0
aW9uID0+ICJsaW5rLXByZWZldGNoIiwgZGVzYyA9PiAiVG9nZ2xlIHByZSBmZXRjaGluZyBzdXBw
b3J0IiwKQEAgLTIwNCw2ICsyMDQsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAKICAgICB7IG9wdGlv
biA9PiAiZmlsZS1zeXN0ZW0iLCBkZXNjID0+ICJUb2dnbGUgRmlsZVN5c3RlbSBzdXBwb3J0IiwK
ICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZJTEVfU1lTVEVNIiwgZGVmYXVsdCA9PiAwLCB2YWx1
ZSA9PiBcJGZpbGVTeXN0ZW1TdXBwb3J0IH0sCisKKyAgICB7IG9wdGlvbiA9PiAiZGV2aWNlLW9y
aWVudGF0aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIERldmljZU9yaWVudGF0aW9uIHN1cHBvcnQiLAor
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OIiwgZGVmYXVsdCA9PiAw
LCB2YWx1ZSA9PiBcJGRldmljZU9yaWVudGF0aW9uU3VwcG9ydCB9LAogKTsKIAogIyBVcGRhdGUg
ZGVmYXVsdHMgZnJvbSBRdCdzIHByb2plY3QgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQzNDIp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxMC0wNy0zMCAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExheW91dFRl
c3RDb250cm9sbGVyIG1ldGhvZHMgdG8gdGVzdCBEZXZpY2VPcmllbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODkKKworICAgICAgICAq
IGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJh
dGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9z
Y3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvU2tpcHBlZDoKKwogMjAxMC0wNy0zMCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBbm90aGVyIHN2ZyBiYXNlbGluZSB0aGF0IHdhcyB3cm9uZyBh
bmQgbm93IHZpc3VhbGx5IG1hdGNoZXMgbWFjIChtaW51cwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1v
cGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhlIGJhc2ljIG9wZXJhdGlvbiBvZiBEZXZp
Y2VPcmllbnRhdGlvbiB1c2luZyB0aGUgbW9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgZGV2aWNlT3JpZW50YXRpb25FdmVudC5hbHBoYSBpcyBtb2NrQWxwaGEKK1BB
U1MgZGV2aWNlT3JpZW50YXRpb25FdmVudC5iZXRhIGlzIG1vY2tCZXRhCitQQVNTIGRldmljZU9y
aWVudGF0aW9uRXZlbnQuZ2FtbWEgaXMgbW9ja0dhbW1hCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
RGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9i
YXNpYy1vcGVyYXRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9iYXNpYy1vcGVyYXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRlc3Rz
L2Jhc2ljLW9wZXJhdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
ZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24vc2NyaXB0LXRl
c3RzL2Jhc2ljLW9wZXJhdGlvbi5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorZGVz
Y3JpcHRpb24oIlRlc3RzIHRoZSBiYXNpYyBvcGVyYXRpb24gb2YgRGV2aWNlT3JpZW50YXRpb24g
dXNpbmcgdGhlIG1vY2suIik7CisKK3ZhciBtb2NrQWxwaGEgPSAxLjE7Cit2YXIgbW9ja0JldGEg
PSAyLjI7Cit2YXIgbW9ja0dhbW1hID0gMy4zOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1vY2tEZXZpY2VPcmllbnRhdGlv
bih0cnVlLCBtb2NrQWxwaGEsIHRydWUsIG1vY2tCZXRhLCB0cnVlLCBtb2NrR2FtbWEpOworZWxz
ZQorICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgTGF5b3V0
VGVzdENvbnRyb2xsZXInKTsKKwordmFyIGRldmljZU9yaWVudGF0aW9uRXZlbnQ7Cit3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcigiZGV2aWNlb3JpZW50YXRpb24iLCBmdW5jdGlvbihlKSB7CisgICAg
ZGV2aWNlT3JpZW50YXRpb25FdmVudCA9IGU7CisgICAgc2hvdWxkQmUoJ2RldmljZU9yaWVudGF0
aW9uRXZlbnQuYWxwaGEnLCAnbW9ja0FscGhhJyk7CisgICAgc2hvdWxkQmUoJ2RldmljZU9yaWVu
dGF0aW9uRXZlbnQuYmV0YScsICdtb2NrQmV0YScpOworICAgIHNob3VsZEJlKCdkZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmdhbW1hJywgJ21vY2tHYW1tYScpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fSk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDY0
MzQyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkK
QEAgLTEwOTEsNiArMTA5MSw3IEBAIGZhc3QvZG9tL2NsaWVudC13aWR0aC1oZWlnaHQtcXVpcmtz
Lmh0bWwKIGZhc3QvZG9tL2NsaWVudC13aWR0aC1oZWlnaHQuaHRtbAogZmFzdC9kb20vY3NzVGFy
Z2V0LWNyYXNoLmh0bWwKIGZhc3QvZG9tL2ZyYW1lLWxvYWRpbmctdmlhLWRvY3VtZW50LXdyaXRl
Lmh0bWwKK2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCiBm
YXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9jcmVhdGUtZXZlbnQuaHRtbAogZmFzdC9kb20vRGV2
aWNlT3JpZW50YXRpb24vb3B0aW9uYWwtZXZlbnQtcHJvcGVydGllcy5odG1sCiBmYXN0L2RvbS9E
ZXZpY2VPcmllbnRhdGlvbi93aW5kb3ctcHJvcGVydHkuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63052</attachid>
            <date>2010-07-30 05:45:58 -0700</date>
            <delta_ts>2010-07-30 07:16:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39589-20100730134556.patch</filename>
            <type>text/plain</type>
            <size>39232</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDM1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMDctMzAgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3JpZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NTg5
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBob29rIHVwIHRoZSBuZXcgTGF5b3V0VGVz
dENvbnRyb2xsZXIgbWV0aG9kIHRvIFdlYktpdAorICAgICAgICBmb3IgYW55IHBsYXRmb3JtLiBU
aGlzIHdpbGwgYmUgZG9uZSBpbiBsYXRlciBwYXRjaGVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxODEgdHJhY2tzIHRoaXMgZm9yIE1hYy4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24u
aHRtbAorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6On5EZXZpY2VP
cmllbnRhdGlvbkNsaWVudCk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6
OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcik6CisgICAgICAgICogZG9tL0RldmljZU9yaWVu
dGF0aW9uRXZlbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2s6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOjpzdGFydFVwZGF0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RvcFVw
ZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6
c2V0T3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jazo6bGFzdE9yaWVudGF0aW9uKToKKwogMjAxMC0wNy0zMCAgU2F0aXNo
IFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpl
cmVteSBPcmxvdy4KSW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDY0MzUxKQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3
b3JraW5nIGNvcHkpCkBAIC01MTYsNiArNTE2LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9D
QUxfU1JDX0ZJTEVTKSBcCiAJcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAgXAogCXBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5j
cHAgXAogCVwKKwlwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAg
XAogCXBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgXAogCXBsYXRmb3Jt
L21vY2svU3BlZWNoSW5wdXRDbGllbnRNb2NrLmNwcCBcCiAJXApJbmRleDogV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biA2NDM1MSkKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEy
NzUsNiArMTI3NSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKIAorICAgIHBsYXRmb3JtL21vY2svRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmNwcAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25T
ZXJ2aWNlTW9jay5jcHAKIAogICAgIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlLmNwcApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NDM1MSkKKysrIFdlYkNvcmUvR05V
bWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE4OTcsNiArMTg5Nyw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggXAogCVdlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25TZXJ2aWNlTW9j
ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgg
XAogCVdlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwIFwKSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gNjQzNTEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDIsNiArNDAyLDcgQEAgX19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdy
YXBoRVJLTlNfMTVWaQogX19aTjdXZWJDb3JlMTZqc1N0cmluZ1Nsb3dDYXNlRVBOM0pTQzlFeGVj
U3RhdGVFUk5TMF85V2Vha0dDTWFwSVBOU18xMFN0cmluZ0ltcGxFUE5TMF84SlNTdHJpbmdFRUVT
NV8KIF9fWk43V2ViQ29yZTE3Q3JlZGVudGlhbFN0b3JhZ2UzZ2V0RVJLTlNfMTVQcm90ZWN0aW9u
U3BhY2VFCiBfX1pON1dlYkNvcmUxN0RPTUltcGxlbWVudGF0aW9uMTRpc1RleHRNSU1FVHlwZUVS
S05TXzZTdHJpbmdFCitfX1pON1dlYkNvcmUxN0RldmljZU9yaWVudGF0aW9uNmNyZWF0ZUViZGJk
YmQKIF9fWk43V2ViQ29yZTE3R2x5cGhQYWdlVHJlZU5vZGUxOHRyZWVHbHlwaFBhZ2VDb3VudEV2
CiBfX1pON1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTFnZXROUE9iamVjdEV2CiBfX1pON1dl
YkNvcmUxN0hpc3RvcnlDb250cm9sbGVyMjZzYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZUV2CkBA
IC00OTAsNiArNDkxLDggQEAgX19aTjdXZWJDb3JlMjZjb250ZXh0TWVudUl0ZW1UYWdGb250TWVu
dQogX19aTjdXZWJDb3JlMjZjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0V2CiBfX1pON1dlYkNv
cmUyNnVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yRXYKIF9fWk43V2ViQ29yZTI3Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUViUktOU182
U3RyaW5nRQorX19aTjdXZWJDb3JlMjdEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sxNHNldE9y
aWVudGF0aW9uRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE3RGV2aWNlT3JpZW50YXRpb25FRUUKK19f
Wk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJDb3Jl
MjdhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXJFdgogX19aTjdXZWJDb3JlMjdjb250ZXh0TWVu
dUl0ZW1UYWdTaG93Rm9udHNFdgogX19aTjdXZWJDb3JlMjdjb250ZXh0TWVudUl0ZW1UYWdVbmRl
cmxpbmVFdgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDY0MzUxKQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTMwMTIsNiArMzAxMiw4IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vTG9nZ2luZy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAnLApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJv
CShyZXZpc2lvbiA2NDM1MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTkxMiw2ICs5MTIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9MaW5rSGFzaC5j
cHAgXAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwIFwKICAgICBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcCBcCisgICAgcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suY3BwIFwKICAgICBwbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIFwK
ICAgICBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAgXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcCBcCkBAIC0xNjMxLDYg
KzE2MzIsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIFwKICAg
ICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmggXAorICAgIHBsYXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmggXAogICAgIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25TZXJ2aWNlTW9j
ay5oIFwKICAgICBwbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5oIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNjQzNTEpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODE3Miw2ICsyODE3MiwxNCBA
QAogCQkJCU5hbWU9Im1vY2siDQogCQkJCT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbW9ja1xEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIg0KKwkJ
CQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXG1vY2tcRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgiDQorCQkJCQk+DQorCQkJ
CTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbW9j
a1xHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2
NDM1MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTkwLDEwICsxMTkwLDEyIEBACiAJCTU0QzUwRjdCMEU4MDFERjMwMDk4
MzJBMCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8q
IERldmljZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1OTBFMUI0ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24u
aCAqLzsgfTsKKwkJNTkwRTFCNDkxMUU0RUY0QjAwNjlGNzg0IC8qIERldmljZU9yaWVudGF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBFMUI0
ODExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OTBFMUI0QjExRTRFRjcwMDA2OUY3
ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MEUxQjRBMTFFNEVGNzAwMDY5Rjc4NCAv
KiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQk1OTEzOTUzQjEx
MDc1ODQ1MDA4M0VDNTUgLyogSk5JQnJpZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OTEzOTUzQTExMDc1ODQ1MDA4M0VDNTUgLyogSk5JQnJpZGdl
LmggKi87IH07CiAJCTU5MTM5NTNEMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkxMzk1M0MxMTA3
NTg0RTAwODNFQzU1IC8qIEpOSUJyaWRnZS5jcHAgKi87IH07CisJCTU5MzA5QTExMTFGNEFFNTgw
MDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAz
IC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi87IH07CisJCTU5MzA5QTEzMTFG
NEFFNkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MzA5QTEyMTFGNEFFNkEwMDI1
MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OTYyMjk3ODExMzNFRkQ3MDBEQzRDQkIg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5NjIyOTc3MTEzM0VGRDcwMERDNENCQiAvKiBHZW9sb2Nh
dGlvblBvc2l0aW9uQ2FjaGUuY3BwICovOyB9OwogCQk1OTYyMjk3QTExMzNFRkUyMDBEQzRDQkIg
LyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRp
b25Qb3NpdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTk5RTc1OTAxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5RTc1OEYxMTA1NUExRjAw
RDkwNEZBIC8qIEJyaWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMjAzLDcgKzEyMDUsNyBAQAogCQk1OUE4NjAwODExOURBRkExMDBERUYx
RUYgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4NjAwNzExOURBRkExMDBERUYxRUYgLyogSlNEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmggKi87IH07CiAJCTU5QThGMUQ0MTFBNjk1MDgwMDFBQzM0QSAv
KiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlBOEYxRDMxMUE2OTUwODAwMUFDMzRBIC8qIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTU5QThGMUQ2MTFBNjk1MTMwMDFB
QzM0QSAvKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QThGMUQ1MTFBNjk1MTMwMDFBQzM0QSAvKiBE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKLQkJNTlBOEYxRDgxMUE2OTUyMDAw
MUFDMzRBIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMzNEEgLyogRGV2
aWNlT3JpZW50YXRpb25DbGllbnQuaCAqLzsgfTsKKwkJNTlBOEYxRDgxMUE2OTUyMDAwMUFDMzRB
IC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE4RjFENzExQTY5NTIwMDAxQUMzNEEgLyogRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1OUE5RTdCMDExMDQ3NTg4MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTlFN0FG
MTEwNDc1ODgwMERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwICovOyB9OwogCQk1OUE5RTdC
MjExMDQ3NTk0MDBERkI0QzEgLyogSmF2YUluc3RhbmNlSlNDLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUE5RTdCMTExMDQ3NTk0MDBERkI0QzEgLyog
SmF2YUluc3RhbmNlSlNDLmggKi87IH07CiAJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlFOCAvKiBC
cmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTlCNTk3NzIxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgKi87IH07CkBAIC02
OTY2LDYgKzY5NjgsOCBAQAogCQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU5MTM5NTNBMTEwNzU4NDUwMDgzRUM1NSAvKiBKTklCcmlkZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSk5JQnJpZGdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU5MTM5NTNDMTEwNzU4NEUwMDgzRUM1NSAvKiBKTklCcmlkZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSk5JQnJpZGdlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAzIC8q
IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBwYXRoID0gbW9j
ay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1OTMwOUExMjExRjRBRTZBMDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5oOyBwYXRoID0gbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5NzcxMTMzRUZENzAwREM0Q0JC
IC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Q
b3NpdGlvbkNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0
aW9uUG9zaXRpb25DYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTlFNzU4
RjExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEJyaWRnZS5oOyBwYXRoID0gYnJpZGdlL0JyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTIwNDgsNiArMTIwNTIsOCBAQAogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1
MDYxMDQgLyogbW9jayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5oICovLAorCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJCTc1MzVCQzkyMTIwMjBDRkYwMDM3RUM0NSAvKiBT
cGVlY2hJbnB1dENsaWVudE1vY2suY3BwICovLAogCQkJCTc1MzVCQzkzMTIwMjBDRkYwMDM3RUM0
NSAvKiBTcGVlY2hJbnB1dENsaWVudE1vY2suaCAqLywKIAkJCSk7CkBAIC0xOTg3NCw2ICsxOTg4
MCw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29t
TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTkzMDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8qIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0RDBFM0Qx
MUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0
RDBFM0YxMUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlc0NhY2hlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODVCMDVDMzExRkFFMTZDMDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjIyNzMsNiArMjIyODAsNyBAQAogCQkJCTkzRjE5QjA1
MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg0RDBFM0Mx
MUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
ODREMEUzRTExRjU4MTYxMDAwODFFMUEgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDg2QTQwMDYxMUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9kb20vRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudC5oCShyZXZpc2lvbiA2NDM1MSkKKysrIFdlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbjsKK2NsYXNzIERldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcjsKIAogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQgewog
cHVibGljOgorICAgIHZpcnR1YWwgfkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkge30KKworICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgRGV2aWNlT3JpZW50YXRpb24q
IGxhc3RPcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
fkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkge30KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAko
cmV2aXNpb24gNjQzNTEpCisrKyBXZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCiAKLSNpZiBFTkFC
TEUoREVWSUNFX09SSUVOVEFUSU9OKQotCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb24uaCIK
ICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkRldmljZU9y
aWVudGF0aW9uRXZlbnQuaCIKQEAgLTM5LDYgKzM3LDggQEAgRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyOjpEZXZpY2VPcmllbgogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90aW1l
cih0aGlzLCAmRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjp0aW1lckZpcmVkKQogeworICAg
IEFTU0VSVChtX2NsaWVudCk7CisgICAgbV9jbGllbnQtPnNldENvbnRyb2xsZXIodGhpcyk7CiB9
CiAKIHZvaWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjp0aW1lckZpcmVkKFRpbWVyPERl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4qIHRpbWVyKQpAQCAtMTA1LDUgKzEwNSwzIEBAIHZv
aWQgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpkaWRDaGEKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKSW5kZXg6
IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCShyZXZpc2lvbiA2NDM1MSkKKysr
IFdlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw4ICsyOCw2IEBACiAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbi5oIgogCi0jaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50Ojp+RGV2aWNlT3JpZW50YXRpb25FdmVudCgpCkBAIC01Nyw1ICs1
NSwzIEBAIHZvaWQgRGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU8KIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrLmgiCisKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2s6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpCisgICAgOiBtX2NvbnRyb2xsZXIo
MCkKKyAgICAsIG1fdGltZXIodGhpcywgJkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6dGlt
ZXJGaXJlZCkKKyAgICAsIG1faXNVcGRhdGluZyhmYWxzZSkKK3sKK30KKwordm9pZCBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2s6OnNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyKiBjb250cm9sbGVyKQoreworICAgIG1fY29udHJvbGxlciA9IGNvbnRyb2xsZXI7Cisg
ICAgQVNTRVJUKG1fY29udHJvbGxlcik7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOworfQor
Cit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazo6c3RvcFVwZGF0aW5nKCkKK3sKKyAg
ICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKKyAgICBtX3RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s6OnNldE9yaWVudGF0aW9uKFBhc3NSZWZQdHI8RGV2
aWNlT3JpZW50YXRpb24+IG9yaWVudGF0aW9uKQoreworICAgIG1fb3JpZW50YXRpb24gPSBvcmll
bnRhdGlvbjsKKyAgICBpZiAobV9pc1VwZGF0aW5nICYmICFtX3RpbWVyLmlzQWN0aXZlKCkpCisg
ICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIERldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jazo6dGltZXJGaXJlZChUaW1lcjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2s+KiB0aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV90aW1l
cik7CisgICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VEZXZp
Y2VPcmllbnRhdGlvbihtX29yaWVudGF0aW9uLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbW9j
ay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKKyNk
ZWZpbmUgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKKworI2luY2x1ZGUgIkRldmljZU9y
aWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyOworCisvLyBBIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQgdXNlZCB0byB0ZXN0IHRoZSBmZWF0dXJlIGluCisvLyBEdW1wUmVuZGVy
VHJlZS4gRW1iZWRkZXJzIHNob3VsZCBzaG91bGQgY29uZmlndXJlIHRoZSBQYWdlIG9iamVjdCB0
byB1c2UgdGhpcworLy8gY2xpZW50IHdoZW4gcnVubmluZyBEdW1wUmVuZGVyVHJlZS4KK2NsYXNz
IERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayA6IHB1YmxpYyBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudCB7CitwdWJsaWM6CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CisKKyAg
ICAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9s
bGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpOworICAgIHZpcnR1
YWwgRGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZW50YXRpb24uZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0T3JpZW50YXRpb24oUGFzc1JlZlB0
cjxEZXZpY2VPcmllbnRhdGlvbj4pOworCitwcml2YXRlOgorICAgIHZvaWQgdGltZXJGaXJlZChU
aW1lcjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+Kik7CisKKyAgICBSZWZQdHI8RGV2aWNl
T3JpZW50YXRpb24+IG1fb3JpZW50YXRpb247CisgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyKiBtX2NvbnRyb2xsZXI7CisgICAgVGltZXI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
PiBtX3RpbWVyOworICAgIGJvb2wgbV9pc1VwZGF0aW5nOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrX2gKSW5kZXg6
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY0MzUxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDctMzAgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9j
a0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2RzIHRvIHRlc3QgRGV2aWNlT3Jp
ZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM5NTg5CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjayk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKToKKyAg
ICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDoKKwogMjAxMC0wNy0zMCAgTWFoZXNoIEt1bGth
cm5pICA8bWFoZXNoLmt1bGthcm5pQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBU
b3IgQXJuZSBWZXN0YsO4LgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNjQzNTEpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3MCw2ICs5NzAsMjcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0RG9tYWluUmVsYXhh
dGlvbkZvcgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAor
c3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgNikKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgYm9vbCBj
YW5Qcm92aWRlQWxwaGEgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7
CisgICAgZG91YmxlIGFscGhhID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sx
XSwgZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworICAgIGJvb2wgY2FuUHJv
dmlkZUJldGEgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1syXSk7CisgICAg
ZG91YmxlIGJldGEgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzNdLCBleGNl
cHRpb24pOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisgICAgYm9vbCBjYW5Qcm92aWRlR2Ft
bWEgPSBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1s0XSk7CisgICAgZG91Ymxl
IGdhbW1hID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1s1XSwgZXhjZXB0aW9u
KTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNb2NrRGV2
aWNlT3JpZW50YXRpb24oY2FuUHJvdmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlkZUJldGEsIGJl
dGEsIGNhblByb3ZpZGVHYW1tYSwgZ2FtbWEpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBp
ZiAoYXJndW1lbnRDb3VudCA8IDMpCkBAIC0xODI0LDYgKzE4NDUsNyBAQCBKU1N0YXRpY0Z1bmN0
aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgInNldEljb25EYXRhYmFzZUVu
YWJsZWQiLCBzZXRJY29uRGF0YWJhc2VFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQiLCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5n
RW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1haW5GcmFtZUlzRmlyc3RS
ZXNwb25kZXIiLCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgc2V0TW9ja0RldmljZU9yaWVu
dGF0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IiLCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25D
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXROZXdXaW5kb3dzQ29weUJhY2tGb3J3YXJk
TGlzdCIsIHNldE5ld1dpbmRvd3NDb3B5QmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAkocmV2aXNpb24gNjQzNTEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgcHJvZmls
aW5nRW5hYmxlZCk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGJv
b2wgZmxhZyk7CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wgZmxh
Zyk7CisgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxw
aGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wg
Y2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0
aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiA2NDM1MSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw4IEBA
IExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0aG9k
KCJmb3JjZVJlZFNlbGVjdGlvbkNvbG9ycyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Zm9yY2VS
ZWRTZWxlY3Rpb25Db2xvcnMpOwogICAgIGJpbmRNZXRob2QoInNldEVkaXRpbmdCZWhhdmlvciIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RWRpdGluZ0JlaGF2aW9yKTsKIAorICAgIGJpbmRN
ZXRob2QoInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKTsKKwogICAgIGJpbmRNZXRob2QoInNldEdlb2xvY2F0
aW9uUGVybWlzc2lvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJt
aXNzaW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwogICAgIGJp
bmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgJkxheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CkBAIC0xMzEwLDYgKzEzMTIsMTIgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RWRpdGluZ0JlaAogICAgICAgICBsb2dFcnJvclRvQ29u
c29sZSgiUGFzc2VkIGludmFsaWQgZWRpdGluZyBiZWhhdmlvci4gU2hvdWxkIGJlICdtYWMnIG9y
ICd3aW4nLiIpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNl
T3JpZW50YXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZpY2VPcmllbnRhdGlv
biBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CkluZGV4OiBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmgJKHJldmlzaW9uIDY0MzUxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgy
LDYgKzI4Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgLy8gRGV2aWNlT3JpZW50
YXRpb24gcmVsYXRlZCBmdW5jdGlvbnMKKyAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlv
bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKICAgICAvLyBHZW9sb2Nh
dGlvbiByZWxhdGVkIGZ1bmN0aW9ucy4KICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lv
bihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDY0MzUxKQorKysgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQyLDYgKzQ0MiwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpk
aXNhYmxlSW1hZ2VMCiAgICAgLy8gQWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSBpbWFnZSBsb2FkaW5n
IGlzIHJlLWVuYWJsZWQgZm9yIGVhY2ggbmV3IHRlc3QuCiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwg
ZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Q
cm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBEZXZpY2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQkocmV2aXNpb24gNjQzNTEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsMTMg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RG9tYWluUmVsYQogICAgIFtXZWJWaWV3
IF9zZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuOmZvcmJpZGRlbiBmb3JVUkxTY2hlbWU6KE5T
U3RyaW5nICopc2NoZW1lQ0ZTdHJpbmcuZ2V0KCldOwogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRv
dWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJv
dmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
RGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCisKK30KKwogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCiB7CiAgICAgV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbiAqcG9zaXRpb24gPSBbW1dlYkdlb2xvY2F0aW9uUG9zaXRpb24gYWxsb2NdIGluaXRX
aXRoVGltZXN0YW1wOjAgbGF0aXR1ZGU6bGF0aXR1ZGUgbG9uZ2l0dWRlOmxvbmdpdHVkZSBhY2N1
cmFjeTphY2N1cmFjeV07CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNjQzNTEpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgzLDYgKzY4MywxMiBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRFZGl0aW5nQmVoCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEVk
aXRpbmdCZWhhdmlvcihtX2RydC0+d2ViUGFnZSgpLCBlZGl0aW5nQmVoYXZpb3IpOwogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91Ymxl
IGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3RzLgorICAgIC8v
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAzMzUuCit9CisK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29s
IGFsbG93KQogewogICAgICBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0ID0gdHJ1ZTsKSW5k
ZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmgJKHJldmlzaW9uIDY0MzUxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcs
NiArMTk3LDggQEAgcHVibGljIHNsb3RzOgogICAgIC8vIHdoaWNoIGlzIGEgTWFjLXNwZWNpZmlj
IHRlc3QuCiAgICAgdm9pZCBhZGREaXNhbGxvd2VkVVJMKGNvbnN0IFFTdHJpbmcmKSB7fQogCisg
ICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRv
dWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJv
dmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOworCiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25F
cnJvcihpbnQgY29kZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRv
dWJsZSBhY2N1cmFjeSk7CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBh
bGxvdyk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDY0MzUxKQorKysgV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc1LDYgKzM3NSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRDdXN0b21Qb2xpCiAgICAgICAgIHdlYlZpZXctPnNldFBvbGljeURlbGVnYXRlKDAp
OwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRp
b24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0
YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgRGV2aWNlT3JpZW50YXRpb24gbGF5b3V0IHRlc3Rz
LgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAz
MzUuCit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5
KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0
cy4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xh
eW91dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZpc2lvbiA2NDM1MSkKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzEsNiArMjcxLDEyIEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdXNl
VHJhbnNpdGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91Ymxl
IGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRl
R2FtbWEsIGRvdWJsZSBnYW1tYSkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBEZXZp
Y2VPcmllbnRhdGlvbiBsYXlvdXQgdGVzdHMuCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDMzNS4KK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBm
b3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9i
dWlsZC13ZWJraXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJr
aXQJKHJldmlzaW9uIDY0MzUxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgbXkgKCRsaW5rUHJlZmV0Y2hTdXBwb3J0
LCAkdGhyZWVEQ2FudmFzUwogICAgICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9uU3VwcG9ydCwg
JHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwgJHN2Z0ZvbnRz
U3VwcG9ydCwKICAgICAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAk
dmlkZW9TdXBwb3J0LCAkd2ViU29ja2V0c1N1cHBvcnQsICR3ZWJUaW1pbmdTdXBwb3J0LCAkd21s
U3VwcG9ydCwgJHdjc3NTdXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwK
ICAgICAkeHBhdGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3Rp
ZmljYXRpb25zU3VwcG9ydCwgJGJsb2JTbGljZVN1cHBvcnQsICR0aWxlZEJhY2tpbmdTdG9yZVN1
cHBvcnQsCi0gICAgJGZpbGVSZWFkZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQsICRmaWxl
U3lzdGVtU3VwcG9ydCwgJGRpcmVjdG9yeVVwbG9hZFN1cHBvcnQpOworICAgICRmaWxlUmVhZGVy
U3VwcG9ydCwgJGZpbGVXcml0ZXJTdXBwb3J0LCAkZmlsZVN5c3RlbVN1cHBvcnQsICRkaXJlY3Rv
cnlVcGxvYWRTdXBwb3J0LCAkZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0KTsKIAogbXkgQGZlYXR1
cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJsaW5rLXByZWZldGNoIiwgZGVzYyA9PiAiVG9nZ2xl
IHByZSBmZXRjaGluZyBzdXBwb3J0IiwKQEAgLTIwNCw2ICsyMDQsOSBAQCBteSBAZmVhdHVyZXMg
PSAoCiAKICAgICB7IG9wdGlvbiA9PiAiZmlsZS1zeXN0ZW0iLCBkZXNjID0+ICJUb2dnbGUgRmls
ZVN5c3RlbSBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZJTEVfU1lTVEVNIiwg
ZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGZpbGVTeXN0ZW1TdXBwb3J0IH0sCisKKyAgICB7IG9w
dGlvbiA9PiAiZGV2aWNlLW9yaWVudGF0aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIERldmljZU9yaWVu
dGF0aW9uIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfREVWSUNFX09SSUVOVEFU
SU9OIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGRldmljZU9yaWVudGF0aW9uU3VwcG9ydCB9
LAogKTsKIAogIyBVcGRhdGUgZGVmYXVsdHMgZnJvbSBRdCdzIHByb2plY3QgZmlsZQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNjQzNTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNy0zMCAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2Nr
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIExheW91dFRlc3RDb250cm9sbGVyIG1ldGhvZHMgdG8gdGVzdCBEZXZpY2VPcmll
bnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk1ODkKKworICAgICAgICAqIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJh
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RldmljZU9yaWVu
dGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9E
ZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKwogMjAxMC0wNy0zMCAgTmlrb2xhcyBa
aW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aXJrIFNjaHVsemUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlv
bi9iYXNpYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9i
YXNpYy1vcGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBA
CitUZXN0cyB0aGUgYmFzaWMgb3BlcmF0aW9uIG9mIERldmljZU9yaWVudGF0aW9uIHVzaW5nIHRo
ZSBtb2NrLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBkZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmFscGhhIGlzIG1vY2tBbHBoYQorUEFTUyBkZXZpY2VPcmllbnRhdGlvbkV2
ZW50LmJldGEgaXMgbW9ja0JldGEKK1BBU1MgZGV2aWNlT3JpZW50YXRpb25FdmVudC5nYW1tYSBp
cyBtb2NrR2FtbWEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9iYXNp
Yy1vcGVyYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9EZXZp
Y2VPcmllbnRhdGlvbi9iYXNpYy1vcGVyYXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL2Jhc2ljLW9wZXJhdGlvbi5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Jhc2ljLW9wZXJhdGlvbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3Njcmlw
dC10ZXN0cy9iYXNpYy1vcGVyYXRpb24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9zY3JpcHQtdGVzdHMvYmFzaWMtb3BlcmF0aW9uLmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACitkZXNjcmlwdGlvbigiVGVzdHMgdGhlIGJh
c2ljIG9wZXJhdGlvbiBvZiBEZXZpY2VPcmllbnRhdGlvbiB1c2luZyB0aGUgbW9jay4iKTsKKwor
dmFyIG1vY2tBbHBoYSA9IDEuMTsKK3ZhciBtb2NrQmV0YSA9IDIuMjsKK3ZhciBtb2NrR2FtbWEg
PSAzLjM7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKHRydWUsIG1vY2tBbHBoYSwgdHJ1
ZSwgbW9ja0JldGEsIHRydWUsIG1vY2tHYW1tYSk7CitlbHNlCisgICAgZGVidWcoJ1RoaXMgdGVz
dCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOworCit2
YXIgZGV2aWNlT3JpZW50YXRpb25FdmVudDsKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJkZXZp
Y2VvcmllbnRhdGlvbiIsIGZ1bmN0aW9uKGUpIHsKKyAgICBkZXZpY2VPcmllbnRhdGlvbkV2ZW50
ID0gZTsKKyAgICBzaG91bGRCZSgnZGV2aWNlT3JpZW50YXRpb25FdmVudC5hbHBoYScsICdtb2Nr
QWxwaGEnKTsKKyAgICBzaG91bGRCZSgnZGV2aWNlT3JpZW50YXRpb25FdmVudC5iZXRhJywgJ21v
Y2tCZXRhJyk7CisgICAgc2hvdWxkQmUoJ2RldmljZU9yaWVudGF0aW9uRXZlbnQuZ2FtbWEnLCAn
bW9ja0dhbW1hJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gNjQzNTEpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTA5MSw2ICsxMDkxLDcgQEAg
ZmFzdC9kb20vY2xpZW50LXdpZHRoLWhlaWdodC1xdWlya3MuaHRtbAogZmFzdC9kb20vY2xpZW50
LXdpZHRoLWhlaWdodC5odG1sCiBmYXN0L2RvbS9jc3NUYXJnZXQtY3Jhc2guaHRtbAogZmFzdC9k
b20vZnJhbWUtbG9hZGluZy12aWEtZG9jdW1lbnQtd3JpdGUuaHRtbAorZmFzdC9kb20vRGV2aWNl
T3JpZW50YXRpb24vYmFzaWMtb3BlcmF0aW9uLmh0bWwKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0
aW9uL2NyZWF0ZS1ldmVudC5odG1sCiBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlvbi9vcHRpb25h
bC1ldmVudC1wcm9wZXJ0aWVzLmh0bWwKIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uL3dpbmRv
dy1wcm9wZXJ0eS5odG1sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>