<?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>192268</bug_id>
          
          <creation_ts>2018-11-30 16:54:28 -0800</creation_ts>
          <short_desc>[MediaStream] &apos;devicechange&apos; event when more capture device information are revealed.</short_desc>
          <delta_ts>2018-12-03 08:28:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1483846</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-11-30 16:54:28 -0800</bug_when>
    <thetext>Before the user grants access to the camera and/or microphone, mediaDevices.enumerateDevices() does not reveal device IDs and only includes default capture devices. A &apos;devicechange&apos; event should fire after the user allows capture to begin if we have previously returned a filtered capture list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484054</commentid>
    <comment_count>1</comment_count>
      <attachid>356324</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-01 15:43:11 -0800</bug_when>
    <thetext>Created attachment 356324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484173</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-01 18:48:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/46399460&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484177</commentid>
    <comment_count>3</comment_count>
      <attachid>356324</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-01 20:49:57 -0800</bug_when>
    <thetext>Comment on attachment 356324
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:108
&gt; +    auto completion = [this, protectedThis = makeRef(*this), canAccessMicrophone, canAccessCamera] (const Vector&lt;CaptureDevice&gt;&amp; captureDevices, const String&amp; deviceIdentifierHashSalt, bool) mutable {

I guess a follow-up patch will remove the second parameter of the completion handler.

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:189
&gt; +    m_hasFilteredDeviceList = false;

Should it be m_hasFilteredDeviceList = true?
Maybe we should add a test, something like a page which calls getUserMedia, reload, and does enumerateDevice.

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:414
&gt; +            continue;

I wonder whether we should update this check.
It seems that if we have something like:
1. a page A with a same origin frame B
2. frame B does getUserMedia and user agrees.
3. frame B is navigated to same origin and does again getUserMedia (or page A makes a getUserMedia request).
4. second getUserMedia will create a reprompt.

Maybe frameID check should be applied to the main frame only?
Probably not to be changed in this patch.
Or maybe we should always pass the mainFrameId and no longer the frameId?

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:428
&gt; +    static const int defaultCameraCount = 2;

Is IOS_FAMILY too large for 2 cameras?
I am thinking watch/iosmac.

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:452
&gt; +        for (auto&amp; device : devices) {

const auto&amp;?

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:459
&gt; +                if (device.type() == WebCore::CaptureDevice::DeviceType::Microphone &amp;&amp; ++microphoneCount &gt; defaultMicrophoneCount)

Ah so maybe defaultMicrophoneCount should be renamed to defaultMaxMicrophoneCount.

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:472
&gt; +            filteredDevices.append(CaptureDevice(id, device.type(), label, groupId));

We could make CaptureDevice constructor take String&amp;&amp;

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:477
&gt; +        m_page.process().send(Messages::WebPage::DidCompleteMediaDeviceEnumeration(userMediaID, WTFMove(filteredDevices), WTFMove(deviceIDHashSalt), WTFMove(originHasPersistentAccess)), m_page.pageID());

We do not need to move originHasPersistentAccess.
We could try removing it.

&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:546
&gt; +    m_hasFilteredDeviceList = false;

Should it be m_hasFilteredDeviceList = true?

&gt; LayoutTests/fast/mediastream/enumerate-devices-change-event.html:25
&gt; +                resolve();

Should we call reject(&quot;navigator.mediaDevices.ondevicechange took too long&quot;) instead of console.log/resolve?
I guess resolve() allows to continue running the test but assert_equals(eventCount, 1) will always fail so we do not gain much.

&gt; LayoutTests/fast/mediastream/enumerate-devices-change-event.html:30
&gt; +        assert_equals(eventCount, 1, &quot;one event fired&quot;);

Maybe this eventCount should be checked at the end of the test, after the second enumerateDevices call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484178</commentid>
    <comment_count>4</comment_count>
      <attachid>356324</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-12-01 20:58:26 -0800</bug_when>
    <thetext>Comment on attachment 356324
Patch

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

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:546
&gt;&gt; +    m_hasFilteredDeviceList = false;
&gt; 
&gt; Should it be m_hasFilteredDeviceList = true?

Nope, m_hasFilteredDeviceList should be set to false as the patch is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484341</commentid>
    <comment_count>5</comment_count>
      <attachid>356324</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-03 07:35:42 -0800</bug_when>
    <thetext>Comment on attachment 356324
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/MediaDevicesRequest.cpp:108
&gt;&gt; +    auto completion = [this, protectedThis = makeRef(*this), canAccessMicrophone, canAccessCamera] (const Vector&lt;CaptureDevice&gt;&amp; captureDevices, const String&amp; deviceIdentifierHashSalt, bool) mutable {
&gt; 
&gt; I guess a follow-up patch will remove the second parameter of the completion handler.

Yes, and from the IPC as well.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:189
&gt;&gt; +    m_hasFilteredDeviceList = false;
&gt; 
&gt; Should it be m_hasFilteredDeviceList = true?
&gt; Maybe we should add a test, something like a page which calls getUserMedia, reload, and does enumerateDevice.

I don&apos;t think so. m_hasFilteredDeviceList is only used to determine if we should file a &apos;devicechange&apos; event after the user grants access to a capture device, so I think we want to reset it when the main page changes.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:414
&gt;&gt; +            continue;
&gt; 
&gt; I wonder whether we should update this check.
&gt; It seems that if we have something like:
&gt; 1. a page A with a same origin frame B
&gt; 2. frame B does getUserMedia and user agrees.
&gt; 3. frame B is navigated to same origin and does again getUserMedia (or page A makes a getUserMedia request).
&gt; 4. second getUserMedia will create a reprompt.
&gt; 
&gt; Maybe frameID check should be applied to the main frame only?
&gt; Probably not to be changed in this patch.
&gt; Or maybe we should always pass the mainFrameId and no longer the frameId?

This is called from enumerateMediaDevicesForFrame, which is only passed the ID of the frame making the request so I *think* we want to compare it with the IDs of frames which have been granted device access, not with their main frame ID.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:428
&gt;&gt; +    static const int defaultCameraCount = 2;
&gt; 
&gt; Is IOS_FAMILY too large for 2 cameras?
&gt; I am thinking watch/iosmac.

We can deal with that when/if we add support for capture to those platforms.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:452
&gt;&gt; +        for (auto&amp; device : devices) {
&gt; 
&gt; const auto&amp;?

Fixed.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:459
&gt;&gt; +                if (device.type() == WebCore::CaptureDevice::DeviceType::Microphone &amp;&amp; ++microphoneCount &gt; defaultMicrophoneCount)
&gt; 
&gt; Ah so maybe defaultMicrophoneCount should be renamed to defaultMaxMicrophoneCount.

Sure, changed.

&gt;&gt; Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:472
&gt;&gt; +            filteredDevices.append(CaptureDevice(id, device.type(), label, groupId));
&gt; 
&gt; We could make CaptureDevice constructor take String&amp;&amp;

Good idea. We will want to change a bunch more code so I will do that in a followup.

&gt;&gt; LayoutTests/fast/mediastream/enumerate-devices-change-event.html:25
&gt;&gt; +                resolve();
&gt; 
&gt; Should we call reject(&quot;navigator.mediaDevices.ondevicechange took too long&quot;) instead of console.log/resolve?
&gt; I guess resolve() allows to continue running the test but assert_equals(eventCount, 1) will always fail so we do not gain much.

Fixed.

&gt;&gt; LayoutTests/fast/mediastream/enumerate-devices-change-event.html:30
&gt;&gt; +        assert_equals(eventCount, 1, &quot;one event fired&quot;);
&gt; 
&gt; Maybe this eventCount should be checked at the end of the test, after the second enumerateDevices call.

Good idea, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484342</commentid>
    <comment_count>6</comment_count>
      <attachid>356379</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-03 07:36:29 -0800</bug_when>
    <thetext>Created attachment 356379
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484351</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-03 08:27:45 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 356379:

inspector/debugger/search-scripts.html bug 192311 (authors: bburg@apple.com, commit-queue@webkit.org, drousso@apple.com, and joepeck@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484352</commentid>
    <comment_count>8</comment_count>
      <attachid>356379</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-03 08:28:41 -0800</bug_when>
    <thetext>Comment on attachment 356379
Patch for landing

Clearing flags on attachment: 356379

Committed r238796: &lt;https://trac.webkit.org/changeset/238796&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484353</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-03 08:28:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356324</attachid>
            <date>2018-12-01 15:43:11 -0800</date>
            <delta_ts>2018-12-03 07:36:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192268-20181201154310.patch</filename>
            <type>text/plain</type>
            <size>19074</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZjMGZmNjZmMjdkMGRl
ZTlkNWI1ZGIwODJmODBkMDJjMDZhZjI4Mi4uMmM2Y2NmNDhkNDIxNTFmMTE0NjQ4NWQ3ZTNhNTRl
Mzg4YzIwMjhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTEyLTAxICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gJ2RldmljZWNoYW5nZScgZXZlbnQgd2hlbiBtb3JlIGNhcHR1cmUgZGV2aWNlIGluZm9ybWF0
aW9uIGFyZSByZXZlYWxlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MjI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vZW51bWVyYXRlLWRldmljZXMtY2hhbmdl
LWV2ZW50Lmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpzdGFy
dCk6IFJlbW92ZSBjb2RlIHRvIG1vZGlmeSBkZXZpY2UgYmFzZWQgb24gYWNjZXNzLCB0aGF0IGlz
CisgICAgICAgIG5vdyBkb25lIGluIHRoZSBVSSBwcm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFEZXZpY2VzUmVxdWVzdDo6ZmlsdGVyRGV2aWNlTGlzdCk6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOgorCiAyMDE4
LTExLTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2Fd
IEFkZCBzb21lIFdLQSBleHRlbnNpb24gcG9pbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI3NDYxMDI2NWM4NWJh
NmRiNDhmNzYyNWEwOTVlMTMwYjQzZDIxOTEuLjU5MmZlOGRlYjkzMjZhZDc0YjAzMGUyNTU2YjJm
YWMwY2I0OWNhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMTItMDEgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFt
XSAnZGV2aWNlY2hhbmdlJyBldmVudCB3aGVuIG1vcmUgY2FwdHVyZSBkZXZpY2UgaW5mb3JtYXRp
b24gYXJlIHJldmVhbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkyMjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6dXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCk6IENhbGwgY2FwdHVyZURldmljZXND
aGFuZ2VkCisgICAgICAgIGlmIGEgZmlsdGVyZWQgZGV2aWNlIGxpc3Qgd2FzIHJldHVybmVkIHBy
ZXZpb3VzbHkuCisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5OjpyZXNldEFjY2Vzcyk6IENsZWFyIG1faGFzRmlsdGVyZWREZXZpY2VMaXN0Lgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
d2FzR3JhbnRlZFZpZGVvT3JBdWRpb0FjY2Vzcyk6IE5ldy4KKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNl
c0ZvckZyYW1lKTogRmlsdGVyIGRldmljZQorICAgICAgICBsaXN0IGFuZCBzdHJpcCBkZXZpY2Ug
SURzIGlmIGdVTSBwZXJtaXNzaW9uIGhhc24ndCBiZWVuIGdpdmVuLgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6d2F0Y2hkb2dUaW1lckZp
cmVkKTogQ2xlYXIgbV9oYXNGaWx0ZXJlZERldmljZUxpc3QuCisgICAgICAgICogVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisKIDIwMTgtMTEtMzAg
IEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWRkIHNv
bWUgV0tBIGV4dGVuc2lvbiBwb2ludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCmluZGV4IGRiYTdhNjE1
OGUyNzI2ZDk3NTRmZWI0N2E1MmM2NjJhM2U1ZWJlZTUuLjEwZmRkMDIzNzQ3ZmRhZDc4YWFmYTk5
MmY3YTFhMzI4NGM0NTYzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcApAQCAtNzksMjggKzc5LDYg
QEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKICAgICBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwogfQogCi12b2lkIE1l
ZGlhRGV2aWNlc1JlcXVlc3Q6OmZpbHRlckRldmljZUxpc3QoVmVjdG9yPFJlZjxNZWRpYURldmlj
ZUluZm8+PiYgZGV2aWNlcykKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHN0YXRp
YyBjb25zdCBpbnQgZGVmYXVsdENhbWVyYUNvdW50ID0gMjsKLSNlbHNlCi0gICAgc3RhdGljIGNv
bnN0IGludCBkZWZhdWx0Q2FtZXJhQ291bnQgPSAxOwotI2VuZGlmCi0KLSAgICBzdGF0aWMgY29u
c3QgaW50IGRlZmF1bHRNaWNyb3Bob25lQ291bnQgPSAxOwotCi0gICAgaW50IGNhbWVyYUNvdW50
ID0gMDsKLSAgICBpbnQgbWljcm9waG9uZUNvdW50ID0gMDsKLSAgICBkZXZpY2VzLnJlbW92ZUFs
bE1hdGNoaW5nKFsmXShjb25zdCBSZWY8TWVkaWFEZXZpY2VJbmZvPiYgZGV2aWNlKSAtPiBib29s
IHsKLSAgICAgICAgaWYgKGRldmljZS0+a2luZCgpID09IE1lZGlhRGV2aWNlSW5mbzo6S2luZDo6
VmlkZW9pbnB1dCAmJiArK2NhbWVyYUNvdW50ID4gZGVmYXVsdENhbWVyYUNvdW50KQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChkZXZpY2UtPmtpbmQoKSA9PSBNZWRpYURl
dmljZUluZm86OktpbmQ6OkF1ZGlvaW5wdXQgJiYgKyttaWNyb3Bob25lQ291bnQgPiBkZWZhdWx0
TWljcm9waG9uZUNvdW50KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0pOwotfQotCiB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OnN0YXJ0
KCkKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKQEAgLTEyNyw3ICsxMDUsNyBAQCB2b2lkIE1lZGlhRGV2aWNlc1Jl
cXVlc3Q6OnN0YXJ0KCkKICAgICB9CiAKICAgICAvLyBUaGlzIGxhbWJkYSBrZWVwcyB8dGhpc3wg
YWxpdmUgdW50aWwgdGhlIHJlcXVlc3QgY29tcGxldGVzIG9yIGlzIGNhbmNlbGVkLgotICAgIGF1
dG8gY29tcGxldGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bkFjY2Vzc01pY3JvcGhvbmUsIGNhbkFjY2Vzc0NhbWVyYV0gKGNvbnN0IFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiYgY2FwdHVyZURldmljZXMsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWRlbnRpZmllckhh
c2hTYWx0LCBib29sIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpIG11dGFibGUgeworICAgIGF1
dG8gY29tcGxldGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNh
bkFjY2Vzc01pY3JvcGhvbmUsIGNhbkFjY2Vzc0NhbWVyYV0gKGNvbnN0IFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiYgY2FwdHVyZURldmljZXMsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWRlbnRpZmllckhh
c2hTYWx0LCBib29sKSBtdXRhYmxlIHsKIAogICAgICAgICBtX2VudW1lcmF0aW9uUmVxdWVzdCA9
IG51bGxwdHI7CiAKQEAgLTEzOCwzMSArMTE2LDE2IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVz
dDo6c3RhcnQoKQogICAgICAgICBkb2N1bWVudC5zZXREZXZpY2VJREhhc2hTYWx0KGRldmljZUlk
ZW50aWZpZXJIYXNoU2FsdCk7CiAKICAgICAgICAgVmVjdG9yPFJlZjxNZWRpYURldmljZUluZm8+
PiBkZXZpY2VzOwotICAgICAgICBib29sIHJldmVhbElkc0FuZExhYmVscyA9IG9yaWdpbkhhc1Bl
cnNpc3RlbnRBY2Nlc3MgfHwgZG9jdW1lbnQuaGFzSGFkQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2so
KTsKICAgICAgICAgZm9yIChhdXRvJiBkZXZpY2VJbmZvIDogY2FwdHVyZURldmljZXMpIHsKICAg
ICAgICAgICAgIGlmICghY2FuQWNjZXNzTWljcm9waG9uZSAmJiBkZXZpY2VJbmZvLnR5cGUoKSA9
PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFjYW5BY2Nlc3NDYW1lcmEgJiYgZGV2aWNlSW5m
by50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGxhYmVsID0gZW1wdHlTdHJpbmco
KTsKLSAgICAgICAgICAgIGF1dG8gaWQgPSBlbXB0eVN0cmluZygpOwotICAgICAgICAgICAgYXV0
byBncm91cElkID0gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIGlmIChyZXZlYWxJZHNBbmRM
YWJlbHMpIHsKLSAgICAgICAgICAgICAgICBsYWJlbCA9IGRldmljZUluZm8ubGFiZWwoKTsKLSAg
ICAgICAgICAgICAgICBpZCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigp
Lmhhc2hTdHJpbmdXaXRoU2FsdChkZXZpY2VJbmZvLnBlcnNpc3RlbnRJZCgpLCBkZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQpOwotICAgICAgICAgICAgICAgIGlmIChpZC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGdyb3VwSWQgPSBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5oYXNoU3RyaW5nV2l0aFNhbHQoZGV2
aWNlSW5mby5ncm91cElkKCksIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7Ci0gICAgICAgICAg
ICB9Ci0KICAgICAgICAgICAgIGF1dG8gZGV2aWNlVHlwZSA9IGRldmljZUluZm8udHlwZSgpID09
IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUgPyBNZWRpYURldmljZUluZm86
OktpbmQ6OkF1ZGlvaW5wdXQgOiBNZWRpYURldmljZUluZm86OktpbmQ6OlZpZGVvaW5wdXQ7Ci0g
ICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChNZWRpYURldmljZUluZm86OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIGxhYmVsLCBpZCwgZ3JvdXBJZCwgZGV2aWNlVHlwZSkpOworICAg
ICAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBkZXZpY2VJbmZvLmxhYmVsKCksIGRldmljZUluZm8ucGVyc2lzdGVu
dElkKCksIGRldmljZUluZm8uZ3JvdXBJZCgpLCBkZXZpY2VUeXBlKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoIXJldmVhbElkc0FuZExhYmVscykKLSAgICAgICAgICAgIGZpbHRlckRldmlj
ZUxpc3QoZGV2aWNlcyk7Ci0KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBkZXZpY2VzID0gV1RGTW92ZShkZXZpY2VzKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcHJvbWlzZS5yZXNvbHZlKGRldmljZXMp
OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmgKaW5kZXggMzNhYmJkNjc1OWJlY2VkZDM5NWE4
ZTVjY2U2M2M5M2UyODJlOTQ4Mi4uNzUzZTY0YzU0MzY2OWYxNDY0ODY2ZGRmMGFjMTFlYTlhNDAx
ZDI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXNSZXF1ZXN0LmgKQEAgLTUxLDggKzUxLDYgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwogCi0gICAgdm9pZCBmaWx0ZXJEZXZpY2VM
aXN0KFZlY3RvcjxSZWY8TWVkaWFEZXZpY2VJbmZvPj4mKTsKLQogICAgIE1lZGlhRGV2aWNlczo6
RW51bWVyYXRlRGV2aWNlc1Byb21pc2UgbV9wcm9taXNlOwogICAgIFJlZlB0cjxNZWRpYURldmlj
ZXNSZXF1ZXN0PiBtX3Byb3RlY3RvcjsKICAgICBSZWZQdHI8TWVkaWFEZXZpY2VzRW51bWVyYXRp
b25SZXF1ZXN0PiBtX2VudW1lcmF0aW9uUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaAppbmRleCAxZWZmZmRiNmMwYjYxMWRlYzIzNTk1YmM5Mjk0ZjBmNjFkMGFhZmMxLi45MzQ4
MTI0OTg0OWZiOThiYzkzYmMwODVkNzhmY2Y4NGE3MDdkNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENhcHR1
cmVEZXZpY2VNYW5hZ2VyJiB2aWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSAwOwogICAgIHZp
cnR1YWwgQ2FwdHVyZURldmljZU1hbmFnZXImIGRpc3BsYXlDYXB0dXJlRGV2aWNlTWFuYWdlcigp
ID0gMDsKIAotICAgIFN0cmluZyBoYXNoU3RyaW5nV2l0aFNhbHQoY29uc3QgU3RyaW5nJiBpZCwg
Y29uc3QgU3RyaW5nJiBoYXNoU2FsdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGhhc2hT
dHJpbmdXaXRoU2FsdChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIGhhc2hTYWx0KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBDYXB0dXJlRGV2aWNlIGNhcHR1cmVEZXZpY2VXaXRoVW5pcXVl
SUQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiBoYXNoU2FsdCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RGV2aWNlRW5hYmxlZChjb25zdCBTdHJpbmcm
LCBib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDU2ZDM1
ODhiZjAzNzdiMTUyMzg5NTM5NGU2NWQ1NGE3YjczNjQzZDQuLjY2NDJkZWM2NzlhOTJhOTJmNzg5
YTZkYWFhNDRmZmIyYTg3ZWQzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKQEAgLTE2NCw4ICsxNjQsMTMgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6dXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCh1aW50NjRfdAogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvIGRldmljZUlESGFzaFNhbHQgPSBtX3BhZ2Uud2Vic2l0ZURhdGFT
dG9yZSgpLmRldmljZUlkSGFzaFNhbHRTdG9yYWdlKCktPmRldmljZUlkSGFzaFNhbHRGb3JPcmln
aW4ocmVxdWVzdC0+dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLCByZXF1ZXN0LT50
b3BMZXZlbERvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgaWYgKGdyYW50QWNjZXNzKHVz
ZXJNZWRpYUlELCBXVEZNb3ZlKGF1ZGlvRGV2aWNlKSwgV1RGTW92ZSh2aWRlb0RldmljZSksIFdU
Rk1vdmUoZGV2aWNlSURIYXNoU2FsdCkpKQorCisgICAgaWYgKGdyYW50QWNjZXNzKHVzZXJNZWRp
YUlELCBXVEZNb3ZlKGF1ZGlvRGV2aWNlKSwgV1RGTW92ZSh2aWRlb0RldmljZSksIFdURk1vdmUo
ZGV2aWNlSURIYXNoU2FsdCkpKSB7CiAgICAgICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmFwcGVuZChy
ZXF1ZXN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBpZiAobV9oYXNGaWx0ZXJlZERldmlj
ZUxpc3QpCisgICAgICAgICAgICBjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKTsKKyAgICAgICAgbV9o
YXNGaWx0ZXJlZERldmljZUxpc3QgPSBmYWxzZTsKKyAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTSh1c2VyTWVkaWFJRCk7CiAgICAgVU5VU0VEX1BBUkFNKGF1ZGlvRGV2aWNlKTsKQEAgLTE4
MSw2ICsxODYsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpyZXNldEFjY2Vzcyh1aW50NjRfdCBmcmFtZUlEKQogICAgIH0pOwogICAgIG1fcHJlZ3JhbnRl
ZFJlcXVlc3RzLmNsZWFyKCk7CiAgICAgbV9kZW5pZWRSZXF1ZXN0cy5jbGVhcigpOworICAgIG1f
aGFzRmlsdGVyZWREZXZpY2VMaXN0ID0gZmFsc2U7CiB9CiAKIGNvbnN0IFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkqIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpzZWFyY2hGb3JHcmFudGVkUmVxdWVzdCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BMZXZlbERvY3VtZW50T3JpZ2luLCBib29sIG5lZWRzQXVkaW8sIGJvb2wgbmVlZHNWaWRlbykg
Y29uc3QKQEAgLTM5MywxMiArMzk5LDM4IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmdldFVzZXJNZWRpYVBlcm1pc3Npb25JbmZvKHVpbnQ2NF90CiAgICAg
ICAgIG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLnRha2UodXNlck1lZGlhSUQpOwogICAgICAgICBy
ZXF1ZXN0LT5jb21wbGV0aW9uSGFuZGxlcigpKHVzZXJNZWRpYUlELCBmYWxzZSk7CiAgICAgfQot
fSAKK30KKworYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6d2Fz
R3JhbnRlZFZpZGVvT3JBdWRpb0FjY2Vzcyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0
b3BMZXZlbERvY3VtZW50T3JpZ2luKQoreworICAgIGZvciAoY29uc3QgYXV0byYgZ3JhbnRlZFJl
cXVlc3QgOiBtX2dyYW50ZWRSZXF1ZXN0cykgeworICAgICAgICBpZiAoZ3JhbnRlZFJlcXVlc3Qt
PnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBpZiAoIWdyYW50ZWRSZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCku
aXNTYW1lU2NoZW1lSG9zdFBvcnQodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGlmICghZ3JhbnRlZFJlcXVlc3QtPnRvcExldmVsRG9jdW1l
bnRTZWN1cml0eU9yaWdpbigpLmlzU2FtZVNjaGVtZUhvc3RQb3J0KHRvcExldmVsRG9jdW1lbnRP
cmlnaW4pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChncmFudGVkUmVxdWVz
dC0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBpZiAoZ3JhbnRlZFJlcXVlc3QtPnJlcXVpcmVzVmlkZW9DYXB0dXJlKCkgfHwgZ3JhbnRlZFJl
cXVlc3QtPnJlcXVpcmVzQXVkaW9DYXB0dXJlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAjZW5kaWYKIAogdm9pZCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJh
bWUodWludDY0X3QgdXNlck1lZGlhSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRv
cExldmVsRG9jdW1lbnRPcmlnaW4pCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdENhbWVyYUNv
dW50ID0gMjsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0Q2FtZXJhQ291bnQg
PSAxOworI2VuZGlmCisgICAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0TWljcm9waG9uZUNvdW50
ID0gMTsKKwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcmVxdWVzdE9yaWdp
biA9IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmNvcHlSZWYoKSwgdG9wT3JpZ2luID0gdG9wTGV2
ZWxEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCldKHVpbnQ2NF90IHVzZXJNZWRpYUlELCBib29sIG9y
aWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpIHsKICAgICAgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9
IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLnRha2UodXNlck1lZGlhSUQpOwogICAgICAgICBpZiAo
IXBlbmRpbmdSZXF1ZXN0KQpAQCAtNDEwLDEyICs0NDIsMzkgQEAgdm9pZCBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUo
dWludDYKICAgICAgICAgc3luY1dpdGhXZWJDb3JlUHJlZnMoKTsKIAogICAgICAgICBhdXRvIGRl
dmljZXMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5nZXRNZWRpYVN0
cmVhbURldmljZXMoKTsKLSAgICAgICAgZGV2aWNlcy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oYXV0
byYgZGV2aWNlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiAhZGV2aWNlLmVuYWJsZWQo
KSB8fCAoZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpDYW1lcmEgJiYgZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpNaWNyb3Bob25lKTsKLSAgICAgICAgfSk7Ci0KKyAgICAgICAgYXV0byYgcmVxdWVz
dCA9ICpwZW5kaW5nUmVxdWVzdDsKKyAgICAgICAgYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMgPSBv
cmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3Mo
cmVxdWVzdC0+ZnJhbWVJRCgpLCByZXF1ZXN0LT51c2VyTWVkaWFEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKCksIHJlcXVlc3QtPnRvcExldmVsRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKTsKKyAgICAg
ICAgaW50IGNhbWVyYUNvdW50ID0gMDsKKyAgICAgICAgaW50IG1pY3JvcGhvbmVDb3VudCA9IDA7
CiAgICAgICAgIGF1dG8gZGV2aWNlSURIYXNoU2FsdCA9IG1fcGFnZS53ZWJzaXRlRGF0YVN0b3Jl
KCkuZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKS0+ZGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbihy
ZXF1ZXN0T3JpZ2luLmdldCgpLCB0b3BPcmlnaW4uZ2V0KCkpOwotICAgICAgICBtX3BhZ2UucHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVt
ZXJhdGlvbih1c2VyTWVkaWFJRCwgV1RGTW92ZShkZXZpY2VzKSwgV1RGTW92ZShkZXZpY2VJREhh
c2hTYWx0KSwgV1RGTW92ZShvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKSksIG1fcGFnZS5wYWdl
SUQoKSk7CisKKyAgICAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGZpbHRlcmVkRGV2aWNlczsK
KyAgICAgICAgZm9yIChhdXRvJiBkZXZpY2UgOiBkZXZpY2VzKSB7CisgICAgICAgICAgICBpZiAo
IWRldmljZS5lbmFibGVkKCkgfHwgKGRldmljZS50eXBlKCkgIT0gV2ViQ29yZTo6Q2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhICYmIGRldmljZS50eXBlKCkgIT0gV2ViQ29yZTo6Q2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIGlmICghcmV2ZWFsSWRzQW5kTGFiZWxzKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6Q2FtZXJhICYmICsrY2FtZXJhQ291bnQgPiBkZWZhdWx0Q2FtZXJhQ291bnQpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmIChkZXZpY2Uu
dHlwZSgpID09IFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmUg
JiYgKyttaWNyb3Bob25lQ291bnQgPiBkZWZhdWx0TWljcm9waG9uZUNvdW50KQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBs
YWJlbCA9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBhdXRvIGlkID0gZW1wdHlTdHJpbmco
KTsKKyAgICAgICAgICAgIGF1dG8gZ3JvdXBJZCA9IGVtcHR5U3RyaW5nKCk7CisgICAgICAgICAg
ICBpZiAocmV2ZWFsSWRzQW5kTGFiZWxzKSB7CisgICAgICAgICAgICAgICAgbGFiZWwgPSBkZXZp
Y2UubGFiZWwoKTsKKyAgICAgICAgICAgICAgICBpZCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXI6OnNpbmdsZXRvbigpLmhhc2hTdHJpbmdXaXRoU2FsdChkZXZpY2UucGVyc2lzdGVudElkKCks
IGRldmljZUlESGFzaFNhbHQpOworICAgICAgICAgICAgICAgIGdyb3VwSWQgPSBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5oYXNoU3RyaW5nV2l0aFNhbHQoZGV2aWNlLmdy
b3VwSWQoKSwgZGV2aWNlSURIYXNoU2FsdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZpbHRlcmVkRGV2aWNlcy5hcHBlbmQoQ2FwdHVyZURldmljZShpZCwgZGV2aWNlLnR5cGUoKSwg
bGFiZWwsIGdyb3VwSWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1faGFzRmlsdGVyZWREZXZp
Y2VMaXN0ID0gIXJldmVhbElkc0FuZExhYmVsczsKKworICAgICAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlv
bih1c2VyTWVkaWFJRCwgV1RGTW92ZShmaWx0ZXJlZERldmljZXMpLCBXVEZNb3ZlKGRldmljZUlE
SGFzaFNhbHQpLCBXVEZNb3ZlKG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKICAgICB9OwogCiAgICAgZ2V0VXNlck1lZGlhUGVybWlzc2lvbkluZm8odXNlck1l
ZGlhSUQsIGZyYW1lSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKHVzZXJN
ZWRpYURvY3VtZW50T3JpZ2luKSwgV1RGTW92ZSh0b3BMZXZlbERvY3VtZW50T3JpZ2luKSk7CkBA
IC00ODQsNiArNTQzLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6d2F0Y2hkb2dUaW1lckZpcmVkKCkKICAgICBtX2dyYW50ZWRSZXF1ZXN0cy5jbGVhcigp
OwogICAgIG1fcHJlZ3JhbnRlZFJlcXVlc3RzLmNsZWFyKCk7CiAgICAgbV9jdXJyZW50V2F0Y2hk
b2dJbnRlcnZhbCA9IDBfczsKKyAgICBtX2hhc0ZpbHRlcmVkRGV2aWNlTGlzdCA9IGZhbHNlOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
CmluZGV4IDg0N2YzMjQ0NTI3NDlmYzI4OWIxNmFkNzQwMzVmMjZkODZkZjQzOTEuLjI0NDQzZGIw
ZmI3OTJhYjNlOGFkYjdlZTU5ZmEzMTE5OTM2YTNiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaApAQCAtODMsNiArODMsOCBAQCBwcml2YXRlOgogICAgICAgICBQcm9tcHQKICAg
ICB9OwogICAgIFJlcXVlc3RBY3Rpb24gZ2V0UmVxdWVzdEFjdGlvbih1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBjb25zdCBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVJlcXVlc3QmLCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmljZT4mIGF1
ZGlvRGV2aWNlcywgVmVjdG9yPFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U+JiB2aWRlb0RldmljZXMp
OworCisgICAgYm9vbCB3YXNHcmFudGVkVmlkZW9PckF1ZGlvQWNjZXNzKHVpbnQ2NF90LCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luKTsKICNlbmRp
ZgogCiAgICAgdm9pZCB3YXRjaGRvZ1RpbWVyRmlyZWQoKTsKQEAgLTExMSw2ICsxMTMsNyBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtX2Nh
cHR1cmVTdGF0ZSB7IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZyB9OwogICAg
IFJ1bkxvb3A6OlRpbWVyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PiBt
X3dhdGNoZG9nVGltZXI7CiAgICAgU2Vjb25kcyBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsOwor
ICAgIGJvb2wgbV9oYXNGaWx0ZXJlZERldmljZUxpc3QgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTliYmIxNGNmYTM1NDQ3NGU1MDk4MGQzMGI3MjhiMjBh
MGRjMmIzZS4uYTBiN2NiNmZjN2M1YTgxYmJhMzg2NjUyNDAxOWFkYzIyZDA5NDk0MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE4LTEyLTAxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0gJ2RldmljZWNoYW5nZScgZXZlbnQg
d2hlbiBtb3JlIGNhcHR1cmUgZGV2aWNlIGluZm9ybWF0aW9uIGFyZSByZXZlYWxlZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjI2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0
cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbDogRml4IGJvZ3VzIHRpdGxlLgorICAgICAg
ICAqIGZhc3QvbWVkaWFzdHJlYW0vZW51bWVyYXRlLWRldmljZXMtY2hhbmdlLWV2ZW50LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9lbnVtZXJhdGUtZGV2
aWNlcy1jaGFuZ2UtZXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMTgtMTEtMzAgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIENvbXB1dGUgbWluL21h
eEhlaWdodCBtYXJnaW5zIG9ubHkgd2hlbiB0aGV5IGFyZSBuZWVkZWQuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbApp
bmRleCA2MTRiOGQxMTA5ZGM3OTAyOTliZGJiNzA4YmVjZjZhYjQ3OTM5YWE1Li5lNzgwZjExNTZm
NjY3MGJiZWVkNDA1NmZmYmNjYmVhNGU4NGMzY2Y0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtMi5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKQEAgLTIsNyAr
Miw3IEBACiA8aHRtbD4KIDxoZWFkPgogICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICA8
dGl0bGU+VGVzdGluZyBsb2NhbCBhdWRpbyBjYXB0dXJlIHBsYXliYWNrIGNhdXNlcyAicGxheWlu
ZyIgZXZlbnQgdG8gZmlyZTwvdGl0bGU+CisgICAgPHRpdGxlPlRlc3RpbmcgJ2RldmljZWNoYW5n
ZScgZXZlbnQgaXMgZmlyZWQgY29ycmVjdGx5LjwvdGl0bGU+CiAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZW51bWVyYXRl
LWRldmljZXMtY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZW51bWVyYXRlLWRldmljZXMtY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43OTk3YmQ4ODlkNjJjYjhiMDRjMGNmMjliNjU0YTg4ZjYwMGViZjEyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9lbnVtZXJhdGUtZGV2aWNl
cy1jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTICdkZXZp
Y2VjaGFuZ2UnIGV2ZW50IGZpcmVkIGFmdGVyIGdldFVzZXJNZWRpYSgpIGlmIGVudW1lcmF0ZURl
dmljZXMoKSBwcmV2aW91c2x5IHJldHVybmVkIGZpbHRlcmVkIGxpc3QgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZW51bWVyYXRlLWRldmljZXMtY2hhbmdlLWV2
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2VudW1lcmF0ZS1kZXZpY2Vz
LWNoYW5nZS1ldmVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViODg0YTU4MDNmNWQzNmE4ZDY0MzI1OTdm
N2QwODZhOGJjYzdjMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL2VudW1lcmF0ZS1kZXZpY2VzLWNoYW5nZS1ldmVudC5odG1sCkBAIC0wLDAgKzEsNDEg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAKKyAgICBwcm9taXNlX3Rlc3Qo
YXN5bmMgKHRlc3QpID0+IHsKKyAgICAKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRydWUpOworCisg
ICAgICAgIGxldCBkZXZpY2VzMSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVy
YXRlRGV2aWNlcygpOworCisgICAgICAgIGxldCBldmVudENvdW50ID0gMDsKKyAgICAgICAgYXdh
aXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSA9IChldnQpID0+IHsKKyAgICAgICAgICAg
ICAgICArK2V2ZW50Q291bnQ7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBj
b25zb2xlLmxvZygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5nZSB0b29rIHRv
byBsb25nIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSwgNDAw
MCk7CisKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsg
YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZSB9KTsKKyAgICAgICAgfSk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoZXZlbnRDb3VudCwgMSwgIm9uZSBldmVudCBmaXJlZCIpOworCisgICAgICAgIGxldCBk
ZXZpY2VzMiA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygp
OworICAgICAgICBhc3NlcnRfdHJ1ZShkZXZpY2VzMS5sZW5ndGggPCBkZXZpY2VzMi5sZW5ndGgs
ICJtb3JlIGRldmljZXMgcmV2ZWFsZWQgYWZ0ZXIgZ1VNIik7CisKKyAgICB9LCAiJ2RldmljZWNo
YW5nZScgZXZlbnQgZmlyZWQgYWZ0ZXIgZ2V0VXNlck1lZGlhKCkgaWYgZW51bWVyYXRlRGV2aWNl
cygpIHByZXZpb3VzbHkgcmV0dXJuZWQgZmlsdGVyZWQgbGlzdCIpOworCisgICAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356379</attachid>
            <date>2018-12-03 07:36:29 -0800</date>
            <delta_ts>2018-12-03 08:28:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192268-20181203073629.patch</filename>
            <type>text/plain</type>
            <size>19071</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZjMGZmNjZmMjdkMGRl
ZTlkNWI1ZGIwODJmODBkMDJjMDZhZjI4Mi4uZDZiZmZmY2Y1ZDM2ZDU0OGQwNTdkYzZlNThlYWI0
MzAyMmM4OTU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTEyLTAxICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVh
bV0gJ2RldmljZWNoYW5nZScgZXZlbnQgd2hlbiBtb3JlIGNhcHR1cmUgZGV2aWNlIGluZm9ybWF0
aW9uIGFyZSByZXZlYWxlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MjI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisK
KyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9lbnVtZXJhdGUtZGV2aWNlcy1jaGFuZ2Ut
ZXZlbnQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OnN0YXJ0
KTogUmVtb3ZlIGNvZGUgdG8gbW9kaWZ5IGRldmljZSBiYXNlZCBvbiBhY2Nlc3MsIHRoYXQgaXMK
KyAgICAgICAgbm93IGRvbmUgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYURldmljZXNSZXF1ZXN0OjpmaWx0ZXJEZXZpY2VMaXN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6CisKIDIwMTgt
MTEtMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0g
QWRkIHNvbWUgV0tBIGV4dGVuc2lvbiBwb2ludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjc0NjEwMjY1Yzg1YmE2
ZGI0OGY3NjI1YTA5NWUxMzBiNDNkMjE5MS4uYmM1ODY2NWJiODExYmUyMDFiMWRkODI0YTc2ZmE1
NThmYzFjMTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOC0xMi0wMSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWVkaWFTdHJlYW1d
ICdkZXZpY2VjaGFuZ2UnIGV2ZW50IHdoZW4gbW9yZSBjYXB0dXJlIGRldmljZSBpbmZvcm1hdGlv
biBhcmUgcmV2ZWFsZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTIyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisg
ICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OnVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQpOiBDYWxsIGNhcHR1cmVEZXZpY2VzQ2hh
bmdlZAorICAgICAgICBpZiBhIGZpbHRlcmVkIGRldmljZSBsaXN0IHdhcyByZXR1cm5lZCBwcmV2
aW91c2x5LgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6cmVzZXRBY2Nlc3MpOiBDbGVhciBtX2hhc0ZpbHRlcmVkRGV2aWNlTGlzdC4KKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Ondh
c0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3MpOiBOZXcuCisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjplbnVtZXJhdGVNZWRpYURldmljZXNG
b3JGcmFtZSk6IEZpbHRlciBkZXZpY2UKKyAgICAgICAgbGlzdCBhbmQgc3RyaXAgZGV2aWNlIElE
cyBpZiBnVU0gcGVybWlzc2lvbiBoYXNuJ3QgYmVlbiBnaXZlbi4KKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OndhdGNoZG9nVGltZXJGaXJl
ZCk6IENsZWFyIG1faGFzRmlsdGVyZWREZXZpY2VMaXN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oOgorCiAyMDE4LTExLTMwICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkZCBzb21l
IFdLQSBleHRlbnNpb24gcG9pbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAppbmRleCBkYmE3YTYxNThl
MjcyNmQ5NzU0ZmViNDdhNTJjNjYyYTNlNWViZWU1Li4xMGZkZDAyMzc0N2ZkYWQ3OGFhZmE5OTJm
N2ExYTMyODRjNDU2M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKQEAgLTc5LDI4ICs3OSw2IEBA
IHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBNZWRp
YURldmljZXNSZXF1ZXN0OjpmaWx0ZXJEZXZpY2VMaXN0KFZlY3RvcjxSZWY8TWVkaWFEZXZpY2VJ
bmZvPj4mIGRldmljZXMpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMg
Y29uc3QgaW50IGRlZmF1bHRDYW1lcmFDb3VudCA9IDI7Ci0jZWxzZQotICAgIHN0YXRpYyBjb25z
dCBpbnQgZGVmYXVsdENhbWVyYUNvdW50ID0gMTsKLSNlbmRpZgotCi0gICAgc3RhdGljIGNvbnN0
IGludCBkZWZhdWx0TWljcm9waG9uZUNvdW50ID0gMTsKLQotICAgIGludCBjYW1lcmFDb3VudCA9
IDA7Ci0gICAgaW50IG1pY3JvcGhvbmVDb3VudCA9IDA7Ci0gICAgZGV2aWNlcy5yZW1vdmVBbGxN
YXRjaGluZyhbJl0oY29uc3QgUmVmPE1lZGlhRGV2aWNlSW5mbz4mIGRldmljZSkgLT4gYm9vbCB7
Ci0gICAgICAgIGlmIChkZXZpY2UtPmtpbmQoKSA9PSBNZWRpYURldmljZUluZm86OktpbmQ6OlZp
ZGVvaW5wdXQgJiYgKytjYW1lcmFDb3VudCA+IGRlZmF1bHRDYW1lcmFDb3VudCkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoZGV2aWNlLT5raW5kKCkgPT0gTWVkaWFEZXZp
Y2VJbmZvOjpLaW5kOjpBdWRpb2lucHV0ICYmICsrbWljcm9waG9uZUNvdW50ID4gZGVmYXVsdE1p
Y3JvcGhvbmVDb3VudCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9KTsKLX0KLQogdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0OjpzdGFydCgp
CiB7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CkBAIC0xMjcsNyArMTA1LDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1
ZXN0OjpzdGFydCgpCiAgICAgfQogCiAgICAgLy8gVGhpcyBsYW1iZGEga2VlcHMgfHRoaXN8IGFs
aXZlIHVudGlsIHRoZSByZXF1ZXN0IGNvbXBsZXRlcyBvciBpcyBjYW5jZWxlZC4KLSAgICBhdXRv
IGNvbXBsZXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYW5B
Y2Nlc3NNaWNyb3Bob25lLCBjYW5BY2Nlc3NDYW1lcmFdIChjb25zdCBWZWN0b3I8Q2FwdHVyZURl
dmljZT4mIGNhcHR1cmVEZXZpY2VzLCBjb25zdCBTdHJpbmcmIGRldmljZUlkZW50aWZpZXJIYXNo
U2FsdCwgYm9vbCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKSBtdXRhYmxlIHsKKyAgICBhdXRv
IGNvbXBsZXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYW5B
Y2Nlc3NNaWNyb3Bob25lLCBjYW5BY2Nlc3NDYW1lcmFdIChjb25zdCBWZWN0b3I8Q2FwdHVyZURl
dmljZT4mIGNhcHR1cmVEZXZpY2VzLCBjb25zdCBTdHJpbmcmIGRldmljZUlkZW50aWZpZXJIYXNo
U2FsdCwgYm9vbCkgbXV0YWJsZSB7CiAKICAgICAgICAgbV9lbnVtZXJhdGlvblJlcXVlc3QgPSBu
dWxscHRyOwogCkBAIC0xMzgsMzEgKzExNiwxNiBAQCB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6
OnN0YXJ0KCkKICAgICAgICAgZG9jdW1lbnQuc2V0RGV2aWNlSURIYXNoU2FsdChkZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQpOwogCiAgICAgICAgIFZlY3RvcjxSZWY8TWVkaWFEZXZpY2VJbmZvPj4g
ZGV2aWNlczsKLSAgICAgICAgYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMgPSBvcmlnaW5IYXNQZXJz
aXN0ZW50QWNjZXNzIHx8IGRvY3VtZW50Lmhhc0hhZENhcHR1cmVNZWRpYVN0cmVhbVRyYWNrKCk7
CiAgICAgICAgIGZvciAoYXV0byYgZGV2aWNlSW5mbyA6IGNhcHR1cmVEZXZpY2VzKSB7CiAgICAg
ICAgICAgICBpZiAoIWNhbkFjY2Vzc01pY3JvcGhvbmUgJiYgZGV2aWNlSW5mby50eXBlKCkgPT0g
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGlmICghY2FuQWNjZXNzQ2FtZXJhICYmIGRldmljZUluZm8u
dHlwZSgpID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgYXV0byBsYWJlbCA9IGVtcHR5U3RyaW5nKCk7
Ci0gICAgICAgICAgICBhdXRvIGlkID0gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgIGF1dG8g
Z3JvdXBJZCA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICBpZiAocmV2ZWFsSWRzQW5kTGFi
ZWxzKSB7Ci0gICAgICAgICAgICAgICAgbGFiZWwgPSBkZXZpY2VJbmZvLmxhYmVsKCk7Ci0gICAg
ICAgICAgICAgICAgaWQgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5o
YXNoU3RyaW5nV2l0aFNhbHQoZGV2aWNlSW5mby5wZXJzaXN0ZW50SWQoKSwgZGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0KTsKLSAgICAgICAgICAgICAgICBpZiAoaWQuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBncm91cElkID0gUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KGRldmlj
ZUluZm8uZ3JvdXBJZCgpLCBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpOwotICAgICAgICAgICAg
fQotCiAgICAgICAgICAgICBhdXRvIGRldmljZVR5cGUgPSBkZXZpY2VJbmZvLnR5cGUoKSA9PSBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lID8gTWVkaWFEZXZpY2VJbmZvOjpL
aW5kOjpBdWRpb2lucHV0IDogTWVkaWFEZXZpY2VJbmZvOjpLaW5kOjpWaWRlb2lucHV0OwotICAg
ICAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBsYWJlbCwgaWQsIGdyb3VwSWQsIGRldmljZVR5cGUpKTsKKyAgICAg
ICAgICAgIGRldmljZXMuYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgZGV2aWNlSW5mby5sYWJlbCgpLCBkZXZpY2VJbmZvLnBlcnNpc3RlbnRJ
ZCgpLCBkZXZpY2VJbmZvLmdyb3VwSWQoKSwgZGV2aWNlVHlwZSkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFyZXZlYWxJZHNBbmRMYWJlbHMpCi0gICAgICAgICAgICBmaWx0ZXJEZXZpY2VM
aXN0KGRldmljZXMpOwotCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZGV2aWNlcyA9IFdURk1vdmUoZGV2aWNlcyldKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Byb21pc2UucmVzb2x2ZShkZXZpY2VzKTsK
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oCmluZGV4IDMzYWJiZDY3NTliZWNlZGQzOTVhOGU1
Y2NlNjNjOTNlMjgyZTk0ODIuLjc1M2U2NGM1NDM2NjlmMTQ2NDg2NmRkZjBhYzExZWE5YTQwMWQy
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzUmVxdWVzdC5oCkBAIC01MSw4ICs1MSw2IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKIAotICAgIHZvaWQgZmlsdGVyRGV2aWNlTGlz
dChWZWN0b3I8UmVmPE1lZGlhRGV2aWNlSW5mbz4+Jik7Ci0KICAgICBNZWRpYURldmljZXM6OkVu
dW1lcmF0ZURldmljZXNQcm9taXNlIG1fcHJvbWlzZTsKICAgICBSZWZQdHI8TWVkaWFEZXZpY2Vz
UmVxdWVzdD4gbV9wcm90ZWN0b3I7CiAgICAgUmVmUHRyPE1lZGlhRGV2aWNlc0VudW1lcmF0aW9u
UmVxdWVzdD4gbV9lbnVtZXJhdGlvblJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgKaW5kZXggMWVmZmZkYjZjMGI2MTFkZWMyMzU5NWJjOTI5NGYwZjYxZDBhYWZjMS4uOTM0ODEy
NDk4NDlmYjk4YmM5M2JjMDg1ZDc4ZmNmODRhNzA3ZDViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDYXB0dXJl
RGV2aWNlTWFuYWdlciYgdmlkZW9DYXB0dXJlRGV2aWNlTWFuYWdlcigpID0gMDsKICAgICB2aXJ0
dWFsIENhcHR1cmVEZXZpY2VNYW5hZ2VyJiBkaXNwbGF5Q2FwdHVyZURldmljZU1hbmFnZXIoKSA9
IDA7CiAKLSAgICBTdHJpbmcgaGFzaFN0cmluZ1dpdGhTYWx0KGNvbnN0IFN0cmluZyYgaWQsIGNv
bnN0IFN0cmluZyYgaGFzaFNhbHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBoYXNoU3Ry
aW5nV2l0aFNhbHQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiBoYXNoU2FsdCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlV2l0aFVuaXF1ZUlE
KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgaGFzaFNhbHQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldERldmljZUVuYWJsZWQoY29uc3QgU3RyaW5nJiwg
Ym9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCA1NmQzNTg4
YmYwMzc3YjE1MjM4OTUzOTRlNjVkNTRhN2I3MzY0M2Q0Li4xYTA2NjIwM2U3Y2U3NDZkZDJiMGE2
Y2Y2ZmEwYWNiNTExYjViZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CkBAIC0xNjQsOCArMTY0LDEzIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OnVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQodWludDY0X3QKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byBkZXZpY2VJREhhc2hTYWx0ID0gbV9wYWdlLndlYnNpdGVEYXRhU3Rv
cmUoKS5kZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpLT5kZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2lu
KHJlcXVlc3QtPnVzZXJNZWRpYURvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSwgcmVxdWVzdC0+dG9w
TGV2ZWxEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCkpOwotICAgIGlmIChncmFudEFjY2Vzcyh1c2Vy
TWVkaWFJRCwgV1RGTW92ZShhdWRpb0RldmljZSksIFdURk1vdmUodmlkZW9EZXZpY2UpLCBXVEZN
b3ZlKGRldmljZUlESGFzaFNhbHQpKSkKKworICAgIGlmIChncmFudEFjY2Vzcyh1c2VyTWVkaWFJ
RCwgV1RGTW92ZShhdWRpb0RldmljZSksIFdURk1vdmUodmlkZW9EZXZpY2UpLCBXVEZNb3ZlKGRl
dmljZUlESGFzaFNhbHQpKSkgewogICAgICAgICBtX2dyYW50ZWRSZXF1ZXN0cy5hcHBlbmQocmVx
dWVzdC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgaWYgKG1faGFzRmlsdGVyZWREZXZpY2VM
aXN0KQorICAgICAgICAgICAgY2FwdHVyZURldmljZXNDaGFuZ2VkKCk7CisgICAgICAgIG1faGFz
RmlsdGVyZWREZXZpY2VMaXN0ID0gZmFsc2U7CisgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0odXNlck1lZGlhSUQpOwogICAgIFVOVVNFRF9QQVJBTShhdWRpb0RldmljZSk7CkBAIC0xODEs
NiArMTg2LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
cmVzZXRBY2Nlc3ModWludDY0X3QgZnJhbWVJRCkKICAgICB9KTsKICAgICBtX3ByZWdyYW50ZWRS
ZXF1ZXN0cy5jbGVhcigpOwogICAgIG1fZGVuaWVkUmVxdWVzdHMuY2xlYXIoKTsKKyAgICBtX2hh
c0ZpbHRlcmVkRGV2aWNlTGlzdCA9IGZhbHNlOwogfQogCiBjb25zdCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5KiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
c2VhcmNoRm9yR3JhbnRlZFJlcXVlc3QodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbiwgYm9vbCBuZWVkc0F1ZGlvLCBib29sIG5lZWRzVmlkZW8pIGNv
bnN0CkBAIC0zOTMsMTIgKzM5OSwzOSBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpnZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyh1aW50NjRfdAogICAgICAg
ICBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy50YWtlKHVzZXJNZWRpYUlEKTsKICAgICAgICAgcmVx
dWVzdC0+Y29tcGxldGlvbkhhbmRsZXIoKSh1c2VyTWVkaWFJRCwgZmFsc2UpOwogICAgIH0KLX0g
Cit9CisKK2Jvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Ondhc0dy
YW50ZWRWaWRlb09yQXVkaW9BY2Nlc3ModWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9w
TGV2ZWxEb2N1bWVudE9yaWdpbikKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGdyYW50ZWRSZXF1
ZXN0IDogbV9ncmFudGVkUmVxdWVzdHMpIHsKKyAgICAgICAgaWYgKGdyYW50ZWRSZXF1ZXN0LT5y
ZXF1aXJlc0Rpc3BsYXlDYXB0dXJlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKCFncmFudGVkUmVxdWVzdC0+dXNlck1lZGlhRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpLmlz
U2FtZVNjaGVtZUhvc3RQb3J0KHVzZXJNZWRpYURvY3VtZW50T3JpZ2luKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpZiAoIWdyYW50ZWRSZXF1ZXN0LT50b3BMZXZlbERvY3VtZW50
U2VjdXJpdHlPcmlnaW4oKS5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0b3BMZXZlbERvY3VtZW50T3Jp
Z2luKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZ3JhbnRlZFJlcXVlc3Qt
PmZyYW1lSUQoKSAhPSBmcmFtZUlEKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
aWYgKGdyYW50ZWRSZXF1ZXN0LT5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpIHx8IGdyYW50ZWRSZXF1
ZXN0LT5yZXF1aXJlc0F1ZGlvQ2FwdHVyZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQogI2VuZGlmCiAKIHZvaWQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1l
KHVpbnQ2NF90IHVzZXJNZWRpYUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdE1heGltdW1D
YW1lcmFDb3VudCA9IDI7CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdE1heGlt
dW1DYW1lcmFDb3VudCA9IDE7CisjZW5kaWYKKyAgICBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRN
YXhpbXVtTWljcm9waG9uZUNvdW50ID0gMTsKKwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIg
PSBbdGhpcywgcmVxdWVzdE9yaWdpbiA9IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmNvcHlSZWYo
KSwgdG9wT3JpZ2luID0gdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5jb3B5UmVmKCldKHVpbnQ2NF90
IHVzZXJNZWRpYUlELCBib29sIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpIHsKICAgICAgICAg
YXV0byBwZW5kaW5nUmVxdWVzdCA9IG1fcGVuZGluZ0RldmljZVJlcXVlc3RzLnRha2UodXNlck1l
ZGlhSUQpOwogICAgICAgICBpZiAoIXBlbmRpbmdSZXF1ZXN0KQpAQCAtNDEwLDEyICs0NDMsMzkg
QEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRl
TWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDYKICAgICAgICAgc3luY1dpdGhXZWJDb3JlUHJlZnMo
KTsKIAogICAgICAgICBhdXRvIGRldmljZXMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpz
aW5nbGV0b24oKS5nZXRNZWRpYVN0cmVhbURldmljZXMoKTsKLSAgICAgICAgZGV2aWNlcy5yZW1v
dmVBbGxNYXRjaGluZyhbJl0oYXV0byYgZGV2aWNlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJl
dHVybiAhZGV2aWNlLmVuYWJsZWQoKSB8fCAoZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEgJiYgZGV2aWNlLnR5cGUoKSAhPSBXZWJDb3Jl
OjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lKTsKLSAgICAgICAgfSk7Ci0K
KyAgICAgICAgYXV0byYgcmVxdWVzdCA9ICpwZW5kaW5nUmVxdWVzdDsKKyAgICAgICAgYm9vbCBy
ZXZlYWxJZHNBbmRMYWJlbHMgPSBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50
ZWRWaWRlb09yQXVkaW9BY2Nlc3MocmVxdWVzdC0+ZnJhbWVJRCgpLCByZXF1ZXN0LT51c2VyTWVk
aWFEb2N1bWVudFNlY3VyaXR5T3JpZ2luKCksIHJlcXVlc3QtPnRvcExldmVsRG9jdW1lbnRTZWN1
cml0eU9yaWdpbigpKTsKKyAgICAgICAgaW50IGNhbWVyYUNvdW50ID0gMDsKKyAgICAgICAgaW50
IG1pY3JvcGhvbmVDb3VudCA9IDA7CiAgICAgICAgIGF1dG8gZGV2aWNlSURIYXNoU2FsdCA9IG1f
cGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKS0+ZGV2aWNl
SWRIYXNoU2FsdEZvck9yaWdpbihyZXF1ZXN0T3JpZ2luLmdldCgpLCB0b3BPcmlnaW4uZ2V0KCkp
OwotICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENv
bXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbih1c2VyTWVkaWFJRCwgV1RGTW92ZShkZXZpY2Vz
KSwgV1RGTW92ZShkZXZpY2VJREhhc2hTYWx0KSwgV1RGTW92ZShvcmlnaW5IYXNQZXJzaXN0ZW50
QWNjZXNzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisKKyAgICAgICAgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+IGZpbHRlcmVkRGV2aWNlczsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXZpY2UgOiBk
ZXZpY2VzKSB7CisgICAgICAgICAgICBpZiAoIWRldmljZS5lbmFibGVkKCkgfHwgKGRldmljZS50
eXBlKCkgIT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhICYmIGRl
dmljZS50eXBlKCkgIT0gV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9w
aG9uZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICghcmV2
ZWFsSWRzQW5kTGFiZWxzKSB7CisgICAgICAgICAgICAgICAgaWYgKGRldmljZS50eXBlKCkgPT0g
V2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhICYmICsrY2FtZXJhQ291
bnQgPiBkZWZhdWx0TWF4aW11bUNhbWVyYUNvdW50KQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoZGV2aWNlLnR5cGUoKSA9PSBXZWJDb3JlOjpDYXB0
dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25lICYmICsrbWljcm9waG9uZUNvdW50ID4g
ZGVmYXVsdE1heGltdW1NaWNyb3Bob25lQ291bnQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIGxhYmVsID0gZW1wdHlTdHJp
bmcoKTsKKyAgICAgICAgICAgIGF1dG8gaWQgPSBlbXB0eVN0cmluZygpOworICAgICAgICAgICAg
YXV0byBncm91cElkID0gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIGlmIChyZXZlYWxJZHNB
bmRMYWJlbHMpIHsKKyAgICAgICAgICAgICAgICBsYWJlbCA9IGRldmljZS5sYWJlbCgpOworICAg
ICAgICAgICAgICAgIGlkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCku
aGFzaFN0cmluZ1dpdGhTYWx0KGRldmljZS5wZXJzaXN0ZW50SWQoKSwgZGV2aWNlSURIYXNoU2Fs
dCk7CisgICAgICAgICAgICAgICAgZ3JvdXBJZCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6
OnNpbmdsZXRvbigpLmhhc2hTdHJpbmdXaXRoU2FsdChkZXZpY2UuZ3JvdXBJZCgpLCBkZXZpY2VJ
REhhc2hTYWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmlsdGVyZWREZXZpY2Vz
LmFwcGVuZChDYXB0dXJlRGV2aWNlKGlkLCBkZXZpY2UudHlwZSgpLCBsYWJlbCwgZ3JvdXBJZCkp
OworICAgICAgICB9CisKKyAgICAgICAgbV9oYXNGaWx0ZXJlZERldmljZUxpc3QgPSAhcmV2ZWFs
SWRzQW5kTGFiZWxzOworCisgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uKHVzZXJNZWRpYUlELCBX
VEZNb3ZlKGZpbHRlcmVkRGV2aWNlcyksIFdURk1vdmUoZGV2aWNlSURIYXNoU2FsdCksIG9yaWdp
bkhhc1BlcnNpc3RlbnRBY2Nlc3MpLCBtX3BhZ2UucGFnZUlEKCkpOwogICAgIH07CiAKICAgICBn
ZXRVc2VyTWVkaWFQZXJtaXNzaW9uSW5mbyh1c2VyTWVkaWFJRCwgZnJhbWVJRCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUodXNlck1lZGlhRG9jdW1lbnRPcmlnaW4pLCBXVEZN
b3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pKTsKQEAgLTQ4NCw2ICs1NDQsNyBAQCB2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp3YXRjaGRvZ1RpbWVyRmlyZWQo
KQogICAgIG1fZ3JhbnRlZFJlcXVlc3RzLmNsZWFyKCk7CiAgICAgbV9wcmVncmFudGVkUmVxdWVz
dHMuY2xlYXIoKTsKICAgICBtX2N1cnJlbnRXYXRjaGRvZ0ludGVydmFsID0gMF9zOworICAgIG1f
aGFzRmlsdGVyZWREZXZpY2VMaXN0ID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKaW5kZXggODQ3ZjMyNDQ1Mjc0OWZjMjg5
YjE2YWQ3NDAzNWYyNmQ4NmRmNDM5MS4uMjQ0NDNkYjBmYjc5MmFiM2U4YWRiN2VlNTlmYTMxMTk5
MzZhM2I3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCkBAIC04Myw2ICs4Myw4
IEBAIHByaXZhdGU6CiAgICAgICAgIFByb21wdAogICAgIH07CiAgICAgUmVxdWVzdEFjdGlvbiBn
ZXRSZXF1ZXN0QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExl
dmVsRG9jdW1lbnRPcmlnaW4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtUmVxdWVzdCYsIFZl
Y3RvcjxXZWJDb3JlOjpDYXB0dXJlRGV2aWNlPiYgYXVkaW9EZXZpY2VzLCBWZWN0b3I8V2ViQ29y
ZTo6Q2FwdHVyZURldmljZT4mIHZpZGVvRGV2aWNlcyk7CisKKyAgICBib29sIHdhc0dyYW50ZWRW
aWRlb09yQXVkaW9BY2Nlc3ModWludDY0X3QsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4m
IHRvcExldmVsRG9jdW1lbnRPcmlnaW4pOwogI2VuZGlmCiAKICAgICB2b2lkIHdhdGNoZG9nVGlt
ZXJGaXJlZCgpOwpAQCAtMTExLDYgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1fY2FwdHVyZVN0YXRlIHsgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nIH07CiAgICAgUnVuTG9vcDo6VGltZXI8VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+IG1fd2F0Y2hkb2dUaW1lcjsKICAgICBTZWNv
bmRzIG1fY3VycmVudFdhdGNoZG9nSW50ZXJ2YWw7CisgICAgYm9vbCBtX2hhc0ZpbHRlcmVkRGV2
aWNlTGlzdCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5
OWJiYjE0Y2ZhMzU0NDc0ZTUwOTgwZDMwYjcyOGIyMGEwZGMyYjNlLi42MzQ1MmM5YzcyYTkxZDkx
ZjIwNzFiYzk1ZDU1ZTRhMDI3YTNkMGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTIt
MDEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01l
ZGlhU3RyZWFtXSAnZGV2aWNlY2hhbmdlJyBldmVudCB3aGVuIG1vcmUgY2FwdHVyZSBkZXZpY2Ug
aW5mb3JtYXRpb24gYXJlIHJldmVhbGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZh
YmxldC4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5nZS1ldmVudC0y
Lmh0bWw6IEZpeCBib2d1cyB0aXRsZS4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2VudW1l
cmF0ZS1kZXZpY2VzLWNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vZW51bWVyYXRlLWRldmljZXMtY2hhbmdlLWV2ZW50Lmh0bWw6IEFk
ZGVkLgorCiAyMDE4LTExLTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bQkZDXSBDb21wdXRlIG1pbi9tYXhIZWlnaHQgbWFyZ2lucyBvbmx5IHdoZW4g
dGhleSBhcmUgbmVlZGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9kZXZpY2UtY2hhbmdlLWV2ZW50LTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZGV2aWNlLWNoYW5nZS1ldmVudC0yLmh0bWwKaW5kZXggNjE0YjhkMTEwOWRjNzkwMjk5YmRi
YjcwOGJlY2Y2YWI0NzkzOWFhNS4uZTc4MGYxMTU2ZjY2NzBiYmVlZDQwNTZmZmJjY2JlYTRlODRj
M2NmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hh
bmdlLWV2ZW50LTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2Rldmlj
ZS1jaGFuZ2UtZXZlbnQtMi5odG1sCkBAIC0yLDcgKzIsNyBAQAogPGh0bWw+CiA8aGVhZD4KICAg
ICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgPHRpdGxlPlRlc3RpbmcgbG9jYWwgYXVkaW8g
Y2FwdHVyZSBwbGF5YmFjayBjYXVzZXMgInBsYXlpbmciIGV2ZW50IHRvIGZpcmU8L3RpdGxlPgor
ICAgIDx0aXRsZT5UZXN0aW5nICdkZXZpY2VjaGFuZ2UnIGV2ZW50IGlzIGZpcmVkIGNvcnJlY3Rs
eS48L3RpdGxlPgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL2VudW1lcmF0ZS1kZXZpY2VzLWNoYW5nZS1ldmVudC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2VudW1lcmF0ZS1kZXZpY2Vz
LWNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk5N2JkODg5ZDYyY2I4YjA0
YzBjZjI5YjY1NGE4OGY2MDBlYmYxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vZW51bWVyYXRlLWRldmljZXMtY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyAnZGV2aWNlY2hhbmdlJyBldmVudCBmaXJlZCBhZnRl
ciBnZXRVc2VyTWVkaWEoKSBpZiBlbnVtZXJhdGVEZXZpY2VzKCkgcHJldmlvdXNseSByZXR1cm5l
ZCBmaWx0ZXJlZCBsaXN0IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL2VudW1lcmF0ZS1kZXZpY2VzLWNoYW5nZS1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9lbnVtZXJhdGUtZGV2aWNlcy1jaGFuZ2UtZXZlbnQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZGUwZGZhNDZmMGRkNjQ5YWEzNzVkNjQyODc2NTEwNTQ4M2FhNjg1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9lbnVtZXJhdGUtZGV2aWNlcy1j
aGFuZ2UtZXZlbnQuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQ+CisgICAgCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgCisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKworICAgICAgICBsZXQgZGV2aWNlczEgPSBhd2Fp
dCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKTsKKworICAgICAgICBs
ZXQgZXZlbnRDb3VudCA9IDA7CisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMub25kZXZpY2Vj
aGFuZ2UgPSAoZXZ0KSA9PiB7CisgICAgICAgICAgICAgICAgKytldmVudENvdW50OworICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0VGlt
ZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgcmVqZWN0KCJuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLm9uZGV2aWNlY2hhbmdlIHRvb2sgdG9vIGxvbmciKQorICAgICAgICAgICAgfSwgNDAwMCk7
CisKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVk
aW86dHJ1ZSwgdmlkZW86dHJ1ZSB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IGRldmlj
ZXMyID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCk7Cisg
ICAgICAgIGFzc2VydF90cnVlKGRldmljZXMxLmxlbmd0aCA8IGRldmljZXMyLmxlbmd0aCwgIm1v
cmUgZGV2aWNlcyByZXZlYWxlZCBhZnRlciBnVU0iKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudENvdW50LCAxLCAib25lIGV2ZW50IGZpcmVkIik7CisKKyAgICB9LCAiJ2RldmljZWNoYW5n
ZScgZXZlbnQgZmlyZWQgYWZ0ZXIgZ2V0VXNlck1lZGlhKCkgaWYgZW51bWVyYXRlRGV2aWNlcygp
IHByZXZpb3VzbHkgcmV0dXJuZWQgZmlsdGVyZWQgbGlzdCIpOworCisgICAgPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>