<?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>193230</bug_id>
          
          <creation_ts>2019-01-07 22:20:49 -0800</creation_ts>
          <short_desc>Define page media state flags for display capture.</short_desc>
          <delta_ts>2019-01-14 11:14:35 -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>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>tsaunier</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1492546</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-07 22:20:49 -0800</bug_when>
    <thetext>MediaProducer::MediaState, _WKMediaCaptureState, and WKMediaState only have a audio and video capture. Add flags for display capture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492547</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-07 22:21:08 -0800</bug_when>
    <thetext>&lt;rdar://problem/47095142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492554</commentid>
    <comment_count>2</comment_count>
      <attachid>358577</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-07 22:55:06 -0800</bug_when>
    <thetext>Created attachment 358577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492556</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-07 22:57:49 -0800</bug_when>
    <thetext>Attachment 358577 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:164:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 1 in 18 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>1492611</commentid>
    <comment_count>4</comment_count>
      <attachid>358577</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-08 08:52:31 -0800</bug_when>
    <thetext>Comment on attachment 358577
Patch

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

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.h:164
&gt; +    virtual CaptureDevice::DeviceType deviceType() const { return CaptureDevice::DeviceType::Unknown; }

Make it virtual pure might be better, that would ensure that every subclass implements it.

&gt; Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:54
&gt; +    CaptureDevice::DeviceType deviceType() const final { return CaptureDevice::DeviceType::Window; }

DeviceType also has Application and Browser in addition to Window.
I wonder whether we should not remove these 3 types and use Screen for all of them.

One reason is that &apos;ScreenCaptureMask&apos; refers to screen + the three other types.
If we need to surface that information in some way, we could surface it outside of deviceType.

Or maybe ScreenCaptureMask, HasInterruptedScreenCaptureDevice et al should be renamed to DisplayCaptureMask.

&gt; Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:60
&gt;          : RealtimeMediaSource(type, WTFMove(name), WTFMove(sourceID), WTFMove(hashSalt))

We could compute type based on deviceType.

&gt; Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:63
&gt; +        , m_deviceType(deviceType)

Should we assert that deviceType != Unknown.

&gt; LayoutTests/fast/mediastream/get-display-media-muted.html:40
&gt; +        return new Promise((resolve, reject) =&gt; {

await would work too

&gt; LayoutTests/fast/mediastream/get-display-media-muted.html:43
&gt; +                new Promise((innerResolve, innerReject) =&gt; {

This could be rewritten to something like:

track.onmute = () =&gt; assert_not_reached(...)
await new Promise((resolve) =&gt; { track.onmute = resolve; });
await waitForPageStateChange(10, internals.pageMediaState();
// with waitForPageStateChange as an async function

&gt; LayoutTests/fast/mediastream/get-display-media-muted.html:66
&gt; +

Double line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493363</commentid>
    <comment_count>5</comment_count>
      <attachid>358809</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-10 11:08:25 -0800</bug_when>
    <thetext>Created attachment 358809
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493364</commentid>
    <comment_count>6</comment_count>
      <attachid>358577</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-10 11:09:49 -0800</bug_when>
    <thetext>Comment on attachment 358577
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.h:164
&gt;&gt; +    virtual CaptureDevice::DeviceType deviceType() const { return CaptureDevice::DeviceType::Unknown; }
&gt; 
&gt; Make it virtual pure might be better, that would ensure that every subclass implements it.

I did that at first, but realized that this method really only make sense for capture sources. For example, what &quot;device type&quot; should a canvas capture source return?

&gt;&gt; Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:54
&gt;&gt; +    CaptureDevice::DeviceType deviceType() const final { return CaptureDevice::DeviceType::Window; }
&gt; 
&gt; DeviceType also has Application and Browser in addition to Window.
&gt; I wonder whether we should not remove these 3 types and use Screen for all of them.
&gt; 
&gt; One reason is that &apos;ScreenCaptureMask&apos; refers to screen + the three other types.
&gt; If we need to surface that information in some way, we could surface it outside of deviceType.
&gt; 
&gt; Or maybe ScreenCaptureMask, HasInterruptedScreenCaptureDevice et al should be renamed to DisplayCaptureMask.

I removed Application and Browser. We need Window to differentiate screen and window captured &quot;devices&quot;. I changed the enum names from XXXScreenCaptureXXX to XXXDisplayCaptureXXX.

&gt;&gt; Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:60
&gt;&gt;          : RealtimeMediaSource(type, WTFMove(name), WTFMove(sourceID), WTFMove(hashSalt))
&gt; 
&gt; We could compute type based on deviceType.

That makes the call to the base class constructor so long it wraps and is difficult to read, so I left it as is.

&gt;&gt; Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:63
&gt;&gt; +        , m_deviceType(deviceType)
&gt; 
&gt; Should we assert that deviceType != Unknown.

Fixed.

&gt;&gt; LayoutTests/fast/mediastream/get-display-media-muted.html:40
&gt;&gt; +        return new Promise((resolve, reject) =&gt; {
&gt; 
&gt; await would work too

Fixed.

&gt;&gt; LayoutTests/fast/mediastream/get-display-media-muted.html:43
&gt;&gt; +                new Promise((innerResolve, innerReject) =&gt; {
&gt; 
&gt; This could be rewritten to something like:
&gt; 
&gt; track.onmute = () =&gt; assert_not_reached(...)
&gt; await new Promise((resolve) =&gt; { track.onmute = resolve; });
&gt; await waitForPageStateChange(10, internals.pageMediaState();
&gt; // with waitForPageStateChange as an async function

Fixed.

&gt;&gt; LayoutTests/fast/mediastream/get-display-media-muted.html:66
&gt;&gt; +
&gt; 
&gt; Double line.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493365</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-10 11:10:52 -0800</bug_when>
    <thetext>Attachment 358809 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:164:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 1 in 19 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>1493401</commentid>
    <comment_count>8</comment_count>
      <attachid>358809</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-10 12:48:57 -0800</bug_when>
    <thetext>Comment on attachment 358809
Patch for landing

Clearing flags on attachment: 358809

Committed r239840: &lt;https://trac.webkit.org/changeset/239840&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493402</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-10 12:48:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493689</commentid>
    <comment_count>10</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-01-11 09:24:22 -0800</bug_when>
    <thetext>It looks like https://trac.webkit.org/changeset/239840/webkit

has caused http/tests/media/media-stream/device-change-event-in-iframe.html
to become a flakey crash on Mac Debug WK2. 

Reproduced with:
run-webkit-tests --root debug-239840 http/tests/media/media-stream/get-user-media-localhost.html --iterations 50 -f --debug

I ran this on r239840 with %100 crash rate on Mojave, on r239839 there are no crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494128</commentid>
    <comment_count>11</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2019-01-14 06:01:38 -0800</bug_when>
    <thetext>This introduced a regression where an assertion happens any time we want to use MediaStream on the GStreamer based ports:


STDERR: ASSERTION FAILED: deviceType == CaptureDevice::DeviceType::Camera || deviceType == CaptureDevice::DeviceType::Screen || deviceType == CaptureDevice::DeviceType::Window
STDERR: ../../Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp(404) : virtual WebCore::MediaProducer::MediaStateFlags WebCore::MediaStreamTrack::mediaState() const
STDERR: 1   0x7f4f237927f9 /app/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTFCrash+0x9) [0x7f4f237927f9]
STDERR: 2   0x7f4f2f900da9 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStreamTrack::mediaState() const+0x3db) [0x7f4f2f900da9]
STDERR: 3   0x7f4f2fec8bd8 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::Document::updateIsPlayingMedia(unsigned long)+0x9e) [0x7f4f2fec8bd8]
STDERR: 4   0x7f4f2fec8a9f /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::Document::addAudioProducer(WebCore::MediaProducer*)+0x4b) [0x7f4f2fec8a9f]
STDERR: 5   0x7f4f2f8fefc8 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStreamTrack::MediaStreamTrack(WebCore::ScriptExecutionContext&amp;, WTF::Ref&lt;WebCore::MediaStreamTrackPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamTrackPrivate&gt; &gt;&amp;&amp;)+0x1b8) [0x7f4f2f8fefc8]
STDERR: 6   0x7f4f2f8fedf3 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStreamTrack::create(WebCore::ScriptExecutionContext&amp;, WTF::Ref&lt;WebCore::MediaStreamTrackPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamTrackPrivate&gt; &gt;&amp;&amp;)+0x45) [0x7f4f2f8fedf3]
STDERR: 7   0x7f4f2f8fcfb4 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStream::MediaStream(WebCore::ScriptExecutionContext&amp;, WTF::Ref&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;)+0x3b8) [0x7f4f2f8fcfb4]
STDERR: 8   0x7f4f2f8fc78d /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStream::create(WebCore::ScriptExecutionContext&amp;, WTF::Ref&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;)+0x45) [0x7f4f2f8fc78d]
STDERR: 9   0x7f4f2f9320a0 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xa90e0a0) [0x7f4f2f9320a0]
STDERR: 10  0x7f4f2f935866 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xa911866) [0x7f4f2f935866]
STDERR: 11  0x7f4f309f0b62 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function&lt;void (WTF::RefPtr&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;)&gt;::operator()(WTF::RefPtr&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;) const+0x78) [0x7f4f309f0b62]
STDERR: 12  0x7f4f309e5591 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RealtimeMediaSourceCenter::createMediaStream(WTF::Function&lt;void (WTF::RefPtr&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;)&gt;&amp;&amp;, WTF::String&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WebCore::MediaStreamRequest const&amp;)+0x4e9) [0x7f4f309e5591]
STDERR: 13  0x7f4f2f932302 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::UserMediaRequest::allow(WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;)+0xdc) [0x7f4f2f932302]
STDERR: 14  0x7f4f2ea5f0d7 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted(unsigned long, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;)+0xbb) [0x7f4f2ea5f0d7]
STDERR: 15  0x7f4f2ebd016e /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebPage::userMediaAccessWasGranted(unsigned long, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;)+0x78) [0x7f4f2ebd016e]
STDERR: 16  0x7f4f2e1db9ff /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void IPC::callMemberFunctionImpl&lt;WebKit::WebPage, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;), std::tuple&lt;unsigned long, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String&gt;, 0ul, 1ul, 2ul, 3ul&gt;(WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;), std::tuple&lt;unsigned long, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String&gt;&amp;&amp;, std::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul&gt;)+0xd2) [0x7f4f2e1db9ff]
STDERR: 17  0x7f4f2e1d4134 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void IPC::callMemberFunction&lt;WebKit::WebPage, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;), std::tuple&lt;unsigned long, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String&gt;, std::integer_sequence&lt;unsigned long, 0ul, 1ul, 2ul, 3ul&gt; &gt;(std::tuple&lt;unsigned long, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String&gt;&amp;&amp;, WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;))+0x41) [0x7f4f2e1d4134]
STDERR: 18  0x7f4f2e1cf069 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void IPC::handleMessage&lt;Messages::WebPage::UserMediaAccessWasGranted, WebKit::WebPage, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;))+0xba) [0x7f4f2e1cf069]
STDERR: 19  0x7f4f2e1c3d11 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebPage::didReceiveWebPageMessage(IPC::Connection&amp;, IPC::Decoder&amp;)+0x4545) [0x7f4f2e1c3d11]
STDERR: 20  0x7f4f2ebd0e80 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebPage::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)+0x240) [0x7f4f2ebd0e80]
STDERR: 21  0x7f4f2e429c51 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)+0x125) [0x7f4f2e429c51]
STDERR: 22  0x7f4f2e90c722 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)+0x4c) [0x7f4f2e90c722]
STDERR: 23  0x7f4f2e407278 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchMessage(IPC::Decoder&amp;)+0x184) [0x7f4f2e407278]
STDERR: 24  0x7f4f2e4073ed /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchMessage(std::unique_ptr&lt;IPC::Decoder, std::default_delete&lt;IPC::Decoder&gt; &gt;)+0x173) [0x7f4f2e4073ed]
STDERR: 25  0x7f4f2e4078c3 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchOneIncomingMessage()+0xcd) [0x7f4f2e4078c3]
STDERR: 26  0x7f4f2e406fc0 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0x93e2fc0) [0x7f4f2e406fc0]
STDERR: 27  0x7f4f2e40edc8 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0x93eadc8) [0x7f4f2e40edc8]
STDERR: 28  0x7f4f2e1ff7b6 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function&lt;void ()&gt;::operator()() const+0x5e) [0x7f4f2e1ff7b6]
STDERR: 29  0x7f4f237c1ac2 /app/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTF::RunLoop::performWork()+0xce) [0x7f4f237c1ac2]
STDERR: 30  0x7f4f23836010 /app/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(+0x311e010) [0x7f4f23836010]
STDERR: 31  0x7f4f23836034 /app/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(+0x311e034) [0x7f4f23836034]
STDERR: LEAK: 1 WebPageProxy



Full trace:

Core was generated by `/app/webkit/WebKitBuild/Debug/bin/WebKitWebProcess 3 13&apos;.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fc4416d57fe in WTFCrash () at /app/webkit/Source/WTF/wtf/Assertions.cpp:255
255	    *(int *)(uintptr_t)0xbbadbeef = 0;
[Current thread is 1 (LWP 5530)]

Thread 11 (LWP 5564):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc437a7f946 in  () at /lib/libgio-2.0.so.0
#4  0x00007fc4372b6ef5 in  () at /lib/libglib-2.0.so.0
#5  0x0000003131007444 in  () at /lib/libpthread.so.0
#6  0x00000031308e827f in clone () at /lib/libc.so.6

Thread 10 (LWP 5567):
#0  0x00000031308e39b9 in syscall () at /lib/libc.so.6
#1  0x00007fc4372d4faa in g_cond_wait_until () at /lib/libglib-2.0.so.0
#2  0x00007fc437261d39 in  () at /lib/libglib-2.0.so.0
#3  0x00007fc43726235c in g_async_queue_timeout_pop () at /lib/libglib-2.0.so.0
#4  0x00007fc4372b79bd in  () at /lib/libglib-2.0.so.0
#5  0x00007fc4372b6ef5 in  () at /lib/libglib-2.0.so.0
#6  0x0000003131007444 in  () at /lib/libpthread.so.0
#7  0x00000031308e827f in clone () at /lib/libc.so.6

Thread 9 (LWP 5547):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::&lt;lambda()&gt;::operator()(void) const (__closure=0x7fc42c5f80f8) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function&lt;void()&gt;::CallableWrapper&lt;WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::&lt;lambda()&gt; &gt;::call(void) (this=0x7fc42c5f80f0) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function&lt;void()&gt;::operator()(void) const (this=0x7fc42abcbd20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f7140) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f7140) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 8 (LWP 5566):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::&lt;lambda()&gt;::operator()(void) const (__closure=0x7fc42c5f81b8) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function&lt;void()&gt;::CallableWrapper&lt;WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::&lt;lambda()&gt; &gt;::call(void) (this=0x7fc42c5f81b0) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function&lt;void()&gt;::operator()(void) const (this=0x7fc413df1d20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f7280) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f7280) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 7 (LWP 5568):
#0  0x000000313100d856 in pthread_cond_timedwait () at /lib/libpthread.so.0
#1  0x00007fc4417761c3 in WTF::ThreadCondition::timedWait(WTF::Mutex&amp;, WTF::WallTime) (this=0x7fc4104888b8, mutex=..., absoluteTime=...) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:543
#2  0x00007fc4416fd0cd in WTF::ParkingLot::parkConditionallyImpl(const void *, const WTF::ScopedLambda&lt;bool()&gt; &amp;, const WTF::ScopedLambda&lt;void()&gt; &amp;, const WTF::TimeWithDynamicClockType &amp;) (address=0x7fc42c5587db, validation=..., beforeSleep=..., timeout=...) at /app/webkit/Source/WTF/wtf/ParkingLot.cpp:597
#3  0x00007fc44c465a9e in WTF::ParkingLot::parkConditionally&lt;WTF::Condition::waitUntil(LockType&amp;, const WTF::TimeWithDynamicClockType&amp;) [with LockType = WTF::Lock]::&lt;lambda()&gt;, WTF::Condition::waitUntil(LockType&amp;, const WTF::TimeWithDynamicClockType&amp;) [with LockType = WTF::Lock]::&lt;lambda()&gt; &gt;(const void *, const WTF::Condition::&lt;lambda()&gt; &amp;, const WTF::Condition::&lt;lambda()&gt; &amp;, const WTF::TimeWithDynamicClockType &amp;) (address=0x7fc42c5587db, validation=..., beforeSleep=..., timeout=...) at DerivedSources/ForwardingHeaders/wtf/ParkingLot.h:84
#4  0x00007fc44c463c30 in WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) (this=0x7fc42c5587db, lock=..., timeout=...) at DerivedSources/ForwardingHeaders/wtf/Condition.h:75
#5  0x00007fc4416d8763 in WTF::Condition::waitFor&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::Seconds) (this=0x7fc42c5587db, lock=..., relativeTimeout=...) at ../../Source/WTF/wtf/Condition.h:115
#6  0x00007fc4416d7b98 in WTF::AutomaticThread::&lt;lambda()&gt;::operator()(void) const (__closure=0x7fc4104a9530) at /app/webkit/Source/WTF/wtf/AutomaticThread.cpp:208
#7  0x00007fc4416d8552 in WTF::Function&lt;void()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(const WTF::AbstractLocker&amp;)::&lt;lambda()&gt; &gt;::call(void) (this=0x7fc4104a9528) at ../../Source/WTF/wtf/Function.h:101
#8  0x00007fc44c1427b6 in WTF::Function&lt;void()&gt;::operator()(void) const (this=0x7fc406ffed20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#9  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c510280) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#10 0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c510280) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#11 0x0000003131007444 in  () at /lib/libpthread.so.0
#12 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 6 (LWP 5542):
#0  0x000000313100d856 in pthread_cond_timedwait () at /lib/libpthread.so.0
#1  0x00007fc441795c20 in __gthread_cond_timedwait(__gthread_cond_t*, __gthread_mutex_t*, __gthread_time_t const*) (__cond=0x7fc42cef0898, __mutex=0xe2eef0, __abs_timeout=0x7fc42ceeca50) at /usr/include/c++/6.2.0/x86_64-unknown-linux/bits/gthr-default.h:871
#2  0x00007fc441799435 in std::condition_variable::__wait_until_impl&lt;std::chrono::duration&lt;long, std::ratio&lt;1l, 1000000000l&gt; &gt; &gt;(std::unique_lock&lt;std::mutex&gt;&amp;, std::(anonymous namespace)::time_point&lt;std::chrono::_V2::system_clock, std::chrono::duration&lt;long, std::ratio&lt;1l, 1000000000l&gt; &gt; &gt; const&amp;) (this=0x7fc42cef0898, __lock=..., __atime=...) at /usr/include/c++/6.2.0/condition_variable:166
#3  0x00007fc441798c91 in std::condition_variable::wait_until&lt;std::chrono::duration&lt;long, std::ratio&lt;1l, 1000000000l&gt; &gt; &gt;(std::unique_lock&lt;std::mutex&gt;&amp;, std::(anonymous namespace)::time_point&lt;std::chrono::_V2::system_clock, std::chrono::duration&lt;long, std::ratio&lt;1l, 1000000000l&gt; &gt; &gt; const&amp;) (this=0x7fc42cef0898, __lock=..., __atime=...) at /usr/include/c++/6.2.0/condition_variable:106
#4  0x00007fc4417988ae in std::_V2::condition_variable_any::wait_until&lt;std::unique_lock&lt;bmalloc::Mutex&gt;, std::chrono::_V2::system_clock, std::chrono::duration&lt;long, std::ratio&lt;1l, 1000000000l&gt; &gt; &gt;(std::unique_lock&lt;bmalloc::Mutex&gt;&amp;, std::(anonymous namespace)::time_point&lt;std::chrono::_V2::system_clock, std::chrono::duration&lt;long, std::ratio&lt;1l, 1000000000l&gt; &gt; &gt; const&amp;) (this=0x7fc42cef0898, __lock=..., __atime=...) at /usr/include/c++/6.2.0/condition_variable:274
#5  0x00007fc441797082 in std::_V2::condition_variable_any::wait_until&lt;std::unique_lock&lt;bmalloc::Mutex&gt;, std::chrono::_V2::system_clock, std::chrono::duration&lt;long int, std::ratio&lt;1l, 1000000000l&gt; &gt;, bmalloc::Scavenger::threadRunLoop()::&lt;lambda()&gt; &gt;(std::unique_lock&lt;bmalloc::Mutex&gt; &amp;, const std::(anonymous namespace)::time_point&lt;std::chrono::_V2::system_clock, std::chrono::duration&lt;long, std::ratio&lt;1l, 1000000000l&gt; &gt; &gt; &amp;, (anonymous namespace)::Scavenger::&lt;lambda()&gt;) (this=0x7fc42cef0898, __lock=..., __atime=..., __p=...) at /usr/include/c++/6.2.0/condition_variable:285
#6  0x00007fc441797039 in std::_V2::condition_variable_any::wait_for&lt;std::unique_lock&lt;bmalloc::Mutex&gt;, long int, std::ratio&lt;1l, 1000l&gt;, bmalloc::Scavenger::threadRunLoop()::&lt;lambda()&gt; &gt;(std::unique_lock&lt;bmalloc::Mutex&gt; &amp;, const std::(anonymous namespace)::duration&lt;long, std::ratio&lt;1l, 1000l&gt; &gt; &amp;, (anonymous namespace)::Scavenger::&lt;lambda()&gt;) (this=0x7fc42cef0898, __lock=..., __rtime=..., __p=...) at /usr/include/c++/6.2.0/condition_variable:300
#7  0x00007fc441796d18 in (anonymous namespace)::Scavenger::threadRunLoop() (this=0x7fc42cef0880) at /app/webkit/Source/bmalloc/bmalloc/Scavenger.cpp:385
#8  0x00007fc44179696e in (anonymous namespace)::Scavenger::threadEntryPoint((anonymous namespace)::Scavenger*) (scavenger=0x7fc42cef0880) at /app/webkit/Source/bmalloc/bmalloc/Scavenger.cpp:359
#9  0x00007fc441799daa in std::_Bind_simple&lt;void (*(bmalloc::Scavenger*))(bmalloc::Scavenger*)&gt;::_M_invoke&lt;0ul&gt;(std::_Index_tuple&lt;0ul&gt;) (this=0xe2ef58) at /usr/include/c++/6.2.0/functional:1400
#10 0x00007fc441799cfb in std::_Bind_simple&lt;void (*(bmalloc::Scavenger*))(bmalloc::Scavenger*)&gt;::operator()(void) (this=0xe2ef58) at /usr/include/c++/6.2.0/functional:1389
#11 0x00007fc441799cda in std::thread::_State_impl&lt;std::_Bind_simple&lt;void (*(bmalloc::Scavenger*))(bmalloc::Scavenger*)&gt; &gt;::_M_run(void) (this=0xe2ef50) at /usr/include/c++/6.2.0/thread:196
#12 0x00007fc43543cf6f in  () at /lib/libstdc++.so.6
#13 0x0000003131007444 in  () at /lib/libpthread.so.0
#14 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 5 (LWP 5545):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::&lt;lambda()&gt;::operator()(void) const (__closure=0x7fc42c5f8098) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function&lt;void()&gt;::CallableWrapper&lt;WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::&lt;lambda()&gt; &gt;::call(void) (this=0x7fc42c5f8090) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function&lt;void()&gt;::operator()(void) const (this=0x7fc42bbcdd20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f70a0) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f70a0) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 4 (LWP 5544):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::&lt;lambda()&gt;::operator()(void) const (__closure=0x7fc42c5f8050) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function&lt;void()&gt;::CallableWrapper&lt;WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::&lt;lambda()&gt; &gt;::call(void) (this=0x7fc42c5f8048) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function&lt;void()&gt;::operator()(void) const (this=0x7fc42c3ced20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f7050) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f7050) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 3 (LWP 5563):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728eddc in g_main_context_iteration () at /lib/libglib-2.0.so.0
#3  0x00007fc43728ee21 in  () at /lib/libglib-2.0.so.0
#4  0x00007fc4372b6ef5 in  () at /lib/libglib-2.0.so.0
#5  0x0000003131007444 in  () at /lib/libpthread.so.0
#6  0x00000031308e827f in clone () at /lib/libc.so.6

Thread 2 (LWP 5546):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::&lt;lambda()&gt;::operator()(void) const (__closure=0x7fc42c5f80c8) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function&lt;void()&gt;::CallableWrapper&lt;WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::&lt;lambda()&gt; &gt;::call(void) (this=0x7fc42c5f80c0) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function&lt;void()&gt;::operator()(void) const (this=0x7fc42b3ccd20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f70f0) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f70f0) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 1 (LWP 5530):
#0  0x00007fc4416d57fe in WTFCrash() () at /app/webkit/Source/WTF/wtf/Assertions.cpp:255
#1  0x00007fc44d843da9 in (anonymous namespace)::MediaStreamTrack::mediaState() const (this=0x7fc41042a400) at ../../Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:404
#2  0x00007fc44de0bbd8 in (anonymous namespace)::Document::updateIsPlayingMedia(uint64_t) (this=0x7fc411001f60, sourceElementID=0) at ../../Source/WebCore/dom/Document.cpp:4004
#3  0x00007fc44de0ba9f in (anonymous namespace)::Document::addAudioProducer((anonymous namespace)::MediaProducer*) (this=0x7fc411001f60, audioProducer=0x7fc41042a480) at ../../Source/WebCore/dom/Document.cpp:3979
#4  0x00007fc44d841fc8 in (anonymous namespace)::MediaStreamTrack::MediaStreamTrack((anonymous namespace)::ScriptExecutionContext &amp;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8a70&gt;) (this=0x7fc41042a400, context=..., privateTrack=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8a70&gt;) at ../../Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:65
#5  0x00007fc44d841df3 in (anonymous namespace)::MediaStreamTrack::create((anonymous namespace)::ScriptExecutionContext &amp;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8a70&gt;) (context=..., privateTrack=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8a70&gt;) at ../../Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:52
#6  0x00007fc44d83ffb4 in (anonymous namespace)::MediaStream::MediaStream((anonymous namespace)::ScriptExecutionContext &amp;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8d25&gt;) (this=0x7fc42c5bfb40, context=..., streamPrivate=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8d25&gt;) at ../../Source/WebCore/Modules/mediastream/MediaStream.cpp:108
#7  0x00007fc44d83f78d in (anonymous namespace)::MediaStream::create((anonymous namespace)::ScriptExecutionContext &amp;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8d25&gt;) (context=..., streamPrivate=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8d25&gt;) at ../../Source/WebCore/Modules/mediastream/MediaStream.cpp:65
#8  0x00007fc44d8750a0 in (anonymous namespace)::UserMediaRequest::&lt;lambda(WTF::RefPtr&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;)&gt;::operator()(&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1b3b95&gt;) (__closure=0x7fc4104111e8, privateStream=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1b3b95&gt;) at ../../Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:230
#9  0x00007fc44d878866 in WTF::Function&lt;void(WTF::RefPtr&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;)&gt;::CallableWrapper&lt;WebCore::UserMediaRequest::allow(WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;)::&lt;lambda(WTF::RefPtr&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;)&gt; &gt;::call(&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1b3b95&gt;) (this=0x7fc4104111e0, in#0=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1b3b95&gt;) at DerivedSources/ForwardingHeaders/wtf/Function.h:101
#10 0x00007fc44e933b62 in WTF::Function&lt;void(WTF::RefPtr&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;)&gt;::operator()(&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x16e583&gt;) const (this=0x7ffe8de38df0, in#0=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x16e583&gt;) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#11 0x00007fc44e928591 in (anonymous namespace)::RealtimeMediaSourceCenter::createMediaStream(&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15d532&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xf4c77&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xfacb6&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xfacb6&gt;, const (anonymous namespace)::MediaStreamRequest &amp;) (this=0x7fc454fe5bc0 &lt;_ZZN7WebCore25RealtimeMediaSourceCenter9singletonEvE6center&gt;, completionHandler=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15d532&gt;, hashSalt=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xf4c77&gt;, audioDevice=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xfacb6&gt;, videoDevice=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xfacb6&gt;, request=...) at ../../Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:104
#12 0x00007fc44d875302 in (anonymous namespace)::UserMediaRequest::allow(&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13f04a&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13f04a&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13e972&gt;) (this=0x7fc42a0f4380, audioDevice=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13f04a&gt;, videoDevice=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13f04a&gt;, deviceIdentifierHashSalt=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13e972&gt;) at ../../Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:242
#13 0x00007fc44c9a20d7 in (anonymous namespace)::UserMediaPermissionRequestManager::userMediaAccessWasGranted(uint64_t, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x220d51&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x220d51&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1ee37a&gt;) (this=0x11e4e60, requestID=1, audioDevice=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x220d51&gt;, videoDevice=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x220d51&gt;, deviceIdentifierHashSalt=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1ee37a&gt;) at ../../Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:158
#14 0x00007fc44cb1316e in (anonymous namespace)::WebPage::userMediaAccessWasGranted(uint64_t, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049&gt;) (this=0x7fc42c5c1000, userMediaID=1, audioDevice=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, videoDevice=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, mediaDeviceIdentifierHashSalt=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049&gt;) at /app/webkit/Source/WebKit/WebProcess/WebPage/WebPage.cpp:4019
#15 0x00007fc44c11e9ff in IPC::callMemberFunctionImpl&lt;WebKit::WebPage, void (WebKit::WebPage::*)(long unsigned int, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;), std::tuple&lt;long unsigned int, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String&gt;, 0ul, 1ul, 2ul, 3ul&gt;((anonymous namespace)::WebPage *, void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c&gt;), &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13482a&gt;, std::index_sequence) (object=0x7fc42c5c1000, function=(void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c&gt;)) 0x7fc44cb130f6 &lt;(anonymous namespace)::WebPage::userMediaAccessWasGranted(uint64_t, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049&gt;)&gt;, args=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13482a&gt;) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:41
#16 0x00007fc44c117134 in IPC::callMemberFunction&lt;WebKit::WebPage, void (WebKit::WebPage::*)(long unsigned int, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;), std::tuple&lt;long unsigned int, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String&gt; &gt;(&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13482a&gt;, (anonymous namespace)::WebPage *, void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c&gt;)) (args=&lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13482a&gt;, object=0x7fc42c5c1000, function=(void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c&gt;)) 0x7fc44cb130f6 &lt;(anonymous namespace)::WebPage::userMediaAccessWasGranted(uint64_t, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049&gt;)&gt;) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:47
#17 0x00007fc44c112069 in IPC::handleMessage&lt;Messages::WebPage::UserMediaAccessWasGranted, WebKit::WebPage, void (WebKit::WebPage::*)(long unsigned int, WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;)&gt;(IPC::Decoder &amp;, (anonymous namespace)::WebPage *, void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c&gt;)) (decoder=..., object=0x7fc42c5c1000, function=(void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c&gt;)) 0x7fc44cb130f6 &lt;(anonymous namespace)::WebPage::userMediaAccessWasGranted(uint64_t, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0&gt;, &lt;unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049&gt;)&gt;) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:133
#18 0x00007fc44c106d11 in (anonymous namespace)::WebPage::didReceiveWebPageMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=0x7fc42c5c1000, connection=..., decoder=...) at /app/webkit/WebKitBuild/Debug/DerivedSources/WebKit/WebPageMessageReceiver.cpp:1196
#19 0x00007fc44cb13e80 in (anonymous namespace)::WebPage::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=0x7fc42c5c1000, connection=..., decoder=...) at /app/webkit/Source/WebKit/WebProcess/WebPage/WebPage.cpp:4315
#20 0x00007fc44c36cc51 in IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=0xebf190, connection=..., decoder=...) at /app/webkit/Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:123
#21 0x00007fc44c84f722 in (anonymous namespace)::WebProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) (this=0xebf120, connection=..., decoder=...) at ../../Source/WebKit/WebProcess/WebProcess.cpp:660
#22 0x00007fc44c34a278 in IPC::Connection::dispatchMessage(IPC::Decoder&amp;) (this=0x7fc42c5e6000, decoder=...) at /app/webkit/Source/WebKit/Platform/IPC/Connection.cpp:978
#23 0x00007fc44c34a3ed in IPC::Connection::dispatchMessage(std::unique_ptr&lt;IPC::Decoder, std::default_delete&lt;IPC::Decoder&gt; &gt;) (this=0x7fc42c5e6000, message=std::unique_ptr&lt;IPC::Decoder&gt; containing 0x7fc4104fe360) at /app/webkit/Source/WebKit/Platform/IPC/Connection.cpp:1005
#24 0x00007fc44c34a8c3 in IPC::Connection::dispatchOneIncomingMessage() (this=0x7fc42c5e6000) at /app/webkit/Source/WebKit/Platform/IPC/Connection.cpp:1074
#25 0x00007fc44c349fc0 in IPC::Connection::&lt;lambda()&gt;::operator()(void) (__closure=0x7fc42c5e52e8) at /app/webkit/Source/WebKit/Platform/IPC/Connection.cpp:956
#26 0x00007fc44c351dc8 in WTF::Function&lt;void()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::unique_ptr&lt;IPC::Decoder&gt;)::&lt;lambda()&gt; &gt;::call(void) (this=0x7fc42c5e52e0) at DerivedSources/ForwardingHeaders/wtf/Function.h:101
#27 0x00007fc44c1427b6 in WTF::Function&lt;void()&gt;::operator()(void) const (this=0x7ffe8de3b5c0) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#28 0x00007fc441704ac2 in WTF::RunLoop::performWork() (this=0x7fc42c5f9000) at /app/webkit/Source/WTF/wtf/RunLoop.cpp:106
#29 0x00007fc441779010 in WTF::RunLoop::&lt;lambda(gpointer)&gt;::operator()(gpointer) const (__closure=0x0, userData=0x7fc42c5f9000) at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:68
#30 0x00007fc441779034 in WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer) () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:70
#31 0x00007fc441778fb0 in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::operator()(GSource *, GSourceFunc, gpointer) const (__closure=0x0, source=0xebe9e0, callback=0x7fc441779017 &lt;WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer)&gt;, userData=0x7fc42c5f9000) at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#32 0x00007fc441778fdf in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::_FUN(GSource *, GSourceFunc, gpointer) () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:46
#33 0x00007fc43728e96a in g_main_context_dispatch () at /lib/libglib-2.0.so.0
#34 0x00007fc43728ed28 in  () at /lib/libglib-2.0.so.0
#35 0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#36 0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#37 0x00007fc44cb87261 in (anonymous namespace)::ChildProcessMain&lt;WebKit::WebProcess, WebKit::WebProcessMain&gt;(int, char**) (argc=3, argv=0x7ffe8de3b9c8) at ../../Source/WebKit/Shared/unix/ChildProcessMain.h:61
#38 0x00007fc44cb8451e in (anonymous namespace)::WebProcessMainUnix(int, char**) (argc=3, argv=0x7ffe8de3b9c8) at ../../Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:67
#39 0x0000000000400d31 in main(int, char**) (argc=3, argv=0x7ffe8de3b9c8) at /app/webkit/Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:52



----


For some reason the webrtc test are not run in debug mode so we could not notice the regression in the dashboard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494135</commentid>
    <comment_count>12</comment_count>
    <who name="Thibault Saunier">tsaunier</who>
    <bug_when>2019-01-14 06:51:43 -0800</bug_when>
    <thetext>Reported issue is fixed by https://bugs.webkit.org/show_bug.cgi?id=193397</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494213</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-14 11:14:35 -0800</bug_when>
    <thetext>(In reply to Thibault Saunier from comment #12)
&gt; Reported issue is fixed by https://bugs.webkit.org/show_bug.cgi?id=193397

Thank you for fixing this Thibault, my apologies for missing it!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358577</attachid>
            <date>2019-01-07 22:55:06 -0800</date>
            <delta_ts>2019-01-10 11:08:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193230-20190108195504.patch</filename>
            <type>text/plain</type>
            <size>19268</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Njc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I3MThkMTAyYjI3YzA1
ZmI0Nzk3NDdiOTM2OGY1OGY5MjRlOTNlMi4uMGFmYWM0NmFmNGU5NTYwOWFkMjRiZTkyMWM3Mzhh
NjdhOTFmYzFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTAxLTA3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIERlZmluZSBwYWdl
IG1lZGlhIHN0YXRlIGZsYWdzIGZvciBkaXNwbGF5IGNhcHR1cmUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyMzAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ3MDk1MTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtbXV0ZWQu
aHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6Om1lZGlhU3RhdGUgY29uc3Qp
OgorICAgICAgICAqIHBhZ2UvTWVkaWFQcm9kdWNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5
Q2FwdHVyZVNvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9X
aW5kb3dEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYWdlTWVkaWFTdGF0ZSk6CisKIDIwMTktMDEt
MDcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNd
IE1hcmdpbiBjb2xsYXBzaW5nIHNob3VsZCBub3QgYmUgbGltaXRlZCB0byBpbi1mbG93IG5vbi1y
ZXBsYWNlZCBib3hlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGMxOTlhYWFhZTVhY2JiMjRkMTQ0Y2RlMDhiNGI4
ZGQxM2I0OWIwNy4uNDc4MGE4ODE4NTlmZTcyOWFiMTFkMGYzYmUxNzk1NTJiYTllZjU1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0wMS0wNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBEZWZpbmUgcGFnZSBtZWRpYSBzdGF0ZSBmbGFn
cyBmb3IgZGlzcGxheSBjYXB0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkzMjMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzA5NTE0Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0TWVkaWFTdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6U291cmNlKToKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3VyY2UpOgorCiAy
MDE5LTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTW9kZXJuaXplIENhY2hlTW9kZWwgYW5kIGRpc2sgY2FjaGUgZmV0Y2hpbmcgYW5k
IGNsZWFyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA2YTdmMTQ2Y2ExYzRkN2U1MTVhMTU0ODUxZGY5
YmQzN2EwNTNkMTgzLi5mOTgyMWU1MjAwZWEzMjk5ODBjZTQ1NzU1YTBmZDhiY2Y2N2FjN2MxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAKQEAgLTM4NiwxMiArMzg2LDEzIEBAIE1lZGlhUHJvZHVjZXI6Ok1lZGlh
U3RhdGVGbGFncyBNZWRpYVN0cmVhbVRyYWNrOjptZWRpYVN0YXRlKCkgY29uc3QKICAgICAgICAg
aWYgKG1fcHJpdmF0ZS0+aXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gSGFz
QWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNlOwogICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gZGV2
aWNlVHlwZSA9IHNvdXJjZSgpLmRldmljZVR5cGUoKTsKICAgICAgICAgaWYgKHNvdXJjZSgpLmlu
dGVycnVwdGVkKCkgJiYgIXBhZ2VDYXB0dXJlTXV0ZWQpCi0gICAgICAgICAgICByZXR1cm4gSGFz
SW50ZXJydXB0ZWRWaWRlb0NhcHR1cmVEZXZpY2U7CisgICAgICAgICAgICByZXR1cm4gZGV2aWNl
VHlwZSA9PSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEgPyBIYXNJbnRlcnJ1cHRl
ZFZpZGVvQ2FwdHVyZURldmljZSA6IEhhc0ludGVycnVwdGVkU2NyZWVuQ2FwdHVyZURldmljZTsK
ICAgICAgICAgaWYgKG11dGVkKCkpCi0gICAgICAgICAgICByZXR1cm4gSGFzTXV0ZWRWaWRlb0Nh
cHR1cmVEZXZpY2U7CisgICAgICAgICAgICByZXR1cm4gZGV2aWNlVHlwZSA9PSBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEgPyBIYXNNdXRlZFZpZGVvQ2FwdHVyZURldmljZSA6IEhh
c011dGVkU2NyZWVuQ2FwdHVyZURldmljZTsKICAgICAgICAgaWYgKG1fcHJpdmF0ZS0+aXNQcm9k
dWNpbmdEYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gSGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2
aWNlOworICAgICAgICAgICAgcmV0dXJuIGRldmljZVR5cGUgPT0gQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZTo6Q2FtZXJhID8gSGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlIDogSGFzQWN0aXZl
U2NyZWVuQ2FwdHVyZURldmljZTsKICAgICB9CiAKICAgICByZXR1cm4gSXNOb3RQbGF5aW5nOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhUHJvZHVjZXIuaAppbmRleCA5OTlhMmZkMzFkNmFlNzkzZmQ2NmFi
YWJlMzJhYmY4MmQxYjgxYjcyLi42NDAwZjkyNTIzOWMyMTllNzM4OTE1NTYwMzNjOGZkNWNhZGM1
YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhUHJvZHVjZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhUHJvZHVjZXIuaApAQCAtNDksMTAgKzQ5LDE0IEBA
IHB1YmxpYzoKICAgICAgICAgSGFzSW50ZXJydXB0ZWRBdWRpb0NhcHR1cmVEZXZpY2UgPSAxIDw8
IDE1LAogICAgICAgICBIYXNJbnRlcnJ1cHRlZFZpZGVvQ2FwdHVyZURldmljZSA9IDEgPDwgMTYs
CiAgICAgICAgIEhhc1VzZXJJbnRlcmFjdGVkV2l0aE1lZGlhRWxlbWVudCA9IDEgPDwgMTcsCisg
ICAgICAgIEhhc0FjdGl2ZVNjcmVlbkNhcHR1cmVEZXZpY2UgPSAxIDw8IDE4LAorICAgICAgICBI
YXNNdXRlZFNjcmVlbkNhcHR1cmVEZXZpY2UgPSAxIDw8IDE5LAorICAgICAgICBIYXNJbnRlcnJ1
cHRlZFNjcmVlbkNhcHR1cmVEZXZpY2UgPSAxIDw8IDIwLAogCiAgICAgICAgIEF1ZGlvQ2FwdHVy
ZU1hc2sgPSBIYXNBY3RpdmVBdWRpb0NhcHR1cmVEZXZpY2UgfCBIYXNNdXRlZEF1ZGlvQ2FwdHVy
ZURldmljZSB8IEhhc0ludGVycnVwdGVkQXVkaW9DYXB0dXJlRGV2aWNlLAogICAgICAgICBWaWRl
b0NhcHR1cmVNYXNrID0gSGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlIHwgSGFzTXV0ZWRWaWRl
b0NhcHR1cmVEZXZpY2UgfCBIYXNJbnRlcnJ1cHRlZFZpZGVvQ2FwdHVyZURldmljZSwKLSAgICAg
ICAgTWVkaWFDYXB0dXJlTWFzayA9IEF1ZGlvQ2FwdHVyZU1hc2sgfCBWaWRlb0NhcHR1cmVNYXNr
LAorICAgICAgICBTY3JlZW5DYXB0dXJlTWFzayA9IEhhc0FjdGl2ZVNjcmVlbkNhcHR1cmVEZXZp
Y2UgfCBIYXNNdXRlZFNjcmVlbkNhcHR1cmVEZXZpY2UgfCBIYXNJbnRlcnJ1cHRlZFNjcmVlbkNh
cHR1cmVEZXZpY2UsCisgICAgICAgIE1lZGlhQ2FwdHVyZU1hc2sgPSBBdWRpb0NhcHR1cmVNYXNr
IHwgVmlkZW9DYXB0dXJlTWFzayB8IFNjcmVlbkNhcHR1cmVNYXNrLAogICAgIH07CiAgICAgdHlw
ZWRlZiB1bnNpZ25lZCBNZWRpYVN0YXRlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuY3BwCmluZGV4IDkwN2I5YjYxODJjYTJiZGY3OGJkMGRmY2Q3ZDkyZjlhYzI4ODYw
YTIuLjljNzUyODFjMGUxNjQ2NDJkZGI4MWRlMjBmOTRmMGU1ZGU2Mjc0NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OlJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJm
YWNlPiYmIHZpZGVvVHJhY2ssIFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKLSAgICA6IFJlYWx0aW1l
TWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW8sICJyZW1vdGUgdmlk
ZW8iX3MsIFdURk1vdmUodmlkZW9UcmFja0lkKSkKKyAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2Uo
VHlwZTo6VmlkZW8sICJyZW1vdGUgdmlkZW8iX3MsIFdURk1vdmUodmlkZW9UcmFja0lkKSkKICAg
ICAsIG1fdmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKQogewogICAgIG5vdGlmeU11dGVk
Q2hhbmdlKCFtX3ZpZGVvVHJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDE2NmM4ZGY1M2Y3
NTVlNWZjNDU4MGQ4NjllODdlOTU5YWQzYjc0OWIuLjhlNDYyYzdlODg2OWVkMjY4YTkwNDk2ZWI3
ZjViZGUwNzhlOWI1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzSXNvbGF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5
cGUoKSBjb25zdCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgbW9uaXRvck9yaWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZp
ZXImKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAppbmRleCA2MDM4MTcyNjNkZWVi
MDM4NDljODcxODY0MTg2NDljMDM0ZjFmYjBkLi44OGZlYmVhYmJlMjJiYmVkMzVkOWY0MDExMTBj
ZTQ1MjI0MjE1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UuaApAQCAtODYsNiArODYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWw7CiAgICAg
dm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmluYWw7CiAgICAgYm9vbCBpc0NhcHR1cmVTb3Vy
Y2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6Q2FtZXJhOyB9CiAgICAgYm9vbCBpbnRlcnJ1cHRlZCgpIGNvbnN0IGZpbmFs
OwogCiAgICAgdm9pZCBzZXRTaXplQW5kRnJhbWVSYXRlV2l0aFByZXNldChJbnRTaXplLCBkb3Vi
bGUsIFJlZlB0cjxWaWRlb1ByZXNldD4pIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlU291cmNlTWFj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWMuaAppbmRleCA5MzkzMDRmNTg2MjdlNzdjNDkxYjE4OWZhODRiNTk1
ZTcxOTRkYWM0Li4wNGI4ZDhjYTgzMjk4OTEyMDA4NDk5NTg5MWU0MTliODQ2MDQ1NmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaApAQCAtNjIsNiArNjIs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAg
dm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgY29tbWl0Q29uZmlndXJh
dGlvbigpIGZpbmFsOworICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjsg
fQogCiAgICAgYm9vbCBjcmVhdGVEaXNwbGF5U3RyZWFtKCk7CiAgICAgdm9pZCBzdGFydERpc3Bs
YXlTdHJlYW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmgK
aW5kZXggMzNkMWI4MTdlOWE5ZTQ1YWJhZmU0ODdkZTM1ZjFkN2EzMTcyM2FlMC4uNWY0OWYyYjNk
Njg2MjU5ZjI5Mzc0YTE1NmZlZDExOGRhNWQ2M2MxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlU291cmNlTWFj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rp
c3BsYXlDYXB0dXJlU291cmNlTWFjLmgKQEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKIAogICAg
IERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFt
ZSgpIGZpbmFsOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZh
Y2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6OldpbmRvdzsgfQorICAgIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdzsgfQogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IHdpbmRvd0ltYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAppbmRleCA4MTliM2U4MDEyYTU4ZTkwN2E4
YjUxNTgyZGVlNGVhM2IwNDY2OTczLi5hMmY5NGI3Y2U3ZWViNjYxMTEyMzlhNTI2YTc5ZDYwZGI1
NzI1NjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC02NCw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB0aWNrKCk7CiAKICAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpNaWNyb3Bob25l
OyB9CiAKICAgICB2b2lkIGRlbGF5U2FtcGxlcyhTZWNvbmRzKSBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5o
CmluZGV4IGRkMjE1Yjk0YmE4ZjNhNmM2ZWU4MGEzMDQ0NGQ2NDJhOWJkNmI5ZTAuLjNjN2UyOWUy
MzI1Nzg1ZTM4YTQxZjNiZGI1MGI2OWU5YjkyMGZhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTY4LDYg
KzY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwog
ICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICBib29sIGlzQ2FwdHVyZVNv
dXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpDYW1lcmE7IH0KICAgICBib29sIHN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0
ZShPcHRpb25hbDxpbnQ+IHdpZHRoLCBPcHRpb25hbDxpbnQ+IGhlaWdodCwgT3B0aW9uYWw8ZG91
YmxlPikgZmluYWw7CiAgICAgdm9pZCBzZXRTaXplQW5kRnJhbWVSYXRlKE9wdGlvbmFsPGludD4g
d2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxkb3VibGU+KSBmaW5hbDsKICAg
ICB2b2lkIHNldFNpemVBbmRGcmFtZVJhdGVXaXRoUHJlc2V0KEludFNpemUsIGRvdWJsZSwgUmVm
UHRyPFZpZGVvUHJlc2V0PikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggM2MwYTU5ZjFkNzJmMWQ0YTI4NWE4MTVhNDE3MjE2OGQ3NzFlODIzYS4uNjc3MWM3MDA5
ZGEwMTk5MTE0MjY1ODlkYWE5ZmMxYjYxYWUzMGNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtNDAyNSw2ICs0MDI1LDEwIEBAIFN0cmluZyBJbnRlcm5hbHM6OnBhZ2VN
ZWRpYVN0YXRlKCkKICAgICAgICAgc3RyaW5nLmFwcGVuZCgiSGFzTXV0ZWRWaWRlb0NhcHR1cmVE
ZXZpY2UsIik7CiAgICAgaWYgKHN0YXRlICYgTWVkaWFQcm9kdWNlcjo6SGFzVXNlckludGVyYWN0
ZWRXaXRoTWVkaWFFbGVtZW50KQogICAgICAgICBzdHJpbmcuYXBwZW5kKCJIYXNVc2VySW50ZXJh
Y3RlZFdpdGhNZWRpYUVsZW1lbnQsIik7CisgICAgaWYgKHN0YXRlICYgTWVkaWFQcm9kdWNlcjo6
SGFzQWN0aXZlU2NyZWVuQ2FwdHVyZURldmljZSkKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgiSGFz
QWN0aXZlU2NyZWVuQ2FwdHVyZURldmljZSwiKTsKKyAgICBpZiAoc3RhdGUgJiBNZWRpYVByb2R1
Y2VyOjpIYXNNdXRlZFNjcmVlbkNhcHR1cmVEZXZpY2UpCisgICAgICAgIHN0cmluZy5hcHBlbmQo
Ikhhc011dGVkU2NyZWVuQ2FwdHVyZURldmljZSwiKTsKIAogICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpKQogICAgICAgICBzdHJpbmcuYXBwZW5kKCJJc05vdFBsYXlpbmciKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDYzZDUxYjFmMTUyNDdhN2E1YzQ0Zjdk
NzFlZjc3YmY1YjRiYTkxZGQuLmEzNGY4YThjOWM5ZjBkODAyZDE3Y2E0MzJiNmFlMmEwYTNlOGFm
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjY1Myw2
ICsyNjUzLDEwIEBAIFdLTWVkaWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0YXRlKFdLUGFnZVJlZiBw
YWdlKQogICAgICAgICBzdGF0ZSB8PSBrV0tNZWRpYUhhc011dGVkQXVkaW9DYXB0dXJlRGV2aWNl
OwogICAgIGlmIChjb3JlU3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpIYXNNdXRlZFZp
ZGVvQ2FwdHVyZURldmljZSkKICAgICAgICAgc3RhdGUgfD0ga1dLTWVkaWFIYXNNdXRlZFZpZGVv
Q2FwdHVyZURldmljZTsKKyAgICBpZiAoY29yZVN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6SGFzQWN0aXZlU2NyZWVuQ2FwdHVyZURldmljZSkKKyAgICAgICAgc3RhdGUgfD0ga1dLTWVk
aWFIYXNBY3RpdmVTY3JlZW5DYXB0dXJlRGV2aWNlOworICAgIGlmIChjb3JlU3RhdGUgJiBXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpIYXNNdXRlZFNjcmVlbkNhcHR1cmVEZXZpY2UpCisgICAgICAg
IHN0YXRlIHw9IGtXS01lZGlhSGFzTXV0ZWRTY3JlZW5DYXB0dXJlRGV2aWNlOwogCiAgICAgcmV0
dXJuIHN0YXRlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJp
dmF0ZS5oCmluZGV4IGJiMjZkZThhYmYxNWRkNGRhMWE0NDEwOGVmZWYwNDAyNTFkZWUyYWEuLjc2
NmQ0MzUzOTY2ZjJiYjEwZWU4MGYxZWI0MTQ4NGRkZDVlYjFhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKQEAgLTE0OCw2ICsxNDgsOCBAQCBl
bnVtIHsKICAgICBrV0tNZWRpYUhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSA9IDEgPDwgMywK
ICAgICBrV0tNZWRpYUhhc011dGVkQXVkaW9DYXB0dXJlRGV2aWNlID0gMSA8PCA0LAogICAgIGtX
S01lZGlhSGFzTXV0ZWRWaWRlb0NhcHR1cmVEZXZpY2UgPSAxIDw8IDUsCisgICAga1dLTWVkaWFI
YXNBY3RpdmVTY3JlZW5DYXB0dXJlRGV2aWNlID0gMSA8PCA2LAorICAgIGtXS01lZGlhSGFzTXV0
ZWRTY3JlZW5DYXB0dXJlRGV2aWNlID0gMSA8PCA3LAogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tN
ZWRpYVN0YXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCBkZTI1YzY5ZTkxMjlkNWQzMTgx
ZGQ3YmFiN2ZkNTRiM2ZmYWY5NDhlLi44YzM2M2I0YzY5ZWFlMjg1YTMwZmY1ZDNmMWE0NTA5NTJh
ODZjYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTU2LDEwICs1NiwxMSBAQCBzdGF0aWMg
dWludDY0X3QgbmV4dFNlc3Npb25JRCgpCiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
OjpTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgU291
cmNlKFN0cmluZyYmIHNvdXJjZUlELCBUeXBlIHR5cGUsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYm
IGhhc2hTYWx0LCB1aW50NjRfdCBpZCwgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXImIG1hbmFnZXIp
CisgICAgU291cmNlKFN0cmluZyYmIHNvdXJjZUlELCBUeXBlIHR5cGUsIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGUgZGV2aWNlVHlwZSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQs
IHVpbnQ2NF90IGlkLCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciYgbWFuYWdlcikKICAgICAgICAg
OiBSZWFsdGltZU1lZGlhU291cmNlKHR5cGUsIFdURk1vdmUobmFtZSksIFdURk1vdmUoc291cmNl
SUQpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKICAgICAgICAgLCBtX2lkKGlkKQogICAgICAgICAsIG1f
bWFuYWdlcihtYW5hZ2VyKQorICAgICAgICAsIG1fZGV2aWNlVHlwZShkZXZpY2VUeXBlKQogICAg
IHsKICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6QXVkaW8pCiAgICAgICAgICAgICBtX3JpbmdC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOwpAQCAtMTc4LDYgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fbWFuYWdlci5zdGFy
dFByb2R1Y2luZ0RhdGEobV9pZCk7IH0KICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmlu
YWwgeyBtX21hbmFnZXIuc3RvcFByb2R1Y2luZ0RhdGEobV9pZCk7IH0KICAgICBib29sIGlzQ2Fw
dHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rldmlj
ZVR5cGU7IH0KIAogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2UKICAgICB2b2lkIGJlZ2luQ29u
ZmlndXJhdGlvbigpIGZpbmFsIHsgfQpAQCAtMTk3LDYgKzE5OSw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPENBUmluZ0J1ZmZlcj4gbV9yaW5nQnVmZmVyOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247
CisgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBtX2RldmljZVR5cGUgeyBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duIH07CiAKICAgICBzdHJ1Y3QgQXBwbHlDb25zdHJhaW50
c0NhbGxiYWNrIHsKICAgICAgICAgU3VjY2Vzc0hhbmRsZXIgc3VjY2Vzc0hhbmRsZXI7CkBAIC0y
NTEsNyArMjU0LDcgQEAgV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3VyY2UoY29uc3QKICAgICAgICAgcmV0dXJuIFdU
Rk1vdmUoZXJyb3JNZXNzYWdlKTsKIAogICAgIGF1dG8gdHlwZSA9IGRldmljZS50eXBlKCkgPT0g
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWljcm9waG9uZSA/IFdlYkNvcmU6OlJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZTo6VmlkZW87Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IFNvdXJjZShTdHJp
bmc6Om51bWJlcihpZCksIHR5cGUsIFN0cmluZyB7IHNldHRpbmdzLmxhYmVsKCkgfSwgV1RGTW92
ZShoYXNoU2FsdCksIGlkLCAqdGhpcykpOworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5l
dyBTb3VyY2UoU3RyaW5nOjpudW1iZXIoaWQpLCB0eXBlLCBkZXZpY2UudHlwZSgpLCBTdHJpbmcg
eyBzZXR0aW5ncy5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpLCBpZCwgKnRoaXMpKTsKICAg
ICBzb3VyY2UtPnNldFNldHRpbmdzKFdURk1vdmUoc2V0dGluZ3MpKTsKICAgICBtX3NvdXJjZXMu
c2V0KGlkLCBzb3VyY2UuY29weVJlZigpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6Q2FwdHVyZVNv
dXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNDg2MzgyNjE4Nzg4ZjI5ODRl
MTg1ZDg3OTE2OWY4ZGUzOTY0Njk1Li44NGYwOGQ1ODcwYjk0NjNiYTlkOWFmODg2OTYwNmI0MmQw
ZjU5MDViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMDcgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRGVmaW5lIHBhZ2UgbWVkaWEgc3Rh
dGUgZmxhZ3MgZm9yIGRpc3BsYXkgY2FwdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzIzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDcw
OTUxNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLW11dGVkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1tdXRl
ZC5odG1sOiBBZGRlZC4KKwogMjAxOS0wMS0wNyAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRy
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10gU2tpcCBjc3MtcGFpbnRpbmctYXBp
IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldC1kaXNw
bGF5LW1lZGlhLW11dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0LWRpc3BsYXktbWVkaWEtbXV0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5YzYz
MjIyNGRlMzQ4OGFkMjkxYjY3ZmIyZDBhNWQzYTcwYzBkM2QKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLW11dGVkLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBNdXRlIHZpZGVvIHRyYWNrIGR1cmluZyBz
Y3JlZW4gY2FwdHVyZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9nZXQtZGlzcGxheS1tZWRpYS1tdXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1tdXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhMWI2NGMzN2My
MTFkY2ZkMGFmNzY2ODZlODBjODE4ZGJlMGYwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLW11dGVkLmh0bWwKQEAgLTAs
MCArMSw3MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICA8dGl0bGU+TXV0ZSBzY3JlZW4gY2FwdHVyZSwgbWFrZSBzdXJl
IHBhZ2Ugc3RhdGUgdXBkYXRlcyBjb3JyZWN0bHkuPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0PgorCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
LnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICBmdW5jdGlvbiB3YWl0Rm9yUGFn
ZVN0YXRlQ2hhbmdlKG51bWJlck9mVHJpZXMsIG9yaWdpbmFsU3RhdGUsIHJlc29sdmUsIHJlamVj
dCkKKyAgICB7CisgICAgICAgIGxldCBuZXdTdGF0ZSA9IGludGVybmFscy5wYWdlTWVkaWFTdGF0
ZSgpOworICAgICAgICBpZiAobmV3U3RhdGUgIT0gb3JpZ2luYWxTdGF0ZSkgeworICAgICAgICAg
ICAgcmVzb2x2ZShuZXdTdGF0ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAobnVtYmVyT2ZUcmllcyA8PSAwKSB7CisgICAgICAgICAgICByZWplY3QoJ1Bh
Z2Ugc3RhdGUgZGlkIG5vdCBjaGFuZ2UgaW4gdGltZS4nKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB3YWl0Rm9yUGFnZVN0YXRl
Q2hhbmdlKC0tbnVtYmVyT2ZUcmllcywgb3JpZ2luYWxTdGF0ZSwgcmVzb2x2ZSwgcmVqZWN0KTsg
fSwgMTApOworICAgIH0KKworICAgIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAgICAg
IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKHsg
dmlkZW86IHRydWUgfSk7CisgICAgICAgIGxldCB0cmFjayA9IHN0cmVhbS5nZXRWaWRlb1RyYWNr
cygpWzBdOworCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBs
ZXQgcGFnZU1lZGlhU3RhdGUgPSBpbnRlcm5hbHMucGFnZU1lZGlhU3RhdGUoKTsKKyAgICAgICAg
ICAgIGFzc2VydF9mYWxzZShwYWdlTWVkaWFTdGF0ZS5pbmNsdWRlcygnSGFzTXV0ZWRTY3JlZW5D
YXB0dXJlRGV2aWNlJyksICdwYWdlIHN0YXRlIGRvZXMgbm90IGluY2x1ZGUgSGFzTXV0ZWRTY3Jl
ZW5DYXB0dXJlRGV2aWNlIDEnKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShwYWdlTWVkaWFT
dGF0ZS5pbmNsdWRlcygnSGFzTXV0ZWRWaWRlb0NhcHR1cmVEZXZpY2UnKSwgJ3BhZ2Ugc3RhdGUg
ZG9lcyBub3QgaW5jbHVkZSBIYXNNdXRlZFZpZGVvQ2FwdHVyZURldmljZScpOworICAgICAgICAg
ICAgYXNzZXJ0X2ZhbHNlKHBhZ2VNZWRpYVN0YXRlLmluY2x1ZGVzKCdIYXNNdXRlZEF1ZGlvQ2Fw
dHVyZURldmljZScpLCAncGFnZSBzdGF0ZSBkb2VzIG5vdCBpbmNsdWRlIEhhc011dGVkQXVkaW9D
YXB0dXJlRGV2aWNlJyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgdHJhY2sub251bm11dGUgPSAoKSA9
PiByZWplY3QoIkdvdCAndW5tdXRlJyBldmVudCB1bmV4cGVjdGVkbHkhIik7CisgICAgICAgICAg
ICB0cmFjay5vbm11dGUgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgbmV3IFByb21pc2UoKGlu
bmVyUmVzb2x2ZSwgaW5uZXJSZWplY3QpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgd2FpdEZv
clBhZ2VTdGF0ZUNoYW5nZSgxMCwgaW50ZXJuYWxzLnBhZ2VNZWRpYVN0YXRlKCksIGlubmVyUmVz
b2x2ZSwgaW5uZXJSZWplY3QpCisgICAgICAgICAgICAgICAgfSkudGhlbigocGFnZU1lZGlhU3Rh
dGUpID0+IHsKKworICAgICAgICAgICAgICAgICAgICB0cmFjay5vbnVubXV0ZSA9IChldnQpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRGb3JQYWdlU3RhdGVDaGFuZ2UoMTAsIGlu
dGVybmFscy5wYWdlTWVkaWFTdGF0ZSgpLCByZXNvbHZlLCByZWplY3QpOworICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHBhZ2VNZWRpYVN0YXRlLmluY2x1
ZGVzKCdIYXNNdXRlZFNjcmVlbkNhcHR1cmVEZXZpY2UnKSwgJ3BhZ2Ugc3RhdGUgaW5jbHVkZXMg
SGFzTXV0ZWRTY3JlZW5DYXB0dXJlRGV2aWNlJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfZmFsc2UocGFnZU1lZGlhU3RhdGUuaW5jbHVkZXMoJ0hhc0FjdGl2ZVNjcmVlbkNhcHR1
cmVEZXZpY2UnKSwgJ3BhZ2Ugc3RhdGUgZG9lcyBub3QgaW5jbHVkZSBIYXNBY3RpdmVTY3JlZW5D
YXB0dXJlRGV2aWNlJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TWVk
aWFTdHJlYW1UcmFja011dGVkKHRyYWNrLCBmYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNZWRpYVN0cmVhbVRy
YWNrTXV0ZWQodHJhY2ssIHRydWUpOworICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWpl
Y3QoIk11dGVkIHN0YXRlIGRpZCBub3QgY2hhbmdlIGluIC41IHNlY29uZCIpLCA1MDApOworICAg
ICAgICB9KTsKKworICAgIH0sICJNdXRlIHZpZGVvIHRyYWNrIGR1cmluZyBzY3JlZW4gY2FwdHVy
ZSIpOworCisKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358809</attachid>
            <date>2019-01-10 11:08:25 -0800</date>
            <delta_ts>2019-01-10 12:48:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193230-20190111080823.patch</filename>
            <type>text/plain</type>
            <size>24720</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Njc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I3MThkMTAyYjI3YzA1
ZmI0Nzk3NDdiOTM2OGY1OGY5MjRlOTNlMi4uNTdjZGRhZWRjNWRiYzJkODIyYjBjZTA1ZTU3NGQ2
ZWNkMDY2ZmQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTAxLTA3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIERlZmluZSBwYWdl
IG1lZGlhIHN0YXRlIGZsYWdzIGZvciBkaXNwbGF5IGNhcHR1cmUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyMzAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ3MDk1MTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisK
KyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1tdXRlZC5o
dG1sCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6bWVkaWFTdGF0ZSBjb25zdCk6
CisgICAgICAgICogcGFnZS9NZWRpYVByb2R1Y2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291
cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlD
YXB0dXJlU291cmNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dp
bmRvd0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnBhZ2VNZWRpYVN0YXRlKToKKwogMjAxOS0wMS0w
NyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0JGQ10g
TWFyZ2luIGNvbGxhcHNpbmcgc2hvdWxkIG5vdCBiZSBsaW1pdGVkIHRvIGluLWZsb3cgbm9uLXJl
cGxhY2VkIGJveGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0YzE5OWFhYWFlNWFjYmIyNGQxNDRjZGUwOGI0Yjhk
ZDEzYjQ5YjA3Li41YTRjMzI5YTA0NGU3NTBhODYyNjM3MWU2ZjExYWM0NzBjYzc1NjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTAxLTA3ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIERlZmluZSBwYWdlIG1lZGlhIHN0YXRlIGZsYWdz
IGZvciBkaXNwbGF5IGNhcHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTMyMzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MDk1MTQyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUdldE1lZGlhU3RhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OlNvdXJjZSk6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpjcmVhdGVDYXB0dXJlU291cmNlKToKKwogMjAx
OS0wMS0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIE1vZGVybml6ZSBDYWNoZU1vZGVsIGFuZCBkaXNrIGNhY2hlIGZldGNoaW5nIGFuZCBj
bGVhcmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggNmE3ZjE0NmNhMWM0ZDdlNTE1YTE1NDg1MWRmOWJk
MzdhMDUzZDE4My4uZDgzYzViNzRlMTAyMWRhZjEwZGNhNDQ2MDU3M2ZjMThjYTRkMWVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCkBAIC0zODYsMTIgKzM4NiwxNCBAQCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0
YXRlRmxhZ3MgTWVkaWFTdHJlYW1UcmFjazo6bWVkaWFTdGF0ZSgpIGNvbnN0CiAgICAgICAgIGlm
IChtX3ByaXZhdGUtPmlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIEhhc0Fj
dGl2ZUF1ZGlvQ2FwdHVyZURldmljZTsKICAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGRldmlj
ZVR5cGUgPSBzb3VyY2UoKS5kZXZpY2VUeXBlKCk7CisgICAgICAgIEFTU0VSVChkZXZpY2VUeXBl
ID09IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkNhbWVyYSB8fCBkZXZpY2VUeXBlID09IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiB8fCBkZXZpY2VUeXBlID09IENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdyk7CiAgICAgICAgIGlmIChzb3VyY2UoKS5pbnRlcnJ1
cHRlZCgpICYmICFwYWdlQ2FwdHVyZU11dGVkKQotICAgICAgICAgICAgcmV0dXJuIEhhc0ludGVy
cnVwdGVkVmlkZW9DYXB0dXJlRGV2aWNlOworICAgICAgICAgICAgcmV0dXJuIGRldmljZVR5cGUg
PT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhID8gSGFzSW50ZXJydXB0ZWRWaWRl
b0NhcHR1cmVEZXZpY2UgOiBIYXNJbnRlcnJ1cHRlZERpc3BsYXlDYXB0dXJlRGV2aWNlOwogICAg
ICAgICBpZiAobXV0ZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBIYXNNdXRlZFZpZGVvQ2FwdHVy
ZURldmljZTsKKyAgICAgICAgICAgIHJldHVybiBkZXZpY2VUeXBlID09IENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OkNhbWVyYSA/IEhhc011dGVkVmlkZW9DYXB0dXJlRGV2aWNlIDogSGFzTXV0
ZWREaXNwbGF5Q2FwdHVyZURldmljZTsKICAgICAgICAgaWYgKG1fcHJpdmF0ZS0+aXNQcm9kdWNp
bmdEYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gSGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNl
OworICAgICAgICAgICAgcmV0dXJuIGRldmljZVR5cGUgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6Q2FtZXJhID8gSGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlIDogSGFzQWN0aXZlRGlz
cGxheUNhcHR1cmVEZXZpY2U7CiAgICAgfQogCiAgICAgcmV0dXJuIElzTm90UGxheWluZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFQcm9kdWNlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKaW5kZXggOTk5YTJmZDMxZDZhZTc5M2ZkNjZhYmFi
ZTMyYWJmODJkMWI4MWI3Mi4uZDY0ODhhZjc0MmYyMGY1N2YxNjQzOGVhODY5YWY3MmQ5OWE2MGM4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVByb2R1Y2VyLmgKQEAgLTQ5LDEwICs0OSwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIEhhc0ludGVycnVwdGVkQXVkaW9DYXB0dXJlRGV2aWNlID0gMSA8PCAx
NSwKICAgICAgICAgSGFzSW50ZXJydXB0ZWRWaWRlb0NhcHR1cmVEZXZpY2UgPSAxIDw8IDE2LAog
ICAgICAgICBIYXNVc2VySW50ZXJhY3RlZFdpdGhNZWRpYUVsZW1lbnQgPSAxIDw8IDE3LAorICAg
ICAgICBIYXNBY3RpdmVEaXNwbGF5Q2FwdHVyZURldmljZSA9IDEgPDwgMTgsCisgICAgICAgIEhh
c011dGVkRGlzcGxheUNhcHR1cmVEZXZpY2UgPSAxIDw8IDE5LAorICAgICAgICBIYXNJbnRlcnJ1
cHRlZERpc3BsYXlDYXB0dXJlRGV2aWNlID0gMSA8PCAyMCwKIAogICAgICAgICBBdWRpb0NhcHR1
cmVNYXNrID0gSGFzQWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNlIHwgSGFzTXV0ZWRBdWRpb0NhcHR1
cmVEZXZpY2UgfCBIYXNJbnRlcnJ1cHRlZEF1ZGlvQ2FwdHVyZURldmljZSwKICAgICAgICAgVmlk
ZW9DYXB0dXJlTWFzayA9IEhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSB8IEhhc011dGVkVmlk
ZW9DYXB0dXJlRGV2aWNlIHwgSGFzSW50ZXJydXB0ZWRWaWRlb0NhcHR1cmVEZXZpY2UsCi0gICAg
ICAgIE1lZGlhQ2FwdHVyZU1hc2sgPSBBdWRpb0NhcHR1cmVNYXNrIHwgVmlkZW9DYXB0dXJlTWFz
aywKKyAgICAgICAgRGlzcGxheUNhcHR1cmVNYXNrID0gSGFzQWN0aXZlRGlzcGxheUNhcHR1cmVE
ZXZpY2UgfCBIYXNNdXRlZERpc3BsYXlDYXB0dXJlRGV2aWNlIHwgSGFzSW50ZXJydXB0ZWREaXNw
bGF5Q2FwdHVyZURldmljZSwKKyAgICAgICAgTWVkaWFDYXB0dXJlTWFzayA9IEF1ZGlvQ2FwdHVy
ZU1hc2sgfCBWaWRlb0NhcHR1cmVNYXNrIHwgRGlzcGxheUNhcHR1cmVNYXNrLAogICAgIH07CiAg
ICAgdHlwZWRlZiB1bnNpZ25lZCBNZWRpYVN0YXRlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAppbmRleCA0NDdhODlm
ODE4MmRiOGVhNDI3MWY0YmFjNGMzZTE2OTc4NjEwNTA4Li4xOGE5ZjA2ZjIzYWMzZWExMjcxMDMy
MjQ5YzlkYzRhMzBiOTY5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ2FwdHVyZURldmljZSB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFz
cyBEZXZpY2VUeXBlIHsgVW5rbm93biwgTWljcm9waG9uZSwgQ2FtZXJhLCBTY3JlZW4sIEFwcGxp
Y2F0aW9uLCBXaW5kb3csIEJyb3dzZXIgfTsKKyAgICBlbnVtIGNsYXNzIERldmljZVR5cGUgeyBV
bmtub3duLCBNaWNyb3Bob25lLCBDYW1lcmEsIFNjcmVlbiwgV2luZG93IH07CiAKICAgICBDYXB0
dXJlRGV2aWNlKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElkLCBEZXZpY2VUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCA9IGVtcHR5U3RyaW5nKCkp
CiAgICAgICAgIDogbV9wZXJzaXN0ZW50SWQocGVyc2lzdGVudElkKQpAQCAtMTIxLDkgKzEyMSw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZT4gewogICAgICAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpNaWNyb3Bob25lLAogICAgICAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpDYW1lcmEsCiAgICAgICAgIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNj
cmVlbiwKLSAgICAgICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6QXBwbGlj
YXRpb24sCi0gICAgICAgIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRv
dywKLSAgICAgICAgV2ViQ29yZTo6Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6QnJvd3Nlcgor
ICAgICAgICBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpXaW5kb3cKICAgICA+
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggOTA3Yjli
NjE4MmNhMmJkZjc4YmQwZGZjZDdkOTJmOWFjMjg4NjBhMi4uOWM3NTI4MWMwZTE2NDY0MmRkYjgx
ZGUyMGY5NGYwZTVkZTYyNzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uu
Y3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+JiYgdmlkZW9UcmFjaywgU3RyaW5n
JiYgdmlkZW9UcmFja0lkKQotICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlOjpWaWRlbywgInJlbW90ZSB2aWRlbyJfcywgV1RGTW92ZSh2aWRlb1RyYWNr
SWQpKQorICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShUeXBlOjpWaWRlbywgInJlbW90ZSB2aWRl
byJfcywgV1RGTW92ZSh2aWRlb1RyYWNrSWQpKQogICAgICwgbV92aWRlb1RyYWNrKFdURk1vdmUo
dmlkZW9UcmFjaykpCiB7CiAgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fdmlkZW9UcmFjayk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmgKaW5kZXggMTY2YzhkZjUzZjc1NWU1ZmM0NTgwZDg2OWU4N2U5NTlhZDNi
NzQ5Yi4uOGU0NjJjN2U4ODY5ZWQyNjhhOTA0OTZlYjdmNWJkZTA3OGU5YjVmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuaApAQCAtMTYxLDYgKzE2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNJc29sYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNDYXB0dXJlU291cmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd247IH0KIAogICAgIHZpcnR1YWwgdm9pZCBtb25p
dG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5oCmluZGV4IDYwMzgxNzI2M2RlZWIwMzg0OWM4NzE4NjQxODY0OWMwMzRmMWZi
MGQuLjg4ZmViZWFiYmUyMmJiZWQzNWQ5ZjQwMTExMGNlNDUyMjQyMTUxYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZp
ZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC04Niw2ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBi
ZWdpbkNvbmZpZ3VyYXRpb24oKSBmaW5hbDsKICAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24o
KSBmaW5hbDsKICAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmE7IH0KICAg
ICBib29sIGludGVycnVwdGVkKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHNldFNpemVBbmRG
cmFtZVJhdGVXaXRoUHJlc2V0KEludFNpemUsIGRvdWJsZSwgUmVmUHRyPFZpZGVvUHJlc2V0Pikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAppbmRleCBl
NTU4OTQzNjA5ODVlNDUwMzYzMmE1MTFmN2IwYWQ1NzAyODUxNDIyLi4yOTRjMThjYTc3M2Y1ZDgz
MWMyNTUyMTMyNGZmZTliOGFmOWNkZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1h
bmFnZXJDb2NvYS5jcHAKQEAgLTEwMywxMCArMTAzLDYgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmlj
ZT4gRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVu
dEkKICAgICAgICAgcmV0dXJuIHdpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGlk
KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OkFwcGxpY2F0aW9uOgotICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6QnJvd3Nl
cjoKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6
OkNhbWVyYToKICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmU6
CiAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCmluZGV4IDg2ZGQ4ZWJjM2U5ZjYx
Nzk4Yzc2NTMwMjgwN2Q2MDQ2MjdhMzUzM2UuLmE2YTBkYWI1YzBiNTVkMTI1MTkzN2FiMGNlNDZk
YjFkYzgyOWY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yy5jcHAKQEAgLTgxLDggKzgxLDYgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAg
ICAgICAgIHJldHVybiBXaW5kb3dEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y3JlYXRlKFN0cmlu
ZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBjb25zdHJhaW50cyk7CiAjZW5kaWYKLSAgICAg
ICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpBcHBsaWNhdGlvbjoKLSAgICAgICAg
Y2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpCcm93c2VyOgogICAgICAgICBjYXNlIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmU6CiAgICAgICAgIGNhc2UgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOgogICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OlVua25vd246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNv
dXJjZU1hYy5oCmluZGV4IDkzOTMwNGY1ODYyN2U3N2M0OTFiMTg5ZmE4NGI1OTVlNzE5NGRhYzQu
LjA0YjhkOGNhODMyOTg5MTIwMDg0OTk1ODkxZTQxOWI4NDYwNDU2ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVy
ZVNvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9TY3JlZW5EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCkBAIC02Miw2ICs2Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQ
cm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKCkgZmlu
YWw7CisgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOyB9CiAKICAgICBi
b29sIGNyZWF0ZURpc3BsYXlTdHJlYW0oKTsKICAgICB2b2lkIHN0YXJ0RGlzcGxheVN0cmVhbSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dp
bmRvd0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaAppbmRleCAzM2Qx
YjgxN2U5YTllNDVhYmFmZTQ4N2RlMzVmMWQ3YTMxNzIzYWUwLi41ZjQ5ZjJiM2Q2ODYyNTlmMjkz
NzRhMTU2ZmVkMTE4ZGE1ZDYzYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1
cmVTb3VyY2VNYWMuaApAQCAtNTEsNiArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYTo6RGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkgZmluYWw7
CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUgc3Vy
ZmFjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6V2luZG93OyB9CisgICAgQ2FwdHVyZURldmljZTo6RGV2
aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6V2luZG93OyB9CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gd2luZG93
SW1hZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZS5oCmluZGV4IDgxOWIzZTgwMTJhNThlOTA3YThiNTE1ODJkZWU0
ZWEzYjA0NjY5NzMuLmEyZjk0YjdjZTdlZWI2NjExMTIzOWE1MjZhNzlkNjBkYjU3MjU2ODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpY2soKTsK
IAogICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3JvcGhvbmU7IH0KIAogICAg
IHZvaWQgZGVsYXlTYW1wbGVzKFNlY29uZHMpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwCmluZGV4IDEyOTZhMzcxOTllNzE5NDkyZTFhMjE5NTIxNThhZTY2YmJlYTFjNDAuLjgx
MjZhYmQyY2VmN2E0ZDhiZmM1YmQyZGVlZjc2MjJkYmU2MDhlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwCkBAIC0xMTYsOCArMTE2LDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OldpbmRvdzoKICAgICAgICAgICAgIHJldHVybiBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQo
KSB9LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBTdHJpbmcgeyB9LCBjb25zdHJhaW50cyk7
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpBcHBsaWNhdGlvbjoKLSAgICAgICAgY2FzZSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpCcm93c2VyOgogICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6Ok1pY3Jv
cGhvbmU6CiAgICAgICAgIGNhc2UgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6Q2FtZXJhOgog
ICAgICAgICBjYXNlIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd246CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmgKaW5kZXggZGQyMTViOTRiYThmM2E2YzZlZTgwYTMwNDQ0ZDY0MmE5YmQ2YjllMC4uM2M3ZTI5
ZTIzMjU3ODVlMzhhNDFmM2JkYjUwYjY5ZTliOTIwZmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNjgs
NiArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7
CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIGJvb2wgaXNDYXB0dXJl
U291cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OkNhbWVyYTsgfQogICAgIGJvb2wgc3VwcG9ydHNTaXplQW5kRnJhbWVS
YXRlKE9wdGlvbmFsPGludD4gd2lkdGgsIE9wdGlvbmFsPGludD4gaGVpZ2h0LCBPcHRpb25hbDxk
b3VibGU+KSBmaW5hbDsKICAgICB2b2lkIHNldFNpemVBbmRGcmFtZVJhdGUoT3B0aW9uYWw8aW50
PiB3aWR0aCwgT3B0aW9uYWw8aW50PiBoZWlnaHQsIE9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwog
ICAgIHZvaWQgc2V0U2l6ZUFuZEZyYW1lUmF0ZVdpdGhQcmVzZXQoSW50U2l6ZSwgZG91YmxlLCBS
ZWZQdHI8VmlkZW9QcmVzZXQ+KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCAzYzBhNTlmMWQ3MmYxZDRhMjg1YTgxNWE0MTcyMTY4ZDc3MWU4MjNhLi5iMzAxZTA2
NDBmNTc5MDNmMzRhNmI2ZjM1NjJiOGNkNDhjYTliY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC00MDI1LDYgKzQwMjUsMTAgQEAgU3RyaW5nIEludGVybmFsczo6cGFn
ZU1lZGlhU3RhdGUoKQogICAgICAgICBzdHJpbmcuYXBwZW5kKCJIYXNNdXRlZFZpZGVvQ2FwdHVy
ZURldmljZSwiKTsKICAgICBpZiAoc3RhdGUgJiBNZWRpYVByb2R1Y2VyOjpIYXNVc2VySW50ZXJh
Y3RlZFdpdGhNZWRpYUVsZW1lbnQpCiAgICAgICAgIHN0cmluZy5hcHBlbmQoIkhhc1VzZXJJbnRl
cmFjdGVkV2l0aE1lZGlhRWxlbWVudCwiKTsKKyAgICBpZiAoc3RhdGUgJiBNZWRpYVByb2R1Y2Vy
OjpIYXNBY3RpdmVEaXNwbGF5Q2FwdHVyZURldmljZSkKKyAgICAgICAgc3RyaW5nLmFwcGVuZCgi
SGFzQWN0aXZlRGlzcGxheUNhcHR1cmVEZXZpY2UsIik7CisgICAgaWYgKHN0YXRlICYgTWVkaWFQ
cm9kdWNlcjo6SGFzTXV0ZWREaXNwbGF5Q2FwdHVyZURldmljZSkKKyAgICAgICAgc3RyaW5nLmFw
cGVuZCgiSGFzTXV0ZWREaXNwbGF5Q2FwdHVyZURldmljZSwiKTsKIAogICAgIGlmIChzdHJpbmcu
aXNFbXB0eSgpKQogICAgICAgICBzdHJpbmcuYXBwZW5kKCJJc05vdFBsYXlpbmciKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDYzZDUxYjFmMTUyNDdhN2E1
YzQ0ZjdkNzFlZjc3YmY1YjRiYTkxZGQuLmQ0ZWU4Y2MwYjVmZDlhODUzNTYyZGJlMDBkNTczMTM3
Nzg4YzFmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAt
MjY1Myw2ICsyNjUzLDEwIEBAIFdLTWVkaWFTdGF0ZSBXS1BhZ2VHZXRNZWRpYVN0YXRlKFdLUGFn
ZVJlZiBwYWdlKQogICAgICAgICBzdGF0ZSB8PSBrV0tNZWRpYUhhc011dGVkQXVkaW9DYXB0dXJl
RGV2aWNlOwogICAgIGlmIChjb3JlU3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpIYXNN
dXRlZFZpZGVvQ2FwdHVyZURldmljZSkKICAgICAgICAgc3RhdGUgfD0ga1dLTWVkaWFIYXNNdXRl
ZFZpZGVvQ2FwdHVyZURldmljZTsKKyAgICBpZiAoY29yZVN0YXRlICYgV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6SGFzQWN0aXZlRGlzcGxheUNhcHR1cmVEZXZpY2UpCisgICAgICAgIHN0YXRlIHw9
IGtXS01lZGlhSGFzQWN0aXZlRGlzcGxheUNhcHR1cmVEZXZpY2U7CisgICAgaWYgKGNvcmVTdGF0
ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Okhhc011dGVkRGlzcGxheUNhcHR1cmVEZXZpY2Up
CisgICAgICAgIHN0YXRlIHw9IGtXS01lZGlhSGFzTXV0ZWREaXNwbGF5Q2FwdHVyZURldmljZTsK
IAogICAgIHJldHVybiBzdGF0ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVByaXZhdGUuaAppbmRleCBiYjI2ZGU4YWJmMTVkZDRkYTFhNDQxMDhlZmVmMDQwMjUx
ZGVlMmFhLi5lMDllMmRhNGMxMzA1MjJhZGQ1OGM0ZWUyZjY3OGEzY2Q5OTg4NTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCkBAIC0xNDgsNiAr
MTQ4LDggQEAgZW51bSB7CiAgICAga1dLTWVkaWFIYXNBY3RpdmVWaWRlb0NhcHR1cmVEZXZpY2Ug
PSAxIDw8IDMsCiAgICAga1dLTWVkaWFIYXNNdXRlZEF1ZGlvQ2FwdHVyZURldmljZSA9IDEgPDwg
NCwKICAgICBrV0tNZWRpYUhhc011dGVkVmlkZW9DYXB0dXJlRGV2aWNlID0gMSA8PCA1LAorICAg
IGtXS01lZGlhSGFzQWN0aXZlRGlzcGxheUNhcHR1cmVEZXZpY2UgPSAxIDw8IDYsCisgICAga1dL
TWVkaWFIYXNNdXRlZERpc3BsYXlDYXB0dXJlRGV2aWNlID0gMSA8PCA3LAogfTsKIHR5cGVkZWYg
dWludDMyX3QgV0tNZWRpYVN0YXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IGQ2N2M2NmQzNmNkMGRiZDc5ZDc5NGJjZDQyM2MwNjA2NTdjMmRlNTcuLjA1NmQ1YzM0MmRkMDVi
NTI5YzZmMjZhMTI5YjcyMDdmZTQxMzQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
CkBAIC0xNDksOCArMTQ5LDYgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Ojpj
cmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW46
CiAgICAgY2FzZSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpXaW5kb3c6Ci0g
ICAgY2FzZSBXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpBcHBsaWNhdGlvbjoK
LSAgICBjYXNlIFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkJyb3dzZXI6CiAg
ICAgICAgIHNvdXJjZU9yRXJyb3IgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0
b24oKS5kaXNwbGF5Q2FwdHVyZUZhY3RvcnkoKS5jcmVhdGVEaXNwbGF5Q2FwdHVyZVNvdXJjZShk
ZXZpY2UsICZjb25zdHJhaW50cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmlu
ZGV4IGRlMjVjNjllOTEyOWQ1ZDMxODFkZDdiYWI3ZmQ1NGIzZmZhZjk0OGUuLmUyYjUxOWNlMzRh
NDNlMGM1YWQ4NzU0NjhkNThjYzM1ZTFmNWEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAt
NTYsMTEgKzU2LDEzIEBAIHN0YXRpYyB1aW50NjRfdCBuZXh0U2Vzc2lvbklEKCkKIAogY2xhc3Mg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlIHsKIHB1YmxpYzoKLSAgICBTb3VyY2UoU3RyaW5nJiYgc291cmNlSUQsIFR5cGUgdHlwZSwg
U3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQsIHVpbnQ2NF90IGlkLCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlciYgbWFuYWdlcikKKyAgICBTb3VyY2UoU3RyaW5nJiYgc291cmNlSUQsIFR5
cGUgdHlwZSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlLCBTdHJpbmcmJiBu
YW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgdWludDY0X3QgaWQsIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyJiBtYW5hZ2VyKQogICAgICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UodHlwZSwgV1RGTW92
ZShuYW1lKSwgV1RGTW92ZShzb3VyY2VJRCksIFdURk1vdmUoaGFzaFNhbHQpKQogICAgICAgICAs
IG1faWQoaWQpCiAgICAgICAgICwgbV9tYW5hZ2VyKG1hbmFnZXIpCisgICAgICAgICwgbV9kZXZp
Y2VUeXBlKGRldmljZVR5cGUpCiAgICAgeworICAgICAgICBBU1NFUlQoZGV2aWNlVHlwZSA9PSBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpDYW1lcmEgfHwgZGV2aWNlVHlwZSA9PSBDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4gfHwgZGV2aWNlVHlwZSA9PSBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpXaW5kb3cpOwogICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpBdWRpbykK
ICAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVy
PihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRyKSk7CiAgICAg
fQpAQCAtMTc4LDYgKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0Rh
dGEoKSBmaW5hbCB7IG1fbWFuYWdlci5zdGFydFByb2R1Y2luZ0RhdGEobV9pZCk7IH0KICAgICB2
b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWwgeyBtX21hbmFnZXIuc3RvcFByb2R1Y2luZ0Rh
dGEobV9pZCk7IH0KICAgICBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2RldmljZVR5cGU7IH0KIAogICAgIC8vIFJlYWx0aW1lTWVk
aWFTb3VyY2UKICAgICB2b2lkIGJlZ2luQ29uZmlndXJhdGlvbigpIGZpbmFsIHsgfQpAQCAtMTk3
LDYgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENBUmluZ0J1ZmZlcj4g
bV9yaW5nQnVmZmVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247CisgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZSBtX2RldmljZVR5cGUgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duIH07CiAK
ICAgICBzdHJ1Y3QgQXBwbHlDb25zdHJhaW50c0NhbGxiYWNrIHsKICAgICAgICAgU3VjY2Vzc0hh
bmRsZXIgc3VjY2Vzc0hhbmRsZXI7CkBAIC0yNTEsNyArMjU1LDcgQEAgV2ViQ29yZTo6Q2FwdHVy
ZVNvdXJjZU9yRXJyb3IgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OmNyZWF0ZUNhcHR1cmVTb3Vy
Y2UoY29uc3QKICAgICAgICAgcmV0dXJuIFdURk1vdmUoZXJyb3JNZXNzYWdlKTsKIAogICAgIGF1
dG8gdHlwZSA9IGRldmljZS50eXBlKCkgPT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6TWlj
cm9waG9uZSA/IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW87Ci0gICAgYXV0byBzb3VyY2Ug
PSBhZG9wdFJlZigqbmV3IFNvdXJjZShTdHJpbmc6Om51bWJlcihpZCksIHR5cGUsIFN0cmluZyB7
IHNldHRpbmdzLmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCksIGlkLCAqdGhpcykpOworICAg
IGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBTb3VyY2UoU3RyaW5nOjpudW1iZXIoaWQpLCB0
eXBlLCBkZXZpY2UudHlwZSgpLCBTdHJpbmcgeyBzZXR0aW5ncy5sYWJlbCgpIH0sIFdURk1vdmUo
aGFzaFNhbHQpLCBpZCwgKnRoaXMpKTsKICAgICBzb3VyY2UtPnNldFNldHRpbmdzKFdURk1vdmUo
c2V0dGluZ3MpKTsKICAgICBtX3NvdXJjZXMuc2V0KGlkLCBzb3VyY2UuY29weVJlZigpKTsKICAg
ICByZXR1cm4gV2ViQ29yZTo6Q2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNDg2MzgyNjE4Nzg4ZjI5ODRlMTg1ZDg3OTE2OWY4ZGUzOTY0Njk1Li43NzlhNDkx
YzBiMTIzYTU0MjdiY2JmNzQ0YjFjMDNmYTFmYWNmZGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTktMDEtMDcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgRGVmaW5lIHBhZ2UgbWVkaWEgc3RhdGUgZmxhZ3MgZm9yIGRpc3BsYXkgY2FwdHVyZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzIzMAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDcwOTUxNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXkt
bWVkaWEtbXV0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL2dldC1kaXNwbGF5LW1lZGlhLW11dGVkLmh0bWw6IEFkZGVkLgorCiAyMDE5LTAxLTA3ICBD
bGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1b
R1RLXSBTa2lwIGNzcy1wYWludGluZy1hcGkgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtbXV0ZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1tdXRlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjljNjMyMjI0ZGUzNDg4YWQyOTFiNjdmYjJkMGE1ZDNhNzBj
MGQzZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0
LWRpc3BsYXktbWVkaWEtbXV0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNT
IE11dGUgdmlkZW8gdHJhY2sgZHVyaW5nIHNjcmVlbiBjYXB0dXJlIAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLW11dGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLW11dGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmNmM2U2NzMzMjYxM2JhYTJlOTI0NzNlODA1Mzg1ZGE2NDk5OTkzNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3Bs
YXktbWVkaWEtbXV0ZWQuaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5NdXRl
IHNjcmVlbiBjYXB0dXJlLCBtYWtlIHN1cmUgcGFnZSBzdGF0ZSB1cGRhdGVzIGNvcnJlY3RseS48
L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsK
KworICAgIGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JQYWdlU3RhdGVDaGFuZ2UobnVtYmVyT2ZUcmll
cywgb3JpZ2luYWxTdGF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3lu
YyAocmVzb2x2ZSkgPT4geworICAgICAgICAgICAgd2hpbGUgKG51bWJlck9mVHJpZXMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxzLnBhZ2VNZWRpYVN0YXRlKCkgIT0gb3JpZ2luYWxT
dGF0ZSkgeworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geyBzZXRUaW1lb3V0KHJl
c29sdmUsIDEwKSB9KTsKKyAgICAgICAgICAgICAgICAtLW51bWJlck9mVHJpZXM7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAgICAgYXdhaXQgbmV3
IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgbGV0IHN0
cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKHsgdmlk
ZW86IHRydWUgfSk7CisgICAgICAgICAgICBsZXQgcGFnZU1lZGlhU3RhdGUgPSBpbnRlcm5hbHMu
cGFnZU1lZGlhU3RhdGUoKTsKKworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHBhZ2VNZWRpYVN0
YXRlLmluY2x1ZGVzKCdIYXNNdXRlZERpc3BsYXlDYXB0dXJlRGV2aWNlJyksICdwYWdlIHN0YXRl
IGRvZXMgbm90IGluY2x1ZGUgSGFzTXV0ZWREaXNwbGF5Q2FwdHVyZURldmljZScpOworICAgICAg
ICAgICAgYXNzZXJ0X2ZhbHNlKHBhZ2VNZWRpYVN0YXRlLmluY2x1ZGVzKCdIYXNNdXRlZFZpZGVv
Q2FwdHVyZURldmljZScpLCAncGFnZSBzdGF0ZSBkb2VzIG5vdCBpbmNsdWRlIEhhc011dGVkVmlk
ZW9DYXB0dXJlRGV2aWNlJyk7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UocGFnZU1lZGlhU3Rh
dGUuaW5jbHVkZXMoJ0hhc011dGVkQXVkaW9DYXB0dXJlRGV2aWNlJyksICdwYWdlIHN0YXRlIGRv
ZXMgbm90IGluY2x1ZGUgSGFzTXV0ZWRBdWRpb0NhcHR1cmVEZXZpY2UnKTsKKworICAgICAgICAg
ICAgbGV0IHRyYWNrID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07CisgICAgICAgICAgICB0
cmFjay5vbnVubXV0ZSA9ICgpID0+IHsgYXNzZXJ0X3VucmVhY2hlZCgiR290ICd1bm11dGUnIGV2
ZW50IHVuZXhwZWN0ZWRseSEiKSB9OworCisgICAgICAgICAgICB0cmFjay5vbm11dGUgPSBhc3lu
YyAoZXZ0KSA9PiB7CisKKyAgICAgICAgICAgICAgICBpZiAoIWF3YWl0IHdhaXRGb3JQYWdlU3Rh
dGVDaGFuZ2UoMTAsIHBhZ2VNZWRpYVN0YXRlKSkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
X3VucmVhY2hlZChgUGFnZSBzdGF0ZSBkaWQgbm90IGNoYW5nZSBmcm9tICR7cGFnZU1lZGlhU3Rh
dGV9YCk7CisKKyAgICAgICAgICAgICAgICB0cmFjay5vbnVubXV0ZSA9IGFzeW5jIChldnQpID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhd2FpdCB3YWl0Rm9yUGFnZVN0YXRlQ2hhbmdl
KDEwLCBwYWdlTWVkaWFTdGF0ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKGBQYWdlIHN0YXRlIGRpZCBub3QgY2hhbmdlIGZyb20gJHtwYWdlTWVkaWFTdGF0ZX1g
KTsKKworICAgICAgICAgICAgICAgICAgICBwYWdlTWVkaWFTdGF0ZSA9IGludGVybmFscy5wYWdl
TWVkaWFTdGF0ZSgpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2UocGFnZU1lZGlh
U3RhdGUuaW5jbHVkZXMoJ0hhc011dGVkRGlzcGxheUNhcHR1cmVEZXZpY2UnKSwgJ3BhZ2Ugc3Rh
dGUgZG9lcyBub3QgaW5jbHVkZSBIYXNNdXRlZERpc3BsYXlDYXB0dXJlRGV2aWNlJyk7CisgICAg
ICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHBhZ2VNZWRpYVN0YXRlLmluY2x1ZGVzKCdIYXNB
Y3RpdmVEaXNwbGF5Q2FwdHVyZURldmljZScpLCAncGFnZSBzdGF0ZSBpbmNsdWRlcyBIYXNBY3Rp
dmVEaXNwbGF5Q2FwdHVyZURldmljZScpOworICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCkK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwYWdlTWVkaWFTdGF0ZSA9IGlu
dGVybmFscy5wYWdlTWVkaWFTdGF0ZSgpOworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHBh
Z2VNZWRpYVN0YXRlLmluY2x1ZGVzKCdIYXNNdXRlZERpc3BsYXlDYXB0dXJlRGV2aWNlJyksICdw
YWdlIHN0YXRlIGluY2x1ZGVzIEhhc011dGVkRGlzcGxheUNhcHR1cmVEZXZpY2UnKTsKKyAgICAg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UocGFnZU1lZGlhU3RhdGUuaW5jbHVkZXMoJ0hhc0FjdGl2
ZURpc3BsYXlDYXB0dXJlRGV2aWNlJyksICdwYWdlIHN0YXRlIGRvZXMgbm90IGluY2x1ZGUgSGFz
QWN0aXZlRGlzcGxheUNhcHR1cmVEZXZpY2UnKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TWVkaWFTdHJlYW1UcmFja011dGVkKHRyYWNrLCBmYWxzZSkKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcGFnZU1lZGlhU3RhdGUgPSBpbnRlcm5hbHMucGFnZU1lZGlhU3RhdGUoKTsK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNZWRpYVN0cmVhbVRyYWNrTXV0ZWQodHJhY2ssIHRy
dWUpOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiTXV0ZWQgc3RhdGUg
ZGlkIG5vdCBjaGFuZ2UgaW4gLjUgc2Vjb25kIiksIDUwMCk7CisgICAgICAgIH0pOworICAgIH0s
ICJNdXRlIHZpZGVvIHRyYWNrIGR1cmluZyBzY3JlZW4gY2FwdHVyZSIpOworCisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>