<?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>220979</bug_id>
          
          <creation_ts>2021-01-26 06:45:09 -0800</creation_ts>
          <short_desc>Complete XRSession::requestAnimationFrame implementation</short_desc>
          <delta_ts>2021-04-19 03:28:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebXR</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208988</blocked>
    
    <blocked>221225</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Imanol Fernandez">ifernandez</reporter>
          <assigned_to name="Imanol Fernandez">ifernandez</assigned_to>
          <cc>adachan</cc>
    
    <cc>dino</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1722492</commentid>
    <comment_count>0</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-01-26 06:45:09 -0800</bug_when>
    <thetext>- Properly implement the render loop for immersive and inline XR sessions
- Apply pending render state changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722506</commentid>
    <comment_count>1</comment_count>
      <attachid>418419</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-01-26 07:42:45 -0800</bug_when>
    <thetext>Created attachment 418419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722519</commentid>
    <comment_count>2</comment_count>
      <attachid>418423</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-01-26 08:30:42 -0800</bug_when>
    <thetext>Created attachment 418423
Add co-authors to the changelog messages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723882</commentid>
    <comment_count>3</comment_count>
      <attachid>418423</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2021-01-29 14:22:35 -0800</bug_when>
    <thetext>Comment on attachment 418423
Add co-authors to the changelog messages

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

&gt; Source/WebCore/platform/xr/PlatformXR.h:81
&gt; +    };

To what space are the position and orientation relative to? Any thoughts on how to handle getting poses relative to different reference spaces later?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723906</commentid>
    <comment_count>4</comment_count>
      <attachid>418423</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2021-01-29 15:24:43 -0800</bug_when>
    <thetext>Comment on attachment 418423
Add co-authors to the changelog messages

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

&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:63
&gt; +    bool m_animationFrame;

`m_animationFrame` is set but never used. This can trigger an unused private field warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724175</commentid>
    <comment_count>5</comment_count>
      <attachid>418423</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-02-01 03:06:29 -0800</bug_when>
    <thetext>Comment on attachment 418423
Add co-authors to the changelog messages

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:63
&gt;&gt; +    bool m_animationFrame;
&gt; 
&gt; `m_animationFrame` is set but never used. This can trigger an unused private field warning.

It actually is, see below

if (m_callbacks.size() == 1 &amp;&amp; !m_animationFrame-&gt;isActive())

&gt;&gt; Source/WebCore/platform/xr/PlatformXR.h:81
&gt;&gt; +    };
&gt; 
&gt; To what space are the position and orientation relative to? Any thoughts on how to handle getting poses relative to different reference spaces later?

The user must request a reference space with requestRerefenceSpace(). https://immersive-web.github.io/webxr/#dom-xrsession-requestreferencespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724176</commentid>
    <comment_count>6</comment_count>
      <attachid>418423</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-02-01 03:09:00 -0800</bug_when>
    <thetext>Comment on attachment 418423
Add co-authors to the changelog messages

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

&gt;&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:63
&gt;&gt;&gt; +    bool m_animationFrame;
&gt;&gt; 
&gt;&gt; `m_animationFrame` is set but never used. This can trigger an unused private field warning.
&gt; 
&gt; It actually is, see below
&gt; 
&gt; if (m_callbacks.size() == 1 &amp;&amp; !m_animationFrame-&gt;isActive())

Ah sorry, I replied without checking the context. You&apos;re right.

BTW a bool should not be called like this, better use something like the parameter m_isAnimationFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724179</commentid>
    <comment_count>7</comment_count>
      <attachid>418423</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-01 03:16:28 -0800</bug_when>
    <thetext>Comment on attachment 418423
Add co-authors to the changelog messages

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

&gt;&gt;&gt; Source/WebCore/platform/xr/PlatformXR.h:81
&gt;&gt;&gt; +    };
&gt;&gt; 
&gt;&gt; To what space are the position and orientation relative to? Any thoughts on how to handle getting poses relative to different reference spaces later?
&gt; 
&gt; The user must request a reference space with requestRerefenceSpace(). https://immersive-web.github.io/webxr/#dom-xrsession-requestreferencespace

The poses from the devices are in local coordinates. Then they can be converted to other reference spaces. For local-floor we&apos;ll need to expose the floor transform. I&apos;m going to push a new patch today with all the getViewerPose, Reference space, etc math and more tests passed. This patch is more focused on the animation loop. The FrameData is a placeholder, is going to be completed in the next patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724414</commentid>
    <comment_count>8</comment_count>
      <attachid>418924</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-01 14:23:01 -0800</bug_when>
    <thetext>Created attachment 418924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724427</commentid>
    <comment_count>9</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-01 14:51:30 -0800</bug_when>
    <thetext>Rebased &amp; fixed the m_IsAnimationFrame unused private field.

If you want to check more context, I have pushed the almost complete follow-up patch that implements getPose, getViewerPose and the reference space transformations in https://bugs.webkit.org/show_bug.cgi?id=221225. The idea of this patch is to focus on the render loop for both immersive and inline sessions.

Note that the diff of 221225 also includes this patch. I wish bugs.webkit.org supported dependant patches :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724642</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-02 06:46:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/73878240&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724668</commentid>
    <comment_count>11</comment_count>
      <attachid>418924</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-02 08:25:41 -0800</bug_when>
    <thetext>Comment on attachment 418924
Patch

I am not sure about lifetime safety here, especially since we are using raw pointers.
It would be best to either use Ref or WeakPtr.
Or have a very simple ownership model.

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

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:44
&gt; +WebXRFrame::WebXRFrame(WebXRSession* session)

Can we tighten it by passing a WebXRSession&amp;?

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:45
&gt; +    : m_active(false)

Might be better to set it in header file.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:46
&gt; +    , m_session(session)

WebXRFrame is refcounted so could potentially be kept alive longer than its session.
Might be better to keep a ref or use a weakptr.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:55
&gt; +    return *m_session;

How can we guarantee this?

&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:60
&gt; +    WebXRFrame(WebXRSession*);

explicit

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:59
&gt; +    , m_animationFrame(WebXRFrame::create(this))

Seems like we could use *this there.

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:208
&gt; +    scriptExecutionContext()-&gt;postTask([this, promise = WTFMove(promise), type](auto&amp; context) mutable {

There is no guarantee this will be valid within the callback.

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:221
&gt; +        queueTaskKeepingObjectAlive(*this, TaskSource::WebXR, [this, type, promise = WTFMove(promise), protectedDocument = makeRef(downcast&lt;Document&gt;(context))]() mutable {

Why keeping a protected document here?
I guess context is equal to this-&gt;scriptExecutionContext().
Can we just use that?

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:463
&gt; +    m_device-&gt;requestFrame([this, protectedThis = makeRef(*this)](PlatformXR::Device::FrameData frameData)

s/PlatformXR::Device::FrameDat/auto/

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:464
&gt; +    {

Should be at the end of the next line.

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:479
&gt; +        DOMHighResTimeStamp now = (MonotonicTime::now() - m_timeOrigin).milliseconds();

auto?

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:483
&gt; +        m_animationFrame-&gt;setTime(static_cast&lt;DOMHighResTimeStamp&gt;(frameData.predictedDisplayTime));

Is there a way to not have to do the static_cast.

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:512
&gt; +                callback-&gt;handleEvent(now, m_animationFrame.get());

Is there a chance the event will cancel everything (in which case we should stop everything), or will allow changing m_runningCallbacks synchronously?

&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:475
&gt; +class InlineRequestAnimationFrameCallback: public RequestAnimationFrameCallback {

Should it be final?

&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:482
&gt; +    InlineRequestAnimationFrameCallback(ScriptExecutionContext&amp; scriptExecutionContext, Function&lt;void()&gt;&amp;&amp; callback)

Please move this to private.
Otherwise people can create it outside of create.

&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:487
&gt; +    CallbackResult&lt;void&gt; handleEvent(double highResTimeMs) override

final?
Remove highResTimeMs

&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:507
&gt; +    auto document = downcast&lt;Document&gt;(m_scriptExecutionContext);

What is the guarantee m_scriptExecutionContext will be a Document?
Should constructor take a Document?
What is the guarantee for m_scriptExecutionContext to be valid here?

&gt; Source/WebCore/Modules/webxr/WebXRSystem.h:109
&gt; +        DummyInlineDevice(ScriptExecutionContext&amp;);

explicit

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:205
&gt; +    HTMLCanvasElement* c = WTF::switchOn(m_context, [](const RefPtr&lt;WebGLRenderingContextBase&gt;&amp; baseContext) {

return WTF::switchOn(m_context, [](const RefPtr&lt;WebGLRenderingContextBase&gt;&amp; baseContext) -&gt; HTMLCanvasElement* {
maybe?

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:212
&gt; +            [](RefPtr&lt;OffscreenCanvas&gt;) {

const RefPtr&lt;OffscreenCanvas&gt;&amp;?

&gt; Source/WebCore/platform/xr/PlatformXR.h:96
&gt; +    using RequestFrameCallback = WTF::Function&lt;void(FrameData)&gt;;

No need for WTF::
Probably also want to pass a FrameData&amp;&amp;

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:438
&gt; +        requestFrame([](FrameData) { });

s/FrameData/auto

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:46
&gt; +    m_supportsOrientationTracking = true;

Why not:
    , m_supportsOrientationTracking(true)
Or even better in the header declaration directly.

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:76
&gt; +    runningCallbacks.swap(m_callbacks);

Could be written as:
auto callbacks = WTFMove(m_callbacks)?

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:85
&gt; +        m_frameTimer.startOneShot(15_ms);

Might be good to use a constant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724759</commentid>
    <comment_count>12</comment_count>
      <attachid>418924</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-02-02 10:45:04 -0800</bug_when>
    <thetext>Comment on attachment 418924
Patch

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

Looking pretty good! Thanks Immanol and Sergio.

&gt; Source/WebCore/ChangeLog:9
&gt; +        - Properly implement the render loop for immersive and inline XR sessions
&gt; +        - Apply pending render state changes

It would be nice to have some more info in the ChangeLog. Maybe even per-file notes, for areas where there was a lot of change.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:44
&gt;&gt; +WebXRFrame::WebXRFrame(WebXRSession* session)
&gt; 
&gt; Can we tighten it by passing a WebXRSession&amp;?

See question below. Why did this become a raw pointer rather than a Ref?

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:46
&gt;&gt; +    , m_session(session)
&gt; 
&gt; WebXRFrame is refcounted so could potentially be kept alive longer than its session.
&gt; Might be better to keep a ref or use a weakptr.

Since you can access the session from the XRFrame, I think this need to be a ref. The session itself might get disconnected, but the object still needs to exist.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:55
&gt;&gt; +    return *m_session;
&gt; 
&gt; How can we guarantee this?

+1

If the session can never be null, then we shouldn&apos;t be storing a pointer.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:62
&gt; +    bool m_active;

add { false }

&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:66
&gt; -    Ref&lt;WebXRSession&gt; m_session;
&gt; +    // Session owns the frame.
&gt; +    WebXRSession* m_session;

Why is this now a pointer rather than a Ref? When can a Frame be created without a Session?

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:208
&gt;&gt; +    scriptExecutionContext()-&gt;postTask([this, promise = WTFMove(promise), type](auto&amp; context) mutable {
&gt; 
&gt; There is no guarantee this will be valid within the callback.

weakThis = makeWeakPtr(this)
then check the value in the callback

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:248
&gt; +    if (m_callbacks.size() == 1 &amp;&amp; !m_animationFrame-&gt;isActive())

Why does the number of callbacks need to equal 1? Shouldn&apos;t this just be a non-zero test?

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:463
&gt;&gt; +    m_device-&gt;requestFrame([this, protectedThis = makeRef(*this)](PlatformXR::Device::FrameData frameData)
&gt; 
&gt; s/PlatformXR::Device::FrameDat/auto/

Oh cool. I didn&apos;t know you could do that.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:512
&gt;&gt; +                callback-&gt;handleEvent(now, m_animationFrame.get());
&gt; 
&gt; Is there a chance the event will cancel everything (in which case we should stop everything), or will allow changing m_runningCallbacks synchronously?

The script here can do anything, but it looks like runningCallbacks is only used here, so it might be safe. But that makes me ask why it is exposed as a member variable rather than just a local variable in this block.

&gt; Source/WebCore/platform/xr/PlatformXR.h:87
&gt; +                    float x, y, z, w;

Separate line for each of these.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:435
&gt; +    // Ensure that requestFrame() is called at least one more time to properly end the session.
&gt; +    callOnMainThread([this, weakThis = makeWeakPtr(this)]() {

Why is this necessary? Is this just causing the pending callbacks to be flushed? Wouldn&apos;t it be better to delete them directly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725226</commentid>
    <comment_count>13</comment_count>
      <attachid>418924</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-03 10:57:00 -0800</bug_when>
    <thetext>Comment on attachment 418924
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        - Apply pending render state changes
&gt; 
&gt; It would be nice to have some more info in the ChangeLog. Maybe even per-file notes, for areas where there was a lot of change.

I improved the changelog in the new patch

&gt;&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:46
&gt;&gt;&gt; +    , m_session(session)
&gt;&gt; 
&gt;&gt; WebXRFrame is refcounted so could potentially be kept alive longer than its session.
&gt;&gt; Might be better to keep a ref or use a weakptr.
&gt; 
&gt; Since you can access the session from the XRFrame, I think this need to be a ref. The session itself might get disconnected, but the object still needs to exist.

One of the problems was that session holds a Ref&lt;XRFrame&gt;, and XRFrame another Ref&lt;XRSession&gt; that could cause reference cycles.
The WebXR spec states that session from the XRFrame is always valid so I have added a Ref&lt;XRSession&gt; there, because it needs to keep the session alive. 
In XRSession I have changed Ref&lt;XRFrame&gt; to RefPtr&lt;XRFrame&gt;. This RefPtr is cleaned when the session is ended. I added m_ended bailouts and asserts to make sure that we never access a empty m_animationFrame.

&gt;&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:55
&gt;&gt;&gt; +    return *m_session;
&gt;&gt; 
&gt;&gt; How can we guarantee this?
&gt; 
&gt; +1
&gt; 
&gt; If the session can never be null, then we shouldn&apos;t be storing a pointer.

Not needed anymore after switching to Ref&lt;XRSession&gt;

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:60
&gt;&gt; +    WebXRFrame(WebXRSession*);
&gt; 
&gt; explicit

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:62
&gt;&gt; +    bool m_active;
&gt; 
&gt; add { false }

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:66
&gt;&gt; +    WebXRSession* m_session;
&gt; 
&gt; Why is this now a pointer rather than a Ref? When can a Frame be created without a Session?

Fixes as mentioned in prev comments

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:59
&gt;&gt; +    , m_animationFrame(WebXRFrame::create(this))
&gt; 
&gt; Seems like we could use *this there.

switched to Ref&lt;&gt;

&gt;&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:208
&gt;&gt;&gt; +    scriptExecutionContext()-&gt;postTask([this, promise = WTFMove(promise), type](auto&amp; context) mutable {
&gt;&gt; 
&gt;&gt; There is no guarantee this will be valid within the callback.
&gt; 
&gt; weakThis = makeWeakPtr(this)
&gt; then check the value in the callback

fixed

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:221
&gt;&gt; +        queueTaskKeepingObjectAlive(*this, TaskSource::WebXR, [this, type, promise = WTFMove(promise), protectedDocument = makeRef(downcast&lt;Document&gt;(context))]() mutable {
&gt; 
&gt; Why keeping a protected document here?
&gt; I guess context is equal to this-&gt;scriptExecutionContext().
&gt; Can we just use that?

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:248
&gt;&gt; +    if (m_callbacks.size() == 1 &amp;&amp; !m_animationFrame-&gt;isActive())
&gt; 
&gt; Why does the number of callbacks need to equal 1? Shouldn&apos;t this just be a non-zero test?

I added some comments to make it clearer. Script can add many RAFs but whe only need to request/schedule the frame once. As the callback is being added before to the vector the size for the check is 1.

We could move m_callbacks.append() and use isEmpty() test but even if the frame runs on a next tick, it felt a bit weird to request a callback before all the data was ready (just thinking on the risk of a port calling the lambda on a sync way)

&gt;&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:463
&gt;&gt;&gt; +    m_device-&gt;requestFrame([this, protectedThis = makeRef(*this)](PlatformXR::Device::FrameData frameData)
&gt;&gt; 
&gt;&gt; s/PlatformXR::Device::FrameDat/auto/
&gt; 
&gt; Oh cool. I didn&apos;t know you could do that.

That&apos;s cool, nice C++14 feature :)

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:464
&gt;&gt; +    {
&gt; 
&gt; Should be at the end of the next line.

fixed

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:479
&gt;&gt; +        DOMHighResTimeStamp now = (MonotonicTime::now() - m_timeOrigin).milliseconds();
&gt; 
&gt; auto?

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:483
&gt;&gt; +        m_animationFrame-&gt;setTime(static_cast&lt;DOMHighResTimeStamp&gt;(frameData.predictedDisplayTime));
&gt; 
&gt; Is there a way to not have to do the static_cast.

The problem is that most SDKs provide the data using a long timestamp but JS doesn&apos;t support 64 bit integers. I think is better to make sure we have the most accurate data in the ports and only potentially lose precision in JS.

&gt;&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:512
&gt;&gt;&gt; +                callback-&gt;handleEvent(now, m_animationFrame.get());
&gt;&gt; 
&gt;&gt; Is there a chance the event will cancel everything (in which case we should stop everything), or will allow changing m_runningCallbacks synchronously?
&gt; 
&gt; The script here can do anything, but it looks like runningCallbacks is only used here, so it might be safe. But that makes me ask why it is exposed as a member variable rather than just a local variable in this block.

runningCallbacks is also accessed from cancelRequestAnimationFrame in order to cancel ongoing rafs. Only the `cancel` flag is modified so multiple vector item modifications are not possible.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:475
&gt;&gt; +class InlineRequestAnimationFrameCallback: public RequestAnimationFrameCallback {
&gt; 
&gt; Should it be final?

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:482
&gt;&gt; +    InlineRequestAnimationFrameCallback(ScriptExecutionContext&amp; scriptExecutionContext, Function&lt;void()&gt;&amp;&amp; callback)
&gt; 
&gt; Please move this to private.
&gt; Otherwise people can create it outside of create.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:487
&gt;&gt; +    CallbackResult&lt;void&gt; handleEvent(double highResTimeMs) override
&gt; 
&gt; final?
&gt; Remove highResTimeMs

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSystem.cpp:507
&gt;&gt; +    auto document = downcast&lt;Document&gt;(m_scriptExecutionContext);
&gt; 
&gt; What is the guarantee m_scriptExecutionContext will be a Document?
&gt; Should constructor take a Document?
&gt; What is the guarantee for m_scriptExecutionContext to be valid here?

It uses the same m_scriptExecutionContext from the WebXRSystem, which holds the DummyInlineDevice. The scriptExecutionContext is already downcasted to document in other places in (e.g. WebXRSystem::isSessionSupported)

I have added a make the access to it safer.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSystem.h:109
&gt;&gt; +        DummyInlineDevice(ScriptExecutionContext&amp;);
&gt; 
&gt; explicit

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:205
&gt;&gt; +    HTMLCanvasElement* c = WTF::switchOn(m_context, [](const RefPtr&lt;WebGLRenderingContextBase&gt;&amp; baseContext) {
&gt; 
&gt; return WTF::switchOn(m_context, [](const RefPtr&lt;WebGLRenderingContextBase&gt;&amp; baseContext) -&gt; HTMLCanvasElement* {
&gt; maybe?

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:212
&gt;&gt; +            [](RefPtr&lt;OffscreenCanvas&gt;) {
&gt; 
&gt; const RefPtr&lt;OffscreenCanvas&gt;&amp;?

done

&gt;&gt; Source/WebCore/platform/xr/PlatformXR.h:87
&gt;&gt; +                    float x, y, z, w;
&gt; 
&gt; Separate line for each of these.

done

&gt;&gt; Source/WebCore/platform/xr/PlatformXR.h:96
&gt;&gt; +    using RequestFrameCallback = WTF::Function&lt;void(FrameData)&gt;;
&gt; 
&gt; No need for WTF::
&gt; Probably also want to pass a FrameData&amp;&amp;

done

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:435
&gt;&gt; +    callOnMainThread([this, weakThis = makeWeakPtr(this)]() {
&gt; 
&gt; Why is this necessary? Is this just causing the pending callbacks to be flushed? Wouldn&apos;t it be better to delete them directly?

OpenXR needs to wait for the XR_SESSION_STATE_STOPPING state to properly end the session. We were reusing the frame loop which already checked this event.

I agree that is confusing. I have done some refactor to improve the event handling and added a separate function that handle the shutdown process (which also uses the sessionDidEnd() notification now)

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:438
&gt;&gt; +        requestFrame([](FrameData) { });
&gt; 
&gt; s/FrameData/auto

not needed anymore

&gt;&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:46
&gt;&gt; +    m_supportsOrientationTracking = true;
&gt; 
&gt; Why not:
&gt;     , m_supportsOrientationTracking(true)
&gt; Or even better in the header declaration directly.

in this case is a protected member from base class

&gt;&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:76
&gt;&gt; +    runningCallbacks.swap(m_callbacks);
&gt; 
&gt; Could be written as:
&gt; auto callbacks = WTFMove(m_callbacks)?

done

&gt;&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:85
&gt;&gt; +        m_frameTimer.startOneShot(15_ms);
&gt; 
&gt; Might be good to use a constant

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725229</commentid>
    <comment_count>14</comment_count>
      <attachid>419157</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-03 11:06:46 -0800</bug_when>
    <thetext>Created attachment 419157
Patch

New patch that addresses the review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725583</commentid>
    <comment_count>15</comment_count>
      <attachid>419267</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-04 04:19:10 -0800</bug_when>
    <thetext>Created attachment 419267
Patch

fix nit: move all members of FrameData fov struct to separate lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726609</commentid>
    <comment_count>16</comment_count>
      <attachid>419579</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-08 05:46:10 -0800</bug_when>
    <thetext>Created attachment 419579
Patch

Improve OpenXR event handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726620</commentid>
    <comment_count>17</comment_count>
      <attachid>419584</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-08 06:49:28 -0800</bug_when>
    <thetext>Created attachment 419584
Patch

Rebase and fix changelog nit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726655</commentid>
    <comment_count>18</comment_count>
      <attachid>419584</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-08 08:55:15 -0800</bug_when>
    <thetext>Comment on attachment 419584
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:80
&gt; +    m_animationFrame = WebXRFrame::create(makeRef(*this));

This creates a ref cycle. Is there a way to not create a ref cycle?
Do we need to store the animation frame? As a ref?
If not, how are we making sure to break it? It seems shutdown will break the ref cycle but I am not sure we will always go there.

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:231
&gt; +            auto document = makeRef(downcast&lt;Document&gt;(*scriptExecutionContext()));

There is no guarantee scriptExecutionContext() will not be null, please exit early if null.
Also why refing the document?

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:522
&gt; +            m_runningCallbacks.swap(m_callbacks);

Do we need m_runningCallbacks? Can we just do 
auto runningCallbacks = WTFMove(m_callbacks); or std::exchange

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:536
&gt; +                callback-&gt;handleEvent(now, *m_animationFrame);

This is still a bit weak to have handleEvent here and m_runningCallbacks be accessed elsewhere.
I wonder how we could make this more robust.

&gt; Source/WebCore/Modules/webxr/WebXRSession.h:94
&gt; +    explicit WebXRSession(Document&amp;, WebXRSystem&amp;, XRSessionMode, PlatformXR::Device&amp;);

No need for explicit.

&gt; Source/WebCore/Modules/webxr/WebXRSystem.h:109
&gt; +        DummyInlineDevice(ScriptExecutionContext&amp;);

explicit

&gt; Source/WebCore/Modules/webxr/WebXRSystem.h:118
&gt; +        ScriptExecutionContext* m_scriptExecutionContext;

nullptr here just in case.

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:214
&gt; +    return c;

Can you try to do just: return switchOn(...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726743</commentid>
    <comment_count>19</comment_count>
      <attachid>419584</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-08 12:41:08 -0800</bug_when>
    <thetext>Comment on attachment 419584
Patch

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:80
&gt;&gt; +    m_animationFrame = WebXRFrame::create(makeRef(*this));
&gt; 
&gt; This creates a ref cycle. Is there a way to not create a ref cycle?
&gt; Do we need to store the animation frame? As a ref?
&gt; If not, how are we making sure to break it? It seems shutdown will break the ref cycle but I am not sure we will always go there.

One thing we could do is create a new XRFrame every time, that way we don&apos;t need to hold any references here. This could work well as long as GC/JavaScriptCore correctly handles short lived objects. There were some problems in the spec on some browsers due to creating many new objects in RAFs, being XRFrame one of them. Check this for more context: https://github.com/immersive-web/webxr/issues/1010. The working group decided to allow reusing XRFrame but it&apos;s not mandatory.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:536
&gt;&gt; +                callback-&gt;handleEvent(now, *m_animationFrame);
&gt; 
&gt; This is still a bit weak to have handleEvent here and m_runningCallbacks be accessed elsewhere.
&gt; I wonder how we could make this more robust.

The problem is that XRSession::cancelAnimationFrame needs to mark a pending running callback as cancelled based on the JS code from that RAF specific callback.

I could create a separate set with the pending callbackIds to cancel instead of using m_runningCallbacks vector. I don&apos;t see a way to do it without a extra data structure that is accessed from both cancelAnimationFrame and this loop. Any more ideas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727008</commentid>
    <comment_count>20</comment_count>
      <attachid>419584</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-09 05:15:22 -0800</bug_when>
    <thetext>Comment on attachment 419584
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:80
&gt;&gt;&gt; +    m_animationFrame = WebXRFrame::create(makeRef(*this));
&gt;&gt; 
&gt;&gt; This creates a ref cycle. Is there a way to not create a ref cycle?
&gt;&gt; Do we need to store the animation frame? As a ref?
&gt;&gt; If not, how are we making sure to break it? It seems shutdown will break the ref cycle but I am not sure we will always go there.
&gt; 
&gt; One thing we could do is create a new XRFrame every time, that way we don&apos;t need to hold any references here. This could work well as long as GC/JavaScriptCore correctly handles short lived objects. There were some problems in the spec on some browsers due to creating many new objects in RAFs, being XRFrame one of them. Check this for more context: https://github.com/immersive-web/webxr/issues/1010. The working group decided to allow reusing XRFrame but it&apos;s not mandatory.

I have updated the patch to create a new XRFrame every time. We don&apos;t need to hold it this way. If we find GC issues in the future we can address them in follow-up PRs. Anyway, XRFrame is only created once per frame, while other objects (e.g. XRRigidTransform) can be created many more times, so the impact of XRFrame is really small compared to others.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:231
&gt;&gt; +            auto document = makeRef(downcast&lt;Document&gt;(*scriptExecutionContext()));
&gt; 
&gt; There is no guarantee scriptExecutionContext() will not be null, please exit early if null.
&gt; Also why refing the document?

fixed

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:522
&gt;&gt; +            m_runningCallbacks.swap(m_callbacks);
&gt; 
&gt; Do we need m_runningCallbacks? Can we just do 
&gt; auto runningCallbacks = WTFMove(m_callbacks); or std::exchange

Updated to follow the same pattern as DOMWindow::requestAnimationFrame and DOMWindow::cancelAnimationFrame

&gt;&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:536
&gt;&gt;&gt; +                callback-&gt;handleEvent(now, *m_animationFrame);
&gt;&gt; 
&gt;&gt; This is still a bit weak to have handleEvent here and m_runningCallbacks be accessed elsewhere.
&gt;&gt; I wonder how we could make this more robust.
&gt; 
&gt; The problem is that XRSession::cancelAnimationFrame needs to mark a pending running callback as cancelled based on the JS code from that RAF specific callback.
&gt; 
&gt; I could create a separate set with the pending callbackIds to cancel instead of using m_runningCallbacks vector. I don&apos;t see a way to do it without a extra data structure that is accessed from both cancelAnimationFrame and this loop. Any more ideas?

In the latest patch I have followed the same pattern as the implementation in DOMWindow::requestAnimationFrame and DOMWindow::cancelAnimationFrame. We only have one m_callbacks vector now, and it&apos;s copied before iteration.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.h:94
&gt;&gt; +    explicit WebXRSession(Document&amp;, WebXRSystem&amp;, XRSessionMode, PlatformXR::Device&amp;);
&gt; 
&gt; No need for explicit.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSystem.h:109
&gt;&gt; +        DummyInlineDevice(ScriptExecutionContext&amp;);
&gt; 
&gt; explicit

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSystem.h:118
&gt;&gt; +        ScriptExecutionContext* m_scriptExecutionContext;
&gt; 
&gt; nullptr here just in case.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:214
&gt;&gt; +    return c;
&gt; 
&gt; Can you try to do just: return switchOn(...)

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727009</commentid>
    <comment_count>21</comment_count>
      <attachid>419699</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-09 05:16:56 -0800</bug_when>
    <thetext>Created attachment 419699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727026</commentid>
    <comment_count>22</comment_count>
      <attachid>419709</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-09 06:16:21 -0800</bug_when>
    <thetext>Created attachment 419709
Patch

Rebase onto main</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727038</commentid>
    <comment_count>23</comment_count>
      <attachid>419713</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-09 07:13:00 -0800</bug_when>
    <thetext>Created attachment 419713
Patch

Add missing setFiredOrCancelled() call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727587</commentid>
    <comment_count>24</comment_count>
      <attachid>419713</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-10 09:50:12 -0800</bug_when>
    <thetext>Comment on attachment 419713
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:505
&gt; +            auto callbacks = m_callbacks;

Can we do:
auto callbacks = WTFMove(m_callbacks).

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:508
&gt; +            frame-&gt;setActive(true);

We went from a model where we were reusing the same frame over and over to creating a new frame each time.
This is observable from JS so we should add a test for it.
And verify other browsers are doing the same.

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:527
&gt; +            });

Not needed if we can clear m_callbacks above.

&gt; Source/WebCore/Modules/webxr/WebXRSystem.h:118
&gt; +        ScriptExecutionContext* m_scriptExecutionContext { nullptr };

This is probably incorrect. Let&apos;s make it a ContextDesutrctionObserver.

&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:205
&gt; +    return WTF::switchOn(m_context, [](const RefPtr&lt;WebGLRenderingContextBase&gt;&amp; baseContext) {

What about #if ENABLE(WEBGL2)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728098</commentid>
    <comment_count>25</comment_count>
      <attachid>419713</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-11 08:26:25 -0800</bug_when>
    <thetext>Comment on attachment 419713
Patch

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:505
&gt;&gt; +            auto callbacks = m_callbacks;
&gt; 
&gt; Can we do:
&gt; auto callbacks = WTFMove(m_callbacks).

We can&apos;t because m_callbacks is used in cancelAnimationFrame() in order to set up the fired or cancelled flag. So we need a copy here.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:508
&gt;&gt; +            frame-&gt;setActive(true);
&gt; 
&gt; We went from a model where we were reusing the same frame over and over to creating a new frame each time.
&gt; This is observable from JS so we should add a test for it.
&gt; And verify other browsers are doing the same.

Chromium is also creating a new XRFrame each time. Gecko is using a pool of XRFrames. I&apos;ll create a follow-up issue to track the GC impact of all the potentially short living objects. I know that V8 handles it well because of their three generation GC. SpiderMonkey didn&apos;t handle it as well, so it had to rely on object pooling in general. We can do some profiles in WebKit, but based on my initial tests running some WebXR samples locally it does a good job. I tested it on desktop though, I&apos;ll test it on mobile OpenXR when possible.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:527
&gt;&gt; +            });
&gt; 
&gt; Not needed if we can clear m_callbacks above.

We can&apos;t clear m_callbacks above

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSystem.h:118
&gt;&gt; +        ScriptExecutionContext* m_scriptExecutionContext { nullptr };
&gt; 
&gt; This is probably incorrect. Let&apos;s make it a ContextDesutrctionObserver.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp:205
&gt;&gt; +    return WTF::switchOn(m_context, [](const RefPtr&lt;WebGLRenderingContextBase&gt;&amp; baseContext) {
&gt; 
&gt; What about #if ENABLE(WEBGL2)?

What&apos;s the problem with WebGL2? we are covering both WebGL1 and WebGL2 with the WebGLRenderingContextBase base class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728105</commentid>
    <comment_count>26</comment_count>
      <attachid>419993</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-11 08:36:34 -0800</bug_when>
    <thetext>Created attachment 419993
Patch for landing

Add ContextDestructionObserver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728136</commentid>
    <comment_count>27</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-11 09:26:20 -0800</bug_when>
    <thetext>Committed r272734: &lt;https://commits.webkit.org/r272734&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419993.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418419</attachid>
            <date>2021-01-26 07:42:45 -0800</date>
            <delta_ts>2021-01-26 08:30:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220979-20210126164243.patch</filename>
            <type>text/plain</type>
            <size>45740</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxMzZjYWM0ODhmNDRl
OGEwYTVjYjg3NzNhZDI2YjlmODIxNjkzYi4uMjBmNmRiMTRjOWZhNDViNGJmZWY0MTdiNGE3ZjZj
Yjk3MjFlM2FhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTAxLTI2ICBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIENvbXBsZXRl
IFhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIFByb3Blcmx5IGltcGxl
bWVudCB0aGUgcmVuZGVyIGxvb3AgZm9yIGltbWVyc2l2ZSBhbmQgaW5saW5lIFhSIHNlc3Npb25z
CisgICAgICAgIC0gQXBwbHkgcGVuZGluZyByZW5kZXIgc3RhdGUgY2hhbmdlcworCisgICAgICAg
IFRlc3RlZCBieSB0aGUgV2ViWFIgcGxhdGZvcm0gdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OldlYlhSRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpzZXRU
aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnNldEFjdGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUkZyYW1lOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlbmRl
clN0YXRlOjpzZXRPdXRwdXRDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZW5kZXJT
dGF0ZTo6Y29tcG9zaXRpb25EaXNhYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UlJlbmRlclN0YXRlOjpzZXRDb21wb3NpdGlvbkRpc2FibGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246
OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RS
ZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RB
bmltYXRpb25GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OmFwcGx5UGVu
ZGluZ1JlbmRlclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6ZnJhbWVT
aG91bGRCZVJlbmRlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6
cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6b25GcmFtZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVt
OjpXZWJYUlN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVtbXlJbmxp
bmVEZXZpY2U6OkR1bW15SW5saW5lRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lz
dGVtOjpEdW1teUlubGluZURldmljZTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSU3lzdGVtLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdM
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVyOjpjYW52YXMgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmNvbXBvc2l0aW9uRGlzYWJsZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVyOjpzZXRDb21wb3NpdGlvbkRpc2FibGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgICogcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOgorICAgICAgICAoUGxhdGZvcm1YUjo6
dG9YclJlZmVyZW5jZVNwYWNlVHlwZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZp
Y2U6OmluaXRpYWxpemVSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVu
WFJEZXZpY2U6OnJlc2V0U2Vzc2lvbik6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZp
Y2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAgICAoUGxhdGZvcm1YUjo6
T3BlblhSRGV2aWNlOjpwb2xsRXZlbnRzKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OnNlc3Npb25J
c1Zpc2libGUpOgorICAgICAgICAoUGxhdGZvcm1YUjo6c2Vzc2lvblNob3VsZFN0b3ApOgorICAg
ICAgICAoUGxhdGZvcm1YUjo6c2Vzc2lvbklzQWN0aXZlKToKKyAgICAgICAgKFBsYXRmb3JtWFI6
Ok9wZW5YUkRldmljZTo6YmVnaW5TZXNzaW9uKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OnhyVmll
d1RvVmlld0RhdGEpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpyZXF1ZXN0
RnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmg6
CisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltdWxhdGVkWFJEZXZpY2U6OlNpbXVsYXRlZFhSRGV2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXVsYXRlZFhSRGV2aWNlOjp+U2ltdWxhdGVkWFJEZXZpY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRYUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcpOgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmg6CisKIDIwMjEtMDEt
MjYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNd
IEluY29ycmVjdCBpbmxpbmUgYm94IHdpZHRoIHdpdGggaG9yaXpvbnRhbCBhbGlnbm1lbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IDkzNWRjMTI3
YzlkMDdhN2M4ZDIzODQxNTQ1ODdkNTEzNTg4N2FlMWEuLmVjZmJiYjlkNTExZDZhMDQ1YzQ2ZWVh
YzlkMDgyYTcxYTUyMzM0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UkZyYW1lLmNwcApAQCAtMzYsMTMgKzM2LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSRnJhbWUpOwogCi1SZWY8V2ViWFJGcmFtZT4g
V2ViWFJGcmFtZTo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKK1JlZjxXZWJY
UkZyYW1lPiBXZWJYUkZyYW1lOjpjcmVhdGUoV2ViWFJTZXNzaW9uKiBzZXNzaW9uLCBib29sIGlz
QW5pbWF0aW9uRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJGcmFtZShX
VEZNb3ZlKHNlc3Npb24pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJGcmFtZShz
ZXNzaW9uLCBpc0FuaW1hdGlvbkZyYW1lKSk7CiB9CiAKLVdlYlhSRnJhbWU6OldlYlhSRnJhbWUo
UmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uKQotICAgIDogbV9zZXNzaW9uKFdURk1vdmUoc2Vz
c2lvbikpCitXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKFdlYlhSU2Vzc2lvbiogc2Vzc2lvbiwgYm9v
bCBpc0FuaW1hdGlvbkZyYW1lKQorICAgIDogbV9hY3RpdmUoZmFsc2UpCisgICAgLCBtX2FuaW1h
dGlvbkZyYW1lKGlzQW5pbWF0aW9uRnJhbWUpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKIHsK
IH0KIApAQCAtNTAsNyArNTIsOCBAQCBXZWJYUkZyYW1lOjp+V2ViWFJGcmFtZSgpID0gZGVmYXVs
dDsKIAogY29uc3QgV2ViWFJTZXNzaW9uJiBXZWJYUkZyYW1lOjpzZXNzaW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zZXNzaW9uOworICAgIEFTU0VSVChtX3Nlc3Npb24pOworICAgIHJldHVy
biAqbV9zZXNzaW9uOwogfQogCiBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBXZWJYUkZyYW1lOjpn
ZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAppbmRleCA4MDhhNjc2NGYwZDJjNWFlNjFlNGQ2NThj
MjgyNTA1NzlmZTViNjI3Li44OWJlYzA4YjQyY2ZlYTRjN2JkOTFiMTYxMmU0ZDhjMjZhZTE1M2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiRE9NSGlnaFJlc1RpbWVT
dGFtcC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3MgV2Vi
WFJWaWV3ZXJQb3NlOwogY2xhc3MgV2ViWFJGcmFtZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhS
RnJhbWU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSRnJhbWUpOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYp
OworICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFdlYlhSU2Vzc2lvbiosIGJvb2wg
aXNBbmltYXRpb25GcmFtZSA9IGZhbHNlKTsKICAgICB+V2ViWFJGcmFtZSgpOwogCiAgICAgY29u
c3QgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3Q7CkBAIC01MSwxMCArNTIsMTkgQEAgcHVi
bGljOgogICAgIFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+IGdldFZpZXdlclBvc2UoY29uc3QgV2Vi
WFJSZWZlcmVuY2VTcGFjZSYpOwogICAgIFJlZlB0cjxXZWJYUlBvc2U+IGdldFBvc2UoY29uc3Qg
V2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAorICAgIHZvaWQgc2V0VGltZShET01I
aWdoUmVzVGltZVN0YW1wIHRpbWUpIHsgbV90aW1lID0gdGltZTsgfQorICAgIHZvaWQgc2V0QWN0
aXZlKGJvb2wgYWN0aXZlKSB7IG1fYWN0aXZlID0gYWN0aXZlOyB9CisgICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CisKIHByaXZhdGU6Ci0gICAgV2ViWFJGcmFt
ZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBXZWJYUkZyYW1lKFdlYlhSU2Vzc2lvbiosIGJv
b2wgaXNBbmltYXRpb25GcmFtZSk7CisKKyAgICBib29sIG1fYWN0aXZlOworICAgIGJvb2wgbV9h
bmltYXRpb25GcmFtZTsKKyAgICBET01IaWdoUmVzVGltZVN0YW1wIG1fdGltZTsKIAotICAgIFJl
ZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICAvLyBTZXNzaW9uIG93bnMgdGhlIGZyYW1l
LgorICAgIFdlYlhSU2Vzc2lvbiogbV9zZXNzaW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRl
clN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUu
aAppbmRleCAxZTQzNjNmMWYxOTQzMWU0YTFlYzk1OGYxYmZhMmI0NzA3NDU3N2EyLi5lNmQ0M2Mw
NDY4OTU5OGI1M2RhNmQ0YmJiNzNmMmRjMWE0MTNhMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaApAQCAtNTYsNiArNTYsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0QmFzZUxheWVyKFdlYlhSV2ViR0xMYXllciogYmFzZUxheWVyKSB7
IG1fYmFzZUxheWVyID0gYmFzZUxheWVyOyB9CiAKICAgICBIVE1MQ2FudmFzRWxlbWVudCogb3V0
cHV0Q2FudmFzKCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRDYW52YXMuZ2V0KCk7IH0KKyAgICB2
b2lkIHNldE91dHB1dENhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKSB7IG1fb3V0cHV0
Q2FudmFzID0gbWFrZVdlYWtQdHIoY2FudmFzKTsgfQorCisgICAgYm9vbCBjb21wb3NpdGlvbkRp
c2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGlvbkRpc2FibGVkOyB9CisgICAgdm9p
ZCBzZXRDb21wb3NpdGlvbkRpc2FibGVkKGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCkgeyBtX2Nv
bXBvc2l0aW9uRGlzYWJsZWQgPSBjb21wb3NpdGlvbkRpc2FibGVkOyB9CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgV2ViWFJSZW5kZXJTdGF0ZShPcHRpb25hbDxkb3VibGU+IGZpZWxkT2ZWaWV3
KTsKQEAgLTY5LDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxkb3VibGU+IG1faW5s
aW5lVmVydGljYWxGaWVsZE9mVmlldzsgLy8gaW4gcmFkaWFucwogICAgIFJlZlB0cjxXZWJYUldl
YkdMTGF5ZXI+IG1fYmFzZUxheWVyOwogICAgIFdlYWtQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IG1f
b3V0cHV0Q2FudmFzOworICAgIGJvb2wgbV9jb21wb3NpdGlvbkRpc2FibGVkIHsgZmFsc2UgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBiNjYzZDUyZDA2YmIyMDlhNDM3MWY3YTIxMzEz
OTg4NTNhNzhmNWFiLi44NGNiNTdjYzEyYjYwYThhZjAwZmFiNTM0MGIyNWZjYjljYzZlYzNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCkBAIC01
NSwxMCArNTUsMTUgQEAgV2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Npb24oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Npb25Nb2QKICAgICAsIG1fbW9kZShtb2Rl
KQogICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKICAgICAsIG1fYWN0aXZlUmVu
ZGVyU3RhdGUoV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRlKG1vZGUpKQotICAgICwgbV9hbmltYXRp
b25UaW1lcigqdGhpcywgJldlYlhSU2Vzc2lvbjo6YW5pbWF0aW9uVGltZXJGaXJlZCkKKyAgICAs
IG1fdGltZU9yaWdpbihNb25vdG9uaWNUaW1lOjpub3coKSkKKyAgICAsIG1fYW5pbWF0aW9uRnJh
bWUoV2ViWFJGcmFtZTo6Y3JlYXRlKHRoaXMsIHRydWUpKQogewogICAgIG1fZGV2aWNlLT5pbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcobW9kZSk7CiAKKyAgICAvLyBodHRwczovL2ltbWVy
c2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNyZWYtZm9yLWRvbS14cnJlZmVyZW5jZXNwYWNldHlw
ZS12aWV3ZXIlRTIlOTElQTIKKyAgICAvLyBFdmVyeSBzZXNzaW9uIE1VU1Qgc3VwcG9ydCB2aWV3
ZXIgWFJSZWZlcmVuY2VTcGFjZXMuCisgICAgbV9kZXZpY2UtPmluaXRpYWxpemVSZWZlcmVuY2VT
cGFjZShYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyKTsKKwogICAgIHN1c3BlbmRJZk5lZWRl
ZCgpOwogfQogCkBAIC0xOTksNjEgKzIwNCwzNCBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6cmVxdWVz
dFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUsIFJlcXVlc3RSZWZlcgog
ICAgIH0KICAgICAvLyAxLiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBQcm9taXNlLgogICAgIC8vIDIu
IFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0
eXBlXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIC8vICAyLjEuIENyZWF0ZSBh
IHJlZmVyZW5jZSBzcGFjZSwgcmVmZXJlbmNlU3BhY2UsIHdpdGggdGhlIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlIHR5cGUuCi0gICAgICAgIC8vICAyLjIuIElmIHJlZmVyZW5jZVNwYWNlIGlzIG51bGws
IHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvciBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbdGhpcywgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHR5cGVdKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewor
ICAgICAgICAvLyAyLjEuIElmIHRoZSByZXN1bHQgb2YgcnVubmluZyByZWZlcmVuY2Ugc3BhY2Ug
aXMgc3VwcG9ydGVkIGZvciB0eXBlIGFuZCBzZXNzaW9uIGlzIGZhbHNlLCBxdWV1ZSBhIHRhc2sg
dG8gcmVqZWN0IHByb21pc2UKKyAgICAgICAgLy8gd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKCFyZWZlcmVuY2VTcGFjZUlzU3VwcG9y
dGVkKHR5cGUpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0KLSAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5p
by93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCi0gICAgICAgIFJlZlB0cjxXZWJYUlJl
ZmVyZW5jZVNwYWNlPiByZWZlcmVuY2VTcGFjZTsKLSAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZl
cmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikKLSAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNl
ID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4o
Y29udGV4dCksIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG93bmNhc3Q8
RG9jdW1lbnQ+KGNvbnRleHQpLCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7Ci0KLSAgICAgICAgLy8g
IDIuMy4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVmZXJlbmNlU3BhY2UuCi0gICAgICAgIC8vIDMu
IFJldHVybiBwcm9taXNlLgotICAgICAgICBwcm9taXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2Uu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIC8vIDIuMi4gU2V0IHVwIGFueSBwbGF0Zm9ybSBy
ZXNvdXJjZXMgcmVxdWlyZWQgdG8gdHJhY2sgcmVmZXJlbmNlIHNwYWNlcyBvZiB0eXBlIHR5cGUu
CisgICAgICAgIG1fZGV2aWNlLT5pbml0aWFsaXplUmVmZXJlbmNlU3BhY2UodHlwZSk7CisKKyAg
ICAgICAgLy8gMi4zLiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Cisg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2Vi
WFIsIFt0aGlzLCB0eXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcHJvdGVjdGVkRG9j
dW1lbnQgPSBtYWtlUmVmKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSldKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICAvLyAyLjQuIENyZWF0ZSBhIHJlZmVyZW5jZSBzcGFjZSwgcmVmZXJlbmNl
U3BhY2UsIHdpdGggdHlwZSBhbmQgc2Vzc2lvbi4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vaW1t
ZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2NyZWF0ZS1hLXJlZmVyZW5jZS1zcGFjZQorICAg
ICAgICAgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IHJlZmVyZW5jZVNwYWNlOworICAg
ICAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikK
KyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlOjpjcmVhdGUocHJvdGVjdGVkRG9jdW1lbnQsIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVm
ZXJlbmNlU3BhY2U6OmNyZWF0ZShwcm90ZWN0ZWREb2N1bWVudCwgbWFrZVJlZigqdGhpcyksIHR5
cGUpOworCisgICAgICAgICAgICAvLyAyLjUuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHJlZmVyZW5j
ZVNwYWNlLgorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNwYWNlLnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJYUlNlc3Np
b246OmFuaW1hdGlvblRpbWVyRmlyZWQoKQotewotICAgIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGlt
ZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0KLSAgICBpZiAobV9jYWxsYmFja3MuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUT0RPOiByZXRyaWV2ZSBmcmFtZSBm
cm9tIHBsYXRmb3JtLgotICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUoKnRoaXMp
OwotCi0gICAgbV9ydW5uaW5nQ2FsbGJhY2tzLnN3YXAobV9jYWxsYmFja3MpOwotICAgIGZvciAo
YXV0byYgY2FsbGJhY2sgOiBtX3J1bm5pbmdDYWxsYmFja3MpIHsKLSAgICAgICAgaWYgKGNhbGxi
YWNrLT5pc0NhbmNlbGxlZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNhbGxi
YWNrLT5oYW5kbGVFdmVudChtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcC5zZWNvbmRzU2lu
Y2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpLCBmcmFtZS5nZXQoKSk7Ci0gICAgfQotCi0gICAgbV9y
dW5uaW5nQ2FsbGJhY2tzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgV2ViWFJTZXNzaW9uOjpzY2hlZHVs
ZUFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIFRPRE86IHVzZSBkZXZpY2UncyByZWZyZXNoIHJhdGUuIExldCdzIHN0YXJ0IHdpdGggNjBm
cHMuCi0gICAgU2Vjb25kcyBhbmltYXRpb25JbnRlcnZhbCA9IDE1X21zOwotICAgIFNlY29uZHMg
c2NoZWR1bGVEZWxheSA9IHN0ZDo6bWF4KGFuaW1hdGlvbkludGVydmFsIC0gKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApLCAwX3MpOwotICAgIG1f
YW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHNjaGVkdWxlRGVsYXkpOwotfQotCiAvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJzZXNzaW9uLXJlcXVlc3Rh
bmltYXRpb25mcmFtZQogdW5zaWduZWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoUmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CkBAIC0yNjYsNyAr
MjQ0LDggQEAgdW5zaWduZWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUmVm
PFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGIKICAgICBjYWxsYmFjay0+c2V0Q2FsbGJh
Y2tJZChuZXdJZCk7CiAgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsK
IAotICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgaWYgKG1fY2FsbGJhY2tzLnNpemUoKSA9
PSAxICYmICFtX2FuaW1hdGlvbkZyYW1lLT5pc0FjdGl2ZSgpKQorICAgICAgICByZXF1ZXN0RnJh
bWUoKTsKIAogICAgIC8vIDQuIFJldHVybiBzZXNzaW9uJ3MgYW5pbWF0aW9uIGZyYW1lIGNhbGxi
YWNrIGlkZW50aWZpZXIncyBjdXJyZW50IHZhbHVlLgogICAgIHJldHVybiBuZXdJZDsKQEAgLTM3
MSw2ICszNTAsMTMzIEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpzdG9wKCkKIHsKIH0KIAordm9pZCBX
ZWJYUlNlc3Npb246OmFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKCkKK3sKKyAgICAvLyBodHRwczog
Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jYXBwbHktdGhlLXBlbmRpbmctcmVuZGVy
LXN0YXRlCisgICAgLy8gMS4gTGV0IGFjdGl2ZVN0YXRlIGJlIHNlc3Npb27igJlzIGFjdGl2ZSBy
ZW5kZXIgc3RhdGUuCisgICAgLy8gMi4gTGV0IG5ld1N0YXRlIGJlIHNlc3Npb27igJlzIHBlbmRp
bmcgcmVuZGVyIHN0YXRlLgorICAgIC8vIDMuIFNldCBzZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRl
ciBzdGF0ZSB0byBudWxsLgorICAgIGF1dG8gbmV3U3RhdGUgPSBtX3BlbmRpbmdSZW5kZXJTdGF0
ZTsKKyAgICBBU1NFUlQobmV3U3RhdGUpOworCisgICAgLy8gNC4gTGV0IG9sZEJhc2VMYXllciBi
ZSBhY3RpdmVTdGF0ZeKAmXMgYmFzZUxheWVyLgorICAgIC8vIDUuIExldCBvbGRMYXllcnMgYmUg
YWN0aXZlU3RhdGXigJlzIGxheWVycy4KKyAgICAvLyBGSVhNRTogdGhvc2UgYXJlIG9ubHkgbmVl
ZGVkIGZvciBzdGVwIDYuMi4KKworICAgIC8vIDYuMSBTZXQgYWN0aXZlU3RhdGUgdG8gbmV3U3Rh
dGUuCisgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZSA9IG5ld1N0YXRlOworCisgICAgLy8gNi4yIElm
IG9sZEJhc2VMYXllciBpcyBub3QgZXF1YWwgdG8gYWN0aXZlU3RhdGXigJlzIGJhc2VMYXllciwg
b2xkTGF5ZXJzIGlzIG5vdCBlcXVhbCB0byBhY3RpdmVTdGF0ZeKAmXMgbGF5ZXJzLCBvciB0aGUg
ZGltZW5zaW9ucyBvZiBhbnkgb2YgdGhlIGxheWVycyBoYXZlIGNoYW5nZWQsIHVwZGF0ZSB0aGUg
dmlld3BvcnRzIGZvciBzZXNzaW9uLgorICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKwor
ICAgIC8vIDYuMyBJZiBhY3RpdmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVsZE9mVmlldyBp
cyBsZXNzIHRoYW4gc2Vzc2lvbuKAmXMgbWluaW11bSBpbmxpbmUgZmllbGQgb2YgdmlldyBzZXQg
YWN0aXZlU3RhdGXigJlzIGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgdG8gc2Vzc2lvbuKAmXMg
bWluaW11bSBpbmxpbmUgZmllbGQgb2Ygdmlldy4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0
ZS0+aW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpIDwgbV9taW5pbXVtSW5saW5lRk9WKQorICAg
ICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRJbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KG1f
bWluaW11bUlubGluZUZPVik7CisKKyAgICAvLyA2LjQgSWYgYWN0aXZlU3RhdGXigJlzIGlubGlu
ZVZlcnRpY2FsRmllbGRPZlZpZXcgaXMgZ3JlYXRlciB0aGFuIHNlc3Npb27igJlzIG1heGltdW0g
aW5saW5lIGZpZWxkIG9mIHZpZXcgc2V0IGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNhbEZp
ZWxkT2ZWaWV3IHRvIHNlc3Npb27igJlzIG1heGltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcuCisg
ICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcoKSA+
IG1fbWF4aW11bUlubGluZUZPVikKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0SW5s
aW5lVmVydGljYWxGaWVsZE9mVmlldyhtX21heGltdW1JbmxpbmVGT1YpOworCisgICAgLy8gNi41
IElmIGFjdGl2ZVN0YXRl4oCZcyBkZXB0aE5lYXIgaXMgbGVzcyB0aGFuIHNlc3Npb27igJlzIG1p
bmltdW0gbmVhciBjbGlwIHBsYW5lIHNldCBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhOZWFyIHRvIHNl
c3Npb27igJlzIG1pbmltdW0gbmVhciBjbGlwIHBsYW5lLgorICAgIGlmIChtX2FjdGl2ZVJlbmRl
clN0YXRlLT5kZXB0aE5lYXIoKSA8IG1fbWluaW11bU5lYXJDbGlwUGxhbmUpCisgICAgICAgIG1f
YWN0aXZlUmVuZGVyU3RhdGUtPnNldERlcHRoTmVhcihtX21pbmltdW1OZWFyQ2xpcFBsYW5lKTsK
KworICAgIC8vIDYuNiBJZiBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhGYXIgaXMgZ3JlYXRlciB0aGFu
IHNlc3Npb27igJlzIG1heGltdW0gZmFyIGNsaXAgcGxhbmUgc2V0IGFjdGl2ZVN0YXRl4oCZcyBk
ZXB0aEZhciB0byBzZXNzaW9u4oCZcyBtYXhpbXVtIGZhciBjbGlwIHBsYW5lLgorICAgIGlmICht
X2FjdGl2ZVJlbmRlclN0YXRlLT5kZXB0aEZhcigpID4gbV9tYXhpbXVtRmFyQ2xpcFBsYW5lKQor
ICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXREZXB0aEZhcihtX21heGltdW1GYXJDbGlw
UGxhbmUpOworCisgICAgLy8gNi43IExldCBiYXNlTGF5ZXIgYmUgYWN0aXZlU3RhdGXigJlzIGJh
c2VMYXllci4KKyAgICBhdXRvIGJhc2VMYXllciA9IG1fYWN0aXZlUmVuZGVyU3RhdGUtPmJhc2VM
YXllcigpOworCisgICAgLy8gNi44IFNldCBhY3RpdmVTdGF0ZeKAmXMgY29tcG9zaXRpb24gZGlz
YWJsZWQgYW5kIG91dHB1dCBjYW52YXMgYXMgZm9sbG93czoKKyAgICBtX2FjdGl2ZVJlbmRlclN0
YXRlLT5zZXRDb21wb3NpdGlvbkRpc2FibGVkKHRydWUpOworICAgIGlmIChtX21vZGUgPT0gWFJT
ZXNzaW9uTW9kZTo6SW5saW5lICYmIGlzPFdlYlhSV2ViR0xMYXllcj4oYmFzZUxheWVyKSAmJiBi
YXNlTGF5ZXItPmNvbXBvc2l0aW9uRGlzYWJsZWQoKSkgeworICAgICAgICBtX2FjdGl2ZVJlbmRl
clN0YXRlLT5zZXRDb21wb3NpdGlvbkRpc2FibGVkKHRydWUpOworICAgICAgICBtX2FjdGl2ZVJl
bmRlclN0YXRlLT5zZXRPdXRwdXRDYW52YXMoYmFzZUxheWVyLT5jYW52YXMoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0Q29tcG9zaXRpb25EaXNhYmxl
ZChmYWxzZSk7CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldE91dHB1dENhbnZhcyhu
dWxscHRyKTsKKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHIvI3Nob3VsZC1iZS1yZW5kZXJlZAorYm9vbCBXZWJYUlNlc3Npb246OmZyYW1lU2hvdWxk
QmVSZW5kZXJlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2FjdGl2ZVJlbmRlclN0YXRlLT5iYXNl
TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZGUgPT0gWFJTZXNz
aW9uTW9kZTo6SW5saW5lICYmICFtX2FjdGl2ZVJlbmRlclN0YXRlLT5vdXRwdXRDYW52YXMoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlhS
U2Vzc2lvbjo6cmVxdWVzdEZyYW1lKCkKK3sKKyAgICBtX2RldmljZS0+cmVxdWVzdEZyYW1lKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhIGZyYW1lRGF0YSkgeworICAgICAgICBvbkZyYW1lKGZyYW1lRGF0YSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgV2ViWFJTZXNzaW9uOjpvbkZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhIGZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgaWYgKG1fZW5kZWQpIAorICAgICAgICByZXR1cm47CisKKyAgICAvLyBRdWV1ZSBhIHRhc2sg
dG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzLgorICAgIHF1ZXVlVGFza0tlZXBpbmdPYmpl
Y3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCBmcmFtZURhdGFdKCkgewor
ICAgICAgICAvLyAgMS5MZXQgbm93IGJlIHRoZSBjdXJyZW50IGhpZ2ggcmVzb2x1dGlvbiB0aW1l
LgorICAgICAgICBET01IaWdoUmVzVGltZVN0YW1wIG5vdyA9IChNb25vdG9uaWNUaW1lOjpub3co
KSAtIG1fdGltZU9yaWdpbikubWlsbGlzZWNvbmRzKCk7CisKKyAgICAgICAgLy8gIDIuTGV0IGZy
YW1lIGJlIHNlc3Npb27igJlzIGFuaW1hdGlvbiBmcmFtZS4KKyAgICAgICAgLy8gIDMuU2V0IGZy
YW1l4oCZcyB0aW1lIHRvIGZyYW1lVGltZS4KKyAgICAgICAgbV9hbmltYXRpb25GcmFtZS0+c2V0
VGltZShzdGF0aWNfY2FzdDxET01IaWdoUmVzVGltZVN0YW1wPihmcmFtZURhdGEucHJlZGljdGVk
RGlzcGxheVRpbWUpKTsKKworICAgICAgICAvLyA0LiBGb3IgZWFjaCB2aWV3IGluIGxpc3Qgb2Yg
dmlld3MsIHNldCB2aWV34oCZcyB2aWV3cG9ydCBtb2RpZmlhYmxlIGZsYWcgdG8gdHJ1ZS4KKyAg
ICAgICAgLy8gNS4gSWYgdGhlIGFjdGl2ZSBmbGFnIG9mIGFueSB2aWV3IGluIHRoZSBsaXN0IG9m
IHZpZXdzIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IFhSIGFuaW1hdGlvbiBmcmFtZSwgdXBk
YXRlIHRoZSB2aWV3cG9ydHMuCisgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisKKyAgICAg
ICAgLy8gRklYTUU6IEkgbW92ZWQgc3RlcCA3IGJlZm9yZSA2IGJlY2F1c2Ugb2YgaHR0cHM6Ly9n
aXRodWIuY29tL2ltbWVyc2l2ZS13ZWIvd2VieHIvaXNzdWVzLzExNjQKKyAgICAgICAgLy8gNy5J
ZiBzZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRlciBzdGF0ZSBpcyBub3QgbnVsbCwgYXBwbHkgdGhl
IHBlbmRpbmcgcmVuZGVyIHN0YXRlLgorICAgICAgICBpZiAobV9wZW5kaW5nUmVuZGVyU3RhdGUp
CisgICAgICAgICAgICBhcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSgpOworCisgICAgICAgIC8vIDYu
IElmIHRoZSBmcmFtZSBzaG91bGQgYmUgcmVuZGVyZWQgZm9yIHNlc3Npb246CisgICAgICAgIGlm
IChmcmFtZVNob3VsZEJlUmVuZGVyZWQoKSkgeworICAgICAgICAgICAgLy8gNi4xLlNldCBzZXNz
aW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFj
a3MgdG8gYmUgc2Vzc2lvbuKAmXMgbGlzdCBvZiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLgor
ICAgICAgICAgICAgLy8gNi4yLlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGFuaW1hdGlvbiBmcmFt
ZSBjYWxsYmFja3MgdG8gdGhlIGVtcHR5IGxpc3QuCisgICAgICAgICAgICBtX3J1bm5pbmdDYWxs
YmFja3Muc3dhcChtX2NhbGxiYWNrcyk7CisKKyAgICAgICAgICAgIC8vIDYuMy5TZXQgZnJhbWXi
gJlzIGFjdGl2ZSBib29sZWFuIHRvIHRydWUuCisgICAgICAgICAgICBtX2FuaW1hdGlvbkZyYW1l
LT5zZXRBY3RpdmUodHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIDYuNC5BcHBseSBmcmFtZSB1cGRh
dGVzIGZvciBmcmFtZS4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisKKyAgICAg
ICAgICAgIC8vIDYuNS5Gb3IgZWFjaCBlbnRyeSBpbiBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJl
bnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MsIGluIG9yZGVyOgorICAgICAg
ICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fcnVubmluZ0NhbGxiYWNrcykgeworICAgICAg
ICAgICAgICAgIC8vICA2LjYuSWYgdGhlIGVudHJ54oCZcyBjYW5jZWxsZWQgYm9vbGVhbiBpcyB0
cnVlLCBjb250aW51ZSB0byB0aGUgbmV4dCBlbnRyeS4KKyAgICAgICAgICAgICAgICBpZiAoY2Fs
bGJhY2stPmlzQ2FuY2VsbGVkKCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgIC8vICA2LjcuSW52b2tlIHRoZSBXZWIgSURMIGNhbGxiYWNrIGZ1bmN0aW9u
IGZvciBlbnRyeSwgcGFzc2luZyBub3cgYW5kIGZyYW1lIGFzIHRoZSBhcmd1bWVudHMKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjay0+aGFuZGxlRXZlbnQobm93LCBtX2FuaW1hdGlvbkZyYW1lLmdl
dCgpKTsKKworICAgICAgICAgICAgICAgIC8vICA2LjguSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93
biwgcmVwb3J0IHRoZSBleGNlcHRpb24uCisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyA2
LjkuU2V0IHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9uIGZy
YW1lIGNhbGxiYWNrcyB0byB0aGUgZW1wdHkgbGlzdC4KKyAgICAgICAgICAgIG1fcnVubmluZ0Nh
bGxiYWNrcy5jbGVhcigpOworCisgICAgICAgICAgICAvLyA2LjEwLlNldCBmcmFtZeKAmXMgYWN0
aXZlIGJvb2xlYW4gdG8gZmFsc2UuCisgICAgICAgICAgICBtX2FuaW1hdGlvbkZyYW1lLT5zZXRB
Y3RpdmUoZmFsc2UpOworCisgICAgICAgICAgICAvLyBSZXF1ZXN0IG5leHQgZnJhbWUgaWYgdXNl
cnMgaGF2ZSBjYWxsZWQgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZHVyaW5nIHRoZSBh
bmltYXRpb24gZnJhbWUuCisgICAgICAgICAgICBpZiAoIW1fY2FsbGJhY2tzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICByZXF1ZXN0RnJhbWUoKTsKKyAgICAgICAgfQorCisgICAgfSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IGU0YzI3ZGI0
YjkwZDkyMWUyMTU1NWE2YTI4NjkwNmU5OGM2M2EwZTguLjU5N2FjYTM4NGEwOGZjYzZhNjNhZDUw
YWVlYzE0NjI4MGUyNTY0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNs
dWRlICJXZWJYUklucHV0U291cmNlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJYUlJlbmRlclN0YXRl
LmgiCiAjaW5jbHVkZSAiV2ViWFJTcGFjZS5oIgpAQCAtMTAxLDExICsxMDEsMTMgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2h1dGRvd24oKTsKIAotICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJl
ZCgpOwotICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKLQogICAgIGJvb2wgcmVmZXJlbmNl
U3BhY2VJc1N1cHBvcnRlZChYUlJlZmVyZW5jZVNwYWNlVHlwZSkgY29uc3Q7CiAKKyAgICBib29s
IGZyYW1lU2hvdWxkQmVSZW5kZXJlZCgpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdEZyYW1lKCk7
CisgICAgdm9pZCBvbkZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhKTsKKyAgICB2
b2lkIGFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKCk7CisKICAgICBYUkVudmlyb25tZW50QmxlbmRN
b2RlIG1fZW52aXJvbm1lbnRCbGVuZE1vZGU7CiAgICAgWFJJbnRlcmFjdGlvbk1vZGUgbV9pbnRl
cmFjdGlvbk1vZGU7CiAgICAgWFJWaXNpYmlsaXR5U3RhdGUgbV92aXNpYmlsaXR5U3RhdGU7CkBA
IC0xMTcsMTMgKzExOSwyMCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8UGxhdGZvcm1YUjo6RGV2
aWNlPiBtX2RldmljZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9hY3RpdmVSZW5k
ZXJTdGF0ZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9wZW5kaW5nUmVuZGVyU3Rh
dGU7CisgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPcmlnaW47CiAKICAgICB1bnNpZ25lZCBtX25l
eHRDYWxsYmFja0lkIHsgMSB9OwogICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFj
az4+IG1fY2FsbGJhY2tzOwogICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFjaz4+
IG1fcnVubmluZ0NhbGxiYWNrczsKIAotICAgIFRpbWVyIG1fYW5pbWF0aW9uVGltZXI7Ci0gICAg
TW9ub3RvbmljVGltZSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcDsKKyAgICBSZWY8V2Vi
WFJGcmFtZT4gbV9hbmltYXRpb25GcmFtZTsKKworICAgIGRvdWJsZSBtX21pbmltdW1JbmxpbmVG
T1YgeyAwLjAgfTsKKyAgICBkb3VibGUgbV9tYXhpbXVtSW5saW5lRk9WIHsgcGlGbG9hdCB9Owor
CisgICAgLy8gSW4gbWV0ZXJzLgorICAgIGRvdWJsZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsg
MC4xIH07CisgICAgZG91YmxlIG1fbWF4aW11bUZhckNsaXBQbGFuZSB7IDEwMDAuMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3lzdGVtLmNwcAppbmRleCAxMmE5ZjIxZTcyNGExMmRkYzE1ZGE5YTg0YzFiODJlYjRk
MTdkNGQ4Li41YzZkZGI0NWI0NGY2NzgxMzA5MDk4MmZjODRmZWVlMWZjYTY5NGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkpTV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSAiSlNYUlJlZmVyZW5j
ZVNwYWNlVHlwZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKyNpbmNsdWRlICJSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJl
SW5kaWNhdG9yLmgiCkBAIC00OSwxMSArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlN5c3RlbSk7CiAKLVdlYlhSU3lzdGVtOjpE
dW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZpY2UoKQotewotICAgIHNldEVuYWJsZWRG
ZWF0dXJlcyhYUlNlc3Npb25Nb2RlOjpJbmxpbmUsIHsgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZp
ZXdlciB9KTsKLX0KLQogUmVmPFdlYlhSU3lzdGVtPiBXZWJYUlN5c3RlbTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViWFJTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwpAQCAt
NjEsNiArNTcsNyBAQCBSZWY8V2ViWFJTeXN0ZW0+IFdlYlhSU3lzdGVtOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udAogCiBXZWJYUlN5c3RlbTo6V2Vi
WFJTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAsIG1f
ZGVmYXVsdElubGluZURldmljZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIG1faW5s
aW5lWFJEZXZpY2UgPSBtYWtlV2Vha1B0cihtX2RlZmF1bHRJbmxpbmVEZXZpY2UpOwogICAgIHN1
c3BlbmRJZk5lZWRlZCgpOwpAQCAtNDc1LDYgKzQ3Miw0OCBAQCB2b2lkIFdlYlhSU3lzdGVtOjpz
ZXNzaW9uRW5kZWQoV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQogICAgIG1faW5saW5lU2Vzc2lvbnMu
cmVtb3ZlKHNlc3Npb24pOwogfQogCitjbGFzcyBJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFjazogcHVibGljIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRnVuY3Rp
b248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgV1RGTW92ZShjYWxsYmFjaykpKTsKKyAgICB9CisKKyAgICBJbmxpbmVSZXF1ZXN0QW5p
bWF0aW9uRnJhbWVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCisgICAgICAgIDogUmVxdWVz
dEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCBtX2NhbGxi
YWNrKFdURk1vdmUoY2FsbGJhY2spKQorICAgIHsKKworICAgIH0KKworICAgIENhbGxiYWNrUmVz
dWx0PHZvaWQ+IGhhbmRsZUV2ZW50KGRvdWJsZSBoaWdoUmVzVGltZU1zKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGhpZ2hSZXNUaW1lTXMpOworICAgICAgICBtX2NhbGxi
YWNrKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorcHJpdmF0ZToKKyAgICBGdW5jdGlv
bjx2b2lkKCk+IG1fY2FsbGJhY2s7Cit9OworCisKK1dlYlhSU3lzdGVtOjpEdW1teUlubGluZURl
dmljZTo6RHVtbXlJbmxpbmVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKKyAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgmc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKK3sKKyAgICBzZXRFbmFibGVkRmVhdHVyZXMoWFJTZXNzaW9uTW9kZTo6
SW5saW5lLCB7IFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIgfSk7Cit9CisKK3ZvaWQgV2Vi
WFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2
aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIC8vIElubGluZSBY
UiBzZXNzaW9ucyByZWx5IG9uIGRvY3VtZW50LnJlcXVlc3RBbmltYXRpb25GcmFtZSB0byBwZXJm
b3JtIHRoZSByZW5kZXIgbG9vcC4KKyAgICBhdXRvIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgYXV0byByYWYgPSBJbmxpbmVSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBj
YWxsYmFjayh7IH0pOworICAgIH0pOworCisgICAgZG9jdW1lbnQtPnJlcXVlc3RBbmltYXRpb25G
cmFtZShyYWYpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaApp
bmRleCBjNzYyZDQ2YWMwZTkwNGEzOTgzZDM5N2Y2ODY1NjFkNGMxNjViMzU1Li5jMzNjZjczYjgx
MjRlNjUwMzgyMTUwOWEzODIwOTRiOTMwZWZiNTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlN5c3RlbS5oCkBAIC0xMDYsMTEgKzEwNiwxNiBAQCBwcml2YXRlOgogICAg
IC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RlZmF1bHQtaW5saW5l
LXhyLWRldmljZQogICAgIGNsYXNzIER1bW15SW5saW5lRGV2aWNlIGZpbmFsIDogcHVibGljIFBs
YXRmb3JtWFI6OkRldmljZSB7CiAgICAgcHVibGljOgotICAgICAgICBEdW1teUlubGluZURldmlj
ZSgpOworICAgICAgICBEdW1teUlubGluZURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRl
cmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc2h1
dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGluaXRp
YWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFs
IHsgfTsKKworICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJl
cXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICB9OwogICAgIER1bW15SW5saW5l
RGV2aWNlIG1fZGVmYXVsdElubGluZURldmljZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCmluZGV4IDg2ZGQxMWIwMDE0M2JmODBlYTgx
YWUyYWRkOGRlODRkYzAyZDAzM2YuLjE0Y2M3NGI4ZTk1MWEyZWUxMTQ3ZGY1NzgwMDVkNmI4ZGU0
N2M2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJH
TExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xM
YXllci5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1
ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUg
Ik9mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNs
dWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNpZiBFTkFCTEUoV0VCR0wyKQpAQCAtMTk4
LDYgKzIwMCwyMyBAQCBkb3VibGUgV2ViWFJXZWJHTExheWVyOjpnZXROYXRpdmVGcmFtZWJ1ZmZl
clNjYWxlRmFjdG9yKGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2VzcwogICAgIHJldHVybiAobmF0aXZl
U2l6ZSAvIHJlY29tbWVuZGVkU2l6ZSkud2lkdGgoKTsKIH0KIAorSFRNTENhbnZhc0VsZW1lbnQq
IFdlYlhSV2ViR0xMYXllcjo6Y2FudmFzKCkgY29uc3QKK3sKKyAgICBIVE1MQ2FudmFzRWxlbWVu
dCogYyA9IFdURjo6c3dpdGNoT24obV9jb250ZXh0LCBbXShjb25zdCBSZWZQdHI8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZT4mIGJhc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gY2FudmFzID0g
YmFzZUNvbnRleHQtPmNhbnZhcygpOworICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbigKKyAg
ICAgICAgICAgIGNhbnZhcywKKyAgICAgICAgICAgIFtdKGNvbnN0IFJlZlB0cjxIVE1MQ2FudmFz
RWxlbWVudD4mIGNhbnZhcykgeworICAgICAgICAgICAgICAgIHJldHVybiBjYW52YXMuZ2V0KCk7
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgW10oUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4p
IHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoImJhc2VMYXllciBvZiBhIFdl
YlhSV2ViR0xMYXllciBtdXN0IGJlIGFuIEhUTUxDYW52YXNFbGVtZW50Iik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9KTsKKyAgICB9KTsKKyAgICByZXR1
cm4gYzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
QlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdM
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmgK
aW5kZXggMzE3NTVkODQ5NmE2YTcwMmUyMzMyOWNmYmYzMjliOWNjNGI4YTlkZi4uM2Y3NTg3ZGU4
OWRhNmUyMzFjOTQzYzRmOTA1ZmMxY2YxODA1OTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBJbnRTaXpl
OwogY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsK
QEAgLTc0LDYgKzc1LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vz
c2lvbigpIHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQogCisgICAgYm9vbCBjb21wb3NpdGlvbkRpc2Fi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KKyAgICB2b2lk
IHNldENvbXBvc2l0aW9uRGlzYWJsZWQoYm9vbCBjb21wb3NpdGlvbkRpc2FibGVkKSB7IG1faXND
b21wb3NpdGlvbkRpc2FibGVkID0gY29tcG9zaXRpb25EaXNhYmxlZDsgfQorCisgICAgSFRNTENh
bnZhc0VsZW1lbnQqIGNhbnZhcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYlhSV2ViR0xM
YXllcihSZWY8V2ViWFJTZXNzaW9uPiYmLCBXZWJYUlJlbmRlcmluZ0NvbnRleHQmJiwgY29uc3Qg
WFJXZWJHTExheWVySW5pdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhS
LmgKaW5kZXggNjQ1NTBmNGUwMWJmMDA1YmVkZTE4NGMwZmVhNGRiOTMxMjY0OGI2NC4uNzRlODQ4
ZTkyMzZhNjE4ZGQ3ZTRkMWM4NzY2ZWFhN2E1MmIyMWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtMTgsNiArMTgsNyBAQAogICovCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC02MSw2
ICs2MiwyNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5n
QW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNodXREb3du
VHJhY2tpbmdBbmRSZW5kZXJpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVS
ZWZlcmVuY2VTcGFjZShSZWZlcmVuY2VTcGFjZVR5cGUpID0gMDsKKworICAgIHN0cnVjdCBGcmFt
ZURhdGEgeworICAgICAgICBsb25nIHByZWRpY3RlZERpc3BsYXlUaW1lOworICAgICAgICBzdHJ1
Y3QgVmlld0RhdGEgeworICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBXZWJD
b3JlOjpGbG9hdFBvaW50M0QgcG9zaXRpb247CisgICAgICAgICAgICAgICAgc3RydWN0IHsKKyAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgeCwgeSwgeiwgdzsKKyAgICAgICAgICAgICAgICB9IG9y
aWVudGF0aW9uOworICAgICAgICAgICAgfSBwb3NlOworICAgICAgICAgICAgc3RydWN0IHsKKyAg
ICAgICAgICAgICAgICBmbG9hdCByVXAsIHJEb3duLCByTGVmdCwgclJpZ2h0OworICAgICAgICAg
ICAgfSBmb3Y7CisgICAgICAgIH07CisgICAgICAgIFZlY3RvcjxWaWV3RGF0YT4gdmlld1Bvc2Vz
OworICAgIH07CisgICAgdXNpbmcgUmVxdWVzdEZyYW1lQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoRnJhbWVEYXRhKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0
RnJhbWVDYWxsYmFjayYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBEZXZpY2UoKSA9IGRlZmF1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZv
cm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZv
cm1YUk9wZW5YUi5jcHAKaW5kZXggZmU4NjVlNjcxZDcwNjg2ZGU3OTFmMTQwMGU2Y2YzZTJjODY5
ZWMyMi4uZWQwNDcwZTJhMDI0ZTI5YjdmMGI2ZTA0YTBlNjg1NDM4ZGI4ZTJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhS
LmNwcApAQCAtNzQsNiArNzQsOSBAQCBwcml2YXRlOgogCiAgICAgWHJJbnN0YW5jZSBtX2luc3Rh
bmNlIHsgWFJfTlVMTF9IQU5ETEUgfTsKICAgICBSZWY8V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsK
KworICAgIHVzaW5nIFJlZmVyZW5jZVNwYWNlc01hcCA9IEhhc2hNYXA8UmVmZXJlbmNlU3BhY2VU
eXBlLCBYclNwYWNlKiwgSW50SGFzaDxSZWZlcmVuY2VTcGFjZVR5cGU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPFJlZmVyZW5jZVNwYWNlVHlwZT4+OworICAgIFJlZmVyZW5jZVNwYWNlc01h
cCBtX3JlZmVyZW5jZVNwYWNlczsKIH07CiAKIHZvaWQgSW5zdGFuY2U6OkltcGw6OmVudW1lcmF0
ZUFwaUxheWVyUHJvcGVydGllcygpIGNvbnN0CkBAIC0yMzYsNiArMjM5LDI0IEBAIHZvaWQgSW5z
dGFuY2U6OmVudW1lcmF0ZUltbWVyc2l2ZVhSRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IERldmljZUxpCiAgICAgfSk7CiB9CiAKK3N0YXRpYyBYclJlZmVyZW5jZVNwYWNlVHlw
ZSB0b1hyUmVmZXJlbmNlU3BhY2VUeXBlKFJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXI6Cisg
ICAgICAgIHJldHVybiBYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9WSUVXOworICAgIGNhc2UgUmVm
ZXJlbmNlU3BhY2VUeXBlOjpMb2NhbDoKKyAgICAgICAgcmV0dXJuIFhSX1JFRkVSRU5DRV9TUEFD
RV9UWVBFX0xPQ0FMOworICAgIGNhc2UgUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbEZsb29yOgor
ICAgIGNhc2UgUmVmZXJlbmNlU3BhY2VUeXBlOjpCb3VuZGVkRmxvb3I6CisgICAgICAgIHJldHVy
biBYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9TVEFHRTsKKyAgICBjYXNlIFJlZmVyZW5jZVNwYWNl
VHlwZTo6VW5ib3VuZGVkOgorICAgICAgICByZXR1cm4gWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVf
VU5CT1VOREVEX01TRlQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCJVbnJlY29nbml6ZWQgcmVmZXJlbmNlIHNwYWNlIHR5cGUgJWQiLCB0eXBlKTsKKyAgICAgICAg
cmV0dXJuIFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX1ZJRVc7CisgICAgfTsKK30KKwogT3BlblhS
RGV2aWNlOjpPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCBpZCwgWHJJbnN0YW5jZSBpbnN0YW5jZSwg
V29ya1F1ZXVlJiBxdWV1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQog
ICAgIDogbV9zeXN0ZW1JZChpZCkKICAgICAsIG1faW5zdGFuY2UoaW5zdGFuY2UpCkBAIC0zMDQs
NiArMzI1LDMyIEBAIERldmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6
ZW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiYKICAgICByZXR1cm4gZW5hYmxlZEZl
YXR1cmVzOwogfQogCit2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNl
KFJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMs
IHR5cGVdKCkgeworICAgICAgICBBU1NFUlQobV9zZXNzaW9uICE9IFhSX05VTExfSEFORExFKTsK
KyAgICAgICAgQVNTRVJUKG1faW5zdGFuY2UgIT0gWFJfTlVMTF9IQU5ETEUpOworICAgICAgICBp
ZiAobV9yZWZlcmVuY2VTcGFjZXMuY29udGFpbnModHlwZSkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgWHJQb3NlZiBpZGVudGl0eVBvc2UgPSB7CisgICAgICAgICAgICAub3JpZW50
YXRpb24gPSB7IC54ID0gMCwgLnkgPSAwLCAueiA9IDAsIC53ID0gMS4wIH0sCisgICAgICAgICAg
ICAucG9zaXRpb24gPSB7IC54ID0gMCwgLnkgPSAwLCAueiA9IDAgfQorICAgICAgICB9OworCisg
ICAgICAgIGF1dG8gc3BhY2VDcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyUmVmZXJlbmNl
U3BhY2VDcmVhdGVJbmZvLCBYUl9UWVBFX1JFRkVSRU5DRV9TUEFDRV9DUkVBVEVfSU5GTz4oKTsK
KyAgICAgICAgc3BhY2VDcmVhdGVJbmZvLnJlZmVyZW5jZVNwYWNlVHlwZSA9IHRvWHJSZWZlcmVu
Y2VTcGFjZVR5cGUodHlwZSk7CisgICAgICAgIHNwYWNlQ3JlYXRlSW5mby5wb3NlSW5SZWZlcmVu
Y2VTcGFjZSA9IGlkZW50aXR5UG9zZTsKKworICAgICAgICBYclNwYWNlIHNwYWNlOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IHhyQ3JlYXRlUmVmZXJlbmNlU3BhY2UobV9zZXNzaW9uLCAmc3BhY2VD
cmVhdGVJbmZvLCAmc3BhY2UpOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhy
Q3JlYXRlUmVmZXJlbmNlU3BhY2UiLCBtX2luc3RhbmNlKTsKKworICAgICAgICBtX3JlZmVyZW5j
ZVNwYWNlcy5hZGQodHlwZSwgc3BhY2UpOworICAgICAgICBMT0coWFIsICJDcmVhdGVkIHJlZmVy
ZW5jZSBzcGFjZSBvZiB0eXBlICVkIiwgdHlwZSk7CisgICAgfSk7Cit9CisKIHZvaWQgT3BlblhS
RGV2aWNlOjpjb2xsZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCkKIHsKICAgICBBU1NFUlQoJlJ1
bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOwpAQCAtNDE0LDE3ICs0NjEs
MTYwIEBAIHZvaWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
U2Vzc2lvbk1vZGUgbW9kZSkKIAogdm9pZCBPcGVuWFJEZXZpY2U6OnJlc2V0U2Vzc2lvbigpCiB7
Ci0gICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpc10oKSB7Ci0gICAgICAgIGlmIChtX3Nlc3Npb24g
PT0gWFJfTlVMTF9IQU5ETEUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKCZSdW5M
b29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKKyAgICBpZiAobV9zZXNzaW9u
ICE9IFhSX05VTExfSEFORExFKSB7CiAgICAgICAgIHhyRGVzdHJveVNlc3Npb24obV9zZXNzaW9u
KTsKICAgICAgICAgbV9zZXNzaW9uID0gWFJfTlVMTF9IQU5ETEU7Ci0gICAgfSk7CisgICAgfQor
ICAgIG1fc2Vzc2lvblN0YXRlID0gWFJfU0VTU0lPTl9TVEFURV9VTktOT1dOOwogfQogCiB2b2lk
IE9wZW5YUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCiB7Ci0gICAgcmVz
ZXRTZXNzaW9uKCk7CisgICAgLy8geHJSZXF1ZXN0RXhpdFNlc3Npb24oKSB3aWxsIHRyYW5zaXRp
b24gdGhlIHNlc3Npb24gdG8gU1RPUFBFRCBzdGF0ZSBhbmQgdGhlbiB0aGUgcmVxdWVzdEZyYW1l
KCkgbWV0aG9kIHdpbGwgY2FsbCByZXNldC4KKyAgICAvLyBJZiB0aGUgc2Vzc2lvbiB3YXMgbm90
IHJ1bm5pbmcgd2UgaGF2ZSB0byByZXNldCB0aGUgc2Vzc2lvbiBvdXJzZWx2ZXMuCisgICAgaWYg
KFhSX0ZBSUxFRCh4clJlcXVlc3RFeGl0U2Vzc2lvbihtX3Nlc3Npb24pKSkgeworICAgICAgICBy
ZXNldFNlc3Npb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEVuc3VyZSB0
aGF0IHJlcXVlc3RGcmFtZSgpIGlzIGNhbGxlZCBhdCBsZWFzdCBvbmUgbW9yZSB0aW1lIHRvIHBy
b3Blcmx5IGVuZCB0aGUgc2Vzc2lvbi4KKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSgpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcmVxdWVzdEZyYW1lKFtdKEZyYW1lRGF0YSkgeyB9
KTsKKyAgICB9KTsKK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OnBvbGxFdmVudHMoKQoreworICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8gcnVudGltZUV2ZW50ID0gY3JlYXRl
U3RydWN0dXJlPFhyRXZlbnREYXRhQnVmZmVyLCBYUl9UWVBFX0VWRU5UX0RBVEFfQlVGRkVSPigp
OworICAgIHdoaWxlICh4clBvbGxFdmVudChtX2luc3RhbmNlLCAmcnVudGltZUV2ZW50KSA9PSBY
Ul9TVUNDRVNTKSB7CisgICAgICAgIHN3aXRjaCAocnVudGltZUV2ZW50LnR5cGUpIHsKKyAgICAg
ICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfU0VTU0lPTl9TVEFURV9DSEFOR0VEOiB7CisgICAg
ICAgICAgICBhdXRvKiBldmVudCA9IChYckV2ZW50RGF0YVNlc3Npb25TdGF0ZUNoYW5nZWQqKSZy
dW50aW1lRXZlbnQ7CisgICAgICAgICAgICBtX3Nlc3Npb25TdGF0ZSA9IGV2ZW50LT5zdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVO
VF9EQVRBX0VWRU5UU19MT1NUOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9JTlNU
QU5DRV9MT1NTX1BFTkRJTkc6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1JFRkVS
RU5DRV9TUEFDRV9DSEFOR0VfUEVORElORzoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RB
VEFfSU5URVJBQ1RJT05fUFJPRklMRV9DSEFOR0VEOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZF
TlRfREFUQV9NQUlOX1NFU1NJT05fVklTSUJJTElUWV9DSEFOR0VEX0VYVFg6CisgICAgICAgIGNh
c2UgWFJfVFlQRV9FVkVOVF9EQVRBX1ZJU0lCSUxJVFlfTUFTS19DSEFOR0VEX0tIUjoKKyAgICAg
ICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfUEVSRl9TRVRUSU5HU19FWFQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgiVW5oYW5kbGVkIGV2ZW50IHR5cGUgJWRcbiIsIHJ1bnRpbWVFdmVudC50eXBlKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworYm9vbCBzZXNzaW9uSXNWaXNpYmxlKFhyU2Vzc2lvblN0YXRlIHN0
YXRlKQoreworICAgIHJldHVybiBzdGF0ZSA8PSBYUl9TRVNTSU9OX1NUQVRFX0ZPQ1VTRUQ7Cit9
CisKK2Jvb2wgc2Vzc2lvblNob3VsZFN0b3AoWHJTZXNzaW9uU3RhdGUgc3RhdGUpCit7CisgICAg
cmV0dXJuIHN0YXRlID49IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkc7Cit9CisKK2Jvb2wgc2Vz
c2lvbklzQWN0aXZlKFhyU2Vzc2lvblN0YXRlIHN0YXRlKQoreworICAgIHJldHVybiBzdGF0ZSA9
PSBYUl9TRVNTSU9OX1NUQVRFX1ZJU0lCTEUgfHwgc3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9G
T0NVU0VEOworfQorCitYclJlc3VsdCBPcGVuWFJEZXZpY2U6OmJlZ2luU2Vzc2lvbigpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc2Vzc2lvblN0YXRlID09
IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkpOworCisgICAgYXV0byBzZXNzaW9uQmVnaW5JbmZvID0g
Y3JlYXRlU3RydWN0dXJlPFhyU2Vzc2lvbkJlZ2luSW5mbywgWFJfVFlQRV9TRVNTSU9OX0JFR0lO
X0lORk8+KCk7CisgICAgc2Vzc2lvbkJlZ2luSW5mby5wcmltYXJ5Vmlld0NvbmZpZ3VyYXRpb25U
eXBlID0gWFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9TVEVSRU87CisgICAgYXV0
byByZXN1bHQgPSB4ckJlZ2luU2Vzc2lvbihtX3Nlc3Npb24sICZzZXNzaW9uQmVnaW5JbmZvKTsK
KyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKFhSX0ZBSUxFRChyZXN1bHQpKQorICAgICAgICBM
T0coWFIsICIlcyAlczogJXNcbiIsIF9fZnVuY19fLCAieHJCZWdpblNlc3Npb24iLCByZXN1bHRU
b1N0cmluZyhyZXN1bHQsIG1faW5zdGFuY2UpLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworRGV2aWNlOjpGcmFtZURhdGE6OlZpZXdEYXRhIHhyVmlld1Rv
Vmlld0RhdGEoWHJWaWV3IHZpZXcpCit7CisgICAgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXdEYXRh
IGRhdGE7CisgICAgZGF0YS5mb3YgPSB7IHZpZXcuZm92LmFuZ2xlVXAsIHZpZXcuZm92LmFuZ2xl
RG93biwgdmlldy5mb3YuYW5nbGVMZWZ0LCB2aWV3LmZvdi5hbmdsZVJpZ2h0IH07CisgICAgZGF0
YS5wb3NlLm9yaWVudGF0aW9uID0geyB2aWV3LnBvc2Uub3JpZW50YXRpb24ueCwgdmlldy5wb3Nl
Lm9yaWVudGF0aW9uLnksIHZpZXcucG9zZS5vcmllbnRhdGlvbi56LCB2aWV3LnBvc2Uub3JpZW50
YXRpb24udyB9OworICAgIGRhdGEucG9zZS5wb3NpdGlvbiA9IHsgdmlldy5wb3NlLnBvc2l0aW9u
LngsIHZpZXcucG9zZS5wb3NpdGlvbi55LCB2aWV3LnBvc2UucG9zaXRpb24ueiB9OworICAgIHJl
dHVybiBkYXRhOworfQorCit2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgWHJTZXNz
aW9uU3RhdGUgb2xkU2Vzc2lvblN0YXRlID0gbV9zZXNzaW9uU3RhdGU7CisgICAgICAgIHBvbGxF
dmVudHMoKTsKKyAgICAgICAgaWYgKHNlc3Npb25TaG91bGRTdG9wKG1fc2Vzc2lvblN0YXRlKSkg
eworICAgICAgICAgICAgLy8gRklYTUU6IG5vdGlmeSB3aXRoIHNvbWUgZXZlbnQuCisgICAgICAg
ICAgICB4ckVuZFNlc3Npb24obV9zZXNzaW9uKTsKKyAgICAgICAgICAgIHJlc2V0U2Vzc2lvbigp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fc2Vzc2lv
blN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkgJiYgbV9zZXNzaW9uU3RhdGUgIT0gb2xk
U2Vzc2lvblN0YXRlKQorICAgICAgICAgICAgYmVnaW5TZXNzaW9uKCk7CisKKyAgICAgICAgYXV0
byBmcmFtZVN0YXRlID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVTdGF0ZSwgWFJfVFlQRV9GUkFN
RV9TVEFURT4oKTsKKyAgICAgICAgYXV0byBmcmFtZVdhaXRJbmZvID0gY3JlYXRlU3RydWN0dXJl
PFhyRnJhbWVXYWl0SW5mbywgWFJfVFlQRV9GUkFNRV9XQUlUX0lORk8+KCk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0geHJXYWl0RnJhbWUobV9zZXNzaW9uLCAmZnJhbWVXYWl0SW5mbywgJmZyYW1l
U3RhdGUpOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyV2FpdEZyYW1lIiwg
bV9pbnN0YW5jZSk7CisgICAgICAgIFhyVGltZSBwcmVkaWN0ZWRUaW1lID0gZnJhbWVTdGF0ZS5w
cmVkaWN0ZWREaXNwbGF5VGltZTsKKworICAgICAgICBhdXRvIGZyYW1lQmVnaW5JbmZvID0gY3Jl
YXRlU3RydWN0dXJlPFhyRnJhbWVCZWdpbkluZm8sIFhSX1RZUEVfRlJBTUVfQkVHSU5fSU5GTz4o
KTsKKyAgICAgICAgcmVzdWx0ID0geHJCZWdpbkZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lQmVnaW5J
bmZvKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckJlZ2luRnJhbWUiLCBt
X2luc3RhbmNlKTsKKworICAgICAgICBEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGE7CisgICAg
ICAgIGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSA9IGZyYW1lU3RhdGUucHJlZGljdGVk
RGlzcGxheVRpbWU7CisKKyAgICAgICAgaWYgKHNlc3Npb25Jc0FjdGl2ZShtX3Nlc3Npb25TdGF0
ZSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb25WaWV3cy5jb250YWlucyht
X2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8m
IGNvbmZpZ3VyYXRpb25WaWV3ID0gbV9jb25maWd1cmF0aW9uVmlld3MuZ2V0KG1fY3VycmVudFZp
ZXdDb25maWd1cmF0aW9uVHlwZSk7CisKKyAgICAgICAgICAgIGF1dG8gdmlld0xvY2F0ZUluZm8g
PSBjcmVhdGVTdHJ1Y3R1cmU8WHJWaWV3TG9jYXRlSW5mbywgWFJfVFlQRV9WSUVXX0xPQ0FURV9J
TkZPPigpOworICAgICAgICAgICAgdmlld0xvY2F0ZUluZm8uZGlzcGxheVRpbWUgPSBwcmVkaWN0
ZWRUaW1lOworICAgICAgICAgICAgLy8gRklYTUU6IHVzZSB0aGUgY3VycmVudCByZWZlcmVuY2Ug
c3BhY2UuCisgICAgICAgICAgICAvLyB2aWV3TG9jYXRlSW5mby5zcGFjZSA9IG1fbG9jYWxTcGFj
ZTsKKworICAgICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50ID0gY29uZmlndXJhdGlvblZpZXcu
c2l6ZSgpOworICAgICAgICAgICAgVmVjdG9yPFhyVmlldz4gdmlld3Modmlld0NvdW50LCBbXSB7
CisgICAgICAgICAgICAgICAgWHJWaWV3IG9iamVjdDsKKyAgICAgICAgICAgICAgICBzdGQ6Om1l
bXNldCgmb2JqZWN0LCAwLCBzaXplb2YoWHJWaWV3KSk7CisgICAgICAgICAgICAgICAgb2JqZWN0
LnR5cGUgPSBYUl9UWVBFX1ZJRVc7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAg
ICAgICAgICAgIH0oKSk7CisKKyAgICAgICAgICAgIGF1dG8gdmlld1N0YXRlID0gY3JlYXRlU3Ry
dWN0dXJlPFhyVmlld1N0YXRlLCBYUl9UWVBFX1ZJRVdfU1RBVEU+KCk7CisgICAgICAgICAgICB1
aW50MzJfdCB2aWV3Q291bnRPdXRwdXQ7CisgICAgICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZp
ZXdzKG1fc2Vzc2lvbiwgJnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2
aWV3Q291bnRPdXRwdXQsIHZpZXdzLmRhdGEoKSk7CisgICAgICAgICAgICBpZiAoIVhSX0ZBSUxF
RChyZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB2aWV3IDogdmlld3MpCisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lRGF0YS52aWV3UG9zZXMuYXBwZW5kKHhyVmlld1RvVmll
d0RhdGEodmlldykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZnJhbWVEYXRhLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKGZyYW1lRGF0YSk7CisgICAgICAgIH0pOworCisgICAgICAg
IGF1dG8gZnJhbWVFbmRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVFbmRJbmZvLCBYUl9U
WVBFX0ZSQU1FX0VORF9JTkZPPigpOworICAgICAgICBmcmFtZUVuZEluZm8uZGlzcGxheVRpbWUg
PSBwcmVkaWN0ZWRUaW1lOworICAgICAgICBmcmFtZUVuZEluZm8uZW52aXJvbm1lbnRCbGVuZE1v
ZGUgPSBYUl9FTlZJUk9OTUVOVF9CTEVORF9NT0RFX09QQVFVRTsKKyAgICAgICAgZnJhbWVFbmRJ
bmZvLmxheWVyQ291bnQgPSAwOworICAgICAgICByZXN1bHQgPSB4ckVuZEZyYW1lKG1fc2Vzc2lv
biwgJmZyYW1lRW5kSW5mbyk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJF
bmRGcmFtZSIsIG1faW5zdGFuY2UpOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBQbGF0
Zm9ybVhSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuaAppbmRleCBhYTJmNzgwZWY5MTI5NjIwZjQ0MTJkYjQ5YTBlOGEwNDJkNThi
NTI5Li42MmEzYjUyOWNmNmRiNzMzMWQxYmE4YzcxYzQwZWE0ZTk5MTE1Nzg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgK
QEAgLTUyLDE0ICs1MiwxOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY29sbGVjdENvbmZpZ3VyYXRp
b25WaWV3cygpOwogCiAgICAgTGlzdE9mRW5hYmxlZEZlYXR1cmVzIGVudW1lcmF0ZVJlZmVyZW5j
ZVNwYWNlcyhYclNlc3Npb24mKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VT
cGFjZShSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBy
ZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBpbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpIGZpbmFsOwogICAgIHZvaWQg
c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOwogCisgICAgdm9pZCBwb2xsRXZl
bnRzKCk7CisgICAgWHJSZXN1bHQgYmVnaW5TZXNzaW9uKCk7CiAgICAgdm9pZCByZXNldFNlc3Np
b24oKTsKIAorICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZp
bmFsOworCiAgICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1h
cDxYclZpZXdDb25maWd1cmF0aW9uVHlwZSwgWHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMs
IEludEhhc2g8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJh
aXRzPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPj47CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9w
ZXJ0aWVzTWFwIG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzOwogICAgIHVzaW5nIFZpZXdD
b25maWd1cmF0aW9uVmlld3NNYXAgPSBIYXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBW
ZWN0b3I8WHJWaWV3Q29uZmlndXJhdGlvblZpZXc+LCBJbnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRp
b25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxYclZpZXdDb25maWd1cmF0aW9uVHlw
ZT4+OwpAQCAtNjgsMTAgKzczLDE0IEBAIHByaXZhdGU6CiAgICAgWHJTeXN0ZW1JZCBtX3N5c3Rl
bUlkOwogICAgIFhySW5zdGFuY2UgbV9pbnN0YW5jZTsKICAgICBYclNlc3Npb24gbV9zZXNzaW9u
IHsgWFJfTlVMTF9IQU5ETEUgfTsKKyAgICBYclNlc3Npb25TdGF0ZSBtX3Nlc3Npb25TdGF0ZSB7
IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTiB9OwogCiAgICAgV29ya1F1ZXVlJiBtX3F1ZXVlOwog
CiAgICAgWHJWaWV3Q29uZmlndXJhdGlvblR5cGUgbV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25U
eXBlOworCisgICAgdXNpbmcgUmVmZXJlbmNlU3BhY2VzTWFwID0gSGFzaE1hcDxSZWZlcmVuY2VT
cGFjZVR5cGUsIFhyU3BhY2UsIEludEhhc2g8UmVmZXJlbmNlU3BhY2VUeXBlPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxSZWZlcmVuY2VTcGFjZVR5cGU+PjsKKyAgICBSZWZlcmVuY2VTcGFj
ZXNNYXAgbV9yZWZlcmVuY2VTcGFjZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhS
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5kZXggMmZhZGYz
OTMyNTA1ZGE1NGFiZTE3ZDE5MTJlNDAxMTkyMWE0OTU3NC4uOWY5NDlmOTI4NWNkYThiYzdhNjM3
YWI1NzkzZmIwZTY1MDJkYjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhS
RGV2aWNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHku
aCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIldlYkZha2VY
UklucHV0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1Niw2ICsxNTcsNDIgQEAgRXhjZXB0aW9uT3I8
UmVmPEZha2VYUlZpZXc+PiBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyhjb25zdCBGYWtlWFJW
aWV3SW5pdCYgaW4KICAgICByZXR1cm4gZmFrZVZpZXc7CiB9CiAKK1NpbXVsYXRlZFhSRGV2aWNl
OjpTaW11bGF0ZWRYUkRldmljZSgpCisgICAgOiBtX2ZyYW1lVGltZXIoKnRoaXMsICZTaW11bGF0
ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKQoreworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlv
blRyYWNraW5nID0gdHJ1ZTsKK30KKworU2ltdWxhdGVkWFJEZXZpY2U6On5TaW11bGF0ZWRYUkRl
dmljZSgpCit7CisgICAgbV9mcmFtZVRpbWVyLnN0b3AoKTsKK30KKwordm9pZCBTaW11bGF0ZWRY
UkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKCkKK3sKKyAgICBWZWN0b3I8UmVxdWVzdEZyYW1lQ2Fs
bGJhY2s+IHJ1bm5pbmdDYWxsYmFja3M7CisgICAgcnVubmluZ0NhbGxiYWNrcy5zd2FwKG1fY2Fs
bGJhY2tzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcnVubmluZ0NhbGxiYWNrcykKKyAg
ICAgICAgY2FsbGJhY2soeyB9KTsKK30KKwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6aW5pdGlh
bGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKQoreworfQor
Cit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFj
aykpOworICAgIGlmICghbV9mcmFtZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZnJhbWVU
aW1lci5zdGFydE9uZVNob3QoMTVfbXMpOworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpz
aHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAobV9mcmFtZVRpbWVyLmlz
QWN0aXZlKCkpCisgICAgICAgIG1fZnJhbWVUaW1lci5zdG9wKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4IDk3YTFiOTU3MTllN2IzMmJmODQxNGJjZmEzNGQ2
OTBlZDczNjc3MGYuLjVhNzNlYWY5ZTM2NjhkOWZlNmY0MTUwYTFjOTQwODc0Zjg0NjA2NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaApAQCAtNjMsMjAgKzYzLDI5
IEBAIHByaXZhdGU6CiBjbGFzcyBTaW11bGF0ZWRYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0
Zm9ybVhSOjpEZXZpY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFNpbXVsYXRlZFhSRGV2aWNlKCkgeyBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9
IHRydWU7IH0KKyAgICBTaW11bGF0ZWRYUkRldmljZSgpOworICAgIH5TaW11bGF0ZWRYUkRldmlj
ZSgpOwogICAgIHZvaWQgc2V0TmF0aXZlQm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5k
c1BvaW50PiBnZW9tZXRyeSkgeyBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5ID0gZ2VvbWV0cnk7IH0K
ICAgICB2b2lkIHNldFZpZXdlck9yaWdpbihSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBv
cmlnaW4pIHsgbV92aWV3ZXJPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KICAgICB2b2lkIHNl
dEZsb29yT3JpZ2luKFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX2Zs
b29yT3JpZ2luID0gV1RGTW92ZShvcmlnaW4pOyB9CiAgICAgdm9pZCBzZXRFbXVsYXRlZFBvc2l0
aW9uKGJvb2wgZW11bGF0ZWQpIHsgbV9lbXVsYXRlZFBvc2l0aW9uID0gZW11bGF0ZWQ7IH0KICAg
ICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiYgdmlld3MoKSB7IHJldHVybiBtX3ZpZXdzOyB9CiBw
cml2YXRlOgotICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3Jt
WFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKSBmaW5hbCB7IH0KKyAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRl
cmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWw7CisgICAgdm9pZCBzaHV0RG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7CisgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNl
U3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAgICB2b2lk
IHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKworICAgIHZvaWQg
ZnJhbWVUaW1lckZpcmVkKCk7CisKICAgICBPcHRpb25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9p
bnQ+PiBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5OwogICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiBtX3ZpZXdlck9yaWdpbjsKICAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9m
bG9vck9yaWdpbjsKICAgICBib29sIG1fZW11bGF0ZWRQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAg
VmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4gbV92aWV3czsKKworICAgIFRpbWVyIG1fZnJhbWVUaW1l
cjsKKyAgICBWZWN0b3I8UmVxdWVzdEZyYW1lQ2FsbGJhY2s+IG1fY2FsbGJhY2tzOwogfTsKIAog
Y2xhc3MgV2ViRmFrZVhSRGV2aWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRmFrZVhS
RGV2aWNlPiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYTQ2NWIyNjYyYTEyOWMxZTQzMmNiNjM1MDM0Y2ZjMDI4ODhjOTgz
Ny4uZjVlZjMwYWExYzRmOGJjODZlMDJjYzFkNmI2ZDc0NjdmMGZkZjA3ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIxLTAxLTI2ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2Fs
aWEuY29tPgorCisgICAgICAgIENvbXBsZXRlIFhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZy
YW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAxLTI1
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydGluZyByMjcxNTE0IGFuZCByMjcxNTQ5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwppbmRleCBmZTc4MTU2Y2ZjOGUwOWM2ZmM2ODg4YzZmYTNhMjVmNDhhMjZkYzU1Li5iYzJkMWFm
MjM1ZmNiNTI3ZGVlMDUzNzVlMWZlMTJmYTUxZWU4YTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMS0yNiAgSW1hbm9sIEZlcm5hbmRleiAg
PGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246OnJl
cXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIFhSU2Vzc2lvbiBSQUYgdGVzdHMuCisK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmlt
YXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMS0w
MS0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQg
QWJvcnRTaWduYWwgaW4gYWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgdG8gdW5zdWJzY3JpYmUgZnJv
bSBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5o
dHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU4YTQyM2ZjNmIxOTgxMTI5MzViZmYyOTA3
Mjc4ZmRhOTRmY2M1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFt
ZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFhS
RnJhbWUgZ2V0Vmlld2VyUG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0IGZyYW1lIGZvciBpbW1lcnNp
dmUKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUg
Zm9yIG5vbi1pbW1lcnNpdmUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3Bl
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCBlYTNmNTg3OTE3YWFjM2U2OWFkZTQ4MTU3ZjU2ZjEyZDc1OGIzNDc4Li4yMWFk
MWI0ODc2ZjNhN2M2ZjMxMjM3MTJkZDUxMjhjZWZhMTZjNGMwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjMyLDYgKzYzMiw3IEBAIHdlYmtpdC5vcmcv
Yi8yMDk4NTkgd2Via2l0Lm9yZy9iLzIxNTYzNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lX2ludmFsaWRoYW5k
bGUuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZpY2VTdXBwb3J0
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2Nh
bGxiYWNrX2NhbGxzLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAu
aHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0UmVmZXJlbmNlU3BhY2UuaHR0
cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy5odG1s
IFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvYXItbW9kdWxlL3hyRGV2aWNlX2lzU2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNp
dmUtYXIuaHR0cHMuaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418423</attachid>
            <date>2021-01-26 08:30:42 -0800</date>
            <delta_ts>2021-02-01 14:22:55 -0800</delta_ts>
            <desc>Add co-authors to the changelog messages</desc>
            <filename>bug-220979-20210126173040.patch</filename>
            <type>text/plain</type>
            <size>45878</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxMzZjYWM0ODhmNDRl
OGEwYTVjYjg3NzNhZDI2YjlmODIxNjkzYi4uYjczNmMzN2FiYzNjM2RlNmYwZDRlNzQyZmUzNDdh
NmFmZmEwYzJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTAxLTI2ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBQcm9wZXJseSBpbXBsZW1lbnQgdGhlIHJl
bmRlciBsb29wIGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBYUiBzZXNzaW9ucworICAgICAgICAt
IEFwcGx5IHBlbmRpbmcgcmVuZGVyIHN0YXRlIGNoYW5nZXMKKworICAgICAgICBUZXN0ZWQgYnkg
dGhlIFdlYlhSIHBsYXRmb3JtIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJY
UkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSRnJhbWU6OnNlc3Npb24gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2V0VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJGcmFtZTo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJSZW5kZXJTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZW5kZXJTdGF0ZTo6c2V0
T3V0cHV0Q2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OmNvbXBv
c2l0aW9uRGlzYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZW5kZXJTdGF0
ZTo6c2V0Q29tcG9zaXRpb25EaXNhYmxlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpyZXF1ZXN0UmVmZXJlbmNlU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5kZXJT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OmZyYW1lU2hvdWxkQmVSZW5k
ZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAq
IE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6V2ViWFJTeXN0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpE
dW1teUlubGluZURldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVtbXlJ
bmxpbmVEZXZpY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6Y2FudmFzIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJXZWJHTExheWVyOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSV2ViR0xMYXllcjo6c2V0Q29tcG9zaXRpb25EaXNhYmxlZCk6CisgICAgICAg
ICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54
ci9QbGF0Zm9ybVhST3BlblhSLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtWFI6OnRvWHJSZWZlcmVu
Y2VTcGFjZVR5cGUpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjppbml0aWFs
aXplUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpy
ZXNldFNlc3Npb24pOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpzaHV0RG93
blRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmlj
ZTo6cG9sbEV2ZW50cyk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpzZXNzaW9uSXNWaXNpYmxlKToK
KyAgICAgICAgKFBsYXRmb3JtWFI6OnNlc3Npb25TaG91bGRTdG9wKToKKyAgICAgICAgKFBsYXRm
b3JtWFI6OnNlc3Npb25Jc0FjdGl2ZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZp
Y2U6OmJlZ2luU2Vzc2lvbik6CisgICAgICAgIChQbGF0Zm9ybVhSOjp4clZpZXdUb1ZpZXdEYXRh
KToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOgorICAgICAgICAq
IHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRl
ZFhSRGV2aWNlOjpTaW11bGF0ZWRYUkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0
ZWRYUkRldmljZTo6flNpbXVsYXRlZFhSRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVs
YXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxh
dGVkWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAg
ICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oOgorCiAyMDIxLTAxLTI2ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbmNvcnJlY3Qg
aW5saW5lIGJveCB3aWR0aCB3aXRoIGhvcml6b250YWwgYWxpZ25tZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA5MzVkYzEyN2M5ZDA3YTdjOGQy
Mzg0MTU0NTg3ZDUxMzU4ODdhZTFhLi5lY2ZiYmI5ZDUxMWQ2YTA0NWM0NmVlYWM5ZDA4MmE3MWE1
MjMzNDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAK
QEAgLTM2LDEzICszNiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChXZWJYUkZyYW1lKTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6
OmNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCitSZWY8V2ViWFJGcmFtZT4gV2Vi
WFJGcmFtZTo6Y3JlYXRlKFdlYlhSU2Vzc2lvbiogc2Vzc2lvbiwgYm9vbCBpc0FuaW1hdGlvbkZy
YW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUoV1RGTW92ZShzZXNz
aW9uKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUoc2Vzc2lvbiwgaXNB
bmltYXRpb25GcmFtZSkpOwogfQogCi1XZWJYUkZyYW1lOjpXZWJYUkZyYW1lKFJlZjxXZWJYUlNl
c3Npb24+JiYgc2Vzc2lvbikKLSAgICA6IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorV2Vi
WFJGcmFtZTo6V2ViWFJGcmFtZShXZWJYUlNlc3Npb24qIHNlc3Npb24sIGJvb2wgaXNBbmltYXRp
b25GcmFtZSkKKyAgICA6IG1fYWN0aXZlKGZhbHNlKQorICAgICwgbV9hbmltYXRpb25GcmFtZShp
c0FuaW1hdGlvbkZyYW1lKQorICAgICwgbV9zZXNzaW9uKHNlc3Npb24pCiB7CiB9CiAKQEAgLTUw
LDcgKzUyLDggQEAgV2ViWFJGcmFtZTo6fldlYlhSRnJhbWUoKSA9IGRlZmF1bHQ7CiAKIGNvbnN0
IFdlYlhSU2Vzc2lvbiYgV2ViWFJGcmFtZTo6c2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fc2Vzc2lvbjsKKyAgICBBU1NFUlQobV9zZXNzaW9uKTsKKyAgICByZXR1cm4gKm1fc2Vzc2lv
bjsKIH0KIAogUmVmUHRyPFdlYlhSVmlld2VyUG9zZT4gV2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9z
ZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmgKaW5kZXggODA4YTY3NjRmMGQyYzVhZTYxZTRkNjU4YzI4MjUwNTc5ZmU1
YjYyNy4uODliZWMwOGI0MmNmZWE0YzdiZDkxYjE2MTJlNGQ4YzI2YWUxNTNiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIkRPTUhpZ2hSZXNUaW1lU3RhbXAuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Myw3ICs0NCw3IEBAIGNsYXNzIFdlYlhSVmlld2VyUG9z
ZTsKIGNsYXNzIFdlYlhSRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkZyYW1lPiB7CiAg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUkZyYW1lKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShXZWJYUlNlc3Npb24qLCBib29sIGlzQW5pbWF0aW9u
RnJhbWUgPSBmYWxzZSk7CiAgICAgfldlYlhSRnJhbWUoKTsKIAogICAgIGNvbnN0IFdlYlhSU2Vz
c2lvbiYgc2Vzc2lvbigpIGNvbnN0OwpAQCAtNTEsMTAgKzUyLDE5IEBAIHB1YmxpYzoKICAgICBS
ZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNl
U3BhY2UmKTsKICAgICBSZWZQdHI8V2ViWFJQb3NlPiBnZXRQb3NlKGNvbnN0IFdlYlhSU3BhY2Um
LCBjb25zdCBXZWJYUlNwYWNlJik7CiAKKyAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJlc1RpbWVT
dGFtcCB0aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KKyAgICB2b2lkIHNldEFjdGl2ZShib29sIGFj
dGl2ZSkgeyBtX2FjdGl2ZSA9IGFjdGl2ZTsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZTsgfQorCiBwcml2YXRlOgotICAgIFdlYlhSRnJhbWUoUmVmPFdlYlhS
U2Vzc2lvbj4mJik7CisgICAgV2ViWFJGcmFtZShXZWJYUlNlc3Npb24qLCBib29sIGlzQW5pbWF0
aW9uRnJhbWUpOworCisgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBib29sIG1fYW5pbWF0aW9uRnJh
bWU7CisgICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBtX3RpbWU7CiAKLSAgICBSZWY8V2ViWFJTZXNz
aW9uPiBtX3Nlc3Npb247CisgICAgLy8gU2Vzc2lvbiBvd25zIHRoZSBmcmFtZS4KKyAgICBXZWJY
UlNlc3Npb24qIG1fc2Vzc2lvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKaW5kZXggMWU0
MzYzZjFmMTk0MzFlNGExZWM5NThmMWJmYTJiNDcwNzQ1NzdhMi4uZTZkNDNjMDQ2ODk1OThiNTNk
YTZkNGJiYjczZjJkYzFhNDEzYTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKQEAgLTU2LDYgKzU2LDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEJhc2VMYXllcihXZWJYUldlYkdMTGF5ZXIqIGJhc2VMYXllcikgeyBtX2Jhc2VMYXll
ciA9IGJhc2VMYXllcjsgfQogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIG91dHB1dENhbnZhcygp
IGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Q2FudmFzLmdldCgpOyB9CisgICAgdm9pZCBzZXRPdXRw
dXRDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcykgeyBtX291dHB1dENhbnZhcyA9IG1h
a2VXZWFrUHRyKGNhbnZhcyk7IH0KKworICAgIGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpb25EaXNhYmxlZDsgfQorICAgIHZvaWQgc2V0Q29tcG9z
aXRpb25EaXNhYmxlZChib29sIGNvbXBvc2l0aW9uRGlzYWJsZWQpIHsgbV9jb21wb3NpdGlvbkRp
c2FibGVkID0gY29tcG9zaXRpb25EaXNhYmxlZDsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFdlYlhSUmVuZGVyU3RhdGUoT3B0aW9uYWw8ZG91YmxlPiBmaWVsZE9mVmlldyk7CkBAIC02OSw2
ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2lubGluZVZlcnRpY2Fs
RmllbGRPZlZpZXc7IC8vIGluIHJhZGlhbnMKICAgICBSZWZQdHI8V2ViWFJXZWJHTExheWVyPiBt
X2Jhc2VMYXllcjsKICAgICBXZWFrUHRyPEhUTUxDYW52YXNFbGVtZW50PiBtX291dHB1dENhbnZh
czsKKyAgICBib29sIG1fY29tcG9zaXRpb25EaXNhYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5jcHAKaW5kZXggYjY2M2Q1MmQwNmJiMjA5YTQzNzFmN2EyMTMxMzk4ODUzYTc4ZjVh
Yi4uODRjYjU3Y2MxMmI2MGE4YWYwMGZhYjUzNDBiMjVmY2I5Y2M2ZWMzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtNTUsMTAgKzU1LDE1
IEBAIFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJT
eXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1f
ZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCiAgICAgLCBtX2FjdGl2ZVJlbmRlclN0YXRlKFdl
YlhSUmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKLSAgICAsIG1fYW5pbWF0aW9uVGltZXIoKnRo
aXMsICZXZWJYUlNlc3Npb246OmFuaW1hdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3RpbWVPcmln
aW4oTW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgLCBtX2FuaW1hdGlvbkZyYW1lKFdlYlhSRnJh
bWU6OmNyZWF0ZSh0aGlzLCB0cnVlKSkKIHsKICAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVRyYWNr
aW5nQW5kUmVuZGVyaW5nKG1vZGUpOwogCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jcmVmLWZvci1kb20teHJyZWZlcmVuY2VzcGFjZXR5cGUtdmlld2VyJUUy
JTkxJUEyCisgICAgLy8gRXZlcnkgc2Vzc2lvbiBNVVNUIHN1cHBvcnQgdmlld2VyIFhSUmVmZXJl
bmNlU3BhY2VzLgorICAgIG1fZGV2aWNlLT5pbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoWFJSZWZl
cmVuY2VTcGFjZVR5cGU6OlZpZXdlcik7CisKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIApA
QCAtMTk5LDYxICsyMDQsMzQgQEAgdm9pZCBXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VT
cGFjZShYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlLCBSZXF1ZXN0UmVmZXIKICAgICB9CiAgICAg
Ly8gMS4gTGV0IHByb21pc2UgYmUgYSBuZXcgUHJvbWlzZS4KICAgICAvLyAyLiBSdW4gdGhlIGZv
bGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnBvc3RUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdHlwZV0gKGF1dG8m
IGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAvLyAgMi4xLiBDcmVhdGUgYSByZWZlcmVuY2Ug
c3BhY2UsIHJlZmVyZW5jZVNwYWNlLCB3aXRoIHRoZSBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBl
LgotICAgICAgICAvLyAgMi4yLiBJZiByZWZlcmVuY2VTcGFjZSBpcyBudWxsLCByZWplY3QgcHJv
bWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCB0eXBlXShhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgLy8g
Mi4xLiBJZiB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgcmVmZXJlbmNlIHNwYWNlIGlzIHN1cHBvcnRl
ZCBmb3IgdHlwZSBhbmQgc2Vzc2lvbiBpcyBmYWxzZSwgcXVldWUgYSB0YXNrIHRvIHJlamVjdCBw
cm9taXNlCisgICAgICAgIC8vIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvciBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCiAgICAgICAgIGlmICghcmVmZXJlbmNlU3BhY2VJc1N1cHBvcnRlZCh0eXBlKSkg
ewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IgfSk7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6OldlYlhSLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotCi0gICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2Ny
ZWF0ZS1hLXJlZmVyZW5jZS1zcGFjZQotICAgICAgICBSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFj
ZT4gcmVmZXJlbmNlU3BhY2U7Ci0gICAgICAgIGlmICh0eXBlID09IFhSUmVmZXJlbmNlU3BhY2VU
eXBlOjpCb3VuZGVkRmxvb3IpCi0gICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBt
YWtlUmVmKCp0aGlzKSwgdHlwZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlZmVyZW5j
ZVNwYWNlID0gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihj
b250ZXh0KSwgbWFrZVJlZigqdGhpcyksIHR5cGUpOwotCi0gICAgICAgIC8vICAyLjMuIFJlc29s
dmUgcHJvbWlzZSB3aXRoIHJlZmVyZW5jZVNwYWNlLgotICAgICAgICAvLyAzLiBSZXR1cm4gcHJv
bWlzZS4KLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNwYWNlLnJlbGVhc2VOb25O
dWxsKCkpOworICAgICAgICAvLyAyLjIuIFNldCB1cCBhbnkgcGxhdGZvcm0gcmVzb3VyY2VzIHJl
cXVpcmVkIHRvIHRyYWNrIHJlZmVyZW5jZSBzcGFjZXMgb2YgdHlwZSB0eXBlLgorICAgICAgICBt
X2RldmljZS0+aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKHR5cGUpOworCisgICAgICAgIC8vIDIu
My4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICBxdWV1
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbdGhpcywg
dHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHByb3RlY3RlZERvY3VtZW50ID0gbWFr
ZVJlZihkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgLy8gMi40LiBDcmVhdGUgYSByZWZlcmVuY2Ugc3BhY2UsIHJlZmVyZW5jZVNwYWNlLCB3aXRo
IHR5cGUgYW5kIHNlc3Npb24uCisgICAgICAgICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIu
Z2l0aHViLmlvL3dlYnhyLyNjcmVhdGUtYS1yZWZlcmVuY2Utc3BhY2UKKyAgICAgICAgICAgIFJl
ZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiByZWZlcmVuY2VTcGFjZTsKKyAgICAgICAgICAgIGlm
ICh0eXBlID09IFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpCb3VuZGVkRmxvb3IpCisgICAgICAgICAg
ICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRl
KHByb3RlY3RlZERvY3VtZW50LCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJlZmVyZW5jZVNwYWNl
OjpjcmVhdGUocHJvdGVjdGVkRG9jdW1lbnQsIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKKworICAg
ICAgICAgICAgLy8gMi41LiBSZXNvbHZlIHByb21pc2Ugd2l0aCByZWZlcmVuY2VTcGFjZS4KKyAg
ICAgICAgICAgIHByb21pc2UucmVzb2x2ZShyZWZlcmVuY2VTcGFjZS5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViWFJTZXNzaW9uOjphbmltYXRp
b25UaW1lckZpcmVkKCkKLXsKLSAgICBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcCA9IE1v
bm90b25pY1RpbWU6Om5vdygpOwotCi0gICAgaWYgKG1fY2FsbGJhY2tzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gVE9ETzogcmV0cmlldmUgZnJhbWUgZnJvbSBwbGF0Zm9y
bS4KLSAgICBhdXRvIGZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRlKCp0aGlzKTsKLQotICAgIG1f
cnVubmluZ0NhbGxiYWNrcy5zd2FwKG1fY2FsbGJhY2tzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrIDogbV9ydW5uaW5nQ2FsbGJhY2tzKSB7Ci0gICAgICAgIGlmIChjYWxsYmFjay0+aXNDYW5j
ZWxsZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjYWxsYmFjay0+aGFuZGxl
RXZlbnQobV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAuc2Vjb25kc1NpbmNlRXBvY2goKS5t
aWxsaXNlY29uZHMoKSwgZnJhbWUuZ2V0KCkpOwotICAgIH0KLQotICAgIG1fcnVubmluZ0NhbGxi
YWNrcy5jbGVhcigpOwotfQotCi12b2lkIFdlYlhSU2Vzc2lvbjo6c2NoZWR1bGVBbmltYXRpb24o
KQotewotICAgIGlmIChtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChtX2VuZGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUT0RPOiB1
c2UgZGV2aWNlJ3MgcmVmcmVzaCByYXRlLiBMZXQncyBzdGFydCB3aXRoIDYwZnBzLgotICAgIFNl
Y29uZHMgYW5pbWF0aW9uSW50ZXJ2YWwgPSAxNV9tczsKLSAgICBTZWNvbmRzIHNjaGVkdWxlRGVs
YXkgPSBzdGQ6Om1heChhbmltYXRpb25JbnRlcnZhbCAtIChNb25vdG9uaWNUaW1lOjpub3coKSAt
IG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKSwgMF9zKTsKLSAgICBtX2FuaW1hdGlvblRp
bWVyLnN0YXJ0T25lU2hvdChzY2hlZHVsZURlbGF5KTsKLX0KLQogLy8gaHR0cHM6Ly9pbW1lcnNp
dmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhyc2Vzc2lvbi1yZXF1ZXN0YW5pbWF0aW9uZnJh
bWUKIHVuc2lnbmVkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFJlZjxYUkZy
YW1lUmVxdWVzdENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewpAQCAtMjY2LDcgKzI0NCw4IEBAIHVu
c2lnbmVkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFJlZjxYUkZyYW1lUmVx
dWVzdENhbGxiYWNrPiYmIGNhbGxiCiAgICAgY2FsbGJhY2stPnNldENhbGxiYWNrSWQobmV3SWQp
OwogICAgIG1fY2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBzY2hl
ZHVsZUFuaW1hdGlvbigpOworICAgIGlmIChtX2NhbGxiYWNrcy5zaXplKCkgPT0gMSAmJiAhbV9h
bmltYXRpb25GcmFtZS0+aXNBY3RpdmUoKSkKKyAgICAgICAgcmVxdWVzdEZyYW1lKCk7CiAKICAg
ICAvLyA0LiBSZXR1cm4gc2Vzc2lvbidzIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFjayBpZGVudGlm
aWVyJ3MgY3VycmVudCB2YWx1ZS4KICAgICByZXR1cm4gbmV3SWQ7CkBAIC0zNzEsNiArMzUwLDEz
MyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6c3RvcCgpCiB7CiB9CiAKK3ZvaWQgV2ViWFJTZXNzaW9u
OjphcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSgpCit7CisgICAgLy8gaHR0cHM6IC8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHIvI2FwcGx5LXRoZS1wZW5kaW5nLXJlbmRlci1zdGF0ZQorICAg
IC8vIDEuIExldCBhY3RpdmVTdGF0ZSBiZSBzZXNzaW9u4oCZcyBhY3RpdmUgcmVuZGVyIHN0YXRl
LgorICAgIC8vIDIuIExldCBuZXdTdGF0ZSBiZSBzZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRlciBz
dGF0ZS4KKyAgICAvLyAzLiBTZXQgc2Vzc2lvbuKAmXMgcGVuZGluZyByZW5kZXIgc3RhdGUgdG8g
bnVsbC4KKyAgICBhdXRvIG5ld1N0YXRlID0gbV9wZW5kaW5nUmVuZGVyU3RhdGU7CisgICAgQVNT
RVJUKG5ld1N0YXRlKTsKKworICAgIC8vIDQuIExldCBvbGRCYXNlTGF5ZXIgYmUgYWN0aXZlU3Rh
dGXigJlzIGJhc2VMYXllci4KKyAgICAvLyA1LiBMZXQgb2xkTGF5ZXJzIGJlIGFjdGl2ZVN0YXRl
4oCZcyBsYXllcnMuCisgICAgLy8gRklYTUU6IHRob3NlIGFyZSBvbmx5IG5lZWRlZCBmb3Igc3Rl
cCA2LjIuCisKKyAgICAvLyA2LjEgU2V0IGFjdGl2ZVN0YXRlIHRvIG5ld1N0YXRlLgorICAgIG1f
YWN0aXZlUmVuZGVyU3RhdGUgPSBuZXdTdGF0ZTsKKworICAgIC8vIDYuMiBJZiBvbGRCYXNlTGF5
ZXIgaXMgbm90IGVxdWFsIHRvIGFjdGl2ZVN0YXRl4oCZcyBiYXNlTGF5ZXIsIG9sZExheWVycyBp
cyBub3QgZXF1YWwgdG8gYWN0aXZlU3RhdGXigJlzIGxheWVycywgb3IgdGhlIGRpbWVuc2lvbnMg
b2YgYW55IG9mIHRoZSBsYXllcnMgaGF2ZSBjaGFuZ2VkLCB1cGRhdGUgdGhlIHZpZXdwb3J0cyBm
b3Igc2Vzc2lvbi4KKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisKKyAgICAvLyA2LjMg
SWYgYWN0aXZlU3RhdGXigJlzIGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgaXMgbGVzcyB0aGFu
IHNlc3Npb27igJlzIG1pbmltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcgc2V0IGFjdGl2ZVN0YXRl
4oCZcyBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IHRvIHNlc3Npb27igJlzIG1pbmltdW0gaW5s
aW5lIGZpZWxkIG9mIHZpZXcuCisgICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmlubGluZVZl
cnRpY2FsRmllbGRPZlZpZXcoKSA8IG1fbWluaW11bUlubGluZUZPVikKKyAgICAgICAgbV9hY3Rp
dmVSZW5kZXJTdGF0ZS0+c2V0SW5saW5lVmVydGljYWxGaWVsZE9mVmlldyhtX21pbmltdW1Jbmxp
bmVGT1YpOworCisgICAgLy8gNi40IElmIGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNhbEZp
ZWxkT2ZWaWV3IGlzIGdyZWF0ZXIgdGhhbiBzZXNzaW9u4oCZcyBtYXhpbXVtIGlubGluZSBmaWVs
ZCBvZiB2aWV3IHNldCBhY3RpdmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVsZE9mVmlldyB0
byBzZXNzaW9u4oCZcyBtYXhpbXVtIGlubGluZSBmaWVsZCBvZiB2aWV3LgorICAgIGlmIChtX2Fj
dGl2ZVJlbmRlclN0YXRlLT5pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkgPiBtX21heGltdW1J
bmxpbmVGT1YpCisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldElubGluZVZlcnRpY2Fs
RmllbGRPZlZpZXcobV9tYXhpbXVtSW5saW5lRk9WKTsKKworICAgIC8vIDYuNSBJZiBhY3RpdmVT
dGF0ZeKAmXMgZGVwdGhOZWFyIGlzIGxlc3MgdGhhbiBzZXNzaW9u4oCZcyBtaW5pbXVtIG5lYXIg
Y2xpcCBwbGFuZSBzZXQgYWN0aXZlU3RhdGXigJlzIGRlcHRoTmVhciB0byBzZXNzaW9u4oCZcyBt
aW5pbXVtIG5lYXIgY2xpcCBwbGFuZS4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+ZGVw
dGhOZWFyKCkgPCBtX21pbmltdW1OZWFyQ2xpcFBsYW5lKQorICAgICAgICBtX2FjdGl2ZVJlbmRl
clN0YXRlLT5zZXREZXB0aE5lYXIobV9taW5pbXVtTmVhckNsaXBQbGFuZSk7CisKKyAgICAvLyA2
LjYgSWYgYWN0aXZlU3RhdGXigJlzIGRlcHRoRmFyIGlzIGdyZWF0ZXIgdGhhbiBzZXNzaW9u4oCZ
cyBtYXhpbXVtIGZhciBjbGlwIHBsYW5lIHNldCBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhGYXIgdG8g
c2Vzc2lvbuKAmXMgbWF4aW11bSBmYXIgY2xpcCBwbGFuZS4KKyAgICBpZiAobV9hY3RpdmVSZW5k
ZXJTdGF0ZS0+ZGVwdGhGYXIoKSA+IG1fbWF4aW11bUZhckNsaXBQbGFuZSkKKyAgICAgICAgbV9h
Y3RpdmVSZW5kZXJTdGF0ZS0+c2V0RGVwdGhGYXIobV9tYXhpbXVtRmFyQ2xpcFBsYW5lKTsKKwor
ICAgIC8vIDYuNyBMZXQgYmFzZUxheWVyIGJlIGFjdGl2ZVN0YXRl4oCZcyBiYXNlTGF5ZXIuCisg
ICAgYXV0byBiYXNlTGF5ZXIgPSBtX2FjdGl2ZVJlbmRlclN0YXRlLT5iYXNlTGF5ZXIoKTsKKwor
ICAgIC8vIDYuOCBTZXQgYWN0aXZlU3RhdGXigJlzIGNvbXBvc2l0aW9uIGRpc2FibGVkIGFuZCBv
dXRwdXQgY2FudmFzIGFzIGZvbGxvd3M6CisgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0Q29t
cG9zaXRpb25EaXNhYmxlZCh0cnVlKTsKKyAgICBpZiAobV9tb2RlID09IFhSU2Vzc2lvbk1vZGU6
OklubGluZSAmJiBpczxXZWJYUldlYkdMTGF5ZXI+KGJhc2VMYXllcikgJiYgYmFzZUxheWVyLT5j
b21wb3NpdGlvbkRpc2FibGVkKCkpIHsKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0
Q29tcG9zaXRpb25EaXNhYmxlZCh0cnVlKTsKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+
c2V0T3V0cHV0Q2FudmFzKGJhc2VMYXllci0+Y2FudmFzKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldENvbXBvc2l0aW9uRGlzYWJsZWQoZmFsc2UpOwor
ICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRPdXRwdXRDYW52YXMobnVsbHB0cik7Cisg
ICAgfQorfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNzaG91
bGQtYmUtcmVuZGVyZWQKK2Jvb2wgV2ViWFJTZXNzaW9uOjpmcmFtZVNob3VsZEJlUmVuZGVyZWQo
KSBjb25zdAoreworICAgIGlmICghbV9hY3RpdmVSZW5kZXJTdGF0ZS0+YmFzZUxheWVyKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9tb2RlID09IFhSU2Vzc2lvbk1vZGU6Oklu
bGluZSAmJiAhbV9hY3RpdmVSZW5kZXJTdGF0ZS0+b3V0cHV0Q2FudmFzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJYUlNlc3Npb246OnJl
cXVlc3RGcmFtZSgpCit7CisgICAgbV9kZXZpY2UtPnJlcXVlc3RGcmFtZShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBm
cmFtZURhdGEpIHsKKyAgICAgICAgb25GcmFtZShmcmFtZURhdGEpOworICAgIH0pOworfQorCit2
b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBm
cmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChtX2Vu
ZGVkKSAKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUXVldWUgYSB0YXNrIHRvIHBlcmZvcm0g
dGhlIGZvbGxvd2luZyBzdGVwcy4KKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbdGhpcywgZnJhbWVEYXRhXSgpIHsKKyAgICAgICAgLy8g
IDEuTGV0IG5vdyBiZSB0aGUgY3VycmVudCBoaWdoIHJlc29sdXRpb24gdGltZS4KKyAgICAgICAg
RE9NSGlnaFJlc1RpbWVTdGFtcCBub3cgPSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3RpbWVP
cmlnaW4pLm1pbGxpc2Vjb25kcygpOworCisgICAgICAgIC8vICAyLkxldCBmcmFtZSBiZSBzZXNz
aW9u4oCZcyBhbmltYXRpb24gZnJhbWUuCisgICAgICAgIC8vICAzLlNldCBmcmFtZeKAmXMgdGlt
ZSB0byBmcmFtZVRpbWUuCisgICAgICAgIG1fYW5pbWF0aW9uRnJhbWUtPnNldFRpbWUoc3RhdGlj
X2Nhc3Q8RE9NSGlnaFJlc1RpbWVTdGFtcD4oZnJhbWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1l
KSk7CisKKyAgICAgICAgLy8gNC4gRm9yIGVhY2ggdmlldyBpbiBsaXN0IG9mIHZpZXdzLCBzZXQg
dmlld+KAmXMgdmlld3BvcnQgbW9kaWZpYWJsZSBmbGFnIHRvIHRydWUuCisgICAgICAgIC8vIDUu
IElmIHRoZSBhY3RpdmUgZmxhZyBvZiBhbnkgdmlldyBpbiB0aGUgbGlzdCBvZiB2aWV3cyBoYXMg
Y2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBYUiBhbmltYXRpb24gZnJhbWUsIHVwZGF0ZSB0aGUgdmll
d3BvcnRzLgorICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorCisgICAgICAgIC8vIEZJWE1F
OiBJIG1vdmVkIHN0ZXAgNyBiZWZvcmUgNiBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9p
bW1lcnNpdmUtd2ViL3dlYnhyL2lzc3Vlcy8xMTY0CisgICAgICAgIC8vIDcuSWYgc2Vzc2lvbuKA
mXMgcGVuZGluZyByZW5kZXIgc3RhdGUgaXMgbm90IG51bGwsIGFwcGx5IHRoZSBwZW5kaW5nIHJl
bmRlciBzdGF0ZS4KKyAgICAgICAgaWYgKG1fcGVuZGluZ1JlbmRlclN0YXRlKQorICAgICAgICAg
ICAgYXBwbHlQZW5kaW5nUmVuZGVyU3RhdGUoKTsKKworICAgICAgICAvLyA2LiBJZiB0aGUgZnJh
bWUgc2hvdWxkIGJlIHJlbmRlcmVkIGZvciBzZXNzaW9uOgorICAgICAgICBpZiAoZnJhbWVTaG91
bGRCZVJlbmRlcmVkKCkpIHsKKyAgICAgICAgICAgIC8vIDYuMS5TZXQgc2Vzc2lvbuKAmXMgbGlz
dCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzIHRvIGJlIHNl
c3Npb27igJlzIGxpc3Qgb2YgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcy4KKyAgICAgICAgICAg
IC8vIDYuMi5TZXQgc2Vzc2lvbuKAmXMgbGlzdCBvZiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tz
IHRvIHRoZSBlbXB0eSBsaXN0LgorICAgICAgICAgICAgbV9ydW5uaW5nQ2FsbGJhY2tzLnN3YXAo
bV9jYWxsYmFja3MpOworCisgICAgICAgICAgICAvLyA2LjMuU2V0IGZyYW1l4oCZcyBhY3RpdmUg
Ym9vbGVhbiB0byB0cnVlLgorICAgICAgICAgICAgbV9hbmltYXRpb25GcmFtZS0+c2V0QWN0aXZl
KHRydWUpOworCisgICAgICAgICAgICAvLyA2LjQuQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJh
bWUuCisgICAgICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorCisgICAgICAgICAgICAvLyA2
LjUuRm9yIGVhY2ggZW50cnkgaW4gc2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmlu
ZyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLCBpbiBvcmRlcjoKKyAgICAgICAgICAgIGZvciAo
YXV0byYgY2FsbGJhY2sgOiBtX3J1bm5pbmdDYWxsYmFja3MpIHsKKyAgICAgICAgICAgICAgICAv
LyAgNi42LklmIHRoZSBlbnRyeeKAmXMgY2FuY2VsbGVkIGJvb2xlYW4gaXMgdHJ1ZSwgY29udGlu
dWUgdG8gdGhlIG5leHQgZW50cnkuCisgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrLT5pc0Nh
bmNlbGxlZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICAvLyAgNi43Lkludm9rZSB0aGUgV2ViIElETCBjYWxsYmFjayBmdW5jdGlvbiBmb3IgZW50cnks
IHBhc3Npbmcgbm93IGFuZCBmcmFtZSBhcyB0aGUgYXJndW1lbnRzCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2stPmhhbmRsZUV2ZW50KG5vdywgbV9hbmltYXRpb25GcmFtZS5nZXQoKSk7CisKKyAg
ICAgICAgICAgICAgICAvLyAgNi44LklmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24sIHJlcG9ydCB0
aGUgZXhjZXB0aW9uLgorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gNi45LlNldCBzZXNz
aW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFj
a3MgdG8gdGhlIGVtcHR5IGxpc3QuCisgICAgICAgICAgICBtX3J1bm5pbmdDYWxsYmFja3MuY2xl
YXIoKTsKKworICAgICAgICAgICAgLy8gNi4xMC5TZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFu
IHRvIGZhbHNlLgorICAgICAgICAgICAgbV9hbmltYXRpb25GcmFtZS0+c2V0QWN0aXZlKGZhbHNl
KTsKKworICAgICAgICAgICAgLy8gUmVxdWVzdCBuZXh0IGZyYW1lIGlmIHVzZXJzIGhhdmUgY2Fs
bGVkIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lIGR1cmluZyB0aGUgYW5pbWF0aW9uIGZy
YW1lLgorICAgICAgICAgICAgaWYgKCFtX2NhbGxiYWNrcy5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgcmVxdWVzdEZyYW1lKCk7CisgICAgICAgIH0KKworICAgIH0pOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAppbmRleCBlNGMyN2RiNGI5MGQ5MjFlMjE1
NTVhNmEyODY5MDZlOThjNjNhMGU4Li41OTdhY2EzODRhMDhmY2M2YTYzYWQ1MGFlZWMxNDYyODBl
MjU2NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRl
ICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCi0jaW5j
bHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViWFJJ
bnB1dFNvdXJjZUFycmF5LmgiCiAjaW5jbHVkZSAiV2ViWFJSZW5kZXJTdGF0ZS5oIgogI2luY2x1
ZGUgIldlYlhSU3BhY2UuaCIKQEAgLTEwMSwxMSArMTAxLDEzIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHNodXRkb3duKCk7CiAKLSAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICB2
b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7Ci0KICAgICBib29sIHJlZmVyZW5jZVNwYWNlSXNTdXBw
b3J0ZWQoWFJSZWZlcmVuY2VTcGFjZVR5cGUpIGNvbnN0OwogCisgICAgYm9vbCBmcmFtZVNob3Vs
ZEJlUmVuZGVyZWQoKSBjb25zdDsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZSgpOworICAgIHZvaWQg
b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSk7CisgICAgdm9pZCBhcHBseVBl
bmRpbmdSZW5kZXJTdGF0ZSgpOworCiAgICAgWFJFbnZpcm9ubWVudEJsZW5kTW9kZSBtX2Vudmly
b25tZW50QmxlbmRNb2RlOwogICAgIFhSSW50ZXJhY3Rpb25Nb2RlIG1faW50ZXJhY3Rpb25Nb2Rl
OwogICAgIFhSVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwpAQCAtMTE3LDEzICsx
MTksMjAgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFBsYXRmb3JtWFI6OkRldmljZT4gbV9kZXZp
Y2U7CiAgICAgUmVmUHRyPFdlYlhSUmVuZGVyU3RhdGU+IG1fYWN0aXZlUmVuZGVyU3RhdGU7CiAg
ICAgUmVmUHRyPFdlYlhSUmVuZGVyU3RhdGU+IG1fcGVuZGluZ1JlbmRlclN0YXRlOworICAgIE1v
bm90b25pY1RpbWUgbV90aW1lT3JpZ2luOwogCiAgICAgdW5zaWduZWQgbV9uZXh0Q2FsbGJhY2tJ
ZCB7IDEgfTsKICAgICBWZWN0b3I8UmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+PiBtX2NhbGxi
YWNrczsKICAgICBWZWN0b3I8UmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+PiBtX3J1bm5pbmdD
YWxsYmFja3M7CiAKLSAgICBUaW1lciBtX2FuaW1hdGlvblRpbWVyOwotICAgIE1vbm90b25pY1Rp
bWUgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXA7CisgICAgUmVmPFdlYlhSRnJhbWU+IG1f
YW5pbWF0aW9uRnJhbWU7CisKKyAgICBkb3VibGUgbV9taW5pbXVtSW5saW5lRk9WIHsgMC4wIH07
CisgICAgZG91YmxlIG1fbWF4aW11bUlubGluZUZPViB7IHBpRmxvYXQgfTsKKworICAgIC8vIElu
IG1ldGVycy4KKyAgICBkb3VibGUgbV9taW5pbXVtTmVhckNsaXBQbGFuZSB7IDAuMSB9OworICAg
IGRvdWJsZSBtX21heGltdW1GYXJDbGlwUGxhbmUgeyAxMDAwLjAgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3Rl
bS5jcHAKaW5kZXggMTJhOWYyMWU3MjRhMTJkZGMxNWRhOWE4NGMxYjgyZWI0ZDE3ZDRkOC4uNWM2
ZGRiNDViNDRmNjc4MTMwOTA5ODJmYzg0ZmVlZTFmY2E2OTRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJKU1dlYlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkpTWFJSZWZlcmVuY2VTcGFjZVR5cGUu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisjaW5jbHVkZSAiUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2suaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgpAQCAtNDksMTEgKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoV2ViWFJTeXN0ZW0pOwogCi1XZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVE
ZXZpY2U6OkR1bW15SW5saW5lRGV2aWNlKCkKLXsKLSAgICBzZXRFbmFibGVkRmVhdHVyZXMoWFJT
ZXNzaW9uTW9kZTo6SW5saW5lLCB7IFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIgfSk7Ci19
Ci0KIFJlZjxXZWJYUlN5c3RlbT4gV2ViWFJTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKQEAgLTYxLDYgKzU3LDcg
QEAgUmVmPFdlYlhSU3lzdGVtPiBXZWJYUlN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnQKIAogV2ViWFJTeXN0ZW06OldlYlhSU3lzdGVtKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgOiBBY3Rp
dmVET01PYmplY3QoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgLCBtX2RlZmF1bHRJbmxp
bmVEZXZpY2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBtX2lubGluZVhSRGV2aWNl
ID0gbWFrZVdlYWtQdHIobV9kZWZhdWx0SW5saW5lRGV2aWNlKTsKICAgICBzdXNwZW5kSWZOZWVk
ZWQoKTsKQEAgLTQ3NSw2ICs0NzIsNDggQEAgdm9pZCBXZWJYUlN5c3RlbTo6c2Vzc2lvbkVuZGVk
KFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKICAgICBtX2lubGluZVNlc3Npb25zLnJlbW92ZShzZXNz
aW9uKTsKIH0KIAorY2xhc3MgSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s6IHB1
YmxpYyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElubGluZVJl
cXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1v
dmUoY2FsbGJhY2spKSk7CisgICAgfQorCisgICAgSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgICAgICA6IFJlcXVlc3RBbmltYXRpb25G
cmFtZUNhbGxiYWNrKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgbV9jYWxsYmFjayhXVEZNb3Zl
KGNhbGxiYWNrKSkKKyAgICB7CisKKyAgICB9CisKKyAgICBDYWxsYmFja1Jlc3VsdDx2b2lkPiBo
YW5kbGVFdmVudChkb3VibGUgaGlnaFJlc1RpbWVNcykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IFVOVVNFRF9QQVJBTShoaWdoUmVzVGltZU1zKTsKKyAgICAgICAgbV9jYWxsYmFjaygpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KK3ByaXZhdGU6CisgICAgRnVuY3Rpb248dm9pZCgpPiBt
X2NhbGxiYWNrOworfTsKKworCitXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OkR1bW15
SW5saW5lRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCit7CisgICAgc2V0RW5hYmxlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGU6OklubGluZSwgeyBY
UlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyIH0pOworfQorCit2b2lkIFdlYlhSU3lzdGVtOjpE
dW1teUlubGluZURldmljZTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVz
dEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBJbmxpbmUgWFIgc2Vzc2lvbnMg
cmVseSBvbiBkb2N1bWVudC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gcGVyZm9ybSB0aGUgcmVu
ZGVyIGxvb3AuCisgICAgYXV0byBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGF1dG8gcmFmID0gSW5saW5lUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2s6OmNyZWF0ZSgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soeyB9
KTsKKyAgICB9KTsKKworICAgIGRvY3VtZW50LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmFmKTsK
K30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKaW5kZXggYzc2MmQ0
NmFjMGU5MDRhMzk4M2QzOTdmNjg2NTYxZDRjMTY1YjM1NS4uYzMzY2Y3M2I4MTI0ZTY1MDM4MjE1
MDlhMzgyMDk0YjkzMGVmYjU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTeXN0ZW0uaApAQCAtMTA2LDExICsxMDYsMTYgQEAgcHJpdmF0ZToKICAgICAvLyBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkZWZhdWx0LWlubGluZS14ci1kZXZpY2UK
ICAgICBjbGFzcyBEdW1teUlubGluZURldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpE
ZXZpY2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgRHVtbXlJbmxpbmVEZXZpY2UoKTsKKyAgICAg
ICAgRHVtbXlJbmxpbmVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZv
cm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJl
bmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH07CisKKyAg
ICAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVD
YWxsYmFjayYmKSBmaW5hbDsKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgfTsKICAgICBEdW1teUlubGluZURldmljZSBtX2Rl
ZmF1bHRJbmxpbmVEZXZpY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJXZWJHTExheWVyLmNwcAppbmRleCA4NmRkMTFiMDAxNDNiZjgwZWE4MWFlMmFkZDhkZTg0
ZGMwMmQwMzNmLi4xNGNjNzRiOGU5NTFhMmVlMTE0N2RmNTc4MDA1ZDZiOGRlNDdjNjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBA
IC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJIVE1MQ2Fu
dmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5D
YW52YXMuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmgiCiAjaWYgRU5BQkxFKFdFQkdMMikKQEAgLTE5OCw2ICsyMDAsMjMg
QEAgZG91YmxlIFdlYlhSV2ViR0xMYXllcjo6Z2V0TmF0aXZlRnJhbWVidWZmZXJTY2FsZUZhY3Rv
cihjb25zdCBXZWJYUlNlc3Npb24mIHNlc3MKICAgICByZXR1cm4gKG5hdGl2ZVNpemUgLyByZWNv
bW1lbmRlZFNpemUpLndpZHRoKCk7CiB9CiAKK0hUTUxDYW52YXNFbGVtZW50KiBXZWJYUldlYkdM
TGF5ZXI6OmNhbnZhcygpIGNvbnN0Cit7CisgICAgSFRNTENhbnZhc0VsZW1lbnQqIGMgPSBXVEY6
OnN3aXRjaE9uKG1fY29udGV4dCwgW10oY29uc3QgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U+JiBiYXNlQ29udGV4dCkgeworICAgICAgICBhdXRvIGNhbnZhcyA9IGJhc2VDb250ZXh0
LT5jYW52YXMoKTsKKyAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oCisgICAgICAgICAgICBj
YW52YXMsCisgICAgICAgICAgICBbXShjb25zdCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBj
YW52YXMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldCgpOworICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIFtdKFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+KSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCJiYXNlTGF5ZXIgb2YgYSBXZWJYUldlYkdMTGF5
ZXIgbXVzdCBiZSBhbiBIVE1MQ2FudmFzRWxlbWVudCIpOworICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICAgICAgfSk7CisgICAgfSk7CisgICAgcmV0dXJuIGM7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCmluZGV4IDMxNzU1
ZDg0OTZhNmE3MDJlMjMzMjljZmJmMzI5YjljYzRiOGE5ZGYuLjNmNzU4N2RlODlkYTZlMjMxYzk0
M2M0ZjkwNWZjMWNmMTgwNTkyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJXZWJHTExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUldlYkdMTGF5ZXIuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFdl
YkdMRnJhbWVidWZmZXI7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7CkBAIC03NCw2ICs3
NSwxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSB7IHJl
dHVybiBtX3Nlc3Npb247IH0KIAorICAgIGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDb21wb3NpdGlvbkRpc2FibGVkOyB9CisgICAgdm9pZCBzZXRDb21wb3Np
dGlvbkRpc2FibGVkKGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCkgeyBtX2lzQ29tcG9zaXRpb25E
aXNhYmxlZCA9IGNvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KKworICAgIEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJYUldlYkdMTGF5ZXIoUmVmPFdl
YlhSU2Vzc2lvbj4mJiwgV2ViWFJSZW5kZXJpbmdDb250ZXh0JiYsIGNvbnN0IFhSV2ViR0xMYXll
ckluaXQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IDY0
NTUwZjRlMDFiZjAwNWJlZGUxODRjMGZlYTRkYjkzMTI2NDhiNjQuLjc0ZTg0OGU5MjM2YTYxOGRk
N2U0ZDFjODc2NmVhYTdhNTJiMjFjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNjEsNiArNjIsMjUgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmlu
ZyhTZXNzaW9uTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaHV0RG93blRyYWNraW5nQW5k
UmVuZGVyaW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3Bh
Y2UoUmVmZXJlbmNlU3BhY2VUeXBlKSA9IDA7CisKKyAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKKyAg
ICAgICAgbG9uZyBwcmVkaWN0ZWREaXNwbGF5VGltZTsKKyAgICAgICAgc3RydWN0IFZpZXdEYXRh
IHsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludDNEIHBvc2l0aW9uOworICAgICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHgsIHksIHosIHc7CisgICAgICAgICAgICAgICAgfSBvcmllbnRhdGlvbjsK
KyAgICAgICAgICAgIH0gcG9zZTsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgclVwLCByRG93biwgckxlZnQsIHJSaWdodDsKKyAgICAgICAgICAgIH0gZm92Owor
ICAgICAgICB9OworICAgICAgICBWZWN0b3I8Vmlld0RhdGE+IHZpZXdQb3NlczsKKyAgICB9Owor
ICAgIHVzaW5nIFJlcXVlc3RGcmFtZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEZyYW1l
RGF0YSk+OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJh
Y2smJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgRGV2aWNlKCkgPSBkZWZhdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
Y3BwCmluZGV4IGZlODY1ZTY3MWQ3MDY4NmRlNzkxZjE0MDBlNmNmM2UyYzg2OWVjMjIuLmVkMDQ3
MGUyYTAyNGUyOWI3ZjBiNmUwNGEwZTY4NTQzOGRiOGUyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTc0
LDYgKzc0LDkgQEAgcHJpdmF0ZToKIAogICAgIFhySW5zdGFuY2UgbV9pbnN0YW5jZSB7IFhSX05V
TExfSEFORExFIH07CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV93b3JrUXVldWU7CisKKyAgICB1c2lu
ZyBSZWZlcmVuY2VTcGFjZXNNYXAgPSBIYXNoTWFwPFJlZmVyZW5jZVNwYWNlVHlwZSwgWHJTcGFj
ZSosIEludEhhc2g8UmVmZXJlbmNlU3BhY2VUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0
czxSZWZlcmVuY2VTcGFjZVR5cGU+PjsKKyAgICBSZWZlcmVuY2VTcGFjZXNNYXAgbV9yZWZlcmVu
Y2VTcGFjZXM7CiB9OwogCiB2b2lkIEluc3RhbmNlOjpJbXBsOjplbnVtZXJhdGVBcGlMYXllclBy
b3BlcnRpZXMoKSBjb25zdApAQCAtMjM2LDYgKzIzOSwyNCBAQCB2b2lkIEluc3RhbmNlOjplbnVt
ZXJhdGVJbW1lcnNpdmVYUkRldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBEZXZp
Y2VMaQogICAgIH0pOwogfQogCitzdGF0aWMgWHJSZWZlcmVuY2VTcGFjZVR5cGUgdG9YclJlZmVy
ZW5jZVNwYWNlVHlwZShSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICBjYXNlIFJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyOgorICAgICAgICByZXR1
cm4gWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfVklFVzsKKyAgICBjYXNlIFJlZmVyZW5jZVNwYWNl
VHlwZTo6TG9jYWw6CisgICAgICAgIHJldHVybiBYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9MT0NB
TDsKKyAgICBjYXNlIFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vcjoKKyAgICBjYXNlIFJl
ZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yOgorICAgICAgICByZXR1cm4gWFJfUkVGRVJF
TkNFX1NQQUNFX1RZUEVfU1RBR0U7CisgICAgY2FzZSBSZWZlcmVuY2VTcGFjZVR5cGU6OlVuYm91
bmRlZDoKKyAgICAgICAgcmV0dXJuIFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX1VOQk9VTkRFRF9N
U0ZUOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgiVW5yZWNvZ25p
emVkIHJlZmVyZW5jZSBzcGFjZSB0eXBlICVkIiwgdHlwZSk7CisgICAgICAgIHJldHVybiBYUl9S
RUZFUkVOQ0VfU1BBQ0VfVFlQRV9WSUVXOworICAgIH07Cit9CisKIE9wZW5YUkRldmljZTo6T3Bl
blhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5zdGFuY2UgaW5zdGFuY2UsIFdvcmtRdWV1ZSYg
cXVldWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKICAgICA6IG1fc3lz
dGVtSWQoaWQpCiAgICAgLCBtX2luc3RhbmNlKGluc3RhbmNlKQpAQCAtMzA0LDYgKzMyNSwzMiBA
QCBEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJEZXZpY2U6OmVudW1lcmF0ZVJl
ZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mCiAgICAgcmV0dXJuIGVuYWJsZWRGZWF0dXJlczsKIH0K
IAordm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShSZWZlcmVuY2VT
cGFjZVR5cGUgdHlwZSkKK3sKKyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCB0eXBlXSgpIHsK
KyAgICAgICAgQVNTRVJUKG1fc2Vzc2lvbiAhPSBYUl9OVUxMX0hBTkRMRSk7CisgICAgICAgIEFT
U0VSVChtX2luc3RhbmNlICE9IFhSX05VTExfSEFORExFKTsKKyAgICAgICAgaWYgKG1fcmVmZXJl
bmNlU3BhY2VzLmNvbnRhaW5zKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IFhyUG9zZWYgaWRlbnRpdHlQb3NlID0geworICAgICAgICAgICAgLm9yaWVudGF0aW9uID0geyAu
eCA9IDAsIC55ID0gMCwgLnogPSAwLCAudyA9IDEuMCB9LAorICAgICAgICAgICAgLnBvc2l0aW9u
ID0geyAueCA9IDAsIC55ID0gMCwgLnogPSAwIH0KKyAgICAgICAgfTsKKworICAgICAgICBhdXRv
IHNwYWNlQ3JlYXRlSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclJlZmVyZW5jZVNwYWNlQ3JlYXRl
SW5mbywgWFJfVFlQRV9SRUZFUkVOQ0VfU1BBQ0VfQ1JFQVRFX0lORk8+KCk7CisgICAgICAgIHNw
YWNlQ3JlYXRlSW5mby5yZWZlcmVuY2VTcGFjZVR5cGUgPSB0b1hyUmVmZXJlbmNlU3BhY2VUeXBl
KHR5cGUpOworICAgICAgICBzcGFjZUNyZWF0ZUluZm8ucG9zZUluUmVmZXJlbmNlU3BhY2UgPSBp
ZGVudGl0eVBvc2U7CisKKyAgICAgICAgWHJTcGFjZSBzcGFjZTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSB4ckNyZWF0ZVJlZmVyZW5jZVNwYWNlKG1fc2Vzc2lvbiwgJnNwYWNlQ3JlYXRlSW5mbywg
JnNwYWNlKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckNyZWF0ZVJlZmVy
ZW5jZVNwYWNlIiwgbV9pbnN0YW5jZSk7CisKKyAgICAgICAgbV9yZWZlcmVuY2VTcGFjZXMuYWRk
KHR5cGUsIHNwYWNlKTsKKyAgICAgICAgTE9HKFhSLCAiQ3JlYXRlZCByZWZlcmVuY2Ugc3BhY2Ug
b2YgdHlwZSAlZCIsIHR5cGUpOworICAgIH0pOworfQorCiB2b2lkIE9wZW5YUkRldmljZTo6Y29s
bGVjdFN1cHBvcnRlZFNlc3Npb25Nb2RlcygpCiB7CiAgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJy
ZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKQEAgLTQxNCwxNyArNDYxLDE2MCBAQCB2b2lk
IE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2Rl
IG1vZGUpCiAKIHZvaWQgT3BlblhSRGV2aWNlOjpyZXNldFNlc3Npb24oKQogewotICAgIG1fcXVl
dWUuZGlzcGF0Y2goW3RoaXNdKCkgewotICAgICAgICBpZiAobV9zZXNzaW9uID09IFhSX05VTExf
SEFORExFKQotICAgICAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVu
dCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgaWYgKG1fc2Vzc2lvbiAhPSBYUl9OVUxM
X0hBTkRMRSkgewogICAgICAgICB4ckRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lvbik7CiAgICAgICAg
IG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExFOwotICAgIH0pOworICAgIH0KKyAgICBtX3Nlc3Np
b25TdGF0ZSA9IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTjsKIH0KIAogdm9pZCBPcGVuWFJEZXZp
Y2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQogewotICAgIHJlc2V0U2Vzc2lvbigp
OworICAgIC8vIHhyUmVxdWVzdEV4aXRTZXNzaW9uKCkgd2lsbCB0cmFuc2l0aW9uIHRoZSBzZXNz
aW9uIHRvIFNUT1BQRUQgc3RhdGUgYW5kIHRoZW4gdGhlIHJlcXVlc3RGcmFtZSgpIG1ldGhvZCB3
aWxsIGNhbGwgcmVzZXQuCisgICAgLy8gSWYgdGhlIHNlc3Npb24gd2FzIG5vdCBydW5uaW5nIHdl
IGhhdmUgdG8gcmVzZXQgdGhlIHNlc3Npb24gb3Vyc2VsdmVzLgorICAgIGlmIChYUl9GQUlMRUQo
eHJSZXF1ZXN0RXhpdFNlc3Npb24obV9zZXNzaW9uKSkpIHsKKyAgICAgICAgcmVzZXRTZXNzaW9u
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCByZXF1ZXN0
RnJhbWUoKSBpcyBjYWxsZWQgYXQgbGVhc3Qgb25lIG1vcmUgdGltZSB0byBwcm9wZXJseSBlbmQg
dGhlIHNlc3Npb24uCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKV0oKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJlcXVlc3RGcmFtZShbXShGcmFtZURhdGEpIHsgfSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjpwb2xsRXZlbnRzKCkKK3sKKyAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKKyAgICBhdXRvIHJ1bnRpbWVFdmVudCA9IGNyZWF0ZVN0cnVjdHVyZTxY
ckV2ZW50RGF0YUJ1ZmZlciwgWFJfVFlQRV9FVkVOVF9EQVRBX0JVRkZFUj4oKTsKKyAgICB3aGls
ZSAoeHJQb2xsRXZlbnQobV9pbnN0YW5jZSwgJnJ1bnRpbWVFdmVudCkgPT0gWFJfU1VDQ0VTUykg
eworICAgICAgICBzd2l0Y2ggKHJ1bnRpbWVFdmVudC50eXBlKSB7CisgICAgICAgIGNhc2UgWFJf
VFlQRV9FVkVOVF9EQVRBX1NFU1NJT05fU1RBVEVfQ0hBTkdFRDogeworICAgICAgICAgICAgYXV0
byogZXZlbnQgPSAoWHJFdmVudERhdGFTZXNzaW9uU3RhdGVDaGFuZ2VkKikmcnVudGltZUV2ZW50
OworICAgICAgICAgICAgbV9zZXNzaW9uU3RhdGUgPSBldmVudC0+c3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9FVkVO
VFNfTE9TVDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfSU5TVEFOQ0VfTE9TU19Q
RU5ESU5HOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9SRUZFUkVOQ0VfU1BBQ0Vf
Q0hBTkdFX1BFTkRJTkc6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX0lOVEVSQUNU
SU9OX1BST0ZJTEVfQ0hBTkdFRDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfTUFJ
Tl9TRVNTSU9OX1ZJU0lCSUxJVFlfQ0hBTkdFRF9FWFRYOgorICAgICAgICBjYXNlIFhSX1RZUEVf
RVZFTlRfREFUQV9WSVNJQklMSVRZX01BU0tfQ0hBTkdFRF9LSFI6CisgICAgICAgIGNhc2UgWFJf
VFlQRV9FVkVOVF9EQVRBX1BFUkZfU0VUVElOR1NfRVhUOgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoIlVuaGFuZGxl
ZCBldmVudCB0eXBlICVkXG4iLCBydW50aW1lRXZlbnQudHlwZSk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK2Jvb2wgc2Vzc2lvbklzVmlzaWJsZShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKK3sKKyAg
ICByZXR1cm4gc3RhdGUgPD0gWFJfU0VTU0lPTl9TVEFURV9GT0NVU0VEOworfQorCitib29sIHNl
c3Npb25TaG91bGRTdG9wKFhyU2Vzc2lvblN0YXRlIHN0YXRlKQoreworICAgIHJldHVybiBzdGF0
ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HOworfQorCitib29sIHNlc3Npb25Jc0FjdGl2
ZShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gc3RhdGUgPT0gWFJfU0VTU0lP
Tl9TVEFURV9WSVNJQkxFIHx8IHN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfRk9DVVNFRDsKK30K
KworWHJSZXN1bHQgT3BlblhSRGV2aWNlOjpiZWdpblNlc3Npb24oKQoreworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3Nlc3Npb25TdGF0ZSA9PSBYUl9TRVNTSU9O
X1NUQVRFX1JFQURZKTsKKworICAgIGF1dG8gc2Vzc2lvbkJlZ2luSW5mbyA9IGNyZWF0ZVN0cnVj
dHVyZTxYclNlc3Npb25CZWdpbkluZm8sIFhSX1RZUEVfU0VTU0lPTl9CRUdJTl9JTkZPPigpOwor
ICAgIHNlc3Npb25CZWdpbkluZm8ucHJpbWFyeVZpZXdDb25maWd1cmF0aW9uVHlwZSA9IFhSX1ZJ
RVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfU1RFUkVPOworICAgIGF1dG8gcmVzdWx0ID0g
eHJCZWdpblNlc3Npb24obV9zZXNzaW9uLCAmc2Vzc2lvbkJlZ2luSW5mbyk7CisjaWYgIUxPR19E
SVNBQkxFRAorICAgIGlmIChYUl9GQUlMRUQocmVzdWx0KSkKKyAgICAgICAgTE9HKFhSLCAiJXMg
JXM6ICVzXG4iLCBfX2Z1bmNfXywgInhyQmVnaW5TZXNzaW9uIiwgcmVzdWx0VG9TdHJpbmcocmVz
dWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK0RldmljZTo6RnJhbWVEYXRhOjpWaWV3RGF0YSB4clZpZXdUb1ZpZXdEYXRhKFhy
VmlldyB2aWV3KQoreworICAgIERldmljZTo6RnJhbWVEYXRhOjpWaWV3RGF0YSBkYXRhOworICAg
IGRhdGEuZm92ID0geyB2aWV3LmZvdi5hbmdsZVVwLCB2aWV3LmZvdi5hbmdsZURvd24sIHZpZXcu
Zm92LmFuZ2xlTGVmdCwgdmlldy5mb3YuYW5nbGVSaWdodCB9OworICAgIGRhdGEucG9zZS5vcmll
bnRhdGlvbiA9IHsgdmlldy5wb3NlLm9yaWVudGF0aW9uLngsIHZpZXcucG9zZS5vcmllbnRhdGlv
bi55LCB2aWV3LnBvc2Uub3JpZW50YXRpb24ueiwgdmlldy5wb3NlLm9yaWVudGF0aW9uLncgfTsK
KyAgICBkYXRhLnBvc2UucG9zaXRpb24gPSB7IHZpZXcucG9zZS5wb3NpdGlvbi54LCB2aWV3LnBv
c2UucG9zaXRpb24ueSwgdmlldy5wb3NlLnBvc2l0aW9uLnogfTsKKyAgICByZXR1cm4gZGF0YTsK
K30KKwordm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFj
ayYmIGNhbGxiYWNrKQoreworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIFhyU2Vzc2lvblN0YXRlIG9s
ZFNlc3Npb25TdGF0ZSA9IG1fc2Vzc2lvblN0YXRlOworICAgICAgICBwb2xsRXZlbnRzKCk7Cisg
ICAgICAgIGlmIChzZXNzaW9uU2hvdWxkU3RvcChtX3Nlc3Npb25TdGF0ZSkpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBub3RpZnkgd2l0aCBzb21lIGV2ZW50LgorICAgICAgICAgICAgeHJFbmRT
ZXNzaW9uKG1fc2Vzc2lvbik7CisgICAgICAgICAgICByZXNldFNlc3Npb24oKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3Nlc3Npb25TdGF0ZSA9PSBY
Ul9TRVNTSU9OX1NUQVRFX1JFQURZICYmIG1fc2Vzc2lvblN0YXRlICE9IG9sZFNlc3Npb25TdGF0
ZSkKKyAgICAgICAgICAgIGJlZ2luU2Vzc2lvbigpOworCisgICAgICAgIGF1dG8gZnJhbWVTdGF0
ZSA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lU3RhdGUsIFhSX1RZUEVfRlJBTUVfU1RBVEU+KCk7
CisgICAgICAgIGF1dG8gZnJhbWVXYWl0SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lV2Fp
dEluZm8sIFhSX1RZUEVfRlJBTUVfV0FJVF9JTkZPPigpOworICAgICAgICBhdXRvIHJlc3VsdCA9
IHhyV2FpdEZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lV2FpdEluZm8sICZmcmFtZVN0YXRlKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4cldhaXRGcmFtZSIsIG1faW5zdGFuY2Up
OworICAgICAgICBYclRpbWUgcHJlZGljdGVkVGltZSA9IGZyYW1lU3RhdGUucHJlZGljdGVkRGlz
cGxheVRpbWU7CisKKyAgICAgICAgYXV0byBmcmFtZUJlZ2luSW5mbyA9IGNyZWF0ZVN0cnVjdHVy
ZTxYckZyYW1lQmVnaW5JbmZvLCBYUl9UWVBFX0ZSQU1FX0JFR0lOX0lORk8+KCk7CisgICAgICAg
IHJlc3VsdCA9IHhyQmVnaW5GcmFtZShtX3Nlc3Npb24sICZmcmFtZUJlZ2luSW5mbyk7CisgICAg
ICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJCZWdpbkZyYW1lIiwgbV9pbnN0YW5jZSk7
CisKKyAgICAgICAgRGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhOworICAgICAgICBmcmFtZURh
dGEucHJlZGljdGVkRGlzcGxheVRpbWUgPSBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1l
OworCisgICAgICAgIGlmIChzZXNzaW9uSXNBY3RpdmUobV9zZXNzaW9uU3RhdGUpKSB7CisgICAg
ICAgICAgICBBU1NFUlQobV9jb25maWd1cmF0aW9uVmlld3MuY29udGFpbnMobV9jdXJyZW50Vmll
d0NvbmZpZ3VyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBjb25maWd1cmF0
aW9uVmlldyA9IG1fY29uZmlndXJhdGlvblZpZXdzLmdldChtX2N1cnJlbnRWaWV3Q29uZmlndXJh
dGlvblR5cGUpOworCisgICAgICAgICAgICBhdXRvIHZpZXdMb2NhdGVJbmZvID0gY3JlYXRlU3Ry
dWN0dXJlPFhyVmlld0xvY2F0ZUluZm8sIFhSX1RZUEVfVklFV19MT0NBVEVfSU5GTz4oKTsKKyAg
ICAgICAgICAgIHZpZXdMb2NhdGVJbmZvLmRpc3BsYXlUaW1lID0gcHJlZGljdGVkVGltZTsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiB1c2UgdGhlIGN1cnJlbnQgcmVmZXJlbmNlIHNwYWNlLgorICAg
ICAgICAgICAgLy8gdmlld0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3BhY2U7CisKKyAgICAg
ICAgICAgIHVpbnQzMl90IHZpZXdDb3VudCA9IGNvbmZpZ3VyYXRpb25WaWV3LnNpemUoKTsKKyAg
ICAgICAgICAgIFZlY3RvcjxYclZpZXc+IHZpZXdzKHZpZXdDb3VudCwgW10geworICAgICAgICAg
ICAgICAgIFhyVmlldyBvYmplY3Q7CisgICAgICAgICAgICAgICAgc3RkOjptZW1zZXQoJm9iamVj
dCwgMCwgc2l6ZW9mKFhyVmlldykpOworICAgICAgICAgICAgICAgIG9iamVjdC50eXBlID0gWFJf
VFlQRV9WSUVXOworICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgICAgICB9
KCkpOworCisgICAgICAgICAgICBhdXRvIHZpZXdTdGF0ZSA9IGNyZWF0ZVN0cnVjdHVyZTxYclZp
ZXdTdGF0ZSwgWFJfVFlQRV9WSUVXX1NUQVRFPigpOworICAgICAgICAgICAgdWludDMyX3Qgdmll
d0NvdW50T3V0cHV0OworICAgICAgICAgICAgcmVzdWx0ID0geHJMb2NhdGVWaWV3cyhtX3Nlc3Np
b24sICZ2aWV3TG9jYXRlSW5mbywgJnZpZXdTdGF0ZSwgdmlld0NvdW50LCAmdmlld0NvdW50T3V0
cHV0LCB2aWV3cy5kYXRhKCkpOworICAgICAgICAgICAgaWYgKCFYUl9GQUlMRUQocmVzdWx0KSkg
eworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdmlldyA6IHZpZXdzKQorICAgICAgICAgICAg
ICAgICAgICBmcmFtZURhdGEudmlld1Bvc2VzLmFwcGVuZCh4clZpZXdUb1ZpZXdEYXRhKHZpZXcp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2ZyYW1lRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhmcmFtZURhdGEpOworICAgICAgICB9KTsKKworICAgICAgICBhdXRvIGZyYW1l
RW5kSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lRW5kSW5mbywgWFJfVFlQRV9GUkFNRV9F
TkRfSU5GTz4oKTsKKyAgICAgICAgZnJhbWVFbmRJbmZvLmRpc3BsYXlUaW1lID0gcHJlZGljdGVk
VGltZTsKKyAgICAgICAgZnJhbWVFbmRJbmZvLmVudmlyb25tZW50QmxlbmRNb2RlID0gWFJfRU5W
SVJPTk1FTlRfQkxFTkRfTU9ERV9PUEFRVUU7CisgICAgICAgIGZyYW1lRW5kSW5mby5sYXllckNv
dW50ID0gMDsKKyAgICAgICAgcmVzdWx0ID0geHJFbmRGcmFtZShtX3Nlc3Npb24sICZmcmFtZUVu
ZEluZm8pOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW5kRnJhbWUiLCBt
X2luc3RhbmNlKTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1YUgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVu
WFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhS
LmgKaW5kZXggYWEyZjc4MGVmOTEyOTYyMGY0NDEyZGI0OWEwZThhMDQyZDU4YjUyOS4uNjJhM2I1
MjljZjZkYjczMzFkMWJhOGM3MWM0MGVhNGU5OTExNTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCkBAIC01MiwxNCAr
NTIsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKTsK
IAogICAgIExpc3RPZkVuYWJsZWRGZWF0dXJlcyBlbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMoWHJT
ZXNzaW9uJikgY29uc3Q7CisgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUmVmZXJl
bmNlU3BhY2VUeXBlKSBmaW5hbDsKIAogICAgIFdlYkNvcmU6OkludFNpemUgcmVjb21tZW5kZWRS
ZXNvbHV0aW9uKFNlc3Npb25Nb2RlKSBmaW5hbDsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNr
aW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlKSBmaW5hbDsKICAgICB2b2lkIHNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKIAorICAgIHZvaWQgcG9sbEV2ZW50cygpOworICAg
IFhyUmVzdWx0IGJlZ2luU2Vzc2lvbigpOwogICAgIHZvaWQgcmVzZXRTZXNzaW9uKCk7CiAKKyAg
ICB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKwogICAg
IHVzaW5nIFZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllc01hcCA9IEhhc2hNYXA8WHJWaWV3Q29u
ZmlndXJhdGlvblR5cGUsIFhyVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzLCBJbnRIYXNoPFhy
Vmlld0NvbmZpZ3VyYXRpb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxYclZpZXdD
b25maWd1cmF0aW9uVHlwZT4+OwogICAgIFZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllc01hcCBt
X3ZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllczsKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlv
blZpZXdzTWFwID0gSGFzaE1hcDxYclZpZXdDb25maWd1cmF0aW9uVHlwZSwgVmVjdG9yPFhyVmll
d0NvbmZpZ3VyYXRpb25WaWV3PiwgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdU
Rjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKQEAgLTY4
LDEwICs3MywxNCBAQCBwcml2YXRlOgogICAgIFhyU3lzdGVtSWQgbV9zeXN0ZW1JZDsKICAgICBY
ckluc3RhbmNlIG1faW5zdGFuY2U7CiAgICAgWHJTZXNzaW9uIG1fc2Vzc2lvbiB7IFhSX05VTExf
SEFORExFIH07CisgICAgWHJTZXNzaW9uU3RhdGUgbV9zZXNzaW9uU3RhdGUgeyBYUl9TRVNTSU9O
X1NUQVRFX1VOS05PV04gfTsKIAogICAgIFdvcmtRdWV1ZSYgbV9xdWV1ZTsKIAogICAgIFhyVmll
d0NvbmZpZ3VyYXRpb25UeXBlIG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZTsKKworICAg
IHVzaW5nIFJlZmVyZW5jZVNwYWNlc01hcCA9IEhhc2hNYXA8UmVmZXJlbmNlU3BhY2VUeXBlLCBY
clNwYWNlLCBJbnRIYXNoPFJlZmVyZW5jZVNwYWNlVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8UmVmZXJlbmNlU3BhY2VUeXBlPj47CisgICAgUmVmZXJlbmNlU3BhY2VzTWFwIG1fcmVm
ZXJlbmNlU3BhY2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1YUgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCmluZGV4IDJmYWRmMzkzMjUwNWRhNTRh
YmUxN2QxOTEyZTQwMTE5MjFhNDk1NzQuLjlmOTQ5ZjkyODVjZGE4YmM3YTYzN2FiNTc5M2ZiMGU2
NTAyZGIwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2
aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJET01Qb2ludFJlYWRPbmx5LmgiCiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xNTYsNiArMTU3LDQyIEBAIEV4Y2VwdGlvbk9yPFJlZjxGYWtlWFJW
aWV3Pj4gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQmIGlu
CiAgICAgcmV0dXJuIGZha2VWaWV3OwogfQogCitTaW11bGF0ZWRYUkRldmljZTo6U2ltdWxhdGVk
WFJEZXZpY2UoKQorICAgIDogbV9mcmFtZVRpbWVyKCp0aGlzLCAmU2ltdWxhdGVkWFJEZXZpY2U6
OmZyYW1lVGltZXJGaXJlZCkKK3sKKyAgICBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9
IHRydWU7Cit9CisKK1NpbXVsYXRlZFhSRGV2aWNlOjp+U2ltdWxhdGVkWFJEZXZpY2UoKQorewor
ICAgIG1fZnJhbWVUaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OmZy
YW1lVGltZXJGaXJlZCgpCit7CisgICAgVmVjdG9yPFJlcXVlc3RGcmFtZUNhbGxiYWNrPiBydW5u
aW5nQ2FsbGJhY2tzOworICAgIHJ1bm5pbmdDYWxsYmFja3Muc3dhcChtX2NhbGxiYWNrcyk7Cisg
ICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHJ1bm5pbmdDYWxsYmFja3MpCisgICAgICAgIGNhbGxi
YWNrKHsgfSk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2lu
Z0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkKK3sKK30KKwordm9pZCBTaW11
bGF0ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBp
ZiAoIW1fZnJhbWVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZyYW1lVGltZXIuc3RhcnRP
bmVTaG90KDE1X21zKTsKK30KKwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c2h1dERvd25UcmFj
a2luZ0FuZFJlbmRlcmluZygpCit7CisgICAgaWYgKG1fZnJhbWVUaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICBtX2ZyYW1lVGltZXIuc3RvcCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaAppbmRleCA5N2ExYjk1NzE5ZTdiMzJiZjg0MTRiY2ZhMzRkNjkwZWQ3MzY3NzBm
Li41YTczZWFmOWUzNjY4ZDlmZTZmNDE1MGExYzk0MDg3NGY4NDYwNjQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKQEAgLTYzLDIwICs2MywyOSBAQCBwcml2YXRl
OgogY2xhc3MgU2ltdWxhdGVkWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2
aWNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTaW11bGF0
ZWRYUkRldmljZSgpIHsgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSB0cnVlOyB9Cisg
ICAgU2ltdWxhdGVkWFJEZXZpY2UoKTsKKyAgICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsKICAgICB2
b2lkIHNldE5hdGl2ZUJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4gZ2Vv
bWV0cnkpIHsgbV9uYXRpdmVCb3VuZHNHZW9tZXRyeSA9IGdlb21ldHJ5OyB9CiAgICAgdm9pZCBz
ZXRWaWV3ZXJPcmlnaW4oUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2luKSB7IG1f
dmlld2VyT3JpZ2luID0gV1RGTW92ZShvcmlnaW4pOyB9CiAgICAgdm9pZCBzZXRGbG9vck9yaWdp
bihSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvcmlnaW4pIHsgbV9mbG9vck9yaWdpbiA9
IFdURk1vdmUob3JpZ2luKTsgfQogICAgIHZvaWQgc2V0RW11bGF0ZWRQb3NpdGlvbihib29sIGVt
dWxhdGVkKSB7IG1fZW11bGF0ZWRQb3NpdGlvbiA9IGVtdWxhdGVkOyB9CiAgICAgVmVjdG9yPFJl
ZjxGYWtlWFJWaWV3Pj4mIHZpZXdzKCkgeyByZXR1cm4gbV92aWV3czsgfQogcHJpdmF0ZToKLSAg
ICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9u
TW9kZSkgZmluYWwgeyB9Ci0gICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkg
ZmluYWwgeyB9CisgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZv
cm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsOworICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJl
bmRlcmluZygpIGZpbmFsOworICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRm
b3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisgICAgdm9pZCByZXF1ZXN0RnJh
bWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisKKyAgICB2b2lkIGZyYW1lVGltZXJG
aXJlZCgpOworCiAgICAgT3B0aW9uYWw8VmVjdG9yPEZha2VYUkJvdW5kc1BvaW50Pj4gbV9uYXRp
dmVCb3VuZHNHZW9tZXRyeTsKICAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV92aWV3
ZXJPcmlnaW47CiAgICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fZmxvb3JPcmlnaW47
CiAgICAgYm9vbCBtX2VtdWxhdGVkUG9zaXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxSZWY8
RmFrZVhSVmlldz4+IG1fdmlld3M7CisKKyAgICBUaW1lciBtX2ZyYW1lVGltZXI7CisgICAgVmVj
dG9yPFJlcXVlc3RGcmFtZUNhbGxiYWNrPiBtX2NhbGxiYWNrczsKIH07CiAKIGNsYXNzIFdlYkZh
a2VYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkZha2VYUkRldmljZT4gewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGE0NjViMjY2MmExMjljMWU0MzJjYjYzNTAzNGNmYzAyODg4Yzk4MzcuLjBkMzZkZDBl
NjkyNDdiODA5YzI3Mjk1ZGE5YTNlYzNmYzBhODU2ZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMS0wMS0yNiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4gYW5k
IEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29t
cGxldGUgWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0v
d3BlL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDEtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzE1MTQgYW5k
IHIyNzE1NDkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGZlNzgxNTZjZmM4ZTA5
YzZmYzY4ODhjNmZhM2EyNWY0OGEyNmRjNTUuLmE5ZmE1MDI3MTlmZDFmNjhmZTRmNGM4ZmJiZWI1
MjE2MDYxYjc5NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTAxLTI2ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29t
PiBhbmQgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAg
ICBDb21wbGV0ZSBYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxl
IFhSU2Vzc2lvbiBSQUYgdGVzdHMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKwogMjAyMS0wMS0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN1cHBvcnQgQWJvcnRTaWduYWwgaW4gYWRkRXZlbnRMaXN0ZW5lck9w
dGlvbnMgdG8gdW5zdWJzY3JpYmUgZnJvbSBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RB
bmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFu
aW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU4
YTQyM2ZjNmIxOTgxMTI5MzViZmYyOTA3Mjc4ZmRhOTRmY2M1NgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorCitQQVNTIFhSRnJhbWUgZ2V0Vmlld2VyUG9zZSB1cGRhdGVzIG9uIHRo
ZSBuZXh0IGZyYW1lIGZvciBpbW1lcnNpdmUKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVw
ZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIG5vbi1pbW1lcnNpdmUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBlYTNmNTg3OTE3YWFjM2U2OWFkZTQ4
MTU3ZjU2ZjEyZDc1OGIzNDc4Li4yMWFkMWI0ODc2ZjNhN2M2ZjMxMjM3MTJkZDUxMjhjZWZhMTZj
NGMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNjMy
LDYgKzYzMiw3IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgd2Via2l0Lm9yZy9iLzIxNTYzNyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyCiB3ZWJraXQub3JnL2IvMjA5ODU5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2NhbmNlbEFu
aW1hdGlvbkZyYW1lX2ludmFsaWRoYW5kbGUuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9y
Zy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lv
bl9mZWF0dXJlc19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcv
Yi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25f
cmVxdWVzdEFuaW1hdGlvbkZyYW1lX2NhbGxiYWNrX2NhbGxzLmh0dHBzLmh0bWwgWyBQYXNzIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RB
bmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9i
LzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0UmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIw
OTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS9pZGxo
YXJuZXNzLmh0dHBzLndpbmRvdy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL3hyRGV2aWNlX2lz
U2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNpdmUtYXIuaHR0cHMuaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418924</attachid>
            <date>2021-02-01 14:23:01 -0800</date>
            <delta_ts>2021-02-03 11:06:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220979-20210201232259.patch</filename>
            <type>text/plain</type>
            <size>43053</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM1ZGM0YWQxNjQ0N2Qz
ZTk5ZGRmY2Y5NTcyNzBmMGFkZmE4ZTcyYy4uYzRjZGM2MTNlYzM2NmViZDYxN2IwZDU1N2ZiOWQw
NDc1NzgzYjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTAyLTAxICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBQcm9wZXJseSBpbXBsZW1lbnQgdGhlIHJl
bmRlciBsb29wIGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBYUiBzZXNzaW9ucworICAgICAgICAt
IEFwcGx5IHBlbmRpbmcgcmVuZGVyIHN0YXRlIGNoYW5nZXMKKworICAgICAgICBUZXN0ZWQgYnkg
dGhlIFdlYlhSIHBsYXRmb3JtIHRlc3RzLiAKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6V2ViWFJGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkZyYW1lOjpzZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnNldFRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSRnJhbWU6OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSUmVuZGVyU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNl
dE91dHB1dENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlbmRlclN0YXRlOjpjb21w
b3NpdGlvbkRpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVuZGVyU3Rh
dGU6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6V2ViWFJTZXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6YXBwbHlQZW5kaW5nUmVuZGVy
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpmcmFtZVNob3VsZEJlUmVu
ZGVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpyZXF1ZXN0RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpvbkZyYW1lKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIv
V2ViWFJTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OldlYlhSU3lz
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6
RHVtbXlJbmxpbmVEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15
SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJTeXN0ZW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmNhbnZhcyBjb25zdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSV2ViR0xMYXllcjo6Y29tcG9zaXRpb25EaXNhYmxlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVu
eHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZp
Y2U6OnJlc2V0U2Vzc2lvbik6CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnNo
dXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhS
RGV2aWNlOjpwb2xsRXZlbnRzKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OnNlc3Npb25Jc1Zpc2li
bGUpOgorICAgICAgICAoUGxhdGZvcm1YUjo6c2Vzc2lvblNob3VsZFN0b3ApOgorICAgICAgICAo
UGxhdGZvcm1YUjo6c2Vzc2lvbklzQWN0aXZlKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5Y
UkRldmljZTo6YmVnaW5TZXNzaW9uKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OnhyVmlld1RvVmll
d0RhdGEpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmg6CisgICAg
ICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2lt
dWxhdGVkWFJEZXZpY2U6OlNpbXVsYXRlZFhSRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXVsYXRlZFhSRGV2aWNlOjp+U2ltdWxhdGVkWFJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6
U2ltdWxhdGVkWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnN0b3BUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIHRlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmg6CisKIDIwMjEtMDItMDEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgTGF6aWx5IGNyZWF0ZSBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2lu
dHMgc28gd2UgZG9uJ3QgbWlzdGFrZW5seSB0aGluayB3ZSBoYXZlIGEgZnJhbWUgd2hlbiByZS1h
c3NvY2lhdGluZyBhIGRvY3VtZW50IHRvIGEgZ2l2ZW4gY2FjaGVkIGZyYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA5MzVkYzEyN2M5ZDA3YTdj
OGQyMzg0MTU0NTg3ZDUxMzU4ODdhZTFhLi44YWE5N2FlOTJjOGRkMjc3Mzg5NzFhYjJlOTliNjcy
ZjUxNjZjMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5j
cHAKQEAgLTM2LDEzICszNiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJYUkZyYW1lKTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJh
bWU6OmNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCitSZWY8V2ViWFJGcmFtZT4g
V2ViWFJGcmFtZTo6Y3JlYXRlKFdlYlhSU2Vzc2lvbiogc2Vzc2lvbikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJYUkZyYW1lKFdURk1vdmUoc2Vzc2lvbikpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJYUkZyYW1lKHNlc3Npb24pKTsKIH0KIAotV2ViWFJGcmFtZTo6V2Vi
WFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCi0gICAgOiBtX3Nlc3Npb24oV1RG
TW92ZShzZXNzaW9uKSkKK1dlYlhSRnJhbWU6OldlYlhSRnJhbWUoV2ViWFJTZXNzaW9uKiBzZXNz
aW9uKQorICAgIDogbV9hY3RpdmUoZmFsc2UpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKIHsK
IH0KIApAQCAtNTAsNyArNTEsOCBAQCBXZWJYUkZyYW1lOjp+V2ViWFJGcmFtZSgpID0gZGVmYXVs
dDsKIAogY29uc3QgV2ViWFJTZXNzaW9uJiBXZWJYUkZyYW1lOjpzZXNzaW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zZXNzaW9uOworICAgIEFTU0VSVChtX3Nlc3Npb24pOworICAgIHJldHVy
biAqbV9zZXNzaW9uOwogfQogCiBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBXZWJYUkZyYW1lOjpn
ZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAppbmRleCA4MDhhNjc2NGYwZDJjNWFlNjFlNGQ2NThj
MjgyNTA1NzlmZTViNjI3Li4yNjU5YjIzMjA5MWY0ZDZhNjhlMDU2MmUyMzgxYzVmYmE5ODNkNDc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiRE9NSGlnaFJlc1RpbWVT
dGFtcC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3MgV2Vi
WFJWaWV3ZXJQb3NlOwogY2xhc3MgV2ViWFJGcmFtZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhS
RnJhbWU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSRnJhbWUpOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYp
OworICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFdlYlhSU2Vzc2lvbiopOwogICAg
IH5XZWJYUkZyYW1lKCk7CiAKICAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25z
dDsKQEAgLTUxLDEwICs1MiwxOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYlhSVmlld2VyUG9z
ZT4gZ2V0Vmlld2VyUG9zZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJik7CiAgICAgUmVmUHRy
PFdlYlhSUG9zZT4gZ2V0UG9zZShjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYp
OwogCisgICAgdm9pZCBzZXRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZSkgeyBtX3RpbWUg
PSB0aW1lOyB9CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUpIHsgbV9hY3RpdmUgPSBh
Y3RpdmU7IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0K
KwogcHJpdmF0ZToKLSAgICBXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYpOworICAgIFdl
YlhSRnJhbWUoV2ViWFJTZXNzaW9uKik7CisKKyAgICBib29sIG1fYWN0aXZlOworICAgIERPTUhp
Z2hSZXNUaW1lU3RhbXAgbV90aW1lOwogCi0gICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9u
OworICAgIC8vIFNlc3Npb24gb3ducyB0aGUgZnJhbWUuCisgICAgV2ViWFJTZXNzaW9uKiBtX3Nl
c3Npb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCmluZGV4IDFlNDM2M2YxZjE5NDMxZTRh
MWVjOTU4ZjFiZmEyYjQ3MDc0NTc3YTIuLmU2ZDQzYzA0Njg5NTk4YjUzZGE2ZDRiYmI3M2YyZGMx
YTQxM2EyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJS
ZW5kZXJTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5k
ZXJTdGF0ZS5oCkBAIC01Niw2ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYXNlTGF5
ZXIoV2ViWFJXZWJHTExheWVyKiBiYXNlTGF5ZXIpIHsgbV9iYXNlTGF5ZXIgPSBiYXNlTGF5ZXI7
IH0KIAogICAgIEhUTUxDYW52YXNFbGVtZW50KiBvdXRwdXRDYW52YXMoKSBjb25zdCB7IHJldHVy
biBtX291dHB1dENhbnZhcy5nZXQoKTsgfQorICAgIHZvaWQgc2V0T3V0cHV0Q2FudmFzKEhUTUxD
YW52YXNFbGVtZW50KiBjYW52YXMpIHsgbV9vdXRwdXRDYW52YXMgPSBtYWtlV2Vha1B0cihjYW52
YXMpOyB9CisKKyAgICBib29sIGNvbXBvc2l0aW9uRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2NvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0aW9uRGlzYWJsZWQo
Ym9vbCBjb21wb3NpdGlvbkRpc2FibGVkKSB7IG1fY29tcG9zaXRpb25EaXNhYmxlZCA9IGNvbXBv
c2l0aW9uRGlzYWJsZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJYUlJlbmRlclN0
YXRlKE9wdGlvbmFsPGRvdWJsZT4gZmllbGRPZlZpZXcpOwpAQCAtNjksNiArNzMsNyBAQCBwcml2
YXRlOgogICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3OyAv
LyBpbiByYWRpYW5zCiAgICAgUmVmUHRyPFdlYlhSV2ViR0xMYXllcj4gbV9iYXNlTGF5ZXI7CiAg
ICAgV2Vha1B0cjxIVE1MQ2FudmFzRWxlbWVudD4gbV9vdXRwdXRDYW52YXM7CisgICAgYm9vbCBt
X2NvbXBvc2l0aW9uRGlzYWJsZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmlu
ZGV4IGQ4ZTJmODExYzI0NWIwY2ViMGFjZWZlYTNkZmVkYTU0ZTUyOGIwMDUuLjZiNGZmNGRjMTkw
ODU0NTAxZmJmZGEwZjlhYjFhZjJkNzRmY2VmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTU1LDExICs1NSwxNiBAQCBXZWJYUlNlc3Np
b246OldlYlhSU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lzdGVtJiBzeXN0ZW0s
IFhSU2Vzc2lvbk1vZAogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2RldmljZShtYWtlV2Vh
a1B0cihkZXZpY2UpKQogICAgICwgbV9hY3RpdmVSZW5kZXJTdGF0ZShXZWJYUlJlbmRlclN0YXRl
OjpjcmVhdGUobW9kZSkpCi0gICAgLCBtX2FuaW1hdGlvblRpbWVyKCp0aGlzLCAmV2ViWFJTZXNz
aW9uOjphbmltYXRpb25UaW1lckZpcmVkKQorICAgICwgbV90aW1lT3JpZ2luKE1vbm90b25pY1Rp
bWU6Om5vdygpKQorICAgICwgbV9hbmltYXRpb25GcmFtZShXZWJYUkZyYW1lOjpjcmVhdGUodGhp
cykpCiB7CiAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhtb2Rl
KTsKICAgICBtX2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQobWFrZVdlYWtQ
dHIoKnRoaXMpKTsKIAorICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI3JlZi1mb3ItZG9tLXhycmVmZXJlbmNlc3BhY2V0eXBlLXZpZXdlciVFMiU5MSVBMgorICAg
IC8vIEV2ZXJ5IHNlc3Npb24gTVVTVCBzdXBwb3J0IHZpZXdlciBYUlJlZmVyZW5jZVNwYWNlcy4K
KyAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VU
eXBlOjpWaWV3ZXIpOworCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKQEAgLTIwMCw2MSAr
MjA1LDM0IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0UmVmZXJlbmNlU3BhY2UoWFJSZWZl
cmVuY2VTcGFjZVR5cGUgdHlwZSwgUmVxdWVzdFJlZmVyCiAgICAgfQogICAgIC8vIDEuIExldCBw
cm9taXNlIGJlIGEgbmV3IFByb21pc2UuCiAgICAgLy8gMi4gUnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHMgaW4gcGFyYWxsZWw6Ci0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhb
dGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHR5cGVdIChhdXRvJiBjb250ZXh0KSBt
dXRhYmxlIHsKLSAgICAgICAgLy8gIDIuMS4gQ3JlYXRlIGEgcmVmZXJlbmNlIHNwYWNlLCByZWZl
cmVuY2VTcGFjZSwgd2l0aCB0aGUgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZS4KLSAgICAgICAg
Ly8gIDIuMi4gSWYgcmVmZXJlbmNlU3BhY2UgaXMgbnVsbCwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IE5vdFN1cHBvcnRlZEVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgdHlwZV0oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIC8vIDIuMS4gSWYgdGhl
IHJlc3VsdCBvZiBydW5uaW5nIHJlZmVyZW5jZSBzcGFjZSBpcyBzdXBwb3J0ZWQgZm9yIHR5cGUg
YW5kIHNlc3Npb24gaXMgZmFsc2UsIHF1ZXVlIGEgdGFzayB0byByZWplY3QgcHJvbWlzZQorICAg
ICAgICAvLyB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgICAgICBpZiAoIXJlZmVyZW5jZVNwYWNlSXNTdXBwb3J0ZWQodHlwZSkpIHsKLSAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOworICAg
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpX
ZWJYUiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOwor
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAg
ICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNjcmVhdGUtYS1yZWZl
cmVuY2Utc3BhY2UKLSAgICAgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IHJlZmVyZW5j
ZVNwYWNlOwotICAgICAgICBpZiAodHlwZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRl
ZEZsb29yKQotICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZTo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgbWFrZVJlZigqdGhp
cyksIHR5cGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdl
YlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIG1h
a2VSZWYoKnRoaXMpLCB0eXBlKTsKLQotICAgICAgICAvLyAgMi4zLiBSZXNvbHZlIHByb21pc2Ug
d2l0aCByZWZlcmVuY2VTcGFjZS4KLSAgICAgICAgLy8gMy4gUmV0dXJuIHByb21pc2UuCi0gICAg
ICAgIHByb21pc2UucmVzb2x2ZShyZWZlcmVuY2VTcGFjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgLy8gMi4yLiBTZXQgdXAgYW55IHBsYXRmb3JtIHJlc291cmNlcyByZXF1aXJlZCB0byB0
cmFjayByZWZlcmVuY2Ugc3BhY2VzIG9mIHR5cGUgdHlwZS4KKyAgICAgICAgbV9kZXZpY2UtPmlu
aXRpYWxpemVSZWZlcmVuY2VTcGFjZSh0eXBlKTsKKworICAgICAgICAvLyAyLjMuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIHR5cGUsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwcm90ZWN0ZWREb2N1bWVudCA9IG1ha2VSZWYoZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIC8vIDIuNC4g
Q3JlYXRlIGEgcmVmZXJlbmNlIHNwYWNlLCByZWZlcmVuY2VTcGFjZSwgd2l0aCB0eXBlIGFuZCBz
ZXNzaW9uLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93
ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCisgICAgICAgICAgICBSZWZQdHI8V2ViWFJS
ZWZlcmVuY2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBY
UlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQorICAgICAgICAgICAgICAgIHJlZmVy
ZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShwcm90ZWN0ZWRE
b2N1bWVudCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKHBy
b3RlY3RlZERvY3VtZW50LCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7CisKKyAgICAgICAgICAgIC8v
IDIuNS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVmZXJlbmNlU3BhY2UuCisgICAgICAgICAgICBw
cm9taXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
IH0pOwogICAgIH0pOwogfQogCi12b2lkIFdlYlhSU2Vzc2lvbjo6YW5pbWF0aW9uVGltZXJGaXJl
ZCgpCi17Ci0gICAgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKLQotICAgIGlmIChtX2NhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIFRPRE86IHJldHJpZXZlIGZyYW1lIGZyb20gcGxhdGZvcm0uCi0gICAgYXV0
byBmcmFtZSA9IFdlYlhSRnJhbWU6OmNyZWF0ZSgqdGhpcyk7Ci0KLSAgICBtX3J1bm5pbmdDYWxs
YmFja3Muc3dhcChtX2NhbGxiYWNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fcnVu
bmluZ0NhbGxiYWNrcykgewotICAgICAgICBpZiAoY2FsbGJhY2stPmlzQ2FuY2VsbGVkKCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fbGFz
dEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRz
KCksIGZyYW1lLmdldCgpKTsKLSAgICB9Ci0KLSAgICBtX3J1bm5pbmdDYWxsYmFja3MuY2xlYXIo
KTsKLX0KLQotdm9pZCBXZWJYUlNlc3Npb246OnNjaGVkdWxlQW5pbWF0aW9uKCkKLXsKLSAgICBp
ZiAobV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAobV9lbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVE9ETzogdXNlIGRldmljZSdz
IHJlZnJlc2ggcmF0ZS4gTGV0J3Mgc3RhcnQgd2l0aCA2MGZwcy4KLSAgICBTZWNvbmRzIGFuaW1h
dGlvbkludGVydmFsID0gMTVfbXM7Ci0gICAgU2Vjb25kcyBzY2hlZHVsZURlbGF5ID0gc3RkOjpt
YXgoYW5pbWF0aW9uSW50ZXJ2YWwgLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RBbmlt
YXRpb25GcmFtZVRpbWVzdGFtcCksIDBfcyk7Ci0gICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9u
ZVNob3Qoc2NoZWR1bGVEZWxheSk7Ci19Ci0KIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRo
dWIuaW8vd2VieHIvI2RvbS14cnNlc3Npb24tcmVxdWVzdGFuaW1hdGlvbmZyYW1lCiB1bnNpZ25l
ZCBXZWJYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25GcmFtZShSZWY8WFJGcmFtZVJlcXVlc3RD
YWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKQEAgLTI2Nyw3ICsyNDUsOCBAQCB1bnNpZ25lZCBXZWJY
UlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25GcmFtZShSZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFj
az4mJiBjYWxsYgogICAgIGNhbGxiYWNrLT5zZXRDYWxsYmFja0lkKG5ld0lkKTsKICAgICBtX2Nh
bGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgc2NoZWR1bGVBbmltYXRp
b24oKTsKKyAgICBpZiAobV9jYWxsYmFja3Muc2l6ZSgpID09IDEgJiYgIW1fYW5pbWF0aW9uRnJh
bWUtPmlzQWN0aXZlKCkpCisgICAgICAgIHJlcXVlc3RGcmFtZSgpOwogCiAgICAgLy8gNC4gUmV0
dXJuIHNlc3Npb24ncyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2sgaWRlbnRpZmllcidzIGN1cnJl
bnQgdmFsdWUuCiAgICAgcmV0dXJuIG5ld0lkOwpAQCAtNDIwLDYgKzM5OSwxMzMgQEAgdm9pZCBX
ZWJYUlNlc3Npb246OnNlc3Npb25EaWRFbmQoKQogICAgIHNodXRkb3duKEluaXRpYXRlZEJ5U3lz
dGVtOjpZZXMpOwogfQogCit2b2lkIFdlYlhSU2Vzc2lvbjo6YXBwbHlQZW5kaW5nUmVuZGVyU3Rh
dGUoKQoreworICAgIC8vIGh0dHBzOiAvL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNh
cHBseS10aGUtcGVuZGluZy1yZW5kZXItc3RhdGUKKyAgICAvLyAxLiBMZXQgYWN0aXZlU3RhdGUg
YmUgc2Vzc2lvbuKAmXMgYWN0aXZlIHJlbmRlciBzdGF0ZS4KKyAgICAvLyAyLiBMZXQgbmV3U3Rh
dGUgYmUgc2Vzc2lvbuKAmXMgcGVuZGluZyByZW5kZXIgc3RhdGUuCisgICAgLy8gMy4gU2V0IHNl
c3Npb27igJlzIHBlbmRpbmcgcmVuZGVyIHN0YXRlIHRvIG51bGwuCisgICAgYXV0byBuZXdTdGF0
ZSA9IG1fcGVuZGluZ1JlbmRlclN0YXRlOworICAgIEFTU0VSVChuZXdTdGF0ZSk7CisKKyAgICAv
LyA0LiBMZXQgb2xkQmFzZUxheWVyIGJlIGFjdGl2ZVN0YXRl4oCZcyBiYXNlTGF5ZXIuCisgICAg
Ly8gNS4gTGV0IG9sZExheWVycyBiZSBhY3RpdmVTdGF0ZeKAmXMgbGF5ZXJzLgorICAgIC8vIEZJ
WE1FOiB0aG9zZSBhcmUgb25seSBuZWVkZWQgZm9yIHN0ZXAgNi4yLgorCisgICAgLy8gNi4xIFNl
dCBhY3RpdmVTdGF0ZSB0byBuZXdTdGF0ZS4KKyAgICBtX2FjdGl2ZVJlbmRlclN0YXRlID0gbmV3
U3RhdGU7CisKKyAgICAvLyA2LjIgSWYgb2xkQmFzZUxheWVyIGlzIG5vdCBlcXVhbCB0byBhY3Rp
dmVTdGF0ZeKAmXMgYmFzZUxheWVyLCBvbGRMYXllcnMgaXMgbm90IGVxdWFsIHRvIGFjdGl2ZVN0
YXRl4oCZcyBsYXllcnMsIG9yIHRoZSBkaW1lbnNpb25zIG9mIGFueSBvZiB0aGUgbGF5ZXJzIGhh
dmUgY2hhbmdlZCwgdXBkYXRlIHRoZSB2aWV3cG9ydHMgZm9yIHNlc3Npb24uCisgICAgLy8gRklY
TUU6IGltcGxlbWVudCB0aGlzLgorCisgICAgLy8gNi4zIElmIGFjdGl2ZVN0YXRl4oCZcyBpbmxp
bmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IGlzIGxlc3MgdGhhbiBzZXNzaW9u4oCZcyBtaW5pbXVtIGlu
bGluZSBmaWVsZCBvZiB2aWV3IHNldCBhY3RpdmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVs
ZE9mVmlldyB0byBzZXNzaW9u4oCZcyBtaW5pbXVtIGlubGluZSBmaWVsZCBvZiB2aWV3LgorICAg
IGlmIChtX2FjdGl2ZVJlbmRlclN0YXRlLT5pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkgPCBt
X21pbmltdW1JbmxpbmVGT1YpCisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldElubGlu
ZVZlcnRpY2FsRmllbGRPZlZpZXcobV9taW5pbXVtSW5saW5lRk9WKTsKKworICAgIC8vIDYuNCBJ
ZiBhY3RpdmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVsZE9mVmlldyBpcyBncmVhdGVyIHRo
YW4gc2Vzc2lvbuKAmXMgbWF4aW11bSBpbmxpbmUgZmllbGQgb2YgdmlldyBzZXQgYWN0aXZlU3Rh
dGXigJlzIGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgdG8gc2Vzc2lvbuKAmXMgbWF4aW11bSBp
bmxpbmUgZmllbGQgb2Ygdmlldy4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+aW5saW5l
VmVydGljYWxGaWVsZE9mVmlldygpID4gbV9tYXhpbXVtSW5saW5lRk9WKQorICAgICAgICBtX2Fj
dGl2ZVJlbmRlclN0YXRlLT5zZXRJbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KG1fbWF4aW11bUlu
bGluZUZPVik7CisKKyAgICAvLyA2LjUgSWYgYWN0aXZlU3RhdGXigJlzIGRlcHRoTmVhciBpcyBs
ZXNzIHRoYW4gc2Vzc2lvbuKAmXMgbWluaW11bSBuZWFyIGNsaXAgcGxhbmUgc2V0IGFjdGl2ZVN0
YXRl4oCZcyBkZXB0aE5lYXIgdG8gc2Vzc2lvbuKAmXMgbWluaW11bSBuZWFyIGNsaXAgcGxhbmUu
CisgICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmRlcHRoTmVhcigpIDwgbV9taW5pbXVtTmVh
ckNsaXBQbGFuZSkKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0RGVwdGhOZWFyKG1f
bWluaW11bU5lYXJDbGlwUGxhbmUpOworCisgICAgLy8gNi42IElmIGFjdGl2ZVN0YXRl4oCZcyBk
ZXB0aEZhciBpcyBncmVhdGVyIHRoYW4gc2Vzc2lvbuKAmXMgbWF4aW11bSBmYXIgY2xpcCBwbGFu
ZSBzZXQgYWN0aXZlU3RhdGXigJlzIGRlcHRoRmFyIHRvIHNlc3Npb27igJlzIG1heGltdW0gZmFy
IGNsaXAgcGxhbmUuCisgICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmRlcHRoRmFyKCkgPiBt
X21heGltdW1GYXJDbGlwUGxhbmUpCisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldERl
cHRoRmFyKG1fbWF4aW11bUZhckNsaXBQbGFuZSk7CisKKyAgICAvLyA2LjcgTGV0IGJhc2VMYXll
ciBiZSBhY3RpdmVTdGF0ZeKAmXMgYmFzZUxheWVyLgorICAgIGF1dG8gYmFzZUxheWVyID0gbV9h
Y3RpdmVSZW5kZXJTdGF0ZS0+YmFzZUxheWVyKCk7CisKKyAgICAvLyA2LjggU2V0IGFjdGl2ZVN0
YXRl4oCZcyBjb21wb3NpdGlvbiBkaXNhYmxlZCBhbmQgb3V0cHV0IGNhbnZhcyBhcyBmb2xsb3dz
OgorICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldENvbXBvc2l0aW9uRGlzYWJsZWQodHJ1ZSk7
CisgICAgaWYgKG1fbW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbmxpbmUgJiYgaXM8V2ViWFJXZWJH
TExheWVyPihiYXNlTGF5ZXIpICYmIGJhc2VMYXllci0+Y29tcG9zaXRpb25EaXNhYmxlZCgpKSB7
CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldENvbXBvc2l0aW9uRGlzYWJsZWQodHJ1
ZSk7CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldE91dHB1dENhbnZhcyhiYXNlTGF5
ZXItPmNhbnZhcygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRl
LT5zZXRDb21wb3NpdGlvbkRpc2FibGVkKGZhbHNlKTsKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJT
dGF0ZS0+c2V0T3V0cHV0Q2FudmFzKG51bGxwdHIpOworICAgIH0KK30KKworLy8gaHR0cHM6Ly9p
bW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jc2hvdWxkLWJlLXJlbmRlcmVkCitib29sIFdl
YlhSU2Vzc2lvbjo6ZnJhbWVTaG91bGRCZVJlbmRlcmVkKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
YWN0aXZlUmVuZGVyU3RhdGUtPmJhc2VMYXllcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKG1fbW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbmxpbmUgJiYgIW1fYWN0aXZlUmVuZGVy
U3RhdGUtPm91dHB1dENhbnZhcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0RnJhbWUoKQoreworICAgIG1f
ZGV2aWNlLT5yZXF1ZXN0RnJhbWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhKQorICAgIHsKKyAgICAg
ICAgb25GcmFtZShmcmFtZURhdGEpOworICAgIH0pOworfQorCit2b2lkIFdlYlhSU2Vzc2lvbjo6
b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGEpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChtX2VuZGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBz
LgorICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2Vi
WFIsIFt0aGlzLCBmcmFtZURhdGFdKCkgeworICAgICAgICAvLyAgMS5MZXQgbm93IGJlIHRoZSBj
dXJyZW50IGhpZ2ggcmVzb2x1dGlvbiB0aW1lLgorICAgICAgICBET01IaWdoUmVzVGltZVN0YW1w
IG5vdyA9IChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9yaWdpbikubWlsbGlzZWNvbmRz
KCk7CisKKyAgICAgICAgLy8gIDIuTGV0IGZyYW1lIGJlIHNlc3Npb27igJlzIGFuaW1hdGlvbiBm
cmFtZS4KKyAgICAgICAgLy8gIDMuU2V0IGZyYW1l4oCZcyB0aW1lIHRvIGZyYW1lVGltZS4KKyAg
ICAgICAgbV9hbmltYXRpb25GcmFtZS0+c2V0VGltZShzdGF0aWNfY2FzdDxET01IaWdoUmVzVGlt
ZVN0YW1wPihmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUpKTsKKworICAgICAgICAvLyA0
LiBGb3IgZWFjaCB2aWV3IGluIGxpc3Qgb2Ygdmlld3MsIHNldCB2aWV34oCZcyB2aWV3cG9ydCBt
b2RpZmlhYmxlIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgLy8gNS4gSWYgdGhlIGFjdGl2ZSBmbGFn
IG9mIGFueSB2aWV3IGluIHRoZSBsaXN0IG9mIHZpZXdzIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBs
YXN0IFhSIGFuaW1hdGlvbiBmcmFtZSwgdXBkYXRlIHRoZSB2aWV3cG9ydHMuCisgICAgICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuCisKKyAgICAgICAgLy8gRklYTUU6IEkgbW92ZWQgc3RlcCA3IGJl
Zm9yZSA2IGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2ltbWVyc2l2ZS13ZWIvd2VieHIv
aXNzdWVzLzExNjQKKyAgICAgICAgLy8gNy5JZiBzZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRlciBz
dGF0ZSBpcyBub3QgbnVsbCwgYXBwbHkgdGhlIHBlbmRpbmcgcmVuZGVyIHN0YXRlLgorICAgICAg
ICBpZiAobV9wZW5kaW5nUmVuZGVyU3RhdGUpCisgICAgICAgICAgICBhcHBseVBlbmRpbmdSZW5k
ZXJTdGF0ZSgpOworCisgICAgICAgIC8vIDYuIElmIHRoZSBmcmFtZSBzaG91bGQgYmUgcmVuZGVy
ZWQgZm9yIHNlc3Npb246CisgICAgICAgIGlmIChmcmFtZVNob3VsZEJlUmVuZGVyZWQoKSkgewor
ICAgICAgICAgICAgLy8gNi4xLlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5u
aW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MgdG8gYmUgc2Vzc2lvbuKAmXMgbGlzdCBvZiBh
bmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLgorICAgICAgICAgICAgLy8gNi4yLlNldCBzZXNzaW9u
4oCZcyBsaXN0IG9mIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MgdG8gdGhlIGVtcHR5IGxpc3Qu
CisgICAgICAgICAgICBtX3J1bm5pbmdDYWxsYmFja3Muc3dhcChtX2NhbGxiYWNrcyk7CisKKyAg
ICAgICAgICAgIC8vIDYuMy5TZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRvIHRydWUuCisg
ICAgICAgICAgICBtX2FuaW1hdGlvbkZyYW1lLT5zZXRBY3RpdmUodHJ1ZSk7CisKKyAgICAgICAg
ICAgIC8vIDYuNC5BcHBseSBmcmFtZSB1cGRhdGVzIGZvciBmcmFtZS4KKyAgICAgICAgICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuCisKKyAgICAgICAgICAgIC8vIDYuNS5Gb3IgZWFjaCBlbnRyeSBp
biBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBj
YWxsYmFja3MsIGluIG9yZGVyOgorICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1f
cnVubmluZ0NhbGxiYWNrcykgeworICAgICAgICAgICAgICAgIC8vICA2LjYuSWYgdGhlIGVudHJ5
4oCZcyBjYW5jZWxsZWQgYm9vbGVhbiBpcyB0cnVlLCBjb250aW51ZSB0byB0aGUgbmV4dCBlbnRy
eS4KKyAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2stPmlzQ2FuY2VsbGVkKCkpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIC8vICA2LjcuSW52b2tlIHRo
ZSBXZWIgSURMIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBlbnRyeSwgcGFzc2luZyBub3cgYW5kIGZy
YW1lIGFzIHRoZSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBjYWxsYmFjay0+aGFuZGxlRXZl
bnQobm93LCBtX2FuaW1hdGlvbkZyYW1lLmdldCgpKTsKKworICAgICAgICAgICAgICAgIC8vICA2
LjguSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biwgcmVwb3J0IHRoZSBleGNlcHRpb24uCisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAvLyA2LjkuU2V0IHNlc3Npb27igJlzIGxpc3Qgb2YgY3Vy
cmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcyB0byB0aGUgZW1wdHkgbGlz
dC4KKyAgICAgICAgICAgIG1fcnVubmluZ0NhbGxiYWNrcy5jbGVhcigpOworCisgICAgICAgICAg
ICAvLyA2LjEwLlNldCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gdG8gZmFsc2UuCisgICAgICAg
ICAgICBtX2FuaW1hdGlvbkZyYW1lLT5zZXRBY3RpdmUoZmFsc2UpOworCisgICAgICAgICAgICBp
ZiAoIW1fY2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0RnJhbWUo
KTsKKyAgICAgICAgfQorCisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU2Vzc2lvbi5oCmluZGV4IDU1NTQzMGM4YzNmNzMxMjMxYWFmNGYwYzNmZmI1ODI5ZDY5Mjli
MzYuLjg2YzUyZjY3NTM0ZWM5MTM4NTg1YzgxZTY4M2RhOWIzNDE0MDdmMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAtMzAsNyArMzAsNyBAQAog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgorI2lu
Y2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUklucHV0U291cmNlQXJyYXkuaCIK
ICNpbmNsdWRlICJXZWJYUlJlbmRlclN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViWFJTcGFjZS5oIgpA
QCAtMTA5LDExICsxMDksMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNodXRkb3duKEluaXRpYXRl
ZEJ5U3lzdGVtKTsKICAgICB2b2lkIGRpZENvbXBsZXRlU2h1dGRvd24oKTsKIAotICAgIHZvaWQg
YW5pbWF0aW9uVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKLQog
ICAgIGJvb2wgcmVmZXJlbmNlU3BhY2VJc1N1cHBvcnRlZChYUlJlZmVyZW5jZVNwYWNlVHlwZSkg
Y29uc3Q7CiAKKyAgICBib29sIGZyYW1lU2hvdWxkQmVSZW5kZXJlZCgpIGNvbnN0OworICAgIHZv
aWQgcmVxdWVzdEZyYW1lKCk7CisgICAgdm9pZCBvbkZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhKTsKKyAgICB2b2lkIGFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKCk7CisKICAgICBY
UkVudmlyb25tZW50QmxlbmRNb2RlIG1fZW52aXJvbm1lbnRCbGVuZE1vZGU7CiAgICAgWFJJbnRl
cmFjdGlvbk1vZGUgbV9pbnRlcmFjdGlvbk1vZGU7CiAgICAgWFJWaXNpYmlsaXR5U3RhdGUgbV92
aXNpYmlsaXR5U3RhdGU7CkBAIC0xMjYsMTMgKzEyOCwyMCBAQCBwcml2YXRlOgogICAgIFdlYWtQ
dHI8UGxhdGZvcm1YUjo6RGV2aWNlPiBtX2RldmljZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJT
dGF0ZT4gbV9hY3RpdmVSZW5kZXJTdGF0ZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4g
bV9wZW5kaW5nUmVuZGVyU3RhdGU7CisgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPcmlnaW47CiAK
ICAgICB1bnNpZ25lZCBtX25leHRDYWxsYmFja0lkIHsgMSB9OwogICAgIFZlY3RvcjxSZWY8WFJG
cmFtZVJlcXVlc3RDYWxsYmFjaz4+IG1fY2FsbGJhY2tzOwogICAgIFZlY3RvcjxSZWY8WFJGcmFt
ZVJlcXVlc3RDYWxsYmFjaz4+IG1fcnVubmluZ0NhbGxiYWNrczsKIAotICAgIFRpbWVyIG1fYW5p
bWF0aW9uVGltZXI7Ci0gICAgTW9ub3RvbmljVGltZSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVz
dGFtcDsKKyAgICBSZWY8V2ViWFJGcmFtZT4gbV9hbmltYXRpb25GcmFtZTsKKworICAgIGRvdWJs
ZSBtX21pbmltdW1JbmxpbmVGT1YgeyAwLjAgfTsKKyAgICBkb3VibGUgbV9tYXhpbXVtSW5saW5l
Rk9WIHsgcGlGbG9hdCB9OworCisgICAgLy8gSW4gbWV0ZXJzLgorICAgIGRvdWJsZSBtX21pbmlt
dW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CisgICAgZG91YmxlIG1fbWF4aW11bUZhckNsaXBQbGFu
ZSB7IDEwMDAuMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAppbmRleCAxMmE5ZjIxZTcyNGExMmRk
YzE1ZGE5YTg0YzFiODJlYjRkMTdkNGQ4Li40NjM0NzBhY2QzYWQ0YTQ1NDQ5YTA4YjE4ODc0ZDNj
MDBjODdjZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVt
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTV2ViWFJTZXNzaW9uLmgiCiAjaW5j
bHVkZSAiSlNYUlJlZmVyZW5jZVNwYWNlVHlwZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIK
KyNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC00OSwxMSArNTAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlN5c3RlbSk7
CiAKLVdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZpY2UoKQot
ewotICAgIHNldEVuYWJsZWRGZWF0dXJlcyhYUlNlc3Npb25Nb2RlOjpJbmxpbmUsIHsgWFJSZWZl
cmVuY2VTcGFjZVR5cGU6OlZpZXdlciB9KTsKLX0KLQogUmVmPFdlYlhSU3lzdGVtPiBXZWJYUlN5
c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJTeXN0ZW0oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpOwpAQCAtNjEsNiArNTcsNyBAQCBSZWY8V2ViWFJTeXN0ZW0+IFdlYlhSU3lz
dGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udAog
CiBXZWJYUlN5c3RlbTo6V2ViWFJTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKKyAgICAsIG1fZGVmYXVsdElubGluZURldmljZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQogewogICAgIG1faW5saW5lWFJEZXZpY2UgPSBtYWtlV2Vha1B0cihtX2RlZmF1bHRJbmxp
bmVEZXZpY2UpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtNDc1LDYgKzQ3Miw0NyBAQCB2
b2lkIFdlYlhSU3lzdGVtOjpzZXNzaW9uRW5kZWQoV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQogICAg
IG1faW5saW5lU2Vzc2lvbnMucmVtb3ZlKHNlc3Npb24pOwogfQogCitjbGFzcyBJbmxpbmVSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazogcHVibGljIFJlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPElubGluZVJlcXVlc3RBbmltYXRpb25G
cmFtZUNhbGxiYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2so
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShjYWxsYmFjaykpKTsKKyAgICB9CisKKyAg
ICBJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2sp
CisgICAgICAgIDogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soJnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSAKKyAgICB7CisgICAgfQor
CisgICAgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZlbnQoZG91YmxlIGhpZ2hSZXNUaW1l
TXMpIG92ZXJyaWRlCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0oaGlnaFJlc1RpbWVNcyk7
CisgICAgICAgIG1fY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Citwcml2
YXRlOgorICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jYWxsYmFjazsKK307CisKKworV2ViWFJTeXN0
ZW06OkR1bW15SW5saW5lRGV2aWNlOjpEdW1teUlubGluZURldmljZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIHNldEVuYWJsZWRGZWF0dXJl
cyhYUlNlc3Npb25Nb2RlOjpJbmxpbmUsIHsgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlciB9
KTsKK30KKwordm9pZCBXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OnJlcXVlc3RGcmFt
ZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgLy8gSW5saW5lIFhSIHNlc3Npb25zIHJlbHkgb24gZG9jdW1lbnQucmVxdWVzdEFuaW1h
dGlvbkZyYW1lIHRvIHBlcmZvcm0gdGhlIHJlbmRlciBsb29wLgorICAgIGF1dG8gZG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRv
IHJhZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOjpjcmVhdGUoKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgfSk7CisKKyAgICBkb2N1bWVudC0+
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJhZik7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlN5c3RlbS5oCmluZGV4IGM3NjJkNDZhYzBlOTA0YTM5ODNkMzk3ZjY4NjU2MWQ0YzE2
NWIzNTUuLmMzM2NmNzNiODEyNGU2NTAzODIxNTA5YTM4MjA5NGI5MzBlZmI1NjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTEwNiwxMSArMTA2LDE2
IEBAIHByaXZhdGU6CiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci8jZGVmYXVsdC1pbmxpbmUteHItZGV2aWNlCiAgICAgY2xhc3MgRHVtbXlJbmxpbmVEZXZpY2Ug
ZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IER1bW15SW5saW5lRGV2aWNlKCk7CisgICAgICAgIER1bW15SW5saW5lRGV2aWNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0K
ICAgICAgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWwgeyB9Cisg
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5j
ZVNwYWNlVHlwZSkgZmluYWwgeyB9OworCisgICAgICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRm
b3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisKKyAgICAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIH07
CiAgICAgRHVtbXlJbmxpbmVEZXZpY2UgbV9kZWZhdWx0SW5saW5lRGV2aWNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKaW5kZXggODZk
ZDExYjAwMTQzYmY4MGVhODFhZTJhZGQ4ZGU4NGRjMDJkMDMzZi4uMTRjYzc0YjhlOTUxYTJlZTEx
NDdkZjU3ODAwNWQ2YjhkZTQ3YzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJXZWJHTExheWVyLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxF
KFdFQlhSKQogCisjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCisjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiV2ViR0xGcmFt
ZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2lmIEVOQUJM
RShXRUJHTDIpCkBAIC0xOTgsNiArMjAwLDIzIEBAIGRvdWJsZSBXZWJYUldlYkdMTGF5ZXI6Omdl
dE5hdGl2ZUZyYW1lYnVmZmVyU2NhbGVGYWN0b3IoY29uc3QgV2ViWFJTZXNzaW9uJiBzZXNzCiAg
ICAgcmV0dXJuIChuYXRpdmVTaXplIC8gcmVjb21tZW5kZWRTaXplKS53aWR0aCgpOwogfQogCitI
VE1MQ2FudmFzRWxlbWVudCogV2ViWFJXZWJHTExheWVyOjpjYW52YXMoKSBjb25zdAoreworICAg
IEhUTUxDYW52YXNFbGVtZW50KiBjID0gV1RGOjpzd2l0Y2hPbihtX2NvbnRleHQsIFtdKGNvbnN0
IFJlZlB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiYgYmFzZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBjYW52YXMgPSBiYXNlQ29udGV4dC0+Y2FudmFzKCk7CisgICAgICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKAorICAgICAgICAgICAgY2FudmFzLAorICAgICAgICAgICAgW10oY29uc3Qg
UmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYgY2FudmFzKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbnZhcy5nZXQoKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBbXShSZWZQdHI8
T2Zmc2NyZWVuQ2FudmFzPikgeworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgi
YmFzZUxheWVyIG9mIGEgV2ViWFJXZWJHTExheWVyIG11c3QgYmUgYW4gSFRNTENhbnZhc0VsZW1l
bnQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0pOwor
ICAgIH0pOworICAgIHJldHVybiBjOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUldlYkdMTGF5ZXIuaAppbmRleCAzMTc1NWQ4NDk2YTZhNzAyZTIzMzI5Y2ZiZjMyOWI5Y2M0
YjhhOWRmLi4zZjc1ODdkZTg5ZGE2ZTIzMWM5NDNjNGY5MDVmYzFjZjE4MDU5Mjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmgKQEAgLTM2LDYg
KzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MQ2FudmFzRWxlbWVu
dDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OwpAQCAtNzQsNiArNzUsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
V2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgeyByZXR1cm4gbV9zZXNzaW9uOyB9CiAKKyAgICBib29s
IGNvbXBvc2l0aW9uRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29tcG9zaXRpb25EaXNh
YmxlZDsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRpb25EaXNhYmxlZChib29sIGNvbXBvc2l0aW9u
RGlzYWJsZWQpIHsgbV9pc0NvbXBvc2l0aW9uRGlzYWJsZWQgPSBjb21wb3NpdGlvbkRpc2FibGVk
OyB9CisKKyAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKCkgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgV2ViWFJXZWJHTExheWVyKFJlZjxXZWJYUlNlc3Npb24+JiYsIFdlYlhSUmVuZGVyaW5n
Q29udGV4dCYmLCBjb25zdCBYUldlYkdMTGF5ZXJJbml0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCBiOWVmNDVjMGM2OTcxNGFlODNjNzA0NDU0ZDk1NGJk
NTFlYTQ3NjZiLi41YzY3ZWJmMWMxMmUyM2ZmOGRkMzNlMjg4NTg1Y2EyMjA0NWZlMGUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0xOCw2ICsxOCw3IEBACiAg
Ki8KICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KQEAgLTc1LDYgKzc2LDI1IEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGlzIG1ldGhv
ZCByZXR1cm5zIHRydWUsIHRoYXQgbWVhbnMgdGhlIGRldmljZSB3aWxsIG5vdGlmeSBUcmFja2lu
Z0FuZFJlbmRlcmluZ0NsaWVudAogICAgIC8vIHdoZW4gdGhlIHBsYXRmb3JtIGhhcyBjb21wbGV0
ZWQgYWxsIHN0ZXBzIHRvIHNodXQgZG93biB0aGUgWFIgc2Vzc2lvbi4KICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUmVmZXJl
bmNlU3BhY2VUeXBlKSA9IDA7CisKKyAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKKyAgICAgICAgbG9u
ZyBwcmVkaWN0ZWREaXNwbGF5VGltZTsKKyAgICAgICAgc3RydWN0IFZpZXdEYXRhIHsKKyAgICAg
ICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludDNEIHBv
c2l0aW9uOworICAgICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHgsIHksIHosIHc7CisgICAgICAgICAgICAgICAgfSBvcmllbnRhdGlvbjsKKyAgICAgICAg
ICAgIH0gcG9zZTsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgZmxvYXQg
clVwLCByRG93biwgckxlZnQsIHJSaWdodDsKKyAgICAgICAgICAgIH0gZm92OworICAgICAgICB9
OworICAgICAgICBWZWN0b3I8Vmlld0RhdGE+IHZpZXdQb3NlczsKKyAgICB9OworICAgIHVzaW5n
IFJlcXVlc3RGcmFtZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEZyYW1lRGF0YSk+Owor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAw
OwogCiBwcm90ZWN0ZWQ6CiAgICAgRGV2aWNlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4
IGZlODY1ZTY3MWQ3MDY4NmRlNzkxZjE0MDBlNmNmM2UyYzg2OWVjMjIuLjk2ODhlYTUyMjIxMTdm
OThhNGNiZWI4OGJmMmQ0NzcyMjNkMjJhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTQxNCwxNyArNDE0
LDE2MCBAQCB2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5n
KFNlc3Npb25Nb2RlIG1vZGUpCiAKIHZvaWQgT3BlblhSRGV2aWNlOjpyZXNldFNlc3Npb24oKQog
ewotICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXNdKCkgewotICAgICAgICBpZiAobV9zZXNzaW9u
ID09IFhSX05VTExfSEFORExFKQotICAgICAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCgmUnVu
TG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgaWYgKG1fc2Vzc2lv
biAhPSBYUl9OVUxMX0hBTkRMRSkgewogICAgICAgICB4ckRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lv
bik7CiAgICAgICAgIG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExFOwotICAgIH0pOworICAgIH0K
KyAgICBtX3Nlc3Npb25TdGF0ZSA9IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTjsKIH0KIAogdm9p
ZCBPcGVuWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQogewotICAgIHJl
c2V0U2Vzc2lvbigpOworICAgIC8vIHhyUmVxdWVzdEV4aXRTZXNzaW9uKCkgd2lsbCB0cmFuc2l0
aW9uIHRoZSBzZXNzaW9uIHRvIFNUT1BQRUQgc3RhdGUgYW5kIHRoZW4gdGhlIHJlcXVlc3RGcmFt
ZSgpIG1ldGhvZCB3aWxsIGNhbGwgcmVzZXQuCisgICAgLy8gSWYgdGhlIHNlc3Npb24gd2FzIG5v
dCBydW5uaW5nIHdlIGhhdmUgdG8gcmVzZXQgdGhlIHNlc3Npb24gb3Vyc2VsdmVzLgorICAgIGlm
IChYUl9GQUlMRUQoeHJSZXF1ZXN0RXhpdFNlc3Npb24obV9zZXNzaW9uKSkpIHsKKyAgICAgICAg
cmVzZXRTZXNzaW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBFbnN1cmUg
dGhhdCByZXF1ZXN0RnJhbWUoKSBpcyBjYWxsZWQgYXQgbGVhc3Qgb25lIG1vcmUgdGltZSB0byBw
cm9wZXJseSBlbmQgdGhlIHNlc3Npb24uCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHJlcXVlc3RGcmFtZShbXShGcmFtZURhdGEpIHsg
fSk7CisgICAgfSk7Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjpwb2xsRXZlbnRzKCkKK3sKKyAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvIHJ1bnRpbWVFdmVudCA9IGNyZWF0
ZVN0cnVjdHVyZTxYckV2ZW50RGF0YUJ1ZmZlciwgWFJfVFlQRV9FVkVOVF9EQVRBX0JVRkZFUj4o
KTsKKyAgICB3aGlsZSAoeHJQb2xsRXZlbnQobV9pbnN0YW5jZSwgJnJ1bnRpbWVFdmVudCkgPT0g
WFJfU1VDQ0VTUykgeworICAgICAgICBzd2l0Y2ggKHJ1bnRpbWVFdmVudC50eXBlKSB7CisgICAg
ICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1NFU1NJT05fU1RBVEVfQ0hBTkdFRDogeworICAg
ICAgICAgICAgYXV0byogZXZlbnQgPSAoWHJFdmVudERhdGFTZXNzaW9uU3RhdGVDaGFuZ2VkKikm
cnVudGltZUV2ZW50OworICAgICAgICAgICAgbV9zZXNzaW9uU3RhdGUgPSBldmVudC0+c3RhdGU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFhSX1RZUEVfRVZF
TlRfREFUQV9FVkVOVFNfTE9TVDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfSU5T
VEFOQ0VfTE9TU19QRU5ESU5HOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9SRUZF
UkVOQ0VfU1BBQ0VfQ0hBTkdFX1BFTkRJTkc6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9E
QVRBX0lOVEVSQUNUSU9OX1BST0ZJTEVfQ0hBTkdFRDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VW
RU5UX0RBVEFfTUFJTl9TRVNTSU9OX1ZJU0lCSUxJVFlfQ0hBTkdFRF9FWFRYOgorICAgICAgICBj
YXNlIFhSX1RZUEVfRVZFTlRfREFUQV9WSVNJQklMSVRZX01BU0tfQ0hBTkdFRF9LSFI6CisgICAg
ICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1BFUkZfU0VUVElOR1NfRVhUOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoIlVuaGFuZGxlZCBldmVudCB0eXBlICVkXG4iLCBydW50aW1lRXZlbnQudHlwZSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgc2Vzc2lvbklzVmlzaWJsZShYclNlc3Npb25TdGF0ZSBz
dGF0ZSkKK3sKKyAgICByZXR1cm4gc3RhdGUgPD0gWFJfU0VTU0lPTl9TVEFURV9GT0NVU0VEOwor
fQorCitib29sIHNlc3Npb25TaG91bGRTdG9wKFhyU2Vzc2lvblN0YXRlIHN0YXRlKQoreworICAg
IHJldHVybiBzdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HOworfQorCitib29sIHNl
c3Npb25Jc0FjdGl2ZShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gc3RhdGUg
PT0gWFJfU0VTU0lPTl9TVEFURV9WSVNJQkxFIHx8IHN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVf
Rk9DVVNFRDsKK30KKworWHJSZXN1bHQgT3BlblhSRGV2aWNlOjpiZWdpblNlc3Npb24oKQorewor
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3Nlc3Npb25TdGF0ZSA9
PSBYUl9TRVNTSU9OX1NUQVRFX1JFQURZKTsKKworICAgIGF1dG8gc2Vzc2lvbkJlZ2luSW5mbyA9
IGNyZWF0ZVN0cnVjdHVyZTxYclNlc3Npb25CZWdpbkluZm8sIFhSX1RZUEVfU0VTU0lPTl9CRUdJ
Tl9JTkZPPigpOworICAgIHNlc3Npb25CZWdpbkluZm8ucHJpbWFyeVZpZXdDb25maWd1cmF0aW9u
VHlwZSA9IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfU1RFUkVPOworICAgIGF1
dG8gcmVzdWx0ID0geHJCZWdpblNlc3Npb24obV9zZXNzaW9uLCAmc2Vzc2lvbkJlZ2luSW5mbyk7
CisjaWYgIUxPR19ESVNBQkxFRAorICAgIGlmIChYUl9GQUlMRUQocmVzdWx0KSkKKyAgICAgICAg
TE9HKFhSLCAiJXMgJXM6ICVzXG4iLCBfX2Z1bmNfXywgInhyQmVnaW5TZXNzaW9uIiwgcmVzdWx0
VG9TdHJpbmcocmVzdWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0RldmljZTo6RnJhbWVEYXRhOjpWaWV3RGF0YSB4clZpZXdU
b1ZpZXdEYXRhKFhyVmlldyB2aWV3KQoreworICAgIERldmljZTo6RnJhbWVEYXRhOjpWaWV3RGF0
YSBkYXRhOworICAgIGRhdGEuZm92ID0geyB2aWV3LmZvdi5hbmdsZVVwLCB2aWV3LmZvdi5hbmds
ZURvd24sIHZpZXcuZm92LmFuZ2xlTGVmdCwgdmlldy5mb3YuYW5nbGVSaWdodCB9OworICAgIGRh
dGEucG9zZS5vcmllbnRhdGlvbiA9IHsgdmlldy5wb3NlLm9yaWVudGF0aW9uLngsIHZpZXcucG9z
ZS5vcmllbnRhdGlvbi55LCB2aWV3LnBvc2Uub3JpZW50YXRpb24ueiwgdmlldy5wb3NlLm9yaWVu
dGF0aW9uLncgfTsKKyAgICBkYXRhLnBvc2UucG9zaXRpb24gPSB7IHZpZXcucG9zZS5wb3NpdGlv
bi54LCB2aWV3LnBvc2UucG9zaXRpb24ueSwgdmlldy5wb3NlLnBvc2l0aW9uLnogfTsKKyAgICBy
ZXR1cm4gZGF0YTsKK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0
RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIFhyU2Vz
c2lvblN0YXRlIG9sZFNlc3Npb25TdGF0ZSA9IG1fc2Vzc2lvblN0YXRlOworICAgICAgICBwb2xs
RXZlbnRzKCk7CisgICAgICAgIGlmIChzZXNzaW9uU2hvdWxkU3RvcChtX3Nlc3Npb25TdGF0ZSkp
IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBub3RpZnkgd2l0aCBzb21lIGV2ZW50LgorICAgICAg
ICAgICAgeHJFbmRTZXNzaW9uKG1fc2Vzc2lvbik7CisgICAgICAgICAgICByZXNldFNlc3Npb24o
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3Nlc3Np
b25TdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1JFQURZICYmIG1fc2Vzc2lvblN0YXRlICE9IG9s
ZFNlc3Npb25TdGF0ZSkKKyAgICAgICAgICAgIGJlZ2luU2Vzc2lvbigpOworCisgICAgICAgIGF1
dG8gZnJhbWVTdGF0ZSA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lU3RhdGUsIFhSX1RZUEVfRlJB
TUVfU1RBVEU+KCk7CisgICAgICAgIGF1dG8gZnJhbWVXYWl0SW5mbyA9IGNyZWF0ZVN0cnVjdHVy
ZTxYckZyYW1lV2FpdEluZm8sIFhSX1RZUEVfRlJBTUVfV0FJVF9JTkZPPigpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IHhyV2FpdEZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lV2FpdEluZm8sICZmcmFt
ZVN0YXRlKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4cldhaXRGcmFtZSIs
IG1faW5zdGFuY2UpOworICAgICAgICBYclRpbWUgcHJlZGljdGVkVGltZSA9IGZyYW1lU3RhdGUu
cHJlZGljdGVkRGlzcGxheVRpbWU7CisKKyAgICAgICAgYXV0byBmcmFtZUJlZ2luSW5mbyA9IGNy
ZWF0ZVN0cnVjdHVyZTxYckZyYW1lQmVnaW5JbmZvLCBYUl9UWVBFX0ZSQU1FX0JFR0lOX0lORk8+
KCk7CisgICAgICAgIHJlc3VsdCA9IHhyQmVnaW5GcmFtZShtX3Nlc3Npb24sICZmcmFtZUJlZ2lu
SW5mbyk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJCZWdpbkZyYW1lIiwg
bV9pbnN0YW5jZSk7CisKKyAgICAgICAgRGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhOworICAg
ICAgICBmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUgPSBmcmFtZVN0YXRlLnByZWRpY3Rl
ZERpc3BsYXlUaW1lOworCisgICAgICAgIGlmIChzZXNzaW9uSXNBY3RpdmUobV9zZXNzaW9uU3Rh
dGUpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9jb25maWd1cmF0aW9uVmlld3MuY29udGFpbnMo
bV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBjb25zdCBhdXRv
JiBjb25maWd1cmF0aW9uVmlldyA9IG1fY29uZmlndXJhdGlvblZpZXdzLmdldChtX2N1cnJlbnRW
aWV3Q29uZmlndXJhdGlvblR5cGUpOworCisgICAgICAgICAgICBhdXRvIHZpZXdMb2NhdGVJbmZv
ID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld0xvY2F0ZUluZm8sIFhSX1RZUEVfVklFV19MT0NBVEVf
SU5GTz4oKTsKKyAgICAgICAgICAgIHZpZXdMb2NhdGVJbmZvLmRpc3BsYXlUaW1lID0gcHJlZGlj
dGVkVGltZTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1c2UgdGhlIGN1cnJlbnQgcmVmZXJlbmNl
IHNwYWNlLgorICAgICAgICAgICAgLy8gdmlld0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3Bh
Y2U7CisKKyAgICAgICAgICAgIHVpbnQzMl90IHZpZXdDb3VudCA9IGNvbmZpZ3VyYXRpb25WaWV3
LnNpemUoKTsKKyAgICAgICAgICAgIFZlY3RvcjxYclZpZXc+IHZpZXdzKHZpZXdDb3VudCwgW10g
eworICAgICAgICAgICAgICAgIFhyVmlldyBvYmplY3Q7CisgICAgICAgICAgICAgICAgc3RkOjpt
ZW1zZXQoJm9iamVjdCwgMCwgc2l6ZW9mKFhyVmlldykpOworICAgICAgICAgICAgICAgIG9iamVj
dC50eXBlID0gWFJfVFlQRV9WSUVXOworICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7Cisg
ICAgICAgICAgICB9KCkpOworCisgICAgICAgICAgICBhdXRvIHZpZXdTdGF0ZSA9IGNyZWF0ZVN0
cnVjdHVyZTxYclZpZXdTdGF0ZSwgWFJfVFlQRV9WSUVXX1NUQVRFPigpOworICAgICAgICAgICAg
dWludDMyX3Qgdmlld0NvdW50T3V0cHV0OworICAgICAgICAgICAgcmVzdWx0ID0geHJMb2NhdGVW
aWV3cyhtX3Nlc3Npb24sICZ2aWV3TG9jYXRlSW5mbywgJnZpZXdTdGF0ZSwgdmlld0NvdW50LCAm
dmlld0NvdW50T3V0cHV0LCB2aWV3cy5kYXRhKCkpOworICAgICAgICAgICAgaWYgKCFYUl9GQUlM
RUQocmVzdWx0KSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdmlldyA6IHZpZXdzKQor
ICAgICAgICAgICAgICAgICAgICBmcmFtZURhdGEudmlld1Bvc2VzLmFwcGVuZCh4clZpZXdUb1Zp
ZXdEYXRhKHZpZXcpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW2ZyYW1lRGF0YSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSB7
CisgICAgICAgICAgICBjYWxsYmFjayhmcmFtZURhdGEpOworICAgICAgICB9KTsKKworICAgICAg
ICBhdXRvIGZyYW1lRW5kSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lRW5kSW5mbywgWFJf
VFlQRV9GUkFNRV9FTkRfSU5GTz4oKTsKKyAgICAgICAgZnJhbWVFbmRJbmZvLmRpc3BsYXlUaW1l
ID0gcHJlZGljdGVkVGltZTsKKyAgICAgICAgZnJhbWVFbmRJbmZvLmVudmlyb25tZW50QmxlbmRN
b2RlID0gWFJfRU5WSVJPTk1FTlRfQkxFTkRfTU9ERV9PUEFRVUU7CisgICAgICAgIGZyYW1lRW5k
SW5mby5sYXllckNvdW50ID0gMDsKKyAgICAgICAgcmVzdWx0ID0geHJFbmRGcmFtZShtX3Nlc3Np
b24sICZmcmFtZUVuZEluZm8pOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhy
RW5kRnJhbWUiLCBtX2luc3RhbmNlKTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgUGxh
dGZvcm1YUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1Bs
YXRmb3JtWFJPcGVuWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0
Zm9ybVhST3BlblhSLmgKaW5kZXggYWEyZjc4MGVmOTEyOTYyMGY0NDEyZGI0OWEwZThhMDQyZDU4
YjUyOS4uYWIyZTYxNDU0MjhjZDE4ZGZmYzViMjVlZTBiNDg0MjEyYzZhZDZkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5o
CkBAIC01MiwxNCArNTIsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RDb25maWd1cmF0
aW9uVmlld3MoKTsKIAogICAgIExpc3RPZkVuYWJsZWRGZWF0dXJlcyBlbnVtZXJhdGVSZWZlcmVu
Y2VTcGFjZXMoWHJTZXNzaW9uJikgY29uc3Q7CisgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNl
U3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH07CiAKICAgICBXZWJDb3JlOjpJbnRT
aXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSkgZmluYWw7CiAKICAgICB2b2lk
IGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSkgZmluYWw7CiAgICAg
dm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7CiAKKyAgICB2b2lkIHBv
bGxFdmVudHMoKTsKKyAgICBYclJlc3VsdCBiZWdpblNlc3Npb24oKTsKICAgICB2b2lkIHJlc2V0
U2Vzc2lvbigpOwogCisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2sm
JikgZmluYWw7CisKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgPSBI
YXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBYclZpZXdDb25maWd1cmF0aW9uUHJvcGVy
dGllcywgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhh
c2hUcmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKICAgICBWaWV3Q29uZmlndXJhdGlv
blByb3BlcnRpZXNNYXAgbV92aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXM7CiAgICAgdXNpbmcg
Vmlld0NvbmZpZ3VyYXRpb25WaWV3c01hcCA9IEhhc2hNYXA8WHJWaWV3Q29uZmlndXJhdGlvblR5
cGUsIFZlY3RvcjxYclZpZXdDb25maWd1cmF0aW9uVmlldz4sIEludEhhc2g8WHJWaWV3Q29uZmln
dXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFhyVmlld0NvbmZpZ3VyYXRp
b25UeXBlPj47CkBAIC02OCw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgWHJTeXN0ZW1JZCBtX3N5
c3RlbUlkOwogICAgIFhySW5zdGFuY2UgbV9pbnN0YW5jZTsKICAgICBYclNlc3Npb24gbV9zZXNz
aW9uIHsgWFJfTlVMTF9IQU5ETEUgfTsKKyAgICBYclNlc3Npb25TdGF0ZSBtX3Nlc3Npb25TdGF0
ZSB7IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTiB9OwogCiAgICAgV29ya1F1ZXVlJiBtX3F1ZXVl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5kZXggYTQ3
YzFlY2E3ZGVkY2VkYTUwNTBhZDk3YmM0N2Q4NTY1YmE1OTBlZi4uZDI2ZDhmNTBjYWYwMjZiMDU0
MGQ0OWJjNWExZDRhY2NiOTgyMGRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFr
ZVhSRGV2aWNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9u
bHkuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIldlYkZh
a2VYUklucHV0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDYgKzQwLDE3IEBAIHZvaWQgRmFrZVhS
Vmlldzo6c2V0RmllbGRPZlZpZXcoRmFrZVhSVmlld0luaXQ6OkZpZWxkT2ZWaWV3SW5pdCBmb3Yp
CiAgICAgbV9mb3YgPSBmb3Y7CiB9CiAKK1NpbXVsYXRlZFhSRGV2aWNlOjpTaW11bGF0ZWRYUkRl
dmljZSgpCisgICAgOiBtX2ZyYW1lVGltZXIoKnRoaXMsICZTaW11bGF0ZWRYUkRldmljZTo6ZnJh
bWVUaW1lckZpcmVkKQoreworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gdHJ1
ZTsKK30KKworU2ltdWxhdGVkWFJEZXZpY2U6On5TaW11bGF0ZWRYUkRldmljZSgpCit7CisgICAg
c3RvcFRpbWVyKCk7Cit9CisKIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNpbXVsYXRlU2h1dGRv
d25Db21wbGV0ZWQoKQogewogICAgIGlmIChtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KQpA
QCAtNDksNiArNjEsMjggQEAgdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c2h1dERvd25UcmFja2lu
Z0FuZFJlbmRlcmluZygpCiB7CiAgICAgaWYgKG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlv
bikKICAgICAgICAgc2ltdWxhdGVTaHV0ZG93bkNvbXBsZXRlZCgpOworICAgIHN0b3BUaW1lcigp
OworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzdG9wVGltZXIoKQoreworICAgIGlmICht
X2ZyYW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9mcmFtZVRpbWVyLnN0b3AoKTsKK30K
Kwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKCkKK3sKKyAgICBWZWN0
b3I8UmVxdWVzdEZyYW1lQ2FsbGJhY2s+IHJ1bm5pbmdDYWxsYmFja3M7CisgICAgcnVubmluZ0Nh
bGxiYWNrcy5zd2FwKG1fY2FsbGJhY2tzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcnVu
bmluZ0NhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKK30KKwordm9pZCBTaW11bGF0
ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBpZiAo
IW1fZnJhbWVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZyYW1lVGltZXIuc3RhcnRPbmVT
aG90KDE1X21zKTsKIH0KIAogV2ViRmFrZVhSRGV2aWNlOjpXZWJGYWtlWFJEZXZpY2UoKSA9IGRl
ZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmlj
ZS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAppbmRleCA4NDdi
YmNiMTc0NDg0NDhmMGVjN2U4Y2ViMWI2ZmQ2ZTlmYWM5NTg4Li4zOTFiZmMzNDdlZWY5YWFhZjE3
YmQyYmE4YjZiYTQzNmYwMDA0NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1dlYkZha2VYUkRldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhS
RGV2aWNlLmgKQEAgLTYzLDcgKzYzLDggQEAgcHJpdmF0ZToKIGNsYXNzIFNpbXVsYXRlZFhSRGV2
aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2ltdWxhdGVkWFJEZXZpY2UoKSB7IG1fc3VwcG9y
dHNPcmllbnRhdGlvblRyYWNraW5nID0gdHJ1ZTsgfQorICAgIFNpbXVsYXRlZFhSRGV2aWNlKCk7
CisgICAgflNpbXVsYXRlZFhSRGV2aWNlKCk7CiAgICAgdm9pZCBzZXROYXRpdmVCb3VuZHNHZW9t
ZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+IGdlb21ldHJ5KSB7IG1fbmF0aXZlQm91bmRz
R2VvbWV0cnkgPSBnZW9tZXRyeTsgfQogICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKFJlZlB0cjxX
ZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX3ZpZXdlck9yaWdpbiA9IFdURk1vdmUo
b3JpZ2luKTsgfQogICAgIHZvaWQgc2V0Rmxvb3JPcmlnaW4oUmVmUHRyPFdlYlhSUmlnaWRUcmFu
c2Zvcm0+JiYgb3JpZ2luKSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KQEAg
LTc1LDEyICs3NiwyMCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KICAgICB2b2lkIHNo
dXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXBwb3J0
c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CisgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3Bh
Y2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJl
cXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKworICAgIHZvaWQgc3Rv
cFRpbWVyKCk7CisgICAgdm9pZCBmcmFtZVRpbWVyRmlyZWQoKTsKKwogICAgIE9wdGlvbmFsPFZl
Y3RvcjxGYWtlWFJCb3VuZHNQb2ludD4+IG1fbmF0aXZlQm91bmRzR2VvbWV0cnk7CiAgICAgUmVm
UHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fdmlld2VyT3JpZ2luOwogICAgIFJlZlB0cjxXZWJY
UlJpZ2lkVHJhbnNmb3JtPiBtX2Zsb29yT3JpZ2luOwogICAgIGJvb2wgbV9lbXVsYXRlZFBvc2l0
aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiBtX3ZpZXdzOwogICAg
IGJvb2wgbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uIHsgZmFsc2UgfTsKKyAgICBUaW1l
ciBtX2ZyYW1lVGltZXI7CisgICAgVmVjdG9yPFJlcXVlc3RGcmFtZUNhbGxiYWNrPiBtX2NhbGxi
YWNrczsKIH07CiAKIGNsYXNzIFdlYkZha2VYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYkZha2VYUkRldmljZT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ4MTg5NjI1MjAzMzMwMTE3MjJlNmU5N2Q4
ZGI4YzE4MGQ3YWFjZTkuLjEyMjUwNmZjOWMyMTYyZDE2YmM4ZDY5NDY1MjA4NDNjMGI0NDVkZTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMi0wMSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAg
PHN2aWxsYXJAaWdhbGlhLmNvbT4gYW5kIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGln
YWxpYS5jb20+CisKKyAgICAgICAgQ29tcGxldGUgWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9u
RnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMDk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDIt
MDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWRhYmxl
U3RyZWFtIEMrKyBtZXRob2RzIHNob3VsZCBjaGVjayBmb3IgZXhjZXB0aW9uCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA4OGUwZTg3MzQ5NWEwMDcxMDU5NzgwN2NlZGIzMzE2OWM3
ZjA5ZmZlLi5mMjM4ZWViNDAwZTRlMDRiNWZlN2JlMDVlMjk2MWMxM2I5ZDQwOTE1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMi0wMSAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4gYW5kIEltYW5vbCBGZXJuYW5k
ZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29tcGxldGUgWFJTZXNzaW9u
OjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBYUlNlc3Npb24gUkFGIHRlc3Rz
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIw
MjEtMDEtMzEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBjb2xvcihwcm9waG90by1yZ2IgLi4uKSBhcyBwYXJ0IG9mIENTUyBDb2xvciA0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1OGE0MjNmYzZiMTk4MTEyOTM1YmZmMjkwNzI3OGZkYTk0
ZmNjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0
YW1wLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZyYW1lIGdl
dFZpZXdlclBvc2UgdXBkYXRlcyBvbiB0aGUgbmV4dCBmcmFtZSBmb3IgaW1tZXJzaXZlCitQQVNT
IFhSRnJhbWUgZ2V0Vmlld2VyUG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0IGZyYW1lIGZvciBub24t
aW1tZXJzaXZlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNmNiNGEwZDRkODUwMTVkNjQwMzBjYmMyZDI2N2M0ODVjNWUzZWZmNC4uM2ExZjE1YTY1ZDY1
YWVjMGM1ZjhmMzU3MzU3NjcwMDY3N2ExZGZlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3Bl
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYzMiw2ICs2MzIsNyBAQCB3ZWJraXQub3JnL2IvMjA5ODU5
IHdlYmtpdC5vcmcvYi8yMTU2MzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94cgogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZV9pbnZhbGlkaGFuZGxlLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZmVhdHVyZXNfZGV2aWNlU3VwcG9ydC5odHRwcy5o
dG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9jYWxsYmFja19j
YWxscy5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0dHBzLmh0
bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNwYWNlLmh0dHBzLmh0bWwg
WyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRtbCBbIFBhc3Mg
XQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL2FyLW1vZHVsZS94ckRldmljZV9pc1Nlc3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlLWFyLmh0
dHBzLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419157</attachid>
            <date>2021-02-03 11:06:46 -0800</date>
            <delta_ts>2021-02-04 04:19:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220979-20210203200645.patch</filename>
            <type>text/plain</type>
            <size>48008</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYxYTIwYzc1NmY3YThk
NTQ1M2YwNWFlZDExNWYzMTlmMjU3NmQ0NC4uYThlNTRlNTg0ZjA4MmEyZTAxZGMzZjg0MmRlMzE3
NGRkMzYxYjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTAyLTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBsZW1lbnQgdGhlIHJlbmRlciBsb29w
IGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBYUiBzZXNzaW9ucy4KKyAgICAgICAgLSBJbXBsZW1l
bnQgV2ViWFIgcmVuZGVyIHN0YXRlIHVwZGF0ZXMuCisgICAgICAgIC0gQ3JlYXRlIHRoZSBGcmFt
ZURhdGEgc3RydWN0IHVzZWQgdG8gcmVhZCBmcmFtZSBzcGVjaWZpYyBkYXRhIGZyb20gWFIgZGV2
aWNlcy4KKyAgICAgICAgLSBVc2Ugd2luZG93IFJBRiBmb3IgaW5saW5lIFhSIHNlc3Npb25zLgor
ICAgICAgICAtIEltcGxlbWVudCBXZWJGYWtlWFJEZXZpY2UgdGVzdGluZyByZW5kZXJpbmcgbG9v
cCB1c2luZyBhIHRpbWVyLgorICAgICAgICAtIEltcGxlbWVudCBPcGVuWFIgc2Vzc2lvbiBzdGF0
ZXMgYW5kIHNlc3Npb24gdHJhY2tpbmcuCisKKyAgICAgICAgVGVzdGVkIGJ5IHRoZSBXZWJYUiBw
bGF0Zm9ybSB0ZXN0cy4gCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
OiBBZGQgbV9hY3RpdmUsIG1fdGltZSBhbmQgbV9zZXNzaW9uIG1lbWJlcnMKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1l
OjpXZWJYUkZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnNldFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJGcmFtZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6Omlz
QWN0aXZlIGNvbnN0KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0
ZS5oOiBBZGQgbV9jb21wb3NpdGlvbkRpc2FibGVkIG1lbWJlciBhbmQgb3V0cHV0IGNhbnZhcyBz
ZXR0ZXIKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldE91dHB1dENhbnZh
cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlbmRlclN0YXRlOjpjb21wb3NpdGlvbkRpc2Fi
bGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldENvbXBv
c2l0aW9uRGlzYWJsZWQpOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTZXNzaW9uOjppbml0aWFsaXplKTogcmVxdWlyZWQgdG8gY3JlYXQgdGhlIFhSRnJhbWUg
d2l0aCBtYWtlUmVmKHRoaXMpCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVl
c3RSZWZlcmVuY2VTcGFjZSk6IGltcGxlbWVudCByZWZlcmVuY2Ugc3BhY2UgY3JlYXRpb24KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKTogaW1w
bGVtZW50IHJlbmRlciBsb29wIGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBzZXNzaW9ucworICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSk6IGlt
cGxlbWVudCBXZWJYUiByZW5kZXIgc3RhdGUgdXBkYXRlcworICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJTZXNzaW9uOjpmcmFtZVNob3VsZEJlUmVuZGVyZWQgY29uc3QpOiBhZGQgY2hlY2sgYmFzZWQg
b24gdGhlIHNwZWMKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6cmVxdWVzdEZyYW1l
KTogaW1wbGVtZW50IGhlbHBlciBmdW5jdGlvbiB0byBkaXNwYXRjaCBhIGZyYW1lIHJlcXVlc3Qg
dG8gWFIgZGV2aWNlcworICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpvbkZyYW1lKTog
cHJvY2VzcyB0aGUgWFIgZnJhbWUgYW5kIGNhbGwgdGhlIFJBRiBjYWxsYmFja3MKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlN5c3RlbS5jcHA6IEltcGxlbWVudCByZW5kZXIgbG9vcCB1c2luZyB3aW5kb3cgcmFm
IGxvb3AuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6V2ViWFJTeXN0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpEdW1teUlubGlu
ZURldmljZSk6IEFkZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OnJlcXVlc3RGcmFtZSk6IEFkYXB0IHRvIHRo
ZSBuZXcgaW50ZXJmYWNlCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJXZWJHTExheWVyOjpjYW52YXMgY29uc3QpOiBJbXBsZW1lbnQgY2FudmFz
IGdldHRlcgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmNvbXBvc2l0aW9uRGlzYWJsZWQgY29uc3Qp
OiBhZGQKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6c2V0Q29tcG9zaXRpb25E
aXNhYmxlZCk6IGFkZAorCisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOiBBZGQg
RnJhbWVEYXRhIHN0cnVjdAorCisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3Jt
WFJPcGVuWFIuY3BwOiBJbXBsZW1lbnQgcmVuZGVyIGxvb3AgdXNpbmcgT3BlblhSIEFQSQorICAg
ICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpyZXNldFNlc3Npb24pOgorICAgICAgICAo
UGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKToK
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cG9sbEV2ZW50cyk6IEltcGxlbWVu
dCBldmVudCBsb29wIHRvIHF1ZXJ5IG1fc2Vzc2lvblN0YXRlCisgICAgICAgIChQbGF0Zm9ybVhS
OjpzZXNzaW9uSXNBY3RpdmUpOiBhZGQKKyAgICAgICAgKFBsYXRmb3JtWFI6OnNlc3Npb25Jc1J1
bm5pbmcpOiBhZGQKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6YmVnaW5TZXNz
aW9uKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OnhyVmlld1RvVmlld0RhdGEpOiBoZWxwZXIgZnVu
Y3Rpb24gdG8gY29udmVydCBkYXRhIGZyb20gT3BlblhSCisgICAgICAgIChQbGF0Zm9ybVhSOjpP
cGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZSk6IHN0YXJ0IE9wZW5YUiBmcmFtZSwgcXVlcnkgcG9z
ZSBhbmQgdmlldyBkYXRhCisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OndhaXRV
bnRpbFN0b3BwaW5nKTogcHJvcGVybHkgd2FpdCBmb3IgT3BlblhSIGV2ZW50IGJlZm9yZSBlbmRp
bmcgdGhlIHNlc3Npb24KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9w
ZW5YUi5oOgorCisKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IEltcGxl
bWVudCByZW5kZXIgbG9vcCB1c2luZyBhIHRpbWVyCisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0
ZWRYUkRldmljZTo6U2ltdWxhdGVkWFJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxh
dGVkWFJEZXZpY2U6On5TaW11bGF0ZWRYUkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11
bGF0ZWRYUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2ltdWxhdGVkWFJEZXZpY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuaDoKKwogMjAyMS0wMi0wMyAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtjc3MtZ3JpZF0gV1BUIHRlc3QgY3NzL2Nzcy1ncmlkL2dyaWQtbW9kZWwv
Z3JpZC1ib3gtc2l6aW5nLTAwMS5odG1sIGZhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA5MzVkYzEyN2M5ZDA3YTdjOGQyMzg0MTU0NTg3ZDUx
MzU4ODdhZTFhLi5mMjc4NzYxYjBhN2I3ZDI5ZDE3OTQyMjM1MGEyYWExOThhMjNiZGVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTQ4LDEwICs0
OCw2IEBAIFdlYlhSRnJhbWU6OldlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9u
KQogCiBXZWJYUkZyYW1lOjp+V2ViWFJGcmFtZSgpID0gZGVmYXVsdDsKIAotY29uc3QgV2ViWFJT
ZXNzaW9uJiBXZWJYUkZyYW1lOjpzZXNzaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZXNz
aW9uOwotfQogCiBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBXZWJYUkZyYW1lOjpnZXRWaWV3ZXJQ
b3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaAppbmRleCA4MDhhNjc2NGYwZDJjNWFlNjFlNGQ2NThjMjgyNTA1
NzlmZTViNjI3Li4yYTI2YWQ4NmEyYzMwZGE4YzIzZGZiNmM3YmJiOTAzODJkMTJlMDVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiRE9NSGlnaFJlc1RpbWVTdGFtcC5o
IgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ2LDE0ICs0NywyMCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxXZWJYUkZyYW1lPiBjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJik7CiAgICAg
fldlYlhSRnJhbWUoKTsKIAotICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0
OworICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vz
c2lvbi5nZXQoKTsgfQogCiAgICAgUmVmUHRyPFdlYlhSVmlld2VyUG9zZT4gZ2V0Vmlld2VyUG9z
ZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJik7CiAgICAgUmVmUHRyPFdlYlhSUG9zZT4gZ2V0
UG9zZShjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOwogCisgICAgdm9pZCBz
ZXRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZSkgeyBtX3RpbWUgPSB0aW1lOyB9CisgICAg
dm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUpIHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0KKyAgICBi
b29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KKwogcHJpdmF0ZToKLSAg
ICBXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYpOworICAgIGV4cGxpY2l0IFdlYlhSRnJh
bWUoUmVmPFdlYlhSU2Vzc2lvbj4mJik7CiAKKyAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsK
KyAgICBET01IaWdoUmVzVGltZVN0YW1wIG1fdGltZTsKICAgICBSZWY8V2ViWFJTZXNzaW9uPiBt
X3Nlc3Npb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSUmVuZGVyU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJS
ZW5kZXJTdGF0ZS5oCmluZGV4IDFlNDM2M2YxZjE5NDMxZTRhMWVjOTU4ZjFiZmEyYjQ3MDc0NTc3
YTIuLmU2ZDQzYzA0Njg5NTk4YjUzZGE2ZDRiYmI3M2YyZGMxYTQxM2EyYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCkBAIC01Niw2ICs1
NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYXNlTGF5ZXIoV2ViWFJXZWJHTExheWVyKiBi
YXNlTGF5ZXIpIHsgbV9iYXNlTGF5ZXIgPSBiYXNlTGF5ZXI7IH0KIAogICAgIEhUTUxDYW52YXNF
bGVtZW50KiBvdXRwdXRDYW52YXMoKSBjb25zdCB7IHJldHVybiBtX291dHB1dENhbnZhcy5nZXQo
KTsgfQorICAgIHZvaWQgc2V0T3V0cHV0Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMp
IHsgbV9vdXRwdXRDYW52YXMgPSBtYWtlV2Vha1B0cihjYW52YXMpOyB9CisKKyAgICBib29sIGNv
bXBvc2l0aW9uRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uRGlzYWJsZWQ7
IH0KKyAgICB2b2lkIHNldENvbXBvc2l0aW9uRGlzYWJsZWQoYm9vbCBjb21wb3NpdGlvbkRpc2Fi
bGVkKSB7IG1fY29tcG9zaXRpb25EaXNhYmxlZCA9IGNvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJYUlJlbmRlclN0YXRlKE9wdGlvbmFsPGRvdWJsZT4g
ZmllbGRPZlZpZXcpOwpAQCAtNjksNiArNzMsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPGRv
dWJsZT4gbV9pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3OyAvLyBpbiByYWRpYW5zCiAgICAgUmVm
UHRyPFdlYlhSV2ViR0xMYXllcj4gbV9iYXNlTGF5ZXI7CiAgICAgV2Vha1B0cjxIVE1MQ2FudmFz
RWxlbWVudD4gbV9vdXRwdXRDYW52YXM7CisgICAgYm9vbCBtX2NvbXBvc2l0aW9uRGlzYWJsZWQg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmluZGV4IGQ4ZTJmODExYzI0NWIwY2Vi
MGFjZWZlYTNkZmVkYTU0ZTUyOGIwMDUuLmM1MmRhNGY5NzgzNjJiMDQwYWU4NjFiOWY3N2ZjOGFk
ODczNDIxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lv
bi5jcHAKQEAgLTQ1LDcgKzQ1LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhS
U2Vzc2lvbik7CiAKIFJlZjxXZWJYUlNlc3Npb24+IFdlYlhSU2Vzc2lvbjo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kZSBtb2RlLCBQ
bGF0Zm9ybVhSOjpEZXZpY2UmIGRldmljZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJYUlNlc3Npb24oZG9jdW1lbnQsIHN5c3RlbSwgbW9kZSwgZGV2aWNlKSk7CisgICAgYXV0byBz
ZXNzaW9uID0gYWRvcHRSZWYoKm5ldyBXZWJYUlNlc3Npb24oZG9jdW1lbnQsIHN5c3RlbSwgbW9k
ZSwgZGV2aWNlKSk7CisgICAgc2Vzc2lvbi0+aW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBzZXNz
aW9uOwogfQogCiBXZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQs
IFdlYlhSU3lzdGVtJiBzeXN0ZW0sIFhSU2Vzc2lvbk1vZGUgbW9kZSwgUGxhdGZvcm1YUjo6RGV2
aWNlJiBkZXZpY2UpCkBAIC01NSwxMSArNTcsMTUgQEAgV2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Np
b24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Npb25Nb2QK
ICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkK
ICAgICAsIG1fYWN0aXZlUmVuZGVyU3RhdGUoV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRlKG1vZGUp
KQotICAgICwgbV9hbmltYXRpb25UaW1lcigqdGhpcywgJldlYlhSU2Vzc2lvbjo6YW5pbWF0aW9u
VGltZXJGaXJlZCkKKyAgICAsIG1fdGltZU9yaWdpbihNb25vdG9uaWNUaW1lOjpub3coKSkKIHsK
ICAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUpOwogICAg
IG1fZGV2aWNlLT5zZXRUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudChtYWtlV2Vha1B0cigqdGhp
cykpOwogCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcmVm
LWZvci1kb20teHJyZWZlcmVuY2VzcGFjZXR5cGUtdmlld2VyJUUyJTkxJUEyCisgICAgLy8gRXZl
cnkgc2Vzc2lvbiBNVVNUIHN1cHBvcnQgdmlld2VyIFhSUmVmZXJlbmNlU3BhY2VzLgorICAgIG1f
ZGV2aWNlLT5pbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZp
ZXdlcik7CisKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIApAQCAtNjksNiArNzUsMTEgQEAg
V2ViWFJTZXNzaW9uOjp+V2ViWFJTZXNzaW9uKCkKICAgICAgICAgbV9kZXZpY2UtPnNodXREb3du
VHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKIH0KIAordm9pZCBXZWJYUlNlc3Npb246OmluaXRpYWxp
emUoKQoreworICAgIG1fYW5pbWF0aW9uRnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJl
ZigqdGhpcykpOworfQorCiBYUkVudmlyb25tZW50QmxlbmRNb2RlIFdlYlhSU2Vzc2lvbjo6ZW52
aXJvbm1lbnRCbGVuZE1vZGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2Vudmlyb25tZW50Qmxl
bmRNb2RlOwpAQCAtMTk4LDY2ICsyMDksNDcgQEAgdm9pZCBXZWJYUlNlc3Npb246OnJlcXVlc3RS
ZWZlcmVuY2VTcGFjZShYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlLCBSZXF1ZXN0UmVmZXIKICAg
ICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisKICAgICAvLyAxLiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBQ
cm9taXNlLgogICAgIC8vIDIuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgot
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCB0eXBlXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAg
IC8vICAyLjEuIENyZWF0ZSBhIHJlZmVyZW5jZSBzcGFjZSwgcmVmZXJlbmNlU3BhY2UsIHdpdGgg
dGhlIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUuCi0gICAgICAgIC8vICAyLjIuIElmIHJlZmVy
ZW5jZVNwYWNlIGlzIG51bGwsIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJv
ciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5w
b3N0VGFzayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCB0eXBlXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vIDIuMS4gSWYgdGhlIHJlc3Vs
dCBvZiBydW5uaW5nIHJlZmVyZW5jZSBzcGFjZSBpcyBzdXBwb3J0ZWQgZm9yIHR5cGUgYW5kIHNl
c3Npb24gaXMgZmFsc2UsIHF1ZXVlIGEgdGFzayB0byByZWplY3QgcHJvbWlzZQorICAgICAgICAv
LyB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAg
ICBpZiAoIXJlZmVyZW5jZVNwYWNlSXNTdXBwb3J0ZWQodHlwZSkpIHsKLSAgICAgICAgICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOworICAgICAgICAg
ICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAg
IHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOworICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICAvLyBo
dHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNjcmVhdGUtYS1yZWZlcmVuY2Ut
c3BhY2UKLSAgICAgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IHJlZmVyZW5jZVNwYWNl
OwotICAgICAgICBpZiAodHlwZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29y
KQotICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZTo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgbWFrZVJlZigqdGhpcyksIHR5
cGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVm
ZXJlbmNlU3BhY2U6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIG1ha2VSZWYo
KnRoaXMpLCB0eXBlKTsKLQotICAgICAgICAvLyAgMi4zLiBSZXNvbHZlIHByb21pc2Ugd2l0aCBy
ZWZlcmVuY2VTcGFjZS4KLSAgICAgICAgLy8gMy4gUmV0dXJuIHByb21pc2UuCi0gICAgICAgIHBy
b21pc2UucmVzb2x2ZShyZWZlcmVuY2VTcGFjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
Ly8gMi4yLiBTZXQgdXAgYW55IHBsYXRmb3JtIHJlc291cmNlcyByZXF1aXJlZCB0byB0cmFjayBy
ZWZlcmVuY2Ugc3BhY2VzIG9mIHR5cGUgdHlwZS4KKyAgICAgICAgbV9kZXZpY2UtPmluaXRpYWxp
emVSZWZlcmVuY2VTcGFjZSh0eXBlKTsKKworICAgICAgICAvLyAyLjMuIFF1ZXVlIGEgdGFzayB0
byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIHR5cGUsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBkb2N1bWVudCA9
IG1ha2VSZWYoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKTsK
KyAgICAgICAgICAgIC8vIDIuNC4gQ3JlYXRlIGEgcmVmZXJlbmNlIHNwYWNlLCByZWZlcmVuY2VT
cGFjZSwgd2l0aCB0eXBlIGFuZCBzZXNzaW9uLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1l
cnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCisgICAg
ICAgICAgICBSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7CisgICAg
ICAgICAgICBpZiAodHlwZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQor
ICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3Bh
Y2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJSZWZlcmVuY2VTcGFj
ZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7CisKKyAgICAgICAgICAg
IC8vIDIuNS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVmZXJlbmNlU3BhY2UuCisgICAgICAgICAg
ICBwcm9taXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogfQogCi12b2lkIFdlYlhSU2Vzc2lvbjo6YW5pbWF0aW9uVGltZXJG
aXJlZCgpCi17Ci0gICAgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKLQotICAgIGlmIChtX2NhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIFRPRE86IHJldHJpZXZlIGZyYW1lIGZyb20gcGxhdGZvcm0uCi0gICAg
YXV0byBmcmFtZSA9IFdlYlhSRnJhbWU6OmNyZWF0ZSgqdGhpcyk7Ci0KLSAgICBtX3J1bm5pbmdD
YWxsYmFja3Muc3dhcChtX2NhbGxiYWNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1f
cnVubmluZ0NhbGxiYWNrcykgewotICAgICAgICBpZiAoY2FsbGJhY2stPmlzQ2FuY2VsbGVkKCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2ZW50KG1f
bGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNv
bmRzKCksIGZyYW1lLmdldCgpKTsKLSAgICB9Ci0KLSAgICBtX3J1bm5pbmdDYWxsYmFja3MuY2xl
YXIoKTsKLX0KLQotdm9pZCBXZWJYUlNlc3Npb246OnNjaGVkdWxlQW5pbWF0aW9uKCkKLXsKLSAg
ICBpZiAobV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAobV9lbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVE9ETzogdXNlIGRldmlj
ZSdzIHJlZnJlc2ggcmF0ZS4gTGV0J3Mgc3RhcnQgd2l0aCA2MGZwcy4KLSAgICBTZWNvbmRzIGFu
aW1hdGlvbkludGVydmFsID0gMTVfbXM7Ci0gICAgU2Vjb25kcyBzY2hlZHVsZURlbGF5ID0gc3Rk
OjptYXgoYW5pbWF0aW9uSW50ZXJ2YWwgLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RB
bmltYXRpb25GcmFtZVRpbWVzdGFtcCksIDBfcyk7Ci0gICAgbV9hbmltYXRpb25UaW1lci5zdGFy
dE9uZVNob3Qoc2NoZWR1bGVEZWxheSk7Ci19Ci0KIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5n
aXRodWIuaW8vd2VieHIvI2RvbS14cnNlc3Npb24tcmVxdWVzdGFuaW1hdGlvbmZyYW1lCiB1bnNp
Z25lZCBXZWJYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25GcmFtZShSZWY8WFJGcmFtZVJlcXVl
c3RDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKKyAgICAvLyBJZ25vcmUgYW55IG5ldyBmcmFtZSBy
ZXF1ZXN0cyBvbmNlIHRoZSBzZXNzaW9uIGlzIGVuZGVkLgorICAgIGlmIChtX2VuZGVkKQorICAg
ICAgICByZXR1cm4gMDsKKwogICAgIC8vIDEuIExldCBzZXNzaW9uIGJlIHRoZSB0YXJnZXQgWFJT
ZXNzaW9uIG9iamVjdC4KICAgICAvLyAyLiBJbmNyZW1lbnQgc2Vzc2lvbidzIGFuaW1hdGlvbiBm
cmFtZSBjYWxsYmFjayBpZGVudGlmaWVyIGJ5IG9uZS4KICAgICB1bnNpZ25lZCBuZXdJZCA9IG1f
bmV4dENhbGxiYWNrSWQrKzsKQEAgLTI2Nyw3ICsyNTksMTIgQEAgdW5zaWduZWQgV2ViWFJTZXNz
aW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+JiYg
Y2FsbGIKICAgICBjYWxsYmFjay0+c2V0Q2FsbGJhY2tJZChuZXdJZCk7CiAgICAgbV9jYWxsYmFj
a3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7
CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRnJhbWUpOworICAgIC8vIFNjcmlwdCBjYW4gYWRkIG11
bHRpcGxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFja3MgYnV0IHdlIHNob3VsZCBvbmx5
IHJlcXVlc3QgYSBkZXZpY2UgZnJhbWUgb25jZS4KKyAgICAvLyBXaGVuIG1fYW5pbWF0aW9uRnJh
bWUgaXMgYWN0aXZlLCB0aGUgbmV4dCByZXF1ZXN0RnJhbWUgaXMgc2NoZWR1bGVkIGF0IHRoZSBl
bmQgb2YgV2ViWFJTZXNzaW9uOjpvbkZyYW1lKCkgdG8gcHJldmVudAorICAgIC8vIHJlcXVlc3Rp
bmcgYSBuZXcgZnJhbWUgYmVmb3JlIHRoZSBjdXJyZW50IG9uZSBoYXMgZW5kZWQuCisgICAgaWYg
KG1fY2FsbGJhY2tzLnNpemUoKSA9PSAxICYmICFtX2FuaW1hdGlvbkZyYW1lLT5pc0FjdGl2ZSgp
KQorICAgICAgICByZXF1ZXN0RnJhbWUoKTsKIAogICAgIC8vIDQuIFJldHVybiBzZXNzaW9uJ3Mg
YW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrIGlkZW50aWZpZXIncyBjdXJyZW50IHZhbHVlLgogICAg
IHJldHVybiBuZXdJZDsKQEAgLTMzNiw2ICszMzMsMTAgQEAgdm9pZCBXZWJYUlNlc3Npb246OnNo
dXRkb3duKEluaXRpYXRlZEJ5U3lzdGVtIGluaXRpYXRlZEJ5U3lzdGVtKQogICAgIC8vIDIuIFNl
dCBzZXNzaW9uJ3MgZW5kZWQgdmFsdWUgdG8gdHJ1ZS4KICAgICBtX2VuZGVkID0gdHJ1ZTsKIAor
ICAgIC8vIFJlbGVhc2UgYW5pbWF0aW9uRnJhbWUsIHdoaWNoIGNvbnRhaW5zIGEgUmVmIHRvIHRo
aXMgc2Vzc2lvbi4KKyAgICBtX2FuaW1hdGlvbkZyYW1lLT5zZXRBY3RpdmUoZmFsc2UpOworICAg
IG1fYW5pbWF0aW9uRnJhbWUgPSBudWxscHRyOworCiAgICAgLy8gMy4gSWYgdGhlIGFjdGl2ZSBp
bW1lcnNpdmUgc2Vzc2lvbiBpcyBlcXVhbCB0byBzZXNzaW9uLCBzZXQgdGhlIGFjdGl2ZSBpbW1l
cnNpdmUgc2Vzc2lvbiB0byBudWxsLgogICAgIC8vIDQuIFJlbW92ZSBzZXNzaW9uIGZyb20gdGhl
IGxpc3Qgb2YgaW5saW5lIHNlc3Npb25zLgogICAgIG1feHJTeXN0ZW0uc2Vzc2lvbkVuZGVkKCp0
aGlzKTsKQEAgLTQyMCw2ICs0MjEsMTM3IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlk
RW5kKCkKICAgICBzaHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbTo6WWVzKTsKIH0KIAordm9pZCBX
ZWJYUlNlc3Npb246OmFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKCkKK3sKKyAgICAvLyBodHRwczog
Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jYXBwbHktdGhlLXBlbmRpbmctcmVuZGVy
LXN0YXRlCisgICAgLy8gMS4gTGV0IGFjdGl2ZVN0YXRlIGJlIHNlc3Npb27igJlzIGFjdGl2ZSBy
ZW5kZXIgc3RhdGUuCisgICAgLy8gMi4gTGV0IG5ld1N0YXRlIGJlIHNlc3Npb27igJlzIHBlbmRp
bmcgcmVuZGVyIHN0YXRlLgorICAgIC8vIDMuIFNldCBzZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRl
ciBzdGF0ZSB0byBudWxsLgorICAgIGF1dG8gbmV3U3RhdGUgPSBtX3BlbmRpbmdSZW5kZXJTdGF0
ZTsKKyAgICBBU1NFUlQobmV3U3RhdGUpOworCisgICAgLy8gNC4gTGV0IG9sZEJhc2VMYXllciBi
ZSBhY3RpdmVTdGF0ZeKAmXMgYmFzZUxheWVyLgorICAgIC8vIDUuIExldCBvbGRMYXllcnMgYmUg
YWN0aXZlU3RhdGXigJlzIGxheWVycy4KKyAgICAvLyBGSVhNRTogdGhvc2UgYXJlIG9ubHkgbmVl
ZGVkIGZvciBzdGVwIDYuMi4KKworICAgIC8vIDYuMSBTZXQgYWN0aXZlU3RhdGUgdG8gbmV3U3Rh
dGUuCisgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZSA9IG5ld1N0YXRlOworCisgICAgLy8gNi4yIElm
IG9sZEJhc2VMYXllciBpcyBub3QgZXF1YWwgdG8gYWN0aXZlU3RhdGXigJlzIGJhc2VMYXllciwg
b2xkTGF5ZXJzIGlzIG5vdCBlcXVhbCB0byBhY3RpdmVTdGF0ZeKAmXMgbGF5ZXJzLCBvciB0aGUg
ZGltZW5zaW9ucyBvZiBhbnkgb2YgdGhlIGxheWVycyBoYXZlIGNoYW5nZWQsIHVwZGF0ZSB0aGUg
dmlld3BvcnRzIGZvciBzZXNzaW9uLgorICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKwor
ICAgIC8vIDYuMyBJZiBhY3RpdmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVsZE9mVmlldyBp
cyBsZXNzIHRoYW4gc2Vzc2lvbuKAmXMgbWluaW11bSBpbmxpbmUgZmllbGQgb2YgdmlldyBzZXQg
YWN0aXZlU3RhdGXigJlzIGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgdG8gc2Vzc2lvbuKAmXMg
bWluaW11bSBpbmxpbmUgZmllbGQgb2Ygdmlldy4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0
ZS0+aW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpIDwgbV9taW5pbXVtSW5saW5lRk9WKQorICAg
ICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRJbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KG1f
bWluaW11bUlubGluZUZPVik7CisKKyAgICAvLyA2LjQgSWYgYWN0aXZlU3RhdGXigJlzIGlubGlu
ZVZlcnRpY2FsRmllbGRPZlZpZXcgaXMgZ3JlYXRlciB0aGFuIHNlc3Npb27igJlzIG1heGltdW0g
aW5saW5lIGZpZWxkIG9mIHZpZXcgc2V0IGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNhbEZp
ZWxkT2ZWaWV3IHRvIHNlc3Npb27igJlzIG1heGltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcuCisg
ICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcoKSA+
IG1fbWF4aW11bUlubGluZUZPVikKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0SW5s
aW5lVmVydGljYWxGaWVsZE9mVmlldyhtX21heGltdW1JbmxpbmVGT1YpOworCisgICAgLy8gNi41
IElmIGFjdGl2ZVN0YXRl4oCZcyBkZXB0aE5lYXIgaXMgbGVzcyB0aGFuIHNlc3Npb27igJlzIG1p
bmltdW0gbmVhciBjbGlwIHBsYW5lIHNldCBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhOZWFyIHRvIHNl
c3Npb27igJlzIG1pbmltdW0gbmVhciBjbGlwIHBsYW5lLgorICAgIGlmIChtX2FjdGl2ZVJlbmRl
clN0YXRlLT5kZXB0aE5lYXIoKSA8IG1fbWluaW11bU5lYXJDbGlwUGxhbmUpCisgICAgICAgIG1f
YWN0aXZlUmVuZGVyU3RhdGUtPnNldERlcHRoTmVhcihtX21pbmltdW1OZWFyQ2xpcFBsYW5lKTsK
KworICAgIC8vIDYuNiBJZiBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhGYXIgaXMgZ3JlYXRlciB0aGFu
IHNlc3Npb27igJlzIG1heGltdW0gZmFyIGNsaXAgcGxhbmUgc2V0IGFjdGl2ZVN0YXRl4oCZcyBk
ZXB0aEZhciB0byBzZXNzaW9u4oCZcyBtYXhpbXVtIGZhciBjbGlwIHBsYW5lLgorICAgIGlmICht
X2FjdGl2ZVJlbmRlclN0YXRlLT5kZXB0aEZhcigpID4gbV9tYXhpbXVtRmFyQ2xpcFBsYW5lKQor
ICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXREZXB0aEZhcihtX21heGltdW1GYXJDbGlw
UGxhbmUpOworCisgICAgLy8gNi43IExldCBiYXNlTGF5ZXIgYmUgYWN0aXZlU3RhdGXigJlzIGJh
c2VMYXllci4KKyAgICBhdXRvIGJhc2VMYXllciA9IG1fYWN0aXZlUmVuZGVyU3RhdGUtPmJhc2VM
YXllcigpOworCisgICAgLy8gNi44IFNldCBhY3RpdmVTdGF0ZeKAmXMgY29tcG9zaXRpb24gZGlz
YWJsZWQgYW5kIG91dHB1dCBjYW52YXMgYXMgZm9sbG93czoKKyAgICBtX2FjdGl2ZVJlbmRlclN0
YXRlLT5zZXRDb21wb3NpdGlvbkRpc2FibGVkKHRydWUpOworICAgIGlmIChtX21vZGUgPT0gWFJT
ZXNzaW9uTW9kZTo6SW5saW5lICYmIGlzPFdlYlhSV2ViR0xMYXllcj4oYmFzZUxheWVyKSAmJiBi
YXNlTGF5ZXItPmNvbXBvc2l0aW9uRGlzYWJsZWQoKSkgeworICAgICAgICBtX2FjdGl2ZVJlbmRl
clN0YXRlLT5zZXRDb21wb3NpdGlvbkRpc2FibGVkKHRydWUpOworICAgICAgICBtX2FjdGl2ZVJl
bmRlclN0YXRlLT5zZXRPdXRwdXRDYW52YXMoYmFzZUxheWVyLT5jYW52YXMoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0Q29tcG9zaXRpb25EaXNhYmxl
ZChmYWxzZSk7CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldE91dHB1dENhbnZhcyhu
dWxscHRyKTsKKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHIvI3Nob3VsZC1iZS1yZW5kZXJlZAorYm9vbCBXZWJYUlNlc3Npb246OmZyYW1lU2hvdWxk
QmVSZW5kZXJlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2FjdGl2ZVJlbmRlclN0YXRlLT5iYXNl
TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZGUgPT0gWFJTZXNz
aW9uTW9kZTo6SW5saW5lICYmICFtX2FjdGl2ZVJlbmRlclN0YXRlLT5vdXRwdXRDYW52YXMoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlhS
U2Vzc2lvbjo6cmVxdWVzdEZyYW1lKCkKK3sKKyAgICBtX2RldmljZS0+cmVxdWVzdEZyYW1lKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiBmcmFtZURhdGEpIHsK
KyAgICAgICAgb25GcmFtZShXVEZNb3ZlKGZyYW1lRGF0YSkpOworICAgIH0pOworfQorCit2b2lk
IFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZy
YW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1fZW5k
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFF1ZXVlIGEgdGFzayB0byBwZXJmb3JtIHRo
ZSBmb2xsb3dpbmcgc3RlcHMuCisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIGZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRh
KV0oKSB7CisgICAgICAgIGlmIChtX2VuZGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAvLyAgMS5MZXQgbm93IGJlIHRoZSBjdXJyZW50IGhpZ2ggcmVzb2x1dGlvbiB0aW1lLgorICAg
ICAgICBhdXRvIG5vdyA9IChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9yaWdpbikubWls
bGlzZWNvbmRzKCk7CisKKyAgICAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRnJhbWUpOworICAgICAg
ICAvLyAgMi5MZXQgZnJhbWUgYmUgc2Vzc2lvbuKAmXMgYW5pbWF0aW9uIGZyYW1lLgorICAgICAg
ICAvLyAgMy5TZXQgZnJhbWXigJlzIHRpbWUgdG8gZnJhbWVUaW1lLgorICAgICAgICBtX2FuaW1h
dGlvbkZyYW1lLT5zZXRUaW1lKHN0YXRpY19jYXN0PERPTUhpZ2hSZXNUaW1lU3RhbXA+KGZyYW1l
RGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSkpOworCisgICAgICAgIC8vIDQuIEZvciBlYWNoIHZp
ZXcgaW4gbGlzdCBvZiB2aWV3cywgc2V0IHZpZXfigJlzIHZpZXdwb3J0IG1vZGlmaWFibGUgZmxh
ZyB0byB0cnVlLgorICAgICAgICAvLyA1LiBJZiB0aGUgYWN0aXZlIGZsYWcgb2YgYW55IHZpZXcg
aW4gdGhlIGxpc3Qgb2Ygdmlld3MgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgWFIgYW5pbWF0
aW9uIGZyYW1lLCB1cGRhdGUgdGhlIHZpZXdwb3J0cy4KKyAgICAgICAgLy8gRklYTUU6IGltcGxl
bWVudC4KKworICAgICAgICAvLyBGSVhNRTogSSBtb3ZlZCBzdGVwIDcgYmVmb3JlIDYgYmVjYXVz
ZSBvZiBodHRwczovL2dpdGh1Yi5jb20vaW1tZXJzaXZlLXdlYi93ZWJ4ci9pc3N1ZXMvMTE2NAor
ICAgICAgICAvLyA3LklmIHNlc3Npb27igJlzIHBlbmRpbmcgcmVuZGVyIHN0YXRlIGlzIG5vdCBu
dWxsLCBhcHBseSB0aGUgcGVuZGluZyByZW5kZXIgc3RhdGUuCisgICAgICAgIGlmIChtX3BlbmRp
bmdSZW5kZXJTdGF0ZSkKKyAgICAgICAgICAgIGFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKCk7CisK
KyAgICAgICAgLy8gNi4gSWYgdGhlIGZyYW1lIHNob3VsZCBiZSByZW5kZXJlZCBmb3Igc2Vzc2lv
bjoKKyAgICAgICAgaWYgKGZyYW1lU2hvdWxkQmVSZW5kZXJlZCgpKSB7CisgICAgICAgICAgICAv
LyA2LjEuU2V0IHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9u
IGZyYW1lIGNhbGxiYWNrcyB0byBiZSBzZXNzaW9u4oCZcyBsaXN0IG9mIGFuaW1hdGlvbiBmcmFt
ZSBjYWxsYmFja3MuCisgICAgICAgICAgICAvLyA2LjIuU2V0IHNlc3Npb27igJlzIGxpc3Qgb2Yg
YW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcyB0byB0aGUgZW1wdHkgbGlzdC4KKyAgICAgICAgICAg
IG1fcnVubmluZ0NhbGxiYWNrcy5zd2FwKG1fY2FsbGJhY2tzKTsKKworICAgICAgICAgICAgLy8g
Ni4zLlNldCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gdG8gdHJ1ZS4KKyAgICAgICAgICAgIG1f
YW5pbWF0aW9uRnJhbWUtPnNldEFjdGl2ZSh0cnVlKTsKKworICAgICAgICAgICAgLy8gNi40LkFw
cGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZyYW1lLgorICAgICAgICAgICAgLy8gRklYTUU6IGltcGxl
bWVudC4KKworICAgICAgICAgICAgLy8gNi41LkZvciBlYWNoIGVudHJ5IGluIHNlc3Npb27igJlz
IGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcywgaW4g
b3JkZXI6CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9ydW5uaW5nQ2FsbGJh
Y2tzKSB7CisgICAgICAgICAgICAgICAgLy8gIDYuNi5JZiB0aGUgZW50cnnigJlzIGNhbmNlbGxl
ZCBib29sZWFuIGlzIHRydWUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGVudHJ5LgorICAgICAgICAg
ICAgICAgIGlmIChjYWxsYmFjay0+aXNDYW5jZWxsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgLy8gIDYuNy5JbnZva2UgdGhlIFdlYiBJREwgY2Fs
bGJhY2sgZnVuY3Rpb24gZm9yIGVudHJ5LCBwYXNzaW5nIG5vdyBhbmQgZnJhbWUgYXMgdGhlIGFy
Z3VtZW50cworICAgICAgICAgICAgICAgIGNhbGxiYWNrLT5oYW5kbGVFdmVudChub3csICptX2Fu
aW1hdGlvbkZyYW1lKTsKKworICAgICAgICAgICAgICAgIC8vICA2LjguSWYgYW4gZXhjZXB0aW9u
IGlzIHRocm93biwgcmVwb3J0IHRoZSBleGNlcHRpb24uCisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAvLyA2LjkuU2V0IHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5p
bWF0aW9uIGZyYW1lIGNhbGxiYWNrcyB0byB0aGUgZW1wdHkgbGlzdC4KKyAgICAgICAgICAgIG1f
cnVubmluZ0NhbGxiYWNrcy5jbGVhcigpOworCisgICAgICAgICAgICAvLyA2LjEwLlNldCBmcmFt
ZeKAmXMgYWN0aXZlIGJvb2xlYW4gdG8gZmFsc2UuCisgICAgICAgICAgICAvLyBJZiB0aGUgc2Vz
c2lvbiBpcyBlbmRlZCwgbV9hbmltYXRpb25GcmFtZS0+c2V0QWN0aXZlIGZhbHNlIGlzIHNldCBp
biBzaHV0ZG93bigpLgorICAgICAgICAgICAgaWYgKG1fYW5pbWF0aW9uRnJhbWUpCisgICAgICAg
ICAgICAgICAgbV9hbmltYXRpb25GcmFtZS0+c2V0QWN0aXZlKGZhbHNlKTsKKworICAgICAgICAg
ICAgaWYgKCFtX2NhbGxiYWNrcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVxdWVzdEZy
YW1lKCk7CisgICAgICAgIH0KKworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaAppbmRleCA1NTU0MzBjOGMzZjczMTIzMWFhZjRmMGMzZmZiNTgyOWQ2
OTI5YjM2Li40MmJlODhjNjM3ZGIyNTEwZmQ3YjFlM2I1MTNkMDFlNjA3ZDkwZmEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViWFJJbnB1dFNvdXJjZUFycmF5
LmgiCiAjaW5jbHVkZSAiV2ViWFJSZW5kZXJTdGF0ZS5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2Uu
aCIKQEAgLTkxLDcgKzkxLDggQEAgcHVibGljOgogICAgIFhSU2Vzc2lvbk1vZGUgbW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogCiBwcml2YXRlOgotICAgIFdlYlhSU2Vzc2lvbihEb2N1
bWVudCYsIFdlYlhSU3lzdGVtJiwgWFJTZXNzaW9uTW9kZSwgUGxhdGZvcm1YUjo6RGV2aWNlJik7
CisgICAgZXhwbGljaXQgV2ViWFJTZXNzaW9uKERvY3VtZW50JiwgV2ViWFJTeXN0ZW0mLCBYUlNl
c3Npb25Nb2RlLCBQbGF0Zm9ybVhSOjpEZXZpY2UmKTsKKyAgICB2b2lkIGluaXRpYWxpemUoKTsK
IAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXZWJYUlNlc3Npb25FdmVudFRh
cmdldEludGVyZmFjZVR5cGU7IH0KQEAgLTEwOSwxMSArMTEwLDEzIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzaHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbSk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVNo
dXRkb3duKCk7CiAKLSAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNj
aGVkdWxlQW5pbWF0aW9uKCk7Ci0KICAgICBib29sIHJlZmVyZW5jZVNwYWNlSXNTdXBwb3J0ZWQo
WFJSZWZlcmVuY2VTcGFjZVR5cGUpIGNvbnN0OwogCisgICAgYm9vbCBmcmFtZVNob3VsZEJlUmVu
ZGVyZWQoKSBjb25zdDsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZSgpOworICAgIHZvaWQgb25GcmFt
ZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKTsKKyAgICB2b2lkIGFwcGx5UGVuZGlu
Z1JlbmRlclN0YXRlKCk7CisKICAgICBYUkVudmlyb25tZW50QmxlbmRNb2RlIG1fZW52aXJvbm1l
bnRCbGVuZE1vZGU7CiAgICAgWFJJbnRlcmFjdGlvbk1vZGUgbV9pbnRlcmFjdGlvbk1vZGU7CiAg
ICAgWFJWaXNpYmlsaXR5U3RhdGUgbV92aXNpYmlsaXR5U3RhdGU7CkBAIC0xMjYsMTMgKzEyOSwy
MCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8UGxhdGZvcm1YUjo6RGV2aWNlPiBtX2RldmljZTsK
ICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9hY3RpdmVSZW5kZXJTdGF0ZTsKICAgICBS
ZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9wZW5kaW5nUmVuZGVyU3RhdGU7CisgICAgTW9ub3Rv
bmljVGltZSBtX3RpbWVPcmlnaW47CiAKICAgICB1bnNpZ25lZCBtX25leHRDYWxsYmFja0lkIHsg
MSB9OwogICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFjaz4+IG1fY2FsbGJhY2tz
OwogICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFjaz4+IG1fcnVubmluZ0NhbGxi
YWNrczsKIAotICAgIFRpbWVyIG1fYW5pbWF0aW9uVGltZXI7Ci0gICAgTW9ub3RvbmljVGltZSBt
X2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcDsKKyAgICBSZWZQdHI8V2ViWFJGcmFtZT4gbV9h
bmltYXRpb25GcmFtZTsKKworICAgIGRvdWJsZSBtX21pbmltdW1JbmxpbmVGT1YgeyAwLjAgfTsK
KyAgICBkb3VibGUgbV9tYXhpbXVtSW5saW5lRk9WIHsgcGlGbG9hdCB9OworCisgICAgLy8gSW4g
bWV0ZXJzLgorICAgIGRvdWJsZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CisgICAg
ZG91YmxlIG1fbWF4aW11bUZhckNsaXBQbGFuZSB7IDEwMDAuMCB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVt
LmNwcAppbmRleCAxMmE5ZjIxZTcyNGExMmRkYzE1ZGE5YTg0YzFiODJlYjRkMTdkNGQ4Li4yODhj
NmYwZDViMmIwMDI5M2U3MWI4NjM1Y2VkNzcyZmJmMjIyZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkpTV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSAiSlNYUlJlZmVyZW5jZVNwYWNlVHlwZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKyNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVDYWxsYmFjay5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CkBAIC00OSwxMSArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChXZWJYUlN5c3RlbSk7CiAKLVdlYlhSU3lzdGVtOjpEdW1teUlubGluZURl
dmljZTo6RHVtbXlJbmxpbmVEZXZpY2UoKQotewotICAgIHNldEVuYWJsZWRGZWF0dXJlcyhYUlNl
c3Npb25Nb2RlOjpJbmxpbmUsIHsgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlciB9KTsKLX0K
LQogUmVmPFdlYlhSU3lzdGVtPiBXZWJYUlN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViWFJTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwpAQCAtNjEsNiArNTcsNyBA
QCBSZWY8V2ViWFJTeXN0ZW0+IFdlYlhSU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udAogCiBXZWJYUlN5c3RlbTo6V2ViWFJTeXN0ZW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IEFjdGl2
ZURPTU9iamVjdCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAsIG1fZGVmYXVsdElubGlu
ZURldmljZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIG1faW5saW5lWFJEZXZpY2Ug
PSBtYWtlV2Vha1B0cihtX2RlZmF1bHRJbmxpbmVEZXZpY2UpOwogICAgIHN1c3BlbmRJZk5lZWRl
ZCgpOwpAQCAtNDc1LDYgKzQ3Miw0OSBAQCB2b2lkIFdlYlhSU3lzdGVtOjpzZXNzaW9uRW5kZWQo
V2ViWFJTZXNzaW9uJiBzZXNzaW9uKQogICAgIG1faW5saW5lU2Vzc2lvbnMucmVtb3ZlKHNlc3Np
b24pOwogfQogCitjbGFzcyBJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayBmaW5h
bDogcHVibGljIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRnVuY3Rpb248dm9p
ZCgpPiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5s
aW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
V1RGTW92ZShjYWxsYmFjaykpKTsKKyAgICB9Citwcml2YXRlOgorICAgIElubGluZVJlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKKyAgICAgICAgOiBSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaygmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIG1fY2Fs
bGJhY2soV1RGTW92ZShjYWxsYmFjaykpIAorICAgIHsKKyAgICB9CisKKyAgICBDYWxsYmFja1Jl
c3VsdDx2b2lkPiBoYW5kbGVFdmVudChkb3VibGUpIGZpbmFsCisgICAgeworICAgICAgICBtX2Nh
bGxiYWNrKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgRnVuY3Rpb248dm9p
ZCgpPiBtX2NhbGxiYWNrOworfTsKKworCitXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6
OkR1bW15SW5saW5lRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCit7CisgICAgc2V0RW5hYmxlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGU6OklubGlu
ZSwgeyBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyIH0pOworfQorCit2b2lkIFdlYlhSU3lz
dGVtOjpEdW1teUlubGluZURldmljZTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6
UmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBJbmxpbmUgWFIgc2Vz
c2lvbnMgcmVseSBvbiBkb2N1bWVudC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gcGVyZm9ybSB0
aGUgcmVuZGVyIGxvb3AuCisgICAgYXV0byBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Piht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gcmFmID0gSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJh
Y2s6OmNyZWF0ZSgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICB9KTsK
KworICAgIGRvY3VtZW50LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmFmKTsKK30KKworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKaW5kZXggYzc2MmQ0NmFjMGU5MDRhMzk4
M2QzOTdmNjg2NTYxZDRjMTY1YjM1NS4uYzMzY2Y3M2I4MTI0ZTY1MDM4MjE1MDlhMzgyMDk0Yjkz
MGVmYjU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaApA
QCAtMTA2LDExICsxMDYsMTYgQEAgcHJpdmF0ZToKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13
ZWIuZ2l0aHViLmlvL3dlYnhyLyNkZWZhdWx0LWlubGluZS14ci1kZXZpY2UKICAgICBjbGFzcyBE
dW1teUlubGluZURldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRHVtbXlJbmxpbmVEZXZpY2UoKTsKKyAgICAgICAgRHVtbXlJbmxp
bmVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGUpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxh
dGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH07CisKKyAgICAgICAgdm9pZCBy
ZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBm
aW5hbDsKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAgICAgfTsKICAgICBEdW1teUlubGluZURldmljZSBtX2RlZmF1bHRJbmxpbmVE
ZXZpY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJX
ZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExh
eWVyLmNwcAppbmRleCA4NmRkMTFiMDAxNDNiZjgwZWE4MWFlMmFkZDhkZTg0ZGMwMmQwMzNmLi5j
YTU4Nzg4NjFkMjRjN2VmNWQyZmNlYjUyYTc3ZGZhYjdlNjA4ZDFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC0yOCw3ICsyOCw5
IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNp
bmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaWYgRU5BQkxFKFdFQkdMMikKQEAgLTE5OCw2ICsyMDAsMjAgQEAgZG91YmxlIFdl
YlhSV2ViR0xMYXllcjo6Z2V0TmF0aXZlRnJhbWVidWZmZXJTY2FsZUZhY3Rvcihjb25zdCBXZWJY
UlNlc3Npb24mIHNlc3MKICAgICByZXR1cm4gKG5hdGl2ZVNpemUgLyByZWNvbW1lbmRlZFNpemUp
LndpZHRoKCk7CiB9CiAKK0hUTUxDYW52YXNFbGVtZW50KiBXZWJYUldlYkdMTGF5ZXI6OmNhbnZh
cygpIGNvbnN0Cit7CisgICAgSFRNTENhbnZhc0VsZW1lbnQqIGMgPSBXVEY6OnN3aXRjaE9uKG1f
Y29udGV4dCwgW10oY29uc3QgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+JiBiYXNl
Q29udGV4dCkgeworICAgICAgICBhdXRvIGNhbnZhcyA9IGJhc2VDb250ZXh0LT5jYW52YXMoKTsK
KyAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oY2FudmFzLCBbXShjb25zdCBSZWZQdHI8SFRN
TENhbnZhc0VsZW1lbnQ+JiBjYW52YXMpIHsKKyAgICAgICAgICAgIHJldHVybiBjYW52YXMuZ2V0
KCk7CisgICAgICAgIH0sIFtdKGNvbnN0IFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+KSB7CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoImJhc2VMYXllciBvZiBhIFdlYlhSV2ViR0xMYXll
ciBtdXN0IGJlIGFuIEhUTUxDYW52YXNFbGVtZW50Iik7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgcmV0dXJuIGM7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCmluZGV4IDMxNzU1ZDg0OTZhNmE3
MDJlMjMzMjljZmJmMzI5YjljYzRiOGE5ZGYuLjNmNzU4N2RlODlkYTZlMjMxYzk0M2M0ZjkwNWZj
MWNmMTgwNTkyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJXZWJHTExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldl
YkdMTGF5ZXIuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIEhUTUxDYW52YXNFbGVtZW50OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFdlYkdMRnJhbWVi
dWZmZXI7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7CkBAIC03NCw2ICs3NSwxMSBAQCBw
dWJsaWM6CiAKICAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSB7IHJldHVybiBtX3Nl
c3Npb247IH0KIAorICAgIGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNDb21wb3NpdGlvbkRpc2FibGVkOyB9CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbkRpc2Fi
bGVkKGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCkgeyBtX2lzQ29tcG9zaXRpb25EaXNhYmxlZCA9
IGNvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KKworICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJYUldlYkdMTGF5ZXIoUmVmPFdlYlhSU2Vzc2lv
bj4mJiwgV2ViWFJSZW5kZXJpbmdDb250ZXh0JiYsIGNvbnN0IFhSV2ViR0xMYXllckluaXQmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IGI5ZWY0NWMwYzY5
NzE0YWU4M2M3MDQ0NTRkOTU0YmQ1MWVhNDc2NmIuLjBkMjAxODcyZTZjOWViZjJhYmEwNTQ0OTQz
OWM2ZThmNWVlZGNjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1Bs
YXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgK
QEAgLTE4LDYgKzE4LDcgQEAKICAqLwogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFBv
aW50M0QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNzUsNiArNzYsMjggQEAgcHVibGljOgog
ICAgIC8vIElmIHRoaXMgbWV0aG9kIHJldHVybnMgdHJ1ZSwgdGhhdCBtZWFucyB0aGUgZGV2aWNl
IHdpbGwgbm90aWZ5IFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50CiAgICAgLy8gd2hlbiB0aGUg
cGxhdGZvcm0gaGFzIGNvbXBsZXRlZCBhbGwgc3RlcHMgdG8gc2h1dCBkb3duIHRoZSBYUiBzZXNz
aW9uLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVS
ZWZlcmVuY2VTcGFjZShSZWZlcmVuY2VTcGFjZVR5cGUpID0gMDsKKworICAgIHN0cnVjdCBGcmFt
ZURhdGEgeworICAgICAgICBsb25nIHByZWRpY3RlZERpc3BsYXlUaW1lOworICAgICAgICBzdHJ1
Y3QgVmlld0RhdGEgeworICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBXZWJD
b3JlOjpGbG9hdFBvaW50M0QgcG9zaXRpb247CisgICAgICAgICAgICAgICAgc3RydWN0IHsKKyAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgeDsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgeTsK
KyAgICAgICAgICAgICAgICAgICAgZmxvYXQgejsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQg
dzsKKyAgICAgICAgICAgICAgICB9IG9yaWVudGF0aW9uOworICAgICAgICAgICAgfSBwb3NlOwor
ICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBmbG9hdCByVXAsIHJEb3duLCBy
TGVmdCwgclJpZ2h0OworICAgICAgICAgICAgfSBmb3Y7CisgICAgICAgIH07CisgICAgICAgIFZl
Y3RvcjxWaWV3RGF0YT4gdmlld1Bvc2VzOworICAgIH07CisgICAgdXNpbmcgUmVxdWVzdEZyYW1l
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEZyYW1lRGF0YSYmKT47CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9IDA7CiAKIHByb3RlY3RlZDoK
ICAgICBEZXZpY2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggZmU4NjVlNjcxZDcwNjg2
ZGU3OTFmMTQwMGU2Y2YzZTJjODY5ZWMyMi4uMGI0YTgzYTM5ZTI3NTk2YjQwZjAyZTYwNDg2NGQw
Zjc2ZjhmY2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L1BsYXRmb3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcApAQCAtMjYwLDExICsyNjAsNiBAQCBPcGVuWFJEZXZp
Y2U6Ok9wZW5YUkRldmljZShYclN5c3RlbUlkIGlkLCBYckluc3RhbmNlIGluc3RhbmNlLCBXb3Jr
UXVldWUmIHF1ZXVlLAogICAgIH0pOwogfQogCi1PcGVuWFJEZXZpY2U6On5PcGVuWFJEZXZpY2Uo
KQotewotICAgIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLX0KLQogRGV2aWNlOjpM
aXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjplbnVtZXJhdGVSZWZlcmVuY2VTcGFj
ZXMoWHJTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogewogICAgIHVpbnQzMl90IHJlZmVyZW5jZVNw
YWNlc0NvdW50OwpAQCAtMzk1LDYgKzM5MCwxNiBAQCBYclZpZXdDb25maWd1cmF0aW9uVHlwZSB0
b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKFNlc3Npb25Nb2RlIG1vZGUpCiAgICAgcmV0dXJuIFhS
X1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTzsKIH0KIAorc3RhdGljIGJvb2wg
c2Vzc2lvbklzQWN0aXZlKFhyU2Vzc2lvblN0YXRlIHN0YXRlKQoreworICAgIHJldHVybiBzdGF0
ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1ZJU0lCTEUgfHwgc3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFU
RV9GT0NVU0VEOworfQorCitzdGF0aWMgYm9vbCBzZXNzaW9uSXNSdW5uaW5nKFhyU2Vzc2lvblN0
YXRlIHN0YXRlKQoreworICAgIHJldHVybiBzdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1NZTkNI
Uk9OSVpFRCB8fCBzZXNzaW9uSXNBY3RpdmUoc3RhdGUpOworfQorCiB2b2lkIE9wZW5YUkRldmlj
ZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiB7CiAg
ICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgbW9kZV0oKSB7CkBAIC00MTQsMTcgKzQxOSwxODQg
QEAgdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNz
aW9uTW9kZSBtb2RlKQogCiB2b2lkIE9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKCkKIHsKLSAg
ICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzXSgpIHsKLSAgICAgICAgaWYgKG1fc2Vzc2lvbiA9PSBY
Ul9OVUxMX0hBTkRMRSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6
OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOworICAgIGlmIChtX3Nlc3Npb24gIT0g
WFJfTlVMTF9IQU5ETEUpIHsKICAgICAgICAgeHJEZXN0cm95U2Vzc2lvbihtX3Nlc3Npb24pOwog
ICAgICAgICBtX3Nlc3Npb24gPSBYUl9OVUxMX0hBTkRMRTsKLSAgICB9KTsKKyAgICB9CisgICAg
bV9zZXNzaW9uU3RhdGUgPSBYUl9TRVNTSU9OX1NUQVRFX1VOS05PV047Cit9CisKK3ZvaWQgT3Bl
blhSRGV2aWNlOjpoYW5kbGVTZXNzaW9uU3RhdGVDaGFuZ2UoKQoreworICAgIEFTU0VSVCgmUnVu
TG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgaWYgKG1fc2Vzc2lv
blN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkcpIHsKKyAgICAgICAgLy8gVGhlIGFw
cGxpY2F0aW9uIHNob3VsZCBleGl0IHRoZSByZW5kZXIgbG9vcCBhbmQgY2FsbCB4ckVuZFNlc3Np
b24KKyAgICAgICAgZW5kU2Vzc2lvbigpOworICAgIH0gZWxzZSBpZiAobV9zZXNzaW9uU3RhdGUg
PT0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSkgeworICAgICAgICAvLyBUaGUgYXBwbGljYXRpb24g
aXMgcmVhZHkgdG8gY2FsbCB4ckJlZ2luU2Vzc2lvbi4KKyAgICAgICAgYmVnaW5TZXNzaW9uKCk7
CisgICAgfQogfQogCiB2b2lkIE9wZW5YUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRl
cmluZygpCiB7CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpc10oKSB7CisgICAgICAgIGlmICgh
c2Vzc2lvbklzUnVubmluZyhtX3Nlc3Npb25TdGF0ZSkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgLy8geHJSZXF1ZXN0RXhpdFNlc3Npb24oKSB3aWxsIHRyYW5zaXRpb24gdGhlIHNl
c3Npb24gdG8gU1RPUFBFRCBzdGF0ZSBhbmQgdGhlbiB0aGUgcmVxdWVzdEZyYW1lKCkgbWV0aG9k
IHdpbGwgY2FsbCByZXNldC4KKyAgICAgICAgLy8gSWYgdGhlIHNlc3Npb24gd2FzIG5vdCBydW5u
aW5nIHdlIGhhdmUgdG8gcmVzZXQgdGhlIHNlc3Npb24gb3Vyc2VsdmVzLgorICAgICAgICBpZiAo
WFJfRkFJTEVEKHhyUmVxdWVzdEV4aXRTZXNzaW9uKG1fc2Vzc2lvbikpKSB7CisgICAgICAgICAg
ICByZXNldFNlc3Npb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIE9wZW5YUiBuZWVkcyB0byB3YWl0IGZvciB0aGUgWFJfU0VTU0lPTl9TVEFURV9TVE9Q
UElORyBzdGF0ZSB0byBwcm9wZXJseSBlbmQgdGhlIHNlc3Npb24uCisgICAgICAgIHdhaXRVbnRp
bFN0b3BwaW5nKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjp3YWl0VW50aWxT
dG9wcGluZygpCit7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUu
cnVuTG9vcCgpKTsKKyAgICBwb2xsRXZlbnRzKCk7CisgICAgaWYgKG1fc2Vzc2lvblN0YXRlID49
IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3F1ZXVl
LmRpc3BhdGNoKFt0aGlzXSgpIHsKKyAgICAgICAgd2FpdFVudGlsU3RvcHBpbmcoKTsKKyAgICB9
KTsKK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OnBvbGxFdmVudHMoKQoreworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8gcnVudGltZUV2ZW50ID0gY3JlYXRlU3RydWN0dXJl
PFhyRXZlbnREYXRhQnVmZmVyLCBYUl9UWVBFX0VWRU5UX0RBVEFfQlVGRkVSPigpOworICAgIHdo
aWxlICh4clBvbGxFdmVudChtX2luc3RhbmNlLCAmcnVudGltZUV2ZW50KSA9PSBYUl9TVUNDRVNT
KSB7CisgICAgICAgIHN3aXRjaCAocnVudGltZUV2ZW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBY
Ul9UWVBFX0VWRU5UX0RBVEFfU0VTU0lPTl9TVEFURV9DSEFOR0VEOiB7CisgICAgICAgICAgICBh
dXRvKiBldmVudCA9IChYckV2ZW50RGF0YVNlc3Npb25TdGF0ZUNoYW5nZWQqKSZydW50aW1lRXZl
bnQ7CisgICAgICAgICAgICBtX3Nlc3Npb25TdGF0ZSA9IGV2ZW50LT5zdGF0ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX0VW
RU5UU19MT1NUOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9JTlNUQU5DRV9MT1NT
X1BFTkRJTkc6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1JFRkVSRU5DRV9TUEFD
RV9DSEFOR0VfUEVORElORzoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfSU5URVJB
Q1RJT05fUFJPRklMRV9DSEFOR0VEOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9N
QUlOX1NFU1NJT05fVklTSUJJTElUWV9DSEFOR0VEX0VYVFg6CisgICAgICAgIGNhc2UgWFJfVFlQ
RV9FVkVOVF9EQVRBX1ZJU0lCSUxJVFlfTUFTS19DSEFOR0VEX0tIUjoKKyAgICAgICAgY2FzZSBY
Ul9UWVBFX0VWRU5UX0RBVEFfUEVSRl9TRVRUSU5HU19FWFQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgiVW5oYW5k
bGVkIGV2ZW50IHR5cGUgJWRcbiIsIHJ1bnRpbWVFdmVudC50eXBlKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworWHJSZXN1bHQgT3BlblhSRGV2aWNlOjpiZWdpblNlc3Npb24oKQoreworICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3Nlc3Npb25TdGF0ZSA9PSBYUl9T
RVNTSU9OX1NUQVRFX1JFQURZKTsKKworICAgIGF1dG8gc2Vzc2lvbkJlZ2luSW5mbyA9IGNyZWF0
ZVN0cnVjdHVyZTxYclNlc3Npb25CZWdpbkluZm8sIFhSX1RZUEVfU0VTU0lPTl9CRUdJTl9JTkZP
PigpOworICAgIHNlc3Npb25CZWdpbkluZm8ucHJpbWFyeVZpZXdDb25maWd1cmF0aW9uVHlwZSA9
IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfU1RFUkVPOworICAgIGF1dG8gcmVz
dWx0ID0geHJCZWdpblNlc3Npb24obV9zZXNzaW9uLCAmc2Vzc2lvbkJlZ2luSW5mbyk7CisjaWYg
IUxPR19ESVNBQkxFRAorICAgIGlmIChYUl9GQUlMRUQocmVzdWx0KSkKKyAgICAgICAgTE9HKFhS
LCAiJXMgJXM6ICVzXG4iLCBfX2Z1bmNfXywgInhyQmVnaW5TZXNzaW9uIiwgcmVzdWx0VG9TdHJp
bmcocmVzdWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjplbmRTZXNzaW9uKCkKK3sKKyAgICBB
U1NFUlQobV9zZXNzaW9uICE9IFhSX05VTExfSEFORExFKTsKKyAgICB4ckVuZFNlc3Npb24obV9z
ZXNzaW9uKTsKICAgICByZXNldFNlc3Npb24oKTsKKyAgICBpZiAoIW1fdHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5vdGlmeSBkaWQgZW5kIGV2
ZW50CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldKCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBpZiAobV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCkKKyAgICAgICAgICAgIG1f
dHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQtPnNlc3Npb25EaWRFbmQoKTsKKyAgICB9KTsKK30K
KworCitEZXZpY2U6OkZyYW1lRGF0YTo6Vmlld0RhdGEgeHJWaWV3VG9WaWV3RGF0YShYclZpZXcg
dmlldykKK3sKKyAgICBEZXZpY2U6OkZyYW1lRGF0YTo6Vmlld0RhdGEgZGF0YTsKKyAgICBkYXRh
LmZvdiA9IHsgdmlldy5mb3YuYW5nbGVVcCwgdmlldy5mb3YuYW5nbGVEb3duLCB2aWV3LmZvdi5h
bmdsZUxlZnQsIHZpZXcuZm92LmFuZ2xlUmlnaHQgfTsKKyAgICBkYXRhLnBvc2Uub3JpZW50YXRp
b24gPSB7IHZpZXcucG9zZS5vcmllbnRhdGlvbi54LCB2aWV3LnBvc2Uub3JpZW50YXRpb24ueSwg
dmlldy5wb3NlLm9yaWVudGF0aW9uLnosIHZpZXcucG9zZS5vcmllbnRhdGlvbi53IH07CisgICAg
ZGF0YS5wb3NlLnBvc2l0aW9uID0geyB2aWV3LnBvc2UucG9zaXRpb24ueCwgdmlldy5wb3NlLnBv
c2l0aW9uLnksIHZpZXcucG9zZS5wb3NpdGlvbi56IH07CisgICAgcmV0dXJuIGRhdGE7Cit9CisK
K3ZvaWQgT3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBwb2xsRXZlbnRzKCk7CisgICAgICAg
IGlmICghc2Vzc2lvbklzUnVubmluZyhtX3Nlc3Npb25TdGF0ZSkpIHsKKyAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgLy8gRGV2aWNlIG5vdCByZWFkeSBvciBzdG9wcGluZy4gUmVwb3J0
IGZyYW1lRGF0YSB3aXRoIGludmFsaWQgdHJhY2tpbmcuCisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soeyB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byBmcmFtZVN0YXRlID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVTdGF0
ZSwgWFJfVFlQRV9GUkFNRV9TVEFURT4oKTsKKyAgICAgICAgYXV0byBmcmFtZVdhaXRJbmZvID0g
Y3JlYXRlU3RydWN0dXJlPFhyRnJhbWVXYWl0SW5mbywgWFJfVFlQRV9GUkFNRV9XQUlUX0lORk8+
KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0geHJXYWl0RnJhbWUobV9zZXNzaW9uLCAmZnJhbWVX
YWl0SW5mbywgJmZyYW1lU3RhdGUpOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwg
InhyV2FpdEZyYW1lIiwgbV9pbnN0YW5jZSk7CisgICAgICAgIFhyVGltZSBwcmVkaWN0ZWRUaW1l
ID0gZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZTsKKworICAgICAgICBhdXRvIGZyYW1l
QmVnaW5JbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVCZWdpbkluZm8sIFhSX1RZUEVfRlJB
TUVfQkVHSU5fSU5GTz4oKTsKKyAgICAgICAgcmVzdWx0ID0geHJCZWdpbkZyYW1lKG1fc2Vzc2lv
biwgJmZyYW1lQmVnaW5JbmZvKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4
ckJlZ2luRnJhbWUiLCBtX2luc3RhbmNlKTsKKworICAgICAgICBEZXZpY2U6OkZyYW1lRGF0YSBm
cmFtZURhdGE7CisgICAgICAgIGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSA9IGZyYW1l
U3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7CisKKyAgICAgICAgaWYgKHNlc3Npb25Jc0FjdGl2
ZShtX3Nlc3Npb25TdGF0ZSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb25W
aWV3cy5jb250YWlucyhtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpKTsKKyAgICAgICAg
ICAgIGNvbnN0IGF1dG8mIGNvbmZpZ3VyYXRpb25WaWV3ID0gbV9jb25maWd1cmF0aW9uVmlld3Mu
Z2V0KG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSk7CisKKyAgICAgICAgICAgIGF1dG8g
dmlld0xvY2F0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJWaWV3TG9jYXRlSW5mbywgWFJfVFlQ
RV9WSUVXX0xPQ0FURV9JTkZPPigpOworICAgICAgICAgICAgdmlld0xvY2F0ZUluZm8uZGlzcGxh
eVRpbWUgPSBwcmVkaWN0ZWRUaW1lOworICAgICAgICAgICAgLy8gRklYTUU6IHVzZSB0aGUgY3Vy
cmVudCByZWZlcmVuY2Ugc3BhY2UuCisgICAgICAgICAgICAvLyB2aWV3TG9jYXRlSW5mby5zcGFj
ZSA9IG1fbG9jYWxTcGFjZTsKKworICAgICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50ID0gY29u
ZmlndXJhdGlvblZpZXcuc2l6ZSgpOworICAgICAgICAgICAgVmVjdG9yPFhyVmlldz4gdmlld3Mo
dmlld0NvdW50LCBbXSB7CisgICAgICAgICAgICAgICAgWHJWaWV3IG9iamVjdDsKKyAgICAgICAg
ICAgICAgICBzdGQ6Om1lbXNldCgmb2JqZWN0LCAwLCBzaXplb2YoWHJWaWV3KSk7CisgICAgICAg
ICAgICAgICAgb2JqZWN0LnR5cGUgPSBYUl9UWVBFX1ZJRVc7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0oKSk7CisKKyAgICAgICAgICAgIGF1dG8gdmlld1N0
YXRlID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld1N0YXRlLCBYUl9UWVBFX1ZJRVdfU1RBVEU+KCk7
CisgICAgICAgICAgICB1aW50MzJfdCB2aWV3Q291bnRPdXRwdXQ7CisgICAgICAgICAgICByZXN1
bHQgPSB4ckxvY2F0ZVZpZXdzKG1fc2Vzc2lvbiwgJnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0YXRl
LCB2aWV3Q291bnQsICZ2aWV3Q291bnRPdXRwdXQsIHZpZXdzLmRhdGEoKSk7CisgICAgICAgICAg
ICBpZiAoIVhSX0ZBSUxFRChyZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB2
aWV3IDogdmlld3MpCisgICAgICAgICAgICAgICAgICAgIGZyYW1lRGF0YS52aWV3UG9zZXMuYXBw
ZW5kKHhyVmlld1RvVmlld0RhdGEodmlldykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnJhbWVEYXRhID0gV1RGTW92ZShmcmFtZURhdGEp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShmcmFtZURhdGEpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0
byBmcmFtZUVuZEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZUVuZEluZm8sIFhSX1RZUEVf
RlJBTUVfRU5EX0lORk8+KCk7CisgICAgICAgIGZyYW1lRW5kSW5mby5kaXNwbGF5VGltZSA9IHBy
ZWRpY3RlZFRpbWU7CisgICAgICAgIGZyYW1lRW5kSW5mby5lbnZpcm9ubWVudEJsZW5kTW9kZSA9
IFhSX0VOVklST05NRU5UX0JMRU5EX01PREVfT1BBUVVFOworICAgICAgICBmcmFtZUVuZEluZm8u
bGF5ZXJDb3VudCA9IDA7CisgICAgICAgIHJlc3VsdCA9IHhyRW5kRnJhbWUobV9zZXNzaW9uLCAm
ZnJhbWVFbmRJbmZvKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVuZEZy
YW1lIiwgbV9pbnN0YW5jZSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBsYXRmb3Jt
WFIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9y
bVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1Y
Uk9wZW5YUi5oCmluZGV4IGFhMmY3ODBlZjkxMjk2MjBmNDQxMmRiNDlhMGU4YTA0MmQ1OGI1Mjku
LjViZWJlNjk2NjkzMjdkYjJjODE1YjU1NmFlZGQxY2E5OWI0NmUxNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaApAQCAt
NDQsNyArNDQsNiBAQCBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7CiBjbGFzcyBPcGVuWFJEZXZpY2Ug
ZmluYWwgOiBwdWJsaWMgRGV2aWNlIHsKIHB1YmxpYzoKICAgICBPcGVuWFJEZXZpY2UoWHJTeXN0
ZW1JZCwgWHJJbnN0YW5jZSwgV29ya1F1ZXVlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB+T3BlblhSRGV2aWNlKCk7CiAgICAgWHJTeXN0ZW1JZCB4clN5c3RlbUlkKCkgY29u
c3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogCiBwcml2YXRlOgpAQCAtNTIsMTMgKzUxLDIyIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0Q29uZmlndXJhdGlvblZpZXdzKCk7CiAKICAgICBM
aXN0T2ZFbmFibGVkRmVhdHVyZXMgZW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiYp
IGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFJlZmVyZW5jZVNwYWNl
VHlwZSkgZmluYWwgeyB9OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29s
dXRpb24oU2Vzc2lvbk1vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdB
bmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpIGZpbmFsOwogICAgIHZvaWQgc2h1dERvd25UcmFja2lu
Z0FuZFJlbmRlcmluZygpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25O
b3RpZmljYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCB3YWl0
VW50aWxTdG9wcGluZygpOwogCisgICAgdm9pZCBwb2xsRXZlbnRzKCk7CisgICAgWHJSZXN1bHQg
YmVnaW5TZXNzaW9uKCk7CisgICAgdm9pZCBlbmRTZXNzaW9uKCk7CiAgICAgdm9pZCByZXNldFNl
c3Npb24oKTsKKyAgICB2b2lkIGhhbmRsZVNlc3Npb25TdGF0ZUNoYW5nZSgpOworCisgICAgdm9p
ZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB1c2lu
ZyBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgPSBIYXNoTWFwPFhyVmlld0NvbmZpZ3Vy
YXRpb25UeXBlLCBYclZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllcywgSW50SGFzaDxYclZpZXdD
b25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8WHJWaWV3Q29uZmln
dXJhdGlvblR5cGU+PjsKICAgICBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgbV92aWV3
Q29uZmlndXJhdGlvblByb3BlcnRpZXM7CkBAIC02OCw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAg
WHJTeXN0ZW1JZCBtX3N5c3RlbUlkOwogICAgIFhySW5zdGFuY2UgbV9pbnN0YW5jZTsKICAgICBY
clNlc3Npb24gbV9zZXNzaW9uIHsgWFJfTlVMTF9IQU5ETEUgfTsKKyAgICBYclNlc3Npb25TdGF0
ZSBtX3Nlc3Npb25TdGF0ZSB7IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTiB9OwogCiAgICAgV29y
a1F1ZXVlJiBtX3F1ZXVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmlj
ZS5jcHAKaW5kZXggYTQ3YzFlY2E3ZGVkY2VkYTUwNTBhZDk3YmM0N2Q4NTY1YmE1OTBlZi4uNTQw
MThkYTdlYmI1M2RkNTE5NDJkZTc2NjE0OTY3MmZmMWFjODQ1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtMzEsMTQgKzMxLDI4IEBACiAjaW5jbHVk
ZSAiRE9NUG9pbnRSZWFkT25seS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
CiAjaW5jbHVkZSAiV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0
ZXhwciBTZWNvbmRzIEZha2VYUkZyYW1lVGltZSA9IDE1X21zOworCiB2b2lkIEZha2VYUlZpZXc6
OnNldEZpZWxkT2ZWaWV3KEZha2VYUlZpZXdJbml0OjpGaWVsZE9mVmlld0luaXQgZm92KQogewog
ICAgIG1fZm92ID0gZm92OwogfQogCitTaW11bGF0ZWRYUkRldmljZTo6U2ltdWxhdGVkWFJEZXZp
Y2UoKQorICAgIDogbV9mcmFtZVRpbWVyKCp0aGlzLCAmU2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1l
VGltZXJGaXJlZCkKK3sKKyAgICBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9IHRydWU7
Cit9CisKK1NpbXVsYXRlZFhSRGV2aWNlOjp+U2ltdWxhdGVkWFJEZXZpY2UoKQoreworICAgIHN0
b3BUaW1lcigpOworfQorCiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzaW11bGF0ZVNodXRkb3du
Q29tcGxldGVkKCkKIHsKICAgICBpZiAobV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCkKQEAg
LTQ5LDYgKzYzLDI3IEBAIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdB
bmRSZW5kZXJpbmcoKQogewogICAgIGlmIChtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24p
CiAgICAgICAgIHNpbXVsYXRlU2h1dGRvd25Db21wbGV0ZWQoKTsKKyAgICBzdG9wVGltZXIoKTsK
K30KKwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c3RvcFRpbWVyKCkKK3sKKyAgICBpZiAobV9m
cmFtZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZnJhbWVUaW1lci5zdG9wKCk7Cit9CisK
K3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCgpCit7CisgICAgYXV0byBj
YWxsYmFja3MgPSBXVEZNb3ZlKG1fY2FsbGJhY2tzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNr
IDogY2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjayh7IH0pOworfQorCit2b2lkIFNpbXVsYXRl
ZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3sKKyAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworICAgIGlmICgh
bV9mcmFtZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZnJhbWVUaW1lci5zdGFydE9uZVNo
b3QoRmFrZVhSRnJhbWVUaW1lKTsKIH0KIAogV2ViRmFrZVhSRGV2aWNlOjpXZWJGYWtlWFJEZXZp
Y2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZh
a2VYUkRldmljZS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaApp
bmRleCA4NDdiYmNiMTc0NDg0NDhmMGVjN2U4Y2ViMWI2ZmQ2ZTlmYWM5NTg4Li4zOTFiZmMzNDdl
ZWY5YWFhZjE3YmQyYmE4YjZiYTQzNmYwMDA0NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmgKQEAgLTYzLDcgKzYzLDggQEAgcHJpdmF0ZToKIGNsYXNzIFNpbXVs
YXRlZFhSRGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2ltdWxhdGVkWFJEZXZpY2UoKSB7
IG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gdHJ1ZTsgfQorICAgIFNpbXVsYXRlZFhS
RGV2aWNlKCk7CisgICAgflNpbXVsYXRlZFhSRGV2aWNlKCk7CiAgICAgdm9pZCBzZXROYXRpdmVC
b3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+IGdlb21ldHJ5KSB7IG1fbmF0
aXZlQm91bmRzR2VvbWV0cnkgPSBnZW9tZXRyeTsgfQogICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2lu
KFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX3ZpZXdlck9yaWdpbiA9
IFdURk1vdmUob3JpZ2luKTsgfQogICAgIHZvaWQgc2V0Rmxvb3JPcmlnaW4oUmVmUHRyPFdlYlhS
UmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2luKSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdp
bik7IH0KQEAgLTc1LDEyICs3NiwyMCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVRy
YWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KICAg
ICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKICAgICBib29sIHN1
cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CisgICAgdm9pZCBpbml0aWFsaXplUmVm
ZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKworICAg
IHZvaWQgc3RvcFRpbWVyKCk7CisgICAgdm9pZCBmcmFtZVRpbWVyRmlyZWQoKTsKKwogICAgIE9w
dGlvbmFsPFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4+IG1fbmF0aXZlQm91bmRzR2VvbWV0cnk7
CiAgICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fdmlld2VyT3JpZ2luOwogICAgIFJl
ZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX2Zsb29yT3JpZ2luOwogICAgIGJvb2wgbV9lbXVs
YXRlZFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiBtX3Zp
ZXdzOwogICAgIGJvb2wgbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uIHsgZmFsc2UgfTsK
KyAgICBUaW1lciBtX2ZyYW1lVGltZXI7CisgICAgVmVjdG9yPFJlcXVlc3RGcmFtZUNhbGxiYWNr
PiBtX2NhbGxiYWNrczsKIH07CiAKIGNsYXNzIFdlYkZha2VYUkRldmljZSBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkZha2VYUkRldmljZT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5Yjg5OWUwMzBjM2RkNDUz
NTI0NDJjZjI2Y2NiNzA2MTA2NTAzYjQuLmVmYWU0ZDcyMjAxNGM2MmEwMjdjZThlZjMxNGVjMzlk
NjNiN2ZjMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMi0wMyAgU2VyZ2lvIFZpbGxh
ciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4gYW5kIEltYW5vbCBGZXJuYW5kZXogIDxpZmVy
bmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29tcGxldGUgWFJTZXNzaW9uOjpyZXF1ZXN0
QW5pbWF0aW9uRnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMjEtMDItMDIgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dMSUJdIEdhcmRlbmluZyBkZWJ1ZyB0aW1lb3V0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKaW5kZXggODIzOTYyYTU5NjYwNGY1ZTNmNjFlY2I3MjIyMWM3M2NhY2E5NzczMi4uYTc5ZTVj
NWFiNzEzMTEzMjFhNTZlZTc5MTNkNGIwMDdjNTQzYjQzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDMgIFNlcmdpbyBWaWxsYXIgU2Vu
aW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+IGFuZCBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRl
ekBpZ2FsaWEuY29tPgorCisgICAgICAgIENvbXBsZXRlIFhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1h
dGlvbkZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFbmFibGUgWFJTZXNzaW9uIFJBRiB0ZXN0cy4KKworICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1l
X3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTAyLTAzICBaaXJh
biBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBXUFQgdGVzdCBj
c3MvY3NzLWdyaWQvZ3JpZC1tb2RlbC9ncmlkLWJveC1zaXppbmctMDAxLmh0bWwgZmFpbHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjU4YTQyM2ZjNmIxOTgxMTI5MzViZmYyOTA3Mjc4ZmRhOTRmY2M1
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFhSRnJhbWUgZ2V0Vmll
d2VyUG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0IGZyYW1lIGZvciBpbW1lcnNpdmUKK1BBU1MgWFJG
cmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIG5vbi1pbW1l
cnNpdmUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAy
NzNiMjRjMzQ3MTAzNjBmNWNiNmIwZmI2ODlhZTdmMTg2YzRmMjVmLi4xN2EyZDVjYTdkODQyZjk0
MDBiNzhlZmRmN2Y4ZTU5MzgzYWU3YjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtNjM4LDYgKzYzOCw3IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgd2Vi
a2l0Lm9yZy9iLzIxNTYzNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
CiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lX2ludmFsaWRoYW5kbGUuaHR0cHMuaHRt
bCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwg
WyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2NhbGxiYWNrX2NhbGxz
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMuaHRtbCBb
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0UmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBh
c3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL2FyLW1vZHVsZS9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy5odG1sIFsgUGFzcyBdCiB3
ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
YXItbW9kdWxlL3hyRGV2aWNlX2lzU2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNpdmUtYXIuaHR0cHMu
aHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419267</attachid>
            <date>2021-02-04 04:19:10 -0800</date>
            <delta_ts>2021-02-08 05:46:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220979-20210204131909.patch</filename>
            <type>text/plain</type>
            <size>48081</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYxYTIwYzc1NmY3YThk
NTQ1M2YwNWFlZDExNWYzMTlmMjU3NmQ0NC4uNTYzZDViNDBjNDUyMjQzYTYxNGU4YmQ5YzBjNjRk
MWVkMTRjNTFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTAyLTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBsZW1lbnQgdGhlIHJlbmRlciBsb29w
IGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBYUiBzZXNzaW9ucy4KKyAgICAgICAgLSBJbXBsZW1l
bnQgV2ViWFIgcmVuZGVyIHN0YXRlIHVwZGF0ZXMuCisgICAgICAgIC0gQ3JlYXRlIHRoZSBGcmFt
ZURhdGEgc3RydWN0IHVzZWQgdG8gcXVlcnkgZnJhbWUgc3BlY2lmaWMgZGF0YSBmcm9tIFhSIGRl
dmljZXMuCisgICAgICAgIC0gVXNlIHdpbmRvdyBSQUYgZm9yIGlubGluZSBYUiBzZXNzaW9ucy4K
KyAgICAgICAgLSBJbXBsZW1lbnQgV2ViRmFrZVhSRGV2aWNlIHRlc3RpbmcgcmVuZGVyaW5nIGxv
b3AgdXNpbmcgYSB0aW1lci4KKyAgICAgICAgLSBJbXBsZW1lbnQgT3BlblhSIHNlc3Npb24gc3Rh
dGVzIGFuZCBzZXNzaW9uIHRyYWNraW5nLgorCisgICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIg
cGxhdGZvcm0gdGVzdHMuIAorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNw
cDogQWRkIG1fYWN0aXZlLCBtX3RpbWUgYW5kIG1fc2Vzc2lvbiBtZW1iZXJzCisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFt
ZTo6V2ViWFJGcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpzZXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSRnJhbWU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpp
c0FjdGl2ZSBjb25zdCk6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3Rh
dGUuaDogQWRkIG1fY29tcG9zaXRpb25EaXNhYmxlZCBtZW1iZXIgYW5kIG91dHB1dCBjYW52YXMg
c2V0dGVyCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlbmRlclN0YXRlOjpzZXRPdXRwdXRDYW52
YXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZW5kZXJTdGF0ZTo6Y29tcG9zaXRpb25EaXNh
YmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlbmRlclN0YXRlOjpzZXRDb21w
b3NpdGlvbkRpc2FibGVkKToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU2Vzc2lvbjo6aW5pdGlhbGl6ZSk6IHJlcXVpcmVkIHRvIGNyZWF0IHRoZSBYUkZyYW1l
IHdpdGggbWFrZVJlZih0aGlzKQorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpyZXF1
ZXN0UmVmZXJlbmNlU3BhY2UpOiBpbXBsZW1lbnQgcmVmZXJlbmNlIHNwYWNlIGNyZWF0aW9uCisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25GcmFtZSk6IGlt
cGxlbWVudCByZW5kZXIgbG9vcCBmb3IgaW1tZXJzaXZlIGFuZCBpbmxpbmUgc2Vzc2lvbnMKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6YXBwbHlQZW5kaW5nUmVuZGVyU3RhdGUpOiBp
bXBsZW1lbnQgV2ViWFIgcmVuZGVyIHN0YXRlIHVwZGF0ZXMKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSU2Vzc2lvbjo6ZnJhbWVTaG91bGRCZVJlbmRlcmVkIGNvbnN0KTogYWRkIGNoZWNrIGJhc2Vk
IG9uIHRoZSBzcGVjIAorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpyZXF1ZXN0RnJh
bWUpOiBpbXBsZW1lbnQgaGVscGVyIGZ1bmN0aW9uIHRvIGRpc3BhdGNoIGEgZnJhbWUgcmVxdWVz
dCB0byBYUiBkZXZpY2VzCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246Om9uRnJhbWUp
OiBwcm9jZXNzIHRoZSBYUiBmcmFtZSBhbmQgY2FsbCB0aGUgUkFGIGNhbGxiYWNrcworICAgICAg
ICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSU3lzdGVtLmNwcDogSW1wbGVtZW50IHJlbmRlciBsb29wIHVzaW5nIHdpbmRvdyBy
YWYgbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpXZWJYUlN5c3RlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OkR1bW15SW5s
aW5lRGV2aWNlKTogQWRkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6cmVxdWVzdEZyYW1lKTogQWRhcHQgdG8g
dGhlIG5ldyBpbnRlcmZhY2UKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OmNhbnZhcyBjb25zdCk6IEltcGxlbWVudCBjYW52
YXMgZ2V0dGVyCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6Y29tcG9zaXRpb25EaXNhYmxlZCBjb25z
dCk6IGFkZAorICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVyOjpzZXRDb21wb3NpdGlv
bkRpc2FibGVkKTogYWRkCisKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmg6IEFk
ZCBGcmFtZURhdGEgc3RydWN0CisKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZv
cm1YUk9wZW5YUi5jcHA6IEltcGxlbWVudCByZW5kZXIgbG9vcCB1c2luZyBPcGVuWFIgQVBJCisg
ICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlc2V0U2Vzc2lvbik6CisgICAgICAg
IChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcp
OgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpwb2xsRXZlbnRzKTogSW1wbGVt
ZW50IGV2ZW50IGxvb3AgdG8gcXVlcnkgbV9zZXNzaW9uU3RhdGUKKyAgICAgICAgKFBsYXRmb3Jt
WFI6OnNlc3Npb25Jc0FjdGl2ZSk6IGFkZAorICAgICAgICAoUGxhdGZvcm1YUjo6c2Vzc2lvbklz
UnVubmluZyk6IGFkZAorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpiZWdpblNl
c3Npb24pOgorICAgICAgICAoUGxhdGZvcm1YUjo6eHJWaWV3VG9WaWV3RGF0YSk6IGhlbHBlciBm
dW5jdGlvbiB0byBjb252ZXJ0IGRhdGEgZnJvbSBPcGVuWFIKKyAgICAgICAgKFBsYXRmb3JtWFI6
Ok9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKTogc3RhcnQgT3BlblhSIGZyYW1lLCBxdWVyeSBw
b3NlIGFuZCB2aWV3IGRhdGEgCisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6Ondh
aXRVbnRpbFN0b3BwaW5nKTogcHJvcGVybHkgd2FpdCBmb3IgT3BlblhSIGV2ZW50IGJlZm9yZSBl
bmRpbmcgdGhlIHNlc3Npb24uCisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3Jt
WFJPcGVuWFIuaDoKKworCisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwOiBJ
bXBsZW1lbnQgcmVuZGVyIGxvb3AgdXNpbmcgYSB0aW1lcgorICAgICAgICAoV2ViQ29yZTo6U2lt
dWxhdGVkWFJEZXZpY2U6OlNpbXVsYXRlZFhSRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXVsYXRlZFhSRGV2aWNlOjp+U2ltdWxhdGVkWFJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6
U2ltdWxhdGVkWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnN0b3BUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAqIHRlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmg6CisKIDIwMjEtMDItMDMgIFppcmFuIFN1biAgPHpzdW5AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbY3NzLWdyaWRdIFdQVCB0ZXN0IGNzcy9jc3MtZ3JpZC9ncmlkLW1v
ZGVsL2dyaWQtYm94LXNpemluZy0wMDEuaHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKaW5kZXggOTM1ZGMxMjdjOWQwN2E3YzhkMjM4NDE1NDU4
N2Q1MTM1ODg3YWUxYS4uZjI3ODc2MWIwYTdiN2QyOWQxNzk0MjIzNTBhMmFhMTk4YTIzYmRlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCkBAIC00OCwx
MCArNDgsNiBAQCBXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vz
c2lvbikKIAogV2ViWFJGcmFtZTo6fldlYlhSRnJhbWUoKSA9IGRlZmF1bHQ7CiAKLWNvbnN0IFdl
YlhSU2Vzc2lvbiYgV2ViWFJGcmFtZTo6c2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c2Vzc2lvbjsKLX0KIAogUmVmUHRyPFdlYlhSVmlld2VyUG9zZT4gV2ViWFJGcmFtZTo6Z2V0Vmll
d2VyUG9zZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJikKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKaW5kZXggODA4YTY3NjRmMGQyYzVhZTYxZTRkNjU4YzI4
MjUwNTc5ZmU1YjYyNy4uMmEyNmFkODZhMmMzMGRhOGMyM2RmYjZjN2JiYjkwMzgyZDEyZTA1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIkRPTUhpZ2hSZXNUaW1lU3Rh
bXAuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00NiwxNCArNDcsMjAgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYpOwog
ICAgIH5XZWJYUkZyYW1lKCk7CiAKLSAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBj
b25zdDsKKyAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBt
X3Nlc3Npb24uZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+IGdldFZpZXdl
clBvc2UoY29uc3QgV2ViWFJSZWZlcmVuY2VTcGFjZSYpOwogICAgIFJlZlB0cjxXZWJYUlBvc2U+
IGdldFBvc2UoY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAorICAgIHZv
aWQgc2V0VGltZShET01IaWdoUmVzVGltZVN0YW1wIHRpbWUpIHsgbV90aW1lID0gdGltZTsgfQor
ICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1fYWN0aXZlID0gYWN0aXZlOyB9Cisg
ICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CisKIHByaXZhdGU6
Ci0gICAgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBleHBsaWNpdCBXZWJY
UkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYpOwogCisgICAgYm9vbCBtX2FjdGl2ZSB7IGZhbHNl
IH07CisgICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBtX3RpbWU7CiAgICAgUmVmPFdlYlhSU2Vzc2lv
bj4gbV9zZXNzaW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSUmVuZGVyU3RhdGUuaAppbmRleCAxZTQzNjNmMWYxOTQzMWU0YTFlYzk1OGYxYmZhMmI0NzA3
NDU3N2EyLi5lNmQ0M2MwNDY4OTU5OGI1M2RhNmQ0YmJiNzNmMmRjMWE0MTNhMmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaApAQCAtNTYs
NiArNTYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFzZUxheWVyKFdlYlhSV2ViR0xMYXll
ciogYmFzZUxheWVyKSB7IG1fYmFzZUxheWVyID0gYmFzZUxheWVyOyB9CiAKICAgICBIVE1MQ2Fu
dmFzRWxlbWVudCogb3V0cHV0Q2FudmFzKCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRDYW52YXMu
Z2V0KCk7IH0KKyAgICB2b2lkIHNldE91dHB1dENhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCogY2Fu
dmFzKSB7IG1fb3V0cHV0Q2FudmFzID0gbWFrZVdlYWtQdHIoY2FudmFzKTsgfQorCisgICAgYm9v
bCBjb21wb3NpdGlvbkRpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGlvbkRpc2Fi
bGVkOyB9CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbkRpc2FibGVkKGJvb2wgY29tcG9zaXRpb25E
aXNhYmxlZCkgeyBtX2NvbXBvc2l0aW9uRGlzYWJsZWQgPSBjb21wb3NpdGlvbkRpc2FibGVkOyB9
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViWFJSZW5kZXJTdGF0ZShPcHRpb25hbDxkb3Vi
bGU+IGZpZWxkT2ZWaWV3KTsKQEAgLTY5LDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25h
bDxkb3VibGU+IG1faW5saW5lVmVydGljYWxGaWVsZE9mVmlldzsgLy8gaW4gcmFkaWFucwogICAg
IFJlZlB0cjxXZWJYUldlYkdMTGF5ZXI+IG1fYmFzZUxheWVyOwogICAgIFdlYWtQdHI8SFRNTENh
bnZhc0VsZW1lbnQ+IG1fb3V0cHV0Q2FudmFzOworICAgIGJvb2wgbV9jb21wb3NpdGlvbkRpc2Fi
bGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBkOGUyZjgxMWMyNDVi
MGNlYjBhY2VmZWEzZGZlZGE1NGU1MjhiMDA1Li5jNTJkYTRmOTc4MzYyYjA0MGFlODYxYjlmNzdm
YzhhZDg3MzQyMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uY3BwCkBAIC00NSw3ICs0NSw5IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChX
ZWJYUlNlc3Npb24pOwogCiBSZWY8V2ViWFJTZXNzaW9uPiBXZWJYUlNlc3Npb246OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lzdGVtJiBzeXN0ZW0sIFhSU2Vzc2lvbk1vZGUgbW9k
ZSwgUGxhdGZvcm1YUjo6RGV2aWNlJiBkZXZpY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViWFJTZXNzaW9uKGRvY3VtZW50LCBzeXN0ZW0sIG1vZGUsIGRldmljZSkpOworICAgIGF1
dG8gc2Vzc2lvbiA9IGFkb3B0UmVmKCpuZXcgV2ViWFJTZXNzaW9uKGRvY3VtZW50LCBzeXN0ZW0s
IG1vZGUsIGRldmljZSkpOworICAgIHNlc3Npb24tPmluaXRpYWxpemUoKTsKKyAgICByZXR1cm4g
c2Vzc2lvbjsKIH0KIAogV2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Npb24oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Npb25Nb2RlIG1vZGUsIFBsYXRmb3JtWFI6
OkRldmljZSYgZGV2aWNlKQpAQCAtNTUsMTEgKzU3LDE1IEBAIFdlYlhSU2Vzc2lvbjo6V2ViWFJT
ZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9u
TW9kCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRldmlj
ZSkpCiAgICAgLCBtX2FjdGl2ZVJlbmRlclN0YXRlKFdlYlhSUmVuZGVyU3RhdGU6OmNyZWF0ZSht
b2RlKSkKLSAgICAsIG1fYW5pbWF0aW9uVGltZXIoKnRoaXMsICZXZWJYUlNlc3Npb246OmFuaW1h
dGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3RpbWVPcmlnaW4oTW9ub3RvbmljVGltZTo6bm93KCkp
CiB7CiAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhtb2RlKTsK
ICAgICBtX2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQobWFrZVdlYWtQdHIo
KnRoaXMpKTsKIAorICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIv
I3JlZi1mb3ItZG9tLXhycmVmZXJlbmNlc3BhY2V0eXBlLXZpZXdlciVFMiU5MSVBMgorICAgIC8v
IEV2ZXJ5IHNlc3Npb24gTVVTVCBzdXBwb3J0IHZpZXdlciBYUlJlZmVyZW5jZVNwYWNlcy4KKyAg
ICBtX2RldmljZS0+aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBl
OjpWaWV3ZXIpOworCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKQEAgLTY5LDYgKzc1LDEx
IEBAIFdlYlhSU2Vzc2lvbjo6fldlYlhSU2Vzc2lvbigpCiAgICAgICAgIG1fZGV2aWNlLT5zaHV0
RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CiB9CiAKK3ZvaWQgV2ViWFJTZXNzaW9uOjppbml0
aWFsaXplKCkKK3sKKyAgICBtX2FuaW1hdGlvbkZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRlKG1h
a2VSZWYoKnRoaXMpKTsKK30KKwogWFJFbnZpcm9ubWVudEJsZW5kTW9kZSBXZWJYUlNlc3Npb246
OmVudmlyb25tZW50QmxlbmRNb2RlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9lbnZpcm9ubWVu
dEJsZW5kTW9kZTsKQEAgLTE5OCw2NiArMjA5LDQ3IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpyZXF1
ZXN0UmVmZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSwgUmVxdWVzdFJlZmVy
CiAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgLy8gMS4gTGV0IHByb21pc2UgYmUgYSBu
ZXcgUHJvbWlzZS4KICAgICAvLyAyLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxl
bDoKLSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgdHlwZV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewotICAg
ICAgICAvLyAgMi4xLiBDcmVhdGUgYSByZWZlcmVuY2Ugc3BhY2UsIHJlZmVyZW5jZVNwYWNlLCB3
aXRoIHRoZSBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlLgotICAgICAgICAvLyAgMi4yLiBJZiBy
ZWZlcmVuY2VTcGFjZSBpcyBudWxsLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVk
RXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+cG9zdFRhc2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgdHlwZV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyAyLjEuIElmIHRoZSBy
ZXN1bHQgb2YgcnVubmluZyByZWZlcmVuY2Ugc3BhY2UgaXMgc3VwcG9ydGVkIGZvciB0eXBlIGFu
ZCBzZXNzaW9uIGlzIGZhbHNlLCBxdWV1ZSBhIHRhc2sgdG8gcmVqZWN0IHByb21pc2UKKyAgICAg
ICAgLy8gd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAg
ICAgICAgaWYgKCFyZWZlcmVuY2VTcGFjZUlzU3VwcG9ydGVkKHR5cGUpKSB7Ci0gICAgICAgICAg
ICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2Vi
WFIsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJl
bmNlLXNwYWNlCi0gICAgICAgIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiByZWZlcmVuY2VT
cGFjZTsKLSAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRG
bG9vcikKLSAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIG1ha2VSZWYoKnRoaXMp
LCB0eXBlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJY
UlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBtYWtl
UmVmKCp0aGlzKSwgdHlwZSk7Ci0KLSAgICAgICAgLy8gIDIuMy4gUmVzb2x2ZSBwcm9taXNlIHdp
dGggcmVmZXJlbmNlU3BhY2UuCi0gICAgICAgIC8vIDMuIFJldHVybiBwcm9taXNlLgotICAgICAg
ICBwcm9taXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIC8vIDIuMi4gU2V0IHVwIGFueSBwbGF0Zm9ybSByZXNvdXJjZXMgcmVxdWlyZWQgdG8gdHJh
Y2sgcmVmZXJlbmNlIHNwYWNlcyBvZiB0eXBlIHR5cGUuCisgICAgICAgIG1fZGV2aWNlLT5pbml0
aWFsaXplUmVmZXJlbmNlU3BhY2UodHlwZSk7CisKKyAgICAgICAgLy8gMi4zLiBRdWV1ZSBhIHRh
c2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCB0eXBlLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gZG9jdW1l
bnQgPSBtYWtlUmVmKGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSk7CisgICAgICAgICAgICAvLyAyLjQuIENyZWF0ZSBhIHJlZmVyZW5jZSBzcGFjZSwgcmVmZXJl
bmNlU3BhY2UsIHdpdGggdHlwZSBhbmQgc2Vzc2lvbi4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2NyZWF0ZS1hLXJlZmVyZW5jZS1zcGFjZQor
ICAgICAgICAgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IHJlZmVyZW5jZVNwYWNlOwor
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9v
cikKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNl
U3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworCisgICAgICAg
ICAgICAvLyAyLjUuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHJlZmVyZW5jZVNwYWNlLgorICAgICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNwYWNlLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJYUlNlc3Npb246OmFuaW1hdGlvblRp
bWVyRmlyZWQoKQotewotICAgIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7Ci0KLSAgICBpZiAobV9jYWxsYmFja3MuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBUT0RPOiByZXRyaWV2ZSBmcmFtZSBmcm9tIHBsYXRmb3JtLgot
ICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUoKnRoaXMpOwotCi0gICAgbV9ydW5u
aW5nQ2FsbGJhY2tzLnN3YXAobV9jYWxsYmFja3MpOwotICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBtX3J1bm5pbmdDYWxsYmFja3MpIHsKLSAgICAgICAgaWYgKGNhbGxiYWNrLT5pc0NhbmNlbGxl
ZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNhbGxiYWNrLT5oYW5kbGVFdmVu
dChtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcC5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxp
c2Vjb25kcygpLCBmcmFtZS5nZXQoKSk7Ci0gICAgfQotCi0gICAgbV9ydW5uaW5nQ2FsbGJhY2tz
LmNsZWFyKCk7Ci19Ci0KLXZvaWQgV2ViWFJTZXNzaW9uOjpzY2hlZHVsZUFuaW1hdGlvbigpCi17
Ci0gICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1fZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRPRE86IHVzZSBk
ZXZpY2UncyByZWZyZXNoIHJhdGUuIExldCdzIHN0YXJ0IHdpdGggNjBmcHMuCi0gICAgU2Vjb25k
cyBhbmltYXRpb25JbnRlcnZhbCA9IDE1X21zOwotICAgIFNlY29uZHMgc2NoZWR1bGVEZWxheSA9
IHN0ZDo6bWF4KGFuaW1hdGlvbkludGVydmFsIC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9s
YXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApLCAwX3MpOwotICAgIG1fYW5pbWF0aW9uVGltZXIu
c3RhcnRPbmVTaG90KHNjaGVkdWxlRGVsYXkpOwotfQotCiAvLyBodHRwczovL2ltbWVyc2l2ZS13
ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJzZXNzaW9uLXJlcXVlc3RhbmltYXRpb25mcmFtZQog
dW5zaWduZWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUmVmPFhSRnJhbWVS
ZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CisgICAgLy8gSWdub3JlIGFueSBuZXcgZnJh
bWUgcmVxdWVzdHMgb25jZSB0aGUgc2Vzc2lvbiBpcyBlbmRlZC4KKyAgICBpZiAobV9lbmRlZCkK
KyAgICAgICAgcmV0dXJuIDA7CisKICAgICAvLyAxLiBMZXQgc2Vzc2lvbiBiZSB0aGUgdGFyZ2V0
IFhSU2Vzc2lvbiBvYmplY3QuCiAgICAgLy8gMi4gSW5jcmVtZW50IHNlc3Npb24ncyBhbmltYXRp
b24gZnJhbWUgY2FsbGJhY2sgaWRlbnRpZmllciBieSBvbmUuCiAgICAgdW5zaWduZWQgbmV3SWQg
PSBtX25leHRDYWxsYmFja0lkKys7CkBAIC0yNjcsNyArMjU5LDEyIEBAIHVuc2lnbmVkIFdlYlhS
U2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFJlZjxYUkZyYW1lUmVxdWVzdENhbGxiYWNr
PiYmIGNhbGxiCiAgICAgY2FsbGJhY2stPnNldENhbGxiYWNrSWQobmV3SWQpOwogICAgIG1fY2Fs
bGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBzY2hlZHVsZUFuaW1hdGlv
bigpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkZyYW1lKTsKKyAgICAvLyBTY3JpcHQgY2FuIGFk
ZCBtdWx0aXBsZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FsbGJhY2tzIGJ1dCB3ZSBzaG91bGQg
b25seSByZXF1ZXN0IGEgZGV2aWNlIGZyYW1lIG9uY2UuCisgICAgLy8gV2hlbiBtX2FuaW1hdGlv
bkZyYW1lIGlzIGFjdGl2ZSwgdGhlIG5leHQgcmVxdWVzdEZyYW1lIGlzIHNjaGVkdWxlZCBhdCB0
aGUgZW5kIG9mIFdlYlhSU2Vzc2lvbjo6b25GcmFtZSgpIHRvIHByZXZlbnQKKyAgICAvLyByZXF1
ZXN0aW5nIGEgbmV3IGZyYW1lIGJlZm9yZSB0aGUgY3VycmVudCBvbmUgaGFzIGVuZGVkLgorICAg
IGlmIChtX2NhbGxiYWNrcy5zaXplKCkgPT0gMSAmJiAhbV9hbmltYXRpb25GcmFtZS0+aXNBY3Rp
dmUoKSkKKyAgICAgICAgcmVxdWVzdEZyYW1lKCk7CiAKICAgICAvLyA0LiBSZXR1cm4gc2Vzc2lv
bidzIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFjayBpZGVudGlmaWVyJ3MgY3VycmVudCB2YWx1ZS4K
ICAgICByZXR1cm4gbmV3SWQ7CkBAIC0zMzYsNiArMzMzLDEwIEBAIHZvaWQgV2ViWFJTZXNzaW9u
OjpzaHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbSBpbml0aWF0ZWRCeVN5c3RlbSkKICAgICAvLyAy
LiBTZXQgc2Vzc2lvbidzIGVuZGVkIHZhbHVlIHRvIHRydWUuCiAgICAgbV9lbmRlZCA9IHRydWU7
CiAKKyAgICAvLyBSZWxlYXNlIGFuaW1hdGlvbkZyYW1lLCB3aGljaCBjb250YWlucyBhIFJlZiB0
byB0aGlzIHNlc3Npb24uCisgICAgbV9hbmltYXRpb25GcmFtZS0+c2V0QWN0aXZlKGZhbHNlKTsK
KyAgICBtX2FuaW1hdGlvbkZyYW1lID0gbnVsbHB0cjsKKwogICAgIC8vIDMuIElmIHRoZSBhY3Rp
dmUgaW1tZXJzaXZlIHNlc3Npb24gaXMgZXF1YWwgdG8gc2Vzc2lvbiwgc2V0IHRoZSBhY3RpdmUg
aW1tZXJzaXZlIHNlc3Npb24gdG8gbnVsbC4KICAgICAvLyA0LiBSZW1vdmUgc2Vzc2lvbiBmcm9t
IHRoZSBsaXN0IG9mIGlubGluZSBzZXNzaW9ucy4KICAgICBtX3hyU3lzdGVtLnNlc3Npb25FbmRl
ZCgqdGhpcyk7CkBAIC00MjAsNiArNDIxLDEzNyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6c2Vzc2lv
bkRpZEVuZCgpCiAgICAgc2h1dGRvd24oSW5pdGlhdGVkQnlTeXN0ZW06Olllcyk7CiB9CiAKK3Zv
aWQgV2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSgpCit7CisgICAgLy8gaHR0
cHM6IC8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2FwcGx5LXRoZS1wZW5kaW5nLXJl
bmRlci1zdGF0ZQorICAgIC8vIDEuIExldCBhY3RpdmVTdGF0ZSBiZSBzZXNzaW9u4oCZcyBhY3Rp
dmUgcmVuZGVyIHN0YXRlLgorICAgIC8vIDIuIExldCBuZXdTdGF0ZSBiZSBzZXNzaW9u4oCZcyBw
ZW5kaW5nIHJlbmRlciBzdGF0ZS4KKyAgICAvLyAzLiBTZXQgc2Vzc2lvbuKAmXMgcGVuZGluZyBy
ZW5kZXIgc3RhdGUgdG8gbnVsbC4KKyAgICBhdXRvIG5ld1N0YXRlID0gbV9wZW5kaW5nUmVuZGVy
U3RhdGU7CisgICAgQVNTRVJUKG5ld1N0YXRlKTsKKworICAgIC8vIDQuIExldCBvbGRCYXNlTGF5
ZXIgYmUgYWN0aXZlU3RhdGXigJlzIGJhc2VMYXllci4KKyAgICAvLyA1LiBMZXQgb2xkTGF5ZXJz
IGJlIGFjdGl2ZVN0YXRl4oCZcyBsYXllcnMuCisgICAgLy8gRklYTUU6IHRob3NlIGFyZSBvbmx5
IG5lZWRlZCBmb3Igc3RlcCA2LjIuCisKKyAgICAvLyA2LjEgU2V0IGFjdGl2ZVN0YXRlIHRvIG5l
d1N0YXRlLgorICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUgPSBuZXdTdGF0ZTsKKworICAgIC8vIDYu
MiBJZiBvbGRCYXNlTGF5ZXIgaXMgbm90IGVxdWFsIHRvIGFjdGl2ZVN0YXRl4oCZcyBiYXNlTGF5
ZXIsIG9sZExheWVycyBpcyBub3QgZXF1YWwgdG8gYWN0aXZlU3RhdGXigJlzIGxheWVycywgb3Ig
dGhlIGRpbWVuc2lvbnMgb2YgYW55IG9mIHRoZSBsYXllcnMgaGF2ZSBjaGFuZ2VkLCB1cGRhdGUg
dGhlIHZpZXdwb3J0cyBmb3Igc2Vzc2lvbi4KKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMu
CisKKyAgICAvLyA2LjMgSWYgYWN0aXZlU3RhdGXigJlzIGlubGluZVZlcnRpY2FsRmllbGRPZlZp
ZXcgaXMgbGVzcyB0aGFuIHNlc3Npb27igJlzIG1pbmltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcg
c2V0IGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IHRvIHNlc3Npb27i
gJlzIG1pbmltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcuCisgICAgaWYgKG1fYWN0aXZlUmVuZGVy
U3RhdGUtPmlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcoKSA8IG1fbWluaW11bUlubGluZUZPVikK
KyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0SW5saW5lVmVydGljYWxGaWVsZE9mVmll
dyhtX21pbmltdW1JbmxpbmVGT1YpOworCisgICAgLy8gNi40IElmIGFjdGl2ZVN0YXRl4oCZcyBp
bmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IGlzIGdyZWF0ZXIgdGhhbiBzZXNzaW9u4oCZcyBtYXhp
bXVtIGlubGluZSBmaWVsZCBvZiB2aWV3IHNldCBhY3RpdmVTdGF0ZeKAmXMgaW5saW5lVmVydGlj
YWxGaWVsZE9mVmlldyB0byBzZXNzaW9u4oCZcyBtYXhpbXVtIGlubGluZSBmaWVsZCBvZiB2aWV3
LgorICAgIGlmIChtX2FjdGl2ZVJlbmRlclN0YXRlLT5pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3
KCkgPiBtX21heGltdW1JbmxpbmVGT1YpCisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNl
dElubGluZVZlcnRpY2FsRmllbGRPZlZpZXcobV9tYXhpbXVtSW5saW5lRk9WKTsKKworICAgIC8v
IDYuNSBJZiBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhOZWFyIGlzIGxlc3MgdGhhbiBzZXNzaW9u4oCZ
cyBtaW5pbXVtIG5lYXIgY2xpcCBwbGFuZSBzZXQgYWN0aXZlU3RhdGXigJlzIGRlcHRoTmVhciB0
byBzZXNzaW9u4oCZcyBtaW5pbXVtIG5lYXIgY2xpcCBwbGFuZS4KKyAgICBpZiAobV9hY3RpdmVS
ZW5kZXJTdGF0ZS0+ZGVwdGhOZWFyKCkgPCBtX21pbmltdW1OZWFyQ2xpcFBsYW5lKQorICAgICAg
ICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXREZXB0aE5lYXIobV9taW5pbXVtTmVhckNsaXBQbGFu
ZSk7CisKKyAgICAvLyA2LjYgSWYgYWN0aXZlU3RhdGXigJlzIGRlcHRoRmFyIGlzIGdyZWF0ZXIg
dGhhbiBzZXNzaW9u4oCZcyBtYXhpbXVtIGZhciBjbGlwIHBsYW5lIHNldCBhY3RpdmVTdGF0ZeKA
mXMgZGVwdGhGYXIgdG8gc2Vzc2lvbuKAmXMgbWF4aW11bSBmYXIgY2xpcCBwbGFuZS4KKyAgICBp
ZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+ZGVwdGhGYXIoKSA+IG1fbWF4aW11bUZhckNsaXBQbGFu
ZSkKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0RGVwdGhGYXIobV9tYXhpbXVtRmFy
Q2xpcFBsYW5lKTsKKworICAgIC8vIDYuNyBMZXQgYmFzZUxheWVyIGJlIGFjdGl2ZVN0YXRl4oCZ
cyBiYXNlTGF5ZXIuCisgICAgYXV0byBiYXNlTGF5ZXIgPSBtX2FjdGl2ZVJlbmRlclN0YXRlLT5i
YXNlTGF5ZXIoKTsKKworICAgIC8vIDYuOCBTZXQgYWN0aXZlU3RhdGXigJlzIGNvbXBvc2l0aW9u
IGRpc2FibGVkIGFuZCBvdXRwdXQgY2FudmFzIGFzIGZvbGxvd3M6CisgICAgbV9hY3RpdmVSZW5k
ZXJTdGF0ZS0+c2V0Q29tcG9zaXRpb25EaXNhYmxlZCh0cnVlKTsKKyAgICBpZiAobV9tb2RlID09
IFhSU2Vzc2lvbk1vZGU6OklubGluZSAmJiBpczxXZWJYUldlYkdMTGF5ZXI+KGJhc2VMYXllcikg
JiYgYmFzZUxheWVyLT5jb21wb3NpdGlvbkRpc2FibGVkKCkpIHsKKyAgICAgICAgbV9hY3RpdmVS
ZW5kZXJTdGF0ZS0+c2V0Q29tcG9zaXRpb25EaXNhYmxlZCh0cnVlKTsKKyAgICAgICAgbV9hY3Rp
dmVSZW5kZXJTdGF0ZS0+c2V0T3V0cHV0Q2FudmFzKGJhc2VMYXllci0+Y2FudmFzKCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldENvbXBvc2l0aW9uRGlz
YWJsZWQoZmFsc2UpOworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRPdXRwdXRDYW52
YXMobnVsbHB0cik7CisgICAgfQorfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHVi
LmlvL3dlYnhyLyNzaG91bGQtYmUtcmVuZGVyZWQKK2Jvb2wgV2ViWFJTZXNzaW9uOjpmcmFtZVNo
b3VsZEJlUmVuZGVyZWQoKSBjb25zdAoreworICAgIGlmICghbV9hY3RpdmVSZW5kZXJTdGF0ZS0+
YmFzZUxheWVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9tb2RlID09IFhS
U2Vzc2lvbk1vZGU6OklubGluZSAmJiAhbV9hY3RpdmVSZW5kZXJTdGF0ZS0+b3V0cHV0Q2FudmFz
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBX
ZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSgpCit7CisgICAgbV9kZXZpY2UtPnJlcXVlc3RGcmFt
ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvJiYgZnJhbWVEYXRh
KSB7CisgICAgICAgIG9uRnJhbWUoV1RGTW92ZShmcmFtZURhdGEpKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEm
JiBmcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICht
X2VuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gcGVyZm9y
bSB0aGUgZm9sbG93aW5nIHN0ZXBzLgorICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCBmcmFtZURhdGEgPSBXVEZNb3ZlKGZyYW1l
RGF0YSldKCkgeworICAgICAgICBpZiAobV9lbmRlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0aGUgY3VycmVudCBoaWdoIHJlc29sdXRpb24gdGltZS4K
KyAgICAgICAgYXV0byBub3cgPSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4p
Lm1pbGxpc2Vjb25kcygpOworCisgICAgICAgIEFTU0VSVChtX2FuaW1hdGlvbkZyYW1lKTsKKyAg
ICAgICAgLy8gIDIuTGV0IGZyYW1lIGJlIHNlc3Npb27igJlzIGFuaW1hdGlvbiBmcmFtZS4KKyAg
ICAgICAgLy8gIDMuU2V0IGZyYW1l4oCZcyB0aW1lIHRvIGZyYW1lVGltZS4KKyAgICAgICAgbV9h
bmltYXRpb25GcmFtZS0+c2V0VGltZShzdGF0aWNfY2FzdDxET01IaWdoUmVzVGltZVN0YW1wPihm
cmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUpKTsKKworICAgICAgICAvLyA0LiBGb3IgZWFj
aCB2aWV3IGluIGxpc3Qgb2Ygdmlld3MsIHNldCB2aWV34oCZcyB2aWV3cG9ydCBtb2RpZmlhYmxl
IGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgLy8gNS4gSWYgdGhlIGFjdGl2ZSBmbGFnIG9mIGFueSB2
aWV3IGluIHRoZSBsaXN0IG9mIHZpZXdzIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IFhSIGFu
aW1hdGlvbiBmcmFtZSwgdXBkYXRlIHRoZSB2aWV3cG9ydHMuCisgICAgICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQuCisKKyAgICAgICAgLy8gRklYTUU6IEkgbW92ZWQgc3RlcCA3IGJlZm9yZSA2IGJl
Y2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2ltbWVyc2l2ZS13ZWIvd2VieHIvaXNzdWVzLzEx
NjQKKyAgICAgICAgLy8gNy5JZiBzZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRlciBzdGF0ZSBpcyBu
b3QgbnVsbCwgYXBwbHkgdGhlIHBlbmRpbmcgcmVuZGVyIHN0YXRlLgorICAgICAgICBpZiAobV9w
ZW5kaW5nUmVuZGVyU3RhdGUpCisgICAgICAgICAgICBhcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSgp
OworCisgICAgICAgIC8vIDYuIElmIHRoZSBmcmFtZSBzaG91bGQgYmUgcmVuZGVyZWQgZm9yIHNl
c3Npb246CisgICAgICAgIGlmIChmcmFtZVNob3VsZEJlUmVuZGVyZWQoKSkgeworICAgICAgICAg
ICAgLy8gNi4xLlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1h
dGlvbiBmcmFtZSBjYWxsYmFja3MgdG8gYmUgc2Vzc2lvbuKAmXMgbGlzdCBvZiBhbmltYXRpb24g
ZnJhbWUgY2FsbGJhY2tzLgorICAgICAgICAgICAgLy8gNi4yLlNldCBzZXNzaW9u4oCZcyBsaXN0
IG9mIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MgdG8gdGhlIGVtcHR5IGxpc3QuCisgICAgICAg
ICAgICBtX3J1bm5pbmdDYWxsYmFja3Muc3dhcChtX2NhbGxiYWNrcyk7CisKKyAgICAgICAgICAg
IC8vIDYuMy5TZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRvIHRydWUuCisgICAgICAgICAg
ICBtX2FuaW1hdGlvbkZyYW1lLT5zZXRBY3RpdmUodHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIDYu
NC5BcHBseSBmcmFtZSB1cGRhdGVzIGZvciBmcmFtZS4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQuCisKKyAgICAgICAgICAgIC8vIDYuNS5Gb3IgZWFjaCBlbnRyeSBpbiBzZXNzaW9u
4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3Ms
IGluIG9yZGVyOgorICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fcnVubmluZ0Nh
bGxiYWNrcykgeworICAgICAgICAgICAgICAgIC8vICA2LjYuSWYgdGhlIGVudHJ54oCZcyBjYW5j
ZWxsZWQgYm9vbGVhbiBpcyB0cnVlLCBjb250aW51ZSB0byB0aGUgbmV4dCBlbnRyeS4KKyAgICAg
ICAgICAgICAgICBpZiAoY2FsbGJhY2stPmlzQ2FuY2VsbGVkKCkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIC8vICA2LjcuSW52b2tlIHRoZSBXZWIgSURM
IGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBlbnRyeSwgcGFzc2luZyBub3cgYW5kIGZyYW1lIGFzIHRo
ZSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBjYWxsYmFjay0+aGFuZGxlRXZlbnQobm93LCAq
bV9hbmltYXRpb25GcmFtZSk7CisKKyAgICAgICAgICAgICAgICAvLyAgNi44LklmIGFuIGV4Y2Vw
dGlvbiBpcyB0aHJvd24sIHJlcG9ydCB0aGUgZXhjZXB0aW9uLgorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLy8gNi45LlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5n
IGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MgdG8gdGhlIGVtcHR5IGxpc3QuCisgICAgICAgICAg
ICBtX3J1bm5pbmdDYWxsYmFja3MuY2xlYXIoKTsKKworICAgICAgICAgICAgLy8gNi4xMC5TZXQg
ZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRvIGZhbHNlLgorICAgICAgICAgICAgLy8gSWYgdGhl
IHNlc3Npb24gaXMgZW5kZWQsIG1fYW5pbWF0aW9uRnJhbWUtPnNldEFjdGl2ZSBmYWxzZSBpcyBz
ZXQgaW4gc2h1dGRvd24oKS4KKyAgICAgICAgICAgIGlmIChtX2FuaW1hdGlvbkZyYW1lKQorICAg
ICAgICAgICAgICAgIG1fYW5pbWF0aW9uRnJhbWUtPnNldEFjdGl2ZShmYWxzZSk7CisKKyAgICAg
ICAgICAgIGlmICghbV9jYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlcXVl
c3RGcmFtZSgpOworICAgICAgICB9CisKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTZXNzaW9uLmgKaW5kZXggNTU1NDMwYzhjM2Y3MzEyMzFhYWY0ZjBjM2ZmYjU4
MjlkNjkyOWIzNi4uNDJiZTg4YzYzN2RiMjUxMGZkN2IxZTNiNTEzZDAxZTYwN2Q5MGZhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIlRpbWVy
LmgiCisjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlhSSW5wdXRTb3VyY2VB
cnJheS5oIgogI2luY2x1ZGUgIldlYlhSUmVuZGVyU3RhdGUuaCIKICNpbmNsdWRlICJXZWJYUlNw
YWNlLmgiCkBAIC05MSw3ICs5MSw4IEBAIHB1YmxpYzoKICAgICBYUlNlc3Npb25Nb2RlIG1vZGUo
KSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJYUlNlc3Npb24o
RG9jdW1lbnQmLCBXZWJYUlN5c3RlbSYsIFhSU2Vzc2lvbk1vZGUsIFBsYXRmb3JtWFI6OkRldmlj
ZSYpOworICAgIGV4cGxpY2l0IFdlYlhSU2Vzc2lvbihEb2N1bWVudCYsIFdlYlhSU3lzdGVtJiwg
WFJTZXNzaW9uTW9kZSwgUGxhdGZvcm1YUjo6RGV2aWNlJik7CisgICAgdm9pZCBpbml0aWFsaXpl
KCk7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV2ViWFJTZXNzaW9uRXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CkBAIC0xMDksMTEgKzExMCwxMyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2h1dGRvd24oSW5pdGlhdGVkQnlTeXN0ZW0pOwogICAgIHZvaWQgZGlkQ29tcGxl
dGVTaHV0ZG93bigpOwogCi0gICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7Ci0gICAgdm9p
ZCBzY2hlZHVsZUFuaW1hdGlvbigpOwotCiAgICAgYm9vbCByZWZlcmVuY2VTcGFjZUlzU3VwcG9y
dGVkKFhSUmVmZXJlbmNlU3BhY2VUeXBlKSBjb25zdDsKIAorICAgIGJvb2wgZnJhbWVTaG91bGRC
ZVJlbmRlcmVkKCkgY29uc3Q7CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoKTsKKyAgICB2b2lkIG9u
RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJik7CisgICAgdm9pZCBhcHBseVBl
bmRpbmdSZW5kZXJTdGF0ZSgpOworCiAgICAgWFJFbnZpcm9ubWVudEJsZW5kTW9kZSBtX2Vudmly
b25tZW50QmxlbmRNb2RlOwogICAgIFhSSW50ZXJhY3Rpb25Nb2RlIG1faW50ZXJhY3Rpb25Nb2Rl
OwogICAgIFhSVmlzaWJpbGl0eVN0YXRlIG1fdmlzaWJpbGl0eVN0YXRlOwpAQCAtMTI2LDEzICsx
MjksMjAgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFBsYXRmb3JtWFI6OkRldmljZT4gbV9kZXZp
Y2U7CiAgICAgUmVmUHRyPFdlYlhSUmVuZGVyU3RhdGU+IG1fYWN0aXZlUmVuZGVyU3RhdGU7CiAg
ICAgUmVmUHRyPFdlYlhSUmVuZGVyU3RhdGU+IG1fcGVuZGluZ1JlbmRlclN0YXRlOworICAgIE1v
bm90b25pY1RpbWUgbV90aW1lT3JpZ2luOwogCiAgICAgdW5zaWduZWQgbV9uZXh0Q2FsbGJhY2tJ
ZCB7IDEgfTsKICAgICBWZWN0b3I8UmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+PiBtX2NhbGxi
YWNrczsKICAgICBWZWN0b3I8UmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+PiBtX3J1bm5pbmdD
YWxsYmFja3M7CiAKLSAgICBUaW1lciBtX2FuaW1hdGlvblRpbWVyOwotICAgIE1vbm90b25pY1Rp
bWUgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXA7CisgICAgUmVmUHRyPFdlYlhSRnJhbWU+
IG1fYW5pbWF0aW9uRnJhbWU7CisKKyAgICBkb3VibGUgbV9taW5pbXVtSW5saW5lRk9WIHsgMC4w
IH07CisgICAgZG91YmxlIG1fbWF4aW11bUlubGluZUZPViB7IHBpRmxvYXQgfTsKKworICAgIC8v
IEluIG1ldGVycy4KKyAgICBkb3VibGUgbV9taW5pbXVtTmVhckNsaXBQbGFuZSB7IDAuMSB9Owor
ICAgIGRvdWJsZSBtX21heGltdW1GYXJDbGlwUGxhbmUgeyAxMDAwLjAgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5
c3RlbS5jcHAKaW5kZXggMTJhOWYyMWU3MjRhMTJkZGMxNWRhOWE4NGMxYjgyZWI0ZDE3ZDRkOC4u
Mjg4YzZmMGQ1YjJiMDAyOTNlNzFiODYzNWNlZDc3MmZiZjIyMmU1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJKU1dlYlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkpTWFJSZWZlcmVuY2VTcGFjZVR5
cGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisjaW5jbHVkZSAiUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2suaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRv
ci5oIgpAQCAtNDksMTEgKzUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoV2ViWFJTeXN0ZW0pOwogCi1XZWJYUlN5c3RlbTo6RHVtbXlJbmxp
bmVEZXZpY2U6OkR1bW15SW5saW5lRGV2aWNlKCkKLXsKLSAgICBzZXRFbmFibGVkRmVhdHVyZXMo
WFJTZXNzaW9uTW9kZTo6SW5saW5lLCB7IFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIgfSk7
Ci19Ci0KIFJlZjxXZWJYUlN5c3RlbT4gV2ViWFJTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlhSU3lzdGVtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKQEAgLTYxLDYgKzU3
LDcgQEAgUmVmPFdlYlhSU3lzdGVtPiBXZWJYUlN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnQKIAogV2ViWFJTeXN0ZW06OldlYlhSU3lzdGVt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgLCBtX2RlZmF1bHRJ
bmxpbmVEZXZpY2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICBtX2lubGluZVhSRGV2
aWNlID0gbWFrZVdlYWtQdHIobV9kZWZhdWx0SW5saW5lRGV2aWNlKTsKICAgICBzdXNwZW5kSWZO
ZWVkZWQoKTsKQEAgLTQ3NSw2ICs0NzIsNDkgQEAgdm9pZCBXZWJYUlN5c3RlbTo6c2Vzc2lvbkVu
ZGVkKFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKICAgICBtX2lubGluZVNlc3Npb25zLnJlbW92ZShz
ZXNzaW9uKTsKIH0KIAorY2xhc3MgSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2sg
ZmluYWw6IHB1YmxpYyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIFdURk1vdmUoY2FsbGJhY2spKSk7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbmxpbmVSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCisgICAgICAgIDog
UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCBt
X2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSAKKyAgICB7CisgICAgfQorCisgICAgQ2FsbGJh
Y2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZlbnQoZG91YmxlKSBmaW5hbAorICAgIHsKKyAgICAgICAg
bV9jYWxsYmFjaygpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEZ1bmN0aW9u
PHZvaWQoKT4gbV9jYWxsYmFjazsKK307CisKKworV2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2
aWNlOjpEdW1teUlubGluZURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KCZzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQoreworICAgIHNldEVuYWJsZWRGZWF0dXJlcyhYUlNlc3Npb25Nb2RlOjpJ
bmxpbmUsIHsgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlciB9KTsKK30KKwordm9pZCBXZWJY
UlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZp
Y2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgLy8gSW5saW5lIFhS
IHNlc3Npb25zIHJlbHkgb24gZG9jdW1lbnQucmVxdWVzdEFuaW1hdGlvbkZyYW1lIHRvIHBlcmZv
cm0gdGhlIHJlbmRlciBsb29wLgorICAgIGF1dG8gZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVu
dD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHJhZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAg
fSk7CisKKyAgICBkb2N1bWVudC0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJhZik7Cit9CisKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCmluZGV4IGM3NjJkNDZhYzBlOTA0
YTM5ODNkMzk3ZjY4NjU2MWQ0YzE2NWIzNTUuLmMzM2NmNzNiODEyNGU2NTAzODIxNTA5YTM4MjA5
NGI5MzBlZmI1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVt
LmgKQEAgLTEwNiwxMSArMTA2LDE2IEBAIHByaXZhdGU6CiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNp
dmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZGVmYXVsdC1pbmxpbmUteHItZGV2aWNlCiAgICAgY2xh
c3MgRHVtbXlJbmxpbmVEZXZpY2UgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIER1bW15SW5saW5lRGV2aWNlKCk7CisgICAgICAgIER1bW15
SW5saW5lRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNl
c3Npb25Nb2RlKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVu
ZGVyaW5nKCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNl
KFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9OworCisgICAgICAgIHZv
aWQgcmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2sm
JikgZmluYWw7CisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogICAgIH07CiAgICAgRHVtbXlJbmxpbmVEZXZpY2UgbV9kZWZhdWx0SW5s
aW5lRGV2aWNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSV2ViR0xMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2Vi
R0xMYXllci5jcHAKaW5kZXggODZkZDExYjAwMTQzYmY4MGVhODFhZTJhZGQ4ZGU4NGRjMDJkMDMz
Zi4uY2E1ODc4ODYxZDI0YzdlZjVkMmZjZWI1MmE3N2RmYWI3ZTYwOGQxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcApAQCAtMjgsNyAr
MjgsOSBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1l
bnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgi
CiAjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dC5oIgogI2lmIEVOQUJMRShXRUJHTDIpCkBAIC0xOTgsNiArMjAwLDIwIEBAIGRvdWJs
ZSBXZWJYUldlYkdMTGF5ZXI6OmdldE5hdGl2ZUZyYW1lYnVmZmVyU2NhbGVGYWN0b3IoY29uc3Qg
V2ViWFJTZXNzaW9uJiBzZXNzCiAgICAgcmV0dXJuIChuYXRpdmVTaXplIC8gcmVjb21tZW5kZWRT
aXplKS53aWR0aCgpOwogfQogCitIVE1MQ2FudmFzRWxlbWVudCogV2ViWFJXZWJHTExheWVyOjpj
YW52YXMoKSBjb25zdAoreworICAgIEhUTUxDYW52YXNFbGVtZW50KiBjID0gV1RGOjpzd2l0Y2hP
bihtX2NvbnRleHQsIFtdKGNvbnN0IFJlZlB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiYg
YmFzZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBjYW52YXMgPSBiYXNlQ29udGV4dC0+Y2FudmFz
KCk7CisgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNhbnZhcywgW10oY29uc3QgUmVmUHRy
PEhUTUxDYW52YXNFbGVtZW50PiYgY2FudmFzKSB7CisgICAgICAgICAgICByZXR1cm4gY2FudmFz
LmdldCgpOworICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPikgewor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCJiYXNlTGF5ZXIgb2YgYSBXZWJYUldlYkdM
TGF5ZXIgbXVzdCBiZSBhbiBIVE1MQ2FudmFzRWxlbWVudCIpOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIH0pOworICAgIH0pOworICAgIHJldHVybiBjOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaAppbmRleCAzMTc1NWQ4NDk2
YTZhNzAyZTIzMzI5Y2ZiZjMyOWI5Y2M0YjhhOWRmLi4zZjc1ODdkZTg5ZGE2ZTIzMWM5NDNjNGY5
MDVmYzFjZjE4MDU5Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSV2ViR0xMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJXZWJHTExheWVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBXZWJHTEZy
YW1lYnVmZmVyOwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OwpAQCAtNzQsNiArNzUsMTEg
QEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgeyByZXR1cm4g
bV9zZXNzaW9uOyB9CiAKKyAgICBib29sIGNvbXBvc2l0aW9uRGlzYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29tcG9zaXRpb25EaXNhYmxlZDsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRpb25E
aXNhYmxlZChib29sIGNvbXBvc2l0aW9uRGlzYWJsZWQpIHsgbV9pc0NvbXBvc2l0aW9uRGlzYWJs
ZWQgPSBjb21wb3NpdGlvbkRpc2FibGVkOyB9CisKKyAgICBIVE1MQ2FudmFzRWxlbWVudCogY2Fu
dmFzKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV2ViWFJXZWJHTExheWVyKFJlZjxXZWJYUlNl
c3Npb24+JiYsIFdlYlhSUmVuZGVyaW5nQ29udGV4dCYmLCBjb25zdCBYUldlYkdMTGF5ZXJJbml0
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCBiOWVmNDVj
MGM2OTcxNGFlODNjNzA0NDU0ZDk1NGJkNTFlYTQ3NjZiLi40MzI1ZjMzNzVjZjMwMjhhNDdkZmZj
YzZkZjU5YmI3NDM4MzUwMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1Y
Ui5oCkBAIC0xOCw2ICsxOCw3IEBACiAgKi8KICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxv
YXRQb2ludDNELmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAgLTc1LDYgKzc2LDMxIEBAIHB1Ymxp
YzoKICAgICAvLyBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIHRoYXQgbWVhbnMgdGhlIGRl
dmljZSB3aWxsIG5vdGlmeSBUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudAogICAgIC8vIHdoZW4g
dGhlIHBsYXRmb3JtIGhhcyBjb21wbGV0ZWQgYWxsIHN0ZXBzIHRvIHNodXQgZG93biB0aGUgWFIg
c2Vzc2lvbi4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmlj
YXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplUmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSA9IDA7CisKKyAgICBzdHJ1Y3Qg
RnJhbWVEYXRhIHsKKyAgICAgICAgbG9uZyBwcmVkaWN0ZWREaXNwbGF5VGltZTsKKyAgICAgICAg
c3RydWN0IFZpZXdEYXRhIHsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAg
V2ViQ29yZTo6RmxvYXRQb2ludDNEIHBvc2l0aW9uOworICAgICAgICAgICAgICAgIHN0cnVjdCB7
CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHg7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0
IHk7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHo7CisgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHc7CisgICAgICAgICAgICAgICAgfSBvcmllbnRhdGlvbjsKKyAgICAgICAgICAgIH0gcG9z
ZTsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgZmxvYXQgclVwOworICAg
ICAgICAgICAgICAgIGZsb2F0IHJEb3duOworICAgICAgICAgICAgICAgIGZsb2F0IHJMZWZ0Owor
ICAgICAgICAgICAgICAgIGZsb2F0IHJSaWdodDsKKyAgICAgICAgICAgIH0gZm92OworICAgICAg
ICB9OworICAgICAgICBWZWN0b3I8Vmlld0RhdGE+IHZpZXdQb3NlczsKKyAgICB9OworICAgIHVz
aW5nIFJlcXVlc3RGcmFtZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChGcmFtZURhdGEmJik+Owor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAw
OwogCiBwcm90ZWN0ZWQ6CiAgICAgRGV2aWNlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4
IGZlODY1ZTY3MWQ3MDY4NmRlNzkxZjE0MDBlNmNmM2UyYzg2OWVjMjIuLjBiNGE4M2EzOWUyNzU5
NmI0MGYwMmU2MDQ4NjRkMGY3NmY4ZmNmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTI2MCwxMSArMjYw
LDYgQEAgT3BlblhSRGV2aWNlOjpPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCBpZCwgWHJJbnN0YW5j
ZSBpbnN0YW5jZSwgV29ya1F1ZXVlJiBxdWV1ZSwKICAgICB9KTsKIH0KIAotT3BlblhSRGV2aWNl
Ojp+T3BlblhSRGV2aWNlKCkKLXsKLSAgICBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
Ci19Ci0KIERldmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6ZW51bWVy
YXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKIHsKICAgICB1aW50
MzJfdCByZWZlcmVuY2VTcGFjZXNDb3VudDsKQEAgLTM5NSw2ICszOTAsMTYgQEAgWHJWaWV3Q29u
ZmlndXJhdGlvblR5cGUgdG9YclZpZXdDb25maWd1cmF0aW9uVHlwZShTZXNzaW9uTW9kZSBtb2Rl
KQogICAgIHJldHVybiBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX01PTk87CiB9
CiAKK3N0YXRpYyBib29sIHNlc3Npb25Jc0FjdGl2ZShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKK3sK
KyAgICByZXR1cm4gc3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9WSVNJQkxFIHx8IHN0YXRlID09
IFhSX1NFU1NJT05fU1RBVEVfRk9DVVNFRDsKK30KKworc3RhdGljIGJvb2wgc2Vzc2lvbklzUnVu
bmluZyhYclNlc3Npb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gc3RhdGUgPT0gWFJfU0VT
U0lPTl9TVEFURV9TWU5DSFJPTklaRUQgfHwgc2Vzc2lvbklzQWN0aXZlKHN0YXRlKTsKK30KKwog
dm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9u
TW9kZSBtb2RlKQogewogICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIG1vZGVdKCkgewpAQCAt
NDE0LDE3ICs0MTksMTg0IEBAIHZvaWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdB
bmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUgbW9kZSkKIAogdm9pZCBPcGVuWFJEZXZpY2U6OnJlc2V0
U2Vzc2lvbigpCiB7Ci0gICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpc10oKSB7Ci0gICAgICAgIGlm
IChtX3Nlc3Npb24gPT0gWFJfTlVMTF9IQU5ETEUpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKKyAgICBp
ZiAobV9zZXNzaW9uICE9IFhSX05VTExfSEFORExFKSB7CiAgICAgICAgIHhyRGVzdHJveVNlc3Np
b24obV9zZXNzaW9uKTsKICAgICAgICAgbV9zZXNzaW9uID0gWFJfTlVMTF9IQU5ETEU7Ci0gICAg
fSk7CisgICAgfQorICAgIG1fc2Vzc2lvblN0YXRlID0gWFJfU0VTU0lPTl9TVEFURV9VTktOT1dO
OworfQorCit2b2lkIE9wZW5YUkRldmljZTo6aGFuZGxlU2Vzc2lvblN0YXRlQ2hhbmdlKCkKK3sK
KyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOwor
ICAgIGlmIChtX3Nlc3Npb25TdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HKSB7Cisg
ICAgICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZXhpdCB0aGUgcmVuZGVyIGxvb3AgYW5k
IGNhbGwgeHJFbmRTZXNzaW9uCisgICAgICAgIGVuZFNlc3Npb24oKTsKKyAgICB9IGVsc2UgaWYg
KG1fc2Vzc2lvblN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkpIHsKKyAgICAgICAgLy8g
VGhlIGFwcGxpY2F0aW9uIGlzIHJlYWR5IHRvIGNhbGwgeHJCZWdpblNlc3Npb24uCisgICAgICAg
IGJlZ2luU2Vzc2lvbigpOworICAgIH0KIH0KIAogdm9pZCBPcGVuWFJEZXZpY2U6OnNodXREb3du
VHJhY2tpbmdBbmRSZW5kZXJpbmcoKQogeworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXNdKCkg
eworICAgICAgICBpZiAoIXNlc3Npb25Jc1J1bm5pbmcobV9zZXNzaW9uU3RhdGUpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIHhyUmVxdWVzdEV4aXRTZXNzaW9uKCkgd2lsbCB0
cmFuc2l0aW9uIHRoZSBzZXNzaW9uIHRvIFNUT1BQRUQgc3RhdGUgYW5kIHRoZW4gdGhlIHJlcXVl
c3RGcmFtZSgpIG1ldGhvZCB3aWxsIGNhbGwgcmVzZXQuCisgICAgICAgIC8vIElmIHRoZSBzZXNz
aW9uIHdhcyBub3QgcnVubmluZyB3ZSBoYXZlIHRvIHJlc2V0IHRoZSBzZXNzaW9uIG91cnNlbHZl
cy4KKyAgICAgICAgaWYgKFhSX0ZBSUxFRCh4clJlcXVlc3RFeGl0U2Vzc2lvbihtX3Nlc3Npb24p
KSkgeworICAgICAgICAgICAgcmVzZXRTZXNzaW9uKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBPcGVuWFIgbmVlZHMgdG8gd2FpdCBmb3IgdGhlIFhSX1NF
U1NJT05fU1RBVEVfU1RPUFBJTkcgc3RhdGUgdG8gcHJvcGVybHkgZW5kIHRoZSBzZXNzaW9uLgor
ICAgICAgICB3YWl0VW50aWxTdG9wcGluZygpOworICAgIH0pOworfQorCit2b2lkIE9wZW5YUkRl
dmljZTo6d2FpdFVudGlsU3RvcHBpbmcoKQoreworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVu
dCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgcG9sbEV2ZW50cygpOworICAgIGlmICht
X3Nlc3Npb25TdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HKQorICAgICAgICByZXR1
cm47CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpc10oKSB7CisgICAgICAgIHdhaXRVbnRpbFN0
b3BwaW5nKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjpwb2xsRXZlbnRzKCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvIHJ1bnRpbWVFdmVudCA9
IGNyZWF0ZVN0cnVjdHVyZTxYckV2ZW50RGF0YUJ1ZmZlciwgWFJfVFlQRV9FVkVOVF9EQVRBX0JV
RkZFUj4oKTsKKyAgICB3aGlsZSAoeHJQb2xsRXZlbnQobV9pbnN0YW5jZSwgJnJ1bnRpbWVFdmVu
dCkgPT0gWFJfU1VDQ0VTUykgeworICAgICAgICBzd2l0Y2ggKHJ1bnRpbWVFdmVudC50eXBlKSB7
CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1NFU1NJT05fU1RBVEVfQ0hBTkdFRDog
eworICAgICAgICAgICAgYXV0byogZXZlbnQgPSAoWHJFdmVudERhdGFTZXNzaW9uU3RhdGVDaGFu
Z2VkKikmcnVudGltZUV2ZW50OworICAgICAgICAgICAgbV9zZXNzaW9uU3RhdGUgPSBldmVudC0+
c3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFhSX1RZ
UEVfRVZFTlRfREFUQV9FVkVOVFNfTE9TVDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RB
VEFfSU5TVEFOQ0VfTE9TU19QRU5ESU5HOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFU
QV9SRUZFUkVOQ0VfU1BBQ0VfQ0hBTkdFX1BFTkRJTkc6CisgICAgICAgIGNhc2UgWFJfVFlQRV9F
VkVOVF9EQVRBX0lOVEVSQUNUSU9OX1BST0ZJTEVfQ0hBTkdFRDoKKyAgICAgICAgY2FzZSBYUl9U
WVBFX0VWRU5UX0RBVEFfTUFJTl9TRVNTSU9OX1ZJU0lCSUxJVFlfQ0hBTkdFRF9FWFRYOgorICAg
ICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9WSVNJQklMSVRZX01BU0tfQ0hBTkdFRF9LSFI6
CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1BFUkZfU0VUVElOR1NfRVhUOgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoIlVuaGFuZGxlZCBldmVudCB0eXBlICVkXG4iLCBydW50aW1lRXZlbnQudHlwZSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK1hyUmVzdWx0IE9wZW5YUkRldmljZTo6YmVnaW5TZXNz
aW9uKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zZXNz
aW9uU3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSk7CisKKyAgICBhdXRvIHNlc3Npb25C
ZWdpbkluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTZXNzaW9uQmVnaW5JbmZvLCBYUl9UWVBFX1NF
U1NJT05fQkVHSU5fSU5GTz4oKTsKKyAgICBzZXNzaW9uQmVnaW5JbmZvLnByaW1hcnlWaWV3Q29u
ZmlndXJhdGlvblR5cGUgPSBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX1NURVJF
TzsKKyAgICBhdXRvIHJlc3VsdCA9IHhyQmVnaW5TZXNzaW9uKG1fc2Vzc2lvbiwgJnNlc3Npb25C
ZWdpbkluZm8pOworI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAoWFJfRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIExPRyhYUiwgIiVzICVzOiAlc1xuIiwgX19mdW5jX18sICJ4ckJlZ2luU2Vzc2lv
biIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgbV9pbnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7Cisj
ZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIE9wZW5YUkRldmljZTo6ZW5kU2Vz
c2lvbigpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lvbiAhPSBYUl9OVUxMX0hBTkRMRSk7CisgICAg
eHJFbmRTZXNzaW9uKG1fc2Vzc2lvbik7CiAgICAgcmVzZXRTZXNzaW9uKCk7CisgICAgaWYgKCFt
X3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBO
b3RpZnkgZGlkIGVuZCBldmVudAorICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQp
CisgICAgICAgICAgICBtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50LT5zZXNzaW9uRGlkRW5k
KCk7CisgICAgfSk7Cit9CisKKworRGV2aWNlOjpGcmFtZURhdGE6OlZpZXdEYXRhIHhyVmlld1Rv
Vmlld0RhdGEoWHJWaWV3IHZpZXcpCit7CisgICAgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXdEYXRh
IGRhdGE7CisgICAgZGF0YS5mb3YgPSB7IHZpZXcuZm92LmFuZ2xlVXAsIHZpZXcuZm92LmFuZ2xl
RG93biwgdmlldy5mb3YuYW5nbGVMZWZ0LCB2aWV3LmZvdi5hbmdsZVJpZ2h0IH07CisgICAgZGF0
YS5wb3NlLm9yaWVudGF0aW9uID0geyB2aWV3LnBvc2Uub3JpZW50YXRpb24ueCwgdmlldy5wb3Nl
Lm9yaWVudGF0aW9uLnksIHZpZXcucG9zZS5vcmllbnRhdGlvbi56LCB2aWV3LnBvc2Uub3JpZW50
YXRpb24udyB9OworICAgIGRhdGEucG9zZS5wb3NpdGlvbiA9IHsgdmlldy5wb3NlLnBvc2l0aW9u
LngsIHZpZXcucG9zZS5wb3NpdGlvbi55LCB2aWV3LnBvc2UucG9zaXRpb24ueiB9OworICAgIHJl
dHVybiBkYXRhOworfQorCit2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcG9sbEV2
ZW50cygpOworICAgICAgICBpZiAoIXNlc3Npb25Jc1J1bm5pbmcobV9zZXNzaW9uU3RhdGUpKSB7
CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIC8vIERldmljZSBub3QgcmVhZHkgb3Ig
c3RvcHBpbmcuIFJlcG9ydCBmcmFtZURhdGEgd2l0aCBpbnZhbGlkIHRyYWNraW5nLgorICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gZnJhbWVTdGF0ZSA9IGNyZWF0ZVN0cnVj
dHVyZTxYckZyYW1lU3RhdGUsIFhSX1RZUEVfRlJBTUVfU1RBVEU+KCk7CisgICAgICAgIGF1dG8g
ZnJhbWVXYWl0SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lV2FpdEluZm8sIFhSX1RZUEVf
RlJBTUVfV0FJVF9JTkZPPigpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHhyV2FpdEZyYW1lKG1f
c2Vzc2lvbiwgJmZyYW1lV2FpdEluZm8sICZmcmFtZVN0YXRlKTsKKyAgICAgICAgUkVUVVJOX0lG
X0ZBSUxFRChyZXN1bHQsICJ4cldhaXRGcmFtZSIsIG1faW5zdGFuY2UpOworICAgICAgICBYclRp
bWUgcHJlZGljdGVkVGltZSA9IGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7CisKKyAg
ICAgICAgYXV0byBmcmFtZUJlZ2luSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lQmVnaW5J
bmZvLCBYUl9UWVBFX0ZSQU1FX0JFR0lOX0lORk8+KCk7CisgICAgICAgIHJlc3VsdCA9IHhyQmVn
aW5GcmFtZShtX3Nlc3Npb24sICZmcmFtZUJlZ2luSW5mbyk7CisgICAgICAgIFJFVFVSTl9JRl9G
QUlMRUQocmVzdWx0LCAieHJCZWdpbkZyYW1lIiwgbV9pbnN0YW5jZSk7CisKKyAgICAgICAgRGV2
aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhOworICAgICAgICBmcmFtZURhdGEucHJlZGljdGVkRGlz
cGxheVRpbWUgPSBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOworCisgICAgICAgIGlm
IChzZXNzaW9uSXNBY3RpdmUobV9zZXNzaW9uU3RhdGUpKSB7CisgICAgICAgICAgICBBU1NFUlQo
bV9jb25maWd1cmF0aW9uVmlld3MuY29udGFpbnMobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25U
eXBlKSk7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBjb25maWd1cmF0aW9uVmlldyA9IG1fY29u
ZmlndXJhdGlvblZpZXdzLmdldChtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpOworCisg
ICAgICAgICAgICBhdXRvIHZpZXdMb2NhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld0xv
Y2F0ZUluZm8sIFhSX1RZUEVfVklFV19MT0NBVEVfSU5GTz4oKTsKKyAgICAgICAgICAgIHZpZXdM
b2NhdGVJbmZvLmRpc3BsYXlUaW1lID0gcHJlZGljdGVkVGltZTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiB1c2UgdGhlIGN1cnJlbnQgcmVmZXJlbmNlIHNwYWNlLgorICAgICAgICAgICAgLy8gdmll
d0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3BhY2U7CisKKyAgICAgICAgICAgIHVpbnQzMl90
IHZpZXdDb3VudCA9IGNvbmZpZ3VyYXRpb25WaWV3LnNpemUoKTsKKyAgICAgICAgICAgIFZlY3Rv
cjxYclZpZXc+IHZpZXdzKHZpZXdDb3VudCwgW10geworICAgICAgICAgICAgICAgIFhyVmlldyBv
YmplY3Q7CisgICAgICAgICAgICAgICAgc3RkOjptZW1zZXQoJm9iamVjdCwgMCwgc2l6ZW9mKFhy
VmlldykpOworICAgICAgICAgICAgICAgIG9iamVjdC50eXBlID0gWFJfVFlQRV9WSUVXOworICAg
ICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgICAgICB9KCkpOworCisgICAgICAg
ICAgICBhdXRvIHZpZXdTdGF0ZSA9IGNyZWF0ZVN0cnVjdHVyZTxYclZpZXdTdGF0ZSwgWFJfVFlQ
RV9WSUVXX1NUQVRFPigpOworICAgICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50T3V0cHV0Owor
ICAgICAgICAgICAgcmVzdWx0ID0geHJMb2NhdGVWaWV3cyhtX3Nlc3Npb24sICZ2aWV3TG9jYXRl
SW5mbywgJnZpZXdTdGF0ZSwgdmlld0NvdW50LCAmdmlld0NvdW50T3V0cHV0LCB2aWV3cy5kYXRh
KCkpOworICAgICAgICAgICAgaWYgKCFYUl9GQUlMRUQocmVzdWx0KSkgeworICAgICAgICAgICAg
ICAgIGZvciAoYXV0byYgdmlldyA6IHZpZXdzKQorICAgICAgICAgICAgICAgICAgICBmcmFtZURh
dGEudmlld1Bvc2VzLmFwcGVuZCh4clZpZXdUb1ZpZXdEYXRhKHZpZXcpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2ZyYW1lRGF0YSA9IFdU
Rk1vdmUoZnJhbWVEYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZnJhbWVEYXRhKSk7CisgICAgICAgIH0p
OworCisgICAgICAgIGF1dG8gZnJhbWVFbmRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVF
bmRJbmZvLCBYUl9UWVBFX0ZSQU1FX0VORF9JTkZPPigpOworICAgICAgICBmcmFtZUVuZEluZm8u
ZGlzcGxheVRpbWUgPSBwcmVkaWN0ZWRUaW1lOworICAgICAgICBmcmFtZUVuZEluZm8uZW52aXJv
bm1lbnRCbGVuZE1vZGUgPSBYUl9FTlZJUk9OTUVOVF9CTEVORF9NT0RFX09QQVFVRTsKKyAgICAg
ICAgZnJhbWVFbmRJbmZvLmxheWVyQ291bnQgPSAwOworICAgICAgICByZXN1bHQgPSB4ckVuZEZy
YW1lKG1fc2Vzc2lvbiwgJmZyYW1lRW5kSW5mbyk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQo
cmVzdWx0LCAieHJFbmRGcmFtZSIsIG1faW5zdGFuY2UpOworICAgIH0pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBQbGF0Zm9ybVhSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
b3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAppbmRleCBhYTJmNzgwZWY5MTI5NjIwZjQ0MTJkYjQ5
YTBlOGEwNDJkNThiNTI5Li41YmViZTY5NjY5MzI3ZGIyYzgxNWI1NTZhZWRkMWNhOTliNDZlMTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1Y
Uk9wZW5YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9y
bVhST3BlblhSLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFBsYXRmb3JtWFIgewogY2xh
c3MgT3BlblhSRGV2aWNlIGZpbmFsIDogcHVibGljIERldmljZSB7CiBwdWJsaWM6CiAgICAgT3Bl
blhSRGV2aWNlKFhyU3lzdGVtSWQsIFhySW5zdGFuY2UsIFdvcmtRdWV1ZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgfk9wZW5YUkRldmljZSgpOwogICAgIFhyU3lzdGVtSWQg
eHJTeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KIAogcHJpdmF0ZToKQEAg
LTUyLDEzICs1MSwyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29sbGVjdENvbmZpZ3VyYXRpb25W
aWV3cygpOwogCiAgICAgTGlzdE9mRW5hYmxlZEZlYXR1cmVzIGVudW1lcmF0ZVJlZmVyZW5jZVNw
YWNlcyhYclNlc3Npb24mKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFj
ZShSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfTsKIAogICAgIFdlYkNvcmU6OkludFNpemUg
cmVjb21tZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlKSBmaW5hbDsKIAogICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlKSBmaW5hbDsKICAgICB2b2lk
IHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRz
U2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZvaWQgd2FpdFVudGlsU3RvcHBpbmcoKTsKIAorICAgIHZvaWQgcG9sbEV2ZW50cygp
OworICAgIFhyUmVzdWx0IGJlZ2luU2Vzc2lvbigpOworICAgIHZvaWQgZW5kU2Vzc2lvbigpOwog
ICAgIHZvaWQgcmVzZXRTZXNzaW9uKCk7CisgICAgdm9pZCBoYW5kbGVTZXNzaW9uU3RhdGVDaGFu
Z2UoKTsKKworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZp
bmFsOwogCiAgICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1h
cDxYclZpZXdDb25maWd1cmF0aW9uVHlwZSwgWHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMs
IEludEhhc2g8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJh
aXRzPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPj47CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9w
ZXJ0aWVzTWFwIG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzOwpAQCAtNjgsNiArNzYsNyBA
QCBwcml2YXRlOgogICAgIFhyU3lzdGVtSWQgbV9zeXN0ZW1JZDsKICAgICBYckluc3RhbmNlIG1f
aW5zdGFuY2U7CiAgICAgWHJTZXNzaW9uIG1fc2Vzc2lvbiB7IFhSX05VTExfSEFORExFIH07Cisg
ICAgWHJTZXNzaW9uU3RhdGUgbV9zZXNzaW9uU3RhdGUgeyBYUl9TRVNTSU9OX1NUQVRFX1VOS05P
V04gfTsKIAogICAgIFdvcmtRdWV1ZSYgbV9xdWV1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9XZWJGYWtlWFJEZXZpY2UuY3BwCmluZGV4IGE0N2MxZWNhN2RlZGNlZGE1MDUwYWQ5N2JjNDdk
ODU2NWJhNTkwZWYuLjU0MDE4ZGE3ZWJiNTNkZDUxOTQyZGU3NjYxNDk2NzJmZjFhYzg0NTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKQEAgLTMxLDE0ICsz
MSwyOCBAQAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHkuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIldlYkZha2VYUklucHV0Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBGYWtlWFJGcmFtZVRpbWUgPSAxNV9tczsKKwog
dm9pZCBGYWtlWFJWaWV3OjpzZXRGaWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZp
ZXdJbml0IGZvdikKIHsKICAgICBtX2ZvdiA9IGZvdjsKIH0KIAorU2ltdWxhdGVkWFJEZXZpY2U6
OlNpbXVsYXRlZFhSRGV2aWNlKCkKKyAgICA6IG1fZnJhbWVUaW1lcigqdGhpcywgJlNpbXVsYXRl
ZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpCit7CisgICAgbV9zdXBwb3J0c09yaWVudGF0aW9u
VHJhY2tpbmcgPSB0cnVlOworfQorCitTaW11bGF0ZWRYUkRldmljZTo6flNpbXVsYXRlZFhSRGV2
aWNlKCkKK3sKKyAgICBzdG9wVGltZXIoKTsKK30KKwogdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6
c2ltdWxhdGVTaHV0ZG93bkNvbXBsZXRlZCgpCiB7CiAgICAgaWYgKG1fdHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQpCkBAIC00OSw2ICs2MywyNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpz
aHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKIHsKICAgICBpZiAobV9zdXBwb3J0c1NodXRk
b3duTm90aWZpY2F0aW9uKQogICAgICAgICBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7Cisg
ICAgc3RvcFRpbWVyKCk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnN0b3BUaW1lcigp
Cit7CisgICAgaWYgKG1fZnJhbWVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZyYW1lVGlt
ZXIuc3RvcCgpOworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQo
KQoreworICAgIGF1dG8gY2FsbGJhY2tzID0gV1RGTW92ZShtX2NhbGxiYWNrcyk7CisgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKK30K
Kwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICBpZiAoIW1fZnJhbWVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZyYW1l
VGltZXIuc3RhcnRPbmVTaG90KEZha2VYUkZyYW1lVGltZSk7CiB9CiAKIFdlYkZha2VYUkRldmlj
ZTo6V2ViRmFrZVhSRGV2aWNlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2Vi
RmFrZVhSRGV2aWNlLmgKaW5kZXggODQ3YmJjYjE3NDQ4NDQ4ZjBlYzdlOGNlYjFiNmZkNmU5ZmFj
OTU4OC4uMzkxYmZjMzQ3ZWVmOWFhYWYxN2JkMmJhOGI2YmE0MzZmMDAwNDZkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCkBAIC02Myw3ICs2Myw4IEBAIHByaXZh
dGU6CiBjbGFzcyBTaW11bGF0ZWRYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpE
ZXZpY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNpbXVs
YXRlZFhSRGV2aWNlKCkgeyBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9IHRydWU7IH0K
KyAgICBTaW11bGF0ZWRYUkRldmljZSgpOworICAgIH5TaW11bGF0ZWRYUkRldmljZSgpOwogICAg
IHZvaWQgc2V0TmF0aXZlQm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiBn
ZW9tZXRyeSkgeyBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5ID0gZ2VvbWV0cnk7IH0KICAgICB2b2lk
IHNldFZpZXdlck9yaWdpbihSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvcmlnaW4pIHsg
bV92aWV3ZXJPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KICAgICB2b2lkIHNldEZsb29yT3Jp
Z2luKFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX2Zsb29yT3JpZ2lu
ID0gV1RGTW92ZShvcmlnaW4pOyB9CkBAIC03NSwxMiArNzYsMjAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9k
ZSkgZmluYWwgeyB9CiAgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmlu
YWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbjsgfQorICAgIHZv
aWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlw
ZSkgZmluYWwgeyB9CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2sm
JikgZmluYWw7CisKKyAgICB2b2lkIHN0b3BUaW1lcigpOworICAgIHZvaWQgZnJhbWVUaW1lckZp
cmVkKCk7CisKICAgICBPcHRpb25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+PiBtX25hdGl2
ZUJvdW5kc0dlb21ldHJ5OwogICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3ZpZXdl
ck9yaWdpbjsKICAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9mbG9vck9yaWdpbjsK
ICAgICBib29sIG1fZW11bGF0ZWRQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZjxG
YWtlWFJWaWV3Pj4gbV92aWV3czsKICAgICBib29sIG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNh
dGlvbiB7IGZhbHNlIH07CisgICAgVGltZXIgbV9mcmFtZVRpbWVyOworICAgIFZlY3RvcjxSZXF1
ZXN0RnJhbWVDYWxsYmFjaz4gbV9jYWxsYmFja3M7CiB9OwogCiBjbGFzcyBXZWJGYWtlWFJEZXZp
Y2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJGYWtlWFJEZXZpY2U+IHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBm
OWI4OTllMDMwYzNkZDQ1MzUyNDQyY2YyNmNjYjcwNjEwNjUwM2I0Li5lZmFlNGQ3MjIwMTRjNjJh
MDI3Y2U4ZWYzMTRlYzM5ZDYzYjdmYzJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDIt
MDMgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+IGFuZCBJbWFub2wg
RmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIENvbXBsZXRlIFhS
U2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIxLTAyLTAyICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHTElCXSBHYXJkZW5pbmcgZGVidWcgdGltZW91dHMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDgyMzk2MmE1OTY2MDRmNWUzZjYxZWNiNzIyMjFjNzNj
YWNhOTc3MzIuLmE3OWU1YzVhYjcxMzExMzIxYTU2ZWU3OTEzZDRiMDA3YzU0M2I0M2QgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTAzICBT
ZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5h
bmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Np
b246OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIFhSU2Vzc2lvbiBSQUYgdGVz
dHMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVl
c3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwog
MjAyMS0wMi0wMyAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3Mt
Z3JpZF0gV1BUIHRlc3QgY3NzL2Nzcy1ncmlkL2dyaWQtbW9kZWwvZ3JpZC1ib3gtc2l6aW5nLTAw
MS5odG1sIGZhaWxzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0
YW1wLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3Rh
bXAuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1OGE0MjNmYzZiMTk4MTEyOTM1YmZm
MjkwNzI3OGZkYTk0ZmNjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVfdGltZXN0YW1wLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFT
UyBYUkZyYW1lIGdldFZpZXdlclBvc2UgdXBkYXRlcyBvbiB0aGUgbmV4dCBmcmFtZSBmb3IgaW1t
ZXJzaXZlCitQQVNTIFhSRnJhbWUgZ2V0Vmlld2VyUG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0IGZy
YW1lIGZvciBub24taW1tZXJzaXZlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggMjczYjI0YzM0NzEwMzYwZjVjYjZiMGZiNjg5YWU3ZjE4NmM0ZjI1Zi4u
MTdhMmQ1Y2E3ZDg0MmY5NDAwYjc4ZWZkZjdmOGU1OTM4M2FlN2IzMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYzOCw2ICs2MzgsNyBAQCB3ZWJraXQu
b3JnL2IvMjA5ODU5IHdlYmtpdC5vcmcvYi8yMTU2MzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94cgogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZV9pbnZhbGlk
aGFuZGxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZmVhdHVyZXNfZGV2aWNlU3Vw
cG9ydC5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFt
ZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0
YW1wLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNwYWNl
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5kb3cu
aHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS94ckRldmljZV9pc1Nlc3Npb25TdXBwb3J0ZWRfaW1t
ZXJzaXZlLWFyLmh0dHBzLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419579</attachid>
            <date>2021-02-08 05:46:10 -0800</date>
            <delta_ts>2021-02-08 06:49:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220979-20210208144609.patch</filename>
            <type>text/plain</type>
            <size>48125</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYxYTIwYzc1NmY3YThk
NTQ1M2YwNWFlZDExNWYzMTlmMjU3NmQ0NC4uMzFiNTFhZTkxNGRmODBhNjI1NWY1NzFkY2E4Njgy
ZTUwOGRiYzUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBsZW1lbnQgdGhlIHJlbmRlciBsb29w
IGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBYUiBzZXNzaW9ucy4KKyAgICAgICAgLSBJbXBsZW1l
bnQgV2ViWFIgcmVuZGVyIHN0YXRlIHVwZGF0ZXMuCisgICAgICAgIC0gQ3JlYXRlIHRoZSBGcmFt
ZURhdGEgc3RydWN0IHVzZWQgdG8gcXVlcnkgZnJhbWUgc3BlY2lmaWMgZGF0YSBmcm9tIFhSIGRl
dmljZXMuCisgICAgICAgIC0gVXNlIHdpbmRvdyBSQUYgZm9yIGlubGluZSBYUiBzZXNzaW9ucy4K
KyAgICAgICAgLSBJbXBsZW1lbnQgV2ViRmFrZVhSRGV2aWNlIHRlc3RpbmcgcmVuZGVyaW5nIGxv
b3AgdXNpbmcgYSB0aW1lci4KKyAgICAgICAgLSBJbXBsZW1lbnQgT3BlblhSIHNlc3Npb24gc3Rh
dGVzIGFuZCBzZXNzaW9uIHRyYWNraW5nLgorCS0gSW1wcm92ZSBPcGVuWFIgZXZlbnQgaGFuZGxp
bmcuCisKKyAgICAgICAgVGVzdGVkIGJ5IHRoZSBXZWJYUiBwbGF0Zm9ybSB0ZXN0cy4gCisKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOiBBZGQgbV9hY3RpdmUsIG1fdGlt
ZSBhbmQgbV9zZXNzaW9uIG1lbWJlcnMKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
RnJhbWU6OnNldFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2V0QWN0aXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmlzQWN0aXZlIGNvbnN0KToKKworICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oOiBBZGQgbV9jb21wb3NpdGlv
bkRpc2FibGVkIG1lbWJlciBhbmQgb3V0cHV0IGNhbnZhcyBzZXR0ZXIKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldE91dHB1dENhbnZhcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUlJlbmRlclN0YXRlOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQpOgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9u
OjpXZWJYUlNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjppbml0aWFs
aXplKTogcmVxdWlyZWQgdG8gY3JlYXQgdGhlIFhSRnJhbWUgd2l0aCBtYWtlUmVmKHRoaXMpCisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFjZSk6IGlt
cGxlbWVudCByZWZlcmVuY2Ugc3BhY2UgY3JlYXRpb24KKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
U2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKTogaW1wbGVtZW50IHJlbmRlciBsb29wIGZv
ciBpbW1lcnNpdmUgYW5kIGlubGluZSBzZXNzaW9ucworICAgICAgICAoV2ViQ29yZTo6V2ViWFJT
ZXNzaW9uOjphcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSk6IGltcGxlbWVudCBXZWJYUiByZW5kZXIg
c3RhdGUgdXBkYXRlcworICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpmcmFtZVNob3Vs
ZEJlUmVuZGVyZWQgY29uc3QpOiBhZGQgY2hlY2sgYmFzZWQgb24gdGhlIHNwZWMgCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSk6IGltcGxlbWVudCBoZWxwZXIg
ZnVuY3Rpb24gdG8gZGlzcGF0Y2ggYSBmcmFtZSByZXF1ZXN0IHRvIFhSIGRldmljZXMKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6b25GcmFtZSk6IHByb2Nlc3MgdGhlIFhSIGZyYW1l
IGFuZCBjYWxsIHRoZSBSQUYgY2FsbGJhY2tzCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOiBJ
bXBsZW1lbnQgcmVuZGVyIGxvb3AgdXNpbmcgd2luZG93IHJhZiBsb29wLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJTeXN0ZW06OldlYlhSU3lzdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
U3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZpY2UpOiBBZGQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dAorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15SW5s
aW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOiBBZGFwdCB0byB0aGUgbmV3IGludGVyZmFjZQorCisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJXZWJHTExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSV2ViR0xM
YXllcjo6Y2FudmFzIGNvbnN0KTogSW1wbGVtZW50IGNhbnZhcyBnZXR0ZXIKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJX
ZWJHTExheWVyOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KTogYWRkCisgICAgICAgIChXZWJD
b3JlOjpXZWJYUldlYkdMTGF5ZXI6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQpOiBhZGQKKworICAg
ICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDogQWRkIEZyYW1lRGF0YSBzdHJ1Y3QKKwor
ICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcDogSW1wbGVt
ZW50IHJlbmRlciBsb29wIHVzaW5nIE9wZW5YUiBBUEkKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRl
dmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChQbGF0Zm9ybVhS
OjpPcGVuWFJEZXZpY2U6OnBvbGxFdmVudHMpOiBJbXBsZW1lbnQgZXZlbnQgbG9vcCB0byBxdWVy
eSBtX3Nlc3Npb25TdGF0ZQorICAgICAgICAoUGxhdGZvcm1YUjo6c2Vzc2lvbklzQWN0aXZlKTog
YWRkCisgICAgICAgIChQbGF0Zm9ybVhSOjpzZXNzaW9uSXNSdW5uaW5nKTogYWRkCisgICAgICAg
IChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmJlZ2luU2Vzc2lvbik6CisgICAgICAgIChQbGF0
Zm9ybVhSOjp4clZpZXdUb1ZpZXdEYXRhKTogaGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgZGF0
YSBmcm9tIE9wZW5YUgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpyZXF1ZXN0
RnJhbWUpOiBzdGFydCBPcGVuWFIgZnJhbWUsIHF1ZXJ5IHBvc2UgYW5kIHZpZXcgZGF0YSAKKyAg
ICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6d2FpdFVudGlsU3RvcHBpbmcpOiBwcm9w
ZXJseSB3YWl0IGZvciBPcGVuWFIgZXZlbnQgYmVmb3JlIGVuZGluZyB0aGUgc2Vzc2lvbi4KKyAg
ICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOgorCisKKyAgICAg
ICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IEltcGxlbWVudCByZW5kZXIgbG9vcCB1
c2luZyBhIHRpbWVyCisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6U2ltdWxh
dGVkWFJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6On5TaW11
bGF0ZWRYUkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6c2h1
dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRY
UkRldmljZTo6c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNl
OjpmcmFtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6
OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaDoKKwog
MjAyMS0wMi0wMyAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3Mt
Z3JpZF0gV1BUIHRlc3QgY3NzL2Nzcy1ncmlkL2dyaWQtbW9kZWwvZ3JpZC1ib3gtc2l6aW5nLTAw
MS5odG1sIGZhaWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNw
cAppbmRleCA5MzVkYzEyN2M5ZDA3YTdjOGQyMzg0MTU0NTg3ZDUxMzU4ODdhZTFhLi5mMjc4NzYx
YjBhN2I3ZDI5ZDE3OTQyMjM1MGEyYWExOThhMjNiZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTQ4LDEwICs0OCw2IEBAIFdlYlhSRnJhbWU6
OldlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uKQogCiBXZWJYUkZyYW1lOjp+
V2ViWFJGcmFtZSgpID0gZGVmYXVsdDsKIAotY29uc3QgV2ViWFJTZXNzaW9uJiBXZWJYUkZyYW1l
OjpzZXNzaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZXNzaW9uOwotfQogCiBSZWZQdHI8
V2ViWFJWaWV3ZXJQb3NlPiBXZWJYUkZyYW1lOjpnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVm
ZXJlbmNlU3BhY2UmKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
aAppbmRleCA4MDhhNjc2NGYwZDJjNWFlNjFlNGQ2NThjMjgyNTA1NzlmZTViNjI3Li4yYTI2YWQ4
NmEyYzMwZGE4YzIzZGZiNmM3YmJiOTAzODJkMTJlMDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdF
QlhSKQogCisjaW5jbHVkZSAiRE9NSGlnaFJlc1RpbWVTdGFtcC5oIgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTQ2LDE0ICs0NywyMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJYUkZy
YW1lPiBjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJik7CiAgICAgfldlYlhSRnJhbWUoKTsKIAot
ICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0OworICAgIGNvbnN0IFdlYlhS
U2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogCiAg
ICAgUmVmUHRyPFdlYlhSVmlld2VyUG9zZT4gZ2V0Vmlld2VyUG9zZShjb25zdCBXZWJYUlJlZmVy
ZW5jZVNwYWNlJik7CiAgICAgUmVmUHRyPFdlYlhSUG9zZT4gZ2V0UG9zZShjb25zdCBXZWJYUlNw
YWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOwogCisgICAgdm9pZCBzZXRUaW1lKERPTUhpZ2hSZXNU
aW1lU3RhbXAgdGltZSkgeyBtX3RpbWUgPSB0aW1lOyB9CisgICAgdm9pZCBzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpIHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0KKyAgICBib29sIGlzQWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KKwogcHJpdmF0ZToKLSAgICBXZWJYUkZyYW1lKFJlZjxX
ZWJYUlNlc3Npb24+JiYpOworICAgIGV4cGxpY2l0IFdlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lv
bj4mJik7CiAKKyAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsKKyAgICBET01IaWdoUmVzVGlt
ZVN0YW1wIG1fdGltZTsKICAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCmluZGV4
IDFlNDM2M2YxZjE5NDMxZTRhMWVjOTU4ZjFiZmEyYjQ3MDc0NTc3YTIuLmU2ZDQzYzA0Njg5NTk4
YjUzZGE2ZDRiYmI3M2YyZGMxYTQxM2EyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCkBAIC01Niw2ICs1NiwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRCYXNlTGF5ZXIoV2ViWFJXZWJHTExheWVyKiBiYXNlTGF5ZXIpIHsgbV9iYXNl
TGF5ZXIgPSBiYXNlTGF5ZXI7IH0KIAogICAgIEhUTUxDYW52YXNFbGVtZW50KiBvdXRwdXRDYW52
YXMoKSBjb25zdCB7IHJldHVybiBtX291dHB1dENhbnZhcy5nZXQoKTsgfQorICAgIHZvaWQgc2V0
T3V0cHV0Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpIHsgbV9vdXRwdXRDYW52YXMg
PSBtYWtlV2Vha1B0cihjYW52YXMpOyB9CisKKyAgICBib29sIGNvbXBvc2l0aW9uRGlzYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KKyAgICB2b2lkIHNldENv
bXBvc2l0aW9uRGlzYWJsZWQoYm9vbCBjb21wb3NpdGlvbkRpc2FibGVkKSB7IG1fY29tcG9zaXRp
b25EaXNhYmxlZCA9IGNvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBXZWJYUlJlbmRlclN0YXRlKE9wdGlvbmFsPGRvdWJsZT4gZmllbGRPZlZpZXcpOwpAQCAt
NjksNiArNzMsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9pbmxpbmVWZXJ0
aWNhbEZpZWxkT2ZWaWV3OyAvLyBpbiByYWRpYW5zCiAgICAgUmVmUHRyPFdlYlhSV2ViR0xMYXll
cj4gbV9iYXNlTGF5ZXI7CiAgICAgV2Vha1B0cjxIVE1MQ2FudmFzRWxlbWVudD4gbV9vdXRwdXRD
YW52YXM7CisgICAgYm9vbCBtX2NvbXBvc2l0aW9uRGlzYWJsZWQgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uY3BwCmluZGV4IGQ4ZTJmODExYzI0NWIwY2ViMGFjZWZlYTNkZmVkYTU0ZTUy
OGIwMDUuLmM1MmRhNGY5NzgzNjJiMDQwYWU4NjFiOWY3N2ZjOGFkODczNDIxNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTQ1LDcgKzQ1
LDkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSU2Vzc2lvbik7CiAKIFJlZjxX
ZWJYUlNlc3Npb24+IFdlYlhSU2Vzc2lvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vi
WFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kZSBtb2RlLCBQbGF0Zm9ybVhSOjpEZXZpY2Um
IGRldmljZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlNlc3Npb24oZG9jdW1l
bnQsIHN5c3RlbSwgbW9kZSwgZGV2aWNlKSk7CisgICAgYXV0byBzZXNzaW9uID0gYWRvcHRSZWYo
Km5ldyBXZWJYUlNlc3Npb24oZG9jdW1lbnQsIHN5c3RlbSwgbW9kZSwgZGV2aWNlKSk7CisgICAg
c2Vzc2lvbi0+aW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBzZXNzaW9uOwogfQogCiBXZWJYUlNl
c3Npb246OldlYlhSU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lzdGVtJiBzeXN0
ZW0sIFhSU2Vzc2lvbk1vZGUgbW9kZSwgUGxhdGZvcm1YUjo6RGV2aWNlJiBkZXZpY2UpCkBAIC01
NSwxMSArNTcsMTUgQEAgV2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Npb24oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Npb25Nb2QKICAgICAsIG1fbW9kZShtb2Rl
KQogICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKICAgICAsIG1fYWN0aXZlUmVu
ZGVyU3RhdGUoV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRlKG1vZGUpKQotICAgICwgbV9hbmltYXRp
b25UaW1lcigqdGhpcywgJldlYlhSU2Vzc2lvbjo6YW5pbWF0aW9uVGltZXJGaXJlZCkKKyAgICAs
IG1fdGltZU9yaWdpbihNb25vdG9uaWNUaW1lOjpub3coKSkKIHsKICAgICBtX2RldmljZS0+aW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUpOwogICAgIG1fZGV2aWNlLT5zZXRUcmFj
a2luZ0FuZFJlbmRlcmluZ0NsaWVudChtYWtlV2Vha1B0cigqdGhpcykpOwogCisgICAgLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcmVmLWZvci1kb20teHJyZWZlcmVu
Y2VzcGFjZXR5cGUtdmlld2VyJUUyJTkxJUEyCisgICAgLy8gRXZlcnkgc2Vzc2lvbiBNVVNUIHN1
cHBvcnQgdmlld2VyIFhSUmVmZXJlbmNlU3BhY2VzLgorICAgIG1fZGV2aWNlLT5pbml0aWFsaXpl
UmVmZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlcik7CisKICAgICBzdXNw
ZW5kSWZOZWVkZWQoKTsKIH0KIApAQCAtNjksNiArNzUsMTEgQEAgV2ViWFJTZXNzaW9uOjp+V2Vi
WFJTZXNzaW9uKCkKICAgICAgICAgbV9kZXZpY2UtPnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJp
bmcoKTsKIH0KIAordm9pZCBXZWJYUlNlc3Npb246OmluaXRpYWxpemUoKQoreworICAgIG1fYW5p
bWF0aW9uRnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigqdGhpcykpOworfQorCiBY
UkVudmlyb25tZW50QmxlbmRNb2RlIFdlYlhSU2Vzc2lvbjo6ZW52aXJvbm1lbnRCbGVuZE1vZGUo
KSBjb25zdAogewogICAgIHJldHVybiBtX2Vudmlyb25tZW50QmxlbmRNb2RlOwpAQCAtMTk4LDY2
ICsyMDksNDcgQEAgdm9pZCBXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFjZShYUlJl
ZmVyZW5jZVNwYWNlVHlwZSB0eXBlLCBSZXF1ZXN0UmVmZXIKICAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisKICAgICAvLyAxLiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBQcm9taXNlLgogICAgIC8vIDIu
IFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0
eXBlXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIC8vICAyLjEuIENyZWF0ZSBh
IHJlZmVyZW5jZSBzcGFjZSwgcmVmZXJlbmNlU3BhY2UsIHdpdGggdGhlIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlIHR5cGUuCi0gICAgICAgIC8vICAyLjIuIElmIHJlZmVyZW5jZVNwYWNlIGlzIG51bGws
IHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvciBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0
eXBlXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIC8vIDIuMS4gSWYgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHJlZmVy
ZW5jZSBzcGFjZSBpcyBzdXBwb3J0ZWQgZm9yIHR5cGUgYW5kIHNlc3Npb24gaXMgZmFsc2UsIHF1
ZXVlIGEgdGFzayB0byByZWplY3QgcHJvbWlzZQorICAgICAgICAvLyB3aXRoIGEgTm90U3VwcG9y
dGVkRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICBpZiAoIXJlZmVyZW5jZVNw
YWNlSXNTdXBwb3J0ZWQodHlwZSkpIHsKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOworICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13
ZWIuZ2l0aHViLmlvL3dlYnhyLyNjcmVhdGUtYS1yZWZlcmVuY2Utc3BhY2UKLSAgICAgICAgUmVm
UHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IHJlZmVyZW5jZVNwYWNlOwotICAgICAgICBpZiAodHlw
ZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQotICAgICAgICAgICAgcmVm
ZXJlbmNlU3BhY2UgPSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvd25jYXN0
PERvY3VtZW50Pihjb250ZXh0KSwgbWFrZVJlZigqdGhpcyksIHR5cGUpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0
ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKLQot
ICAgICAgICAvLyAgMi4zLiBSZXNvbHZlIHByb21pc2Ugd2l0aCByZWZlcmVuY2VTcGFjZS4KLSAg
ICAgICAgLy8gMy4gUmV0dXJuIHByb21pc2UuCi0gICAgICAgIHByb21pc2UucmVzb2x2ZShyZWZl
cmVuY2VTcGFjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgLy8gMi4yLiBTZXQgdXAgYW55
IHBsYXRmb3JtIHJlc291cmNlcyByZXF1aXJlZCB0byB0cmFjayByZWZlcmVuY2Ugc3BhY2VzIG9m
IHR5cGUgdHlwZS4KKyAgICAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVSZWZlcmVuY2VTcGFjZSh0
eXBlKTsKKworICAgICAgICAvLyAyLjMuIFF1ZXVlIGEgdGFzayB0byBydW4gdGhlIGZvbGxvd2lu
ZyBzdGVwczoKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpXZWJYUiwgW3RoaXMsIHR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYoZG93bmNhc3Q8
RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKTsKKyAgICAgICAgICAgIC8vIDIu
NC4gQ3JlYXRlIGEgcmVmZXJlbmNlIHNwYWNlLCByZWZlcmVuY2VTcGFjZSwgd2l0aCB0eXBlIGFu
ZCBzZXNzaW9uLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5p
by93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCisgICAgICAgICAgICBSZWZQdHI8V2Vi
WFJSZWZlcmVuY2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7CisgICAgICAgICAgICBpZiAodHlwZSA9
PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQorICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVu
dCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50
LCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7CisKKyAgICAgICAgICAgIC8vIDIuNS4gUmVzb2x2ZSBw
cm9taXNlIHdpdGggcmVmZXJlbmNlU3BhY2UuCisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUo
cmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIH0pOwogICAgIH0pOwog
fQogCi12b2lkIFdlYlhSU2Vzc2lvbjo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCi17Ci0gICAgbV9s
YXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLQotICAg
IGlmIChtX2NhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRP
RE86IHJldHJpZXZlIGZyYW1lIGZyb20gcGxhdGZvcm0uCi0gICAgYXV0byBmcmFtZSA9IFdlYlhS
RnJhbWU6OmNyZWF0ZSgqdGhpcyk7Ci0KLSAgICBtX3J1bm5pbmdDYWxsYmFja3Muc3dhcChtX2Nh
bGxiYWNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IG1fcnVubmluZ0NhbGxiYWNrcykg
ewotICAgICAgICBpZiAoY2FsbGJhY2stPmlzQ2FuY2VsbGVkKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2ZW50KG1fbGFzdEFuaW1hdGlvbkZyYW1l
VGltZXN0YW1wLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCksIGZyYW1lLmdldCgp
KTsKLSAgICB9Ci0KLSAgICBtX3J1bm5pbmdDYWxsYmFja3MuY2xlYXIoKTsKLX0KLQotdm9pZCBX
ZWJYUlNlc3Npb246OnNjaGVkdWxlQW5pbWF0aW9uKCkKLXsKLSAgICBpZiAobV9hbmltYXRpb25U
aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9lbmRlZCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gVE9ETzogdXNlIGRldmljZSdzIHJlZnJlc2ggcmF0ZS4g
TGV0J3Mgc3RhcnQgd2l0aCA2MGZwcy4KLSAgICBTZWNvbmRzIGFuaW1hdGlvbkludGVydmFsID0g
MTVfbXM7Ci0gICAgU2Vjb25kcyBzY2hlZHVsZURlbGF5ID0gc3RkOjptYXgoYW5pbWF0aW9uSW50
ZXJ2YWwgLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVz
dGFtcCksIDBfcyk7Ci0gICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3Qoc2NoZWR1bGVE
ZWxheSk7Ci19Ci0KIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2Rv
bS14cnNlc3Npb24tcmVxdWVzdGFuaW1hdGlvbmZyYW1lCiB1bnNpZ25lZCBXZWJYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZShSZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFjaz4mJiBjYWxs
YmFjaykKIHsKKyAgICAvLyBJZ25vcmUgYW55IG5ldyBmcmFtZSByZXF1ZXN0cyBvbmNlIHRoZSBz
ZXNzaW9uIGlzIGVuZGVkLgorICAgIGlmIChtX2VuZGVkKQorICAgICAgICByZXR1cm4gMDsKKwog
ICAgIC8vIDEuIExldCBzZXNzaW9uIGJlIHRoZSB0YXJnZXQgWFJTZXNzaW9uIG9iamVjdC4KICAg
ICAvLyAyLiBJbmNyZW1lbnQgc2Vzc2lvbidzIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFjayBpZGVu
dGlmaWVyIGJ5IG9uZS4KICAgICB1bnNpZ25lZCBuZXdJZCA9IG1fbmV4dENhbGxiYWNrSWQrKzsK
QEAgLTI2Nyw3ICsyNTksMTIgQEAgdW5zaWduZWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoUmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGIKICAgICBjYWxsYmFj
ay0+c2V0Q2FsbGJhY2tJZChuZXdJZCk7CiAgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUo
Y2FsbGJhY2spKTsKIAotICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgQVNTRVJUKG1fYW5p
bWF0aW9uRnJhbWUpOworICAgIC8vIFNjcmlwdCBjYW4gYWRkIG11bHRpcGxlIHJlcXVlc3RBbmlt
YXRpb25GcmFtZSBjYWxsYmFja3MgYnV0IHdlIHNob3VsZCBvbmx5IHJlcXVlc3QgYSBkZXZpY2Ug
ZnJhbWUgb25jZS4KKyAgICAvLyBXaGVuIG1fYW5pbWF0aW9uRnJhbWUgaXMgYWN0aXZlLCB0aGUg
bmV4dCByZXF1ZXN0RnJhbWUgaXMgc2NoZWR1bGVkIGF0IHRoZSBlbmQgb2YgV2ViWFJTZXNzaW9u
OjpvbkZyYW1lKCkgdG8gcHJldmVudAorICAgIC8vIHJlcXVlc3RpbmcgYSBuZXcgZnJhbWUgYmVm
b3JlIHRoZSBjdXJyZW50IG9uZSBoYXMgZW5kZWQuCisgICAgaWYgKG1fY2FsbGJhY2tzLnNpemUo
KSA9PSAxICYmICFtX2FuaW1hdGlvbkZyYW1lLT5pc0FjdGl2ZSgpKQorICAgICAgICByZXF1ZXN0
RnJhbWUoKTsKIAogICAgIC8vIDQuIFJldHVybiBzZXNzaW9uJ3MgYW5pbWF0aW9uIGZyYW1lIGNh
bGxiYWNrIGlkZW50aWZpZXIncyBjdXJyZW50IHZhbHVlLgogICAgIHJldHVybiBuZXdJZDsKQEAg
LTMzNiw2ICszMzMsMTAgQEAgdm9pZCBXZWJYUlNlc3Npb246OnNodXRkb3duKEluaXRpYXRlZEJ5
U3lzdGVtIGluaXRpYXRlZEJ5U3lzdGVtKQogICAgIC8vIDIuIFNldCBzZXNzaW9uJ3MgZW5kZWQg
dmFsdWUgdG8gdHJ1ZS4KICAgICBtX2VuZGVkID0gdHJ1ZTsKIAorICAgIC8vIFJlbGVhc2UgYW5p
bWF0aW9uRnJhbWUsIHdoaWNoIGNvbnRhaW5zIGEgUmVmIHRvIHRoaXMgc2Vzc2lvbi4KKyAgICBt
X2FuaW1hdGlvbkZyYW1lLT5zZXRBY3RpdmUoZmFsc2UpOworICAgIG1fYW5pbWF0aW9uRnJhbWUg
PSBudWxscHRyOworCiAgICAgLy8gMy4gSWYgdGhlIGFjdGl2ZSBpbW1lcnNpdmUgc2Vzc2lvbiBp
cyBlcXVhbCB0byBzZXNzaW9uLCBzZXQgdGhlIGFjdGl2ZSBpbW1lcnNpdmUgc2Vzc2lvbiB0byBu
dWxsLgogICAgIC8vIDQuIFJlbW92ZSBzZXNzaW9uIGZyb20gdGhlIGxpc3Qgb2YgaW5saW5lIHNl
c3Npb25zLgogICAgIG1feHJTeXN0ZW0uc2Vzc2lvbkVuZGVkKCp0aGlzKTsKQEAgLTQyMCw2ICs0
MjEsMTM3IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpzZXNzaW9uRGlkRW5kKCkKICAgICBzaHV0ZG93
bihJbml0aWF0ZWRCeVN5c3RlbTo6WWVzKTsKIH0KIAordm9pZCBXZWJYUlNlc3Npb246OmFwcGx5
UGVuZGluZ1JlbmRlclN0YXRlKCkKK3sKKyAgICAvLyBodHRwczogLy9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jYXBwbHktdGhlLXBlbmRpbmctcmVuZGVyLXN0YXRlCisgICAgLy8gMS4g
TGV0IGFjdGl2ZVN0YXRlIGJlIHNlc3Npb27igJlzIGFjdGl2ZSByZW5kZXIgc3RhdGUuCisgICAg
Ly8gMi4gTGV0IG5ld1N0YXRlIGJlIHNlc3Npb27igJlzIHBlbmRpbmcgcmVuZGVyIHN0YXRlLgor
ICAgIC8vIDMuIFNldCBzZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRlciBzdGF0ZSB0byBudWxsLgor
ICAgIGF1dG8gbmV3U3RhdGUgPSBtX3BlbmRpbmdSZW5kZXJTdGF0ZTsKKyAgICBBU1NFUlQobmV3
U3RhdGUpOworCisgICAgLy8gNC4gTGV0IG9sZEJhc2VMYXllciBiZSBhY3RpdmVTdGF0ZeKAmXMg
YmFzZUxheWVyLgorICAgIC8vIDUuIExldCBvbGRMYXllcnMgYmUgYWN0aXZlU3RhdGXigJlzIGxh
eWVycy4KKyAgICAvLyBGSVhNRTogdGhvc2UgYXJlIG9ubHkgbmVlZGVkIGZvciBzdGVwIDYuMi4K
KworICAgIC8vIDYuMSBTZXQgYWN0aXZlU3RhdGUgdG8gbmV3U3RhdGUuCisgICAgbV9hY3RpdmVS
ZW5kZXJTdGF0ZSA9IG5ld1N0YXRlOworCisgICAgLy8gNi4yIElmIG9sZEJhc2VMYXllciBpcyBu
b3QgZXF1YWwgdG8gYWN0aXZlU3RhdGXigJlzIGJhc2VMYXllciwgb2xkTGF5ZXJzIGlzIG5vdCBl
cXVhbCB0byBhY3RpdmVTdGF0ZeKAmXMgbGF5ZXJzLCBvciB0aGUgZGltZW5zaW9ucyBvZiBhbnkg
b2YgdGhlIGxheWVycyBoYXZlIGNoYW5nZWQsIHVwZGF0ZSB0aGUgdmlld3BvcnRzIGZvciBzZXNz
aW9uLgorICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KKworICAgIC8vIDYuMyBJZiBhY3Rp
dmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVsZE9mVmlldyBpcyBsZXNzIHRoYW4gc2Vzc2lv
buKAmXMgbWluaW11bSBpbmxpbmUgZmllbGQgb2YgdmlldyBzZXQgYWN0aXZlU3RhdGXigJlzIGlu
bGluZVZlcnRpY2FsRmllbGRPZlZpZXcgdG8gc2Vzc2lvbuKAmXMgbWluaW11bSBpbmxpbmUgZmll
bGQgb2Ygdmlldy4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+aW5saW5lVmVydGljYWxG
aWVsZE9mVmlldygpIDwgbV9taW5pbXVtSW5saW5lRk9WKQorICAgICAgICBtX2FjdGl2ZVJlbmRl
clN0YXRlLT5zZXRJbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KG1fbWluaW11bUlubGluZUZPVik7
CisKKyAgICAvLyA2LjQgSWYgYWN0aXZlU3RhdGXigJlzIGlubGluZVZlcnRpY2FsRmllbGRPZlZp
ZXcgaXMgZ3JlYXRlciB0aGFuIHNlc3Npb27igJlzIG1heGltdW0gaW5saW5lIGZpZWxkIG9mIHZp
ZXcgc2V0IGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IHRvIHNlc3Np
b27igJlzIG1heGltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcuCisgICAgaWYgKG1fYWN0aXZlUmVu
ZGVyU3RhdGUtPmlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcoKSA+IG1fbWF4aW11bUlubGluZUZP
VikKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0SW5saW5lVmVydGljYWxGaWVsZE9m
VmlldyhtX21heGltdW1JbmxpbmVGT1YpOworCisgICAgLy8gNi41IElmIGFjdGl2ZVN0YXRl4oCZ
cyBkZXB0aE5lYXIgaXMgbGVzcyB0aGFuIHNlc3Npb27igJlzIG1pbmltdW0gbmVhciBjbGlwIHBs
YW5lIHNldCBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhOZWFyIHRvIHNlc3Npb27igJlzIG1pbmltdW0g
bmVhciBjbGlwIHBsYW5lLgorICAgIGlmIChtX2FjdGl2ZVJlbmRlclN0YXRlLT5kZXB0aE5lYXIo
KSA8IG1fbWluaW11bU5lYXJDbGlwUGxhbmUpCisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUt
PnNldERlcHRoTmVhcihtX21pbmltdW1OZWFyQ2xpcFBsYW5lKTsKKworICAgIC8vIDYuNiBJZiBh
Y3RpdmVTdGF0ZeKAmXMgZGVwdGhGYXIgaXMgZ3JlYXRlciB0aGFuIHNlc3Npb27igJlzIG1heGlt
dW0gZmFyIGNsaXAgcGxhbmUgc2V0IGFjdGl2ZVN0YXRl4oCZcyBkZXB0aEZhciB0byBzZXNzaW9u
4oCZcyBtYXhpbXVtIGZhciBjbGlwIHBsYW5lLgorICAgIGlmIChtX2FjdGl2ZVJlbmRlclN0YXRl
LT5kZXB0aEZhcigpID4gbV9tYXhpbXVtRmFyQ2xpcFBsYW5lKQorICAgICAgICBtX2FjdGl2ZVJl
bmRlclN0YXRlLT5zZXREZXB0aEZhcihtX21heGltdW1GYXJDbGlwUGxhbmUpOworCisgICAgLy8g
Ni43IExldCBiYXNlTGF5ZXIgYmUgYWN0aXZlU3RhdGXigJlzIGJhc2VMYXllci4KKyAgICBhdXRv
IGJhc2VMYXllciA9IG1fYWN0aXZlUmVuZGVyU3RhdGUtPmJhc2VMYXllcigpOworCisgICAgLy8g
Ni44IFNldCBhY3RpdmVTdGF0ZeKAmXMgY29tcG9zaXRpb24gZGlzYWJsZWQgYW5kIG91dHB1dCBj
YW52YXMgYXMgZm9sbG93czoKKyAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRDb21wb3NpdGlv
bkRpc2FibGVkKHRydWUpOworICAgIGlmIChtX21vZGUgPT0gWFJTZXNzaW9uTW9kZTo6SW5saW5l
ICYmIGlzPFdlYlhSV2ViR0xMYXllcj4oYmFzZUxheWVyKSAmJiBiYXNlTGF5ZXItPmNvbXBvc2l0
aW9uRGlzYWJsZWQoKSkgeworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRDb21wb3Np
dGlvbkRpc2FibGVkKHRydWUpOworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRPdXRw
dXRDYW52YXMoYmFzZUxheWVyLT5jYW52YXMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9h
Y3RpdmVSZW5kZXJTdGF0ZS0+c2V0Q29tcG9zaXRpb25EaXNhYmxlZChmYWxzZSk7CisgICAgICAg
IG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldE91dHB1dENhbnZhcyhudWxscHRyKTsKKyAgICB9Cit9
CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Nob3VsZC1iZS1y
ZW5kZXJlZAorYm9vbCBXZWJYUlNlc3Npb246OmZyYW1lU2hvdWxkQmVSZW5kZXJlZCgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2FjdGl2ZVJlbmRlclN0YXRlLT5iYXNlTGF5ZXIoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZGUgPT0gWFJTZXNzaW9uTW9kZTo6SW5saW5lICYm
ICFtX2FjdGl2ZVJlbmRlclN0YXRlLT5vdXRwdXRDYW52YXMoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdEZy
YW1lKCkKK3sKKyAgICBtX2RldmljZS0+cmVxdWVzdEZyYW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiBmcmFtZURhdGEpIHsKKyAgICAgICAgb25GcmFtZShX
VEZNb3ZlKGZyYW1lRGF0YSkpOworICAgIH0pOworfQorCit2b2lkIFdlYlhSU2Vzc2lvbjo6b25G
cmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1fZW5kZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFF1ZXVlIGEgdGFzayB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHMu
CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJY
UiwgW3RoaXMsIGZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKV0oKSB7CisgICAgICAgIGlm
IChtX2VuZGVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyAgMS5MZXQgbm93IGJl
IHRoZSBjdXJyZW50IGhpZ2ggcmVzb2x1dGlvbiB0aW1lLgorICAgICAgICBhdXRvIG5vdyA9IChN
b25vdG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9yaWdpbikubWlsbGlzZWNvbmRzKCk7CisKKyAg
ICAgICAgQVNTRVJUKG1fYW5pbWF0aW9uRnJhbWUpOworICAgICAgICAvLyAgMi5MZXQgZnJhbWUg
YmUgc2Vzc2lvbuKAmXMgYW5pbWF0aW9uIGZyYW1lLgorICAgICAgICAvLyAgMy5TZXQgZnJhbWXi
gJlzIHRpbWUgdG8gZnJhbWVUaW1lLgorICAgICAgICBtX2FuaW1hdGlvbkZyYW1lLT5zZXRUaW1l
KHN0YXRpY19jYXN0PERPTUhpZ2hSZXNUaW1lU3RhbXA+KGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNw
bGF5VGltZSkpOworCisgICAgICAgIC8vIDQuIEZvciBlYWNoIHZpZXcgaW4gbGlzdCBvZiB2aWV3
cywgc2V0IHZpZXfigJlzIHZpZXdwb3J0IG1vZGlmaWFibGUgZmxhZyB0byB0cnVlLgorICAgICAg
ICAvLyA1LiBJZiB0aGUgYWN0aXZlIGZsYWcgb2YgYW55IHZpZXcgaW4gdGhlIGxpc3Qgb2Ygdmll
d3MgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgWFIgYW5pbWF0aW9uIGZyYW1lLCB1cGRhdGUg
dGhlIHZpZXdwb3J0cy4KKyAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudC4KKworICAgICAgICAv
LyBGSVhNRTogSSBtb3ZlZCBzdGVwIDcgYmVmb3JlIDYgYmVjYXVzZSBvZiBodHRwczovL2dpdGh1
Yi5jb20vaW1tZXJzaXZlLXdlYi93ZWJ4ci9pc3N1ZXMvMTE2NAorICAgICAgICAvLyA3LklmIHNl
c3Npb27igJlzIHBlbmRpbmcgcmVuZGVyIHN0YXRlIGlzIG5vdCBudWxsLCBhcHBseSB0aGUgcGVu
ZGluZyByZW5kZXIgc3RhdGUuCisgICAgICAgIGlmIChtX3BlbmRpbmdSZW5kZXJTdGF0ZSkKKyAg
ICAgICAgICAgIGFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKCk7CisKKyAgICAgICAgLy8gNi4gSWYg
dGhlIGZyYW1lIHNob3VsZCBiZSByZW5kZXJlZCBmb3Igc2Vzc2lvbjoKKyAgICAgICAgaWYgKGZy
YW1lU2hvdWxkQmVSZW5kZXJlZCgpKSB7CisgICAgICAgICAgICAvLyA2LjEuU2V0IHNlc3Npb27i
gJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcyB0
byBiZSBzZXNzaW9u4oCZcyBsaXN0IG9mIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MuCisgICAg
ICAgICAgICAvLyA2LjIuU2V0IHNlc3Npb27igJlzIGxpc3Qgb2YgYW5pbWF0aW9uIGZyYW1lIGNh
bGxiYWNrcyB0byB0aGUgZW1wdHkgbGlzdC4KKyAgICAgICAgICAgIG1fcnVubmluZ0NhbGxiYWNr
cy5zd2FwKG1fY2FsbGJhY2tzKTsKKworICAgICAgICAgICAgLy8gNi4zLlNldCBmcmFtZeKAmXMg
YWN0aXZlIGJvb2xlYW4gdG8gdHJ1ZS4KKyAgICAgICAgICAgIG1fYW5pbWF0aW9uRnJhbWUtPnNl
dEFjdGl2ZSh0cnVlKTsKKworICAgICAgICAgICAgLy8gNi40LkFwcGx5IGZyYW1lIHVwZGF0ZXMg
Zm9yIGZyYW1lLgorICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudC4KKworICAgICAgICAg
ICAgLy8gNi41LkZvciBlYWNoIGVudHJ5IGluIHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5
IHJ1bm5pbmcgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcywgaW4gb3JkZXI6CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9ydW5uaW5nQ2FsbGJhY2tzKSB7CisgICAgICAgICAg
ICAgICAgLy8gIDYuNi5JZiB0aGUgZW50cnnigJlzIGNhbmNlbGxlZCBib29sZWFuIGlzIHRydWUs
IGNvbnRpbnVlIHRvIHRoZSBuZXh0IGVudHJ5LgorICAgICAgICAgICAgICAgIGlmIChjYWxsYmFj
ay0+aXNDYW5jZWxsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgLy8gIDYuNy5JbnZva2UgdGhlIFdlYiBJREwgY2FsbGJhY2sgZnVuY3Rpb24gZm9y
IGVudHJ5LCBwYXNzaW5nIG5vdyBhbmQgZnJhbWUgYXMgdGhlIGFyZ3VtZW50cworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrLT5oYW5kbGVFdmVudChub3csICptX2FuaW1hdGlvbkZyYW1lKTsKKwor
ICAgICAgICAgICAgICAgIC8vICA2LjguSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biwgcmVwb3J0
IHRoZSBleGNlcHRpb24uCisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyA2LjkuU2V0IHNl
c3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9uIGZyYW1lIGNhbGxi
YWNrcyB0byB0aGUgZW1wdHkgbGlzdC4KKyAgICAgICAgICAgIG1fcnVubmluZ0NhbGxiYWNrcy5j
bGVhcigpOworCisgICAgICAgICAgICAvLyA2LjEwLlNldCBmcmFtZeKAmXMgYWN0aXZlIGJvb2xl
YW4gdG8gZmFsc2UuCisgICAgICAgICAgICAvLyBJZiB0aGUgc2Vzc2lvbiBpcyBlbmRlZCwgbV9h
bmltYXRpb25GcmFtZS0+c2V0QWN0aXZlIGZhbHNlIGlzIHNldCBpbiBzaHV0ZG93bigpLgorICAg
ICAgICAgICAgaWYgKG1fYW5pbWF0aW9uRnJhbWUpCisgICAgICAgICAgICAgICAgbV9hbmltYXRp
b25GcmFtZS0+c2V0QWN0aXZlKGZhbHNlKTsKKworICAgICAgICAgICAgaWYgKCFtX2NhbGxiYWNr
cy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVxdWVzdEZyYW1lKCk7CisgICAgICAgIH0K
KworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApp
bmRleCA1NTU0MzBjOGMzZjczMTIzMWFhZjRmMGMzZmZiNTgyOWQ2OTI5YjM2Li40MmJlODhjNjM3
ZGIyNTEwZmQ3YjFlM2I1MTNkMDFlNjA3ZDkwZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJXZWJYUkZy
YW1lLmgiCiAjaW5jbHVkZSAiV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgiCiAjaW5jbHVkZSAiV2Vi
WFJSZW5kZXJTdGF0ZS5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKQEAgLTkxLDcgKzkxLDgg
QEAgcHVibGljOgogICAgIFhSU2Vzc2lvbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
ZTsgfQogCiBwcml2YXRlOgotICAgIFdlYlhSU2Vzc2lvbihEb2N1bWVudCYsIFdlYlhSU3lzdGVt
JiwgWFJTZXNzaW9uTW9kZSwgUGxhdGZvcm1YUjo6RGV2aWNlJik7CisgICAgZXhwbGljaXQgV2Vi
WFJTZXNzaW9uKERvY3VtZW50JiwgV2ViWFJTeXN0ZW0mLCBYUlNlc3Npb25Nb2RlLCBQbGF0Zm9y
bVhSOjpEZXZpY2UmKTsKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKIAogICAgIC8vIEV2ZW50VGFy
Z2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBXZWJYUlNlc3Npb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7
IH0KQEAgLTEwOSwxMSArMTEwLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaHV0ZG93bihJbml0
aWF0ZWRCeVN5c3RlbSk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVNodXRkb3duKCk7CiAKLSAgICB2
b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7
Ci0KICAgICBib29sIHJlZmVyZW5jZVNwYWNlSXNTdXBwb3J0ZWQoWFJSZWZlcmVuY2VTcGFjZVR5
cGUpIGNvbnN0OwogCisgICAgYm9vbCBmcmFtZVNob3VsZEJlUmVuZGVyZWQoKSBjb25zdDsKKyAg
ICB2b2lkIHJlcXVlc3RGcmFtZSgpOworICAgIHZvaWQgb25GcmFtZShQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YSYmKTsKKyAgICB2b2lkIGFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKCk7CisK
ICAgICBYUkVudmlyb25tZW50QmxlbmRNb2RlIG1fZW52aXJvbm1lbnRCbGVuZE1vZGU7CiAgICAg
WFJJbnRlcmFjdGlvbk1vZGUgbV9pbnRlcmFjdGlvbk1vZGU7CiAgICAgWFJWaXNpYmlsaXR5U3Rh
dGUgbV92aXNpYmlsaXR5U3RhdGU7CkBAIC0xMjYsMTMgKzEyOSwyMCBAQCBwcml2YXRlOgogICAg
IFdlYWtQdHI8UGxhdGZvcm1YUjo6RGV2aWNlPiBtX2RldmljZTsKICAgICBSZWZQdHI8V2ViWFJS
ZW5kZXJTdGF0ZT4gbV9hY3RpdmVSZW5kZXJTdGF0ZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJT
dGF0ZT4gbV9wZW5kaW5nUmVuZGVyU3RhdGU7CisgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPcmln
aW47CiAKICAgICB1bnNpZ25lZCBtX25leHRDYWxsYmFja0lkIHsgMSB9OwogICAgIFZlY3RvcjxS
ZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFjaz4+IG1fY2FsbGJhY2tzOwogICAgIFZlY3RvcjxSZWY8
WFJGcmFtZVJlcXVlc3RDYWxsYmFjaz4+IG1fcnVubmluZ0NhbGxiYWNrczsKIAotICAgIFRpbWVy
IG1fYW5pbWF0aW9uVGltZXI7Ci0gICAgTW9ub3RvbmljVGltZSBtX2xhc3RBbmltYXRpb25GcmFt
ZVRpbWVzdGFtcDsKKyAgICBSZWZQdHI8V2ViWFJGcmFtZT4gbV9hbmltYXRpb25GcmFtZTsKKwor
ICAgIGRvdWJsZSBtX21pbmltdW1JbmxpbmVGT1YgeyAwLjAgfTsKKyAgICBkb3VibGUgbV9tYXhp
bXVtSW5saW5lRk9WIHsgcGlGbG9hdCB9OworCisgICAgLy8gSW4gbWV0ZXJzLgorICAgIGRvdWJs
ZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CisgICAgZG91YmxlIG1fbWF4aW11bUZh
ckNsaXBQbGFuZSB7IDEwMDAuMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAppbmRleCAxMmE5ZjIx
ZTcyNGExMmRkYzE1ZGE5YTg0YzFiODJlYjRkMTdkNGQ4Li4yODhjNmYwZDViMmIwMDI5M2U3MWI4
NjM1Y2VkNzcyZmJmMjIyZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTV2ViWFJTZXNzaW9u
LmgiCiAjaW5jbHVkZSAiSlNYUlJlZmVyZW5jZVNwYWNlVHlwZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtWFIuaCIKKyNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC00OSwxMSArNTAsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJY
UlN5c3RlbSk7CiAKLVdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVE
ZXZpY2UoKQotewotICAgIHNldEVuYWJsZWRGZWF0dXJlcyhYUlNlc3Npb25Nb2RlOjpJbmxpbmUs
IHsgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlciB9KTsKLX0KLQogUmVmPFdlYlhSU3lzdGVt
PiBXZWJYUlN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJTeXN0ZW0oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpOwpAQCAtNjEsNiArNTcsNyBAQCBSZWY8V2ViWFJTeXN0ZW0+
IFdlYlhSU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0
aW9uQ29udAogCiBXZWJYUlN5c3RlbTo6V2ViWFJTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKKyAgICAsIG1fZGVmYXVsdElubGluZURldmljZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQogewogICAgIG1faW5saW5lWFJEZXZpY2UgPSBtYWtlV2Vha1B0cihtX2Rl
ZmF1bHRJbmxpbmVEZXZpY2UpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtNDc1LDYgKzQ3
Miw0OSBAQCB2b2lkIFdlYlhSU3lzdGVtOjpzZXNzaW9uRW5kZWQoV2ViWFJTZXNzaW9uJiBzZXNz
aW9uKQogICAgIG1faW5saW5lU2Vzc2lvbnMucmVtb3ZlKHNlc3Npb24pOwogfQogCitjbGFzcyBJ
bmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayBmaW5hbDogcHVibGljIFJlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPElubGluZVJl
cXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5saW5lUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShjYWxsYmFjaykp
KTsKKyAgICB9Citwcml2YXRlOgorICAgIElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKKyAgICAgICAgOiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFjaygmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIG1fY2FsbGJhY2soV1RGTW92ZShjYWxs
YmFjaykpIAorICAgIHsKKyAgICB9CisKKyAgICBDYWxsYmFja1Jlc3VsdDx2b2lkPiBoYW5kbGVF
dmVudChkb3VibGUpIGZpbmFsCisgICAgeworICAgICAgICBtX2NhbGxiYWNrKCk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorCisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2NhbGxiYWNrOwor
fTsKKworCitXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OkR1bW15SW5saW5lRGV2aWNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgOiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAg
c2V0RW5hYmxlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGU6OklubGluZSwgeyBYUlJlZmVyZW5jZVNw
YWNlVHlwZTo6Vmlld2VyIH0pOworfQorCit2b2lkIFdlYlhSU3lzdGVtOjpEdW1teUlubGluZURl
dmljZTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBJbmxpbmUgWFIgc2Vzc2lvbnMgcmVseSBvbiBkb2N1
bWVudC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gcGVyZm9ybSB0aGUgcmVuZGVyIGxvb3AuCisg
ICAgYXV0byBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
cmFmID0gSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s6OmNyZWF0ZSgqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICB9KTsKKworICAgIGRvY3VtZW50LT5y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmFmKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3lzdGVtLmgKaW5kZXggYzc2MmQ0NmFjMGU5MDRhMzk4M2QzOTdmNjg2NTYxZDRjMTY1
YjM1NS4uYzMzY2Y3M2I4MTI0ZTY1MDM4MjE1MDlhMzgyMDk0YjkzMGVmYjU2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaApAQCAtMTA2LDExICsxMDYsMTYg
QEAgcHJpdmF0ZToKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhy
LyNkZWZhdWx0LWlubGluZS14ci1kZXZpY2UKICAgICBjbGFzcyBEdW1teUlubGluZURldmljZSBm
aW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewogICAgIHB1YmxpYzoKLSAgICAgICAg
RHVtbXlJbmxpbmVEZXZpY2UoKTsKKyAgICAgICAgRHVtbXlJbmxpbmVEZXZpY2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0aWFsaXpl
VHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQog
ICAgICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbCB7IH0KKyAg
ICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNl
U3BhY2VUeXBlKSBmaW5hbCB7IH07CisKKyAgICAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZv
cm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKworICAgICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgfTsK
ICAgICBEdW1teUlubGluZURldmljZSBtX2RlZmF1bHRJbmxpbmVEZXZpY2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcAppbmRleCA4NmRk
MTFiMDAxNDNiZjgwZWE4MWFlMmFkZDhkZTg0ZGMwMmQwMzNmLi5jYTU4Nzg4NjFkMjRjN2VmNWQy
ZmNlYjUyYTc3ZGZhYjdlNjA4ZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUo
V0VCWFIpCiAKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkludFNp
emUuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1l
YnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjaWYgRU5BQkxF
KFdFQkdMMikKQEAgLTE5OCw2ICsyMDAsMjAgQEAgZG91YmxlIFdlYlhSV2ViR0xMYXllcjo6Z2V0
TmF0aXZlRnJhbWVidWZmZXJTY2FsZUZhY3Rvcihjb25zdCBXZWJYUlNlc3Npb24mIHNlc3MKICAg
ICByZXR1cm4gKG5hdGl2ZVNpemUgLyByZWNvbW1lbmRlZFNpemUpLndpZHRoKCk7CiB9CiAKK0hU
TUxDYW52YXNFbGVtZW50KiBXZWJYUldlYkdMTGF5ZXI6OmNhbnZhcygpIGNvbnN0Cit7CisgICAg
SFRNTENhbnZhc0VsZW1lbnQqIGMgPSBXVEY6OnN3aXRjaE9uKG1fY29udGV4dCwgW10oY29uc3Qg
UmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+JiBiYXNlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIGNhbnZhcyA9IGJhc2VDb250ZXh0LT5jYW52YXMoKTsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oY2FudmFzLCBbXShjb25zdCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBj
YW52YXMpIHsKKyAgICAgICAgICAgIHJldHVybiBjYW52YXMuZ2V0KCk7CisgICAgICAgIH0sIFtd
KGNvbnN0IFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoImJhc2VMYXllciBvZiBhIFdlYlhSV2ViR0xMYXllciBtdXN0IGJlIGFuIEhUTUxD
YW52YXNFbGVtZW50Iik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSk7
CisgICAgfSk7CisgICAgcmV0dXJuIGM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSV2ViR0xMYXllci5oCmluZGV4IDMxNzU1ZDg0OTZhNmE3MDJlMjMzMjljZmJmMzI5Yjlj
YzRiOGE5ZGYuLjNmNzU4N2RlODlkYTZlMjMxYzk0M2M0ZjkwNWZjMWNmMTgwNTkyOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaApAQCAtMzYs
NiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxDYW52YXNFbGVt
ZW50OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFdlYkdMRnJhbWVidWZmZXI7CiBjbGFzcyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ7CkBAIC03NCw2ICs3NSwxMSBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSB7IHJldHVybiBtX3Nlc3Npb247IH0KIAorICAgIGJv
b2wgY29tcG9zaXRpb25EaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb21wb3NpdGlvbkRp
c2FibGVkOyB9CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbkRpc2FibGVkKGJvb2wgY29tcG9zaXRp
b25EaXNhYmxlZCkgeyBtX2lzQ29tcG9zaXRpb25EaXNhYmxlZCA9IGNvbXBvc2l0aW9uRGlzYWJs
ZWQ7IH0KKworICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMoKSBjb25zdDsKKwogcHJpdmF0
ZToKICAgICBXZWJYUldlYkdMTGF5ZXIoUmVmPFdlYlhSU2Vzc2lvbj4mJiwgV2ViWFJSZW5kZXJp
bmdDb250ZXh0JiYsIGNvbnN0IFhSV2ViR0xMYXllckluaXQmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IGI5ZWY0NWMwYzY5NzE0YWU4M2M3MDQ0NTRkOTU0
YmQ1MWVhNDc2NmIuLjQzMjVmMzM3NWNmMzAyOGE0N2RmZmNjNmRmNTliYjc0MzgzNTAwZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTE4LDYgKzE4LDcgQEAK
ICAqLwogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgpAQCAtNzUsNiArNzYsMzEgQEAgcHVibGljOgogICAgIC8vIElmIHRoaXMgbWV0
aG9kIHJldHVybnMgdHJ1ZSwgdGhhdCBtZWFucyB0aGUgZGV2aWNlIHdpbGwgbm90aWZ5IFRyYWNr
aW5nQW5kUmVuZGVyaW5nQ2xpZW50CiAgICAgLy8gd2hlbiB0aGUgcGxhdGZvcm0gaGFzIGNvbXBs
ZXRlZCBhbGwgc3RlcHMgdG8gc2h1dCBkb3duIHRoZSBYUiBzZXNzaW9uLgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShSZWZl
cmVuY2VTcGFjZVR5cGUpID0gMDsKKworICAgIHN0cnVjdCBGcmFtZURhdGEgeworICAgICAgICBs
b25nIHByZWRpY3RlZERpc3BsYXlUaW1lOworICAgICAgICBzdHJ1Y3QgVmlld0RhdGEgeworICAg
ICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50M0Qg
cG9zaXRpb247CisgICAgICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgeDsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgeTsKKyAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgejsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgdzsKKyAgICAgICAgICAgICAg
ICB9IG9yaWVudGF0aW9uOworICAgICAgICAgICAgfSBwb3NlOworICAgICAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgICAgICBmbG9hdCByVXA7CisgICAgICAgICAgICAgICAgZmxvYXQgckRv
d247CisgICAgICAgICAgICAgICAgZmxvYXQgckxlZnQ7CisgICAgICAgICAgICAgICAgZmxvYXQg
clJpZ2h0OworICAgICAgICAgICAgfSBmb3Y7CisgICAgICAgIH07CisgICAgICAgIFZlY3RvcjxW
aWV3RGF0YT4gdmlld1Bvc2VzOworICAgIH07CisgICAgdXNpbmcgUmVxdWVzdEZyYW1lQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKEZyYW1lRGF0YSYmKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICBE
ZXZpY2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggZmU4NjVlNjcxZDcwNjg2ZGU3OTFm
MTQwMGU2Y2YzZTJjODY5ZWMyMi4uY2M0ZDcyMTUzYzZlZWFmZGYyMTYyZTk4ODJhOWUwNzc1OGIy
MWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9Q
bGF0Zm9ybVhST3BlblhSLmNwcApAQCAtMjYwLDExICsyNjAsNiBAQCBPcGVuWFJEZXZpY2U6Ok9w
ZW5YUkRldmljZShYclN5c3RlbUlkIGlkLCBYckluc3RhbmNlIGluc3RhbmNlLCBXb3JrUXVldWUm
IHF1ZXVlLAogICAgIH0pOwogfQogCi1PcGVuWFJEZXZpY2U6On5PcGVuWFJEZXZpY2UoKQotewot
ICAgIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKLX0KLQogRGV2aWNlOjpMaXN0T2ZF
bmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjplbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMoWHJT
ZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogewogICAgIHVpbnQzMl90IHJlZmVyZW5jZVNwYWNlc0Nv
dW50OwpAQCAtMzk1LDYgKzM5MCwxNiBAQCBYclZpZXdDb25maWd1cmF0aW9uVHlwZSB0b1hyVmll
d0NvbmZpZ3VyYXRpb25UeXBlKFNlc3Npb25Nb2RlIG1vZGUpCiAgICAgcmV0dXJuIFhSX1ZJRVdf
Q09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTzsKIH0KIAorc3RhdGljIGJvb2wgaXNTZXNz
aW9uQWN0aXZlKFhyU2Vzc2lvblN0YXRlIHN0YXRlKQoreworICAgIHJldHVybiBzdGF0ZSA9PSBY
Ul9TRVNTSU9OX1NUQVRFX1ZJU0lCTEUgfHwgc3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9GT0NV
U0VEOworfQorCitzdGF0aWMgYm9vbCBpc1Nlc3Npb25SZWFkeShYclNlc3Npb25TdGF0ZSBzdGF0
ZSkKK3sKKyAgICByZXR1cm4gc3RhdGUgPj0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSAgJiYgc3Rh
dGUgPCBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HOworfQorCiB2b2lkIE9wZW5YUkRldmljZTo6
aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiB7CiAgICAg
bV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgbW9kZV0oKSB7CkBAIC00MTMsMTggKzQxOCwxODYgQEAg
dm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9u
TW9kZSBtb2RlKQogfQogCiB2b2lkIE9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKCkKK3sKKyAg
ICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOworICAg
IGlmIChtX3Nlc3Npb24gIT0gWFJfTlVMTF9IQU5ETEUpIHsKKyAgICAgICAgeHJEZXN0cm95U2Vz
c2lvbihtX3Nlc3Npb24pOworICAgICAgICBtX3Nlc3Npb24gPSBYUl9OVUxMX0hBTkRMRTsKKyAg
ICB9CisgICAgbV9zZXNzaW9uU3RhdGUgPSBYUl9TRVNTSU9OX1NUQVRFX1VOS05PV047Cit9CisK
K3ZvaWQgT3BlblhSRGV2aWNlOjpoYW5kbGVTZXNzaW9uU3RhdGVDaGFuZ2UoKQoreworICAgIEFT
U0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgaWYg
KG1fc2Vzc2lvblN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkcpIHsKKyAgICAgICAg
Ly8gVGhlIGFwcGxpY2F0aW9uIHNob3VsZCBleGl0IHRoZSByZW5kZXIgbG9vcCBhbmQgY2FsbCB4
ckVuZFNlc3Npb24KKyAgICAgICAgZW5kU2Vzc2lvbigpOworICAgIH0gZWxzZSBpZiAobV9zZXNz
aW9uU3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSkgeworICAgICAgICAvLyBUaGUgYXBw
bGljYXRpb24gaXMgcmVhZHkgdG8gY2FsbCB4ckJlZ2luU2Vzc2lvbi4KKyAgICAgICAgYmVnaW5T
ZXNzaW9uKCk7CisgICAgfQorfQorCit2b2lkIE9wZW5YUkRldmljZTo6c2h1dERvd25UcmFja2lu
Z0FuZFJlbmRlcmluZygpCiB7CiAgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpc10oKSB7CiAgICAg
ICAgIGlmIChtX3Nlc3Npb24gPT0gWFJfTlVMTF9IQU5ETEUpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHhyRGVzdHJveVNlc3Npb24obV9zZXNzaW9uKTsKLSAgICAgICAgbV9zZXNzaW9u
ID0gWFJfTlVMTF9IQU5ETEU7CisKKyAgICAgICAgLy8geHJSZXF1ZXN0RXhpdFNlc3Npb24oKSB3
aWxsIHRyYW5zaXRpb24gdGhlIHNlc3Npb24gdG8gU1RPUFBFRCBzdGF0ZS4KKyAgICAgICAgLy8g
SWYgdGhlIHNlc3Npb24gd2FzIG5vdCBydW5uaW5nIHdlIGhhdmUgdG8gcmVzZXQgdGhlIHNlc3Np
b24gb3Vyc2VsdmVzLgorICAgICAgICBpZiAoWFJfRkFJTEVEKHhyUmVxdWVzdEV4aXRTZXNzaW9u
KG1fc2Vzc2lvbikpKSB7CisgICAgICAgICAgICByZXNldFNlc3Npb24oKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9wZW5YUiBuZWVkcyB0byB3YWl0IGZv
ciB0aGUgWFJfU0VTU0lPTl9TVEFURV9TVE9QUElORyBzdGF0ZSB0byBwcm9wZXJseSBlbmQgdGhl
IHNlc3Npb24uCisgICAgICAgIHdhaXRVbnRpbFN0b3BwaW5nKCk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgT3BlblhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKK3ZvaWQgT3Bl
blhSRGV2aWNlOjp3YWl0VW50aWxTdG9wcGluZygpCiB7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpj
dXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKKyAgICBwb2xsRXZlbnRzKCk7CisgICAg
aWYgKG1fc2Vzc2lvblN0YXRlID49IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkcpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzXSgpIHsKKyAgICAgICAgd2FpdFVu
dGlsU3RvcHBpbmcoKTsKKyAgICB9KTsKK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OnBvbGxFdmVu
dHMoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8gcnVudGltZUV2
ZW50ID0gY3JlYXRlU3RydWN0dXJlPFhyRXZlbnREYXRhQnVmZmVyLCBYUl9UWVBFX0VWRU5UX0RB
VEFfQlVGRkVSPigpOworICAgIHdoaWxlICh4clBvbGxFdmVudChtX2luc3RhbmNlLCAmcnVudGlt
ZUV2ZW50KSA9PSBYUl9TVUNDRVNTKSB7CisgICAgICAgIHN3aXRjaCAocnVudGltZUV2ZW50LnR5
cGUpIHsKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfU0VTU0lPTl9TVEFURV9DSEFO
R0VEOiB7CisgICAgICAgICAgICBhdXRvKiBldmVudCA9IChYckV2ZW50RGF0YVNlc3Npb25TdGF0
ZUNoYW5nZWQqKSZydW50aW1lRXZlbnQ7CisgICAgICAgICAgICBtX3Nlc3Npb25TdGF0ZSA9IGV2
ZW50LT5zdGF0ZTsKKyAgICAgICAgICAgIGhhbmRsZVNlc3Npb25TdGF0ZUNoYW5nZSgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RB
VEFfRVZFTlRTX0xPU1Q6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX0lOU1RBTkNF
X0xPU1NfUEVORElORzoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfUkVGRVJFTkNF
X1NQQUNFX0NIQU5HRV9QRU5ESU5HOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9J
TlRFUkFDVElPTl9QUk9GSUxFX0NIQU5HRUQ6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9E
QVRBX01BSU5fU0VTU0lPTl9WSVNJQklMSVRZX0NIQU5HRURfRVhUWDoKKyAgICAgICAgY2FzZSBY
Ul9UWVBFX0VWRU5UX0RBVEFfVklTSUJJTElUWV9NQVNLX0NIQU5HRURfS0hSOgorICAgICAgICBj
YXNlIFhSX1RZUEVfRVZFTlRfREFUQV9QRVJGX1NFVFRJTkdTX0VYVDoKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCJV
bmhhbmRsZWQgZXZlbnQgdHlwZSAlZFxuIiwgcnVudGltZUV2ZW50LnR5cGUpOworICAgICAgICB9
CisgICAgfQorfQorCitYclJlc3VsdCBPcGVuWFJEZXZpY2U6OmJlZ2luU2Vzc2lvbigpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc2Vzc2lvblN0YXRlID09
IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkpOworCisgICAgYXV0byBzZXNzaW9uQmVnaW5JbmZvID0g
Y3JlYXRlU3RydWN0dXJlPFhyU2Vzc2lvbkJlZ2luSW5mbywgWFJfVFlQRV9TRVNTSU9OX0JFR0lO
X0lORk8+KCk7CisgICAgc2Vzc2lvbkJlZ2luSW5mby5wcmltYXJ5Vmlld0NvbmZpZ3VyYXRpb25U
eXBlID0gWFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9TVEVSRU87CisgICAgYXV0
byByZXN1bHQgPSB4ckJlZ2luU2Vzc2lvbihtX3Nlc3Npb24sICZzZXNzaW9uQmVnaW5JbmZvKTsK
KyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKFhSX0ZBSUxFRChyZXN1bHQpKQorICAgICAgICBM
T0coWFIsICIlcyAlczogJXNcbiIsIF9fZnVuY19fLCAieHJCZWdpblNlc3Npb24iLCByZXN1bHRU
b1N0cmluZyhyZXN1bHQsIG1faW5zdGFuY2UpLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OmVuZFNlc3Npb24oKQorewor
ICAgIEFTU0VSVChtX3Nlc3Npb24gIT0gWFJfTlVMTF9IQU5ETEUpOworICAgIHhyRW5kU2Vzc2lv
bihtX3Nlc3Npb24pOwogICAgIHJlc2V0U2Vzc2lvbigpOworICAgIGlmICghbV90cmFja2luZ0Fu
ZFJlbmRlcmluZ0NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTm90aWZ5IGRpZCBl
bmQgZXZlbnQKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0oKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KQorICAgICAgICAg
ICAgbV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudC0+c2Vzc2lvbkRpZEVuZCgpOworICAgIH0p
OworfQorCisKK0RldmljZTo6RnJhbWVEYXRhOjpWaWV3RGF0YSB4clZpZXdUb1ZpZXdEYXRhKFhy
VmlldyB2aWV3KQoreworICAgIERldmljZTo6RnJhbWVEYXRhOjpWaWV3RGF0YSBkYXRhOworICAg
IGRhdGEuZm92ID0geyB2aWV3LmZvdi5hbmdsZVVwLCB2aWV3LmZvdi5hbmdsZURvd24sIHZpZXcu
Zm92LmFuZ2xlTGVmdCwgdmlldy5mb3YuYW5nbGVSaWdodCB9OworICAgIGRhdGEucG9zZS5vcmll
bnRhdGlvbiA9IHsgdmlldy5wb3NlLm9yaWVudGF0aW9uLngsIHZpZXcucG9zZS5vcmllbnRhdGlv
bi55LCB2aWV3LnBvc2Uub3JpZW50YXRpb24ueiwgdmlldy5wb3NlLm9yaWVudGF0aW9uLncgfTsK
KyAgICBkYXRhLnBvc2UucG9zaXRpb24gPSB7IHZpZXcucG9zZS5wb3NpdGlvbi54LCB2aWV3LnBv
c2UucG9zaXRpb24ueSwgdmlldy5wb3NlLnBvc2l0aW9uLnogfTsKKyAgICByZXR1cm4gZGF0YTsK
K30KKwordm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFj
ayYmIGNhbGxiYWNrKQoreworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIHBvbGxFdmVudHMoKTsKKyAg
ICAgICAgaWYgKCFpc1Nlc3Npb25SZWFkeShtX3Nlc3Npb25TdGF0ZSkpIHsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgLy8gRGV2aWNlIG5vdCByZWFkeSBvciBzdG9wcGluZy4gUmVw
b3J0IGZyYW1lRGF0YSB3aXRoIGludmFsaWQgdHJhY2tpbmcuCisgICAgICAgICAgICAgICAgY2Fs
bGJhY2soeyB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byBmcmFtZVN0YXRlID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVT
dGF0ZSwgWFJfVFlQRV9GUkFNRV9TVEFURT4oKTsKKyAgICAgICAgYXV0byBmcmFtZVdhaXRJbmZv
ID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVXYWl0SW5mbywgWFJfVFlQRV9GUkFNRV9XQUlUX0lO
Rk8+KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0geHJXYWl0RnJhbWUobV9zZXNzaW9uLCAmZnJh
bWVXYWl0SW5mbywgJmZyYW1lU3RhdGUpOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3Vs
dCwgInhyV2FpdEZyYW1lIiwgbV9pbnN0YW5jZSk7CisgICAgICAgIFhyVGltZSBwcmVkaWN0ZWRU
aW1lID0gZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZTsKKworICAgICAgICBhdXRvIGZy
YW1lQmVnaW5JbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVCZWdpbkluZm8sIFhSX1RZUEVf
RlJBTUVfQkVHSU5fSU5GTz4oKTsKKyAgICAgICAgcmVzdWx0ID0geHJCZWdpbkZyYW1lKG1fc2Vz
c2lvbiwgJmZyYW1lQmVnaW5JbmZvKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQs
ICJ4ckJlZ2luRnJhbWUiLCBtX2luc3RhbmNlKTsKKworICAgICAgICBEZXZpY2U6OkZyYW1lRGF0
YSBmcmFtZURhdGE7CisgICAgICAgIGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSA9IGZy
YW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7CisKKyAgICAgICAgaWYgKGlzU2Vzc2lvbkFj
dGl2ZShtX3Nlc3Npb25TdGF0ZSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRp
b25WaWV3cy5jb250YWlucyhtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpKTsKKyAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIGNvbmZpZ3VyYXRpb25WaWV3ID0gbV9jb25maWd1cmF0aW9uVmll
d3MuZ2V0KG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSk7CisKKyAgICAgICAgICAgIGF1
dG8gdmlld0xvY2F0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJWaWV3TG9jYXRlSW5mbywgWFJf
VFlQRV9WSUVXX0xPQ0FURV9JTkZPPigpOworICAgICAgICAgICAgdmlld0xvY2F0ZUluZm8uZGlz
cGxheVRpbWUgPSBwcmVkaWN0ZWRUaW1lOworICAgICAgICAgICAgLy8gRklYTUU6IHVzZSB0aGUg
Y3VycmVudCByZWZlcmVuY2Ugc3BhY2UuCisgICAgICAgICAgICAvLyB2aWV3TG9jYXRlSW5mby5z
cGFjZSA9IG1fbG9jYWxTcGFjZTsKKworICAgICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50ID0g
Y29uZmlndXJhdGlvblZpZXcuc2l6ZSgpOworICAgICAgICAgICAgVmVjdG9yPFhyVmlldz4gdmll
d3Modmlld0NvdW50LCBbXSB7CisgICAgICAgICAgICAgICAgWHJWaWV3IG9iamVjdDsKKyAgICAg
ICAgICAgICAgICBzdGQ6Om1lbXNldCgmb2JqZWN0LCAwLCBzaXplb2YoWHJWaWV3KSk7CisgICAg
ICAgICAgICAgICAgb2JqZWN0LnR5cGUgPSBYUl9UWVBFX1ZJRVc7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0oKSk7CisKKyAgICAgICAgICAgIGF1dG8gdmll
d1N0YXRlID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld1N0YXRlLCBYUl9UWVBFX1ZJRVdfU1RBVEU+
KCk7CisgICAgICAgICAgICB1aW50MzJfdCB2aWV3Q291bnRPdXRwdXQ7CisgICAgICAgICAgICBy
ZXN1bHQgPSB4ckxvY2F0ZVZpZXdzKG1fc2Vzc2lvbiwgJnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0
YXRlLCB2aWV3Q291bnQsICZ2aWV3Q291bnRPdXRwdXQsIHZpZXdzLmRhdGEoKSk7CisgICAgICAg
ICAgICBpZiAoIVhSX0ZBSUxFRChyZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRv
JiB2aWV3IDogdmlld3MpCisgICAgICAgICAgICAgICAgICAgIGZyYW1lRGF0YS52aWV3UG9zZXMu
YXBwZW5kKHhyVmlld1RvVmlld0RhdGEodmlldykpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnJhbWVEYXRhID0gV1RGTW92ZShmcmFtZURh
dGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShmcmFtZURhdGEpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
YXV0byBmcmFtZUVuZEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZUVuZEluZm8sIFhSX1RZ
UEVfRlJBTUVfRU5EX0lORk8+KCk7CisgICAgICAgIGZyYW1lRW5kSW5mby5kaXNwbGF5VGltZSA9
IHByZWRpY3RlZFRpbWU7CisgICAgICAgIGZyYW1lRW5kSW5mby5lbnZpcm9ubWVudEJsZW5kTW9k
ZSA9IFhSX0VOVklST05NRU5UX0JMRU5EX01PREVfT1BBUVVFOworICAgICAgICBmcmFtZUVuZElu
Zm8ubGF5ZXJDb3VudCA9IDA7CisgICAgICAgIHJlc3VsdCA9IHhyRW5kRnJhbWUobV9zZXNzaW9u
LCAmZnJhbWVFbmRJbmZvKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVu
ZEZyYW1lIiwgbV9pbnN0YW5jZSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBsYXRm
b3JtWFIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0
Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZv
cm1YUk9wZW5YUi5oCmluZGV4IGFhMmY3ODBlZjkxMjk2MjBmNDQxMmRiNDlhMGU4YTA0MmQ1OGI1
MjkuLjViZWJlNjk2NjkzMjdkYjJjODE1YjU1NmFlZGQxY2E5OWI0NmUxNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaApA
QCAtNDQsNyArNDQsNiBAQCBuYW1lc3BhY2UgUGxhdGZvcm1YUiB7CiBjbGFzcyBPcGVuWFJEZXZp
Y2UgZmluYWwgOiBwdWJsaWMgRGV2aWNlIHsKIHB1YmxpYzoKICAgICBPcGVuWFJEZXZpY2UoWHJT
eXN0ZW1JZCwgWHJJbnN0YW5jZSwgV29ya1F1ZXVlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB+T3BlblhSRGV2aWNlKCk7CiAgICAgWHJTeXN0ZW1JZCB4clN5c3RlbUlkKCkg
Y29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogCiBwcml2YXRlOgpAQCAtNTIsMTMgKzUxLDIy
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0Q29uZmlndXJhdGlvblZpZXdzKCk7CiAKICAg
ICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMgZW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lv
biYpIGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFJlZmVyZW5jZVNw
YWNlVHlwZSkgZmluYWwgeyB9OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJl
c29sdXRpb24oU2Vzc2lvbk1vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tp
bmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpIGZpbmFsOwogICAgIHZvaWQgc2h1dERvd25UcmFj
a2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRv
d25Ob3RpZmljYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCB3
YWl0VW50aWxTdG9wcGluZygpOwogCisgICAgdm9pZCBwb2xsRXZlbnRzKCk7CisgICAgWHJSZXN1
bHQgYmVnaW5TZXNzaW9uKCk7CisgICAgdm9pZCBlbmRTZXNzaW9uKCk7CiAgICAgdm9pZCByZXNl
dFNlc3Npb24oKTsKKyAgICB2b2lkIGhhbmRsZVNlc3Npb25TdGF0ZUNoYW5nZSgpOworCisgICAg
dm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICB1
c2luZyBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgPSBIYXNoTWFwPFhyVmlld0NvbmZp
Z3VyYXRpb25UeXBlLCBYclZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllcywgSW50SGFzaDxYclZp
ZXdDb25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8WHJWaWV3Q29u
ZmlndXJhdGlvblR5cGU+PjsKICAgICBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgbV92
aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXM7CkBAIC02OCw2ICs3Niw3IEBAIHByaXZhdGU6CiAg
ICAgWHJTeXN0ZW1JZCBtX3N5c3RlbUlkOwogICAgIFhySW5zdGFuY2UgbV9pbnN0YW5jZTsKICAg
ICBYclNlc3Npb24gbV9zZXNzaW9uIHsgWFJfTlVMTF9IQU5ETEUgfTsKKyAgICBYclNlc3Npb25T
dGF0ZSBtX3Nlc3Npb25TdGF0ZSB7IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTiB9OwogCiAgICAg
V29ya1F1ZXVlJiBtX3F1ZXVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1dlYkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRl
dmljZS5jcHAKaW5kZXggYTQ3YzFlY2E3ZGVkY2VkYTUwNTBhZDk3YmM0N2Q4NTY1YmE1OTBlZi4u
NTQwMThkYTdlYmI1M2RkNTE5NDJkZTc2NjE0OTY3MmZmMWFjODQ1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtMzEsMTQgKzMxLDI4IEBACiAjaW5j
bHVkZSAiRE9NUG9pbnRSZWFkT25seS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNv
bnN0ZXhwciBTZWNvbmRzIEZha2VYUkZyYW1lVGltZSA9IDE1X21zOworCiB2b2lkIEZha2VYUlZp
ZXc6OnNldEZpZWxkT2ZWaWV3KEZha2VYUlZpZXdJbml0OjpGaWVsZE9mVmlld0luaXQgZm92KQog
ewogICAgIG1fZm92ID0gZm92OwogfQogCitTaW11bGF0ZWRYUkRldmljZTo6U2ltdWxhdGVkWFJE
ZXZpY2UoKQorICAgIDogbV9mcmFtZVRpbWVyKCp0aGlzLCAmU2ltdWxhdGVkWFJEZXZpY2U6OmZy
YW1lVGltZXJGaXJlZCkKK3sKKyAgICBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9IHRy
dWU7Cit9CisKK1NpbXVsYXRlZFhSRGV2aWNlOjp+U2ltdWxhdGVkWFJEZXZpY2UoKQoreworICAg
IHN0b3BUaW1lcigpOworfQorCiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzaW11bGF0ZVNodXRk
b3duQ29tcGxldGVkKCkKIHsKICAgICBpZiAobV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCkK
QEAgLTQ5LDYgKzYzLDI3IEBAIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKQogewogICAgIGlmIChtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRp
b24pCiAgICAgICAgIHNpbXVsYXRlU2h1dGRvd25Db21wbGV0ZWQoKTsKKyAgICBzdG9wVGltZXIo
KTsKK30KKwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c3RvcFRpbWVyKCkKK3sKKyAgICBpZiAo
bV9mcmFtZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZnJhbWVUaW1lci5zdG9wKCk7Cit9
CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCgpCit7CisgICAgYXV0
byBjYWxsYmFja3MgPSBXVEZNb3ZlKG1fY2FsbGJhY2tzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrIDogY2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjayh7IH0pOworfQorCit2b2lkIFNpbXVs
YXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworICAgIGlm
ICghbV9mcmFtZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZnJhbWVUaW1lci5zdGFydE9u
ZVNob3QoRmFrZVhSRnJhbWVUaW1lKTsKIH0KIAogV2ViRmFrZVhSRGV2aWNlOjpXZWJGYWtlWFJE
ZXZpY2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YkZha2VYUkRldmljZS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
aAppbmRleCA4NDdiYmNiMTc0NDg0NDhmMGVjN2U4Y2ViMWI2ZmQ2ZTlmYWM5NTg4Li4zOTFiZmMz
NDdlZWY5YWFhZjE3YmQyYmE4YjZiYTQzNmYwMDA0NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmgKQEAgLTYzLDcgKzYzLDggQEAgcHJpdmF0ZToKIGNsYXNzIFNp
bXVsYXRlZFhSRGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2ltdWxhdGVkWFJEZXZpY2Uo
KSB7IG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gdHJ1ZTsgfQorICAgIFNpbXVsYXRl
ZFhSRGV2aWNlKCk7CisgICAgflNpbXVsYXRlZFhSRGV2aWNlKCk7CiAgICAgdm9pZCBzZXROYXRp
dmVCb3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+IGdlb21ldHJ5KSB7IG1f
bmF0aXZlQm91bmRzR2VvbWV0cnkgPSBnZW9tZXRyeTsgfQogICAgIHZvaWQgc2V0Vmlld2VyT3Jp
Z2luKFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX3ZpZXdlck9yaWdp
biA9IFdURk1vdmUob3JpZ2luKTsgfQogICAgIHZvaWQgc2V0Rmxvb3JPcmlnaW4oUmVmUHRyPFdl
YlhSUmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2luKSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9y
aWdpbik7IH0KQEAgLTc1LDEyICs3NiwyMCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0K
ICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CisgICAgdm9pZCBpbml0aWFsaXpl
UmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0K
KyAgICB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKwor
ICAgIHZvaWQgc3RvcFRpbWVyKCk7CisgICAgdm9pZCBmcmFtZVRpbWVyRmlyZWQoKTsKKwogICAg
IE9wdGlvbmFsPFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4+IG1fbmF0aXZlQm91bmRzR2VvbWV0
cnk7CiAgICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fdmlld2VyT3JpZ2luOwogICAg
IFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX2Zsb29yT3JpZ2luOwogICAgIGJvb2wgbV9l
bXVsYXRlZFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiBt
X3ZpZXdzOwogICAgIGJvb2wgbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uIHsgZmFsc2Ug
fTsKKyAgICBUaW1lciBtX2ZyYW1lVGltZXI7CisgICAgVmVjdG9yPFJlcXVlc3RGcmFtZUNhbGxi
YWNrPiBtX2NhbGxiYWNrczsKIH07CiAKIGNsYXNzIFdlYkZha2VYUkRldmljZSBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYkZha2VYUkRldmljZT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5Yjg5OWUwMzBjM2Rk
NDUzNTI0NDJjZjI2Y2NiNzA2MTA2NTAzYjQuLmVmYWU0ZDcyMjAxNGM2MmEwMjdjZThlZjMxNGVj
MzlkNjNiN2ZjMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMi0wMyAgU2VyZ2lvIFZp
bGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4gYW5kIEltYW5vbCBGZXJuYW5kZXogIDxp
ZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29tcGxldGUgWFJTZXNzaW9uOjpyZXF1
ZXN0QW5pbWF0aW9uRnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnM6
CisKIDIwMjEtMDItMDIgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dMSUJdIEdhcmRlbmluZyBkZWJ1ZyB0aW1lb3V0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKaW5kZXggODIzOTYyYTU5NjYwNGY1ZTNmNjFlY2I3MjIyMWM3M2NhY2E5NzczMi4uYTc5
ZTVjNWFiNzEzMTEzMjFhNTZlZTc5MTNkNGIwMDdjNTQzYjQzZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDMgIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+IGFuZCBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5h
bmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIENvbXBsZXRlIFhSU2Vzc2lvbjo6cmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFbmFibGUgWFJTZXNzaW9uIFJBRiB0ZXN0cy4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZy
YW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTAyLTAzICBa
aXJhbiBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBXUFQgdGVz
dCBjc3MvY3NzLWdyaWQvZ3JpZC1tb2RlbC9ncmlkLWJveC1zaXppbmctMDAxLmh0bWwgZmFpbHMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU4YTQyM2ZjNmIxOTgxMTI5MzViZmYyOTA3Mjc4ZmRhOTRm
Y2M1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3Rh
bXAuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFhSRnJhbWUgZ2V0
Vmlld2VyUG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0IGZyYW1lIGZvciBpbW1lcnNpdmUKK1BBU1Mg
WFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIG5vbi1p
bW1lcnNpdmUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCAyNzNiMjRjMzQ3MTAzNjBmNWNiNmIwZmI2ODlhZTdmMTg2YzRmMjVmLi4xN2EyZDVjYTdkODQy
Zjk0MDBiNzhlZmRmN2Y4ZTU5MzgzYWU3YjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtNjM4LDYgKzYzOCw3IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkg
d2Via2l0Lm9yZy9iLzIxNTYzNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lX2ludmFsaWRoYW5kbGUuaHR0cHMu
aHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0
bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2NhbGxiYWNrX2Nh
bGxzLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMuaHRt
bCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0UmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBb
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL2FyLW1vZHVsZS9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy5odG1sIFsgUGFzcyBd
CiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIvYXItbW9kdWxlL3hyRGV2aWNlX2lzU2Vzc2lvblN1cHBvcnRlZF9pbW1lcnNpdmUtYXIuaHR0
cHMuaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419584</attachid>
            <date>2021-02-08 06:49:28 -0800</date>
            <delta_ts>2021-02-09 05:16:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220979-20210208154927.patch</filename>
            <type>text/plain</type>
            <size>48132</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJhMDdmN2EyNWM5MjRh
YWMzZGU0YjBjMjczNjliYzAzMGNlZDVlOC4uNWE5N2NkOGE1NzE1Yjk2ZDdhNGY4MWM3ODY3Mjgy
NjMyNjVmY2RmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBsZW1lbnQgdGhlIHJlbmRlciBsb29w
IGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBYUiBzZXNzaW9ucy4KKyAgICAgICAgLSBJbXBsZW1l
bnQgV2ViWFIgcmVuZGVyIHN0YXRlIHVwZGF0ZXMuCisgICAgICAgIC0gQ3JlYXRlIHRoZSBGcmFt
ZURhdGEgc3RydWN0IHVzZWQgdG8gcXVlcnkgZnJhbWUgc3BlY2lmaWMgZGF0YSBmcm9tIFhSIGRl
dmljZXMuCisgICAgICAgIC0gVXNlIHdpbmRvdyBSQUYgZm9yIGlubGluZSBYUiBzZXNzaW9ucy4K
KyAgICAgICAgLSBJbXBsZW1lbnQgV2ViRmFrZVhSRGV2aWNlIHRlc3RpbmcgcmVuZGVyaW5nIGxv
b3AgdXNpbmcgYSB0aW1lci4KKyAgICAgICAgLSBJbXBsZW1lbnQgT3BlblhSIHNlc3Npb24gc3Rh
dGVzIGFuZCBzZXNzaW9uIHRyYWNraW5nLgorICAgICAgICAtIEltcHJvdmUgT3BlblhSIGV2ZW50
IGhhbmRsaW5nLgorCisgICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgcGxhdGZvcm0gdGVzdHMu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOiBBZGQgbV9hY3RpdmUs
IG1fdGltZSBhbmQgbV9zZXNzaW9uIG1lbWJlcnMKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJh
bWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSRnJhbWU6OnNldFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2V0
QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmlzQWN0aXZlIGNvbnN0KToK
KworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oOiBBZGQgbV9jb21w
b3NpdGlvbkRpc2FibGVkIG1lbWJlciBhbmQgb3V0cHV0IGNhbnZhcyBzZXR0ZXIKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldE91dHB1dENhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlJlbmRlclN0YXRlOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQp
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJT
ZXNzaW9uOjpXZWJYUlNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpp
bml0aWFsaXplKTogcmVxdWlyZWQgdG8gY3JlYXQgdGhlIFhSRnJhbWUgd2l0aCBtYWtlUmVmKHRo
aXMpCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFj
ZSk6IGltcGxlbWVudCByZWZlcmVuY2Ugc3BhY2UgY3JlYXRpb24KKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKTogaW1wbGVtZW50IHJlbmRlciBs
b29wIGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBzZXNzaW9ucworICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSk6IGltcGxlbWVudCBXZWJYUiBy
ZW5kZXIgc3RhdGUgdXBkYXRlcworICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpmcmFt
ZVNob3VsZEJlUmVuZGVyZWQgY29uc3QpOiBhZGQgY2hlY2sgYmFzZWQgb24gdGhlIHNwZWMgCisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSk6IGltcGxlbWVudCBo
ZWxwZXIgZnVuY3Rpb24gdG8gZGlzcGF0Y2ggYSBmcmFtZSByZXF1ZXN0IHRvIFhSIGRldmljZXMK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6b25GcmFtZSk6IHByb2Nlc3MgdGhlIFhS
IGZyYW1lIGFuZCBjYWxsIHRoZSBSQUYgY2FsbGJhY2tzCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
Y3BwOiBJbXBsZW1lbnQgcmVuZGVyIGxvb3AgdXNpbmcgd2luZG93IHJhZiBsb29wLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OldlYlhSU3lzdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZpY2UpOiBBZGQg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1
bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOiBBZGFwdCB0byB0aGUgbmV3IGludGVyZmFj
ZQorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
V2ViR0xMYXllcjo6Y2FudmFzIGNvbnN0KTogSW1wbGVtZW50IGNhbnZhcyBnZXR0ZXIKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJXZWJHTExheWVyOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KTogYWRkCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQpOiBhZGQK
KworICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDogQWRkIEZyYW1lRGF0YSBzdHJ1
Y3QKKworICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcDog
SW1wbGVtZW50IHJlbmRlciBsb29wIHVzaW5nIE9wZW5YUiBBUEkKKyAgICAgICAgKFBsYXRmb3Jt
WFI6Ok9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnBvbGxFdmVudHMpOiBJbXBsZW1lbnQgZXZlbnQgbG9vcCB0
byBxdWVyeSBtX3Nlc3Npb25TdGF0ZQorICAgICAgICAoUGxhdGZvcm1YUjo6c2Vzc2lvbklzQWN0
aXZlKTogYWRkCisgICAgICAgIChQbGF0Zm9ybVhSOjpzZXNzaW9uSXNSdW5uaW5nKTogYWRkCisg
ICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmJlZ2luU2Vzc2lvbik6CisgICAgICAg
IChQbGF0Zm9ybVhSOjp4clZpZXdUb1ZpZXdEYXRhKTogaGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZl
cnQgZGF0YSBmcm9tIE9wZW5YUgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpy
ZXF1ZXN0RnJhbWUpOiBzdGFydCBPcGVuWFIgZnJhbWUsIHF1ZXJ5IHBvc2UgYW5kIHZpZXcgZGF0
YSAKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6d2FpdFVudGlsU3RvcHBpbmcp
OiBwcm9wZXJseSB3YWl0IGZvciBPcGVuWFIgZXZlbnQgYmVmb3JlIGVuZGluZyB0aGUgc2Vzc2lv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOgorCisK
KyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IEltcGxlbWVudCByZW5kZXIg
bG9vcCB1c2luZyBhIHRpbWVyCisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6
U2ltdWxhdGVkWFJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6
On5TaW11bGF0ZWRYUkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmlj
ZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11
bGF0ZWRYUkRldmljZTo6c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhS
RGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJE
ZXZpY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
aDoKKwogMjAyMS0wMi0wOCAgRnLDqWTDqXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBQZXJmb3JtIGxheW91dCBiZWZvcmUgcnVubmluZyBFZGl0b3I6OmZpbmRTdHJpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IDkzNWRj
MTI3YzlkMDdhN2M4ZDIzODQxNTQ1ODdkNTEzNTg4N2FlMWEuLmYyNzg3NjFiMGE3YjdkMjlkMTc5
NDIyMzUwYTJhYTE5OGEyM2JkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmNwcApAQCAtNDgsMTAgKzQ4LDYgQEAgV2ViWFJGcmFtZTo6V2ViWFJGcmFtZShS
ZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCiAKIFdlYlhSRnJhbWU6On5XZWJYUkZyYW1lKCkg
PSBkZWZhdWx0OwogCi1jb25zdCBXZWJYUlNlc3Npb24mIFdlYlhSRnJhbWU6OnNlc3Npb24oKSBj
b25zdAotewotICAgIHJldHVybiBtX3Nlc3Npb247Ci19CiAKIFJlZlB0cjxXZWJYUlZpZXdlclBv
c2U+IFdlYlhSRnJhbWU6OmdldFZpZXdlclBvc2UoY29uc3QgV2ViWFJSZWZlcmVuY2VTcGFjZSYp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCmluZGV4IDgwOGE2
NzY0ZjBkMmM1YWU2MWU0ZDY1OGMyODI1MDU3OWZlNWI2MjcuLjJhMjZhZDg2YTJjMzBkYThjMjNk
ZmI2YzdiYmI5MDM4MmQxMmUwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJGcmFtZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNs
dWRlICJET01IaWdoUmVzVGltZVN0YW1wLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDYs
MTQgKzQ3LDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShS
ZWY8V2ViWFJTZXNzaW9uPiYmKTsKICAgICB+V2ViWFJGcmFtZSgpOwogCi0gICAgY29uc3QgV2Vi
WFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3Q7CisgICAgY29uc3QgV2ViWFJTZXNzaW9uJiBzZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAKICAgICBSZWZQdHI8V2Vi
WFJWaWV3ZXJQb3NlPiBnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKTsK
ICAgICBSZWZQdHI8V2ViWFJQb3NlPiBnZXRQb3NlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBX
ZWJYUlNwYWNlJik7CiAKKyAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1l
KSB7IG1fdGltZSA9IHRpbWU7IH0KKyAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2ZSkgeyBt
X2FjdGl2ZSA9IGFjdGl2ZTsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2ZTsgfQorCiBwcml2YXRlOgotICAgIFdlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4m
Jik7CisgICAgZXhwbGljaXQgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKIAorICAg
IGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OworICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgbV90aW1l
OwogICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKaW5kZXggMWU0MzYzZjFmMTk0
MzFlNGExZWM5NThmMWJmYTJiNDcwNzQ1NzdhMi4uZTZkNDNjMDQ2ODk1OThiNTNkYTZkNGJiYjcz
ZjJkYzFhNDEzYTJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlJlbmRlclN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlJlbmRlclN0YXRlLmgKQEAgLTU2LDYgKzU2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJh
c2VMYXllcihXZWJYUldlYkdMTGF5ZXIqIGJhc2VMYXllcikgeyBtX2Jhc2VMYXllciA9IGJhc2VM
YXllcjsgfQogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIG91dHB1dENhbnZhcygpIGNvbnN0IHsg
cmV0dXJuIG1fb3V0cHV0Q2FudmFzLmdldCgpOyB9CisgICAgdm9pZCBzZXRPdXRwdXRDYW52YXMo
SFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcykgeyBtX291dHB1dENhbnZhcyA9IG1ha2VXZWFrUHRy
KGNhbnZhcyk7IH0KKworICAgIGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29tcG9zaXRpb25EaXNhYmxlZDsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRpb25EaXNh
YmxlZChib29sIGNvbXBvc2l0aW9uRGlzYWJsZWQpIHsgbV9jb21wb3NpdGlvbkRpc2FibGVkID0g
Y29tcG9zaXRpb25EaXNhYmxlZDsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlhSUmVu
ZGVyU3RhdGUoT3B0aW9uYWw8ZG91YmxlPiBmaWVsZE9mVmlldyk7CkBAIC02OSw2ICs3Myw3IEBA
IHByaXZhdGU6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtX2lubGluZVZlcnRpY2FsRmllbGRPZlZp
ZXc7IC8vIGluIHJhZGlhbnMKICAgICBSZWZQdHI8V2ViWFJXZWJHTExheWVyPiBtX2Jhc2VMYXll
cjsKICAgICBXZWFrUHRyPEhUTUxDYW52YXNFbGVtZW50PiBtX291dHB1dENhbnZhczsKKyAgICBi
b29sIG1fY29tcG9zaXRpb25EaXNhYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5j
cHAKaW5kZXggZDhlMmY4MTFjMjQ1YjBjZWIwYWNlZmVhM2RmZWRhNTRlNTI4YjAwNS4uYzUyZGE0
Zjk3ODM2MmIwNDBhZTg2MWI5Zjc3ZmM4YWQ4NzM0MjE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtNDUsNyArNDUsOSBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJTZXNzaW9uKTsKIAogUmVmPFdlYlhSU2Vzc2lvbj4g
V2ViWFJTZXNzaW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lz
dGVtLCBYUlNlc3Npb25Nb2RlIG1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYgZGV2aWNlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSU2Vzc2lvbihkb2N1bWVudCwgc3lzdGVtLCBt
b2RlLCBkZXZpY2UpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IFdlYlhSU2Vz
c2lvbihkb2N1bWVudCwgc3lzdGVtLCBtb2RlLCBkZXZpY2UpKTsKKyAgICBzZXNzaW9uLT5pbml0
aWFsaXplKCk7CisgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKIFdlYlhSU2Vzc2lvbjo6V2ViWFJT
ZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9u
TW9kZSBtb2RlLCBQbGF0Zm9ybVhSOjpEZXZpY2UmIGRldmljZSkKQEAgLTU1LDExICs1NywxNSBA
QCBXZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lz
dGVtJiBzeXN0ZW0sIFhSU2Vzc2lvbk1vZAogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2Rl
dmljZShtYWtlV2Vha1B0cihkZXZpY2UpKQogICAgICwgbV9hY3RpdmVSZW5kZXJTdGF0ZShXZWJY
UlJlbmRlclN0YXRlOjpjcmVhdGUobW9kZSkpCi0gICAgLCBtX2FuaW1hdGlvblRpbWVyKCp0aGlz
LCAmV2ViWFJTZXNzaW9uOjphbmltYXRpb25UaW1lckZpcmVkKQorICAgICwgbV90aW1lT3JpZ2lu
KE1vbm90b25pY1RpbWU6Om5vdygpKQogewogICAgIG1fZGV2aWNlLT5pbml0aWFsaXplVHJhY2tp
bmdBbmRSZW5kZXJpbmcobW9kZSk7CiAgICAgbV9kZXZpY2UtPnNldFRyYWNraW5nQW5kUmVuZGVy
aW5nQ2xpZW50KG1ha2VXZWFrUHRyKCp0aGlzKSk7CiAKKyAgICAvLyBodHRwczovL2ltbWVyc2l2
ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNyZWYtZm9yLWRvbS14cnJlZmVyZW5jZXNwYWNldHlwZS12
aWV3ZXIlRTIlOTElQTIKKyAgICAvLyBFdmVyeSBzZXNzaW9uIE1VU1Qgc3VwcG9ydCB2aWV3ZXIg
WFJSZWZlcmVuY2VTcGFjZXMuCisgICAgbV9kZXZpY2UtPmluaXRpYWxpemVSZWZlcmVuY2VTcGFj
ZShYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyKTsKKwogICAgIHN1c3BlbmRJZk5lZWRlZCgp
OwogfQogCkBAIC02OSw2ICs3NSwxMSBAQCBXZWJYUlNlc3Npb246On5XZWJYUlNlc3Npb24oKQog
ICAgICAgICBtX2RldmljZS0+c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpOwogfQogCit2
b2lkIFdlYlhSU2Vzc2lvbjo6aW5pdGlhbGl6ZSgpCit7CisgICAgbV9hbmltYXRpb25GcmFtZSA9
IFdlYlhSRnJhbWU6OmNyZWF0ZShtYWtlUmVmKCp0aGlzKSk7Cit9CisKIFhSRW52aXJvbm1lbnRC
bGVuZE1vZGUgV2ViWFJTZXNzaW9uOjplbnZpcm9ubWVudEJsZW5kTW9kZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fZW52aXJvbm1lbnRCbGVuZE1vZGU7CkBAIC0xOTgsNjYgKzIwOSw0NyBAQCB2
b2lkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VU
eXBlIHR5cGUsIFJlcXVlc3RSZWZlcgogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIC8v
IDEuIExldCBwcm9taXNlIGJlIGEgbmV3IFByb21pc2UuCiAgICAgLy8gMi4gUnVuIHRoZSBmb2xs
b3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6Ci0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5w
b3N0VGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHR5cGVdIChhdXRvJiBj
b250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgLy8gIDIuMS4gQ3JlYXRlIGEgcmVmZXJlbmNlIHNw
YWNlLCByZWZlcmVuY2VTcGFjZSwgd2l0aCB0aGUgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZS4K
LSAgICAgICAgLy8gIDIuMi4gSWYgcmVmZXJlbmNlU3BhY2UgaXMgbnVsbCwgcmVqZWN0IHByb21p
c2Ugd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHR5cGVdKGF1dG8mKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgLy8gMi4xLiBJZiB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgcmVmZXJlbmNlIHNwYWNlIGlz
IHN1cHBvcnRlZCBmb3IgdHlwZSBhbmQgc2Vzc2lvbiBpcyBmYWxzZSwgcXVldWUgYSB0YXNrIHRv
IHJlamVjdCBwcm9taXNlCisgICAgICAgIC8vIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvciBhbmQg
YWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgICAgIGlmICghcmVmZXJlbmNlU3BhY2VJc1N1cHBvcnRl
ZCh0eXBlKSkgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IgfSk7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUo
KnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IgfSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotCi0gICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHIvI2NyZWF0ZS1hLXJlZmVyZW5jZS1zcGFjZQotICAgICAgICBSZWZQdHI8V2ViWFJSZWZl
cmVuY2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7Ci0gICAgICAgIGlmICh0eXBlID09IFhSUmVmZXJl
bmNlU3BhY2VUeXBlOjpCb3VuZGVkRmxvb3IpCi0gICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9
IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHJlZmVyZW5jZVNwYWNlID0gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KSwgbWFrZVJlZigqdGhpcyksIHR5cGUpOwotCi0gICAgICAgIC8vICAy
LjMuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHJlZmVyZW5jZVNwYWNlLgotICAgICAgICAvLyAzLiBS
ZXR1cm4gcHJvbWlzZS4KLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNwYWNlLnJl
bGVhc2VOb25OdWxsKCkpOworICAgICAgICAvLyAyLjIuIFNldCB1cCBhbnkgcGxhdGZvcm0gcmVz
b3VyY2VzIHJlcXVpcmVkIHRvIHRyYWNrIHJlZmVyZW5jZSBzcGFjZXMgb2YgdHlwZSB0eXBlLgor
ICAgICAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKHR5cGUpOworCisgICAg
ICAgIC8vIDIuMy4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAg
ICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhS
LCBbdGhpcywgdHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZihkb3duY2FzdDxEb2N1bWVudD4oKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOworICAgICAgICAgICAgLy8gMi40LiBDcmVhdGUgYSBy
ZWZlcmVuY2Ugc3BhY2UsIHJlZmVyZW5jZVNwYWNlLCB3aXRoIHR5cGUgYW5kIHNlc3Npb24uCisg
ICAgICAgICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNjcmVh
dGUtYS1yZWZlcmVuY2Utc3BhY2UKKyAgICAgICAgICAgIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNw
YWNlPiByZWZlcmVuY2VTcGFjZTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IFhSUmVmZXJlbmNl
U3BhY2VUeXBlOjpCb3VuZGVkRmxvb3IpCisgICAgICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2Ug
PSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlUmVmKCp0
aGlzKSwgdHlwZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVmZXJlbmNl
U3BhY2UgPSBXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VSZWYoKnRo
aXMpLCB0eXBlKTsKKworICAgICAgICAgICAgLy8gMi41LiBSZXNvbHZlIHByb21pc2Ugd2l0aCBy
ZWZlcmVuY2VTcGFjZS4KKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShyZWZlcmVuY2VTcGFj
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
WFJTZXNzaW9uOjphbmltYXRpb25UaW1lckZpcmVkKCkKLXsKLSAgICBtX2xhc3RBbmltYXRpb25G
cmFtZVRpbWVzdGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotCi0gICAgaWYgKG1fY2FsbGJh
Y2tzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVE9ETzogcmV0cmlldmUg
ZnJhbWUgZnJvbSBwbGF0Zm9ybS4KLSAgICBhdXRvIGZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRl
KCp0aGlzKTsKLQotICAgIG1fcnVubmluZ0NhbGxiYWNrcy5zd2FwKG1fY2FsbGJhY2tzKTsKLSAg
ICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9ydW5uaW5nQ2FsbGJhY2tzKSB7Ci0gICAgICAgIGlm
IChjYWxsYmFjay0+aXNDYW5jZWxsZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBjYWxsYmFjay0+aGFuZGxlRXZlbnQobV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAuc2Vj
b25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSwgZnJhbWUuZ2V0KCkpOwotICAgIH0KLQot
ICAgIG1fcnVubmluZ0NhbGxiYWNrcy5jbGVhcigpOwotfQotCi12b2lkIFdlYlhSU2Vzc2lvbjo6
c2NoZWR1bGVBbmltYXRpb24oKQotewotICAgIGlmIChtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZl
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2VuZGVkKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBUT0RPOiB1c2UgZGV2aWNlJ3MgcmVmcmVzaCByYXRlLiBMZXQncyBzdGFydCB3
aXRoIDYwZnBzLgotICAgIFNlY29uZHMgYW5pbWF0aW9uSW50ZXJ2YWwgPSAxNV9tczsKLSAgICBT
ZWNvbmRzIHNjaGVkdWxlRGVsYXkgPSBzdGQ6Om1heChhbmltYXRpb25JbnRlcnZhbCAtIChNb25v
dG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKSwgMF9zKTsK
LSAgICBtX2FuaW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzY2hlZHVsZURlbGF5KTsKLX0KLQog
Ly8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhyc2Vzc2lvbi1y
ZXF1ZXN0YW5pbWF0aW9uZnJhbWUKIHVuc2lnbmVkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1h
dGlvbkZyYW1lKFJlZjxYUkZyYW1lUmVxdWVzdENhbGxiYWNrPiYmIGNhbGxiYWNrKQogeworICAg
IC8vIElnbm9yZSBhbnkgbmV3IGZyYW1lIHJlcXVlc3RzIG9uY2UgdGhlIHNlc3Npb24gaXMgZW5k
ZWQuCisgICAgaWYgKG1fZW5kZWQpCisgICAgICAgIHJldHVybiAwOworCiAgICAgLy8gMS4gTGV0
IHNlc3Npb24gYmUgdGhlIHRhcmdldCBYUlNlc3Npb24gb2JqZWN0LgogICAgIC8vIDIuIEluY3Jl
bWVudCBzZXNzaW9uJ3MgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrIGlkZW50aWZpZXIgYnkgb25l
LgogICAgIHVuc2lnbmVkIG5ld0lkID0gbV9uZXh0Q2FsbGJhY2tJZCsrOwpAQCAtMjY3LDcgKzI1
OSwxMiBAQCB1bnNpZ25lZCBXZWJYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25GcmFtZShSZWY8
WFJGcmFtZVJlcXVlc3RDYWxsYmFjaz4mJiBjYWxsYgogICAgIGNhbGxiYWNrLT5zZXRDYWxsYmFj
a0lkKG5ld0lkKTsKICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwog
Ci0gICAgc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25GcmFtZSk7
CisgICAgLy8gU2NyaXB0IGNhbiBhZGQgbXVsdGlwbGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNh
bGxiYWNrcyBidXQgd2Ugc2hvdWxkIG9ubHkgcmVxdWVzdCBhIGRldmljZSBmcmFtZSBvbmNlLgor
ICAgIC8vIFdoZW4gbV9hbmltYXRpb25GcmFtZSBpcyBhY3RpdmUsIHRoZSBuZXh0IHJlcXVlc3RG
cmFtZSBpcyBzY2hlZHVsZWQgYXQgdGhlIGVuZCBvZiBXZWJYUlNlc3Npb246Om9uRnJhbWUoKSB0
byBwcmV2ZW50CisgICAgLy8gcmVxdWVzdGluZyBhIG5ldyBmcmFtZSBiZWZvcmUgdGhlIGN1cnJl
bnQgb25lIGhhcyBlbmRlZC4KKyAgICBpZiAobV9jYWxsYmFja3Muc2l6ZSgpID09IDEgJiYgIW1f
YW5pbWF0aW9uRnJhbWUtPmlzQWN0aXZlKCkpCisgICAgICAgIHJlcXVlc3RGcmFtZSgpOwogCiAg
ICAgLy8gNC4gUmV0dXJuIHNlc3Npb24ncyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2sgaWRlbnRp
ZmllcidzIGN1cnJlbnQgdmFsdWUuCiAgICAgcmV0dXJuIG5ld0lkOwpAQCAtMzM2LDYgKzMzMywx
MCBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6c2h1dGRvd24oSW5pdGlhdGVkQnlTeXN0ZW0gaW5pdGlh
dGVkQnlTeXN0ZW0pCiAgICAgLy8gMi4gU2V0IHNlc3Npb24ncyBlbmRlZCB2YWx1ZSB0byB0cnVl
LgogICAgIG1fZW5kZWQgPSB0cnVlOwogCisgICAgLy8gUmVsZWFzZSBhbmltYXRpb25GcmFtZSwg
d2hpY2ggY29udGFpbnMgYSBSZWYgdG8gdGhpcyBzZXNzaW9uLgorICAgIG1fYW5pbWF0aW9uRnJh
bWUtPnNldEFjdGl2ZShmYWxzZSk7CisgICAgbV9hbmltYXRpb25GcmFtZSA9IG51bGxwdHI7CisK
ICAgICAvLyAzLiBJZiB0aGUgYWN0aXZlIGltbWVyc2l2ZSBzZXNzaW9uIGlzIGVxdWFsIHRvIHNl
c3Npb24sIHNldCB0aGUgYWN0aXZlIGltbWVyc2l2ZSBzZXNzaW9uIHRvIG51bGwuCiAgICAgLy8g
NC4gUmVtb3ZlIHNlc3Npb24gZnJvbSB0aGUgbGlzdCBvZiBpbmxpbmUgc2Vzc2lvbnMuCiAgICAg
bV94clN5c3RlbS5zZXNzaW9uRW5kZWQoKnRoaXMpOwpAQCAtNDIwLDYgKzQyMSwxMzcgQEAgdm9p
ZCBXZWJYUlNlc3Npb246OnNlc3Npb25EaWRFbmQoKQogICAgIHNodXRkb3duKEluaXRpYXRlZEJ5
U3lzdGVtOjpZZXMpOwogfQogCit2b2lkIFdlYlhSU2Vzc2lvbjo6YXBwbHlQZW5kaW5nUmVuZGVy
U3RhdGUoKQoreworICAgIC8vIGh0dHBzOiAvL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhy
LyNhcHBseS10aGUtcGVuZGluZy1yZW5kZXItc3RhdGUKKyAgICAvLyAxLiBMZXQgYWN0aXZlU3Rh
dGUgYmUgc2Vzc2lvbuKAmXMgYWN0aXZlIHJlbmRlciBzdGF0ZS4KKyAgICAvLyAyLiBMZXQgbmV3
U3RhdGUgYmUgc2Vzc2lvbuKAmXMgcGVuZGluZyByZW5kZXIgc3RhdGUuCisgICAgLy8gMy4gU2V0
IHNlc3Npb27igJlzIHBlbmRpbmcgcmVuZGVyIHN0YXRlIHRvIG51bGwuCisgICAgYXV0byBuZXdT
dGF0ZSA9IG1fcGVuZGluZ1JlbmRlclN0YXRlOworICAgIEFTU0VSVChuZXdTdGF0ZSk7CisKKyAg
ICAvLyA0LiBMZXQgb2xkQmFzZUxheWVyIGJlIGFjdGl2ZVN0YXRl4oCZcyBiYXNlTGF5ZXIuCisg
ICAgLy8gNS4gTGV0IG9sZExheWVycyBiZSBhY3RpdmVTdGF0ZeKAmXMgbGF5ZXJzLgorICAgIC8v
IEZJWE1FOiB0aG9zZSBhcmUgb25seSBuZWVkZWQgZm9yIHN0ZXAgNi4yLgorCisgICAgLy8gNi4x
IFNldCBhY3RpdmVTdGF0ZSB0byBuZXdTdGF0ZS4KKyAgICBtX2FjdGl2ZVJlbmRlclN0YXRlID0g
bmV3U3RhdGU7CisKKyAgICAvLyA2LjIgSWYgb2xkQmFzZUxheWVyIGlzIG5vdCBlcXVhbCB0byBh
Y3RpdmVTdGF0ZeKAmXMgYmFzZUxheWVyLCBvbGRMYXllcnMgaXMgbm90IGVxdWFsIHRvIGFjdGl2
ZVN0YXRl4oCZcyBsYXllcnMsIG9yIHRoZSBkaW1lbnNpb25zIG9mIGFueSBvZiB0aGUgbGF5ZXJz
IGhhdmUgY2hhbmdlZCwgdXBkYXRlIHRoZSB2aWV3cG9ydHMgZm9yIHNlc3Npb24uCisgICAgLy8g
RklYTUU6IGltcGxlbWVudCB0aGlzLgorCisgICAgLy8gNi4zIElmIGFjdGl2ZVN0YXRl4oCZcyBp
bmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IGlzIGxlc3MgdGhhbiBzZXNzaW9u4oCZcyBtaW5pbXVt
IGlubGluZSBmaWVsZCBvZiB2aWV3IHNldCBhY3RpdmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxG
aWVsZE9mVmlldyB0byBzZXNzaW9u4oCZcyBtaW5pbXVtIGlubGluZSBmaWVsZCBvZiB2aWV3Lgor
ICAgIGlmIChtX2FjdGl2ZVJlbmRlclN0YXRlLT5pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkg
PCBtX21pbmltdW1JbmxpbmVGT1YpCisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldElu
bGluZVZlcnRpY2FsRmllbGRPZlZpZXcobV9taW5pbXVtSW5saW5lRk9WKTsKKworICAgIC8vIDYu
NCBJZiBhY3RpdmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVsZE9mVmlldyBpcyBncmVhdGVy
IHRoYW4gc2Vzc2lvbuKAmXMgbWF4aW11bSBpbmxpbmUgZmllbGQgb2YgdmlldyBzZXQgYWN0aXZl
U3RhdGXigJlzIGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgdG8gc2Vzc2lvbuKAmXMgbWF4aW11
bSBpbmxpbmUgZmllbGQgb2Ygdmlldy4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+aW5s
aW5lVmVydGljYWxGaWVsZE9mVmlldygpID4gbV9tYXhpbXVtSW5saW5lRk9WKQorICAgICAgICBt
X2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRJbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KG1fbWF4aW11
bUlubGluZUZPVik7CisKKyAgICAvLyA2LjUgSWYgYWN0aXZlU3RhdGXigJlzIGRlcHRoTmVhciBp
cyBsZXNzIHRoYW4gc2Vzc2lvbuKAmXMgbWluaW11bSBuZWFyIGNsaXAgcGxhbmUgc2V0IGFjdGl2
ZVN0YXRl4oCZcyBkZXB0aE5lYXIgdG8gc2Vzc2lvbuKAmXMgbWluaW11bSBuZWFyIGNsaXAgcGxh
bmUuCisgICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmRlcHRoTmVhcigpIDwgbV9taW5pbXVt
TmVhckNsaXBQbGFuZSkKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0RGVwdGhOZWFy
KG1fbWluaW11bU5lYXJDbGlwUGxhbmUpOworCisgICAgLy8gNi42IElmIGFjdGl2ZVN0YXRl4oCZ
cyBkZXB0aEZhciBpcyBncmVhdGVyIHRoYW4gc2Vzc2lvbuKAmXMgbWF4aW11bSBmYXIgY2xpcCBw
bGFuZSBzZXQgYWN0aXZlU3RhdGXigJlzIGRlcHRoRmFyIHRvIHNlc3Npb27igJlzIG1heGltdW0g
ZmFyIGNsaXAgcGxhbmUuCisgICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmRlcHRoRmFyKCkg
PiBtX21heGltdW1GYXJDbGlwUGxhbmUpCisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNl
dERlcHRoRmFyKG1fbWF4aW11bUZhckNsaXBQbGFuZSk7CisKKyAgICAvLyA2LjcgTGV0IGJhc2VM
YXllciBiZSBhY3RpdmVTdGF0ZeKAmXMgYmFzZUxheWVyLgorICAgIGF1dG8gYmFzZUxheWVyID0g
bV9hY3RpdmVSZW5kZXJTdGF0ZS0+YmFzZUxheWVyKCk7CisKKyAgICAvLyA2LjggU2V0IGFjdGl2
ZVN0YXRl4oCZcyBjb21wb3NpdGlvbiBkaXNhYmxlZCBhbmQgb3V0cHV0IGNhbnZhcyBhcyBmb2xs
b3dzOgorICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldENvbXBvc2l0aW9uRGlzYWJsZWQodHJ1
ZSk7CisgICAgaWYgKG1fbW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbmxpbmUgJiYgaXM8V2ViWFJX
ZWJHTExheWVyPihiYXNlTGF5ZXIpICYmIGJhc2VMYXllci0+Y29tcG9zaXRpb25EaXNhYmxlZCgp
KSB7CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldENvbXBvc2l0aW9uRGlzYWJsZWQo
dHJ1ZSk7CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldE91dHB1dENhbnZhcyhiYXNl
TGF5ZXItPmNhbnZhcygpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0
YXRlLT5zZXRDb21wb3NpdGlvbkRpc2FibGVkKGZhbHNlKTsKKyAgICAgICAgbV9hY3RpdmVSZW5k
ZXJTdGF0ZS0+c2V0T3V0cHV0Q2FudmFzKG51bGxwdHIpOworICAgIH0KK30KKworLy8gaHR0cHM6
Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jc2hvdWxkLWJlLXJlbmRlcmVkCitib29s
IFdlYlhSU2Vzc2lvbjo6ZnJhbWVTaG91bGRCZVJlbmRlcmVkKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fYWN0aXZlUmVuZGVyU3RhdGUtPmJhc2VMYXllcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fbW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbmxpbmUgJiYgIW1fYWN0aXZlUmVu
ZGVyU3RhdGUtPm91dHB1dENhbnZhcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0RnJhbWUoKQoreworICAg
IG1fZGV2aWNlLT5yZXF1ZXN0RnJhbWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oYXV0byYmIGZyYW1lRGF0YSkgeworICAgICAgICBvbkZyYW1lKFdURk1vdmUoZnJhbWVE
YXRhKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViWFJTZXNzaW9uOjpvbkZyYW1lKFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhJiYgZnJhbWVEYXRhKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBpZiAobV9lbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
UXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwcy4KKyAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbdGhpcywgZnJh
bWVEYXRhID0gV1RGTW92ZShmcmFtZURhdGEpXSgpIHsKKyAgICAgICAgaWYgKG1fZW5kZWQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vICAxLkxldCBub3cgYmUgdGhlIGN1cnJlbnQg
aGlnaCByZXNvbHV0aW9uIHRpbWUuCisgICAgICAgIGF1dG8gbm93ID0gKE1vbm90b25pY1RpbWU6
Om5vdygpIC0gbV90aW1lT3JpZ2luKS5taWxsaXNlY29uZHMoKTsKKworICAgICAgICBBU1NFUlQo
bV9hbmltYXRpb25GcmFtZSk7CisgICAgICAgIC8vICAyLkxldCBmcmFtZSBiZSBzZXNzaW9u4oCZ
cyBhbmltYXRpb24gZnJhbWUuCisgICAgICAgIC8vICAzLlNldCBmcmFtZeKAmXMgdGltZSB0byBm
cmFtZVRpbWUuCisgICAgICAgIG1fYW5pbWF0aW9uRnJhbWUtPnNldFRpbWUoc3RhdGljX2Nhc3Q8
RE9NSGlnaFJlc1RpbWVTdGFtcD4oZnJhbWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1lKSk7CisK
KyAgICAgICAgLy8gNC4gRm9yIGVhY2ggdmlldyBpbiBsaXN0IG9mIHZpZXdzLCBzZXQgdmlld+KA
mXMgdmlld3BvcnQgbW9kaWZpYWJsZSBmbGFnIHRvIHRydWUuCisgICAgICAgIC8vIDUuIElmIHRo
ZSBhY3RpdmUgZmxhZyBvZiBhbnkgdmlldyBpbiB0aGUgbGlzdCBvZiB2aWV3cyBoYXMgY2hhbmdl
ZCBzaW5jZSB0aGUgbGFzdCBYUiBhbmltYXRpb24gZnJhbWUsIHVwZGF0ZSB0aGUgdmlld3BvcnRz
LgorICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorCisgICAgICAgIC8vIEZJWE1FOiBJIG1v
dmVkIHN0ZXAgNyBiZWZvcmUgNiBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9pbW1lcnNp
dmUtd2ViL3dlYnhyL2lzc3Vlcy8xMTY0CisgICAgICAgIC8vIDcuSWYgc2Vzc2lvbuKAmXMgcGVu
ZGluZyByZW5kZXIgc3RhdGUgaXMgbm90IG51bGwsIGFwcGx5IHRoZSBwZW5kaW5nIHJlbmRlciBz
dGF0ZS4KKyAgICAgICAgaWYgKG1fcGVuZGluZ1JlbmRlclN0YXRlKQorICAgICAgICAgICAgYXBw
bHlQZW5kaW5nUmVuZGVyU3RhdGUoKTsKKworICAgICAgICAvLyA2LiBJZiB0aGUgZnJhbWUgc2hv
dWxkIGJlIHJlbmRlcmVkIGZvciBzZXNzaW9uOgorICAgICAgICBpZiAoZnJhbWVTaG91bGRCZVJl
bmRlcmVkKCkpIHsKKyAgICAgICAgICAgIC8vIDYuMS5TZXQgc2Vzc2lvbuKAmXMgbGlzdCBvZiBj
dXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzIHRvIGJlIHNlc3Npb27i
gJlzIGxpc3Qgb2YgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcy4KKyAgICAgICAgICAgIC8vIDYu
Mi5TZXQgc2Vzc2lvbuKAmXMgbGlzdCBvZiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzIHRvIHRo
ZSBlbXB0eSBsaXN0LgorICAgICAgICAgICAgbV9ydW5uaW5nQ2FsbGJhY2tzLnN3YXAobV9jYWxs
YmFja3MpOworCisgICAgICAgICAgICAvLyA2LjMuU2V0IGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVh
biB0byB0cnVlLgorICAgICAgICAgICAgbV9hbmltYXRpb25GcmFtZS0+c2V0QWN0aXZlKHRydWUp
OworCisgICAgICAgICAgICAvLyA2LjQuQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCisg
ICAgICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorCisgICAgICAgICAgICAvLyA2LjUuRm9y
IGVhY2ggZW50cnkgaW4gc2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmlt
YXRpb24gZnJhbWUgY2FsbGJhY2tzLCBpbiBvcmRlcjoKKyAgICAgICAgICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBtX3J1bm5pbmdDYWxsYmFja3MpIHsKKyAgICAgICAgICAgICAgICAvLyAgNi42
LklmIHRoZSBlbnRyeeKAmXMgY2FuY2VsbGVkIGJvb2xlYW4gaXMgdHJ1ZSwgY29udGludWUgdG8g
dGhlIG5leHQgZW50cnkuCisgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrLT5pc0NhbmNlbGxl
ZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAvLyAg
Ni43Lkludm9rZSB0aGUgV2ViIElETCBjYWxsYmFjayBmdW5jdGlvbiBmb3IgZW50cnksIHBhc3Np
bmcgbm93IGFuZCBmcmFtZSBhcyB0aGUgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgY2FsbGJh
Y2stPmhhbmRsZUV2ZW50KG5vdywgKm1fYW5pbWF0aW9uRnJhbWUpOworCisgICAgICAgICAgICAg
ICAgLy8gIDYuOC5JZiBhbiBleGNlcHRpb24gaXMgdGhyb3duLCByZXBvcnQgdGhlIGV4Y2VwdGlv
bi4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIDYuOS5TZXQgc2Vzc2lvbuKAmXMgbGlz
dCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzIHRvIHRoZSBl
bXB0eSBsaXN0LgorICAgICAgICAgICAgbV9ydW5uaW5nQ2FsbGJhY2tzLmNsZWFyKCk7CisKKyAg
ICAgICAgICAgIC8vIDYuMTAuU2V0IGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiB0byBmYWxzZS4K
KyAgICAgICAgICAgIC8vIElmIHRoZSBzZXNzaW9uIGlzIGVuZGVkLCBtX2FuaW1hdGlvbkZyYW1l
LT5zZXRBY3RpdmUgZmFsc2UgaXMgc2V0IGluIHNodXRkb3duKCkuCisgICAgICAgICAgICBpZiAo
bV9hbmltYXRpb25GcmFtZSkKKyAgICAgICAgICAgICAgICBtX2FuaW1hdGlvbkZyYW1lLT5zZXRB
Y3RpdmUoZmFsc2UpOworCisgICAgICAgICAgICBpZiAoIW1fY2FsbGJhY2tzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICByZXF1ZXN0RnJhbWUoKTsKKyAgICAgICAgfQorCisgICAgfSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IDU1NTQzMGM4
YzNmNzMxMjMxYWFmNGYwYzNmZmI1ODI5ZDY5MjliMzYuLjQyYmU4OGM2MzdkYjI1MTBmZDdiMWUz
YjUxM2QwMWU2MDdkOTBmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNs
dWRlICJXZWJYUklucHV0U291cmNlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJYUlJlbmRlclN0YXRl
LmgiCiAjaW5jbHVkZSAiV2ViWFJTcGFjZS5oIgpAQCAtOTEsNyArOTEsOCBAQCBwdWJsaWM6CiAg
ICAgWFJTZXNzaW9uTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAKIHByaXZh
dGU6Ci0gICAgV2ViWFJTZXNzaW9uKERvY3VtZW50JiwgV2ViWFJTeXN0ZW0mLCBYUlNlc3Npb25N
b2RlLCBQbGF0Zm9ybVhSOjpEZXZpY2UmKTsKKyAgICBleHBsaWNpdCBXZWJYUlNlc3Npb24oRG9j
dW1lbnQmLCBXZWJYUlN5c3RlbSYsIFhSU2Vzc2lvbk1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYp
OworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVu
dFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFdlYlhSU2Vzc2lvbkV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQpAQCAtMTA5LDEx
ICsxMTAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNodXRkb3duKEluaXRpYXRlZEJ5U3lzdGVt
KTsKICAgICB2b2lkIGRpZENvbXBsZXRlU2h1dGRvd24oKTsKIAotICAgIHZvaWQgYW5pbWF0aW9u
VGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKLQogICAgIGJvb2wg
cmVmZXJlbmNlU3BhY2VJc1N1cHBvcnRlZChYUlJlZmVyZW5jZVNwYWNlVHlwZSkgY29uc3Q7CiAK
KyAgICBib29sIGZyYW1lU2hvdWxkQmVSZW5kZXJlZCgpIGNvbnN0OworICAgIHZvaWQgcmVxdWVz
dEZyYW1lKCk7CisgICAgdm9pZCBvbkZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
JiYpOworICAgIHZvaWQgYXBwbHlQZW5kaW5nUmVuZGVyU3RhdGUoKTsKKwogICAgIFhSRW52aXJv
bm1lbnRCbGVuZE1vZGUgbV9lbnZpcm9ubWVudEJsZW5kTW9kZTsKICAgICBYUkludGVyYWN0aW9u
TW9kZSBtX2ludGVyYWN0aW9uTW9kZTsKICAgICBYUlZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxp
dHlTdGF0ZTsKQEAgLTEyNiwxMyArMTI5LDIwIEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxQbGF0
Zm9ybVhSOjpEZXZpY2U+IG1fZGV2aWNlOwogICAgIFJlZlB0cjxXZWJYUlJlbmRlclN0YXRlPiBt
X2FjdGl2ZVJlbmRlclN0YXRlOwogICAgIFJlZlB0cjxXZWJYUlJlbmRlclN0YXRlPiBtX3BlbmRp
bmdSZW5kZXJTdGF0ZTsKKyAgICBNb25vdG9uaWNUaW1lIG1fdGltZU9yaWdpbjsKIAogICAgIHVu
c2lnbmVkIG1fbmV4dENhbGxiYWNrSWQgeyAxIH07CiAgICAgVmVjdG9yPFJlZjxYUkZyYW1lUmVx
dWVzdENhbGxiYWNrPj4gbV9jYWxsYmFja3M7CiAgICAgVmVjdG9yPFJlZjxYUkZyYW1lUmVxdWVz
dENhbGxiYWNrPj4gbV9ydW5uaW5nQ2FsbGJhY2tzOwogCi0gICAgVGltZXIgbV9hbmltYXRpb25U
aW1lcjsKLSAgICBNb25vdG9uaWNUaW1lIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wOwor
ICAgIFJlZlB0cjxXZWJYUkZyYW1lPiBtX2FuaW1hdGlvbkZyYW1lOworCisgICAgZG91YmxlIG1f
bWluaW11bUlubGluZUZPViB7IDAuMCB9OworICAgIGRvdWJsZSBtX21heGltdW1JbmxpbmVGT1Yg
eyBwaUZsb2F0IH07CisKKyAgICAvLyBJbiBtZXRlcnMuCisgICAgZG91YmxlIG1fbWluaW11bU5l
YXJDbGlwUGxhbmUgeyAwLjEgfTsKKyAgICBkb3VibGUgbV9tYXhpbXVtRmFyQ2xpcFBsYW5lIHsg
MTAwMC4wIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4IDEyYTlmMjFlNzI0YTEyZGRjMTVk
YTlhODRjMWI4MmViNGQxN2Q0ZDguLjI4OGM2ZjBkNWIyYjAwMjkzZTcxYjg2MzVjZWQ3NzJmYmYy
MjJlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3Bw
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRl
ICJKU1hSUmVmZXJlbmNlU3BhY2VUeXBlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorI2lu
Y2x1ZGUgIlJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTQ5LDExICs1MCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSU3lzdGVtKTsKIAot
V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpEdW1teUlubGluZURldmljZSgpCi17Ci0g
ICAgc2V0RW5hYmxlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGU6OklubGluZSwgeyBYUlJlZmVyZW5j
ZVNwYWNlVHlwZTo6Vmlld2VyIH0pOwotfQotCiBSZWY8V2ViWFJTeXN0ZW0+IFdlYlhSU3lzdGVt
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlN5c3RlbShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSk7CkBAIC02MSw2ICs1Nyw3IEBAIFJlZjxXZWJYUlN5c3RlbT4gV2ViWFJTeXN0ZW06
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250CiAKIFdl
YlhSU3lzdGVtOjpXZWJYUlN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQorICAgICwgbV9kZWZhdWx0SW5saW5lRGV2aWNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
CiB7CiAgICAgbV9pbmxpbmVYUkRldmljZSA9IG1ha2VXZWFrUHRyKG1fZGVmYXVsdElubGluZURl
dmljZSk7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CkBAIC00NzUsNiArNDcyLDQ5IEBAIHZvaWQg
V2ViWFJTeXN0ZW06OnNlc3Npb25FbmRlZChXZWJYUlNlc3Npb24mIHNlc3Npb24pCiAgICAgbV9p
bmxpbmVTZXNzaW9ucy5yZW1vdmUoc2Vzc2lvbik7CiB9CiAKK2NsYXNzIElubGluZVJlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrIGZpbmFsOiBwdWJsaWMgUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SW5saW5lUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
ayhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSkpOworICAgIH0KK3By
aXZhdGU6CisgICAgSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYm
IGNhbGxiYWNrKQorICAgICAgICA6IFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrKCZzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KSwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkgCisgICAg
eworICAgIH0KKworICAgIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2ZW50KGRvdWJsZSkg
ZmluYWwKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fY2FsbGJhY2s7Cit9OworCisKK1dlYlhS
U3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZpY2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICA6IG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKK3sKKyAgICBzZXRFbmFibGVkRmVh
dHVyZXMoWFJTZXNzaW9uTW9kZTo6SW5saW5lLCB7IFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3
ZXIgfSk7Cit9CisKK3ZvaWQgV2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0
RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIC8vIElubGluZSBYUiBzZXNzaW9ucyByZWx5IG9uIGRvY3VtZW50LnJlcXVlc3RB
bmltYXRpb25GcmFtZSB0byBwZXJmb3JtIHRoZSByZW5kZXIgbG9vcC4KKyAgICBhdXRvIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByYWYgPSBJbmxpbmVS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAg
ICBjYWxsYmFjayh7IH0pOworICAgIH0pOworCisgICAgZG9jdW1lbnQtPnJlcXVlc3RBbmltYXRp
b25GcmFtZShyYWYpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
aAppbmRleCBjNzYyZDQ2YWMwZTkwNGEzOTgzZDM5N2Y2ODY1NjFkNGMxNjViMzU1Li5jMzNjZjcz
YjgxMjRlNjUwMzgyMTUwOWEzODIwOTRiOTMwZWZiNTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCkBAIC0xMDYsMTEgKzEwNiwxNiBAQCBwcml2YXRlOgog
ICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RlZmF1bHQtaW5s
aW5lLXhyLWRldmljZQogICAgIGNsYXNzIER1bW15SW5saW5lRGV2aWNlIGZpbmFsIDogcHVibGlj
IFBsYXRmb3JtWFI6OkRldmljZSB7CiAgICAgcHVibGljOgotICAgICAgICBEdW1teUlubGluZURl
dmljZSgpOworICAgICAgICBEdW1teUlubGluZURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJl
bmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9CiAgICAgICAgIHZvaWQg
c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGlu
aXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZp
bmFsIHsgfTsKKworICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6
OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICB9OwogICAgIER1bW15SW5s
aW5lRGV2aWNlIG1fZGVmYXVsdElubGluZURldmljZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCmluZGV4IDg2ZGQxMWIwMDE0M2JmODBl
YTgxYWUyYWRkOGRlODRkYzAyZDAzM2YuLmNhNTg3ODg2MWQyNGM3ZWY1ZDJmY2ViNTJhNzdkZmFi
N2U2MDhkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJX
ZWJHTExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2Vi
R0xMYXllci5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1
ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNp
bmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNpZiBFTkFCTEUoV0VCR0wyKQpAQCAt
MTk4LDYgKzIwMCwyMCBAQCBkb3VibGUgV2ViWFJXZWJHTExheWVyOjpnZXROYXRpdmVGcmFtZWJ1
ZmZlclNjYWxlRmFjdG9yKGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2VzcwogICAgIHJldHVybiAobmF0
aXZlU2l6ZSAvIHJlY29tbWVuZGVkU2l6ZSkud2lkdGgoKTsKIH0KIAorSFRNTENhbnZhc0VsZW1l
bnQqIFdlYlhSV2ViR0xMYXllcjo6Y2FudmFzKCkgY29uc3QKK3sKKyAgICBIVE1MQ2FudmFzRWxl
bWVudCogYyA9IFdURjo6c3dpdGNoT24obV9jb250ZXh0LCBbXShjb25zdCBSZWZQdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZT4mIGJhc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gY2FudmFz
ID0gYmFzZUNvbnRleHQtPmNhbnZhcygpOworICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihj
YW52YXMsIFtdKGNvbnN0IFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhcykgeworICAg
ICAgICAgICAgcmV0dXJuIGNhbnZhcy5nZXQoKTsKKyAgICAgICAgfSwgW10oY29uc3QgUmVmUHRy
PE9mZnNjcmVlbkNhbnZhcz4pIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgiYmFz
ZUxheWVyIG9mIGEgV2ViWFJXZWJHTExheWVyIG11c3QgYmUgYW4gSFRNTENhbnZhc0VsZW1lbnQi
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9KTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gYzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UldlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExh
eWVyLmgKaW5kZXggMzE3NTVkODQ5NmE2YTcwMmUyMzMyOWNmYmYzMjliOWNjNGI4YTlkZi4uM2Y3
NTg3ZGU4OWRhNmUyMzFjOTQzYzRmOTA1ZmMxY2YxODA1OTI5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCkBAIC0zNiw2ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBJ
bnRTaXplOwogY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDsKQEAgLTc0LDYgKzc1LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYlhSU2Vzc2lv
biYgc2Vzc2lvbigpIHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQogCisgICAgYm9vbCBjb21wb3NpdGlv
bkRpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KKyAg
ICB2b2lkIHNldENvbXBvc2l0aW9uRGlzYWJsZWQoYm9vbCBjb21wb3NpdGlvbkRpc2FibGVkKSB7
IG1faXNDb21wb3NpdGlvbkRpc2FibGVkID0gY29tcG9zaXRpb25EaXNhYmxlZDsgfQorCisgICAg
SFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYlhS
V2ViR0xMYXllcihSZWY8V2ViWFJTZXNzaW9uPiYmLCBXZWJYUlJlbmRlcmluZ0NvbnRleHQmJiwg
Y29uc3QgWFJXZWJHTExheWVySW5pdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKaW5kZXggYjllZjQ1YzBjNjk3MTRhZTgzYzcwNDQ1NGQ5NTRiZDUxZWE0NzY2Yi4u
NDMyNWYzMzc1Y2YzMDI4YTQ3ZGZmY2M2ZGY1OWJiNzQzODM1MDBkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtMTgsNiArMTgsNyBAQAogICovCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBA
IC03NSw2ICs3NiwzMSBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhpcyBtZXRob2QgcmV0dXJucyB0
cnVlLCB0aGF0IG1lYW5zIHRoZSBkZXZpY2Ugd2lsbCBub3RpZnkgVHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQKICAgICAvLyB3aGVuIHRoZSBwbGF0Zm9ybSBoYXMgY29tcGxldGVkIGFsbCBzdGVw
cyB0byBzaHV0IGRvd24gdGhlIFhSIHNlc3Npb24uCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
U2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFJlZmVyZW5jZVNwYWNlVHlw
ZSkgPSAwOworCisgICAgc3RydWN0IEZyYW1lRGF0YSB7CisgICAgICAgIGxvbmcgcHJlZGljdGVk
RGlzcGxheVRpbWU7CisgICAgICAgIHN0cnVjdCBWaWV3RGF0YSB7CisgICAgICAgICAgICBzdHJ1
Y3QgeworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCBwb3NpdGlvbjsKKyAg
ICAgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgICAgICBmbG9hdCB4OworICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB5OworICAgICAgICAgICAgICAgICAgICBmbG9hdCB6Owor
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB3OworICAgICAgICAgICAgICAgIH0gb3JpZW50YXRp
b247CisgICAgICAgICAgICB9IHBvc2U7CisgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAg
ICAgICAgIGZsb2F0IHJVcDsKKyAgICAgICAgICAgICAgICBmbG9hdCByRG93bjsKKyAgICAgICAg
ICAgICAgICBmbG9hdCByTGVmdDsKKyAgICAgICAgICAgICAgICBmbG9hdCByUmlnaHQ7CisgICAg
ICAgICAgICB9IGZvdjsKKyAgICAgICAgfTsKKyAgICAgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3
UG9zZXM7CisgICAgfTsKKyAgICB1c2luZyBSZXF1ZXN0RnJhbWVDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoRnJhbWVEYXRhJiYpPjsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVl
c3RGcmFtZUNhbGxiYWNrJiYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIERldmljZSgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0
Zm9ybVhST3BlblhSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0
Zm9ybVhST3BlblhSLmNwcAppbmRleCBmZTg2NWU2NzFkNzA2ODZkZTc5MWYxNDAwZTZjZjNlMmM4
NjllYzIyLi5jYzRkNzIxNTNjNmVlYWZkZjIxNjJlOTg4MmE5ZTA3NzU4YjIxZGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVu
WFIuY3BwCkBAIC0yNjAsMTEgKzI2MCw2IEBAIE9wZW5YUkRldmljZTo6T3BlblhSRGV2aWNlKFhy
U3lzdGVtSWQgaWQsIFhySW5zdGFuY2UgaW5zdGFuY2UsIFdvcmtRdWV1ZSYgcXVldWUsCiAgICAg
fSk7CiB9CiAKLU9wZW5YUkRldmljZTo6fk9wZW5YUkRldmljZSgpCi17Ci0gICAgc2h1dERvd25U
cmFja2luZ0FuZFJlbmRlcmluZygpOwotfQotCiBEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJl
cyBPcGVuWFJEZXZpY2U6OmVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mIHNlc3Np
b24pIGNvbnN0CiB7CiAgICAgdWludDMyX3QgcmVmZXJlbmNlU3BhY2VzQ291bnQ7CkBAIC0zOTUs
NiArMzkwLDE2IEBAIFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlIHRvWHJWaWV3Q29uZmlndXJhdGlv
blR5cGUoU2Vzc2lvbk1vZGUgbW9kZSkKICAgICByZXR1cm4gWFJfVklFV19DT05GSUdVUkFUSU9O
X1RZUEVfUFJJTUFSWV9NT05POwogfQogCitzdGF0aWMgYm9vbCBpc1Nlc3Npb25BY3RpdmUoWHJT
ZXNzaW9uU3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJuIHN0YXRlID09IFhSX1NFU1NJT05fU1RB
VEVfVklTSUJMRSB8fCBzdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX0ZPQ1VTRUQ7Cit9CisKK3N0
YXRpYyBib29sIGlzU2Vzc2lvblJlYWR5KFhyU2Vzc2lvblN0YXRlIHN0YXRlKQoreworICAgIHJl
dHVybiBzdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1JFQURZICAmJiBzdGF0ZSA8IFhSX1NFU1NJ
T05fU1RBVEVfU1RPUFBJTkc7Cit9CisKIHZvaWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUgbW9kZSkKIHsKICAgICBtX3F1ZXVlLmRpc3Bh
dGNoKFt0aGlzLCBtb2RlXSgpIHsKQEAgLTQxMywxOCArNDE4LDE4NiBAQCB2b2lkIE9wZW5YUkRl
dmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiB9
CiAKIHZvaWQgT3BlblhSRGV2aWNlOjpyZXNldFNlc3Npb24oKQoreworICAgIEFTU0VSVCgmUnVu
TG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgaWYgKG1fc2Vzc2lv
biAhPSBYUl9OVUxMX0hBTkRMRSkgeworICAgICAgICB4ckRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lv
bik7CisgICAgICAgIG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExFOworICAgIH0KKyAgICBtX3Nl
c3Npb25TdGF0ZSA9IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTjsKK30KKwordm9pZCBPcGVuWFJE
ZXZpY2U6OmhhbmRsZVNlc3Npb25TdGF0ZUNoYW5nZSgpCit7CisgICAgQVNTRVJUKCZSdW5Mb29w
OjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKKyAgICBpZiAobV9zZXNzaW9uU3Rh
dGUgPT0gWFJfU0VTU0lPTl9TVEFURV9TVE9QUElORykgeworICAgICAgICAvLyBUaGUgYXBwbGlj
YXRpb24gc2hvdWxkIGV4aXQgdGhlIHJlbmRlciBsb29wIGFuZCBjYWxsIHhyRW5kU2Vzc2lvbgor
ICAgICAgICBlbmRTZXNzaW9uKCk7CisgICAgfSBlbHNlIGlmIChtX3Nlc3Npb25TdGF0ZSA9PSBY
Ul9TRVNTSU9OX1NUQVRFX1JFQURZKSB7CisgICAgICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBpcyBy
ZWFkeSB0byBjYWxsIHhyQmVnaW5TZXNzaW9uLgorICAgICAgICBiZWdpblNlc3Npb24oKTsKKyAg
ICB9Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5n
KCkKIHsKICAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzXSgpIHsKICAgICAgICAgaWYgKG1fc2Vz
c2lvbiA9PSBYUl9OVUxMX0hBTkRMRSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgeHJE
ZXN0cm95U2Vzc2lvbihtX3Nlc3Npb24pOwotICAgICAgICBtX3Nlc3Npb24gPSBYUl9OVUxMX0hB
TkRMRTsKKworICAgICAgICAvLyB4clJlcXVlc3RFeGl0U2Vzc2lvbigpIHdpbGwgdHJhbnNpdGlv
biB0aGUgc2Vzc2lvbiB0byBTVE9QUEVEIHN0YXRlLgorICAgICAgICAvLyBJZiB0aGUgc2Vzc2lv
biB3YXMgbm90IHJ1bm5pbmcgd2UgaGF2ZSB0byByZXNldCB0aGUgc2Vzc2lvbiBvdXJzZWx2ZXMu
CisgICAgICAgIGlmIChYUl9GQUlMRUQoeHJSZXF1ZXN0RXhpdFNlc3Npb24obV9zZXNzaW9uKSkp
IHsKKyAgICAgICAgICAgIHJlc2V0U2Vzc2lvbigpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gT3BlblhSIG5lZWRzIHRvIHdhaXQgZm9yIHRoZSBYUl9TRVNT
SU9OX1NUQVRFX1NUT1BQSU5HIHN0YXRlIHRvIHByb3Blcmx5IGVuZCB0aGUgc2Vzc2lvbi4KKyAg
ICAgICAgd2FpdFVudGlsU3RvcHBpbmcoKTsKICAgICB9KTsKIH0KIAotdm9pZCBPcGVuWFJEZXZp
Y2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQordm9pZCBPcGVuWFJEZXZpY2U6Ondh
aXRVbnRpbFN0b3BwaW5nKCkKIHsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAm
bV9xdWV1ZS5ydW5Mb29wKCkpOworICAgIHBvbGxFdmVudHMoKTsKKyAgICBpZiAobV9zZXNzaW9u
U3RhdGUgPj0gWFJfU0VTU0lPTl9TVEFURV9TVE9QUElORykKKyAgICAgICAgcmV0dXJuOworICAg
IG1fcXVldWUuZGlzcGF0Y2goW3RoaXNdKCkgeworICAgICAgICB3YWl0VW50aWxTdG9wcGluZygp
OworICAgIH0pOworfQorCit2b2lkIE9wZW5YUkRldmljZTo6cG9sbEV2ZW50cygpCit7CisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byBydW50aW1lRXZlbnQgPSBjcmVhdGVT
dHJ1Y3R1cmU8WHJFdmVudERhdGFCdWZmZXIsIFhSX1RZUEVfRVZFTlRfREFUQV9CVUZGRVI+KCk7
CisgICAgd2hpbGUgKHhyUG9sbEV2ZW50KG1faW5zdGFuY2UsICZydW50aW1lRXZlbnQpID09IFhS
X1NVQ0NFU1MpIHsKKyAgICAgICAgc3dpdGNoIChydW50aW1lRXZlbnQudHlwZSkgeworICAgICAg
ICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9TRVNTSU9OX1NUQVRFX0NIQU5HRUQ6IHsKKyAgICAg
ICAgICAgIGF1dG8qIGV2ZW50ID0gKFhyRXZlbnREYXRhU2Vzc2lvblN0YXRlQ2hhbmdlZCopJnJ1
bnRpbWVFdmVudDsKKyAgICAgICAgICAgIG1fc2Vzc2lvblN0YXRlID0gZXZlbnQtPnN0YXRlOwor
ICAgICAgICAgICAgaGFuZGxlU2Vzc2lvblN0YXRlQ2hhbmdlKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9FVkVOVFNfTE9T
VDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfSU5TVEFOQ0VfTE9TU19QRU5ESU5H
OgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9SRUZFUkVOQ0VfU1BBQ0VfQ0hBTkdF
X1BFTkRJTkc6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX0lOVEVSQUNUSU9OX1BS
T0ZJTEVfQ0hBTkdFRDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfTUFJTl9TRVNT
SU9OX1ZJU0lCSUxJVFlfQ0hBTkdFRF9FWFRYOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRf
REFUQV9WSVNJQklMSVRZX01BU0tfQ0hBTkdFRF9LSFI6CisgICAgICAgIGNhc2UgWFJfVFlQRV9F
VkVOVF9EQVRBX1BFUkZfU0VUVElOR1NfRVhUOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoIlVuaGFuZGxlZCBldmVu
dCB0eXBlICVkXG4iLCBydW50aW1lRXZlbnQudHlwZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K1hyUmVzdWx0IE9wZW5YUkRldmljZTo6YmVnaW5TZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uU3RhdGUgPT0gWFJfU0VTU0lPTl9T
VEFURV9SRUFEWSk7CisKKyAgICBhdXRvIHNlc3Npb25CZWdpbkluZm8gPSBjcmVhdGVTdHJ1Y3R1
cmU8WHJTZXNzaW9uQmVnaW5JbmZvLCBYUl9UWVBFX1NFU1NJT05fQkVHSU5fSU5GTz4oKTsKKyAg
ICBzZXNzaW9uQmVnaW5JbmZvLnByaW1hcnlWaWV3Q29uZmlndXJhdGlvblR5cGUgPSBYUl9WSUVX
X0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX1NURVJFTzsKKyAgICBhdXRvIHJlc3VsdCA9IHhy
QmVnaW5TZXNzaW9uKG1fc2Vzc2lvbiwgJnNlc3Npb25CZWdpbkluZm8pOworI2lmICFMT0dfRElT
QUJMRUQKKyAgICBpZiAoWFJfRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIExPRyhYUiwgIiVzICVz
OiAlc1xuIiwgX19mdW5jX18sICJ4ckJlZ2luU2Vzc2lvbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3Vs
dCwgbV9pbnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit2b2lkIE9wZW5YUkRldmljZTo6ZW5kU2Vzc2lvbigpCit7CisgICAgQVNTRVJUKG1f
c2Vzc2lvbiAhPSBYUl9OVUxMX0hBTkRMRSk7CisgICAgeHJFbmRTZXNzaW9uKG1fc2Vzc2lvbik7
CiAgICAgcmVzZXRTZXNzaW9uKCk7CisgICAgaWYgKCFtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBOb3RpZnkgZGlkIGVuZCBldmVudAorICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgp
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
aWYgKG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQpCisgICAgICAgICAgICBtX3RyYWNraW5n
QW5kUmVuZGVyaW5nQ2xpZW50LT5zZXNzaW9uRGlkRW5kKCk7CisgICAgfSk7Cit9CisKKworRGV2
aWNlOjpGcmFtZURhdGE6OlZpZXdEYXRhIHhyVmlld1RvVmlld0RhdGEoWHJWaWV3IHZpZXcpCit7
CisgICAgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXdEYXRhIGRhdGE7CisgICAgZGF0YS5mb3YgPSB7
IHZpZXcuZm92LmFuZ2xlVXAsIHZpZXcuZm92LmFuZ2xlRG93biwgdmlldy5mb3YuYW5nbGVMZWZ0
LCB2aWV3LmZvdi5hbmdsZVJpZ2h0IH07CisgICAgZGF0YS5wb3NlLm9yaWVudGF0aW9uID0geyB2
aWV3LnBvc2Uub3JpZW50YXRpb24ueCwgdmlldy5wb3NlLm9yaWVudGF0aW9uLnksIHZpZXcucG9z
ZS5vcmllbnRhdGlvbi56LCB2aWV3LnBvc2Uub3JpZW50YXRpb24udyB9OworICAgIGRhdGEucG9z
ZS5wb3NpdGlvbiA9IHsgdmlldy5wb3NlLnBvc2l0aW9uLngsIHZpZXcucG9zZS5wb3NpdGlvbi55
LCB2aWV3LnBvc2UucG9zaXRpb24ueiB9OworICAgIHJldHVybiBkYXRhOworfQorCit2b2lkIE9w
ZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcG9sbEV2ZW50cygpOworICAgICAgICBpZiAoIWlz
U2Vzc2lvblJlYWR5KG1fc2Vzc2lvblN0YXRlKSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICAvLyBEZXZpY2Ugbm90IHJlYWR5IG9yIHN0b3BwaW5nLiBSZXBvcnQgZnJhbWVEYXRh
IHdpdGggaW52YWxpZCB0cmFja2luZy4KKyAgICAgICAgICAgICAgICBjYWxsYmFjayh7IH0pOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBhdXRvIGZyYW1lU3RhdGUgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZVN0YXRlLCBYUl9UWVBF
X0ZSQU1FX1NUQVRFPigpOworICAgICAgICBhdXRvIGZyYW1lV2FpdEluZm8gPSBjcmVhdGVTdHJ1
Y3R1cmU8WHJGcmFtZVdhaXRJbmZvLCBYUl9UWVBFX0ZSQU1FX1dBSVRfSU5GTz4oKTsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSB4cldhaXRGcmFtZShtX3Nlc3Npb24sICZmcmFtZVdhaXRJbmZvLCAm
ZnJhbWVTdGF0ZSk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJXYWl0RnJh
bWUiLCBtX2luc3RhbmNlKTsKKyAgICAgICAgWHJUaW1lIHByZWRpY3RlZFRpbWUgPSBmcmFtZVN0
YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOworCisgICAgICAgIGF1dG8gZnJhbWVCZWdpbkluZm8g
PSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZUJlZ2luSW5mbywgWFJfVFlQRV9GUkFNRV9CRUdJTl9J
TkZPPigpOworICAgICAgICByZXN1bHQgPSB4ckJlZ2luRnJhbWUobV9zZXNzaW9uLCAmZnJhbWVC
ZWdpbkluZm8pOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyQmVnaW5GcmFt
ZSIsIG1faW5zdGFuY2UpOworCisgICAgICAgIERldmljZTo6RnJhbWVEYXRhIGZyYW1lRGF0YTsK
KyAgICAgICAgZnJhbWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1lID0gZnJhbWVTdGF0ZS5wcmVk
aWN0ZWREaXNwbGF5VGltZTsKKworICAgICAgICBpZiAoaXNTZXNzaW9uQWN0aXZlKG1fc2Vzc2lv
blN0YXRlKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fY29uZmlndXJhdGlvblZpZXdzLmNvbnRh
aW5zKG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSkpOworICAgICAgICAgICAgY29uc3Qg
YXV0byYgY29uZmlndXJhdGlvblZpZXcgPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5nZXQobV9jdXJy
ZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBlKTsKKworICAgICAgICAgICAgYXV0byB2aWV3TG9jYXRl
SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclZpZXdMb2NhdGVJbmZvLCBYUl9UWVBFX1ZJRVdfTE9D
QVRFX0lORk8+KCk7CisgICAgICAgICAgICB2aWV3TG9jYXRlSW5mby5kaXNwbGF5VGltZSA9IHBy
ZWRpY3RlZFRpbWU7CisgICAgICAgICAgICAvLyBGSVhNRTogdXNlIHRoZSBjdXJyZW50IHJlZmVy
ZW5jZSBzcGFjZS4KKyAgICAgICAgICAgIC8vIHZpZXdMb2NhdGVJbmZvLnNwYWNlID0gbV9sb2Nh
bFNwYWNlOworCisgICAgICAgICAgICB1aW50MzJfdCB2aWV3Q291bnQgPSBjb25maWd1cmF0aW9u
Vmlldy5zaXplKCk7CisgICAgICAgICAgICBWZWN0b3I8WHJWaWV3PiB2aWV3cyh2aWV3Q291bnQs
IFtdIHsKKyAgICAgICAgICAgICAgICBYclZpZXcgb2JqZWN0OworICAgICAgICAgICAgICAgIHN0
ZDo6bWVtc2V0KCZvYmplY3QsIDAsIHNpemVvZihYclZpZXcpKTsKKyAgICAgICAgICAgICAgICBv
YmplY3QudHlwZSA9IFhSX1RZUEVfVklFVzsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0
OworICAgICAgICAgICAgfSgpKTsKKworICAgICAgICAgICAgYXV0byB2aWV3U3RhdGUgPSBjcmVh
dGVTdHJ1Y3R1cmU8WHJWaWV3U3RhdGUsIFhSX1RZUEVfVklFV19TVEFURT4oKTsKKyAgICAgICAg
ICAgIHVpbnQzMl90IHZpZXdDb3VudE91dHB1dDsKKyAgICAgICAgICAgIHJlc3VsdCA9IHhyTG9j
YXRlVmlld3MobV9zZXNzaW9uLCAmdmlld0xvY2F0ZUluZm8sICZ2aWV3U3RhdGUsIHZpZXdDb3Vu
dCwgJnZpZXdDb3VudE91dHB1dCwgdmlld3MuZGF0YSgpKTsKKyAgICAgICAgICAgIGlmICghWFJf
RkFJTEVEKHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHZpZXcgOiB2aWV3
cykKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVEYXRhLnZpZXdQb3Nlcy5hcHBlbmQoeHJWaWV3
VG9WaWV3RGF0YSh2aWV3KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtmcmFtZURhdGEgPSBXVEZNb3ZlKGZyYW1lRGF0YSksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGZyYW1lRGF0YSkpOworICAgICAgICB9KTsKKworICAgICAgICBhdXRvIGZyYW1lRW5k
SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lRW5kSW5mbywgWFJfVFlQRV9GUkFNRV9FTkRf
SU5GTz4oKTsKKyAgICAgICAgZnJhbWVFbmRJbmZvLmRpc3BsYXlUaW1lID0gcHJlZGljdGVkVGlt
ZTsKKyAgICAgICAgZnJhbWVFbmRJbmZvLmVudmlyb25tZW50QmxlbmRNb2RlID0gWFJfRU5WSVJP
Tk1FTlRfQkxFTkRfTU9ERV9PUEFRVUU7CisgICAgICAgIGZyYW1lRW5kSW5mby5sYXllckNvdW50
ID0gMDsKKyAgICAgICAgcmVzdWx0ID0geHJFbmRGcmFtZShtX3Nlc3Npb24sICZmcmFtZUVuZElu
Zm8pOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW5kRnJhbWUiLCBtX2lu
c3RhbmNlKTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1YUgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgK
aW5kZXggYWEyZjc4MGVmOTEyOTYyMGY0NDEyZGI0OWEwZThhMDQyZDU4YjUyOS4uNWJlYmU2OTY2
OTMyN2RiMmM4MTViNTU2YWVkZDFjYTk5YjQ2ZTE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCkBAIC00NCw3ICs0NCw2
IEBAIG5hbWVzcGFjZSBQbGF0Zm9ybVhSIHsKIGNsYXNzIE9wZW5YUkRldmljZSBmaW5hbCA6IHB1
YmxpYyBEZXZpY2UgewogcHVibGljOgogICAgIE9wZW5YUkRldmljZShYclN5c3RlbUlkLCBYcklu
c3RhbmNlLCBXb3JrUXVldWUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIH5P
cGVuWFJEZXZpY2UoKTsKICAgICBYclN5c3RlbUlkIHhyU3lzdGVtSWQoKSBjb25zdCB7IHJldHVy
biBtX3N5c3RlbUlkOyB9CiAKIHByaXZhdGU6CkBAIC01MiwxMyArNTEsMjIgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKTsKIAogICAgIExpc3RPZkVuYWJs
ZWRGZWF0dXJlcyBlbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMoWHJTZXNzaW9uJikgY29uc3Q7Cisg
ICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5h
bCB7IH07CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNz
aW9uTW9kZSkgZmluYWw7CiAKICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmlu
ZyhTZXNzaW9uTW9kZSkgZmluYWw7CiAgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVy
aW5nKCkgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHdhaXRVbnRpbFN0b3Bw
aW5nKCk7CiAKKyAgICB2b2lkIHBvbGxFdmVudHMoKTsKKyAgICBYclJlc3VsdCBiZWdpblNlc3Np
b24oKTsKKyAgICB2b2lkIGVuZFNlc3Npb24oKTsKICAgICB2b2lkIHJlc2V0U2Vzc2lvbigpOwor
ICAgIHZvaWQgaGFuZGxlU2Vzc2lvblN0YXRlQ2hhbmdlKCk7CisKKyAgICB2b2lkIHJlcXVlc3RG
cmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHVzaW5nIFZpZXdDb25m
aWd1cmF0aW9uUHJvcGVydGllc01hcCA9IEhhc2hNYXA8WHJWaWV3Q29uZmlndXJhdGlvblR5cGUs
IFhyVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzLCBJbnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRp
b25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxYclZpZXdDb25maWd1cmF0aW9uVHlw
ZT4+OwogICAgIFZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllc01hcCBtX3ZpZXdDb25maWd1cmF0
aW9uUHJvcGVydGllczsKQEAgLTY4LDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBYclN5c3RlbUlk
IG1fc3lzdGVtSWQ7CiAgICAgWHJJbnN0YW5jZSBtX2luc3RhbmNlOwogICAgIFhyU2Vzc2lvbiBt
X3Nlc3Npb24geyBYUl9OVUxMX0hBTkRMRSB9OworICAgIFhyU2Vzc2lvblN0YXRlIG1fc2Vzc2lv
blN0YXRlIHsgWFJfU0VTU0lPTl9TVEFURV9VTktOT1dOIH07CiAKICAgICBXb3JrUXVldWUmIG1f
cXVldWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2
aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAppbmRl
eCBhNDdjMWVjYTdkZWRjZWRhNTA1MGFkOTdiYzQ3ZDg1NjViYTU5MGVmLi41NDAxOGRhN2ViYjUz
ZGQ1MTk0MmRlNzY2MTQ5NjcyZmYxYWM4NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJEZXZpY2UuY3BwCkBAIC0zMSwxNCArMzEsMjggQEAKICNpbmNsdWRlICJET01Qb2lu
dFJlYWRPbmx5LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRl
ICJXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3RleHByIFNlY29u
ZHMgRmFrZVhSRnJhbWVUaW1lID0gMTVfbXM7CisKIHZvaWQgRmFrZVhSVmlldzo6c2V0RmllbGRP
ZlZpZXcoRmFrZVhSVmlld0luaXQ6OkZpZWxkT2ZWaWV3SW5pdCBmb3YpCiB7CiAgICAgbV9mb3Yg
PSBmb3Y7CiB9CiAKK1NpbXVsYXRlZFhSRGV2aWNlOjpTaW11bGF0ZWRYUkRldmljZSgpCisgICAg
OiBtX2ZyYW1lVGltZXIoKnRoaXMsICZTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVk
KQoreworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5nID0gdHJ1ZTsKK30KKworU2lt
dWxhdGVkWFJEZXZpY2U6On5TaW11bGF0ZWRYUkRldmljZSgpCit7CisgICAgc3RvcFRpbWVyKCk7
Cit9CisKIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNpbXVsYXRlU2h1dGRvd25Db21wbGV0ZWQo
KQogewogICAgIGlmIChtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KQpAQCAtNDksNiArNjMs
MjcgQEAgdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmlu
ZygpCiB7CiAgICAgaWYgKG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbikKICAgICAgICAg
c2ltdWxhdGVTaHV0ZG93bkNvbXBsZXRlZCgpOworICAgIHN0b3BUaW1lcigpOworfQorCit2b2lk
IFNpbXVsYXRlZFhSRGV2aWNlOjpzdG9wVGltZXIoKQoreworICAgIGlmIChtX2ZyYW1lVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9mcmFtZVRpbWVyLnN0b3AoKTsKK30KKwordm9pZCBTaW11
bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKCkKK3sKKyAgICBhdXRvIGNhbGxiYWNrcyA9
IFdURk1vdmUobV9jYWxsYmFja3MpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFj
a3MpCisgICAgICAgIGNhbGxiYWNrKHsgfSk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6
OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1f
Y2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgaWYgKCFtX2ZyYW1lVGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9mcmFtZVRpbWVyLnN0YXJ0T25lU2hvdChGYWtlWFJG
cmFtZVRpbWUpOwogfQogCiBXZWJGYWtlWFJEZXZpY2U6OldlYkZha2VYUkRldmljZSgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4IDg0N2Ji
Y2IxNzQ0ODQ0OGYwZWM3ZThjZWIxYjZmZDZlOWZhYzk1ODguLjM5MWJmYzM0N2VlZjlhYWFmMTdi
ZDJiYThiNmJhNDM2ZjAwMDQ2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJE
ZXZpY2UuaApAQCAtNjMsNyArNjMsOCBAQCBwcml2YXRlOgogY2xhc3MgU2ltdWxhdGVkWFJEZXZp
Y2UgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTaW11bGF0ZWRYUkRldmljZSgpIHsgbV9zdXBwb3J0
c09yaWVudGF0aW9uVHJhY2tpbmcgPSB0cnVlOyB9CisgICAgU2ltdWxhdGVkWFJEZXZpY2UoKTsK
KyAgICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsKICAgICB2b2lkIHNldE5hdGl2ZUJvdW5kc0dlb21l
dHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4gZ2VvbWV0cnkpIHsgbV9uYXRpdmVCb3VuZHNH
ZW9tZXRyeSA9IGdlb21ldHJ5OyB9CiAgICAgdm9pZCBzZXRWaWV3ZXJPcmlnaW4oUmVmUHRyPFdl
YlhSUmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2luKSB7IG1fdmlld2VyT3JpZ2luID0gV1RGTW92ZShv
cmlnaW4pOyB9CiAgICAgdm9pZCBzZXRGbG9vck9yaWdpbihSZWZQdHI8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiBvcmlnaW4pIHsgbV9mbG9vck9yaWdpbiA9IFdURk1vdmUob3JpZ2luKTsgfQpAQCAt
NzUsMTIgKzc2LDIwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQogICAgIHZvaWQgc2h1
dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNz
aW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N1cHBvcnRz
U2h1dGRvd25Ob3RpZmljYXRpb247IH0KKyAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFj
ZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVx
dWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOworCisgICAgdm9pZCBzdG9w
VGltZXIoKTsKKyAgICB2b2lkIGZyYW1lVGltZXJGaXJlZCgpOworCiAgICAgT3B0aW9uYWw8VmVj
dG9yPEZha2VYUkJvdW5kc1BvaW50Pj4gbV9uYXRpdmVCb3VuZHNHZW9tZXRyeTsKICAgICBSZWZQ
dHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV92aWV3ZXJPcmlnaW47CiAgICAgUmVmUHRyPFdlYlhS
UmlnaWRUcmFuc2Zvcm0+IG1fZmxvb3JPcmlnaW47CiAgICAgYm9vbCBtX2VtdWxhdGVkUG9zaXRp
b24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+IG1fdmlld3M7CiAgICAg
Ym9vbCBtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24geyBmYWxzZSB9OworICAgIFRpbWVy
IG1fZnJhbWVUaW1lcjsKKyAgICBWZWN0b3I8UmVxdWVzdEZyYW1lQ2FsbGJhY2s+IG1fY2FsbGJh
Y2tzOwogfTsKIAogY2xhc3MgV2ViRmFrZVhSRGV2aWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViRmFrZVhSRGV2aWNlPiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjhiN2E5YTRkMmQ5MGEwNWE2NjM0NmNkZTI1
NjhlMTgwYjkzZjJhNS4uNGY0OGUwYWNkODcxYTBiMjhlOTk3OTBjZDNhMTY4YTk5NmU5N2VjMyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTAyLTAzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8
c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdh
bGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25G
cmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMi0w
OCAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBldmVudC5jdHJsS2V5IGFuZCBvdGhlciBhcmUgZmFsc2UgaW4ga2V5ZG93biBldmVudApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMjNkZTc2YzJjYWVjY2I3NzIzMGU0ODRm
N2ZhZTg4MGM2YTU2NzRlNy4uZGU5N2U0MDc0MDAzNzVjMmMzNGVkN2ZhOGU5MmVlMWU0OTk5NWRi
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDItMDMgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+IGFuZCBJbWFu
b2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIENvbXBsZXRl
IFhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgWFJTZXNzaW9u
IFJBRiB0ZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Np
b25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorCiAyMDIxLTAyLTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTm9uLXNwZWNpYWwgVVJMcyBzaG91bGQgaGF2ZSBhbiBvcGFxdWUg
b3JpZ2luCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0
cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1OGE0MjNmYzZiMTk4MTEyOTM1YmZmMjkwNzI3
OGZkYTk0ZmNjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVf
dGltZXN0YW1wLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZy
YW1lIGdldFZpZXdlclBvc2UgdXBkYXRlcyBvbiB0aGUgbmV4dCBmcmFtZSBmb3IgaW1tZXJzaXZl
CitQQVNTIFhSRnJhbWUgZ2V0Vmlld2VyUG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0IGZyYW1lIGZv
ciBub24taW1tZXJzaXZlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggNzM2YjhhZDE1MDA0ODdiNjVkZjA0OThmNzU5ZWQ1ZDNhODIwMmFkOC4uYmMzZjk0
NWM2ZjA3ZDBlZDk0NDFmZThjOTExOWIxYTJhZTRjY2FmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY0MCw2ICs2NDAsNyBAQCB3ZWJraXQub3JnL2Iv
MjA5ODU5IHdlYmtpdC5vcmcvYi8yMTU2MzcgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94cgogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZV9pbnZhbGlkaGFuZGxl
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZmVhdHVyZXNfZGV2aWNlU3VwcG9ydC5o
dHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9jYWxs
YmFja19jYWxscy5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0
dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNwYWNlLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRtbCBb
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL2FyLW1vZHVsZS94ckRldmljZV9pc1Nlc3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZl
LWFyLmh0dHBzLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419699</attachid>
            <date>2021-02-09 05:16:56 -0800</date>
            <delta_ts>2021-02-09 06:16:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220979-20210209141654.patch</filename>
            <type>text/plain</type>
            <size>47876</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTExNmFlNGQ5OGRlNTYy
YTcwOThhNTI5ZWU4ODYzMTM5ODUxY2IzMi4uMmIxMTE3M2NmYzQxNjY2ZmRmMzdhOTc3YTdiMDZj
MGNmOWMxY2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBsZW1lbnQgdGhlIHJlbmRlciBsb29w
IGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBYUiBzZXNzaW9ucy4KKyAgICAgICAgLSBJbXBsZW1l
bnQgV2ViWFIgcmVuZGVyIHN0YXRlIHVwZGF0ZXMuCisgICAgICAgIC0gQ3JlYXRlIHRoZSBGcmFt
ZURhdGEgc3RydWN0IHVzZWQgdG8gcXVlcnkgZnJhbWUgc3BlY2lmaWMgZGF0YSBmcm9tIFhSIGRl
dmljZXMuCisgICAgICAgIC0gVXNlIHdpbmRvdyBSQUYgZm9yIGlubGluZSBYUiBzZXNzaW9ucy4K
KyAgICAgICAgLSBJbXBsZW1lbnQgV2ViRmFrZVhSRGV2aWNlIHRlc3RpbmcgcmVuZGVyaW5nIGxv
b3AgdXNpbmcgYSB0aW1lci4KKyAgICAgICAgLSBJbXBsZW1lbnQgT3BlblhSIHNlc3Npb24gc3Rh
dGVzIGFuZCBzZXNzaW9uIHRyYWNraW5nLgorICAgICAgICAtIEltcHJvdmUgT3BlblhSIGV2ZW50
IGhhbmRsaW5nLgorCisgICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgcGxhdGZvcm0gdGVzdHMu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOiBBZGQgbV9hY3RpdmUs
IG1fdGltZSBhbmQgbV9zZXNzaW9uIG1lbWJlcnMKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJh
bWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSRnJhbWU6OnNldFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2V0
QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmlzQWN0aXZlIGNvbnN0KToK
KworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oOiBBZGQgbV9jb21w
b3NpdGlvbkRpc2FibGVkIG1lbWJlciBhbmQgb3V0cHV0IGNhbnZhcyBzZXR0ZXIKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldE91dHB1dENhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlJlbmRlclN0YXRlOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQp
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJT
ZXNzaW9uOjpXZWJYUlNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpp
bml0aWFsaXplKTogcmVxdWlyZWQgdG8gY3JlYXQgdGhlIFhSRnJhbWUgd2l0aCBtYWtlUmVmKHRo
aXMpCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFj
ZSk6IGltcGxlbWVudCByZWZlcmVuY2Ugc3BhY2UgY3JlYXRpb24KKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKTogaW1wbGVtZW50IHJlbmRlciBs
b29wIGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBzZXNzaW9ucworICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSk6IGltcGxlbWVudCBXZWJYUiBy
ZW5kZXIgc3RhdGUgdXBkYXRlcworICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpmcmFt
ZVNob3VsZEJlUmVuZGVyZWQgY29uc3QpOiBhZGQgY2hlY2sgYmFzZWQgb24gdGhlIHNwZWMgCisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSk6IGltcGxlbWVudCBo
ZWxwZXIgZnVuY3Rpb24gdG8gZGlzcGF0Y2ggYSBmcmFtZSByZXF1ZXN0IHRvIFhSIGRldmljZXMK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6b25GcmFtZSk6IHByb2Nlc3MgdGhlIFhS
IGZyYW1lIGFuZCBjYWxsIHRoZSBSQUYgY2FsbGJhY2tzCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
Y3BwOiBJbXBsZW1lbnQgcmVuZGVyIGxvb3AgdXNpbmcgd2luZG93IHJhZiBsb29wLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OldlYlhSU3lzdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZpY2UpOiBBZGQg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1
bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOiBBZGFwdCB0byB0aGUgbmV3IGludGVyZmFj
ZQorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
V2ViR0xMYXllcjo6Y2FudmFzIGNvbnN0KTogSW1wbGVtZW50IGNhbnZhcyBnZXR0ZXIKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJXZWJHTExheWVyOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KTogYWRkCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQpOiBhZGQK
KworICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDogQWRkIEZyYW1lRGF0YSBzdHJ1
Y3QKKworICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcDog
SW1wbGVtZW50IHJlbmRlciBsb29wIHVzaW5nIE9wZW5YUiBBUEkKKyAgICAgICAgKFBsYXRmb3Jt
WFI6Ok9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnBvbGxFdmVudHMpOiBJbXBsZW1lbnQgZXZlbnQgbG9vcCB0
byBxdWVyeSBtX3Nlc3Npb25TdGF0ZQorICAgICAgICAoUGxhdGZvcm1YUjo6c2Vzc2lvbklzQWN0
aXZlKTogYWRkCisgICAgICAgIChQbGF0Zm9ybVhSOjpzZXNzaW9uSXNSdW5uaW5nKTogYWRkCisg
ICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmJlZ2luU2Vzc2lvbik6CisgICAgICAg
IChQbGF0Zm9ybVhSOjp4clZpZXdUb1ZpZXdEYXRhKTogaGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZl
cnQgZGF0YSBmcm9tIE9wZW5YUgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpy
ZXF1ZXN0RnJhbWUpOiBzdGFydCBPcGVuWFIgZnJhbWUsIHF1ZXJ5IHBvc2UgYW5kIHZpZXcgZGF0
YSAKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6d2FpdFVudGlsU3RvcHBpbmcp
OiBwcm9wZXJseSB3YWl0IGZvciBPcGVuWFIgZXZlbnQgYmVmb3JlIGVuZGluZyB0aGUgc2Vzc2lv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOgorCisK
KyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IEltcGxlbWVudCByZW5kZXIg
bG9vcCB1c2luZyBhIHRpbWVyCisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6
U2ltdWxhdGVkWFJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6
On5TaW11bGF0ZWRYUkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmlj
ZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11
bGF0ZWRYUkRldmljZTo6c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhS
RGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJE
ZXZpY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
aDoKKwogMjAyMS0wMi0wOCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IE1ha2UgYXV0byAmJiA8cmF0aW8+IHVzZSBjb250ZW50IGJveC1zaXppbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IDkzNWRjMTI3YzlkMDdhN2M4
ZDIzODQxNTQ1ODdkNTEzNTg4N2FlMWEuLmYyNzg3NjFiMGE3YjdkMjlkMTc5NDIyMzUwYTJhYTE5
OGEyM2JkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNw
cApAQCAtNDgsMTAgKzQ4LDYgQEAgV2ViWFJGcmFtZTo6V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNz
aW9uPiYmIHNlc3Npb24pCiAKIFdlYlhSRnJhbWU6On5XZWJYUkZyYW1lKCkgPSBkZWZhdWx0Owog
Ci1jb25zdCBXZWJYUlNlc3Npb24mIFdlYlhSRnJhbWU6OnNlc3Npb24oKSBjb25zdAotewotICAg
IHJldHVybiBtX3Nlc3Npb247Ci19CiAKIFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+IFdlYlhSRnJh
bWU6OmdldFZpZXdlclBvc2UoY29uc3QgV2ViWFJSZWZlcmVuY2VTcGFjZSYpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCmluZGV4IDgwOGE2NzY0ZjBkMmM1YWU2
MWU0ZDY1OGMyODI1MDU3OWZlNWI2MjcuLjJhMjZhZDg2YTJjMzBkYThjMjNkZmI2YzdiYmI5MDM4
MmQxMmUwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJG
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJET01IaWdo
UmVzVGltZVN0YW1wLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDYsMTQgKzQ3LDIwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNz
aW9uPiYmKTsKICAgICB+V2ViWFJGcmFtZSgpOwogCi0gICAgY29uc3QgV2ViWFJTZXNzaW9uJiBz
ZXNzaW9uKCkgY29uc3Q7CisgICAgY29uc3QgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAKICAgICBSZWZQdHI8V2ViWFJWaWV3ZXJQb3Nl
PiBnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKTsKICAgICBSZWZQdHI8
V2ViWFJQb3NlPiBnZXRQb3NlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7
CiAKKyAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9
IHRpbWU7IH0KKyAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2ZSkgeyBtX2FjdGl2ZSA9IGFj
dGl2ZTsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZTsgfQor
CiBwcml2YXRlOgotICAgIFdlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAgZXhw
bGljaXQgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKIAorICAgIGJvb2wgbV9hY3Rp
dmUgeyBmYWxzZSB9OworICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgbV90aW1lOwogICAgIFJlZjxX
ZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKaW5kZXggMWU0MzYzZjFmMTk0MzFlNGExZWM5NThm
MWJmYTJiNDcwNzQ1NzdhMi4uZTZkNDNjMDQ2ODk1OThiNTNkYTZkNGJiYjczZjJkYzFhNDEzYTJj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRl
LmgKQEAgLTU2LDYgKzU2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhc2VMYXllcihXZWJY
UldlYkdMTGF5ZXIqIGJhc2VMYXllcikgeyBtX2Jhc2VMYXllciA9IGJhc2VMYXllcjsgfQogCiAg
ICAgSFRNTENhbnZhc0VsZW1lbnQqIG91dHB1dENhbnZhcygpIGNvbnN0IHsgcmV0dXJuIG1fb3V0
cHV0Q2FudmFzLmdldCgpOyB9CisgICAgdm9pZCBzZXRPdXRwdXRDYW52YXMoSFRNTENhbnZhc0Vs
ZW1lbnQqIGNhbnZhcykgeyBtX291dHB1dENhbnZhcyA9IG1ha2VXZWFrUHRyKGNhbnZhcyk7IH0K
KworICAgIGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9z
aXRpb25EaXNhYmxlZDsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRpb25EaXNhYmxlZChib29sIGNv
bXBvc2l0aW9uRGlzYWJsZWQpIHsgbV9jb21wb3NpdGlvbkRpc2FibGVkID0gY29tcG9zaXRpb25E
aXNhYmxlZDsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlhSUmVuZGVyU3RhdGUoT3B0
aW9uYWw8ZG91YmxlPiBmaWVsZE9mVmlldyk7CkBAIC02OSw2ICs3Myw3IEBAIHByaXZhdGU6CiAg
ICAgT3B0aW9uYWw8ZG91YmxlPiBtX2lubGluZVZlcnRpY2FsRmllbGRPZlZpZXc7IC8vIGluIHJh
ZGlhbnMKICAgICBSZWZQdHI8V2ViWFJXZWJHTExheWVyPiBtX2Jhc2VMYXllcjsKICAgICBXZWFr
UHRyPEhUTUxDYW52YXNFbGVtZW50PiBtX291dHB1dENhbnZhczsKKyAgICBib29sIG1fY29tcG9z
aXRpb25EaXNhYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggZDhl
MmY4MTFjMjQ1YjBjZWIwYWNlZmVhM2RmZWRhNTRlNTI4YjAwNS4uY2RlNWIyODBlOTJmNzM5MTMz
NTI2ZTJmODNmMDNkNjFmZTdmMWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtNTUsMTEgKzU1LDE1IEBAIFdlYlhSU2Vzc2lvbjo6V2Vi
WFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNz
aW9uTW9kCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRl
dmljZSkpCiAgICAgLCBtX2FjdGl2ZVJlbmRlclN0YXRlKFdlYlhSUmVuZGVyU3RhdGU6OmNyZWF0
ZShtb2RlKSkKLSAgICAsIG1fYW5pbWF0aW9uVGltZXIoKnRoaXMsICZXZWJYUlNlc3Npb246OmFu
aW1hdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3RpbWVPcmlnaW4oTW9ub3RvbmljVGltZTo6bm93
KCkpCiB7CiAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhtb2Rl
KTsKICAgICBtX2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQobWFrZVdlYWtQ
dHIoKnRoaXMpKTsKIAorICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI3JlZi1mb3ItZG9tLXhycmVmZXJlbmNlc3BhY2V0eXBlLXZpZXdlciVFMiU5MSVBMgorICAg
IC8vIEV2ZXJ5IHNlc3Npb24gTVVTVCBzdXBwb3J0IHZpZXdlciBYUlJlZmVyZW5jZVNwYWNlcy4K
KyAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VU
eXBlOjpWaWV3ZXIpOworCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKQEAgLTE5OCw2NiAr
MjAyLDUxIEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0UmVmZXJlbmNlU3BhY2UoWFJSZWZl
cmVuY2VTcGFjZVR5cGUgdHlwZSwgUmVxdWVzdFJlZmVyCiAgICAgICAgIHByb21pc2UucmVqZWN0
KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQorCiAgICAgLy8gMS4gTGV0IHByb21pc2UgYmUgYSBuZXcgUHJvbWlzZS4KICAgICAvLyAyLiBS
dW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdHlw
ZV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAvLyAgMi4xLiBDcmVhdGUgYSBy
ZWZlcmVuY2Ugc3BhY2UsIHJlZmVyZW5jZVNwYWNlLCB3aXRoIHRoZSBYUlJlZmVyZW5jZVNwYWNl
VHlwZSB0eXBlLgotICAgICAgICAvLyAgMi4yLiBJZiByZWZlcmVuY2VTcGFjZSBpcyBudWxsLCBy
ZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0
ZXBzLgorICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdHlw
ZV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAvLyAyLjEuIElmIHRoZSByZXN1bHQgb2YgcnVubmluZyByZWZlcmVu
Y2Ugc3BhY2UgaXMgc3VwcG9ydGVkIGZvciB0eXBlIGFuZCBzZXNzaW9uIGlzIGZhbHNlLCBxdWV1
ZSBhIHRhc2sgdG8gcmVqZWN0IHByb21pc2UKKyAgICAgICAgLy8gd2l0aCBhIE5vdFN1cHBvcnRl
ZEVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKCFyZWZlcmVuY2VTcGFj
ZUlzU3VwcG9ydGVkKHR5cGUpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRp
b24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2Vi
LmdpdGh1Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCi0gICAgICAgIFJlZlB0
cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiByZWZlcmVuY2VTcGFjZTsKLSAgICAgICAgaWYgKHR5cGUg
PT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikKLSAgICAgICAgICAgIHJlZmVy
ZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb3duY2FzdDxE
b2N1bWVudD4oY29udGV4dCksIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUo
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7Ci0KLSAg
ICAgICAgLy8gIDIuMy4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVmZXJlbmNlU3BhY2UuCi0gICAg
ICAgIC8vIDMuIFJldHVybiBwcm9taXNlLgotICAgICAgICBwcm9taXNlLnJlc29sdmUocmVmZXJl
bmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIC8vIDIuMi4gU2V0IHVwIGFueSBw
bGF0Zm9ybSByZXNvdXJjZXMgcmVxdWlyZWQgdG8gdHJhY2sgcmVmZXJlbmNlIHNwYWNlcyBvZiB0
eXBlIHR5cGUuCisgICAgICAgIG1fZGV2aWNlLT5pbml0aWFsaXplUmVmZXJlbmNlU3BhY2UodHlw
ZSk7CisKKyAgICAgICAgLy8gMi4zLiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHM6CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6V2ViWFIsIFt0aGlzLCB0eXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7Cisg
ICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CisgICAgICAgICAgICAvLyAyLjQuIENyZWF0ZSBhIHJlZmVyZW5jZSBzcGFjZSwg
cmVmZXJlbmNlU3BhY2UsIHdpdGggdHlwZSBhbmQgc2Vzc2lvbi4KKyAgICAgICAgICAgIC8vIGh0
dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2NyZWF0ZS1hLXJlZmVyZW5jZS1z
cGFjZQorICAgICAgICAgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IHJlZmVyZW5jZVNw
YWNlOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5k
ZWRGbG9vcikKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSQm91bmRlZFJl
ZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVm
ZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworCisg
ICAgICAgICAgICAvLyAyLjUuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHJlZmVyZW5jZVNwYWNlLgor
ICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNwYWNlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJYUlNlc3Npb246OmFuaW1h
dGlvblRpbWVyRmlyZWQoKQotewotICAgIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wID0g
TW9ub3RvbmljVGltZTo6bm93KCk7Ci0KLSAgICBpZiAobV9jYWxsYmFja3MuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUT0RPOiByZXRyaWV2ZSBmcmFtZSBmcm9tIHBsYXRm
b3JtLgotICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUoKnRoaXMpOwotCi0gICAg
bV9ydW5uaW5nQ2FsbGJhY2tzLnN3YXAobV9jYWxsYmFja3MpOwotICAgIGZvciAoYXV0byYgY2Fs
bGJhY2sgOiBtX3J1bm5pbmdDYWxsYmFja3MpIHsKLSAgICAgICAgaWYgKGNhbGxiYWNrLT5pc0Nh
bmNlbGxlZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNhbGxiYWNrLT5oYW5k
bGVFdmVudChtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcC5zZWNvbmRzU2luY2VFcG9jaCgp
Lm1pbGxpc2Vjb25kcygpLCBmcmFtZS5nZXQoKSk7Ci0gICAgfQotCi0gICAgbV9ydW5uaW5nQ2Fs
bGJhY2tzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgV2ViWFJTZXNzaW9uOjpzY2hlZHVsZUFuaW1hdGlv
bigpCi17Ci0gICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRPRE86
IHVzZSBkZXZpY2UncyByZWZyZXNoIHJhdGUuIExldCdzIHN0YXJ0IHdpdGggNjBmcHMuCi0gICAg
U2Vjb25kcyBhbmltYXRpb25JbnRlcnZhbCA9IDE1X21zOwotICAgIFNlY29uZHMgc2NoZWR1bGVE
ZWxheSA9IHN0ZDo6bWF4KGFuaW1hdGlvbkludGVydmFsIC0gKE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApLCAwX3MpOwotICAgIG1fYW5pbWF0aW9u
VGltZXIuc3RhcnRPbmVTaG90KHNjaGVkdWxlRGVsYXkpOwotfQotCiAvLyBodHRwczovL2ltbWVy
c2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJzZXNzaW9uLXJlcXVlc3RhbmltYXRpb25m
cmFtZQogdW5zaWduZWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUmVmPFhS
RnJhbWVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CisgICAgLy8gSWdub3JlIGFueSBu
ZXcgZnJhbWUgcmVxdWVzdHMgb25jZSB0aGUgc2Vzc2lvbiBpcyBlbmRlZC4KKyAgICBpZiAobV9l
bmRlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICAvLyAxLiBMZXQgc2Vzc2lvbiBiZSB0aGUg
dGFyZ2V0IFhSU2Vzc2lvbiBvYmplY3QuCiAgICAgLy8gMi4gSW5jcmVtZW50IHNlc3Npb24ncyBh
bmltYXRpb24gZnJhbWUgY2FsbGJhY2sgaWRlbnRpZmllciBieSBvbmUuCiAgICAgdW5zaWduZWQg
bmV3SWQgPSBtX25leHRDYWxsYmFja0lkKys7CkBAIC0yNjcsNyArMjU2LDExIEBAIHVuc2lnbmVk
IFdlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFJlZjxYUkZyYW1lUmVxdWVzdENh
bGxiYWNrPiYmIGNhbGxiCiAgICAgY2FsbGJhY2stPnNldENhbGxiYWNrSWQobmV3SWQpOwogICAg
IG1fY2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBzY2hlZHVsZUFu
aW1hdGlvbigpOworICAgIC8vIFNjcmlwdCBjYW4gYWRkIG11bHRpcGxlIHJlcXVlc3RBbmltYXRp
b25GcmFtZSBjYWxsYmFja3MgYnV0IHdlIHNob3VsZCBvbmx5IHJlcXVlc3QgYSBkZXZpY2UgZnJh
bWUgb25jZS4KKyAgICAvLyBXaGVuIHJlcXVlc3RBbmltYXRpb25GcmFtZSBpcyBjYWxsZWQgZHVy
aW5nIHByb2Nlc3NpbmcgUkFGIGNhbGxiYWNrcyB0aGUgbmV4dCByZXF1ZXN0RnJhbWUgaXMgc2No
ZWR1bGVkCisgICAgLy8gYXQgdGhlIGVuZCBvZiBXZWJYUlNlc3Npb246Om9uRnJhbWUoKSB0byBw
cmV2ZW50IHJlcXVlc3RpbmcgYSBuZXcgZnJhbWUgYmVmb3JlIHRoZSBjdXJyZW50IG9uZSBoYXMg
ZW5kZWQuCisgICAgaWYgKG1fY2FsbGJhY2tzLnNpemUoKSA9PSAxKQorICAgICAgICByZXF1ZXN0
RnJhbWUoKTsKIAogICAgIC8vIDQuIFJldHVybiBzZXNzaW9uJ3MgYW5pbWF0aW9uIGZyYW1lIGNh
bGxiYWNrIGlkZW50aWZpZXIncyBjdXJyZW50IHZhbHVlLgogICAgIHJldHVybiBuZXdJZDsKQEAg
LTI4NiwxNyArMjc5LDkgQEAgdm9pZCBXZWJYUlNlc3Npb246OmNhbmNlbEFuaW1hdGlvbkZyYW1l
KHVuc2lnbmVkIGNhbGxiYWNrSWQpCiAgICAgfSk7CiAKICAgICBpZiAocG9zaXRpb24gIT0gbm90
Rm91bmQpIHsKLSAgICAgICAgbV9jYWxsYmFja3NbcG9zaXRpb25dLT5jYW5jZWwoKTsKLSAgICAg
ICAgbV9jYWxsYmFja3MucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICAgICAgbV9jYWxsYmFja3NbcG9z
aXRpb25dLT5zZXRGaXJlZE9yQ2FuY2VsbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0K
LSAgICBwb3NpdGlvbiA9IG1fcnVubmluZ0NhbGxiYWNrcy5maW5kTWF0Y2hpbmcoW2NhbGxiYWNr
SWRdIChhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiBpdGVtLT5jYWxsYmFja0lkKCkgPT0g
Y2FsbGJhY2tJZDsKLSAgICB9KTsKLQotICAgIGlmIChwb3NpdGlvbiAhPSBub3RGb3VuZCkKLSAg
ICAgICAgbV9ydW5uaW5nQ2FsbGJhY2tzW3Bvc2l0aW9uXS0+Y2FuY2VsKCk7CiB9CiAKIC8vIGh0
dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI25hdGl2ZS13ZWJnbC1mcmFtZWJ1
ZmZlci1yZXNvbHV0aW9uCkBAIC00MjAsNiArNDA1LDEzOCBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6
c2Vzc2lvbkRpZEVuZCgpCiAgICAgc2h1dGRvd24oSW5pdGlhdGVkQnlTeXN0ZW06Olllcyk7CiB9
CiAKK3ZvaWQgV2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSgpCit7CisgICAg
Ly8gaHR0cHM6IC8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2FwcGx5LXRoZS1wZW5k
aW5nLXJlbmRlci1zdGF0ZQorICAgIC8vIDEuIExldCBhY3RpdmVTdGF0ZSBiZSBzZXNzaW9u4oCZ
cyBhY3RpdmUgcmVuZGVyIHN0YXRlLgorICAgIC8vIDIuIExldCBuZXdTdGF0ZSBiZSBzZXNzaW9u
4oCZcyBwZW5kaW5nIHJlbmRlciBzdGF0ZS4KKyAgICAvLyAzLiBTZXQgc2Vzc2lvbuKAmXMgcGVu
ZGluZyByZW5kZXIgc3RhdGUgdG8gbnVsbC4KKyAgICBhdXRvIG5ld1N0YXRlID0gbV9wZW5kaW5n
UmVuZGVyU3RhdGU7CisgICAgQVNTRVJUKG5ld1N0YXRlKTsKKworICAgIC8vIDQuIExldCBvbGRC
YXNlTGF5ZXIgYmUgYWN0aXZlU3RhdGXigJlzIGJhc2VMYXllci4KKyAgICAvLyA1LiBMZXQgb2xk
TGF5ZXJzIGJlIGFjdGl2ZVN0YXRl4oCZcyBsYXllcnMuCisgICAgLy8gRklYTUU6IHRob3NlIGFy
ZSBvbmx5IG5lZWRlZCBmb3Igc3RlcCA2LjIuCisKKyAgICAvLyA2LjEgU2V0IGFjdGl2ZVN0YXRl
IHRvIG5ld1N0YXRlLgorICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUgPSBuZXdTdGF0ZTsKKworICAg
IC8vIDYuMiBJZiBvbGRCYXNlTGF5ZXIgaXMgbm90IGVxdWFsIHRvIGFjdGl2ZVN0YXRl4oCZcyBi
YXNlTGF5ZXIsIG9sZExheWVycyBpcyBub3QgZXF1YWwgdG8gYWN0aXZlU3RhdGXigJlzIGxheWVy
cywgb3IgdGhlIGRpbWVuc2lvbnMgb2YgYW55IG9mIHRoZSBsYXllcnMgaGF2ZSBjaGFuZ2VkLCB1
cGRhdGUgdGhlIHZpZXdwb3J0cyBmb3Igc2Vzc2lvbi4KKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHRoaXMuCisKKyAgICAvLyA2LjMgSWYgYWN0aXZlU3RhdGXigJlzIGlubGluZVZlcnRpY2FsRmll
bGRPZlZpZXcgaXMgbGVzcyB0aGFuIHNlc3Npb27igJlzIG1pbmltdW0gaW5saW5lIGZpZWxkIG9m
IHZpZXcgc2V0IGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IHRvIHNl
c3Npb27igJlzIG1pbmltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcuCisgICAgaWYgKG1fYWN0aXZl
UmVuZGVyU3RhdGUtPmlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcoKSA8IG1fbWluaW11bUlubGlu
ZUZPVikKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0SW5saW5lVmVydGljYWxGaWVs
ZE9mVmlldyhtX21pbmltdW1JbmxpbmVGT1YpOworCisgICAgLy8gNi40IElmIGFjdGl2ZVN0YXRl
4oCZcyBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IGlzIGdyZWF0ZXIgdGhhbiBzZXNzaW9u4oCZ
cyBtYXhpbXVtIGlubGluZSBmaWVsZCBvZiB2aWV3IHNldCBhY3RpdmVTdGF0ZeKAmXMgaW5saW5l
VmVydGljYWxGaWVsZE9mVmlldyB0byBzZXNzaW9u4oCZcyBtYXhpbXVtIGlubGluZSBmaWVsZCBv
ZiB2aWV3LgorICAgIGlmIChtX2FjdGl2ZVJlbmRlclN0YXRlLT5pbmxpbmVWZXJ0aWNhbEZpZWxk
T2ZWaWV3KCkgPiBtX21heGltdW1JbmxpbmVGT1YpCisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3Rh
dGUtPnNldElubGluZVZlcnRpY2FsRmllbGRPZlZpZXcobV9tYXhpbXVtSW5saW5lRk9WKTsKKwor
ICAgIC8vIDYuNSBJZiBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhOZWFyIGlzIGxlc3MgdGhhbiBzZXNz
aW9u4oCZcyBtaW5pbXVtIG5lYXIgY2xpcCBwbGFuZSBzZXQgYWN0aXZlU3RhdGXigJlzIGRlcHRo
TmVhciB0byBzZXNzaW9u4oCZcyBtaW5pbXVtIG5lYXIgY2xpcCBwbGFuZS4KKyAgICBpZiAobV9h
Y3RpdmVSZW5kZXJTdGF0ZS0+ZGVwdGhOZWFyKCkgPCBtX21pbmltdW1OZWFyQ2xpcFBsYW5lKQor
ICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXREZXB0aE5lYXIobV9taW5pbXVtTmVhckNs
aXBQbGFuZSk7CisKKyAgICAvLyA2LjYgSWYgYWN0aXZlU3RhdGXigJlzIGRlcHRoRmFyIGlzIGdy
ZWF0ZXIgdGhhbiBzZXNzaW9u4oCZcyBtYXhpbXVtIGZhciBjbGlwIHBsYW5lIHNldCBhY3RpdmVT
dGF0ZeKAmXMgZGVwdGhGYXIgdG8gc2Vzc2lvbuKAmXMgbWF4aW11bSBmYXIgY2xpcCBwbGFuZS4K
KyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+ZGVwdGhGYXIoKSA+IG1fbWF4aW11bUZhckNs
aXBQbGFuZSkKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0RGVwdGhGYXIobV9tYXhp
bXVtRmFyQ2xpcFBsYW5lKTsKKworICAgIC8vIDYuNyBMZXQgYmFzZUxheWVyIGJlIGFjdGl2ZVN0
YXRl4oCZcyBiYXNlTGF5ZXIuCisgICAgYXV0byBiYXNlTGF5ZXIgPSBtX2FjdGl2ZVJlbmRlclN0
YXRlLT5iYXNlTGF5ZXIoKTsKKworICAgIC8vIDYuOCBTZXQgYWN0aXZlU3RhdGXigJlzIGNvbXBv
c2l0aW9uIGRpc2FibGVkIGFuZCBvdXRwdXQgY2FudmFzIGFzIGZvbGxvd3M6CisgICAgbV9hY3Rp
dmVSZW5kZXJTdGF0ZS0+c2V0Q29tcG9zaXRpb25EaXNhYmxlZCh0cnVlKTsKKyAgICBpZiAobV9t
b2RlID09IFhSU2Vzc2lvbk1vZGU6OklubGluZSAmJiBpczxXZWJYUldlYkdMTGF5ZXI+KGJhc2VM
YXllcikgJiYgYmFzZUxheWVyLT5jb21wb3NpdGlvbkRpc2FibGVkKCkpIHsKKyAgICAgICAgbV9h
Y3RpdmVSZW5kZXJTdGF0ZS0+c2V0Q29tcG9zaXRpb25EaXNhYmxlZCh0cnVlKTsKKyAgICAgICAg
bV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0T3V0cHV0Q2FudmFzKGJhc2VMYXllci0+Y2FudmFzKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldENvbXBvc2l0
aW9uRGlzYWJsZWQoZmFsc2UpOworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRPdXRw
dXRDYW52YXMobnVsbHB0cik7CisgICAgfQorfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIu
Z2l0aHViLmlvL3dlYnhyLyNzaG91bGQtYmUtcmVuZGVyZWQKK2Jvb2wgV2ViWFJTZXNzaW9uOjpm
cmFtZVNob3VsZEJlUmVuZGVyZWQoKSBjb25zdAoreworICAgIGlmICghbV9hY3RpdmVSZW5kZXJT
dGF0ZS0+YmFzZUxheWVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9tb2Rl
ID09IFhSU2Vzc2lvbk1vZGU6OklubGluZSAmJiAhbV9hY3RpdmVSZW5kZXJTdGF0ZS0+b3V0cHV0
Q2FudmFzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBXZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSgpCit7CisgICAgbV9kZXZpY2UtPnJlcXVl
c3RGcmFtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShhdXRvJiYgZnJh
bWVEYXRhKSB7CisgICAgICAgIG9uRnJhbWUoV1RGTW92ZShmcmFtZURhdGEpKTsKKyAgICB9KTsK
K30KKwordm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGEmJiBmcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IGlmIChtX2VuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBRdWV1ZSBhIHRhc2sgdG8g
cGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzLgorICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCBmcmFtZURhdGEgPSBXVEZNb3Zl
KGZyYW1lRGF0YSldKCkgeworICAgICAgICBpZiAobV9lbmRlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0aGUgY3VycmVudCBoaWdoIHJlc29sdXRpb24g
dGltZS4KKyAgICAgICAgYXV0byBub3cgPSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX3RpbWVP
cmlnaW4pLm1pbGxpc2Vjb25kcygpOworCisgICAgICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1l
OjpjcmVhdGUobWFrZVJlZigqdGhpcykpOworICAgICAgICAvLyAgMi5MZXQgZnJhbWUgYmUgc2Vz
c2lvbuKAmXMgYW5pbWF0aW9uIGZyYW1lLgorICAgICAgICAvLyAgMy5TZXQgZnJhbWXigJlzIHRp
bWUgdG8gZnJhbWVUaW1lLgorICAgICAgICBmcmFtZS0+c2V0VGltZShzdGF0aWNfY2FzdDxET01I
aWdoUmVzVGltZVN0YW1wPihmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUpKTsKKworICAg
ICAgICAvLyA0LiBGb3IgZWFjaCB2aWV3IGluIGxpc3Qgb2Ygdmlld3MsIHNldCB2aWV34oCZcyB2
aWV3cG9ydCBtb2RpZmlhYmxlIGZsYWcgdG8gdHJ1ZS4KKyAgICAgICAgLy8gNS4gSWYgdGhlIGFj
dGl2ZSBmbGFnIG9mIGFueSB2aWV3IGluIHRoZSBsaXN0IG9mIHZpZXdzIGhhcyBjaGFuZ2VkIHNp
bmNlIHRoZSBsYXN0IFhSIGFuaW1hdGlvbiBmcmFtZSwgdXBkYXRlIHRoZSB2aWV3cG9ydHMuCisg
ICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisKKyAgICAgICAgLy8gRklYTUU6IEkgbW92ZWQg
c3RlcCA3IGJlZm9yZSA2IGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2ltbWVyc2l2ZS13
ZWIvd2VieHIvaXNzdWVzLzExNjQKKyAgICAgICAgLy8gNy5JZiBzZXNzaW9u4oCZcyBwZW5kaW5n
IHJlbmRlciBzdGF0ZSBpcyBub3QgbnVsbCwgYXBwbHkgdGhlIHBlbmRpbmcgcmVuZGVyIHN0YXRl
LgorICAgICAgICBpZiAobV9wZW5kaW5nUmVuZGVyU3RhdGUpCisgICAgICAgICAgICBhcHBseVBl
bmRpbmdSZW5kZXJTdGF0ZSgpOworCisgICAgICAgIC8vIDYuIElmIHRoZSBmcmFtZSBzaG91bGQg
YmUgcmVuZGVyZWQgZm9yIHNlc3Npb246CisgICAgICAgIGlmIChmcmFtZVNob3VsZEJlUmVuZGVy
ZWQoKSkgeworICAgICAgICAgICAgLy8gNi4xLlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJl
bnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MgdG8gYmUgc2Vzc2lvbuKAmXMg
bGlzdCBvZiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLgorICAgICAgICAgICAgLy8gNi4yLlNl
dCBzZXNzaW9u4oCZcyBsaXN0IG9mIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MgdG8gdGhlIGVt
cHR5IGxpc3QuCisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrcyA9IG1fY2FsbGJhY2tzOworCisg
ICAgICAgICAgICAvLyA2LjMuU2V0IGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiB0byB0cnVlLgor
ICAgICAgICAgICAgZnJhbWUtPnNldEFjdGl2ZSh0cnVlKTsKKworICAgICAgICAgICAgLy8gNi40
LkFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZyYW1lLgorICAgICAgICAgICAgLy8gRklYTUU6IGlt
cGxlbWVudC4KKworICAgICAgICAgICAgLy8gNi41LkZvciBlYWNoIGVudHJ5IGluIHNlc3Npb27i
gJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcywg
aW4gb3JkZXI6CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKSB7
CisgICAgICAgICAgICAgICAgLy8gIDYuNi5JZiB0aGUgZW50cnnigJlzIGNhbmNlbGxlZCBib29s
ZWFuIGlzIHRydWUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGVudHJ5LgorICAgICAgICAgICAgICAg
IGlmIChjYWxsYmFjay0+aXNGaXJlZE9yQ2FuY2VsbGVkKCkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIC8vICA2LjcuSW52b2tlIHRoZSBXZWIgSURMIGNh
bGxiYWNrIGZ1bmN0aW9uIGZvciBlbnRyeSwgcGFzc2luZyBub3cgYW5kIGZyYW1lIGFzIHRoZSBh
cmd1bWVudHMKKyAgICAgICAgICAgICAgICBjYWxsYmFjay0+aGFuZGxlRXZlbnQobm93LCBmcmFt
ZS5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAvLyAgNi44LklmIGFuIGV4Y2VwdGlvbiBpcyB0
aHJvd24sIHJlcG9ydCB0aGUgZXhjZXB0aW9uLgorICAgICAgICAgICAgfQorICAgICAgICAgICAg
Ly8gNi45LlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlv
biBmcmFtZSBjYWxsYmFja3MgdG8gdGhlIGVtcHR5IGxpc3QuCisgICAgICAgICAgICBtX2NhbGxi
YWNrcy5yZW1vdmVBbGxNYXRjaGluZyhbXShhdXRvJiBjYWxsYmFjaykgeworICAgICAgICAgICAg
ICAgIHJldHVybiBjYWxsYmFjay0+aXNGaXJlZE9yQ2FuY2VsbGVkKCk7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgLy8gNi4xMC5TZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRv
IGZhbHNlLgorICAgICAgICAgICAgLy8gSWYgdGhlIHNlc3Npb24gaXMgZW5kZWQsIG1fYW5pbWF0
aW9uRnJhbWUtPnNldEFjdGl2ZSBmYWxzZSBpcyBzZXQgaW4gc2h1dGRvd24oKS4KKyAgICAgICAg
ICAgIGZyYW1lLT5zZXRBY3RpdmUoZmFsc2UpOworCisgICAgICAgICAgICBpZiAoIW1fY2FsbGJh
Y2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0RnJhbWUoKTsKKyAgICAgICAg
fQorCisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5o
CmluZGV4IDU1NTQzMGM4YzNmNzMxMjMxYWFmNGYwYzNmZmI1ODI5ZDY5MjliMzYuLmQ4MzYzYTVj
OTMxY2Y1MGY3YjZlMzE5YWVlZGIzZThhMjMzNGZlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIldlYlhS
RnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUklucHV0U291cmNlQXJyYXkuaCIKICNpbmNsdWRlICJX
ZWJYUlJlbmRlclN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViWFJTcGFjZS5oIgpAQCAtMTA5LDExICsx
MDksMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNodXRkb3duKEluaXRpYXRlZEJ5U3lzdGVtKTsK
ICAgICB2b2lkIGRpZENvbXBsZXRlU2h1dGRvd24oKTsKIAotICAgIHZvaWQgYW5pbWF0aW9uVGlt
ZXJGaXJlZCgpOwotICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKLQogICAgIGJvb2wgcmVm
ZXJlbmNlU3BhY2VJc1N1cHBvcnRlZChYUlJlZmVyZW5jZVNwYWNlVHlwZSkgY29uc3Q7CiAKKyAg
ICBib29sIGZyYW1lU2hvdWxkQmVSZW5kZXJlZCgpIGNvbnN0OworICAgIHZvaWQgcmVxdWVzdEZy
YW1lKCk7CisgICAgdm9pZCBvbkZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYp
OworICAgIHZvaWQgYXBwbHlQZW5kaW5nUmVuZGVyU3RhdGUoKTsKKwogICAgIFhSRW52aXJvbm1l
bnRCbGVuZE1vZGUgbV9lbnZpcm9ubWVudEJsZW5kTW9kZTsKICAgICBYUkludGVyYWN0aW9uTW9k
ZSBtX2ludGVyYWN0aW9uTW9kZTsKICAgICBYUlZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlT
dGF0ZTsKQEAgLTEyNiwxMyArMTI4LDE3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxQbGF0Zm9y
bVhSOjpEZXZpY2U+IG1fZGV2aWNlOwogICAgIFJlZlB0cjxXZWJYUlJlbmRlclN0YXRlPiBtX2Fj
dGl2ZVJlbmRlclN0YXRlOwogICAgIFJlZlB0cjxXZWJYUlJlbmRlclN0YXRlPiBtX3BlbmRpbmdS
ZW5kZXJTdGF0ZTsKKyAgICBNb25vdG9uaWNUaW1lIG1fdGltZU9yaWdpbjsKIAogICAgIHVuc2ln
bmVkIG1fbmV4dENhbGxiYWNrSWQgeyAxIH07CiAgICAgVmVjdG9yPFJlZjxYUkZyYW1lUmVxdWVz
dENhbGxiYWNrPj4gbV9jYWxsYmFja3M7Ci0gICAgVmVjdG9yPFJlZjxYUkZyYW1lUmVxdWVzdENh
bGxiYWNrPj4gbV9ydW5uaW5nQ2FsbGJhY2tzOwogCi0gICAgVGltZXIgbV9hbmltYXRpb25UaW1l
cjsKLSAgICBNb25vdG9uaWNUaW1lIG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wOworICAg
IGRvdWJsZSBtX21pbmltdW1JbmxpbmVGT1YgeyAwLjAgfTsKKyAgICBkb3VibGUgbV9tYXhpbXVt
SW5saW5lRk9WIHsgcGlGbG9hdCB9OworCisgICAgLy8gSW4gbWV0ZXJzLgorICAgIGRvdWJsZSBt
X21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CisgICAgZG91YmxlIG1fbWF4aW11bUZhckNs
aXBQbGFuZSB7IDEwMDAuMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAppbmRleCA1MjUzOGM5Mzk2
NzAzZjY5OGVlY2RlMWE1NmEyMTlkN2I5MGVlZTY0Li5jYjUxYWQ2MWMyMTg3ZGVmMDA3OTI5NjFi
OWIzOGRjOTljNDA2MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3lzdGVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTV2ViWFJTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiSlNYUlJlZmVyZW5jZVNwYWNlVHlwZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
WFIuaCIKKyNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIgogI2luY2x1
ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC00OSwxMSArNTAsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlN5
c3RlbSk7CiAKLVdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZp
Y2UoKQotewotICAgIHNldEVuYWJsZWRGZWF0dXJlcyhYUlNlc3Npb25Nb2RlOjpJbmxpbmUsIHsg
WFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlciB9KTsKLX0KLQogUmVmPFdlYlhSU3lzdGVtPiBX
ZWJYUlN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJTeXN0ZW0oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkpOwpAQCAtNjEsNiArNTcsNyBAQCBSZWY8V2ViWFJTeXN0ZW0+IFdl
YlhSU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udAogCiBXZWJYUlN5c3RlbTo6V2ViWFJTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKKyAgICAsIG1fZGVmYXVsdElubGluZURldmljZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQogewogICAgIG1faW5saW5lWFJEZXZpY2UgPSBtYWtlV2Vha1B0cihtX2RlZmF1
bHRJbmxpbmVEZXZpY2UpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtNDg2LDYgKzQ4Myw0
OSBAQCB2b2lkIFdlYlhSU3lzdGVtOjpzZXNzaW9uRW5kZWQoV2ViWFJTZXNzaW9uJiBzZXNzaW9u
KQogICAgIG1faW5saW5lU2Vzc2lvbnMucmVtb3ZlKHNlc3Npb24pOwogfQogCitjbGFzcyBJbmxp
bmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayBmaW5hbDogcHVibGljIFJlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPElubGluZVJlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShjYWxsYmFjaykpKTsK
KyAgICB9Citwcml2YXRlOgorICAgIElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykKKyAgICAgICAgOiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFjaygmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFj
aykpIAorICAgIHsKKyAgICB9CisKKyAgICBDYWxsYmFja1Jlc3VsdDx2b2lkPiBoYW5kbGVFdmVu
dChkb3VibGUpIGZpbmFsCisgICAgeworICAgICAgICBtX2NhbGxiYWNrKCk7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorCisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2NhbGxiYWNrOworfTsK
KworCitXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OkR1bW15SW5saW5lRGV2aWNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgOiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgc2V0
RW5hYmxlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGU6OklubGluZSwgeyBYUlJlZmVyZW5jZVNwYWNl
VHlwZTo6Vmlld2VyIH0pOworfQorCit2b2lkIFdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmlj
ZTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3sKKyAgICAvLyBJbmxpbmUgWFIgc2Vzc2lvbnMgcmVseSBvbiBkb2N1bWVu
dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gcGVyZm9ybSB0aGUgcmVuZGVyIGxvb3AuCisgICAg
YXV0byBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmFm
ID0gSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s6OmNyZWF0ZSgqbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICB9KTsKKworICAgIGRvY3VtZW50LT5yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUocmFmKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmgKaW5kZXggYzc2MmQ0NmFjMGU5MDRhMzk4M2QzOTdmNjg2NTYxZDRjMTY1YjM1
NS4uYWFlM2NmMjYzNDhmMjExMWJjMWQ1ZWNhOTU1YTI2OTM0YWUzM2ZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaApAQCAtMTA2LDExICsxMDYsMTYgQEAg
cHJpdmF0ZToKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNk
ZWZhdWx0LWlubGluZS14ci1kZXZpY2UKICAgICBjbGFzcyBEdW1teUlubGluZURldmljZSBmaW5h
bCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgRHVt
bXlJbmxpbmVEZXZpY2UoKTsKKyAgICAgICAgZXhwbGljaXQgRHVtbXlJbmxpbmVEZXZpY2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFs
IHsgfQogICAgICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbCB7
IH0KKyAgICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVm
ZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH07CisKKyAgICAgICAgdm9pZCByZXF1ZXN0RnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKworICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgeyBu
dWxscHRyIH07CiAgICAgfTsKICAgICBEdW1teUlubGluZURldmljZSBtX2RlZmF1bHRJbmxpbmVE
ZXZpY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJX
ZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExh
eWVyLmNwcAppbmRleCA2NGY1MjU5MWI3YzI2ZWRkZDIwMzdlNDIxZWZjZTZkOTE4MTdhOWYyLi4z
ZDNjMjg0Nzg1YWFmM2FjMjBjZDRjMWUzYzAzYTgyZDQyNzI1YWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC0yOCw3ICsyOCw5
IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNp
bmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaWYgRU5BQkxFKFdFQkdMMikKQEAgLTE5OCw2ICsyMDAsMTkgQEAgZG91YmxlIFdl
YlhSV2ViR0xMYXllcjo6Z2V0TmF0aXZlRnJhbWVidWZmZXJTY2FsZUZhY3Rvcihjb25zdCBXZWJY
UlNlc3Npb24mIHNlc3MKICAgICByZXR1cm4gKG5hdGl2ZVNpemUgLyByZWNvbW1lbmRlZFNpemUp
LndpZHRoKCk7CiB9CiAKK0hUTUxDYW52YXNFbGVtZW50KiBXZWJYUldlYkdMTGF5ZXI6OmNhbnZh
cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9jb250ZXh0LCBbXShjb25z
dCBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4mIGJhc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gY2FudmFzID0gYmFzZUNvbnRleHQtPmNhbnZhcygpOworICAgICAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihjYW52YXMsIFtdKGNvbnN0IFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4m
IGNhbnZhcykgeworICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy5nZXQoKTsKKyAgICAgICAgfSwg
W10oY29uc3QgUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4pIHsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgiYmFzZUxheWVyIG9mIGEgV2ViWFJXZWJHTExheWVyIG11c3QgYmUgYW4gSFRN
TENhbnZhc0VsZW1lbnQiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UldlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExh
eWVyLmgKaW5kZXggMzE3NTVkODQ5NmE2YTcwMmUyMzMyOWNmYmYzMjliOWNjNGI4YTlkZi4uM2Y3
NTg3ZGU4OWRhNmUyMzFjOTQzYzRmOTA1ZmMxY2YxODA1OTI5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCkBAIC0zNiw2ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBJ
bnRTaXplOwogY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDsKQEAgLTc0LDYgKzc1LDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYlhSU2Vzc2lv
biYgc2Vzc2lvbigpIHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQogCisgICAgYm9vbCBjb21wb3NpdGlv
bkRpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KKyAg
ICB2b2lkIHNldENvbXBvc2l0aW9uRGlzYWJsZWQoYm9vbCBjb21wb3NpdGlvbkRpc2FibGVkKSB7
IG1faXNDb21wb3NpdGlvbkRpc2FibGVkID0gY29tcG9zaXRpb25EaXNhYmxlZDsgfQorCisgICAg
SFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYlhS
V2ViR0xMYXllcihSZWY8V2ViWFJTZXNzaW9uPiYmLCBXZWJYUlJlbmRlcmluZ0NvbnRleHQmJiwg
Y29uc3QgWFJXZWJHTExheWVySW5pdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1hSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvWFJGcmFtZVJlcXVlc3RDYWxsYmFjay5oCmluZGV4IDQ4ZGNkOTM2NGZiMzli
YTM1YTgyNGIzMWU3ZTBiZTJlMTZhMWI3MTkuLmVmM2Y2NDZkNmRiNWI4NTMxMzQzNzg4NzU3NWJl
YzRhYzFjZTM0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJG
cmFtZVJlcXVlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
WFJGcmFtZVJlcXVlc3RDYWxsYmFjay5oCkBAIC00MywxMiArNDMsMTIgQEAgcHVibGljOgogCiAg
ICAgdW5zaWduZWQgY2FsbGJhY2tJZCgpIHsgQVNTRVJUKG1faWQpOyByZXR1cm4gbV9pZDsgfQog
ICAgIHZvaWQgc2V0Q2FsbGJhY2tJZCh1bnNpZ25lZCBpZCkgeyBBU1NFUlQoIW1faWQpOyBtX2lk
ID0gaWQ7IH0KLSAgICB2b2lkIGNhbmNlbCgpIHsgbV9jYW5jZWxsZWQgPSB0cnVlOyB9Ci0gICAg
Ym9vbCBpc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGVkOyB9CisgICAgdm9p
ZCBzZXRGaXJlZE9yQ2FuY2VsbGVkKCkgeyBtX2ZpcmVkT3JDYW5jZWxsZWQgPSB0cnVlOyB9Cisg
ICAgYm9vbCBpc0ZpcmVkT3JDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2ZpcmVkT3JDYW5j
ZWxsZWQ7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lkIHsgMCB9OwotICAgIGJvb2wg
bV9jYW5jZWxsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9maXJlZE9yQ2FuY2VsbGVkIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaAppbmRleCBiOWVmNDVjMGM2OTcxNGFlODNjNzA0NDU0ZDk1NGJkNTFl
YTQ3NjZiLi40MzI1ZjMzNzVjZjMwMjhhNDdkZmZjYzZkZjU5YmI3NDM4MzUwMGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0xOCw2ICsxOCw3IEBACiAgKi8K
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KQEAgLTc1LDYgKzc2LDMxIEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGlzIG1ldGhvZCBy
ZXR1cm5zIHRydWUsIHRoYXQgbWVhbnMgdGhlIGRldmljZSB3aWxsIG5vdGlmeSBUcmFja2luZ0Fu
ZFJlbmRlcmluZ0NsaWVudAogICAgIC8vIHdoZW4gdGhlIHBsYXRmb3JtIGhhcyBjb21wbGV0ZWQg
YWxsIHN0ZXBzIHRvIHNodXQgZG93biB0aGUgWFIgc2Vzc2lvbi4KICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNl
U3BhY2VUeXBlKSA9IDA7CisKKyAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKKyAgICAgICAgbG9uZyBw
cmVkaWN0ZWREaXNwbGF5VGltZTsKKyAgICAgICAgc3RydWN0IFZpZXdEYXRhIHsKKyAgICAgICAg
ICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludDNEIHBvc2l0
aW9uOworICAgICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0
IHg7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHk7CisgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHo7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHc7CisgICAgICAgICAgICAgICAgfSBv
cmllbnRhdGlvbjsKKyAgICAgICAgICAgIH0gcG9zZTsKKyAgICAgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICAgICAgZmxvYXQgclVwOworICAgICAgICAgICAgICAgIGZsb2F0IHJEb3duOwor
ICAgICAgICAgICAgICAgIGZsb2F0IHJMZWZ0OworICAgICAgICAgICAgICAgIGZsb2F0IHJSaWdo
dDsKKyAgICAgICAgICAgIH0gZm92OworICAgICAgICB9OworICAgICAgICBWZWN0b3I8Vmlld0Rh
dGE+IHZpZXdQb3NlczsKKyAgICB9OworICAgIHVzaW5nIFJlcXVlc3RGcmFtZUNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChGcmFtZURhdGEmJik+OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnJh
bWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgRGV2aWNl
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4IGZlODY1ZTY3MWQ3MDY4NmRlNzkxZjE0MDBl
NmNmM2UyYzg2OWVjMjIuLmNjNGQ3MjE1M2M2ZWVhZmRmMjE2MmU5ODgyYTllMDc3NThiMjFkZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZv
cm1YUk9wZW5YUi5jcHAKQEAgLTI2MCwxMSArMjYwLDYgQEAgT3BlblhSRGV2aWNlOjpPcGVuWFJE
ZXZpY2UoWHJTeXN0ZW1JZCBpZCwgWHJJbnN0YW5jZSBpbnN0YW5jZSwgV29ya1F1ZXVlJiBxdWV1
ZSwKICAgICB9KTsKIH0KIAotT3BlblhSRGV2aWNlOjp+T3BlblhSRGV2aWNlKCkKLXsKLSAgICBz
aHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci19Ci0KIERldmljZTo6TGlzdE9mRW5hYmxl
ZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6ZW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lv
biYgc2Vzc2lvbikgY29uc3QKIHsKICAgICB1aW50MzJfdCByZWZlcmVuY2VTcGFjZXNDb3VudDsK
QEAgLTM5NSw2ICszOTAsMTYgQEAgWHJWaWV3Q29uZmlndXJhdGlvblR5cGUgdG9YclZpZXdDb25m
aWd1cmF0aW9uVHlwZShTZXNzaW9uTW9kZSBtb2RlKQogICAgIHJldHVybiBYUl9WSUVXX0NPTkZJ
R1VSQVRJT05fVFlQRV9QUklNQVJZX01PTk87CiB9CiAKK3N0YXRpYyBib29sIGlzU2Vzc2lvbkFj
dGl2ZShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gc3RhdGUgPT0gWFJfU0VT
U0lPTl9TVEFURV9WSVNJQkxFIHx8IHN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfRk9DVVNFRDsK
K30KKworc3RhdGljIGJvb2wgaXNTZXNzaW9uUmVhZHkoWHJTZXNzaW9uU3RhdGUgc3RhdGUpCit7
CisgICAgcmV0dXJuIHN0YXRlID49IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkgICYmIHN0YXRlIDwg
WFJfU0VTU0lPTl9TVEFURV9TVE9QUElORzsKK30KKwogdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRp
YWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2RlKQogewogICAgIG1fcXVl
dWUuZGlzcGF0Y2goW3RoaXMsIG1vZGVdKCkgewpAQCAtNDEzLDE4ICs0MTgsMTg2IEBAIHZvaWQg
T3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUg
bW9kZSkKIH0KIAogdm9pZCBPcGVuWFJEZXZpY2U6OnJlc2V0U2Vzc2lvbigpCit7CisgICAgQVNT
RVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKKyAgICBpZiAo
bV9zZXNzaW9uICE9IFhSX05VTExfSEFORExFKSB7CisgICAgICAgIHhyRGVzdHJveVNlc3Npb24o
bV9zZXNzaW9uKTsKKyAgICAgICAgbV9zZXNzaW9uID0gWFJfTlVMTF9IQU5ETEU7CisgICAgfQor
ICAgIG1fc2Vzc2lvblN0YXRlID0gWFJfU0VTU0lPTl9TVEFURV9VTktOT1dOOworfQorCit2b2lk
IE9wZW5YUkRldmljZTo6aGFuZGxlU2Vzc2lvblN0YXRlQ2hhbmdlKCkKK3sKKyAgICBBU1NFUlQo
JlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOworICAgIGlmIChtX3Nl
c3Npb25TdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HKSB7CisgICAgICAgIC8vIFRo
ZSBhcHBsaWNhdGlvbiBzaG91bGQgZXhpdCB0aGUgcmVuZGVyIGxvb3AgYW5kIGNhbGwgeHJFbmRT
ZXNzaW9uCisgICAgICAgIGVuZFNlc3Npb24oKTsKKyAgICB9IGVsc2UgaWYgKG1fc2Vzc2lvblN0
YXRlID09IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkpIHsKKyAgICAgICAgLy8gVGhlIGFwcGxpY2F0
aW9uIGlzIHJlYWR5IHRvIGNhbGwgeHJCZWdpblNlc3Npb24uCisgICAgICAgIGJlZ2luU2Vzc2lv
bigpOworICAgIH0KK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKQogewogICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXNdKCkgewogICAgICAgICBp
ZiAobV9zZXNzaW9uID09IFhSX05VTExfSEFORExFKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB4ckRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lvbik7Ci0gICAgICAgIG1fc2Vzc2lvbiA9IFhS
X05VTExfSEFORExFOworCisgICAgICAgIC8vIHhyUmVxdWVzdEV4aXRTZXNzaW9uKCkgd2lsbCB0
cmFuc2l0aW9uIHRoZSBzZXNzaW9uIHRvIFNUT1BQRUQgc3RhdGUuCisgICAgICAgIC8vIElmIHRo
ZSBzZXNzaW9uIHdhcyBub3QgcnVubmluZyB3ZSBoYXZlIHRvIHJlc2V0IHRoZSBzZXNzaW9uIG91
cnNlbHZlcy4KKyAgICAgICAgaWYgKFhSX0ZBSUxFRCh4clJlcXVlc3RFeGl0U2Vzc2lvbihtX3Nl
c3Npb24pKSkgeworICAgICAgICAgICAgcmVzZXRTZXNzaW9uKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBPcGVuWFIgbmVlZHMgdG8gd2FpdCBmb3IgdGhl
IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkcgc3RhdGUgdG8gcHJvcGVybHkgZW5kIHRoZSBzZXNz
aW9uLgorICAgICAgICB3YWl0VW50aWxTdG9wcGluZygpOwogICAgIH0pOwogfQogCi12b2lkIE9w
ZW5YUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCit2b2lkIE9wZW5YUkRl
dmljZTo6d2FpdFVudGlsU3RvcHBpbmcoKQogeworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVu
dCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgcG9sbEV2ZW50cygpOworICAgIGlmICht
X3Nlc3Npb25TdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HKQorICAgICAgICByZXR1
cm47CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpc10oKSB7CisgICAgICAgIHdhaXRVbnRpbFN0
b3BwaW5nKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjpwb2xsRXZlbnRzKCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvIHJ1bnRpbWVFdmVudCA9
IGNyZWF0ZVN0cnVjdHVyZTxYckV2ZW50RGF0YUJ1ZmZlciwgWFJfVFlQRV9FVkVOVF9EQVRBX0JV
RkZFUj4oKTsKKyAgICB3aGlsZSAoeHJQb2xsRXZlbnQobV9pbnN0YW5jZSwgJnJ1bnRpbWVFdmVu
dCkgPT0gWFJfU1VDQ0VTUykgeworICAgICAgICBzd2l0Y2ggKHJ1bnRpbWVFdmVudC50eXBlKSB7
CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1NFU1NJT05fU1RBVEVfQ0hBTkdFRDog
eworICAgICAgICAgICAgYXV0byogZXZlbnQgPSAoWHJFdmVudERhdGFTZXNzaW9uU3RhdGVDaGFu
Z2VkKikmcnVudGltZUV2ZW50OworICAgICAgICAgICAgbV9zZXNzaW9uU3RhdGUgPSBldmVudC0+
c3RhdGU7CisgICAgICAgICAgICBoYW5kbGVTZXNzaW9uU3RhdGVDaGFuZ2UoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX0VW
RU5UU19MT1NUOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9JTlNUQU5DRV9MT1NT
X1BFTkRJTkc6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1JFRkVSRU5DRV9TUEFD
RV9DSEFOR0VfUEVORElORzoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfSU5URVJB
Q1RJT05fUFJPRklMRV9DSEFOR0VEOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9N
QUlOX1NFU1NJT05fVklTSUJJTElUWV9DSEFOR0VEX0VYVFg6CisgICAgICAgIGNhc2UgWFJfVFlQ
RV9FVkVOVF9EQVRBX1ZJU0lCSUxJVFlfTUFTS19DSEFOR0VEX0tIUjoKKyAgICAgICAgY2FzZSBY
Ul9UWVBFX0VWRU5UX0RBVEFfUEVSRl9TRVRUSU5HU19FWFQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgiVW5oYW5k
bGVkIGV2ZW50IHR5cGUgJWRcbiIsIHJ1bnRpbWVFdmVudC50eXBlKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworWHJSZXN1bHQgT3BlblhSRGV2aWNlOjpiZWdpblNlc3Npb24oKQoreworICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3Nlc3Npb25TdGF0ZSA9PSBYUl9T
RVNTSU9OX1NUQVRFX1JFQURZKTsKKworICAgIGF1dG8gc2Vzc2lvbkJlZ2luSW5mbyA9IGNyZWF0
ZVN0cnVjdHVyZTxYclNlc3Npb25CZWdpbkluZm8sIFhSX1RZUEVfU0VTU0lPTl9CRUdJTl9JTkZP
PigpOworICAgIHNlc3Npb25CZWdpbkluZm8ucHJpbWFyeVZpZXdDb25maWd1cmF0aW9uVHlwZSA9
IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfU1RFUkVPOworICAgIGF1dG8gcmVz
dWx0ID0geHJCZWdpblNlc3Npb24obV9zZXNzaW9uLCAmc2Vzc2lvbkJlZ2luSW5mbyk7CisjaWYg
IUxPR19ESVNBQkxFRAorICAgIGlmIChYUl9GQUlMRUQocmVzdWx0KSkKKyAgICAgICAgTE9HKFhS
LCAiJXMgJXM6ICVzXG4iLCBfX2Z1bmNfXywgInhyQmVnaW5TZXNzaW9uIiwgcmVzdWx0VG9TdHJp
bmcocmVzdWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjplbmRTZXNzaW9uKCkKK3sKKyAgICBB
U1NFUlQobV9zZXNzaW9uICE9IFhSX05VTExfSEFORExFKTsKKyAgICB4ckVuZFNlc3Npb24obV9z
ZXNzaW9uKTsKICAgICByZXNldFNlc3Npb24oKTsKKyAgICBpZiAoIW1fdHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5vdGlmeSBkaWQgZW5kIGV2
ZW50CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldKCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBpZiAobV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCkKKyAgICAgICAgICAgIG1f
dHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQtPnNlc3Npb25EaWRFbmQoKTsKKyAgICB9KTsKK30K
KworCitEZXZpY2U6OkZyYW1lRGF0YTo6Vmlld0RhdGEgeHJWaWV3VG9WaWV3RGF0YShYclZpZXcg
dmlldykKK3sKKyAgICBEZXZpY2U6OkZyYW1lRGF0YTo6Vmlld0RhdGEgZGF0YTsKKyAgICBkYXRh
LmZvdiA9IHsgdmlldy5mb3YuYW5nbGVVcCwgdmlldy5mb3YuYW5nbGVEb3duLCB2aWV3LmZvdi5h
bmdsZUxlZnQsIHZpZXcuZm92LmFuZ2xlUmlnaHQgfTsKKyAgICBkYXRhLnBvc2Uub3JpZW50YXRp
b24gPSB7IHZpZXcucG9zZS5vcmllbnRhdGlvbi54LCB2aWV3LnBvc2Uub3JpZW50YXRpb24ueSwg
dmlldy5wb3NlLm9yaWVudGF0aW9uLnosIHZpZXcucG9zZS5vcmllbnRhdGlvbi53IH07CisgICAg
ZGF0YS5wb3NlLnBvc2l0aW9uID0geyB2aWV3LnBvc2UucG9zaXRpb24ueCwgdmlldy5wb3NlLnBv
c2l0aW9uLnksIHZpZXcucG9zZS5wb3NpdGlvbi56IH07CisgICAgcmV0dXJuIGRhdGE7Cit9CisK
K3ZvaWQgT3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBwb2xsRXZlbnRzKCk7CisgICAgICAg
IGlmICghaXNTZXNzaW9uUmVhZHkobV9zZXNzaW9uU3RhdGUpKSB7CisgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgICAgIC8vIERldmljZSBub3QgcmVhZHkgb3Igc3RvcHBpbmcuIFJlcG9ydCBm
cmFtZURhdGEgd2l0aCBpbnZhbGlkIHRyYWNraW5nLgorICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHsgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gZnJhbWVTdGF0ZSA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lU3RhdGUs
IFhSX1RZUEVfRlJBTUVfU1RBVEU+KCk7CisgICAgICAgIGF1dG8gZnJhbWVXYWl0SW5mbyA9IGNy
ZWF0ZVN0cnVjdHVyZTxYckZyYW1lV2FpdEluZm8sIFhSX1RZUEVfRlJBTUVfV0FJVF9JTkZPPigp
OworICAgICAgICBhdXRvIHJlc3VsdCA9IHhyV2FpdEZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lV2Fp
dEluZm8sICZmcmFtZVN0YXRlKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4
cldhaXRGcmFtZSIsIG1faW5zdGFuY2UpOworICAgICAgICBYclRpbWUgcHJlZGljdGVkVGltZSA9
IGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7CisKKyAgICAgICAgYXV0byBmcmFtZUJl
Z2luSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lQmVnaW5JbmZvLCBYUl9UWVBFX0ZSQU1F
X0JFR0lOX0lORk8+KCk7CisgICAgICAgIHJlc3VsdCA9IHhyQmVnaW5GcmFtZShtX3Nlc3Npb24s
ICZmcmFtZUJlZ2luSW5mbyk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJC
ZWdpbkZyYW1lIiwgbV9pbnN0YW5jZSk7CisKKyAgICAgICAgRGV2aWNlOjpGcmFtZURhdGEgZnJh
bWVEYXRhOworICAgICAgICBmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUgPSBmcmFtZVN0
YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOworCisgICAgICAgIGlmIChpc1Nlc3Npb25BY3RpdmUo
bV9zZXNzaW9uU3RhdGUpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9jb25maWd1cmF0aW9uVmll
d3MuY29udGFpbnMobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBlKSk7CisgICAgICAgICAg
ICBjb25zdCBhdXRvJiBjb25maWd1cmF0aW9uVmlldyA9IG1fY29uZmlndXJhdGlvblZpZXdzLmdl
dChtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpOworCisgICAgICAgICAgICBhdXRvIHZp
ZXdMb2NhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld0xvY2F0ZUluZm8sIFhSX1RZUEVf
VklFV19MT0NBVEVfSU5GTz4oKTsKKyAgICAgICAgICAgIHZpZXdMb2NhdGVJbmZvLmRpc3BsYXlU
aW1lID0gcHJlZGljdGVkVGltZTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1c2UgdGhlIGN1cnJl
bnQgcmVmZXJlbmNlIHNwYWNlLgorICAgICAgICAgICAgLy8gdmlld0xvY2F0ZUluZm8uc3BhY2Ug
PSBtX2xvY2FsU3BhY2U7CisKKyAgICAgICAgICAgIHVpbnQzMl90IHZpZXdDb3VudCA9IGNvbmZp
Z3VyYXRpb25WaWV3LnNpemUoKTsKKyAgICAgICAgICAgIFZlY3RvcjxYclZpZXc+IHZpZXdzKHZp
ZXdDb3VudCwgW10geworICAgICAgICAgICAgICAgIFhyVmlldyBvYmplY3Q7CisgICAgICAgICAg
ICAgICAgc3RkOjptZW1zZXQoJm9iamVjdCwgMCwgc2l6ZW9mKFhyVmlldykpOworICAgICAgICAg
ICAgICAgIG9iamVjdC50eXBlID0gWFJfVFlQRV9WSUVXOworICAgICAgICAgICAgICAgIHJldHVy
biBvYmplY3Q7CisgICAgICAgICAgICB9KCkpOworCisgICAgICAgICAgICBhdXRvIHZpZXdTdGF0
ZSA9IGNyZWF0ZVN0cnVjdHVyZTxYclZpZXdTdGF0ZSwgWFJfVFlQRV9WSUVXX1NUQVRFPigpOwor
ICAgICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50T3V0cHV0OworICAgICAgICAgICAgcmVzdWx0
ID0geHJMb2NhdGVWaWV3cyhtX3Nlc3Npb24sICZ2aWV3TG9jYXRlSW5mbywgJnZpZXdTdGF0ZSwg
dmlld0NvdW50LCAmdmlld0NvdW50T3V0cHV0LCB2aWV3cy5kYXRhKCkpOworICAgICAgICAgICAg
aWYgKCFYUl9GQUlMRUQocmVzdWx0KSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdmll
dyA6IHZpZXdzKQorICAgICAgICAgICAgICAgICAgICBmcmFtZURhdGEudmlld1Bvc2VzLmFwcGVu
ZCh4clZpZXdUb1ZpZXdEYXRhKHZpZXcpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2ZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoZnJhbWVEYXRhKSk7CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8g
ZnJhbWVFbmRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVFbmRJbmZvLCBYUl9UWVBFX0ZS
QU1FX0VORF9JTkZPPigpOworICAgICAgICBmcmFtZUVuZEluZm8uZGlzcGxheVRpbWUgPSBwcmVk
aWN0ZWRUaW1lOworICAgICAgICBmcmFtZUVuZEluZm8uZW52aXJvbm1lbnRCbGVuZE1vZGUgPSBY
Ul9FTlZJUk9OTUVOVF9CTEVORF9NT0RFX09QQVFVRTsKKyAgICAgICAgZnJhbWVFbmRJbmZvLmxh
eWVyQ291bnQgPSAwOworICAgICAgICByZXN1bHQgPSB4ckVuZEZyYW1lKG1fc2Vzc2lvbiwgJmZy
YW1lRW5kSW5mbyk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJFbmRGcmFt
ZSIsIG1faW5zdGFuY2UpOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhS
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1Y
Uk9wZW5YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJP
cGVuWFIuaAppbmRleCBhYTJmNzgwZWY5MTI5NjIwZjQ0MTJkYjQ5YTBlOGEwNDJkNThiNTI5Li41
YmViZTY5NjY5MzI3ZGIyYzgxNWI1NTZhZWRkMWNhOTliNDZlMTc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKQEAgLTQ0
LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFBsYXRmb3JtWFIgewogY2xhc3MgT3BlblhSRGV2aWNlIGZp
bmFsIDogcHVibGljIERldmljZSB7CiBwdWJsaWM6CiAgICAgT3BlblhSRGV2aWNlKFhyU3lzdGVt
SWQsIFhySW5zdGFuY2UsIFdvcmtRdWV1ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgfk9wZW5YUkRldmljZSgpOwogICAgIFhyU3lzdGVtSWQgeHJTeXN0ZW1JZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KIAogcHJpdmF0ZToKQEAgLTUyLDEzICs1MSwyMiBAQCBw
cml2YXRlOgogICAgIHZvaWQgY29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpOwogCiAgICAgTGlz
dE9mRW5hYmxlZEZlYXR1cmVzIGVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mKSBj
b25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShSZWZlcmVuY2VTcGFjZVR5
cGUpIGZpbmFsIHsgfTsKIAogICAgIFdlYkNvcmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0
aW9uKFNlc3Npb25Nb2RlKSBmaW5hbDsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKFNlc3Npb25Nb2RlKSBmaW5hbDsKICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdB
bmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90
aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgd2FpdFVu
dGlsU3RvcHBpbmcoKTsKIAorICAgIHZvaWQgcG9sbEV2ZW50cygpOworICAgIFhyUmVzdWx0IGJl
Z2luU2Vzc2lvbigpOworICAgIHZvaWQgZW5kU2Vzc2lvbigpOwogICAgIHZvaWQgcmVzZXRTZXNz
aW9uKCk7CisgICAgdm9pZCBoYW5kbGVTZXNzaW9uU3RhdGVDaGFuZ2UoKTsKKworICAgIHZvaWQg
cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdXNpbmcg
Vmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1hcDxYclZpZXdDb25maWd1cmF0
aW9uVHlwZSwgWHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIEludEhhc2g8WHJWaWV3Q29u
ZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFhyVmlld0NvbmZpZ3Vy
YXRpb25UeXBlPj47CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwIG1fdmlld0Nv
bmZpZ3VyYXRpb25Qcm9wZXJ0aWVzOwpAQCAtNjgsNiArNzYsNyBAQCBwcml2YXRlOgogICAgIFhy
U3lzdGVtSWQgbV9zeXN0ZW1JZDsKICAgICBYckluc3RhbmNlIG1faW5zdGFuY2U7CiAgICAgWHJT
ZXNzaW9uIG1fc2Vzc2lvbiB7IFhSX05VTExfSEFORExFIH07CisgICAgWHJTZXNzaW9uU3RhdGUg
bV9zZXNzaW9uU3RhdGUgeyBYUl9TRVNTSU9OX1NUQVRFX1VOS05PV04gfTsKIAogICAgIFdvcmtR
dWV1ZSYgbV9xdWV1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
Y3BwCmluZGV4IGE0N2MxZWNhN2RlZGNlZGE1MDUwYWQ5N2JjNDdkODU2NWJhNTkwZWYuLjU0MDE4
ZGE3ZWJiNTNkZDUxOTQyZGU3NjYxNDk2NzJmZjFhYzg0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKQEAgLTMxLDE0ICszMSwyOCBAQAogI2luY2x1ZGUg
IkRPTVBvaW50UmVhZE9ubHkuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgog
I2luY2x1ZGUgIldlYkZha2VYUklucHV0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdGV4
cHIgU2Vjb25kcyBGYWtlWFJGcmFtZVRpbWUgPSAxNV9tczsKKwogdm9pZCBGYWtlWFJWaWV3Ojpz
ZXRGaWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0IGZvdikKIHsKICAg
ICBtX2ZvdiA9IGZvdjsKIH0KIAorU2ltdWxhdGVkWFJEZXZpY2U6OlNpbXVsYXRlZFhSRGV2aWNl
KCkKKyAgICA6IG1fZnJhbWVUaW1lcigqdGhpcywgJlNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRp
bWVyRmlyZWQpCit7CisgICAgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSB0cnVlOwor
fQorCitTaW11bGF0ZWRYUkRldmljZTo6flNpbXVsYXRlZFhSRGV2aWNlKCkKK3sKKyAgICBzdG9w
VGltZXIoKTsKK30KKwogdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c2ltdWxhdGVTaHV0ZG93bkNv
bXBsZXRlZCgpCiB7CiAgICAgaWYgKG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQpCkBAIC00
OSw2ICs2MywyNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5k
UmVuZGVyaW5nKCkKIHsKICAgICBpZiAobV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKQog
ICAgICAgICBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CisgICAgc3RvcFRpbWVyKCk7Cit9
CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnN0b3BUaW1lcigpCit7CisgICAgaWYgKG1fZnJh
bWVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZyYW1lVGltZXIuc3RvcCgpOworfQorCit2
b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQoKQoreworICAgIGF1dG8gY2Fs
bGJhY2tzID0gV1RGTW92ZShtX2NhbGxiYWNrcyk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKK30KKwordm9pZCBTaW11bGF0ZWRY
UkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7
CisgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBpZiAoIW1f
ZnJhbWVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZyYW1lVGltZXIuc3RhcnRPbmVTaG90
KEZha2VYUkZyYW1lVGltZSk7CiB9CiAKIFdlYkZha2VYUkRldmljZTo6V2ViRmFrZVhSRGV2aWNl
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKaW5k
ZXggODQ3YmJjYjE3NDQ4NDQ4ZjBlYzdlOGNlYjFiNmZkNmU5ZmFjOTU4OC4uMzkxYmZjMzQ3ZWVm
OWFhYWYxN2JkMmJhOGI2YmE0MzZmMDAwNDZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YkZha2VYUkRldmljZS5oCkBAIC02Myw3ICs2Myw4IEBAIHByaXZhdGU6CiBjbGFzcyBTaW11bGF0
ZWRYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNpbXVsYXRlZFhSRGV2aWNlKCkgeyBt
X3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9IHRydWU7IH0KKyAgICBTaW11bGF0ZWRYUkRl
dmljZSgpOworICAgIH5TaW11bGF0ZWRYUkRldmljZSgpOwogICAgIHZvaWQgc2V0TmF0aXZlQm91
bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiBnZW9tZXRyeSkgeyBtX25hdGl2
ZUJvdW5kc0dlb21ldHJ5ID0gZ2VvbWV0cnk7IH0KICAgICB2b2lkIHNldFZpZXdlck9yaWdpbihS
ZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvcmlnaW4pIHsgbV92aWV3ZXJPcmlnaW4gPSBX
VEZNb3ZlKG9yaWdpbik7IH0KICAgICB2b2lkIHNldEZsb29yT3JpZ2luKFJlZlB0cjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX2Zsb29yT3JpZ2luID0gV1RGTW92ZShvcmlnaW4p
OyB9CkBAIC03NSwxMiArNzYsMjAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9CiAgICAg
dm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7CiAgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbjsgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVy
ZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisgICAg
dm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisKKyAgICB2
b2lkIHN0b3BUaW1lcigpOworICAgIHZvaWQgZnJhbWVUaW1lckZpcmVkKCk7CisKICAgICBPcHRp
b25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+PiBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5Owog
ICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3ZpZXdlck9yaWdpbjsKICAgICBSZWZQ
dHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9mbG9vck9yaWdpbjsKICAgICBib29sIG1fZW11bGF0
ZWRQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4gbV92aWV3
czsKICAgICBib29sIG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbiB7IGZhbHNlIH07Cisg
ICAgVGltZXIgbV9mcmFtZVRpbWVyOworICAgIFZlY3RvcjxSZXF1ZXN0RnJhbWVDYWxsYmFjaz4g
bV9jYWxsYmFja3M7CiB9OwogCiBjbGFzcyBXZWJGYWtlWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJGYWtlWFJEZXZpY2U+IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZGY1ZmNjOWU0YzQwYjBjYTFh
NjRjYmY1N2IwMzA1MDhjODE4NjM4Li5jNjhjZDJmY2IzNDQxYTVmMmEzZmUyNmY0OTQ4NmUzMWUz
YmQ0NTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDItMDMgIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+IGFuZCBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5h
bmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIENvbXBsZXRlIFhSU2Vzc2lvbjo6cmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIxLTAyLTA4ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWFrZSBh
dXRvICYmIDxyYXRpbz4gdXNlIGNvbnRlbnQgYm94LXNpemluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKaW5kZXggOGQ3NzlmYzI0Mjk4ZTdkMDEzYTI4ZjQxMzdmMjQ5OWYxNDRkYzUwYy4u
MTA3YmQ2OWI2ZTg4OTgzYTNhNGRjMGZhN2IwYjIwZDg1NzdjYzdiZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDMgIFNlcmdpbyBWaWxs
YXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+IGFuZCBJbWFub2wgRmVybmFuZGV6ICA8aWZl
cm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIENvbXBsZXRlIFhSU2Vzc2lvbjo6cmVxdWVz
dEFuaW1hdGlvbkZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgWFJTZXNzaW9uIFJBRiB0ZXN0cy4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlv
bkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTAyLTA4
ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdl
YlhSU3lzdGVtOjpSZXF1ZXN0U2Vzc2lvbiB3aXRoICd2aWV3ZXInIGFzIGEgcmVxdWlyZWQgZmVh
dHVyZSBzaG91bGQgc3VjY2VlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1l
X3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVf
dGltZXN0YW1wLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNThhNDIzZmM2YjE5ODEx
MjkzNWJmZjI5MDcyNzhmZGE5NGZjYzU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFu
aW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUg
Zm9yIGltbWVyc2l2ZQorUEFTUyBYUkZyYW1lIGdldFZpZXdlclBvc2UgdXBkYXRlcyBvbiB0aGUg
bmV4dCBmcmFtZSBmb3Igbm9uLWltbWVyc2l2ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGM0ODFkMjQ2NjE3ODcxMDIxMGY2OTIwOTVhZmQzY2NlNjZj
MjMzOTMuLmIwNzAxNmFlMDY3MmQ5NjJmYzJmNjIyMGMwYWRlZGYyNjYxMWUxNDMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zCkBAIC02NDAsNiArNjQwLDcgQEAg
d2Via2l0Lm9yZy9iLzIwOTg1OSB3ZWJraXQub3JnL2IvMjE1NjM3IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHIKIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5pbWF0aW9uRnJhbWVf
aW52YWxpZGhhbmRsZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2ZlYXR1cmVzX2Rl
dmljZVN1cHBvcnQuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVfY2FsbGJhY2tfY2FsbHMuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1l
X3RpbWVzdGFtcC5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVu
Y2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfYXZhaWxhYmlsaXR5Lmh0dHBzLmh0bWwgWyBQYXNz
IF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRtbCBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419709</attachid>
            <date>2021-02-09 06:16:21 -0800</date>
            <delta_ts>2021-02-09 07:12:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220979-20210209151619.patch</filename>
            <type>text/plain</type>
            <size>47727</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTZjOGExMDY3YzNjZTFm
NGQxZTE3OTdiMjYyNjQwMzEyNDk2OGMxNy4uMWQ4OTczZjNiYmI4MzVmMTliYTZiODM4MTI0Yjlm
NmI5MjU3MDgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBsZW1lbnQgdGhlIHJlbmRlciBsb29w
IGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBYUiBzZXNzaW9ucy4KKyAgICAgICAgLSBJbXBsZW1l
bnQgV2ViWFIgcmVuZGVyIHN0YXRlIHVwZGF0ZXMuCisgICAgICAgIC0gQ3JlYXRlIHRoZSBGcmFt
ZURhdGEgc3RydWN0IHVzZWQgdG8gcXVlcnkgZnJhbWUgc3BlY2lmaWMgZGF0YSBmcm9tIFhSIGRl
dmljZXMuCisgICAgICAgIC0gVXNlIHdpbmRvdyBSQUYgZm9yIGlubGluZSBYUiBzZXNzaW9ucy4K
KyAgICAgICAgLSBJbXBsZW1lbnQgV2ViRmFrZVhSRGV2aWNlIHRlc3RpbmcgcmVuZGVyaW5nIGxv
b3AgdXNpbmcgYSB0aW1lci4KKyAgICAgICAgLSBJbXBsZW1lbnQgT3BlblhSIHNlc3Npb24gc3Rh
dGVzIGFuZCBzZXNzaW9uIHRyYWNraW5nLgorICAgICAgICAtIEltcHJvdmUgT3BlblhSIGV2ZW50
IGhhbmRsaW5nLgorCisgICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgcGxhdGZvcm0gdGVzdHMu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOiBBZGQgbV9hY3RpdmUs
IG1fdGltZSBhbmQgbV9zZXNzaW9uIG1lbWJlcnMKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJh
bWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSRnJhbWU6OnNldFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2V0
QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmlzQWN0aXZlIGNvbnN0KToK
KworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oOiBBZGQgbV9jb21w
b3NpdGlvbkRpc2FibGVkIG1lbWJlciBhbmQgb3V0cHV0IGNhbnZhcyBzZXR0ZXIKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldE91dHB1dENhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlJlbmRlclN0YXRlOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQp
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJT
ZXNzaW9uOjpXZWJYUlNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpp
bml0aWFsaXplKTogcmVxdWlyZWQgdG8gY3JlYXQgdGhlIFhSRnJhbWUgd2l0aCBtYWtlUmVmKHRo
aXMpCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFj
ZSk6IGltcGxlbWVudCByZWZlcmVuY2Ugc3BhY2UgY3JlYXRpb24KKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKTogaW1wbGVtZW50IHJlbmRlciBs
b29wIGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBzZXNzaW9ucworICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSk6IGltcGxlbWVudCBXZWJYUiBy
ZW5kZXIgc3RhdGUgdXBkYXRlcworICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpmcmFt
ZVNob3VsZEJlUmVuZGVyZWQgY29uc3QpOiBhZGQgY2hlY2sgYmFzZWQgb24gdGhlIHNwZWMgCisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSk6IGltcGxlbWVudCBo
ZWxwZXIgZnVuY3Rpb24gdG8gZGlzcGF0Y2ggYSBmcmFtZSByZXF1ZXN0IHRvIFhSIGRldmljZXMK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6b25GcmFtZSk6IHByb2Nlc3MgdGhlIFhS
IGZyYW1lIGFuZCBjYWxsIHRoZSBSQUYgY2FsbGJhY2tzCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
Y3BwOiBJbXBsZW1lbnQgcmVuZGVyIGxvb3AgdXNpbmcgd2luZG93IHJhZiBsb29wLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OldlYlhSU3lzdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZpY2UpOiBBZGQg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1
bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOiBBZGFwdCB0byB0aGUgbmV3IGludGVyZmFj
ZQorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
V2ViR0xMYXllcjo6Y2FudmFzIGNvbnN0KTogSW1wbGVtZW50IGNhbnZhcyBnZXR0ZXIKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJXZWJHTExheWVyOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KTogYWRkCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQpOiBhZGQK
KworICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDogQWRkIEZyYW1lRGF0YSBzdHJ1
Y3QKKworICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcDog
SW1wbGVtZW50IHJlbmRlciBsb29wIHVzaW5nIE9wZW5YUiBBUEkKKyAgICAgICAgKFBsYXRmb3Jt
WFI6Ok9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnBvbGxFdmVudHMpOiBJbXBsZW1lbnQgZXZlbnQgbG9vcCB0
byBxdWVyeSBtX3Nlc3Npb25TdGF0ZQorICAgICAgICAoUGxhdGZvcm1YUjo6c2Vzc2lvbklzQWN0
aXZlKTogYWRkCisgICAgICAgIChQbGF0Zm9ybVhSOjpzZXNzaW9uSXNSdW5uaW5nKTogYWRkCisg
ICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmJlZ2luU2Vzc2lvbik6CisgICAgICAg
IChQbGF0Zm9ybVhSOjp4clZpZXdUb1ZpZXdEYXRhKTogaGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZl
cnQgZGF0YSBmcm9tIE9wZW5YUgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpy
ZXF1ZXN0RnJhbWUpOiBzdGFydCBPcGVuWFIgZnJhbWUsIHF1ZXJ5IHBvc2UgYW5kIHZpZXcgZGF0
YSAKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6d2FpdFVudGlsU3RvcHBpbmcp
OiBwcm9wZXJseSB3YWl0IGZvciBPcGVuWFIgZXZlbnQgYmVmb3JlIGVuZGluZyB0aGUgc2Vzc2lv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOgorCisK
KyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IEltcGxlbWVudCByZW5kZXIg
bG9vcCB1c2luZyBhIHRpbWVyCisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6
U2ltdWxhdGVkWFJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6
On5TaW11bGF0ZWRYUkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmlj
ZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11
bGF0ZWRYUkRldmljZTo6c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhS
RGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJE
ZXZpY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
aDoKKwogMjAyMS0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CiAKICAgICAgICAgUGVybWlzc2lvbiByZXF1ZXN0IEFQSSBmb3IgTWVkaWFLZXlTeXN0ZW0gYWNj
ZXNzIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
CmluZGV4IDkzNWRjMTI3YzlkMDdhN2M4ZDIzODQxNTQ1ODdkNTEzNTg4N2FlMWEuLmYyNzg3NjFi
MGE3YjdkMjlkMTc5NDIyMzUwYTJhYTE5OGEyM2JkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtNDgsMTAgKzQ4LDYgQEAgV2ViWFJGcmFtZTo6
V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCiAKIFdlYlhSRnJhbWU6On5X
ZWJYUkZyYW1lKCkgPSBkZWZhdWx0OwogCi1jb25zdCBXZWJYUlNlc3Npb24mIFdlYlhSRnJhbWU6
OnNlc3Npb24oKSBjb25zdAotewotICAgIHJldHVybiBtX3Nlc3Npb247Ci19CiAKIFJlZlB0cjxX
ZWJYUlZpZXdlclBvc2U+IFdlYlhSRnJhbWU6OmdldFZpZXdlclBvc2UoY29uc3QgV2ViWFJSZWZl
cmVuY2VTcGFjZSYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5o
CmluZGV4IDgwOGE2NzY0ZjBkMmM1YWU2MWU0ZDY1OGMyODI1MDU3OWZlNWI2MjcuLjJhMjZhZDg2
YTJjMzBkYThjMjNkZmI2YzdiYmI5MDM4MmQxMmUwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VC
WFIpCiAKKyNpbmNsdWRlICJET01IaWdoUmVzVGltZVN0YW1wLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgpAQCAtNDYsMTQgKzQ3LDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlhSRnJh
bWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKICAgICB+V2ViWFJGcmFtZSgpOwogCi0g
ICAgY29uc3QgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3Q7CisgICAgY29uc3QgV2ViWFJT
ZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAKICAg
ICBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJl
bmNlU3BhY2UmKTsKICAgICBSZWZQdHI8V2ViWFJQb3NlPiBnZXRQb3NlKGNvbnN0IFdlYlhSU3Bh
Y2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CiAKKyAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJlc1Rp
bWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KKyAgICB2b2lkIHNldEFjdGl2ZShib29s
IGFjdGl2ZSkgeyBtX2FjdGl2ZSA9IGFjdGl2ZTsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2ZTsgfQorCiBwcml2YXRlOgotICAgIFdlYlhSRnJhbWUoUmVmPFdl
YlhSU2Vzc2lvbj4mJik7CisgICAgZXhwbGljaXQgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9u
PiYmKTsKIAorICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OworICAgIERPTUhpZ2hSZXNUaW1l
U3RhbXAgbV90aW1lOwogICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKaW5kZXgg
MWU0MzYzZjFmMTk0MzFlNGExZWM5NThmMWJmYTJiNDcwNzQ1NzdhMi4uZGMwZGU0YTY1ZDE0ZjE2
MTA2M2ZlNWZiZmY5NDlkYWI2YjA1MjJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKQEAgLTU2LDYgKzU2LDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEJhc2VMYXllcihXZWJYUldlYkdMTGF5ZXIqIGJhc2VMYXllcikgeyBtX2Jhc2VM
YXllciA9IGJhc2VMYXllcjsgfQogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIG91dHB1dENhbnZh
cygpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Q2FudmFzLmdldCgpOyB9CisgICAgdm9pZCBzZXRP
dXRwdXRDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcykgeyBtX291dHB1dENhbnZhcyA9
IG1ha2VXZWFrUHRyKGNhbnZhcyk7IH0KKworICAgIGJvb2wgaXNDb21wb3NpdGlvbkVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q29t
cG9zaXRpb25FbmFibGVkKGJvb2wgY29tcG9zaXRpb25FbmFibGVkKSB7IG1fY29tcG9zaXRpb25F
bmFibGVkID0gY29tcG9zaXRpb25FbmFibGVkOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViWFJSZW5kZXJTdGF0ZShPcHRpb25hbDxkb3VibGU+IGZpZWxkT2ZWaWV3KTsKQEAgLTY5LDYg
KzczLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxkb3VibGU+IG1faW5saW5lVmVydGljYWxG
aWVsZE9mVmlldzsgLy8gaW4gcmFkaWFucwogICAgIFJlZlB0cjxXZWJYUldlYkdMTGF5ZXI+IG1f
YmFzZUxheWVyOwogICAgIFdlYWtQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IG1fb3V0cHV0Q2FudmFz
OworICAgIGJvb2wgbV9jb21wb3NpdGlvbkVuYWJsZWQgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vz
c2lvbi5jcHAKaW5kZXggZDhlMmY4MTFjMjQ1YjBjZWIwYWNlZmVhM2RmZWRhNTRlNTI4YjAwNS4u
N2U1ZmE1YzQ5N2MzMTc4MWEwYzFmMDk0NTNiMzA3MjQzYWNkNTcxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtNTUsMTEgKzU1LDE1IEBA
IFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0
ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fZGV2
aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCiAgICAgLCBtX2FjdGl2ZVJlbmRlclN0YXRlKFdlYlhS
UmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKLSAgICAsIG1fYW5pbWF0aW9uVGltZXIoKnRoaXMs
ICZXZWJYUlNlc3Npb246OmFuaW1hdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3RpbWVPcmlnaW4o
TW9ub3RvbmljVGltZTo6bm93KCkpCiB7CiAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2lu
Z0FuZFJlbmRlcmluZyhtb2RlKTsKICAgICBtX2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQobWFrZVdlYWtQdHIoKnRoaXMpKTsKIAorICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHIvI3JlZi1mb3ItZG9tLXhycmVmZXJlbmNlc3BhY2V0eXBlLXZp
ZXdlciVFMiU5MSVBMgorICAgIC8vIEV2ZXJ5IHNlc3Npb24gTVVTVCBzdXBwb3J0IHZpZXdlciBY
UlJlZmVyZW5jZVNwYWNlcy4KKyAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNl
KFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIpOworCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7
CiB9CiAKQEAgLTE5OCw2NiArMjAyLDUxIEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0UmVm
ZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSwgUmVxdWVzdFJlZmVyCiAgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorCiAgICAgLy8gMS4gTGV0IHByb21pc2UgYmUgYSBuZXcgUHJv
bWlzZS4KICAgICAvLyAyLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgdHlwZV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAv
LyAgMi4xLiBDcmVhdGUgYSByZWZlcmVuY2Ugc3BhY2UsIHJlZmVyZW5jZVNwYWNlLCB3aXRoIHRo
ZSBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlLgotICAgICAgICAvLyAgMi4yLiBJZiByZWZlcmVu
Y2VTcGFjZSBpcyBudWxsLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3Ig
YW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9z
dFRhc2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgdHlwZV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyAyLjEuIElmIHRoZSByZXN1bHQg
b2YgcnVubmluZyByZWZlcmVuY2Ugc3BhY2UgaXMgc3VwcG9ydGVkIGZvciB0eXBlIGFuZCBzZXNz
aW9uIGlzIGZhbHNlLCBxdWV1ZSBhIHRhc2sgdG8gcmVqZWN0IHByb21pc2UKKyAgICAgICAgLy8g
d2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAg
aWYgKCFyZWZlcmVuY2VTcGFjZUlzU3VwcG9ydGVkKHR5cGUpKSB7Ci0gICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNw
YWNlCi0gICAgICAgIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiByZWZlcmVuY2VTcGFjZTsK
LSAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikK
LSAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6
OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIG1ha2VSZWYoKnRoaXMpLCB0eXBl
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJlZmVy
ZW5jZVNwYWNlOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBtYWtlUmVmKCp0
aGlzKSwgdHlwZSk7Ci0KLSAgICAgICAgLy8gIDIuMy4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVm
ZXJlbmNlU3BhY2UuCi0gICAgICAgIC8vIDMuIFJldHVybiBwcm9taXNlLgotICAgICAgICBwcm9t
aXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIC8v
IDIuMi4gU2V0IHVwIGFueSBwbGF0Zm9ybSByZXNvdXJjZXMgcmVxdWlyZWQgdG8gdHJhY2sgcmVm
ZXJlbmNlIHNwYWNlcyBvZiB0eXBlIHR5cGUuCisgICAgICAgIG1fZGV2aWNlLT5pbml0aWFsaXpl
UmVmZXJlbmNlU3BhY2UodHlwZSk7CisKKyAgICAgICAgLy8gMi4zLiBRdWV1ZSBhIHRhc2sgdG8g
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCB0eXBlLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4o
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgICAgICAvLyAyLjQuIENyZWF0ZSBh
IHJlZmVyZW5jZSBzcGFjZSwgcmVmZXJlbmNlU3BhY2UsIHdpdGggdHlwZSBhbmQgc2Vzc2lvbi4K
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2Ny
ZWF0ZS1hLXJlZmVyZW5jZS1zcGFjZQorICAgICAgICAgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNl
U3BhY2U+IHJlZmVyZW5jZVNwYWNlOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVu
Y2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFj
ZSA9IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VSZWYo
KnRoaXMpLCB0eXBlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWZlcmVu
Y2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVJlZigq
dGhpcyksIHR5cGUpOworCisgICAgICAgICAgICAvLyAyLjUuIFJlc29sdmUgcHJvbWlzZSB3aXRo
IHJlZmVyZW5jZVNwYWNlLgorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNw
YWNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJYUlNlc3Npb246OmFuaW1hdGlvblRpbWVyRmlyZWQoKQotewotICAgIG1fbGFzdEFuaW1hdGlv
bkZyYW1lVGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0KLSAgICBpZiAobV9jYWxs
YmFja3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUT0RPOiByZXRyaWV2
ZSBmcmFtZSBmcm9tIHBsYXRmb3JtLgotICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVh
dGUoKnRoaXMpOwotCi0gICAgbV9ydW5uaW5nQ2FsbGJhY2tzLnN3YXAobV9jYWxsYmFja3MpOwot
ICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX3J1bm5pbmdDYWxsYmFja3MpIHsKLSAgICAgICAg
aWYgKGNhbGxiYWNrLT5pc0NhbmNlbGxlZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGNhbGxiYWNrLT5oYW5kbGVFdmVudChtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcC5z
ZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpLCBmcmFtZS5nZXQoKSk7Ci0gICAgfQot
Ci0gICAgbV9ydW5uaW5nQ2FsbGJhY2tzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgV2ViWFJTZXNzaW9u
OjpzY2hlZHVsZUFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fZW5kZWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIFRPRE86IHVzZSBkZXZpY2UncyByZWZyZXNoIHJhdGUuIExldCdzIHN0YXJ0
IHdpdGggNjBmcHMuCi0gICAgU2Vjb25kcyBhbmltYXRpb25JbnRlcnZhbCA9IDE1X21zOwotICAg
IFNlY29uZHMgc2NoZWR1bGVEZWxheSA9IHN0ZDo6bWF4KGFuaW1hdGlvbkludGVydmFsIC0gKE1v
bm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApLCAwX3Mp
OwotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHNjaGVkdWxlRGVsYXkpOwotfQot
CiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJzZXNzaW9u
LXJlcXVlc3RhbmltYXRpb25mcmFtZQogdW5zaWduZWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoUmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Cisg
ICAgLy8gSWdub3JlIGFueSBuZXcgZnJhbWUgcmVxdWVzdHMgb25jZSB0aGUgc2Vzc2lvbiBpcyBl
bmRlZC4KKyAgICBpZiAobV9lbmRlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICAvLyAxLiBM
ZXQgc2Vzc2lvbiBiZSB0aGUgdGFyZ2V0IFhSU2Vzc2lvbiBvYmplY3QuCiAgICAgLy8gMi4gSW5j
cmVtZW50IHNlc3Npb24ncyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2sgaWRlbnRpZmllciBieSBv
bmUuCiAgICAgdW5zaWduZWQgbmV3SWQgPSBtX25leHRDYWxsYmFja0lkKys7CkBAIC0yNjcsNyAr
MjU2LDExIEBAIHVuc2lnbmVkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFJl
ZjxYUkZyYW1lUmVxdWVzdENhbGxiYWNrPiYmIGNhbGxiCiAgICAgY2FsbGJhY2stPnNldENhbGxi
YWNrSWQobmV3SWQpOwogICAgIG1fY2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAKLSAgICBzY2hlZHVsZUFuaW1hdGlvbigpOworICAgIC8vIFNjcmlwdCBjYW4gYWRkIG11bHRp
cGxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFja3MgYnV0IHdlIHNob3VsZCBvbmx5IHJl
cXVlc3QgYSBkZXZpY2UgZnJhbWUgb25jZS4KKyAgICAvLyBXaGVuIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBpcyBjYWxsZWQgZHVyaW5nIHByb2Nlc3NpbmcgUkFGIGNhbGxiYWNrcyB0aGUgbmV4dCBy
ZXF1ZXN0RnJhbWUgaXMgc2NoZWR1bGVkCisgICAgLy8gYXQgdGhlIGVuZCBvZiBXZWJYUlNlc3Np
b246Om9uRnJhbWUoKSB0byBwcmV2ZW50IHJlcXVlc3RpbmcgYSBuZXcgZnJhbWUgYmVmb3JlIHRo
ZSBjdXJyZW50IG9uZSBoYXMgZW5kZWQuCisgICAgaWYgKG1fY2FsbGJhY2tzLnNpemUoKSA9PSAx
KQorICAgICAgICByZXF1ZXN0RnJhbWUoKTsKIAogICAgIC8vIDQuIFJldHVybiBzZXNzaW9uJ3Mg
YW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrIGlkZW50aWZpZXIncyBjdXJyZW50IHZhbHVlLgogICAg
IHJldHVybiBuZXdJZDsKQEAgLTI4NiwxNyArMjc5LDkgQEAgdm9pZCBXZWJYUlNlc3Npb246OmNh
bmNlbEFuaW1hdGlvbkZyYW1lKHVuc2lnbmVkIGNhbGxiYWNrSWQpCiAgICAgfSk7CiAKICAgICBp
ZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgbV9jYWxsYmFja3NbcG9zaXRpb25d
LT5jYW5jZWwoKTsKLSAgICAgICAgbV9jYWxsYmFja3MucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICAg
ICAgbV9jYWxsYmFja3NbcG9zaXRpb25dLT5zZXRGaXJlZE9yQ2FuY2VsbGVkKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0KLSAgICBwb3NpdGlvbiA9IG1fcnVubmluZ0NhbGxiYWNrcy5maW5k
TWF0Y2hpbmcoW2NhbGxiYWNrSWRdIChhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiBpdGVt
LT5jYWxsYmFja0lkKCkgPT0gY2FsbGJhY2tJZDsKLSAgICB9KTsKLQotICAgIGlmIChwb3NpdGlv
biAhPSBub3RGb3VuZCkKLSAgICAgICAgbV9ydW5uaW5nQ2FsbGJhY2tzW3Bvc2l0aW9uXS0+Y2Fu
Y2VsKCk7CiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI25h
dGl2ZS13ZWJnbC1mcmFtZWJ1ZmZlci1yZXNvbHV0aW9uCkBAIC00MjAsNiArNDA1LDEzNyBAQCB2
b2lkIFdlYlhSU2Vzc2lvbjo6c2Vzc2lvbkRpZEVuZCgpCiAgICAgc2h1dGRvd24oSW5pdGlhdGVk
QnlTeXN0ZW06Olllcyk7CiB9CiAKK3ZvaWQgV2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5k
ZXJTdGF0ZSgpCit7CisgICAgLy8gaHR0cHM6IC8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI2FwcGx5LXRoZS1wZW5kaW5nLXJlbmRlci1zdGF0ZQorICAgIC8vIDEuIExldCBhY3RpdmVT
dGF0ZSBiZSBzZXNzaW9u4oCZcyBhY3RpdmUgcmVuZGVyIHN0YXRlLgorICAgIC8vIDIuIExldCBu
ZXdTdGF0ZSBiZSBzZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRlciBzdGF0ZS4KKyAgICAvLyAzLiBT
ZXQgc2Vzc2lvbuKAmXMgcGVuZGluZyByZW5kZXIgc3RhdGUgdG8gbnVsbC4KKyAgICBhdXRvIG5l
d1N0YXRlID0gbV9wZW5kaW5nUmVuZGVyU3RhdGU7CisgICAgQVNTRVJUKG5ld1N0YXRlKTsKKwor
ICAgIC8vIDQuIExldCBvbGRCYXNlTGF5ZXIgYmUgYWN0aXZlU3RhdGXigJlzIGJhc2VMYXllci4K
KyAgICAvLyA1LiBMZXQgb2xkTGF5ZXJzIGJlIGFjdGl2ZVN0YXRl4oCZcyBsYXllcnMuCisgICAg
Ly8gRklYTUU6IHRob3NlIGFyZSBvbmx5IG5lZWRlZCBmb3Igc3RlcCA2LjIuCisKKyAgICAvLyA2
LjEgU2V0IGFjdGl2ZVN0YXRlIHRvIG5ld1N0YXRlLgorICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUg
PSBuZXdTdGF0ZTsKKworICAgIC8vIDYuMiBJZiBvbGRCYXNlTGF5ZXIgaXMgbm90IGVxdWFsIHRv
IGFjdGl2ZVN0YXRl4oCZcyBiYXNlTGF5ZXIsIG9sZExheWVycyBpcyBub3QgZXF1YWwgdG8gYWN0
aXZlU3RhdGXigJlzIGxheWVycywgb3IgdGhlIGRpbWVuc2lvbnMgb2YgYW55IG9mIHRoZSBsYXll
cnMgaGF2ZSBjaGFuZ2VkLCB1cGRhdGUgdGhlIHZpZXdwb3J0cyBmb3Igc2Vzc2lvbi4KKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisKKyAgICAvLyA2LjMgSWYgYWN0aXZlU3RhdGXigJlz
IGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgaXMgbGVzcyB0aGFuIHNlc3Npb27igJlzIG1pbmlt
dW0gaW5saW5lIGZpZWxkIG9mIHZpZXcgc2V0IGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNh
bEZpZWxkT2ZWaWV3IHRvIHNlc3Npb27igJlzIG1pbmltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcu
CisgICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmlubGluZVZlcnRpY2FsRmllbGRPZlZpZXco
KSA8IG1fbWluaW11bUlubGluZUZPVikKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0
SW5saW5lVmVydGljYWxGaWVsZE9mVmlldyhtX21pbmltdW1JbmxpbmVGT1YpOworCisgICAgLy8g
Ni40IElmIGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IGlzIGdyZWF0
ZXIgdGhhbiBzZXNzaW9u4oCZcyBtYXhpbXVtIGlubGluZSBmaWVsZCBvZiB2aWV3IHNldCBhY3Rp
dmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVsZE9mVmlldyB0byBzZXNzaW9u4oCZcyBtYXhp
bXVtIGlubGluZSBmaWVsZCBvZiB2aWV3LgorICAgIGlmIChtX2FjdGl2ZVJlbmRlclN0YXRlLT5p
bmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkgPiBtX21heGltdW1JbmxpbmVGT1YpCisgICAgICAg
IG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldElubGluZVZlcnRpY2FsRmllbGRPZlZpZXcobV9tYXhp
bXVtSW5saW5lRk9WKTsKKworICAgIC8vIDYuNSBJZiBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhOZWFy
IGlzIGxlc3MgdGhhbiBzZXNzaW9u4oCZcyBtaW5pbXVtIG5lYXIgY2xpcCBwbGFuZSBzZXQgYWN0
aXZlU3RhdGXigJlzIGRlcHRoTmVhciB0byBzZXNzaW9u4oCZcyBtaW5pbXVtIG5lYXIgY2xpcCBw
bGFuZS4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+ZGVwdGhOZWFyKCkgPCBtX21pbmlt
dW1OZWFyQ2xpcFBsYW5lKQorICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXREZXB0aE5l
YXIobV9taW5pbXVtTmVhckNsaXBQbGFuZSk7CisKKyAgICAvLyA2LjYgSWYgYWN0aXZlU3RhdGXi
gJlzIGRlcHRoRmFyIGlzIGdyZWF0ZXIgdGhhbiBzZXNzaW9u4oCZcyBtYXhpbXVtIGZhciBjbGlw
IHBsYW5lIHNldCBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhGYXIgdG8gc2Vzc2lvbuKAmXMgbWF4aW11
bSBmYXIgY2xpcCBwbGFuZS4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+ZGVwdGhGYXIo
KSA+IG1fbWF4aW11bUZhckNsaXBQbGFuZSkKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+
c2V0RGVwdGhGYXIobV9tYXhpbXVtRmFyQ2xpcFBsYW5lKTsKKworICAgIC8vIDYuNyBMZXQgYmFz
ZUxheWVyIGJlIGFjdGl2ZVN0YXRl4oCZcyBiYXNlTGF5ZXIuCisgICAgYXV0byBiYXNlTGF5ZXIg
PSBtX2FjdGl2ZVJlbmRlclN0YXRlLT5iYXNlTGF5ZXIoKTsKKworICAgIC8vIDYuOCBTZXQgYWN0
aXZlU3RhdGXigJlzIGNvbXBvc2l0aW9uIGVuYWJsZWQgYW5kIG91dHB1dCBjYW52YXMgYXMgZm9s
bG93czoKKyAgICBpZiAobV9tb2RlID09IFhSU2Vzc2lvbk1vZGU6OklubGluZSAmJiBpczxXZWJY
UldlYkdMTGF5ZXI+KGJhc2VMYXllcikgJiYgIWJhc2VMYXllci0+aXNDb21wb3NpdGlvbkVuYWJs
ZWQoKSkgeworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRDb21wb3NpdGlvbkVuYWJs
ZWQoZmFsc2UpOworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRPdXRwdXRDYW52YXMo
YmFzZUxheWVyLT5jYW52YXMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9hY3RpdmVSZW5k
ZXJTdGF0ZS0+c2V0Q29tcG9zaXRpb25FbmFibGVkKHRydWUpOworICAgICAgICBtX2FjdGl2ZVJl
bmRlclN0YXRlLT5zZXRPdXRwdXRDYW52YXMobnVsbHB0cik7CisgICAgfQorfQorCisvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNzaG91bGQtYmUtcmVuZGVyZWQKK2Jv
b2wgV2ViWFJTZXNzaW9uOjpmcmFtZVNob3VsZEJlUmVuZGVyZWQoKSBjb25zdAoreworICAgIGlm
ICghbV9hY3RpdmVSZW5kZXJTdGF0ZS0+YmFzZUxheWVyKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9tb2RlID09IFhSU2Vzc2lvbk1vZGU6OklubGluZSAmJiAhbV9hY3RpdmVS
ZW5kZXJTdGF0ZS0+b3V0cHV0Q2FudmFzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSgpCit7Cisg
ICAgbV9kZXZpY2UtPnJlcXVlc3RGcmFtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXShhdXRvJiYgZnJhbWVEYXRhKSB7CisgICAgICAgIG9uRnJhbWUoV1RGTW92ZShmcmFt
ZURhdGEpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGlmIChtX2VuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBRdWV1ZSBhIHRhc2sgdG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzLgorICAgIHF1ZXVl
VGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCBm
cmFtZURhdGEgPSBXVEZNb3ZlKGZyYW1lRGF0YSldKCkgeworICAgICAgICBpZiAobV9lbmRlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0aGUgY3VycmVu
dCBoaWdoIHJlc29sdXRpb24gdGltZS4KKyAgICAgICAgYXV0byBub3cgPSAoTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25kcygpOworCisgICAgICAgIGF1dG8g
ZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigqdGhpcykpOworICAgICAgICAvLyAg
Mi5MZXQgZnJhbWUgYmUgc2Vzc2lvbuKAmXMgYW5pbWF0aW9uIGZyYW1lLgorICAgICAgICAvLyAg
My5TZXQgZnJhbWXigJlzIHRpbWUgdG8gZnJhbWVUaW1lLgorICAgICAgICBmcmFtZS0+c2V0VGlt
ZShzdGF0aWNfY2FzdDxET01IaWdoUmVzVGltZVN0YW1wPihmcmFtZURhdGEucHJlZGljdGVkRGlz
cGxheVRpbWUpKTsKKworICAgICAgICAvLyA0LiBGb3IgZWFjaCB2aWV3IGluIGxpc3Qgb2Ygdmll
d3MsIHNldCB2aWV34oCZcyB2aWV3cG9ydCBtb2RpZmlhYmxlIGZsYWcgdG8gdHJ1ZS4KKyAgICAg
ICAgLy8gNS4gSWYgdGhlIGFjdGl2ZSBmbGFnIG9mIGFueSB2aWV3IGluIHRoZSBsaXN0IG9mIHZp
ZXdzIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IFhSIGFuaW1hdGlvbiBmcmFtZSwgdXBkYXRl
IHRoZSB2aWV3cG9ydHMuCisgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisKKyAgICAgICAg
Ly8gRklYTUU6IEkgbW92ZWQgc3RlcCA3IGJlZm9yZSA2IGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRo
dWIuY29tL2ltbWVyc2l2ZS13ZWIvd2VieHIvaXNzdWVzLzExNjQKKyAgICAgICAgLy8gNy5JZiBz
ZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRlciBzdGF0ZSBpcyBub3QgbnVsbCwgYXBwbHkgdGhlIHBl
bmRpbmcgcmVuZGVyIHN0YXRlLgorICAgICAgICBpZiAobV9wZW5kaW5nUmVuZGVyU3RhdGUpCisg
ICAgICAgICAgICBhcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSgpOworCisgICAgICAgIC8vIDYuIElm
IHRoZSBmcmFtZSBzaG91bGQgYmUgcmVuZGVyZWQgZm9yIHNlc3Npb246CisgICAgICAgIGlmIChm
cmFtZVNob3VsZEJlUmVuZGVyZWQoKSkgeworICAgICAgICAgICAgLy8gNi4xLlNldCBzZXNzaW9u
4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3Mg
dG8gYmUgc2Vzc2lvbuKAmXMgbGlzdCBvZiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLgorICAg
ICAgICAgICAgLy8gNi4yLlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGFuaW1hdGlvbiBmcmFtZSBj
YWxsYmFja3MgdG8gdGhlIGVtcHR5IGxpc3QuCisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrcyA9
IG1fY2FsbGJhY2tzOworCisgICAgICAgICAgICAvLyA2LjMuU2V0IGZyYW1l4oCZcyBhY3RpdmUg
Ym9vbGVhbiB0byB0cnVlLgorICAgICAgICAgICAgZnJhbWUtPnNldEFjdGl2ZSh0cnVlKTsKKwor
ICAgICAgICAgICAgLy8gNi40LkFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZyYW1lLgorICAgICAg
ICAgICAgLy8gRklYTUU6IGltcGxlbWVudC4KKworICAgICAgICAgICAgLy8gNi41LkZvciBlYWNo
IGVudHJ5IGluIHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9u
IGZyYW1lIGNhbGxiYWNrcywgaW4gb3JkZXI6CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrIDogY2FsbGJhY2tzKSB7CisgICAgICAgICAgICAgICAgLy8gIDYuNi5JZiB0aGUgZW50cnni
gJlzIGNhbmNlbGxlZCBib29sZWFuIGlzIHRydWUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGVudHJ5
LgorICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjay0+aXNGaXJlZE9yQ2FuY2VsbGVkKCkpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIC8vICA2LjcuSW52
b2tlIHRoZSBXZWIgSURMIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBlbnRyeSwgcGFzc2luZyBub3cg
YW5kIGZyYW1lIGFzIHRoZSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBjYWxsYmFjay0+aGFu
ZGxlRXZlbnQobm93LCBmcmFtZS5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAvLyAgNi44Lklm
IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24sIHJlcG9ydCB0aGUgZXhjZXB0aW9uLgorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLy8gNi45LlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRs
eSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MgdG8gdGhlIGVtcHR5IGxpc3QuCisg
ICAgICAgICAgICBtX2NhbGxiYWNrcy5yZW1vdmVBbGxNYXRjaGluZyhbXShhdXRvJiBjYWxsYmFj
aykgeworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay0+aXNGaXJlZE9yQ2FuY2VsbGVk
KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgLy8gNi4xMC5TZXQgZnJhbWXigJlz
IGFjdGl2ZSBib29sZWFuIHRvIGZhbHNlLgorICAgICAgICAgICAgLy8gSWYgdGhlIHNlc3Npb24g
aXMgZW5kZWQsIG1fYW5pbWF0aW9uRnJhbWUtPnNldEFjdGl2ZSBmYWxzZSBpcyBzZXQgaW4gc2h1
dGRvd24oKS4KKyAgICAgICAgICAgIGZyYW1lLT5zZXRBY3RpdmUoZmFsc2UpOworCisgICAgICAg
ICAgICBpZiAoIW1fY2FsbGJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0
RnJhbWUoKTsKKyAgICAgICAgfQorCisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IDU1NTQzMGM4YzNmNzMxMjMxYWFmNGYwYzNmZmI1ODI5
ZDY5MjliMzYuLmQ4MzYzYTVjOTMxY2Y1MGY3YjZlMzE5YWVlZGIzZThhMjMzNGZlZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAtMzAsNyArMzAs
NyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0
LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUklucHV0U291cmNlQXJy
YXkuaCIKICNpbmNsdWRlICJXZWJYUlJlbmRlclN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViWFJTcGFj
ZS5oIgpAQCAtMTA5LDExICsxMDksMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNodXRkb3duKElu
aXRpYXRlZEJ5U3lzdGVtKTsKICAgICB2b2lkIGRpZENvbXBsZXRlU2h1dGRvd24oKTsKIAotICAg
IHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24o
KTsKLQogICAgIGJvb2wgcmVmZXJlbmNlU3BhY2VJc1N1cHBvcnRlZChYUlJlZmVyZW5jZVNwYWNl
VHlwZSkgY29uc3Q7CiAKKyAgICBib29sIGZyYW1lU2hvdWxkQmVSZW5kZXJlZCgpIGNvbnN0Owor
ICAgIHZvaWQgcmVxdWVzdEZyYW1lKCk7CisgICAgdm9pZCBvbkZyYW1lKFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhJiYpOworICAgIHZvaWQgYXBwbHlQZW5kaW5nUmVuZGVyU3RhdGUoKTsK
KwogICAgIFhSRW52aXJvbm1lbnRCbGVuZE1vZGUgbV9lbnZpcm9ubWVudEJsZW5kTW9kZTsKICAg
ICBYUkludGVyYWN0aW9uTW9kZSBtX2ludGVyYWN0aW9uTW9kZTsKICAgICBYUlZpc2liaWxpdHlT
dGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKQEAgLTEyNiwxMyArMTI4LDE3IEBAIHByaXZhdGU6CiAg
ICAgV2Vha1B0cjxQbGF0Zm9ybVhSOjpEZXZpY2U+IG1fZGV2aWNlOwogICAgIFJlZlB0cjxXZWJY
UlJlbmRlclN0YXRlPiBtX2FjdGl2ZVJlbmRlclN0YXRlOwogICAgIFJlZlB0cjxXZWJYUlJlbmRl
clN0YXRlPiBtX3BlbmRpbmdSZW5kZXJTdGF0ZTsKKyAgICBNb25vdG9uaWNUaW1lIG1fdGltZU9y
aWdpbjsKIAogICAgIHVuc2lnbmVkIG1fbmV4dENhbGxiYWNrSWQgeyAxIH07CiAgICAgVmVjdG9y
PFJlZjxYUkZyYW1lUmVxdWVzdENhbGxiYWNrPj4gbV9jYWxsYmFja3M7Ci0gICAgVmVjdG9yPFJl
ZjxYUkZyYW1lUmVxdWVzdENhbGxiYWNrPj4gbV9ydW5uaW5nQ2FsbGJhY2tzOwogCi0gICAgVGlt
ZXIgbV9hbmltYXRpb25UaW1lcjsKLSAgICBNb25vdG9uaWNUaW1lIG1fbGFzdEFuaW1hdGlvbkZy
YW1lVGltZXN0YW1wOworICAgIGRvdWJsZSBtX21pbmltdW1JbmxpbmVGT1YgeyAwLjAgfTsKKyAg
ICBkb3VibGUgbV9tYXhpbXVtSW5saW5lRk9WIHsgcGlGbG9hdCB9OworCisgICAgLy8gSW4gbWV0
ZXJzLgorICAgIGRvdWJsZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CisgICAgZG91
YmxlIG1fbWF4aW11bUZhckNsaXBQbGFuZSB7IDEwMDAuMCB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNw
cAppbmRleCA1MjUzOGM5Mzk2NzAzZjY5OGVlY2RlMWE1NmEyMTlkN2I5MGVlZTY0Li5jYjUxYWQ2
MWMyMTg3ZGVmMDA3OTI5NjFiOWIzOGRjOTljNDA2MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkpTV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSAiSlNYUlJlZmVyZW5jZVNwYWNlVHlwZS5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKyNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFjay5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBA
IC00OSwxMSArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJYUlN5c3RlbSk7CiAKLVdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmlj
ZTo6RHVtbXlJbmxpbmVEZXZpY2UoKQotewotICAgIHNldEVuYWJsZWRGZWF0dXJlcyhYUlNlc3Np
b25Nb2RlOjpJbmxpbmUsIHsgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlciB9KTsKLX0KLQog
UmVmPFdlYlhSU3lzdGVtPiBXZWJYUlN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViWFJTeXN0ZW0oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwpAQCAtNjEsNiArNTcsNyBAQCBS
ZWY8V2ViWFJTeXN0ZW0+IFdlYlhSU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udAogCiBXZWJYUlN5c3RlbTo6V2ViWFJTeXN0ZW0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICA6IEFjdGl2ZURP
TU9iamVjdCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAsIG1fZGVmYXVsdElubGluZURl
dmljZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewogICAgIG1faW5saW5lWFJEZXZpY2UgPSBt
YWtlV2Vha1B0cihtX2RlZmF1bHRJbmxpbmVEZXZpY2UpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgp
OwpAQCAtNDg2LDYgKzQ4Myw0OSBAQCB2b2lkIFdlYlhSU3lzdGVtOjpzZXNzaW9uRW5kZWQoV2Vi
WFJTZXNzaW9uJiBzZXNzaW9uKQogICAgIG1faW5saW5lU2Vzc2lvbnMucmVtb3ZlKHNlc3Npb24p
OwogfQogCitjbGFzcyBJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayBmaW5hbDog
cHVibGljIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRnVuY3Rpb248dm9pZCgp
PiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5saW5l
UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RG
TW92ZShjYWxsYmFjaykpKTsKKyAgICB9Citwcml2YXRlOgorICAgIElubGluZVJlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKKyAgICAgICAgOiBSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVDYWxsYmFjaygmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksIG1fY2FsbGJh
Y2soV1RGTW92ZShjYWxsYmFjaykpIAorICAgIHsKKyAgICB9CisKKyAgICBDYWxsYmFja1Jlc3Vs
dDx2b2lkPiBoYW5kbGVFdmVudChkb3VibGUpIGZpbmFsCisgICAgeworICAgICAgICBtX2NhbGxi
YWNrKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgRnVuY3Rpb248dm9pZCgp
PiBtX2NhbGxiYWNrOworfTsKKworCitXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OkR1
bW15SW5saW5lRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpCit7CisgICAgc2V0RW5hYmxlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGU6OklubGluZSwg
eyBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyIH0pOworfQorCit2b2lkIFdlYlhSU3lzdGVt
OjpEdW1teUlubGluZURldmljZTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVx
dWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICAvLyBJbmxpbmUgWFIgc2Vzc2lv
bnMgcmVseSBvbiBkb2N1bWVudC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gcGVyZm9ybSB0aGUg
cmVuZGVyIGxvb3AuCisgICAgYXV0byBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gcmFmID0gSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s6
OmNyZWF0ZSgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICB9KTsKKwor
ICAgIGRvY3VtZW50LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmFmKTsKK30KKworCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKaW5kZXggYzc2MmQ0NmFjMGU5MDRhMzk4M2Qz
OTdmNjg2NTYxZDRjMTY1YjM1NS4uYWFlM2NmMjYzNDhmMjExMWJjMWQ1ZWNhOTU1YTI2OTM0YWUz
M2ZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3Rl
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaApAQCAt
MTA2LDExICsxMDYsMTYgQEAgcHJpdmF0ZToKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIu
Z2l0aHViLmlvL3dlYnhyLyNkZWZhdWx0LWlubGluZS14ci1kZXZpY2UKICAgICBjbGFzcyBEdW1t
eUlubGluZURldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRHVtbXlJbmxpbmVEZXZpY2UoKTsKKyAgICAgICAgZXhwbGljaXQgRHVt
bXlJbmxpbmVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6
U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoKSBmaW5hbCB7IH0KKyAgICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3Bh
Y2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH07CisKKyAgICAgICAg
dm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFj
ayYmKSBmaW5hbDsKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgeyBudWxscHRyIH07CiAgICAgfTsKICAgICBEdW1teUlubGluZURldmlj
ZSBtX2RlZmF1bHRJbmxpbmVEZXZpY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJXZWJHTExheWVyLmNwcAppbmRleCA1MTMwZjJlZmNkZmYzYThhMzIxMGExZTFm
NTkxNDg3ZGU1MDU0ZTlhLi4wZTU3M2IyMmQ2NTdmOGVjYWQ1NGRjNzVmYTcwNzU3ODBhMjM0M2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIu
Y3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJI
VE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJPZmZz
Y3JlZW5DYW52YXMuaCIKICNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAi
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjaWYgRU5BQkxFKFdFQkdMMikKQEAgLTE5OCw2ICsy
MDAsMTkgQEAgZG91YmxlIFdlYlhSV2ViR0xMYXllcjo6Z2V0TmF0aXZlRnJhbWVidWZmZXJTY2Fs
ZUZhY3Rvcihjb25zdCBXZWJYUlNlc3Npb24mIHNlc3MKICAgICByZXR1cm4gKG5hdGl2ZVNpemUg
LyByZWNvbW1lbmRlZFNpemUpLndpZHRoKCk7CiB9CiAKK0hUTUxDYW52YXNFbGVtZW50KiBXZWJY
UldlYkdMTGF5ZXI6OmNhbnZhcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9jb250ZXh0LCBbXShjb25zdCBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4mIGJh
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gY2FudmFzID0gYmFzZUNvbnRleHQtPmNhbnZhcygp
OworICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjYW52YXMsIFtdKGNvbnN0IFJlZlB0cjxI
VE1MQ2FudmFzRWxlbWVudD4mIGNhbnZhcykgeworICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy5n
ZXQoKTsKKyAgICAgICAgfSwgW10oY29uc3QgUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4pIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgiYmFzZUxheWVyIG9mIGEgV2ViWFJXZWJHTExh
eWVyIG11c3QgYmUgYW4gSFRNTENhbnZhc0VsZW1lbnQiKTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJXZWJHTExheWVyLmgKaW5kZXggMjFlY2FiMjAzMGUyODM4MjI2ODI3YzNlMDNh
ZWU5MTZlMmVjZmI5MC4uMTA2Y2ViNWZjZDM2NWM3MTY2MmU4NGQwMDFmMTdlMjlhM2ViNmVmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCkBA
IC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTENhbnZh
c0VsZW1lbnQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKIGNsYXNz
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKQEAgLTc0LDYgKzc1LDEwIEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIHsgcmV0dXJuIG1fc2Vzc2lvbjsgfQogCisg
ICAgYm9vbCBpc0NvbXBvc2l0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb21wb3Np
dGlvbkVuYWJsZWQ7IH0KKworICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMoKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBXZWJYUldlYkdMTGF5ZXIoUmVmPFdlYlhSU2Vzc2lvbj4mJiwgV2Vi
WFJSZW5kZXJpbmdDb250ZXh0JiYsIGNvbnN0IFhSV2ViR0xMYXllckluaXQmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkZyYW1lUmVxdWVzdENhbGxiYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSRnJhbWVSZXF1ZXN0Q2FsbGJhY2su
aAppbmRleCA0OGRjZDkzNjRmYjM5YmEzNWE4MjRiMzFlN2UwYmUyZTE2YTFiNzE5Li5lZjNmNjQ2
ZDZkYjViODUzMTM0Mzc4ODc1NzViZWM0YWMxY2UzNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1hSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaApAQCAtNDMsMTIg
KzQzLDEyIEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGNhbGxiYWNrSWQoKSB7IEFTU0VSVCht
X2lkKTsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lkIHNldENhbGxiYWNrSWQodW5zaWduZWQgaWQp
IHsgQVNTRVJUKCFtX2lkKTsgbV9pZCA9IGlkOyB9Ci0gICAgdm9pZCBjYW5jZWwoKSB7IG1fY2Fu
Y2VsbGVkID0gdHJ1ZTsgfQotICAgIGJvb2wgaXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBt
X2NhbmNlbGxlZDsgfQorICAgIHZvaWQgc2V0RmlyZWRPckNhbmNlbGxlZCgpIHsgbV9maXJlZE9y
Q2FuY2VsbGVkID0gdHJ1ZTsgfQorICAgIGJvb2wgaXNGaXJlZE9yQ2FuY2VsbGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9maXJlZE9yQ2FuY2VsbGVkOyB9CiAKIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9pZCB7IDAgfTsKLSAgICBib29sIG1fY2FuY2VsbGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
ZmlyZWRPckNhbmNlbGxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKaW5kZXggYjllZjQ1YzBjNjk3
MTRhZTgzYzcwNDQ1NGQ5NTRiZDUxZWE0NzY2Yi4uNDMyNWYzMzc1Y2YzMDI4YTQ3ZGZmY2M2ZGY1
OWJiNzQzODM1MDBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxh
dGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApA
QCAtMTgsNiArMTgsNyBAQAogICovCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZsb2F0UG9p
bnQzRC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC03NSw2ICs3NiwzMSBAQCBwdWJsaWM6CiAg
ICAgLy8gSWYgdGhpcyBtZXRob2QgcmV0dXJucyB0cnVlLCB0aGF0IG1lYW5zIHRoZSBkZXZpY2Ug
d2lsbCBub3RpZnkgVHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQKICAgICAvLyB3aGVuIHRoZSBw
bGF0Zm9ybSBoYXMgY29tcGxldGVkIGFsbCBzdGVwcyB0byBzaHV0IGRvd24gdGhlIFhSIHNlc3Np
b24uCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVJl
ZmVyZW5jZVNwYWNlKFJlZmVyZW5jZVNwYWNlVHlwZSkgPSAwOworCisgICAgc3RydWN0IEZyYW1l
RGF0YSB7CisgICAgICAgIGxvbmcgcHJlZGljdGVkRGlzcGxheVRpbWU7CisgICAgICAgIHN0cnVj
dCBWaWV3RGF0YSB7CisgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIFdlYkNv
cmU6OkZsb2F0UG9pbnQzRCBwb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgeworICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB4OworICAgICAgICAgICAgICAgICAgICBmbG9hdCB5Owor
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB6OworICAgICAgICAgICAgICAgICAgICBmbG9hdCB3
OworICAgICAgICAgICAgICAgIH0gb3JpZW50YXRpb247CisgICAgICAgICAgICB9IHBvc2U7Cisg
ICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgIGZsb2F0IHJVcDsKKyAgICAgICAg
ICAgICAgICBmbG9hdCByRG93bjsKKyAgICAgICAgICAgICAgICBmbG9hdCByTGVmdDsKKyAgICAg
ICAgICAgICAgICBmbG9hdCByUmlnaHQ7CisgICAgICAgICAgICB9IGZvdjsKKyAgICAgICAgfTsK
KyAgICAgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3UG9zZXM7CisgICAgfTsKKyAgICB1c2luZyBS
ZXF1ZXN0RnJhbWVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRnJhbWVEYXRhJiYpPjsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpID0gMDsKIAog
cHJvdGVjdGVkOgogICAgIERldmljZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAppbmRleCBmZTg2
NWU2NzFkNzA2ODZkZTc5MWYxNDAwZTZjZjNlMmM4NjllYzIyLi5jYzRkNzIxNTNjNmVlYWZkZjIx
NjJlOTg4MmE5ZTA3NzU4YjIxZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCkBAIC0yNjAsMTEgKzI2MCw2IEBA
IE9wZW5YUkRldmljZTo6T3BlblhSRGV2aWNlKFhyU3lzdGVtSWQgaWQsIFhySW5zdGFuY2UgaW5z
dGFuY2UsIFdvcmtRdWV1ZSYgcXVldWUsCiAgICAgfSk7CiB9CiAKLU9wZW5YUkRldmljZTo6fk9w
ZW5YUkRldmljZSgpCi17Ci0gICAgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpOwotfQot
CiBEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJEZXZpY2U6OmVudW1lcmF0ZVJl
ZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mIHNlc3Npb24pIGNvbnN0CiB7CiAgICAgdWludDMyX3Qg
cmVmZXJlbmNlU3BhY2VzQ291bnQ7CkBAIC0zOTUsNiArMzkwLDE2IEBAIFhyVmlld0NvbmZpZ3Vy
YXRpb25UeXBlIHRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUoU2Vzc2lvbk1vZGUgbW9kZSkKICAg
ICByZXR1cm4gWFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9NT05POwogfQogCitz
dGF0aWMgYm9vbCBpc1Nlc3Npb25BY3RpdmUoWHJTZXNzaW9uU3RhdGUgc3RhdGUpCit7CisgICAg
cmV0dXJuIHN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfVklTSUJMRSB8fCBzdGF0ZSA9PSBYUl9T
RVNTSU9OX1NUQVRFX0ZPQ1VTRUQ7Cit9CisKK3N0YXRpYyBib29sIGlzU2Vzc2lvblJlYWR5KFhy
U2Vzc2lvblN0YXRlIHN0YXRlKQoreworICAgIHJldHVybiBzdGF0ZSA+PSBYUl9TRVNTSU9OX1NU
QVRFX1JFQURZICAmJiBzdGF0ZSA8IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkc7Cit9CisKIHZv
aWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1v
ZGUgbW9kZSkKIHsKICAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBtb2RlXSgpIHsKQEAgLTQx
MywxOCArNDE4LDE4NiBAQCB2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiB9CiAKIHZvaWQgT3BlblhSRGV2aWNlOjpyZXNl
dFNlc3Npb24oKQoreworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVl
LnJ1bkxvb3AoKSk7CisgICAgaWYgKG1fc2Vzc2lvbiAhPSBYUl9OVUxMX0hBTkRMRSkgeworICAg
ICAgICB4ckRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lvbik7CisgICAgICAgIG1fc2Vzc2lvbiA9IFhS
X05VTExfSEFORExFOworICAgIH0KKyAgICBtX3Nlc3Npb25TdGF0ZSA9IFhSX1NFU1NJT05fU1RB
VEVfVU5LTk9XTjsKK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OmhhbmRsZVNlc3Npb25TdGF0ZUNo
YW5nZSgpCit7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVu
TG9vcCgpKTsKKyAgICBpZiAobV9zZXNzaW9uU3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9TVE9Q
UElORykgeworICAgICAgICAvLyBUaGUgYXBwbGljYXRpb24gc2hvdWxkIGV4aXQgdGhlIHJlbmRl
ciBsb29wIGFuZCBjYWxsIHhyRW5kU2Vzc2lvbgorICAgICAgICBlbmRTZXNzaW9uKCk7CisgICAg
fSBlbHNlIGlmIChtX3Nlc3Npb25TdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1JFQURZKSB7Cisg
ICAgICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBpcyByZWFkeSB0byBjYWxsIHhyQmVnaW5TZXNzaW9u
LgorICAgICAgICBiZWdpblNlc3Npb24oKTsKKyAgICB9Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNl
OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKIHsKICAgICBtX3F1ZXVlLmRpc3BhdGNo
KFt0aGlzXSgpIHsKICAgICAgICAgaWYgKG1fc2Vzc2lvbiA9PSBYUl9OVUxMX0hBTkRMRSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgeHJEZXN0cm95U2Vzc2lvbihtX3Nlc3Npb24pOwot
ICAgICAgICBtX3Nlc3Npb24gPSBYUl9OVUxMX0hBTkRMRTsKKworICAgICAgICAvLyB4clJlcXVl
c3RFeGl0U2Vzc2lvbigpIHdpbGwgdHJhbnNpdGlvbiB0aGUgc2Vzc2lvbiB0byBTVE9QUEVEIHN0
YXRlLgorICAgICAgICAvLyBJZiB0aGUgc2Vzc2lvbiB3YXMgbm90IHJ1bm5pbmcgd2UgaGF2ZSB0
byByZXNldCB0aGUgc2Vzc2lvbiBvdXJzZWx2ZXMuCisgICAgICAgIGlmIChYUl9GQUlMRUQoeHJS
ZXF1ZXN0RXhpdFNlc3Npb24obV9zZXNzaW9uKSkpIHsKKyAgICAgICAgICAgIHJlc2V0U2Vzc2lv
bigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gT3BlblhS
IG5lZWRzIHRvIHdhaXQgZm9yIHRoZSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HIHN0YXRlIHRv
IHByb3Blcmx5IGVuZCB0aGUgc2Vzc2lvbi4KKyAgICAgICAgd2FpdFVudGlsU3RvcHBpbmcoKTsK
ICAgICB9KTsKIH0KIAotdm9pZCBPcGVuWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKQordm9pZCBPcGVuWFJEZXZpY2U6OndhaXRVbnRpbFN0b3BwaW5nKCkKIHsKKyAgICBB
U1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOworICAgIHBv
bGxFdmVudHMoKTsKKyAgICBpZiAobV9zZXNzaW9uU3RhdGUgPj0gWFJfU0VTU0lPTl9TVEFURV9T
VE9QUElORykKKyAgICAgICAgcmV0dXJuOworICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXNdKCkg
eworICAgICAgICB3YWl0VW50aWxTdG9wcGluZygpOworICAgIH0pOworfQorCit2b2lkIE9wZW5Y
UkRldmljZTo6cG9sbEV2ZW50cygpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cisg
ICAgYXV0byBydW50aW1lRXZlbnQgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJFdmVudERhdGFCdWZmZXIs
IFhSX1RZUEVfRVZFTlRfREFUQV9CVUZGRVI+KCk7CisgICAgd2hpbGUgKHhyUG9sbEV2ZW50KG1f
aW5zdGFuY2UsICZydW50aW1lRXZlbnQpID09IFhSX1NVQ0NFU1MpIHsKKyAgICAgICAgc3dpdGNo
IChydW50aW1lRXZlbnQudHlwZSkgeworICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9T
RVNTSU9OX1NUQVRFX0NIQU5HRUQ6IHsKKyAgICAgICAgICAgIGF1dG8qIGV2ZW50ID0gKFhyRXZl
bnREYXRhU2Vzc2lvblN0YXRlQ2hhbmdlZCopJnJ1bnRpbWVFdmVudDsKKyAgICAgICAgICAgIG1f
c2Vzc2lvblN0YXRlID0gZXZlbnQtPnN0YXRlOworICAgICAgICAgICAgaGFuZGxlU2Vzc2lvblN0
YXRlQ2hhbmdlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IFhSX1RZUEVfRVZFTlRfREFUQV9FVkVOVFNfTE9TVDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VW
RU5UX0RBVEFfSU5TVEFOQ0VfTE9TU19QRU5ESU5HOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZF
TlRfREFUQV9SRUZFUkVOQ0VfU1BBQ0VfQ0hBTkdFX1BFTkRJTkc6CisgICAgICAgIGNhc2UgWFJf
VFlQRV9FVkVOVF9EQVRBX0lOVEVSQUNUSU9OX1BST0ZJTEVfQ0hBTkdFRDoKKyAgICAgICAgY2Fz
ZSBYUl9UWVBFX0VWRU5UX0RBVEFfTUFJTl9TRVNTSU9OX1ZJU0lCSUxJVFlfQ0hBTkdFRF9FWFRY
OgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9WSVNJQklMSVRZX01BU0tfQ0hBTkdF
RF9LSFI6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1BFUkZfU0VUVElOR1NfRVhU
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoIlVuaGFuZGxlZCBldmVudCB0eXBlICVkXG4iLCBydW50aW1lRXZlbnQu
dHlwZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1hyUmVzdWx0IE9wZW5YUkRldmljZTo6YmVn
aW5TZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
bV9zZXNzaW9uU3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSk7CisKKyAgICBhdXRvIHNl
c3Npb25CZWdpbkluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTZXNzaW9uQmVnaW5JbmZvLCBYUl9U
WVBFX1NFU1NJT05fQkVHSU5fSU5GTz4oKTsKKyAgICBzZXNzaW9uQmVnaW5JbmZvLnByaW1hcnlW
aWV3Q29uZmlndXJhdGlvblR5cGUgPSBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZ
X1NURVJFTzsKKyAgICBhdXRvIHJlc3VsdCA9IHhyQmVnaW5TZXNzaW9uKG1fc2Vzc2lvbiwgJnNl
c3Npb25CZWdpbkluZm8pOworI2lmICFMT0dfRElTQUJMRUQKKyAgICBpZiAoWFJfRkFJTEVEKHJl
c3VsdCkpCisgICAgICAgIExPRyhYUiwgIiVzICVzOiAlc1xuIiwgX19mdW5jX18sICJ4ckJlZ2lu
U2Vzc2lvbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgbV9pbnN0YW5jZSkudXRmOCgpLmRhdGEo
KSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIE9wZW5YUkRldmljZTo6
ZW5kU2Vzc2lvbigpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lvbiAhPSBYUl9OVUxMX0hBTkRMRSk7
CisgICAgeHJFbmRTZXNzaW9uKG1fc2Vzc2lvbik7CiAgICAgcmVzZXRTZXNzaW9uKCk7CisgICAg
aWYgKCFtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBOb3RpZnkgZGlkIGVuZCBldmVudAorICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdD
bGllbnQpCisgICAgICAgICAgICBtX3RyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50LT5zZXNzaW9u
RGlkRW5kKCk7CisgICAgfSk7Cit9CisKKworRGV2aWNlOjpGcmFtZURhdGE6OlZpZXdEYXRhIHhy
Vmlld1RvVmlld0RhdGEoWHJWaWV3IHZpZXcpCit7CisgICAgRGV2aWNlOjpGcmFtZURhdGE6OlZp
ZXdEYXRhIGRhdGE7CisgICAgZGF0YS5mb3YgPSB7IHZpZXcuZm92LmFuZ2xlVXAsIHZpZXcuZm92
LmFuZ2xlRG93biwgdmlldy5mb3YuYW5nbGVMZWZ0LCB2aWV3LmZvdi5hbmdsZVJpZ2h0IH07Cisg
ICAgZGF0YS5wb3NlLm9yaWVudGF0aW9uID0geyB2aWV3LnBvc2Uub3JpZW50YXRpb24ueCwgdmll
dy5wb3NlLm9yaWVudGF0aW9uLnksIHZpZXcucG9zZS5vcmllbnRhdGlvbi56LCB2aWV3LnBvc2Uu
b3JpZW50YXRpb24udyB9OworICAgIGRhdGEucG9zZS5wb3NpdGlvbiA9IHsgdmlldy5wb3NlLnBv
c2l0aW9uLngsIHZpZXcucG9zZS5wb3NpdGlvbi55LCB2aWV3LnBvc2UucG9zaXRpb24ueiB9Owor
ICAgIHJldHVybiBkYXRhOworfQorCit2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJl
cXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9xdWV1ZS5kaXNwYXRjaChb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
cG9sbEV2ZW50cygpOworICAgICAgICBpZiAoIWlzU2Vzc2lvblJlYWR5KG1fc2Vzc2lvblN0YXRl
KSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAvLyBEZXZpY2Ugbm90IHJlYWR5
IG9yIHN0b3BwaW5nLiBSZXBvcnQgZnJhbWVEYXRhIHdpdGggaW52YWxpZCB0cmFja2luZy4KKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGZyYW1lU3RhdGUgPSBjcmVhdGVT
dHJ1Y3R1cmU8WHJGcmFtZVN0YXRlLCBYUl9UWVBFX0ZSQU1FX1NUQVRFPigpOworICAgICAgICBh
dXRvIGZyYW1lV2FpdEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZVdhaXRJbmZvLCBYUl9U
WVBFX0ZSQU1FX1dBSVRfSU5GTz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB4cldhaXRGcmFt
ZShtX3Nlc3Npb24sICZmcmFtZVdhaXRJbmZvLCAmZnJhbWVTdGF0ZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9GQUlMRUQocmVzdWx0LCAieHJXYWl0RnJhbWUiLCBtX2luc3RhbmNlKTsKKyAgICAgICAg
WHJUaW1lIHByZWRpY3RlZFRpbWUgPSBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOwor
CisgICAgICAgIGF1dG8gZnJhbWVCZWdpbkluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZUJl
Z2luSW5mbywgWFJfVFlQRV9GUkFNRV9CRUdJTl9JTkZPPigpOworICAgICAgICByZXN1bHQgPSB4
ckJlZ2luRnJhbWUobV9zZXNzaW9uLCAmZnJhbWVCZWdpbkluZm8pOworICAgICAgICBSRVRVUk5f
SUZfRkFJTEVEKHJlc3VsdCwgInhyQmVnaW5GcmFtZSIsIG1faW5zdGFuY2UpOworCisgICAgICAg
IERldmljZTo6RnJhbWVEYXRhIGZyYW1lRGF0YTsKKyAgICAgICAgZnJhbWVEYXRhLnByZWRpY3Rl
ZERpc3BsYXlUaW1lID0gZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZTsKKworICAgICAg
ICBpZiAoaXNTZXNzaW9uQWN0aXZlKG1fc2Vzc2lvblN0YXRlKSkgeworICAgICAgICAgICAgQVNT
RVJUKG1fY29uZmlndXJhdGlvblZpZXdzLmNvbnRhaW5zKG1fY3VycmVudFZpZXdDb25maWd1cmF0
aW9uVHlwZSkpOworICAgICAgICAgICAgY29uc3QgYXV0byYgY29uZmlndXJhdGlvblZpZXcgPSBt
X2NvbmZpZ3VyYXRpb25WaWV3cy5nZXQobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBlKTsK
KworICAgICAgICAgICAgYXV0byB2aWV3TG9jYXRlSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclZp
ZXdMb2NhdGVJbmZvLCBYUl9UWVBFX1ZJRVdfTE9DQVRFX0lORk8+KCk7CisgICAgICAgICAgICB2
aWV3TG9jYXRlSW5mby5kaXNwbGF5VGltZSA9IHByZWRpY3RlZFRpbWU7CisgICAgICAgICAgICAv
LyBGSVhNRTogdXNlIHRoZSBjdXJyZW50IHJlZmVyZW5jZSBzcGFjZS4KKyAgICAgICAgICAgIC8v
IHZpZXdMb2NhdGVJbmZvLnNwYWNlID0gbV9sb2NhbFNwYWNlOworCisgICAgICAgICAgICB1aW50
MzJfdCB2aWV3Q291bnQgPSBjb25maWd1cmF0aW9uVmlldy5zaXplKCk7CisgICAgICAgICAgICBW
ZWN0b3I8WHJWaWV3PiB2aWV3cyh2aWV3Q291bnQsIFtdIHsKKyAgICAgICAgICAgICAgICBYclZp
ZXcgb2JqZWN0OworICAgICAgICAgICAgICAgIHN0ZDo6bWVtc2V0KCZvYmplY3QsIDAsIHNpemVv
ZihYclZpZXcpKTsKKyAgICAgICAgICAgICAgICBvYmplY3QudHlwZSA9IFhSX1RZUEVfVklFVzsK
KyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OworICAgICAgICAgICAgfSgpKTsKKworICAg
ICAgICAgICAgYXV0byB2aWV3U3RhdGUgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJWaWV3U3RhdGUsIFhS
X1RZUEVfVklFV19TVEFURT4oKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHZpZXdDb3VudE91dHB1
dDsKKyAgICAgICAgICAgIHJlc3VsdCA9IHhyTG9jYXRlVmlld3MobV9zZXNzaW9uLCAmdmlld0xv
Y2F0ZUluZm8sICZ2aWV3U3RhdGUsIHZpZXdDb3VudCwgJnZpZXdDb3VudE91dHB1dCwgdmlld3Mu
ZGF0YSgpKTsKKyAgICAgICAgICAgIGlmICghWFJfRkFJTEVEKHJlc3VsdCkpIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHZpZXcgOiB2aWV3cykKKyAgICAgICAgICAgICAgICAgICAgZnJh
bWVEYXRhLnZpZXdQb3Nlcy5hcHBlbmQoeHJWaWV3VG9WaWV3RGF0YSh2aWV3KSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtmcmFtZURhdGEg
PSBXVEZNb3ZlKGZyYW1lRGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGZyYW1lRGF0YSkpOworICAgICAg
ICB9KTsKKworICAgICAgICBhdXRvIGZyYW1lRW5kSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZy
YW1lRW5kSW5mbywgWFJfVFlQRV9GUkFNRV9FTkRfSU5GTz4oKTsKKyAgICAgICAgZnJhbWVFbmRJ
bmZvLmRpc3BsYXlUaW1lID0gcHJlZGljdGVkVGltZTsKKyAgICAgICAgZnJhbWVFbmRJbmZvLmVu
dmlyb25tZW50QmxlbmRNb2RlID0gWFJfRU5WSVJPTk1FTlRfQkxFTkRfTU9ERV9PUEFRVUU7Cisg
ICAgICAgIGZyYW1lRW5kSW5mby5sYXllckNvdW50ID0gMDsKKyAgICAgICAgcmVzdWx0ID0geHJF
bmRGcmFtZShtX3Nlc3Npb24sICZmcmFtZUVuZEluZm8pOworICAgICAgICBSRVRVUk5fSUZfRkFJ
TEVEKHJlc3VsdCwgInhyRW5kRnJhbWUiLCBtX2luc3RhbmNlKTsKKyAgICB9KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgUGxhdGZvcm1YUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKaW5kZXggYWEyZjc4MGVmOTEyOTYyMGY0NDEy
ZGI0OWEwZThhMDQyZDU4YjUyOS4uNWJlYmU2OTY2OTMyN2RiMmM4MTViNTU2YWVkZDFjYTk5YjQ2
ZTE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5oCkBAIC00NCw3ICs0NCw2IEBAIG5hbWVzcGFjZSBQbGF0Zm9ybVhSIHsK
IGNsYXNzIE9wZW5YUkRldmljZSBmaW5hbCA6IHB1YmxpYyBEZXZpY2UgewogcHVibGljOgogICAg
IE9wZW5YUkRldmljZShYclN5c3RlbUlkLCBYckluc3RhbmNlLCBXb3JrUXVldWUmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIH5PcGVuWFJEZXZpY2UoKTsKICAgICBYclN5c3Rl
bUlkIHhyU3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAKIHByaXZhdGU6
CkBAIC01MiwxMyArNTEsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RDb25maWd1cmF0
aW9uVmlld3MoKTsKIAogICAgIExpc3RPZkVuYWJsZWRGZWF0dXJlcyBlbnVtZXJhdGVSZWZlcmVu
Y2VTcGFjZXMoWHJTZXNzaW9uJikgY29uc3Q7CisgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNl
U3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH07CiAKICAgICBXZWJDb3JlOjpJbnRT
aXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSkgZmluYWw7CiAKICAgICB2b2lk
IGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSkgZmluYWw7CiAgICAg
dm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7CisgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2b2lkIHdhaXRVbnRpbFN0b3BwaW5nKCk7CiAKKyAgICB2b2lkIHBvbGxFdmVu
dHMoKTsKKyAgICBYclJlc3VsdCBiZWdpblNlc3Npb24oKTsKKyAgICB2b2lkIGVuZFNlc3Npb24o
KTsKICAgICB2b2lkIHJlc2V0U2Vzc2lvbigpOworICAgIHZvaWQgaGFuZGxlU2Vzc2lvblN0YXRl
Q2hhbmdlKCk7CisKKyAgICB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYm
KSBmaW5hbDsKIAogICAgIHVzaW5nIFZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllc01hcCA9IEhh
c2hNYXA8WHJWaWV3Q29uZmlndXJhdGlvblR5cGUsIFhyVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0
aWVzLCBJbnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFz
aFRyYWl0czxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4+OwogICAgIFZpZXdDb25maWd1cmF0aW9u
UHJvcGVydGllc01hcCBtX3ZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllczsKQEAgLTY4LDYgKzc2
LDcgQEAgcHJpdmF0ZToKICAgICBYclN5c3RlbUlkIG1fc3lzdGVtSWQ7CiAgICAgWHJJbnN0YW5j
ZSBtX2luc3RhbmNlOwogICAgIFhyU2Vzc2lvbiBtX3Nlc3Npb24geyBYUl9OVUxMX0hBTkRMRSB9
OworICAgIFhyU2Vzc2lvblN0YXRlIG1fc2Vzc2lvblN0YXRlIHsgWFJfU0VTU0lPTl9TVEFURV9V
TktOT1dOIH07CiAKICAgICBXb3JrUXVldWUmIG1fcXVldWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAppbmRleCBhNDdjMWVjYTdkZWRjZWRhNTA1MGFkOTdi
YzQ3ZDg1NjViYTU5MGVmLi41NDAxOGRhN2ViYjUzZGQ1MTk0MmRlNzY2MTQ5NjcyZmYxYWM4NDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCkBAIC0zMSwx
NCArMzEsMjggQEAKICNpbmNsdWRlICJET01Qb2ludFJlYWRPbmx5LmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgRmFrZVhSRnJhbWVUaW1lID0gMTVfbXM7
CisKIHZvaWQgRmFrZVhSVmlldzo6c2V0RmllbGRPZlZpZXcoRmFrZVhSVmlld0luaXQ6OkZpZWxk
T2ZWaWV3SW5pdCBmb3YpCiB7CiAgICAgbV9mb3YgPSBmb3Y7CiB9CiAKK1NpbXVsYXRlZFhSRGV2
aWNlOjpTaW11bGF0ZWRYUkRldmljZSgpCisgICAgOiBtX2ZyYW1lVGltZXIoKnRoaXMsICZTaW11
bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKQoreworICAgIG1fc3VwcG9ydHNPcmllbnRh
dGlvblRyYWNraW5nID0gdHJ1ZTsKK30KKworU2ltdWxhdGVkWFJEZXZpY2U6On5TaW11bGF0ZWRY
UkRldmljZSgpCit7CisgICAgc3RvcFRpbWVyKCk7Cit9CisKIHZvaWQgU2ltdWxhdGVkWFJEZXZp
Y2U6OnNpbXVsYXRlU2h1dGRvd25Db21wbGV0ZWQoKQogewogICAgIGlmIChtX3RyYWNraW5nQW5k
UmVuZGVyaW5nQ2xpZW50KQpAQCAtNDksNiArNjMsMjcgQEAgdm9pZCBTaW11bGF0ZWRYUkRldmlj
ZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCiB7CiAgICAgaWYgKG1fc3VwcG9ydHNT
aHV0ZG93bk5vdGlmaWNhdGlvbikKICAgICAgICAgc2ltdWxhdGVTaHV0ZG93bkNvbXBsZXRlZCgp
OworICAgIHN0b3BUaW1lcigpOworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzdG9wVGlt
ZXIoKQoreworICAgIGlmIChtX2ZyYW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9mcmFt
ZVRpbWVyLnN0b3AoKTsKK30KKwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZp
cmVkKCkKK3sKKyAgICBhdXRvIGNhbGxiYWNrcyA9IFdURk1vdmUobV9jYWxsYmFja3MpOworICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNrKHsgfSk7
Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVD
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fY2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNh
bGxiYWNrKSk7CisgICAgaWYgKCFtX2ZyYW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9m
cmFtZVRpbWVyLnN0YXJ0T25lU2hvdChGYWtlWFJGcmFtZVRpbWUpOwogfQogCiBXZWJGYWtlWFJE
ZXZpY2U6OldlYkZha2VYUkRldmljZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1dlYkZha2VYUkRldmljZS5oCmluZGV4IDg0N2JiY2IxNzQ0ODQ0OGYwZWM3ZThjZWIxYjZmZDZl
OWZhYzk1ODguLjM5MWJmYzM0N2VlZjlhYWFmMTdiZDJiYThiNmJhNDM2ZjAwMDQ2ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaApAQCAtNjMsNyArNjMsOCBAQCBw
cml2YXRlOgogY2xhc3MgU2ltdWxhdGVkWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1Y
Ujo6RGV2aWNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBT
aW11bGF0ZWRYUkRldmljZSgpIHsgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJhY2tpbmcgPSB0cnVl
OyB9CisgICAgU2ltdWxhdGVkWFJEZXZpY2UoKTsKKyAgICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsK
ICAgICB2b2lkIHNldE5hdGl2ZUJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2lu
dD4gZ2VvbWV0cnkpIHsgbV9uYXRpdmVCb3VuZHNHZW9tZXRyeSA9IGdlb21ldHJ5OyB9CiAgICAg
dm9pZCBzZXRWaWV3ZXJPcmlnaW4oUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2lu
KSB7IG1fdmlld2VyT3JpZ2luID0gV1RGTW92ZShvcmlnaW4pOyB9CiAgICAgdm9pZCBzZXRGbG9v
ck9yaWdpbihSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvcmlnaW4pIHsgbV9mbG9vck9y
aWdpbiA9IFdURk1vdmUob3JpZ2luKTsgfQpAQCAtNzUsMTIgKzc2LDIwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGUpIGZpbmFsIHsgfQogICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb247IH0KKyAg
ICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFj
ZVR5cGUpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYpIGZpbmFsOworCisgICAgdm9pZCBzdG9wVGltZXIoKTsKKyAgICB2b2lkIGZyYW1lVGlt
ZXJGaXJlZCgpOworCiAgICAgT3B0aW9uYWw8VmVjdG9yPEZha2VYUkJvdW5kc1BvaW50Pj4gbV9u
YXRpdmVCb3VuZHNHZW9tZXRyeTsKICAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV92
aWV3ZXJPcmlnaW47CiAgICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fZmxvb3JPcmln
aW47CiAgICAgYm9vbCBtX2VtdWxhdGVkUG9zaXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxS
ZWY8RmFrZVhSVmlldz4+IG1fdmlld3M7CiAgICAgYm9vbCBtX3N1cHBvcnRzU2h1dGRvd25Ob3Rp
ZmljYXRpb24geyBmYWxzZSB9OworICAgIFRpbWVyIG1fZnJhbWVUaW1lcjsKKyAgICBWZWN0b3I8
UmVxdWVzdEZyYW1lQ2FsbGJhY2s+IG1fY2FsbGJhY2tzOwogfTsKIAogY2xhc3MgV2ViRmFrZVhS
RGV2aWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRmFrZVhSRGV2aWNlPiB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZTc5MmRkNDE0ZTZiYmQ0OThhOWU5ZGVkMWVjNmMyZTQ1N2ZiMGUzZC4uOGY5OTA0ZmJlNmRi
NTMxMzUzMWM1ZTU3YTQwZjY0ZDMyNjYxNTE1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIx
LTAyLTAzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0
ZSBYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUv
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUGVybWlzc2lvbiByZXF1ZXN0IEFQSSBmb3IgTWVk
aWFLZXlTeXN0ZW0gYWNjZXNzIHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmlu
ZGV4IDJhMTAxMzUwNTRlNjM0NTVkNGI1ZjRlM2JkYTMwYzRjNjVmMGUyYTYuLmI0MDVlNTI1ZmRi
OTM3NjRjM2ViMjg5N2M0YWIwMjQxMjNhZTU4ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTAzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8
c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdh
bGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25G
cmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRW5hYmxlIFhSU2Vzc2lvbiBSQUYgdGVzdHMuCisKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1l
c3RhbXAuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMS0wMi0wOSAgTWFudWVsIFJl
Z28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBBbGxvdyBzZW5kaW5n
IG1vZGlmaWVyIGtleXMgaW4gdGVzdF9kcml2ZXIuc2VuZF9rZXlzKCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25f
cmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjU4YTQyM2ZjNmIxOTgxMTI5MzViZmYyOTA3Mjc4ZmRhOTRmY2M1NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFhSRnJhbWUgZ2V0Vmlld2VyUG9zZSB1cGRh
dGVzIG9uIHRoZSBuZXh0IGZyYW1lIGZvciBpbW1lcnNpdmUKK1BBU1MgWFJGcmFtZSBnZXRWaWV3
ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIG5vbi1pbW1lcnNpdmUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjNDgxZDI0NjYxNzg3
MTAyMTBmNjkyMDk1YWZkM2NjZTY2YzIzMzkzLi5iMDcwMTZhZTA2NzJkOTYyZmMyZjYyMjBjMGFk
ZWRmMjY2MTFlMTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtNjQwLDYgKzY0MCw3IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgd2Via2l0Lm9yZy9iLzIx
NTYzNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyCiB3ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X2NhbmNlbEFuaW1hdGlvbkZyYW1lX2ludmFsaWRoYW5kbGUuaHR0cHMuaHRtbCBbIFBhc3MgXQog
d2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdl
YmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2NhbGxiYWNrX2NhbGxzLmh0dHBzLmh0bWwg
WyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Vi
a2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
U2Vzc2lvbl9yZXF1ZXN0UmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX2F2YWlsYWJp
bGl0eS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5lc3MuaHR0cHMud2lu
ZG93Lmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419713</attachid>
            <date>2021-02-09 07:13:00 -0800</date>
            <delta_ts>2021-02-10 09:50:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220979-20210209161258.patch</filename>
            <type>text/plain</type>
            <size>47777</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTZjOGExMDY3YzNjZTFm
NGQxZTE3OTdiMjYyNjQwMzEyNDk2OGMxNy4uMWQ4OTczZjNiYmI4MzVmMTliYTZiODM4MTI0Yjlm
NmI5MjU3MDgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBsZW1lbnQgdGhlIHJlbmRlciBsb29w
IGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBYUiBzZXNzaW9ucy4KKyAgICAgICAgLSBJbXBsZW1l
bnQgV2ViWFIgcmVuZGVyIHN0YXRlIHVwZGF0ZXMuCisgICAgICAgIC0gQ3JlYXRlIHRoZSBGcmFt
ZURhdGEgc3RydWN0IHVzZWQgdG8gcXVlcnkgZnJhbWUgc3BlY2lmaWMgZGF0YSBmcm9tIFhSIGRl
dmljZXMuCisgICAgICAgIC0gVXNlIHdpbmRvdyBSQUYgZm9yIGlubGluZSBYUiBzZXNzaW9ucy4K
KyAgICAgICAgLSBJbXBsZW1lbnQgV2ViRmFrZVhSRGV2aWNlIHRlc3RpbmcgcmVuZGVyaW5nIGxv
b3AgdXNpbmcgYSB0aW1lci4KKyAgICAgICAgLSBJbXBsZW1lbnQgT3BlblhSIHNlc3Npb24gc3Rh
dGVzIGFuZCBzZXNzaW9uIHRyYWNraW5nLgorICAgICAgICAtIEltcHJvdmUgT3BlblhSIGV2ZW50
IGhhbmRsaW5nLgorCisgICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgcGxhdGZvcm0gdGVzdHMu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOiBBZGQgbV9hY3RpdmUs
IG1fdGltZSBhbmQgbV9zZXNzaW9uIG1lbWJlcnMKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJh
bWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSRnJhbWU6OnNldFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2V0
QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmlzQWN0aXZlIGNvbnN0KToK
KworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oOiBBZGQgbV9jb21w
b3NpdGlvbkRpc2FibGVkIG1lbWJlciBhbmQgb3V0cHV0IGNhbnZhcyBzZXR0ZXIKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldE91dHB1dENhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlJlbmRlclN0YXRlOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQp
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJT
ZXNzaW9uOjpXZWJYUlNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpp
bml0aWFsaXplKTogcmVxdWlyZWQgdG8gY3JlYXQgdGhlIFhSRnJhbWUgd2l0aCBtYWtlUmVmKHRo
aXMpCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFj
ZSk6IGltcGxlbWVudCByZWZlcmVuY2Ugc3BhY2UgY3JlYXRpb24KKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKTogaW1wbGVtZW50IHJlbmRlciBs
b29wIGZvciBpbW1lcnNpdmUgYW5kIGlubGluZSBzZXNzaW9ucworICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSk6IGltcGxlbWVudCBXZWJYUiBy
ZW5kZXIgc3RhdGUgdXBkYXRlcworICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpmcmFt
ZVNob3VsZEJlUmVuZGVyZWQgY29uc3QpOiBhZGQgY2hlY2sgYmFzZWQgb24gdGhlIHNwZWMgCisg
ICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSk6IGltcGxlbWVudCBo
ZWxwZXIgZnVuY3Rpb24gdG8gZGlzcGF0Y2ggYSBmcmFtZSByZXF1ZXN0IHRvIFhSIGRldmljZXMK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6b25GcmFtZSk6IHByb2Nlc3MgdGhlIFhS
IGZyYW1lIGFuZCBjYWxsIHRoZSBSQUYgY2FsbGJhY2tzCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
Y3BwOiBJbXBsZW1lbnQgcmVuZGVyIGxvb3AgdXNpbmcgd2luZG93IHJhZiBsb29wLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OldlYlhSU3lzdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZpY2UpOiBBZGQg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dAorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1
bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOiBBZGFwdCB0byB0aGUgbmV3IGludGVyZmFj
ZQorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
V2ViR0xMYXllcjo6Y2FudmFzIGNvbnN0KTogSW1wbGVtZW50IGNhbnZhcyBnZXR0ZXIKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJXZWJHTExheWVyOjpjb21wb3NpdGlvbkRpc2FibGVkIGNvbnN0KTogYWRkCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUldlYkdMTGF5ZXI6OnNldENvbXBvc2l0aW9uRGlzYWJsZWQpOiBhZGQK
KworICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDogQWRkIEZyYW1lRGF0YSBzdHJ1
Y3QKKworICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcDog
SW1wbGVtZW50IHJlbmRlciBsb29wIHVzaW5nIE9wZW5YUiBBUEkKKyAgICAgICAgKFBsYXRmb3Jt
WFI6Ok9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnBvbGxFdmVudHMpOiBJbXBsZW1lbnQgZXZlbnQgbG9vcCB0
byBxdWVyeSBtX3Nlc3Npb25TdGF0ZQorICAgICAgICAoUGxhdGZvcm1YUjo6c2Vzc2lvbklzQWN0
aXZlKTogYWRkCisgICAgICAgIChQbGF0Zm9ybVhSOjpzZXNzaW9uSXNSdW5uaW5nKTogYWRkCisg
ICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmJlZ2luU2Vzc2lvbik6CisgICAgICAg
IChQbGF0Zm9ybVhSOjp4clZpZXdUb1ZpZXdEYXRhKTogaGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZl
cnQgZGF0YSBmcm9tIE9wZW5YUgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpy
ZXF1ZXN0RnJhbWUpOiBzdGFydCBPcGVuWFIgZnJhbWUsIHF1ZXJ5IHBvc2UgYW5kIHZpZXcgZGF0
YSAKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6d2FpdFVudGlsU3RvcHBpbmcp
OiBwcm9wZXJseSB3YWl0IGZvciBPcGVuWFIgZXZlbnQgYmVmb3JlIGVuZGluZyB0aGUgc2Vzc2lv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOgorCisK
KyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IEltcGxlbWVudCByZW5kZXIg
bG9vcCB1c2luZyBhIHRpbWVyCisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6
U2ltdWxhdGVkWFJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6
On5TaW11bGF0ZWRYUkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmlj
ZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11
bGF0ZWRYUkRldmljZTo6c3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhS
RGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJE
ZXZpY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
aDoKKwogMjAyMS0wMi0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CiAKICAgICAgICAgUGVybWlzc2lvbiByZXF1ZXN0IEFQSSBmb3IgTWVkaWFLZXlTeXN0ZW0gYWNj
ZXNzIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
CmluZGV4IDkzNWRjMTI3YzlkMDdhN2M4ZDIzODQxNTQ1ODdkNTEzNTg4N2FlMWEuLmYyNzg3NjFi
MGE3YjdkMjlkMTc5NDIyMzUwYTJhYTE5OGEyM2JkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtNDgsMTAgKzQ4LDYgQEAgV2ViWFJGcmFtZTo6
V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCiAKIFdlYlhSRnJhbWU6On5X
ZWJYUkZyYW1lKCkgPSBkZWZhdWx0OwogCi1jb25zdCBXZWJYUlNlc3Npb24mIFdlYlhSRnJhbWU6
OnNlc3Npb24oKSBjb25zdAotewotICAgIHJldHVybiBtX3Nlc3Npb247Ci19CiAKIFJlZlB0cjxX
ZWJYUlZpZXdlclBvc2U+IFdlYlhSRnJhbWU6OmdldFZpZXdlclBvc2UoY29uc3QgV2ViWFJSZWZl
cmVuY2VTcGFjZSYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5o
CmluZGV4IDgwOGE2NzY0ZjBkMmM1YWU2MWU0ZDY1OGMyODI1MDU3OWZlNWI2MjcuLjJhMjZhZDg2
YTJjMzBkYThjMjNkZmI2YzdiYmI5MDM4MmQxMmUwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VC
WFIpCiAKKyNpbmNsdWRlICJET01IaWdoUmVzVGltZVN0YW1wLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgpAQCAtNDYsMTQgKzQ3LDIwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYlhSRnJh
bWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKICAgICB+V2ViWFJGcmFtZSgpOwogCi0g
ICAgY29uc3QgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3Q7CisgICAgY29uc3QgV2ViWFJT
ZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAKICAg
ICBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJl
bmNlU3BhY2UmKTsKICAgICBSZWZQdHI8V2ViWFJQb3NlPiBnZXRQb3NlKGNvbnN0IFdlYlhSU3Bh
Y2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CiAKKyAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJlc1Rp
bWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KKyAgICB2b2lkIHNldEFjdGl2ZShib29s
IGFjdGl2ZSkgeyBtX2FjdGl2ZSA9IGFjdGl2ZTsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2ZTsgfQorCiBwcml2YXRlOgotICAgIFdlYlhSRnJhbWUoUmVmPFdl
YlhSU2Vzc2lvbj4mJik7CisgICAgZXhwbGljaXQgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9u
PiYmKTsKIAorICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OworICAgIERPTUhpZ2hSZXNUaW1l
U3RhbXAgbV90aW1lOwogICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKaW5kZXgg
MWU0MzYzZjFmMTk0MzFlNGExZWM5NThmMWJmYTJiNDcwNzQ1NzdhMi4uZGMwZGU0YTY1ZDE0ZjE2
MTA2M2ZlNWZiZmY5NDlkYWI2YjA1MjJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmgKQEAgLTU2LDYgKzU2LDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEJhc2VMYXllcihXZWJYUldlYkdMTGF5ZXIqIGJhc2VMYXllcikgeyBtX2Jhc2VM
YXllciA9IGJhc2VMYXllcjsgfQogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIG91dHB1dENhbnZh
cygpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Q2FudmFzLmdldCgpOyB9CisgICAgdm9pZCBzZXRP
dXRwdXRDYW52YXMoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcykgeyBtX291dHB1dENhbnZhcyA9
IG1ha2VXZWFrUHRyKGNhbnZhcyk7IH0KKworICAgIGJvb2wgaXNDb21wb3NpdGlvbkVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q29t
cG9zaXRpb25FbmFibGVkKGJvb2wgY29tcG9zaXRpb25FbmFibGVkKSB7IG1fY29tcG9zaXRpb25F
bmFibGVkID0gY29tcG9zaXRpb25FbmFibGVkOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViWFJSZW5kZXJTdGF0ZShPcHRpb25hbDxkb3VibGU+IGZpZWxkT2ZWaWV3KTsKQEAgLTY5LDYg
KzczLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxkb3VibGU+IG1faW5saW5lVmVydGljYWxG
aWVsZE9mVmlldzsgLy8gaW4gcmFkaWFucwogICAgIFJlZlB0cjxXZWJYUldlYkdMTGF5ZXI+IG1f
YmFzZUxheWVyOwogICAgIFdlYWtQdHI8SFRNTENhbnZhc0VsZW1lbnQ+IG1fb3V0cHV0Q2FudmFz
OworICAgIGJvb2wgbV9jb21wb3NpdGlvbkVuYWJsZWQgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vz
c2lvbi5jcHAKaW5kZXggZDhlMmY4MTFjMjQ1YjBjZWIwYWNlZmVhM2RmZWRhNTRlNTI4YjAwNS4u
YmQ2YzUwMWNiN2VjNWE3MWNiN2E3MDdiMTk5OWZkOWJhOTI4OGIyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAtNTUsMTEgKzU1LDE1IEBA
IFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0
ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fZGV2
aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCiAgICAgLCBtX2FjdGl2ZVJlbmRlclN0YXRlKFdlYlhS
UmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKLSAgICAsIG1fYW5pbWF0aW9uVGltZXIoKnRoaXMs
ICZXZWJYUlNlc3Npb246OmFuaW1hdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3RpbWVPcmlnaW4o
TW9ub3RvbmljVGltZTo6bm93KCkpCiB7CiAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2lu
Z0FuZFJlbmRlcmluZyhtb2RlKTsKICAgICBtX2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQobWFrZVdlYWtQdHIoKnRoaXMpKTsKIAorICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHIvI3JlZi1mb3ItZG9tLXhycmVmZXJlbmNlc3BhY2V0eXBlLXZp
ZXdlciVFMiU5MSVBMgorICAgIC8vIEV2ZXJ5IHNlc3Npb24gTVVTVCBzdXBwb3J0IHZpZXdlciBY
UlJlZmVyZW5jZVNwYWNlcy4KKyAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNl
KFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIpOworCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7
CiB9CiAKQEAgLTE5OCw2NiArMjAyLDUxIEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0UmVm
ZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSwgUmVxdWVzdFJlZmVyCiAgICAg
ICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorCiAgICAgLy8gMS4gTGV0IHByb21pc2UgYmUgYSBuZXcgUHJv
bWlzZS4KICAgICAvLyAyLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgdHlwZV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAv
LyAgMi4xLiBDcmVhdGUgYSByZWZlcmVuY2Ugc3BhY2UsIHJlZmVyZW5jZVNwYWNlLCB3aXRoIHRo
ZSBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlLgotICAgICAgICAvLyAgMi4yLiBJZiByZWZlcmVu
Y2VTcGFjZSBpcyBudWxsLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3Ig
YW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9z
dFRhc2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgdHlwZV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyAyLjEuIElmIHRoZSByZXN1bHQg
b2YgcnVubmluZyByZWZlcmVuY2Ugc3BhY2UgaXMgc3VwcG9ydGVkIGZvciB0eXBlIGFuZCBzZXNz
aW9uIGlzIGZhbHNlLCBxdWV1ZSBhIHRhc2sgdG8gcmVqZWN0IHByb21pc2UKKyAgICAgICAgLy8g
d2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAg
aWYgKCFyZWZlcmVuY2VTcGFjZUlzU3VwcG9ydGVkKHR5cGUpKSB7Ci0gICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNw
YWNlCi0gICAgICAgIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiByZWZlcmVuY2VTcGFjZTsK
LSAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikK
LSAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6
OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIG1ha2VSZWYoKnRoaXMpLCB0eXBl
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJlZmVy
ZW5jZVNwYWNlOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBtYWtlUmVmKCp0
aGlzKSwgdHlwZSk7Ci0KLSAgICAgICAgLy8gIDIuMy4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVm
ZXJlbmNlU3BhY2UuCi0gICAgICAgIC8vIDMuIFJldHVybiBwcm9taXNlLgotICAgICAgICBwcm9t
aXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIC8v
IDIuMi4gU2V0IHVwIGFueSBwbGF0Zm9ybSByZXNvdXJjZXMgcmVxdWlyZWQgdG8gdHJhY2sgcmVm
ZXJlbmNlIHNwYWNlcyBvZiB0eXBlIHR5cGUuCisgICAgICAgIG1fZGV2aWNlLT5pbml0aWFsaXpl
UmVmZXJlbmNlU3BhY2UodHlwZSk7CisKKyAgICAgICAgLy8gMi4zLiBRdWV1ZSBhIHRhc2sgdG8g
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCB0eXBlLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4o
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgICAgICAvLyAyLjQuIENyZWF0ZSBh
IHJlZmVyZW5jZSBzcGFjZSwgcmVmZXJlbmNlU3BhY2UsIHdpdGggdHlwZSBhbmQgc2Vzc2lvbi4K
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2Ny
ZWF0ZS1hLXJlZmVyZW5jZS1zcGFjZQorICAgICAgICAgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNl
U3BhY2U+IHJlZmVyZW5jZVNwYWNlOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVu
Y2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFj
ZSA9IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VSZWYo
KnRoaXMpLCB0eXBlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWZlcmVu
Y2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVJlZigq
dGhpcyksIHR5cGUpOworCisgICAgICAgICAgICAvLyAyLjUuIFJlc29sdmUgcHJvbWlzZSB3aXRo
IHJlZmVyZW5jZVNwYWNlLgorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNw
YWNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAotdm9pZCBX
ZWJYUlNlc3Npb246OmFuaW1hdGlvblRpbWVyRmlyZWQoKQotewotICAgIG1fbGFzdEFuaW1hdGlv
bkZyYW1lVGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0KLSAgICBpZiAobV9jYWxs
YmFja3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUT0RPOiByZXRyaWV2
ZSBmcmFtZSBmcm9tIHBsYXRmb3JtLgotICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVh
dGUoKnRoaXMpOwotCi0gICAgbV9ydW5uaW5nQ2FsbGJhY2tzLnN3YXAobV9jYWxsYmFja3MpOwot
ICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX3J1bm5pbmdDYWxsYmFja3MpIHsKLSAgICAgICAg
aWYgKGNhbGxiYWNrLT5pc0NhbmNlbGxlZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGNhbGxiYWNrLT5oYW5kbGVFdmVudChtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcC5z
ZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpLCBmcmFtZS5nZXQoKSk7Ci0gICAgfQot
Ci0gICAgbV9ydW5uaW5nQ2FsbGJhY2tzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgV2ViWFJTZXNzaW9u
OjpzY2hlZHVsZUFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fZW5kZWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIFRPRE86IHVzZSBkZXZpY2UncyByZWZyZXNoIHJhdGUuIExldCdzIHN0YXJ0
IHdpdGggNjBmcHMuCi0gICAgU2Vjb25kcyBhbmltYXRpb25JbnRlcnZhbCA9IDE1X21zOwotICAg
IFNlY29uZHMgc2NoZWR1bGVEZWxheSA9IHN0ZDo6bWF4KGFuaW1hdGlvbkludGVydmFsIC0gKE1v
bm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApLCAwX3Mp
OwotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHNjaGVkdWxlRGVsYXkpOwotfQot
CiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJzZXNzaW9u
LXJlcXVlc3RhbmltYXRpb25mcmFtZQogdW5zaWduZWQgV2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5p
bWF0aW9uRnJhbWUoUmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Cisg
ICAgLy8gSWdub3JlIGFueSBuZXcgZnJhbWUgcmVxdWVzdHMgb25jZSB0aGUgc2Vzc2lvbiBpcyBl
bmRlZC4KKyAgICBpZiAobV9lbmRlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICAvLyAxLiBM
ZXQgc2Vzc2lvbiBiZSB0aGUgdGFyZ2V0IFhSU2Vzc2lvbiBvYmplY3QuCiAgICAgLy8gMi4gSW5j
cmVtZW50IHNlc3Npb24ncyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2sgaWRlbnRpZmllciBieSBv
bmUuCiAgICAgdW5zaWduZWQgbmV3SWQgPSBtX25leHRDYWxsYmFja0lkKys7CkBAIC0yNjcsNyAr
MjU2LDExIEBAIHVuc2lnbmVkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKFJl
ZjxYUkZyYW1lUmVxdWVzdENhbGxiYWNrPiYmIGNhbGxiCiAgICAgY2FsbGJhY2stPnNldENhbGxi
YWNrSWQobmV3SWQpOwogICAgIG1fY2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAKLSAgICBzY2hlZHVsZUFuaW1hdGlvbigpOworICAgIC8vIFNjcmlwdCBjYW4gYWRkIG11bHRp
cGxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFja3MgYnV0IHdlIHNob3VsZCBvbmx5IHJl
cXVlc3QgYSBkZXZpY2UgZnJhbWUgb25jZS4KKyAgICAvLyBXaGVuIHJlcXVlc3RBbmltYXRpb25G
cmFtZSBpcyBjYWxsZWQgZHVyaW5nIHByb2Nlc3NpbmcgUkFGIGNhbGxiYWNrcyB0aGUgbmV4dCBy
ZXF1ZXN0RnJhbWUgaXMgc2NoZWR1bGVkCisgICAgLy8gYXQgdGhlIGVuZCBvZiBXZWJYUlNlc3Np
b246Om9uRnJhbWUoKSB0byBwcmV2ZW50IHJlcXVlc3RpbmcgYSBuZXcgZnJhbWUgYmVmb3JlIHRo
ZSBjdXJyZW50IG9uZSBoYXMgZW5kZWQuCisgICAgaWYgKG1fY2FsbGJhY2tzLnNpemUoKSA9PSAx
KQorICAgICAgICByZXF1ZXN0RnJhbWUoKTsKIAogICAgIC8vIDQuIFJldHVybiBzZXNzaW9uJ3Mg
YW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrIGlkZW50aWZpZXIncyBjdXJyZW50IHZhbHVlLgogICAg
IHJldHVybiBuZXdJZDsKQEAgLTI4NiwxNyArMjc5LDkgQEAgdm9pZCBXZWJYUlNlc3Npb246OmNh
bmNlbEFuaW1hdGlvbkZyYW1lKHVuc2lnbmVkIGNhbGxiYWNrSWQpCiAgICAgfSk7CiAKICAgICBp
ZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgbV9jYWxsYmFja3NbcG9zaXRpb25d
LT5jYW5jZWwoKTsKLSAgICAgICAgbV9jYWxsYmFja3MucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICAg
ICAgbV9jYWxsYmFja3NbcG9zaXRpb25dLT5zZXRGaXJlZE9yQ2FuY2VsbGVkKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0KLSAgICBwb3NpdGlvbiA9IG1fcnVubmluZ0NhbGxiYWNrcy5maW5k
TWF0Y2hpbmcoW2NhbGxiYWNrSWRdIChhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiBpdGVt
LT5jYWxsYmFja0lkKCkgPT0gY2FsbGJhY2tJZDsKLSAgICB9KTsKLQotICAgIGlmIChwb3NpdGlv
biAhPSBub3RGb3VuZCkKLSAgICAgICAgbV9ydW5uaW5nQ2FsbGJhY2tzW3Bvc2l0aW9uXS0+Y2Fu
Y2VsKCk7CiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI25h
dGl2ZS13ZWJnbC1mcmFtZWJ1ZmZlci1yZXNvbHV0aW9uCkBAIC00MjAsNiArNDA1LDEzOCBAQCB2
b2lkIFdlYlhSU2Vzc2lvbjo6c2Vzc2lvbkRpZEVuZCgpCiAgICAgc2h1dGRvd24oSW5pdGlhdGVk
QnlTeXN0ZW06Olllcyk7CiB9CiAKK3ZvaWQgV2ViWFJTZXNzaW9uOjphcHBseVBlbmRpbmdSZW5k
ZXJTdGF0ZSgpCit7CisgICAgLy8gaHR0cHM6IC8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI2FwcGx5LXRoZS1wZW5kaW5nLXJlbmRlci1zdGF0ZQorICAgIC8vIDEuIExldCBhY3RpdmVT
dGF0ZSBiZSBzZXNzaW9u4oCZcyBhY3RpdmUgcmVuZGVyIHN0YXRlLgorICAgIC8vIDIuIExldCBu
ZXdTdGF0ZSBiZSBzZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRlciBzdGF0ZS4KKyAgICAvLyAzLiBT
ZXQgc2Vzc2lvbuKAmXMgcGVuZGluZyByZW5kZXIgc3RhdGUgdG8gbnVsbC4KKyAgICBhdXRvIG5l
d1N0YXRlID0gbV9wZW5kaW5nUmVuZGVyU3RhdGU7CisgICAgQVNTRVJUKG5ld1N0YXRlKTsKKwor
ICAgIC8vIDQuIExldCBvbGRCYXNlTGF5ZXIgYmUgYWN0aXZlU3RhdGXigJlzIGJhc2VMYXllci4K
KyAgICAvLyA1LiBMZXQgb2xkTGF5ZXJzIGJlIGFjdGl2ZVN0YXRl4oCZcyBsYXllcnMuCisgICAg
Ly8gRklYTUU6IHRob3NlIGFyZSBvbmx5IG5lZWRlZCBmb3Igc3RlcCA2LjIuCisKKyAgICAvLyA2
LjEgU2V0IGFjdGl2ZVN0YXRlIHRvIG5ld1N0YXRlLgorICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUg
PSBuZXdTdGF0ZTsKKworICAgIC8vIDYuMiBJZiBvbGRCYXNlTGF5ZXIgaXMgbm90IGVxdWFsIHRv
IGFjdGl2ZVN0YXRl4oCZcyBiYXNlTGF5ZXIsIG9sZExheWVycyBpcyBub3QgZXF1YWwgdG8gYWN0
aXZlU3RhdGXigJlzIGxheWVycywgb3IgdGhlIGRpbWVuc2lvbnMgb2YgYW55IG9mIHRoZSBsYXll
cnMgaGF2ZSBjaGFuZ2VkLCB1cGRhdGUgdGhlIHZpZXdwb3J0cyBmb3Igc2Vzc2lvbi4KKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisKKyAgICAvLyA2LjMgSWYgYWN0aXZlU3RhdGXigJlz
IGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgaXMgbGVzcyB0aGFuIHNlc3Npb27igJlzIG1pbmlt
dW0gaW5saW5lIGZpZWxkIG9mIHZpZXcgc2V0IGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNh
bEZpZWxkT2ZWaWV3IHRvIHNlc3Npb27igJlzIG1pbmltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcu
CisgICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmlubGluZVZlcnRpY2FsRmllbGRPZlZpZXco
KSA8IG1fbWluaW11bUlubGluZUZPVikKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0
SW5saW5lVmVydGljYWxGaWVsZE9mVmlldyhtX21pbmltdW1JbmxpbmVGT1YpOworCisgICAgLy8g
Ni40IElmIGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3IGlzIGdyZWF0
ZXIgdGhhbiBzZXNzaW9u4oCZcyBtYXhpbXVtIGlubGluZSBmaWVsZCBvZiB2aWV3IHNldCBhY3Rp
dmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVsZE9mVmlldyB0byBzZXNzaW9u4oCZcyBtYXhp
bXVtIGlubGluZSBmaWVsZCBvZiB2aWV3LgorICAgIGlmIChtX2FjdGl2ZVJlbmRlclN0YXRlLT5p
bmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkgPiBtX21heGltdW1JbmxpbmVGT1YpCisgICAgICAg
IG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldElubGluZVZlcnRpY2FsRmllbGRPZlZpZXcobV9tYXhp
bXVtSW5saW5lRk9WKTsKKworICAgIC8vIDYuNSBJZiBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhOZWFy
IGlzIGxlc3MgdGhhbiBzZXNzaW9u4oCZcyBtaW5pbXVtIG5lYXIgY2xpcCBwbGFuZSBzZXQgYWN0
aXZlU3RhdGXigJlzIGRlcHRoTmVhciB0byBzZXNzaW9u4oCZcyBtaW5pbXVtIG5lYXIgY2xpcCBw
bGFuZS4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+ZGVwdGhOZWFyKCkgPCBtX21pbmlt
dW1OZWFyQ2xpcFBsYW5lKQorICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXREZXB0aE5l
YXIobV9taW5pbXVtTmVhckNsaXBQbGFuZSk7CisKKyAgICAvLyA2LjYgSWYgYWN0aXZlU3RhdGXi
gJlzIGRlcHRoRmFyIGlzIGdyZWF0ZXIgdGhhbiBzZXNzaW9u4oCZcyBtYXhpbXVtIGZhciBjbGlw
IHBsYW5lIHNldCBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhGYXIgdG8gc2Vzc2lvbuKAmXMgbWF4aW11
bSBmYXIgY2xpcCBwbGFuZS4KKyAgICBpZiAobV9hY3RpdmVSZW5kZXJTdGF0ZS0+ZGVwdGhGYXIo
KSA+IG1fbWF4aW11bUZhckNsaXBQbGFuZSkKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+
c2V0RGVwdGhGYXIobV9tYXhpbXVtRmFyQ2xpcFBsYW5lKTsKKworICAgIC8vIDYuNyBMZXQgYmFz
ZUxheWVyIGJlIGFjdGl2ZVN0YXRl4oCZcyBiYXNlTGF5ZXIuCisgICAgYXV0byBiYXNlTGF5ZXIg
PSBtX2FjdGl2ZVJlbmRlclN0YXRlLT5iYXNlTGF5ZXIoKTsKKworICAgIC8vIDYuOCBTZXQgYWN0
aXZlU3RhdGXigJlzIGNvbXBvc2l0aW9uIGVuYWJsZWQgYW5kIG91dHB1dCBjYW52YXMgYXMgZm9s
bG93czoKKyAgICBpZiAobV9tb2RlID09IFhSU2Vzc2lvbk1vZGU6OklubGluZSAmJiBpczxXZWJY
UldlYkdMTGF5ZXI+KGJhc2VMYXllcikgJiYgIWJhc2VMYXllci0+aXNDb21wb3NpdGlvbkVuYWJs
ZWQoKSkgeworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRDb21wb3NpdGlvbkVuYWJs
ZWQoZmFsc2UpOworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRPdXRwdXRDYW52YXMo
YmFzZUxheWVyLT5jYW52YXMoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9hY3RpdmVSZW5k
ZXJTdGF0ZS0+c2V0Q29tcG9zaXRpb25FbmFibGVkKHRydWUpOworICAgICAgICBtX2FjdGl2ZVJl
bmRlclN0YXRlLT5zZXRPdXRwdXRDYW52YXMobnVsbHB0cik7CisgICAgfQorfQorCisvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNzaG91bGQtYmUtcmVuZGVyZWQKK2Jv
b2wgV2ViWFJTZXNzaW9uOjpmcmFtZVNob3VsZEJlUmVuZGVyZWQoKSBjb25zdAoreworICAgIGlm
ICghbV9hY3RpdmVSZW5kZXJTdGF0ZS0+YmFzZUxheWVyKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9tb2RlID09IFhSU2Vzc2lvbk1vZGU6OklubGluZSAmJiAhbV9hY3RpdmVS
ZW5kZXJTdGF0ZS0+b3V0cHV0Q2FudmFzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJYUlNlc3Npb246OnJlcXVlc3RGcmFtZSgpCit7Cisg
ICAgbV9kZXZpY2UtPnJlcXVlc3RGcmFtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXShhdXRvJiYgZnJhbWVEYXRhKSB7CisgICAgICAgIG9uRnJhbWUoV1RGTW92ZShmcmFt
ZURhdGEpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGlmIChtX2VuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBRdWV1ZSBhIHRhc2sgdG8gcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzLgorICAgIHF1ZXVl
VGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCBm
cmFtZURhdGEgPSBXVEZNb3ZlKGZyYW1lRGF0YSldKCkgeworICAgICAgICBpZiAobV9lbmRlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0aGUgY3VycmVu
dCBoaWdoIHJlc29sdXRpb24gdGltZS4KKyAgICAgICAgYXV0byBub3cgPSAoTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25kcygpOworCisgICAgICAgIGF1dG8g
ZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigqdGhpcykpOworICAgICAgICAvLyAg
Mi5MZXQgZnJhbWUgYmUgc2Vzc2lvbuKAmXMgYW5pbWF0aW9uIGZyYW1lLgorICAgICAgICAvLyAg
My5TZXQgZnJhbWXigJlzIHRpbWUgdG8gZnJhbWVUaW1lLgorICAgICAgICBmcmFtZS0+c2V0VGlt
ZShzdGF0aWNfY2FzdDxET01IaWdoUmVzVGltZVN0YW1wPihmcmFtZURhdGEucHJlZGljdGVkRGlz
cGxheVRpbWUpKTsKKworICAgICAgICAvLyA0LiBGb3IgZWFjaCB2aWV3IGluIGxpc3Qgb2Ygdmll
d3MsIHNldCB2aWV34oCZcyB2aWV3cG9ydCBtb2RpZmlhYmxlIGZsYWcgdG8gdHJ1ZS4KKyAgICAg
ICAgLy8gNS4gSWYgdGhlIGFjdGl2ZSBmbGFnIG9mIGFueSB2aWV3IGluIHRoZSBsaXN0IG9mIHZp
ZXdzIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IFhSIGFuaW1hdGlvbiBmcmFtZSwgdXBkYXRl
IHRoZSB2aWV3cG9ydHMuCisgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisKKyAgICAgICAg
Ly8gRklYTUU6IEkgbW92ZWQgc3RlcCA3IGJlZm9yZSA2IGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRo
dWIuY29tL2ltbWVyc2l2ZS13ZWIvd2VieHIvaXNzdWVzLzExNjQKKyAgICAgICAgLy8gNy5JZiBz
ZXNzaW9u4oCZcyBwZW5kaW5nIHJlbmRlciBzdGF0ZSBpcyBub3QgbnVsbCwgYXBwbHkgdGhlIHBl
bmRpbmcgcmVuZGVyIHN0YXRlLgorICAgICAgICBpZiAobV9wZW5kaW5nUmVuZGVyU3RhdGUpCisg
ICAgICAgICAgICBhcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSgpOworCisgICAgICAgIC8vIDYuIElm
IHRoZSBmcmFtZSBzaG91bGQgYmUgcmVuZGVyZWQgZm9yIHNlc3Npb246CisgICAgICAgIGlmIChm
cmFtZVNob3VsZEJlUmVuZGVyZWQoKSkgeworICAgICAgICAgICAgLy8gNi4xLlNldCBzZXNzaW9u
4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3Mg
dG8gYmUgc2Vzc2lvbuKAmXMgbGlzdCBvZiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLgorICAg
ICAgICAgICAgLy8gNi4yLlNldCBzZXNzaW9u4oCZcyBsaXN0IG9mIGFuaW1hdGlvbiBmcmFtZSBj
YWxsYmFja3MgdG8gdGhlIGVtcHR5IGxpc3QuCisgICAgICAgICAgICBhdXRvIGNhbGxiYWNrcyA9
IG1fY2FsbGJhY2tzOworCisgICAgICAgICAgICAvLyA2LjMuU2V0IGZyYW1l4oCZcyBhY3RpdmUg
Ym9vbGVhbiB0byB0cnVlLgorICAgICAgICAgICAgZnJhbWUtPnNldEFjdGl2ZSh0cnVlKTsKKwor
ICAgICAgICAgICAgLy8gNi40LkFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZyYW1lLgorICAgICAg
ICAgICAgLy8gRklYTUU6IGltcGxlbWVudC4KKworICAgICAgICAgICAgLy8gNi41LkZvciBlYWNo
IGVudHJ5IGluIHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9u
IGZyYW1lIGNhbGxiYWNrcywgaW4gb3JkZXI6CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrIDogY2FsbGJhY2tzKSB7CisgICAgICAgICAgICAgICAgLy8gIDYuNi5JZiB0aGUgZW50cnni
gJlzIGNhbmNlbGxlZCBib29sZWFuIGlzIHRydWUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGVudHJ5
LgorICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjay0+aXNGaXJlZE9yQ2FuY2VsbGVkKCkpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGNhbGxiYWNrLT5z
ZXRGaXJlZE9yQ2FuY2VsbGVkKCk7CisgICAgICAgICAgICAgICAgLy8gIDYuNy5JbnZva2UgdGhl
IFdlYiBJREwgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGVudHJ5LCBwYXNzaW5nIG5vdyBhbmQgZnJh
bWUgYXMgdGhlIGFyZ3VtZW50cworICAgICAgICAgICAgICAgIGNhbGxiYWNrLT5oYW5kbGVFdmVu
dChub3csIGZyYW1lLmdldCgpKTsKKworICAgICAgICAgICAgICAgIC8vICA2LjguSWYgYW4gZXhj
ZXB0aW9uIGlzIHRocm93biwgcmVwb3J0IHRoZSBleGNlcHRpb24uCisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAvLyA2LjkuU2V0IHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5p
bmcgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcyB0byB0aGUgZW1wdHkgbGlzdC4KKyAgICAgICAg
ICAgIG1fY2FsbGJhY2tzLnJlbW92ZUFsbE1hdGNoaW5nKFtdKGF1dG8mIGNhbGxiYWNrKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLT5pc0ZpcmVkT3JDYW5jZWxsZWQoKTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICAvLyA2LjEwLlNldCBmcmFtZeKAmXMgYWN0aXZl
IGJvb2xlYW4gdG8gZmFsc2UuCisgICAgICAgICAgICAvLyBJZiB0aGUgc2Vzc2lvbiBpcyBlbmRl
ZCwgbV9hbmltYXRpb25GcmFtZS0+c2V0QWN0aXZlIGZhbHNlIGlzIHNldCBpbiBzaHV0ZG93bigp
LgorICAgICAgICAgICAgZnJhbWUtPnNldEFjdGl2ZShmYWxzZSk7CisKKyAgICAgICAgICAgIGlm
ICghbV9jYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlcXVlc3RGcmFtZSgp
OworICAgICAgICB9CisKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmgKaW5kZXggNTU1NDMwYzhjM2Y3MzEyMzFhYWY0ZjBjM2ZmYjU4MjlkNjkyOWIz
Ni4uZDgzNjNhNWM5MzFjZjUwZjdiNmUzMTlhZWVkYjNlOGEyMzM0ZmVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNp
bmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5j
bHVkZSAiV2ViWFJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlhSSW5wdXRTb3VyY2VBcnJheS5oIgog
I2luY2x1ZGUgIldlYlhSUmVuZGVyU3RhdGUuaCIKICNpbmNsdWRlICJXZWJYUlNwYWNlLmgiCkBA
IC0xMDksMTEgKzEwOSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2h1dGRvd24oSW5pdGlhdGVk
QnlTeXN0ZW0pOwogICAgIHZvaWQgZGlkQ29tcGxldGVTaHV0ZG93bigpOwogCi0gICAgdm9pZCBh
bmltYXRpb25UaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpOwotCiAg
ICAgYm9vbCByZWZlcmVuY2VTcGFjZUlzU3VwcG9ydGVkKFhSUmVmZXJlbmNlU3BhY2VUeXBlKSBj
b25zdDsKIAorICAgIGJvb2wgZnJhbWVTaG91bGRCZVJlbmRlcmVkKCkgY29uc3Q7CisgICAgdm9p
ZCByZXF1ZXN0RnJhbWUoKTsKKyAgICB2b2lkIG9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGEmJik7CisgICAgdm9pZCBhcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSgpOworCiAgICAg
WFJFbnZpcm9ubWVudEJsZW5kTW9kZSBtX2Vudmlyb25tZW50QmxlbmRNb2RlOwogICAgIFhSSW50
ZXJhY3Rpb25Nb2RlIG1faW50ZXJhY3Rpb25Nb2RlOwogICAgIFhSVmlzaWJpbGl0eVN0YXRlIG1f
dmlzaWJpbGl0eVN0YXRlOwpAQCAtMTI2LDEzICsxMjgsMTcgQEAgcHJpdmF0ZToKICAgICBXZWFr
UHRyPFBsYXRmb3JtWFI6OkRldmljZT4gbV9kZXZpY2U7CiAgICAgUmVmUHRyPFdlYlhSUmVuZGVy
U3RhdGU+IG1fYWN0aXZlUmVuZGVyU3RhdGU7CiAgICAgUmVmUHRyPFdlYlhSUmVuZGVyU3RhdGU+
IG1fcGVuZGluZ1JlbmRlclN0YXRlOworICAgIE1vbm90b25pY1RpbWUgbV90aW1lT3JpZ2luOwog
CiAgICAgdW5zaWduZWQgbV9uZXh0Q2FsbGJhY2tJZCB7IDEgfTsKICAgICBWZWN0b3I8UmVmPFhS
RnJhbWVSZXF1ZXN0Q2FsbGJhY2s+PiBtX2NhbGxiYWNrczsKLSAgICBWZWN0b3I8UmVmPFhSRnJh
bWVSZXF1ZXN0Q2FsbGJhY2s+PiBtX3J1bm5pbmdDYWxsYmFja3M7CiAKLSAgICBUaW1lciBtX2Fu
aW1hdGlvblRpbWVyOwotICAgIE1vbm90b25pY1RpbWUgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1l
c3RhbXA7CisgICAgZG91YmxlIG1fbWluaW11bUlubGluZUZPViB7IDAuMCB9OworICAgIGRvdWJs
ZSBtX21heGltdW1JbmxpbmVGT1YgeyBwaUZsb2F0IH07CisKKyAgICAvLyBJbiBtZXRlcnMuCisg
ICAgZG91YmxlIG1fbWluaW11bU5lYXJDbGlwUGxhbmUgeyAwLjEgfTsKKyAgICBkb3VibGUgbV9t
YXhpbXVtRmFyQ2xpcFBsYW5lIHsgMTAwMC4wIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4
IDUyNTM4YzkzOTY3MDNmNjk4ZWVjZGUxYTU2YTIxOWQ3YjkwZWVlNjQuLmNiNTFhZDYxYzIxODdk
ZWYwMDc5Mjk2MWI5YjM4ZGM5OWM0MDYyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTeXN0ZW0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNXZWJY
UlNlc3Npb24uaCIKICNpbmNsdWRlICJKU1hSUmVmZXJlbmNlU3BhY2VUeXBlLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1YUi5oIgorI2luY2x1ZGUgIlJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTQ5LDEx
ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYlhSU3lzdGVtKTsKIAotV2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpEdW1t
eUlubGluZURldmljZSgpCi17Ci0gICAgc2V0RW5hYmxlZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGU6
OklubGluZSwgeyBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyIH0pOwotfQotCiBSZWY8V2Vi
WFJTeXN0ZW0+IFdlYlhSU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlN5
c3RlbShzY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CkBAIC02MSw2ICs1Nyw3IEBAIFJlZjxXZWJY
UlN5c3RlbT4gV2ViWFJTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3Jp
cHRFeGVjdXRpb25Db250CiAKIFdlYlhSU3lzdGVtOjpXZWJYUlN5c3RlbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICwgbV9kZWZhdWx0SW5saW5lRGV2aWNlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7CiAgICAgbV9pbmxpbmVYUkRldmljZSA9IG1ha2VXZWFr
UHRyKG1fZGVmYXVsdElubGluZURldmljZSk7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CkBAIC00
ODYsNiArNDgzLDQ5IEBAIHZvaWQgV2ViWFJTeXN0ZW06OnNlc3Npb25FbmRlZChXZWJYUlNlc3Np
b24mIHNlc3Npb24pCiAgICAgbV9pbmxpbmVTZXNzaW9ucy5yZW1vdmUoc2Vzc2lvbik7CiB9CiAK
K2NsYXNzIElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrIGZpbmFsOiBwdWJsaWMg
UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
SW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmxpbmVSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBXVEZNb3ZlKGNh
bGxiYWNrKSkpOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgICAgICA6IFJlcXVlc3RBbmltYXRp
b25GcmFtZUNhbGxiYWNrKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgbV9jYWxsYmFjayhXVEZN
b3ZlKGNhbGxiYWNrKSkgCisgICAgeworICAgIH0KKworICAgIENhbGxiYWNrUmVzdWx0PHZvaWQ+
IGhhbmRsZUV2ZW50KGRvdWJsZSkgZmluYWwKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2soKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fY2Fs
bGJhY2s7Cit9OworCisKK1dlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxp
bmVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
KyAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
K3sKKyAgICBzZXRFbmFibGVkRmVhdHVyZXMoWFJTZXNzaW9uTW9kZTo6SW5saW5lLCB7IFhSUmVm
ZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIgfSk7Cit9CisKK3ZvaWQgV2ViWFJTeXN0ZW06OkR1bW15
SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJh
bWVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIC8vIElubGluZSBYUiBzZXNzaW9ucyByZWx5
IG9uIGRvY3VtZW50LnJlcXVlc3RBbmltYXRpb25GcmFtZSB0byBwZXJmb3JtIHRoZSByZW5kZXIg
bG9vcC4KKyAgICBhdXRvIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byByYWYgPSBJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazo6Y3JlYXRl
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayh7IH0pOworICAgIH0pOworCisgICAgZG9j
dW1lbnQtPnJlcXVlc3RBbmltYXRpb25GcmFtZShyYWYpOworfQorCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAppbmRleCBjNzYyZDQ2YWMwZTkwNGEzOTgzZDM5N2Y2ODY1
NjFkNGMxNjViMzU1Li5hYWUzY2YyNjM0OGYyMTExYmMxZDVlY2E5NTVhMjY5MzRhZTMzZmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCkBAIC0xMDYsMTEg
KzEwNiwxNiBAQCBwcml2YXRlOgogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIu
aW8vd2VieHIvI2RlZmF1bHQtaW5saW5lLXhyLWRldmljZQogICAgIGNsYXNzIER1bW15SW5saW5l
RGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBEdW1teUlubGluZURldmljZSgpOworICAgICAgICBleHBsaWNpdCBEdW1teUlubGlu
ZURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9u
TW9kZSkgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmlu
ZygpIGZpbmFsIHsgfQorICAgICAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0
Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfTsKKworICAgICAgICB2b2lkIHJl
cXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZp
bmFsOworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCB7IG51bGxwdHIgfTsKICAgICB9OwogICAgIER1bW15SW5saW5lRGV2aWNlIG1fZGVm
YXVsdElubGluZURldmljZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUldlYkdMTGF5ZXIuY3BwCmluZGV4IDUxMzBmMmVmY2RmZjNhOGEzMjEwYTFlMWY1OTE0ODdk
ZTUwNTRlOWEuLjBlNTczYjIyZDY1N2Y4ZWNhZDU0ZGM3NWZhNzA3NTc4MGEyMzQzYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKQEAg
LTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIkhUTUxDYW52
YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk9mZnNjcmVlbkNh
bnZhcy5oIgogI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFJl
bmRlcmluZ0NvbnRleHQuaCIKICNpZiBFTkFCTEUoV0VCR0wyKQpAQCAtMTk4LDYgKzIwMCwxOSBA
QCBkb3VibGUgV2ViWFJXZWJHTExheWVyOjpnZXROYXRpdmVGcmFtZWJ1ZmZlclNjYWxlRmFjdG9y
KGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2VzcwogICAgIHJldHVybiAobmF0aXZlU2l6ZSAvIHJlY29t
bWVuZGVkU2l6ZSkud2lkdGgoKTsKIH0KIAorSFRNTENhbnZhc0VsZW1lbnQqIFdlYlhSV2ViR0xM
YXllcjo6Y2FudmFzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2NvbnRl
eHQsIFtdKGNvbnN0IFJlZlB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiYgYmFzZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBjYW52YXMgPSBiYXNlQ29udGV4dC0+Y2FudmFzKCk7CisgICAg
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNhbnZhcywgW10oY29uc3QgUmVmUHRyPEhUTUxDYW52
YXNFbGVtZW50PiYgY2FudmFzKSB7CisgICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldCgpOwor
ICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPikgeworICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCJiYXNlTGF5ZXIgb2YgYSBXZWJYUldlYkdMTGF5ZXIgbXVz
dCBiZSBhbiBIVE1MQ2FudmFzRWxlbWVudCIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSV2ViR0xMYXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUldlYkdMTGF5ZXIuaAppbmRleCAyMWVjYWIyMDMwZTI4MzgyMjY4MjdjM2UwM2FlZTkxNmUy
ZWNmYjkwLi4xMDZjZWI1ZmNkMzY1YzcxNjYyZTg0ZDAwMWYxN2UyOWEzZWI2ZWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmgKQEAgLTM2LDYg
KzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MQ2FudmFzRWxlbWVu
dDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogY2xhc3MgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OwpAQCAtNzQsNiArNzUsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
V2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgeyByZXR1cm4gbV9zZXNzaW9uOyB9CiAKKyAgICBib29s
IGlzQ29tcG9zaXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbXBvc2l0aW9uRW5h
YmxlZDsgfQorCisgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcygpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIFdlYlhSV2ViR0xMYXllcihSZWY8V2ViWFJTZXNzaW9uPiYmLCBXZWJYUlJlbmRl
cmluZ0NvbnRleHQmJiwgY29uc3QgWFJXZWJHTExheWVySW5pdCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJGcmFtZVJlcXVlc3RDYWxsYmFjay5oCmluZGV4
IDQ4ZGNkOTM2NGZiMzliYTM1YTgyNGIzMWU3ZTBiZTJlMTZhMWI3MTkuLmVmM2Y2NDZkNmRiNWI4
NTMxMzQzNzg4NzU3NWJlYzRhYzFjZTM0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvWFJGcmFtZVJlcXVlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvWFJGcmFtZVJlcXVlc3RDYWxsYmFjay5oCkBAIC00MywxMiArNDMsMTIg
QEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgY2FsbGJhY2tJZCgpIHsgQVNTRVJUKG1faWQpOyBy
ZXR1cm4gbV9pZDsgfQogICAgIHZvaWQgc2V0Q2FsbGJhY2tJZCh1bnNpZ25lZCBpZCkgeyBBU1NF
UlQoIW1faWQpOyBtX2lkID0gaWQ7IH0KLSAgICB2b2lkIGNhbmNlbCgpIHsgbV9jYW5jZWxsZWQg
PSB0cnVlOyB9Ci0gICAgYm9vbCBpc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2Vs
bGVkOyB9CisgICAgdm9pZCBzZXRGaXJlZE9yQ2FuY2VsbGVkKCkgeyBtX2ZpcmVkT3JDYW5jZWxs
ZWQgPSB0cnVlOyB9CisgICAgYm9vbCBpc0ZpcmVkT3JDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVy
biBtX2ZpcmVkT3JDYW5jZWxsZWQ7IH0KIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lkIHsg
MCB9OwotICAgIGJvb2wgbV9jYW5jZWxsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9maXJlZE9y
Q2FuY2VsbGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCBiOWVmNDVjMGM2OTcxNGFlODNj
NzA0NDU0ZDk1NGJkNTFlYTQ3NjZiLi40MzI1ZjMzNzVjZjMwMjhhNDdkZmZjYzZkZjU5YmI3NDM4
MzUwMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhS
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0xOCw2
ICsxOCw3IEBACiAgKi8KICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KQEAgLTc1LDYgKzc2LDMxIEBAIHB1YmxpYzoKICAgICAvLyBJ
ZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIHRoYXQgbWVhbnMgdGhlIGRldmljZSB3aWxsIG5v
dGlmeSBUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudAogICAgIC8vIHdoZW4gdGhlIHBsYXRmb3Jt
IGhhcyBjb21wbGV0ZWQgYWxsIHN0ZXBzIHRvIHNodXQgZG93biB0aGUgWFIgc2Vzc2lvbi4KICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNl
U3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSA9IDA7CisKKyAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsK
KyAgICAgICAgbG9uZyBwcmVkaWN0ZWREaXNwbGF5VGltZTsKKyAgICAgICAgc3RydWN0IFZpZXdE
YXRhIHsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6Rmxv
YXRQb2ludDNEIHBvc2l0aW9uOworICAgICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHg7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHk7CisgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHo7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHc7CisgICAg
ICAgICAgICAgICAgfSBvcmllbnRhdGlvbjsKKyAgICAgICAgICAgIH0gcG9zZTsKKyAgICAgICAg
ICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgZmxvYXQgclVwOworICAgICAgICAgICAgICAg
IGZsb2F0IHJEb3duOworICAgICAgICAgICAgICAgIGZsb2F0IHJMZWZ0OworICAgICAgICAgICAg
ICAgIGZsb2F0IHJSaWdodDsKKyAgICAgICAgICAgIH0gZm92OworICAgICAgICB9OworICAgICAg
ICBWZWN0b3I8Vmlld0RhdGE+IHZpZXdQb3NlczsKKyAgICB9OworICAgIHVzaW5nIFJlcXVlc3RG
cmFtZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChGcmFtZURhdGEmJik+OworICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAwOwogCiBwcm90ZWN0
ZWQ6CiAgICAgRGV2aWNlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCmluZGV4IGZlODY1ZTY3MWQ3
MDY4NmRlNzkxZjE0MDBlNmNmM2UyYzg2OWVjMjIuLmNjNGQ3MjE1M2M2ZWVhZmRmMjE2MmU5ODgy
YTllMDc3NThiMjFkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTI2MCwxMSArMjYwLDYgQEAgT3BlblhS
RGV2aWNlOjpPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCBpZCwgWHJJbnN0YW5jZSBpbnN0YW5jZSwg
V29ya1F1ZXVlJiBxdWV1ZSwKICAgICB9KTsKIH0KIAotT3BlblhSRGV2aWNlOjp+T3BlblhSRGV2
aWNlKCkKLXsKLSAgICBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCk7Ci19Ci0KIERldmlj
ZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6ZW51bWVyYXRlUmVmZXJlbmNl
U3BhY2VzKFhyU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKIHsKICAgICB1aW50MzJfdCByZWZlcmVu
Y2VTcGFjZXNDb3VudDsKQEAgLTM5NSw2ICszOTAsMTYgQEAgWHJWaWV3Q29uZmlndXJhdGlvblR5
cGUgdG9YclZpZXdDb25maWd1cmF0aW9uVHlwZShTZXNzaW9uTW9kZSBtb2RlKQogICAgIHJldHVy
biBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX01PTk87CiB9CiAKK3N0YXRpYyBi
b29sIGlzU2Vzc2lvbkFjdGl2ZShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4g
c3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9WSVNJQkxFIHx8IHN0YXRlID09IFhSX1NFU1NJT05f
U1RBVEVfRk9DVVNFRDsKK30KKworc3RhdGljIGJvb2wgaXNTZXNzaW9uUmVhZHkoWHJTZXNzaW9u
U3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJuIHN0YXRlID49IFhSX1NFU1NJT05fU1RBVEVfUkVB
RFkgICYmIHN0YXRlIDwgWFJfU0VTU0lPTl9TVEFURV9TVE9QUElORzsKK30KKwogdm9pZCBPcGVu
WFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2Rl
KQogewogICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIG1vZGVdKCkgewpAQCAtNDEzLDE4ICs0
MTgsMTg2IEBAIHZvaWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJp
bmcoU2Vzc2lvbk1vZGUgbW9kZSkKIH0KIAogdm9pZCBPcGVuWFJEZXZpY2U6OnJlc2V0U2Vzc2lv
bigpCit7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9v
cCgpKTsKKyAgICBpZiAobV9zZXNzaW9uICE9IFhSX05VTExfSEFORExFKSB7CisgICAgICAgIHhy
RGVzdHJveVNlc3Npb24obV9zZXNzaW9uKTsKKyAgICAgICAgbV9zZXNzaW9uID0gWFJfTlVMTF9I
QU5ETEU7CisgICAgfQorICAgIG1fc2Vzc2lvblN0YXRlID0gWFJfU0VTU0lPTl9TVEFURV9VTktO
T1dOOworfQorCit2b2lkIE9wZW5YUkRldmljZTo6aGFuZGxlU2Vzc2lvblN0YXRlQ2hhbmdlKCkK
K3sKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkp
OworICAgIGlmIChtX3Nlc3Npb25TdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HKSB7
CisgICAgICAgIC8vIFRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZXhpdCB0aGUgcmVuZGVyIGxvb3Ag
YW5kIGNhbGwgeHJFbmRTZXNzaW9uCisgICAgICAgIGVuZFNlc3Npb24oKTsKKyAgICB9IGVsc2Ug
aWYgKG1fc2Vzc2lvblN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkpIHsKKyAgICAgICAg
Ly8gVGhlIGFwcGxpY2F0aW9uIGlzIHJlYWR5IHRvIGNhbGwgeHJCZWdpblNlc3Npb24uCisgICAg
ICAgIGJlZ2luU2Vzc2lvbigpOworICAgIH0KK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OnNodXRE
b3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQogewogICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXNd
KCkgewogICAgICAgICBpZiAobV9zZXNzaW9uID09IFhSX05VTExfSEFORExFKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB4ckRlc3Ryb3lTZXNzaW9uKG1fc2Vzc2lvbik7Ci0gICAgICAg
IG1fc2Vzc2lvbiA9IFhSX05VTExfSEFORExFOworCisgICAgICAgIC8vIHhyUmVxdWVzdEV4aXRT
ZXNzaW9uKCkgd2lsbCB0cmFuc2l0aW9uIHRoZSBzZXNzaW9uIHRvIFNUT1BQRUQgc3RhdGUuCisg
ICAgICAgIC8vIElmIHRoZSBzZXNzaW9uIHdhcyBub3QgcnVubmluZyB3ZSBoYXZlIHRvIHJlc2V0
IHRoZSBzZXNzaW9uIG91cnNlbHZlcy4KKyAgICAgICAgaWYgKFhSX0ZBSUxFRCh4clJlcXVlc3RF
eGl0U2Vzc2lvbihtX3Nlc3Npb24pKSkgeworICAgICAgICAgICAgcmVzZXRTZXNzaW9uKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBPcGVuWFIgbmVlZHMg
dG8gd2FpdCBmb3IgdGhlIFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkcgc3RhdGUgdG8gcHJvcGVy
bHkgZW5kIHRoZSBzZXNzaW9uLgorICAgICAgICB3YWl0VW50aWxTdG9wcGluZygpOwogICAgIH0p
OwogfQogCi12b2lkIE9wZW5YUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
Cit2b2lkIE9wZW5YUkRldmljZTo6d2FpdFVudGlsU3RvcHBpbmcoKQogeworICAgIEFTU0VSVCgm
UnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgcG9sbEV2ZW50
cygpOworICAgIGlmIChtX3Nlc3Npb25TdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5H
KQorICAgICAgICByZXR1cm47CisgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpc10oKSB7CisgICAg
ICAgIHdhaXRVbnRpbFN0b3BwaW5nKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNl
Ojpwb2xsRXZlbnRzKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRv
IHJ1bnRpbWVFdmVudCA9IGNyZWF0ZVN0cnVjdHVyZTxYckV2ZW50RGF0YUJ1ZmZlciwgWFJfVFlQ
RV9FVkVOVF9EQVRBX0JVRkZFUj4oKTsKKyAgICB3aGlsZSAoeHJQb2xsRXZlbnQobV9pbnN0YW5j
ZSwgJnJ1bnRpbWVFdmVudCkgPT0gWFJfU1VDQ0VTUykgeworICAgICAgICBzd2l0Y2ggKHJ1bnRp
bWVFdmVudC50eXBlKSB7CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1NFU1NJT05f
U1RBVEVfQ0hBTkdFRDogeworICAgICAgICAgICAgYXV0byogZXZlbnQgPSAoWHJFdmVudERhdGFT
ZXNzaW9uU3RhdGVDaGFuZ2VkKikmcnVudGltZUV2ZW50OworICAgICAgICAgICAgbV9zZXNzaW9u
U3RhdGUgPSBldmVudC0+c3RhdGU7CisgICAgICAgICAgICBoYW5kbGVTZXNzaW9uU3RhdGVDaGFu
Z2UoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgWFJfVFlQ
RV9FVkVOVF9EQVRBX0VWRU5UU19MT1NUOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFU
QV9JTlNUQU5DRV9MT1NTX1BFTkRJTkc6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRB
X1JFRkVSRU5DRV9TUEFDRV9DSEFOR0VfUEVORElORzoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VW
RU5UX0RBVEFfSU5URVJBQ1RJT05fUFJPRklMRV9DSEFOR0VEOgorICAgICAgICBjYXNlIFhSX1RZ
UEVfRVZFTlRfREFUQV9NQUlOX1NFU1NJT05fVklTSUJJTElUWV9DSEFOR0VEX0VYVFg6CisgICAg
ICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX1ZJU0lCSUxJVFlfTUFTS19DSEFOR0VEX0tIUjoK
KyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfUEVSRl9TRVRUSU5HU19FWFQ6CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgiVW5oYW5kbGVkIGV2ZW50IHR5cGUgJWRcbiIsIHJ1bnRpbWVFdmVudC50eXBlKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworWHJSZXN1bHQgT3BlblhSRGV2aWNlOjpiZWdpblNlc3Np
b24oKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3Nlc3Np
b25TdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1JFQURZKTsKKworICAgIGF1dG8gc2Vzc2lvbkJl
Z2luSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclNlc3Npb25CZWdpbkluZm8sIFhSX1RZUEVfU0VT
U0lPTl9CRUdJTl9JTkZPPigpOworICAgIHNlc3Npb25CZWdpbkluZm8ucHJpbWFyeVZpZXdDb25m
aWd1cmF0aW9uVHlwZSA9IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfU1RFUkVP
OworICAgIGF1dG8gcmVzdWx0ID0geHJCZWdpblNlc3Npb24obV9zZXNzaW9uLCAmc2Vzc2lvbkJl
Z2luSW5mbyk7CisjaWYgIUxPR19ESVNBQkxFRAorICAgIGlmIChYUl9GQUlMRUQocmVzdWx0KSkK
KyAgICAgICAgTE9HKFhSLCAiJXMgJXM6ICVzXG4iLCBfX2Z1bmNfXywgInhyQmVnaW5TZXNzaW9u
IiwgcmVzdWx0VG9TdHJpbmcocmVzdWx0LCBtX2luc3RhbmNlKS51dGY4KCkuZGF0YSgpKTsKKyNl
bmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjplbmRTZXNz
aW9uKCkKK3sKKyAgICBBU1NFUlQobV9zZXNzaW9uICE9IFhSX05VTExfSEFORExFKTsKKyAgICB4
ckVuZFNlc3Npb24obV9zZXNzaW9uKTsKICAgICByZXNldFNlc3Npb24oKTsKKyAgICBpZiAoIW1f
dHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5v
dGlmeSBkaWQgZW5kIGV2ZW50CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldKCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBpZiAobV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCkK
KyAgICAgICAgICAgIG1fdHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQtPnNlc3Npb25EaWRFbmQo
KTsKKyAgICB9KTsKK30KKworCitEZXZpY2U6OkZyYW1lRGF0YTo6Vmlld0RhdGEgeHJWaWV3VG9W
aWV3RGF0YShYclZpZXcgdmlldykKK3sKKyAgICBEZXZpY2U6OkZyYW1lRGF0YTo6Vmlld0RhdGEg
ZGF0YTsKKyAgICBkYXRhLmZvdiA9IHsgdmlldy5mb3YuYW5nbGVVcCwgdmlldy5mb3YuYW5nbGVE
b3duLCB2aWV3LmZvdi5hbmdsZUxlZnQsIHZpZXcuZm92LmFuZ2xlUmlnaHQgfTsKKyAgICBkYXRh
LnBvc2Uub3JpZW50YXRpb24gPSB7IHZpZXcucG9zZS5vcmllbnRhdGlvbi54LCB2aWV3LnBvc2Uu
b3JpZW50YXRpb24ueSwgdmlldy5wb3NlLm9yaWVudGF0aW9uLnosIHZpZXcucG9zZS5vcmllbnRh
dGlvbi53IH07CisgICAgZGF0YS5wb3NlLnBvc2l0aW9uID0geyB2aWV3LnBvc2UucG9zaXRpb24u
eCwgdmlldy5wb3NlLnBvc2l0aW9uLnksIHZpZXcucG9zZS5wb3NpdGlvbi56IH07CisgICAgcmV0
dXJuIGRhdGE7Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZy
YW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBwb2xsRXZl
bnRzKCk7CisgICAgICAgIGlmICghaXNTZXNzaW9uUmVhZHkobV9zZXNzaW9uU3RhdGUpKSB7Cisg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIC8vIERldmljZSBub3QgcmVhZHkgb3Igc3Rv
cHBpbmcuIFJlcG9ydCBmcmFtZURhdGEgd2l0aCBpbnZhbGlkIHRyYWNraW5nLgorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gZnJhbWVTdGF0ZSA9IGNyZWF0ZVN0cnVjdHVy
ZTxYckZyYW1lU3RhdGUsIFhSX1RZUEVfRlJBTUVfU1RBVEU+KCk7CisgICAgICAgIGF1dG8gZnJh
bWVXYWl0SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lV2FpdEluZm8sIFhSX1RZUEVfRlJB
TUVfV0FJVF9JTkZPPigpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHhyV2FpdEZyYW1lKG1fc2Vz
c2lvbiwgJmZyYW1lV2FpdEluZm8sICZmcmFtZVN0YXRlKTsKKyAgICAgICAgUkVUVVJOX0lGX0ZB
SUxFRChyZXN1bHQsICJ4cldhaXRGcmFtZSIsIG1faW5zdGFuY2UpOworICAgICAgICBYclRpbWUg
cHJlZGljdGVkVGltZSA9IGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7CisKKyAgICAg
ICAgYXV0byBmcmFtZUJlZ2luSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYckZyYW1lQmVnaW5JbmZv
LCBYUl9UWVBFX0ZSQU1FX0JFR0lOX0lORk8+KCk7CisgICAgICAgIHJlc3VsdCA9IHhyQmVnaW5G
cmFtZShtX3Nlc3Npb24sICZmcmFtZUJlZ2luSW5mbyk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlM
RUQocmVzdWx0LCAieHJCZWdpbkZyYW1lIiwgbV9pbnN0YW5jZSk7CisKKyAgICAgICAgRGV2aWNl
OjpGcmFtZURhdGEgZnJhbWVEYXRhOworICAgICAgICBmcmFtZURhdGEucHJlZGljdGVkRGlzcGxh
eVRpbWUgPSBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOworCisgICAgICAgIGlmIChp
c1Nlc3Npb25BY3RpdmUobV9zZXNzaW9uU3RhdGUpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9j
b25maWd1cmF0aW9uVmlld3MuY29udGFpbnMobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBl
KSk7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBjb25maWd1cmF0aW9uVmlldyA9IG1fY29uZmln
dXJhdGlvblZpZXdzLmdldChtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpOworCisgICAg
ICAgICAgICBhdXRvIHZpZXdMb2NhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld0xvY2F0
ZUluZm8sIFhSX1RZUEVfVklFV19MT0NBVEVfSU5GTz4oKTsKKyAgICAgICAgICAgIHZpZXdMb2Nh
dGVJbmZvLmRpc3BsYXlUaW1lID0gcHJlZGljdGVkVGltZTsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiB1c2UgdGhlIGN1cnJlbnQgcmVmZXJlbmNlIHNwYWNlLgorICAgICAgICAgICAgLy8gdmlld0xv
Y2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3BhY2U7CisKKyAgICAgICAgICAgIHVpbnQzMl90IHZp
ZXdDb3VudCA9IGNvbmZpZ3VyYXRpb25WaWV3LnNpemUoKTsKKyAgICAgICAgICAgIFZlY3RvcjxY
clZpZXc+IHZpZXdzKHZpZXdDb3VudCwgW10geworICAgICAgICAgICAgICAgIFhyVmlldyBvYmpl
Y3Q7CisgICAgICAgICAgICAgICAgc3RkOjptZW1zZXQoJm9iamVjdCwgMCwgc2l6ZW9mKFhyVmll
dykpOworICAgICAgICAgICAgICAgIG9iamVjdC50eXBlID0gWFJfVFlQRV9WSUVXOworICAgICAg
ICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgICAgICB9KCkpOworCisgICAgICAgICAg
ICBhdXRvIHZpZXdTdGF0ZSA9IGNyZWF0ZVN0cnVjdHVyZTxYclZpZXdTdGF0ZSwgWFJfVFlQRV9W
SUVXX1NUQVRFPigpOworICAgICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50T3V0cHV0OworICAg
ICAgICAgICAgcmVzdWx0ID0geHJMb2NhdGVWaWV3cyhtX3Nlc3Npb24sICZ2aWV3TG9jYXRlSW5m
bywgJnZpZXdTdGF0ZSwgdmlld0NvdW50LCAmdmlld0NvdW50T3V0cHV0LCB2aWV3cy5kYXRhKCkp
OworICAgICAgICAgICAgaWYgKCFYUl9GQUlMRUQocmVzdWx0KSkgeworICAgICAgICAgICAgICAg
IGZvciAoYXV0byYgdmlldyA6IHZpZXdzKQorICAgICAgICAgICAgICAgICAgICBmcmFtZURhdGEu
dmlld1Bvc2VzLmFwcGVuZCh4clZpZXdUb1ZpZXdEYXRhKHZpZXcpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2ZyYW1lRGF0YSA9IFdURk1v
dmUoZnJhbWVEYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZnJhbWVEYXRhKSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGF1dG8gZnJhbWVFbmRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVFbmRJ
bmZvLCBYUl9UWVBFX0ZSQU1FX0VORF9JTkZPPigpOworICAgICAgICBmcmFtZUVuZEluZm8uZGlz
cGxheVRpbWUgPSBwcmVkaWN0ZWRUaW1lOworICAgICAgICBmcmFtZUVuZEluZm8uZW52aXJvbm1l
bnRCbGVuZE1vZGUgPSBYUl9FTlZJUk9OTUVOVF9CTEVORF9NT0RFX09QQVFVRTsKKyAgICAgICAg
ZnJhbWVFbmRJbmZvLmxheWVyQ291bnQgPSAwOworICAgICAgICByZXN1bHQgPSB4ckVuZEZyYW1l
KG1fc2Vzc2lvbiwgJmZyYW1lRW5kSW5mbyk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVz
dWx0LCAieHJFbmRGcmFtZSIsIG1faW5zdGFuY2UpOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBQbGF0Zm9ybVhSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9v
cGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL1BsYXRmb3JtWFJPcGVuWFIuaAppbmRleCBhYTJmNzgwZWY5MTI5NjIwZjQ0MTJkYjQ5YTBl
OGEwNDJkNThiNTI5Li41YmViZTY5NjY5MzI3ZGIyYzgxNWI1NTZhZWRkMWNhOTliNDZlMTc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9w
ZW5YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgbmFtZXNwYWNlIFBsYXRmb3JtWFIgewogY2xhc3Mg
T3BlblhSRGV2aWNlIGZpbmFsIDogcHVibGljIERldmljZSB7CiBwdWJsaWM6CiAgICAgT3BlblhS
RGV2aWNlKFhyU3lzdGVtSWQsIFhySW5zdGFuY2UsIFdvcmtRdWV1ZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgfk9wZW5YUkRldmljZSgpOwogICAgIFhyU3lzdGVtSWQgeHJT
eXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KIAogcHJpdmF0ZToKQEAgLTUy
LDEzICs1MSwyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29sbGVjdENvbmZpZ3VyYXRpb25WaWV3
cygpOwogCiAgICAgTGlzdE9mRW5hYmxlZEZlYXR1cmVzIGVudW1lcmF0ZVJlZmVyZW5jZVNwYWNl
cyhYclNlc3Npb24mKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShS
ZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfTsKIAogICAgIFdlYkNvcmU6OkludFNpemUgcmVj
b21tZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlKSBmaW5hbDsKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlKSBmaW5hbDsKICAgICB2b2lkIHNo
dXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzU2Vz
c2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZvaWQgd2FpdFVudGlsU3RvcHBpbmcoKTsKIAorICAgIHZvaWQgcG9sbEV2ZW50cygpOwor
ICAgIFhyUmVzdWx0IGJlZ2luU2Vzc2lvbigpOworICAgIHZvaWQgZW5kU2Vzc2lvbigpOwogICAg
IHZvaWQgcmVzZXRTZXNzaW9uKCk7CisgICAgdm9pZCBoYW5kbGVTZXNzaW9uU3RhdGVDaGFuZ2Uo
KTsKKworICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFs
OwogCiAgICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1hcDxY
clZpZXdDb25maWd1cmF0aW9uVHlwZSwgWHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIElu
dEhhc2g8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPj47CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0
aWVzTWFwIG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzOwpAQCAtNjgsNiArNzYsNyBAQCBw
cml2YXRlOgogICAgIFhyU3lzdGVtSWQgbV9zeXN0ZW1JZDsKICAgICBYckluc3RhbmNlIG1faW5z
dGFuY2U7CiAgICAgWHJTZXNzaW9uIG1fc2Vzc2lvbiB7IFhSX05VTExfSEFORExFIH07CisgICAg
WHJTZXNzaW9uU3RhdGUgbV9zZXNzaW9uU3RhdGUgeyBYUl9TRVNTSU9OX1NUQVRFX1VOS05PV04g
fTsKIAogICAgIFdvcmtRdWV1ZSYgbV9xdWV1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJEZXZpY2UuY3BwCmluZGV4IGE0N2MxZWNhN2RlZGNlZGE1MDUwYWQ5N2JjNDdkODU2
NWJhNTkwZWYuLjU0MDE4ZGE3ZWJiNTNkZDUxOTQyZGU3NjYxNDk2NzJmZjFhYzg0NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKQEAgLTMxLDE0ICszMSwy
OCBAQAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHkuaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIldlYkZha2VYUklucHV0Q29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBGYWtlWFJGcmFtZVRpbWUgPSAxNV9tczsKKwogdm9p
ZCBGYWtlWFJWaWV3OjpzZXRGaWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJ
bml0IGZvdikKIHsKICAgICBtX2ZvdiA9IGZvdjsKIH0KIAorU2ltdWxhdGVkWFJEZXZpY2U6OlNp
bXVsYXRlZFhSRGV2aWNlKCkKKyAgICA6IG1fZnJhbWVUaW1lcigqdGhpcywgJlNpbXVsYXRlZFhS
RGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpCit7CisgICAgbV9zdXBwb3J0c09yaWVudGF0aW9uVHJh
Y2tpbmcgPSB0cnVlOworfQorCitTaW11bGF0ZWRYUkRldmljZTo6flNpbXVsYXRlZFhSRGV2aWNl
KCkKK3sKKyAgICBzdG9wVGltZXIoKTsKK30KKwogdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c2lt
dWxhdGVTaHV0ZG93bkNvbXBsZXRlZCgpCiB7CiAgICAgaWYgKG1fdHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQpCkBAIC00OSw2ICs2MywyNyBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzaHV0
RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKIHsKICAgICBpZiAobV9zdXBwb3J0c1NodXRkb3du
Tm90aWZpY2F0aW9uKQogICAgICAgICBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CisgICAg
c3RvcFRpbWVyKCk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnN0b3BUaW1lcigpCit7
CisgICAgaWYgKG1fZnJhbWVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZyYW1lVGltZXIu
c3RvcCgpOworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQoKQor
eworICAgIGF1dG8gY2FsbGJhY2tzID0gV1RGTW92ZShtX2NhbGxiYWNrcyk7CisgICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKK30KKwor
dm9pZCBTaW11bGF0ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNr
JiYgY2FsbGJhY2spCit7CisgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2sp
KTsKKyAgICBpZiAoIW1fZnJhbWVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2ZyYW1lVGlt
ZXIuc3RhcnRPbmVTaG90KEZha2VYUkZyYW1lVGltZSk7CiB9CiAKIFdlYkZha2VYUkRldmljZTo6
V2ViRmFrZVhSRGV2aWNlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFr
ZVhSRGV2aWNlLmgKaW5kZXggODQ3YmJjYjE3NDQ4NDQ4ZjBlYzdlOGNlYjFiNmZkNmU5ZmFjOTU4
OC4uMzkxYmZjMzQ3ZWVmOWFhYWYxN2JkMmJhOGI2YmE0MzZmMDAwNDZkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCkBAIC02Myw3ICs2Myw4IEBAIHByaXZhdGU6
CiBjbGFzcyBTaW11bGF0ZWRYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZp
Y2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNpbXVsYXRl
ZFhSRGV2aWNlKCkgeyBtX3N1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZyA9IHRydWU7IH0KKyAg
ICBTaW11bGF0ZWRYUkRldmljZSgpOworICAgIH5TaW11bGF0ZWRYUkRldmljZSgpOwogICAgIHZv
aWQgc2V0TmF0aXZlQm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiBnZW9t
ZXRyeSkgeyBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5ID0gZ2VvbWV0cnk7IH0KICAgICB2b2lkIHNl
dFZpZXdlck9yaWdpbihSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvcmlnaW4pIHsgbV92
aWV3ZXJPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KICAgICB2b2lkIHNldEZsb29yT3JpZ2lu
KFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX2Zsb29yT3JpZ2luID0g
V1RGTW92ZShvcmlnaW4pOyB9CkBAIC03NSwxMiArNzYsMjAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkg
ZmluYWwgeyB9CiAgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbjsgfQorICAgIHZvaWQg
aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkg
ZmluYWwgeyB9CisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikg
ZmluYWw7CisKKyAgICB2b2lkIHN0b3BUaW1lcigpOworICAgIHZvaWQgZnJhbWVUaW1lckZpcmVk
KCk7CisKICAgICBPcHRpb25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+PiBtX25hdGl2ZUJv
dW5kc0dlb21ldHJ5OwogICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3ZpZXdlck9y
aWdpbjsKICAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9mbG9vck9yaWdpbjsKICAg
ICBib29sIG1fZW11bGF0ZWRQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZjxGYWtl
WFJWaWV3Pj4gbV92aWV3czsKICAgICBib29sIG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlv
biB7IGZhbHNlIH07CisgICAgVGltZXIgbV9mcmFtZVRpbWVyOworICAgIFZlY3RvcjxSZXF1ZXN0
RnJhbWVDYWxsYmFjaz4gbV9jYWxsYmFja3M7CiB9OwogCiBjbGFzcyBXZWJGYWtlWFJEZXZpY2Ug
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJGYWtlWFJEZXZpY2U+IHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNzky
ZGQ0MTRlNmJiZDQ5OGE5ZTlkZWQxZWM2YzJlNDU3ZmIwZTNkLi44Zjk5MDRmYmU2ZGI1MzEzNTMx
YzVlNTdhNDBmNjRkMzI2NjE1MTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDItMDMg
IFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+IGFuZCBJbWFub2wgRmVy
bmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIENvbXBsZXRlIFhSU2Vz
c2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIxLTAyLTA5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBQZXJtaXNzaW9uIHJlcXVlc3QgQVBJIGZvciBNZWRpYUtleVN5
c3RlbSBhY2Nlc3Mgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMmEx
MDEzNTA1NGU2MzQ1NWQ0YjVmNGUzYmRhMzBjNGM2NWYwZTJhNi4uYjQwNWU1MjVmZGI5Mzc2NGMz
ZWIyODk3YzRhYjAyNDEyM2FlNThmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDMgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFy
QGlnYWxpYS5jb20+IGFuZCBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29t
PgorCisgICAgICAgIENvbXBsZXRlIFhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBFbmFibGUgWFJTZXNzaW9uIFJBRiB0ZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5o
dHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTAyLTA5ICBNYW51ZWwgUmVnbyBDYXNh
c25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFsbG93IHNlbmRpbmcgbW9kaWZp
ZXIga2V5cyBpbiB0ZXN0X2RyaXZlci5zZW5kX2tleXMoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVz
dEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NThhNDIzZmM2YjE5ODExMjkzNWJmZjI5MDcyNzhmZGE5NGZjYzU2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNl
c3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24g
dGhlIG5leHQgZnJhbWUgZm9yIGltbWVyc2l2ZQorUEFTUyBYUkZyYW1lIGdldFZpZXdlclBvc2Ug
dXBkYXRlcyBvbiB0aGUgbmV4dCBmcmFtZSBmb3Igbm9uLWltbWVyc2l2ZQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGM0ODFkMjQ2NjE3ODcxMDIxMGY2
OTIwOTVhZmQzY2NlNjZjMjMzOTMuLmIwNzAxNmFlMDY3MmQ5NjJmYzJmNjIyMGMwYWRlZGYyNjYx
MWUxNDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zCkBAIC02
NDAsNiArNjQwLDcgQEAgd2Via2l0Lm9yZy9iLzIwOTg1OSB3ZWJraXQub3JnL2IvMjE1NjM3IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHIKIHdlYmtpdC5vcmcvYi8yMDk4
NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2Vs
QW5pbWF0aW9uRnJhbWVfaW52YWxpZGhhbmRsZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQu
b3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX2ZlYXR1cmVzX2RldmljZVN1cHBvcnQuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9y
Zy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lv
bl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfY2FsbGJhY2tfY2FsbHMuaHR0cHMuaHRtbCBbIFBhc3Mg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVz
dEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfYXZhaWxhYmlsaXR5Lmh0
dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuaHRt
bCBbIFBhc3MgXQo=
</data>
<flag name="review"
          id="438015"
          type_id="1"
          status="+"
          setter="youennf"
    />
    <flag name="commit-queue"
          id="438016"
          type_id="3"
          status="-"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419993</attachid>
            <date>2021-02-11 08:36:34 -0800</date>
            <delta_ts>2021-02-11 09:26:21 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-220979-20210211173633.patch</filename>
            <type>text/plain</type>
            <size>47964</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkxZmM0MmZmOWM5NmVk
NWRmOGU0MTVhMzI3MWJhMmYzOTRkNjg1OS4uMTJjMzYyYTIxYWU5NzlhMzcxMmJlNmIzZmYwOTM3
MjA5MzE0YjE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIxLTAyLTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRl
eiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246
OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAtIEltcGxlbWVudCB0aGUgcmVuZGVyIGxvb3Ag
Zm9yIGltbWVyc2l2ZSBhbmQgaW5saW5lIFhSIHNlc3Npb25zLgorICAgICAgICAtIEltcGxlbWVu
dCBXZWJYUiByZW5kZXIgc3RhdGUgdXBkYXRlcy4KKyAgICAgICAgLSBDcmVhdGUgdGhlIEZyYW1l
RGF0YSBzdHJ1Y3QgdXNlZCB0byBxdWVyeSBmcmFtZSBzcGVjaWZpYyBkYXRhIGZyb20gWFIgZGV2
aWNlcy4KKyAgICAgICAgLSBVc2Ugd2luZG93IFJBRiBmb3IgaW5saW5lIFhSIHNlc3Npb25zLgor
ICAgICAgICAtIEltcGxlbWVudCBXZWJGYWtlWFJEZXZpY2UgdGVzdGluZyByZW5kZXJpbmcgbG9v
cCB1c2luZyBhIHRpbWVyLgorICAgICAgICAtIEltcGxlbWVudCBPcGVuWFIgc2Vzc2lvbiBzdGF0
ZXMgYW5kIHNlc3Npb24gdHJhY2tpbmcuCisgICAgICAgIC0gSW1wcm92ZSBPcGVuWFIgZXZlbnQg
aGFuZGxpbmcuCisKKyAgICAgICAgVGVzdGVkIGJ5IHRoZSBXZWJYUiBwbGF0Zm9ybSB0ZXN0cy4K
KworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHA6IEFkZCBtX2FjdGl2ZSwg
bV90aW1lIGFuZCBtX3Nlc3Npb24gbWVtYmVycworICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFt
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OldlYlhSRnJhbWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJGcmFtZTo6c2V0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpzZXRB
Y3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6aXNBY3RpdmUgY29uc3QpOgor
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmg6IEFkZCBtX2NvbXBv
c2l0aW9uRGlzYWJsZWQgbWVtYmVyIGFuZCBvdXRwdXQgY2FudmFzIHNldHRlcgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJSZW5kZXJTdGF0ZTo6c2V0T3V0cHV0Q2FudmFzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSUmVuZGVyU3RhdGU6OmNvbXBvc2l0aW9uRGlzYWJsZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJSZW5kZXJTdGF0ZTo6c2V0Q29tcG9zaXRpb25EaXNhYmxlZCk6
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNl
c3Npb246OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246Omlu
aXRpYWxpemUpOiByZXF1aXJlZCB0byBjcmVhdCB0aGUgWFJGcmFtZSB3aXRoIG1ha2VSZWYodGhp
cykKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNl
KTogaW1wbGVtZW50IHJlZmVyZW5jZSBzcGFjZSBjcmVhdGlvbgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOiBpbXBsZW1lbnQgcmVuZGVyIGxv
b3AgZm9yIGltbWVyc2l2ZSBhbmQgaW5saW5lIHNlc3Npb25zCisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNlc3Npb246OmFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKTogaW1wbGVtZW50IFdlYlhSIHJl
bmRlciBzdGF0ZSB1cGRhdGVzCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OmZyYW1l
U2hvdWxkQmVSZW5kZXJlZCBjb25zdCk6IGFkZCBjaGVjayBiYXNlZCBvbiB0aGUgc3BlYyAKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6cmVxdWVzdEZyYW1lKTogaW1wbGVtZW50IGhl
bHBlciBmdW5jdGlvbiB0byBkaXNwYXRjaCBhIGZyYW1lIHJlcXVlc3QgdG8gWFIgZGV2aWNlcwor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpvbkZyYW1lKTogcHJvY2VzcyB0aGUgWFIg
ZnJhbWUgYW5kIGNhbGwgdGhlIFJBRiBjYWxsYmFja3MKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhy
L1dlYlhSU2Vzc2lvbi5oOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5j
cHA6IEltcGxlbWVudCByZW5kZXIgbG9vcCB1c2luZyB3aW5kb3cgcmFmIGxvb3AuCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6V2ViWFJTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpEdW1teUlubGluZURldmljZSk6IEFkZCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVt
bXlJbmxpbmVEZXZpY2U6OnJlcXVlc3RGcmFtZSk6IEFkYXB0IHRvIHRoZSBuZXcgaW50ZXJmYWNl
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJX
ZWJHTExheWVyOjpjYW52YXMgY29uc3QpOiBJbXBsZW1lbnQgY2FudmFzIGdldHRlcgorICAgICAg
ICAqIE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUldlYkdMTGF5ZXI6OmNvbXBvc2l0aW9uRGlzYWJsZWQgY29uc3QpOiBhZGQKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSV2ViR0xMYXllcjo6c2V0Q29tcG9zaXRpb25EaXNhYmxlZCk6IGFkZAor
CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOiBBZGQgRnJhbWVEYXRhIHN0cnVj
dAorCisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOiBJ
bXBsZW1lbnQgcmVuZGVyIGxvb3AgdXNpbmcgT3BlblhSIEFQSQorICAgICAgICAoUGxhdGZvcm1Y
Ujo6T3BlblhSRGV2aWNlOjpyZXNldFNlc3Npb24pOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3Bl
blhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgKFBsYXRm
b3JtWFI6Ok9wZW5YUkRldmljZTo6cG9sbEV2ZW50cyk6IEltcGxlbWVudCBldmVudCBsb29wIHRv
IHF1ZXJ5IG1fc2Vzc2lvblN0YXRlCisgICAgICAgIChQbGF0Zm9ybVhSOjpzZXNzaW9uSXNBY3Rp
dmUpOiBhZGQKKyAgICAgICAgKFBsYXRmb3JtWFI6OnNlc3Npb25Jc1J1bm5pbmcpOiBhZGQKKyAg
ICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6YmVnaW5TZXNzaW9uKToKKyAgICAgICAg
KFBsYXRmb3JtWFI6OnhyVmlld1RvVmlld0RhdGEpOiBoZWxwZXIgZnVuY3Rpb24gdG8gY29udmVy
dCBkYXRhIGZyb20gT3BlblhSCisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJl
cXVlc3RGcmFtZSk6IHN0YXJ0IE9wZW5YUiBmcmFtZSwgcXVlcnkgcG9zZSBhbmQgdmlldyBkYXRh
IAorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjp3YWl0VW50aWxTdG9wcGluZyk6
IHByb3Blcmx5IHdhaXQgZm9yIE9wZW5YUiBldmVudCBiZWZvcmUgZW5kaW5nIHRoZSBzZXNzaW9u
LgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmg6CisKKwor
ICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcDogSW1wbGVtZW50IHJlbmRlciBs
b29wIHVzaW5nIGEgdGltZXIKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpT
aW11bGF0ZWRYUkRldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6
flNpbXVsYXRlZFhSRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNl
OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVs
YXRlZFhSRGV2aWNlOjpzdG9wVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJE
ZXZpY2U6OmZyYW1lVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRl
dmljZTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5o
OgorCiAyMDIxLTAyLTExICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
SGFuZGxlIG1pbi13aWR0aC9taW4taGVpZ2h0OmF1dG8gZm9yIGFzcGVjdC1yYXRpbwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKaW5kZXggOTM1ZGMxMjdjOWQw
N2E3YzhkMjM4NDE1NDU4N2Q1MTM1ODg3YWUxYS4uZjI3ODc2MWIwYTdiN2QyOWQxNzk0MjIzNTBh
MmFhMTk4YTIzYmRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUuY3BwCkBAIC00OCwxMCArNDgsNiBAQCBXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKFJlZjxXZWJY
UlNlc3Npb24+JiYgc2Vzc2lvbikKIAogV2ViWFJGcmFtZTo6fldlYlhSRnJhbWUoKSA9IGRlZmF1
bHQ7CiAKLWNvbnN0IFdlYlhSU2Vzc2lvbiYgV2ViWFJGcmFtZTo6c2Vzc2lvbigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fc2Vzc2lvbjsKLX0KIAogUmVmUHRyPFdlYlhSVmlld2VyUG9zZT4gV2Vi
WFJGcmFtZTo6Z2V0Vmlld2VyUG9zZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJikKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKaW5kZXggODA4YTY3NjRmMGQy
YzVhZTYxZTRkNjU4YzI4MjUwNTc5ZmU1YjYyNy4uMmEyNmFkODZhMmMzMGRhOGMyM2RmYjZjN2Ji
YjkwMzgyZDEyZTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIkRP
TUhpZ2hSZXNUaW1lU3RhbXAuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00NiwxNCArNDcs
MjAgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFJlZjxXZWJY
UlNlc3Npb24+JiYpOwogICAgIH5XZWJYUkZyYW1lKCk7CiAKLSAgICBjb25zdCBXZWJYUlNlc3Np
b24mIHNlc3Npb24oKSBjb25zdDsKKyAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBj
b25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxXZWJYUlZpZXdl
clBvc2U+IGdldFZpZXdlclBvc2UoY29uc3QgV2ViWFJSZWZlcmVuY2VTcGFjZSYpOwogICAgIFJl
ZlB0cjxXZWJYUlBvc2U+IGdldFBvc2UoY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3Bh
Y2UmKTsKIAorICAgIHZvaWQgc2V0VGltZShET01IaWdoUmVzVGltZVN0YW1wIHRpbWUpIHsgbV90
aW1lID0gdGltZTsgfQorICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1fYWN0aXZl
ID0gYWN0aXZlOyB9CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
OyB9CisKIHByaXZhdGU6Ci0gICAgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAg
ICBleHBsaWNpdCBXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYpOwogCisgICAgYm9vbCBt
X2FjdGl2ZSB7IGZhbHNlIH07CisgICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBtX3RpbWU7CiAgICAg
UmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaAppbmRleCAxZTQzNjNmMWYxOTQzMWU0YTFl
Yzk1OGYxYmZhMmI0NzA3NDU3N2EyLi5kYzBkZTRhNjVkMTRmMTYxMDYzZmU1ZmJmZjk0OWRhYjZi
MDUyMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVu
ZGVyU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVy
U3RhdGUuaApAQCAtNTYsNiArNTYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFzZUxheWVy
KFdlYlhSV2ViR0xMYXllciogYmFzZUxheWVyKSB7IG1fYmFzZUxheWVyID0gYmFzZUxheWVyOyB9
CiAKICAgICBIVE1MQ2FudmFzRWxlbWVudCogb3V0cHV0Q2FudmFzKCkgY29uc3QgeyByZXR1cm4g
bV9vdXRwdXRDYW52YXMuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE91dHB1dENhbnZhcyhIVE1MQ2Fu
dmFzRWxlbWVudCogY2FudmFzKSB7IG1fb3V0cHV0Q2FudmFzID0gbWFrZVdlYWtQdHIoY2FudmFz
KTsgfQorCisgICAgYm9vbCBpc0NvbXBvc2l0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tcG9zaXRpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbkVuYWJsZWQoYm9v
bCBjb21wb3NpdGlvbkVuYWJsZWQpIHsgbV9jb21wb3NpdGlvbkVuYWJsZWQgPSBjb21wb3NpdGlv
bkVuYWJsZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJYUlJlbmRlclN0YXRlKE9w
dGlvbmFsPGRvdWJsZT4gZmllbGRPZlZpZXcpOwpAQCAtNjksNiArNzMsNyBAQCBwcml2YXRlOgog
ICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3OyAvLyBpbiBy
YWRpYW5zCiAgICAgUmVmUHRyPFdlYlhSV2ViR0xMYXllcj4gbV9iYXNlTGF5ZXI7CiAgICAgV2Vh
a1B0cjxIVE1MQ2FudmFzRWxlbWVudD4gbV9vdXRwdXRDYW52YXM7CisgICAgYm9vbCBtX2NvbXBv
c2l0aW9uRW5hYmxlZCB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBkOGUy
ZjgxMWMyNDViMGNlYjBhY2VmZWEzZGZlZGE1NGU1MjhiMDA1Li5iZDZjNTAxY2I3ZWM1YTcxY2I3
YTcwN2IxOTk5ZmQ5YmE5Mjg4YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uY3BwCkBAIC01NSwxMSArNTUsMTUgQEAgV2ViWFJTZXNzaW9uOjpXZWJY
UlNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Np
b25Nb2QKICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2
aWNlKSkKICAgICAsIG1fYWN0aXZlUmVuZGVyU3RhdGUoV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRl
KG1vZGUpKQotICAgICwgbV9hbmltYXRpb25UaW1lcigqdGhpcywgJldlYlhSU2Vzc2lvbjo6YW5p
bWF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fdGltZU9yaWdpbihNb25vdG9uaWNUaW1lOjpub3co
KSkKIHsKICAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUp
OwogICAgIG1fZGV2aWNlLT5zZXRUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudChtYWtlV2Vha1B0
cigqdGhpcykpOwogCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci8jcmVmLWZvci1kb20teHJyZWZlcmVuY2VzcGFjZXR5cGUtdmlld2VyJUUyJTkxJUEyCisgICAg
Ly8gRXZlcnkgc2Vzc2lvbiBNVVNUIHN1cHBvcnQgdmlld2VyIFhSUmVmZXJlbmNlU3BhY2VzLgor
ICAgIG1fZGV2aWNlLT5pbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5
cGU6OlZpZXdlcik7CisKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIApAQCAtMTk4LDY2ICsy
MDIsNTEgQEAgdm9pZCBXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVuY2VTcGFjZShYUlJlZmVy
ZW5jZVNwYWNlVHlwZSB0eXBlLCBSZXF1ZXN0UmVmZXIKICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisKICAgICAvLyAxLiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBQcm9taXNlLgogICAgIC8vIDIuIFJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0eXBl
XSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIC8vICAyLjEuIENyZWF0ZSBhIHJl
ZmVyZW5jZSBzcGFjZSwgcmVmZXJlbmNlU3BhY2UsIHdpdGggdGhlIFhSUmVmZXJlbmNlU3BhY2VU
eXBlIHR5cGUuCi0gICAgICAgIC8vICAyLjIuIElmIHJlZmVyZW5jZVNwYWNlIGlzIG51bGwsIHJl
amVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3Rl
cHMuCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB0eXBl
XShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIC8vIDIuMS4gSWYgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHJlZmVyZW5j
ZSBzcGFjZSBpcyBzdXBwb3J0ZWQgZm9yIHR5cGUgYW5kIHNlc3Npb24gaXMgZmFsc2UsIHF1ZXVl
IGEgdGFzayB0byByZWplY3QgcHJvbWlzZQorICAgICAgICAvLyB3aXRoIGEgTm90U3VwcG9ydGVk
RXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICBpZiAoIXJlZmVyZW5jZVNwYWNl
SXNTdXBwb3J0ZWQodHlwZSkpIHsKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH0pOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIu
Z2l0aHViLmlvL3dlYnhyLyNjcmVhdGUtYS1yZWZlcmVuY2Utc3BhY2UKLSAgICAgICAgUmVmUHRy
PFdlYlhSUmVmZXJlbmNlU3BhY2U+IHJlZmVyZW5jZVNwYWNlOwotICAgICAgICBpZiAodHlwZSA9
PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQotICAgICAgICAgICAgcmVmZXJl
bmNlU3BhY2UgPSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KSwgbWFrZVJlZigqdGhpcyksIHR5cGUpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShk
b3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKLQotICAg
ICAgICAvLyAgMi4zLiBSZXNvbHZlIHByb21pc2Ugd2l0aCByZWZlcmVuY2VTcGFjZS4KLSAgICAg
ICAgLy8gMy4gUmV0dXJuIHByb21pc2UuCi0gICAgICAgIHByb21pc2UucmVzb2x2ZShyZWZlcmVu
Y2VTcGFjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgLy8gMi4yLiBTZXQgdXAgYW55IHBs
YXRmb3JtIHJlc291cmNlcyByZXF1aXJlZCB0byB0cmFjayByZWZlcmVuY2Ugc3BhY2VzIG9mIHR5
cGUgdHlwZS4KKyAgICAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVSZWZlcmVuY2VTcGFjZSh0eXBl
KTsKKworICAgICAgICAvLyAyLjMuIFF1ZXVlIGEgdGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpXZWJYUiwgW3RoaXMsIHR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11
dGFibGUgeworICAgICAgICAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAg
ICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKKyAgICAgICAgICAgIC8vIDIuNC4gQ3JlYXRlIGEgcmVmZXJlbmNlIHNwYWNlLCBy
ZWZlcmVuY2VTcGFjZSwgd2l0aCB0eXBlIGFuZCBzZXNzaW9uLgorICAgICAgICAgICAgLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNw
YWNlCisgICAgICAgICAgICBSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4gcmVmZXJlbmNlU3Bh
Y2U7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRl
ZEZsb29yKQorICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJSZWZl
cmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7CisKKyAg
ICAgICAgICAgIC8vIDIuNS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVmZXJlbmNlU3BhY2UuCisg
ICAgICAgICAgICBwcm9taXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12b2lkIFdlYlhSU2Vzc2lvbjo6YW5pbWF0
aW9uVGltZXJGaXJlZCgpCi17Ci0gICAgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1lc3RhbXAgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKLQotICAgIGlmIChtX2NhbGxiYWNrcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIFRPRE86IHJldHJpZXZlIGZyYW1lIGZyb20gcGxhdGZv
cm0uCi0gICAgYXV0byBmcmFtZSA9IFdlYlhSRnJhbWU6OmNyZWF0ZSgqdGhpcyk7Ci0KLSAgICBt
X3J1bm5pbmdDYWxsYmFja3Muc3dhcChtX2NhbGxiYWNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxs
YmFjayA6IG1fcnVubmluZ0NhbGxiYWNrcykgewotICAgICAgICBpZiAoY2FsbGJhY2stPmlzQ2Fu
Y2VsbGVkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY2FsbGJhY2stPmhhbmRs
ZUV2ZW50KG1fbGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wLnNlY29uZHNTaW5jZUVwb2NoKCku
bWlsbGlzZWNvbmRzKCksIGZyYW1lLmdldCgpKTsKLSAgICB9Ci0KLSAgICBtX3J1bm5pbmdDYWxs
YmFja3MuY2xlYXIoKTsKLX0KLQotdm9pZCBXZWJYUlNlc3Npb246OnNjaGVkdWxlQW5pbWF0aW9u
KCkKLXsKLSAgICBpZiAobV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAobV9lbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVE9ETzog
dXNlIGRldmljZSdzIHJlZnJlc2ggcmF0ZS4gTGV0J3Mgc3RhcnQgd2l0aCA2MGZwcy4KLSAgICBT
ZWNvbmRzIGFuaW1hdGlvbkludGVydmFsID0gMTVfbXM7Ci0gICAgU2Vjb25kcyBzY2hlZHVsZURl
bGF5ID0gc3RkOjptYXgoYW5pbWF0aW9uSW50ZXJ2YWwgLSAoTW9ub3RvbmljVGltZTo6bm93KCkg
LSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcCksIDBfcyk7Ci0gICAgbV9hbmltYXRpb25U
aW1lci5zdGFydE9uZVNob3Qoc2NoZWR1bGVEZWxheSk7Ci19Ci0KIC8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnNlc3Npb24tcmVxdWVzdGFuaW1hdGlvbmZy
YW1lCiB1bnNpZ25lZCBXZWJYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25GcmFtZShSZWY8WFJG
cmFtZVJlcXVlc3RDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKKyAgICAvLyBJZ25vcmUgYW55IG5l
dyBmcmFtZSByZXF1ZXN0cyBvbmNlIHRoZSBzZXNzaW9uIGlzIGVuZGVkLgorICAgIGlmIChtX2Vu
ZGVkKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIC8vIDEuIExldCBzZXNzaW9uIGJlIHRoZSB0
YXJnZXQgWFJTZXNzaW9uIG9iamVjdC4KICAgICAvLyAyLiBJbmNyZW1lbnQgc2Vzc2lvbidzIGFu
aW1hdGlvbiBmcmFtZSBjYWxsYmFjayBpZGVudGlmaWVyIGJ5IG9uZS4KICAgICB1bnNpZ25lZCBu
ZXdJZCA9IG1fbmV4dENhbGxiYWNrSWQrKzsKQEAgLTI2Nyw3ICsyNTYsMTEgQEAgdW5zaWduZWQg
V2ViWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUmVmPFhSRnJhbWVSZXF1ZXN0Q2Fs
bGJhY2s+JiYgY2FsbGIKICAgICBjYWxsYmFjay0+c2V0Q2FsbGJhY2tJZChuZXdJZCk7CiAgICAg
bV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIHNjaGVkdWxlQW5p
bWF0aW9uKCk7CisgICAgLy8gU2NyaXB0IGNhbiBhZGQgbXVsdGlwbGUgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lIGNhbGxiYWNrcyBidXQgd2Ugc2hvdWxkIG9ubHkgcmVxdWVzdCBhIGRldmljZSBmcmFt
ZSBvbmNlLgorICAgIC8vIFdoZW4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGlzIGNhbGxlZCBkdXJp
bmcgcHJvY2Vzc2luZyBSQUYgY2FsbGJhY2tzIHRoZSBuZXh0IHJlcXVlc3RGcmFtZSBpcyBzY2hl
ZHVsZWQKKyAgICAvLyBhdCB0aGUgZW5kIG9mIFdlYlhSU2Vzc2lvbjo6b25GcmFtZSgpIHRvIHBy
ZXZlbnQgcmVxdWVzdGluZyBhIG5ldyBmcmFtZSBiZWZvcmUgdGhlIGN1cnJlbnQgb25lIGhhcyBl
bmRlZC4KKyAgICBpZiAobV9jYWxsYmFja3Muc2l6ZSgpID09IDEpCisgICAgICAgIHJlcXVlc3RG
cmFtZSgpOwogCiAgICAgLy8gNC4gUmV0dXJuIHNlc3Npb24ncyBhbmltYXRpb24gZnJhbWUgY2Fs
bGJhY2sgaWRlbnRpZmllcidzIGN1cnJlbnQgdmFsdWUuCiAgICAgcmV0dXJuIG5ld0lkOwpAQCAt
Mjg2LDE3ICsyNzksOSBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6Y2FuY2VsQW5pbWF0aW9uRnJhbWUo
dW5zaWduZWQgY2FsbGJhY2tJZCkKICAgICB9KTsKIAogICAgIGlmIChwb3NpdGlvbiAhPSBub3RG
b3VuZCkgewotICAgICAgICBtX2NhbGxiYWNrc1twb3NpdGlvbl0tPmNhbmNlbCgpOwotICAgICAg
ICBtX2NhbGxiYWNrcy5yZW1vdmUocG9zaXRpb24pOworICAgICAgICBtX2NhbGxiYWNrc1twb3Np
dGlvbl0tPnNldEZpcmVkT3JDYW5jZWxsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQot
ICAgIHBvc2l0aW9uID0gbV9ydW5uaW5nQ2FsbGJhY2tzLmZpbmRNYXRjaGluZyhbY2FsbGJhY2tJ
ZF0gKGF1dG8mIGl0ZW0pIHsKLSAgICAgICAgcmV0dXJuIGl0ZW0tPmNhbGxiYWNrSWQoKSA9PSBj
YWxsYmFja0lkOwotICAgIH0pOwotCi0gICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKQotICAg
ICAgICBtX3J1bm5pbmdDYWxsYmFja3NbcG9zaXRpb25dLT5jYW5jZWwoKTsKIH0KIAogLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jbmF0aXZlLXdlYmdsLWZyYW1lYnVm
ZmVyLXJlc29sdXRpb24KQEAgLTQyMCw2ICs0MDUsMTM4IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpz
ZXNzaW9uRGlkRW5kKCkKICAgICBzaHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbTo6WWVzKTsKIH0K
IAordm9pZCBXZWJYUlNlc3Npb246OmFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKCkKK3sKKyAgICAv
LyBodHRwczogLy9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jYXBwbHktdGhlLXBlbmRp
bmctcmVuZGVyLXN0YXRlCisgICAgLy8gMS4gTGV0IGFjdGl2ZVN0YXRlIGJlIHNlc3Npb27igJlz
IGFjdGl2ZSByZW5kZXIgc3RhdGUuCisgICAgLy8gMi4gTGV0IG5ld1N0YXRlIGJlIHNlc3Npb27i
gJlzIHBlbmRpbmcgcmVuZGVyIHN0YXRlLgorICAgIC8vIDMuIFNldCBzZXNzaW9u4oCZcyBwZW5k
aW5nIHJlbmRlciBzdGF0ZSB0byBudWxsLgorICAgIGF1dG8gbmV3U3RhdGUgPSBtX3BlbmRpbmdS
ZW5kZXJTdGF0ZTsKKyAgICBBU1NFUlQobmV3U3RhdGUpOworCisgICAgLy8gNC4gTGV0IG9sZEJh
c2VMYXllciBiZSBhY3RpdmVTdGF0ZeKAmXMgYmFzZUxheWVyLgorICAgIC8vIDUuIExldCBvbGRM
YXllcnMgYmUgYWN0aXZlU3RhdGXigJlzIGxheWVycy4KKyAgICAvLyBGSVhNRTogdGhvc2UgYXJl
IG9ubHkgbmVlZGVkIGZvciBzdGVwIDYuMi4KKworICAgIC8vIDYuMSBTZXQgYWN0aXZlU3RhdGUg
dG8gbmV3U3RhdGUuCisgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZSA9IG5ld1N0YXRlOworCisgICAg
Ly8gNi4yIElmIG9sZEJhc2VMYXllciBpcyBub3QgZXF1YWwgdG8gYWN0aXZlU3RhdGXigJlzIGJh
c2VMYXllciwgb2xkTGF5ZXJzIGlzIG5vdCBlcXVhbCB0byBhY3RpdmVTdGF0ZeKAmXMgbGF5ZXJz
LCBvciB0aGUgZGltZW5zaW9ucyBvZiBhbnkgb2YgdGhlIGxheWVycyBoYXZlIGNoYW5nZWQsIHVw
ZGF0ZSB0aGUgdmlld3BvcnRzIGZvciBzZXNzaW9uLgorICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dGhpcy4KKworICAgIC8vIDYuMyBJZiBhY3RpdmVTdGF0ZeKAmXMgaW5saW5lVmVydGljYWxGaWVs
ZE9mVmlldyBpcyBsZXNzIHRoYW4gc2Vzc2lvbuKAmXMgbWluaW11bSBpbmxpbmUgZmllbGQgb2Yg
dmlldyBzZXQgYWN0aXZlU3RhdGXigJlzIGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgdG8gc2Vz
c2lvbuKAmXMgbWluaW11bSBpbmxpbmUgZmllbGQgb2Ygdmlldy4KKyAgICBpZiAobV9hY3RpdmVS
ZW5kZXJTdGF0ZS0+aW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpIDwgbV9taW5pbXVtSW5saW5l
Rk9WKQorICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRJbmxpbmVWZXJ0aWNhbEZpZWxk
T2ZWaWV3KG1fbWluaW11bUlubGluZUZPVik7CisKKyAgICAvLyA2LjQgSWYgYWN0aXZlU3RhdGXi
gJlzIGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcgaXMgZ3JlYXRlciB0aGFuIHNlc3Npb27igJlz
IG1heGltdW0gaW5saW5lIGZpZWxkIG9mIHZpZXcgc2V0IGFjdGl2ZVN0YXRl4oCZcyBpbmxpbmVW
ZXJ0aWNhbEZpZWxkT2ZWaWV3IHRvIHNlc3Npb27igJlzIG1heGltdW0gaW5saW5lIGZpZWxkIG9m
IHZpZXcuCisgICAgaWYgKG1fYWN0aXZlUmVuZGVyU3RhdGUtPmlubGluZVZlcnRpY2FsRmllbGRP
ZlZpZXcoKSA+IG1fbWF4aW11bUlubGluZUZPVikKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0
ZS0+c2V0SW5saW5lVmVydGljYWxGaWVsZE9mVmlldyhtX21heGltdW1JbmxpbmVGT1YpOworCisg
ICAgLy8gNi41IElmIGFjdGl2ZVN0YXRl4oCZcyBkZXB0aE5lYXIgaXMgbGVzcyB0aGFuIHNlc3Np
b27igJlzIG1pbmltdW0gbmVhciBjbGlwIHBsYW5lIHNldCBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhO
ZWFyIHRvIHNlc3Npb27igJlzIG1pbmltdW0gbmVhciBjbGlwIHBsYW5lLgorICAgIGlmIChtX2Fj
dGl2ZVJlbmRlclN0YXRlLT5kZXB0aE5lYXIoKSA8IG1fbWluaW11bU5lYXJDbGlwUGxhbmUpCisg
ICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldERlcHRoTmVhcihtX21pbmltdW1OZWFyQ2xp
cFBsYW5lKTsKKworICAgIC8vIDYuNiBJZiBhY3RpdmVTdGF0ZeKAmXMgZGVwdGhGYXIgaXMgZ3Jl
YXRlciB0aGFuIHNlc3Npb27igJlzIG1heGltdW0gZmFyIGNsaXAgcGxhbmUgc2V0IGFjdGl2ZVN0
YXRl4oCZcyBkZXB0aEZhciB0byBzZXNzaW9u4oCZcyBtYXhpbXVtIGZhciBjbGlwIHBsYW5lLgor
ICAgIGlmIChtX2FjdGl2ZVJlbmRlclN0YXRlLT5kZXB0aEZhcigpID4gbV9tYXhpbXVtRmFyQ2xp
cFBsYW5lKQorICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXREZXB0aEZhcihtX21heGlt
dW1GYXJDbGlwUGxhbmUpOworCisgICAgLy8gNi43IExldCBiYXNlTGF5ZXIgYmUgYWN0aXZlU3Rh
dGXigJlzIGJhc2VMYXllci4KKyAgICBhdXRvIGJhc2VMYXllciA9IG1fYWN0aXZlUmVuZGVyU3Rh
dGUtPmJhc2VMYXllcigpOworCisgICAgLy8gNi44IFNldCBhY3RpdmVTdGF0ZeKAmXMgY29tcG9z
aXRpb24gZW5hYmxlZCBhbmQgb3V0cHV0IGNhbnZhcyBhcyBmb2xsb3dzOgorICAgIGlmIChtX21v
ZGUgPT0gWFJTZXNzaW9uTW9kZTo6SW5saW5lICYmIGlzPFdlYlhSV2ViR0xMYXllcj4oYmFzZUxh
eWVyKSAmJiAhYmFzZUxheWVyLT5pc0NvbXBvc2l0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIG1f
YWN0aXZlUmVuZGVyU3RhdGUtPnNldENvbXBvc2l0aW9uRW5hYmxlZChmYWxzZSk7CisgICAgICAg
IG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldE91dHB1dENhbnZhcyhiYXNlTGF5ZXItPmNhbnZhcygp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRDb21wb3Np
dGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldE91dHB1
dENhbnZhcyhudWxscHRyKTsKKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5n
aXRodWIuaW8vd2VieHIvI3Nob3VsZC1iZS1yZW5kZXJlZAorYm9vbCBXZWJYUlNlc3Npb246OmZy
YW1lU2hvdWxkQmVSZW5kZXJlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2FjdGl2ZVJlbmRlclN0
YXRlLT5iYXNlTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZGUg
PT0gWFJTZXNzaW9uTW9kZTo6SW5saW5lICYmICFtX2FjdGl2ZVJlbmRlclN0YXRlLT5vdXRwdXRD
YW52YXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdEZyYW1lKCkKK3sKKyAgICBtX2RldmljZS0+cmVxdWVz
dEZyYW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiBmcmFt
ZURhdGEpIHsKKyAgICAgICAgb25GcmFtZShXVEZNb3ZlKGZyYW1lRGF0YSkpOworICAgIH0pOwor
fQorCit2b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YSYmIGZyYW1lRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKG1fZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFF1ZXVlIGEgdGFzayB0byBw
ZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHMuCisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIGZyYW1lRGF0YSA9IFdURk1vdmUo
ZnJhbWVEYXRhKV0oKSB7CisgICAgICAgIGlmIChtX2VuZGVkKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAvLyAgMS5MZXQgbm93IGJlIHRoZSBjdXJyZW50IGhpZ2ggcmVzb2x1dGlvbiB0
aW1lLgorICAgICAgICBhdXRvIG5vdyA9IChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9y
aWdpbikubWlsbGlzZWNvbmRzKCk7CisKKyAgICAgICAgYXV0byBmcmFtZSA9IFdlYlhSRnJhbWU6
OmNyZWF0ZShtYWtlUmVmKCp0aGlzKSk7CisgICAgICAgIC8vICAyLkxldCBmcmFtZSBiZSBzZXNz
aW9u4oCZcyBhbmltYXRpb24gZnJhbWUuCisgICAgICAgIC8vICAzLlNldCBmcmFtZeKAmXMgdGlt
ZSB0byBmcmFtZVRpbWUuCisgICAgICAgIGZyYW1lLT5zZXRUaW1lKHN0YXRpY19jYXN0PERPTUhp
Z2hSZXNUaW1lU3RhbXA+KGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSkpOworCisgICAg
ICAgIC8vIDQuIEZvciBlYWNoIHZpZXcgaW4gbGlzdCBvZiB2aWV3cywgc2V0IHZpZXfigJlzIHZp
ZXdwb3J0IG1vZGlmaWFibGUgZmxhZyB0byB0cnVlLgorICAgICAgICAvLyA1LiBJZiB0aGUgYWN0
aXZlIGZsYWcgb2YgYW55IHZpZXcgaW4gdGhlIGxpc3Qgb2Ygdmlld3MgaGFzIGNoYW5nZWQgc2lu
Y2UgdGhlIGxhc3QgWFIgYW5pbWF0aW9uIGZyYW1lLCB1cGRhdGUgdGhlIHZpZXdwb3J0cy4KKyAg
ICAgICAgLy8gRklYTUU6IGltcGxlbWVudC4KKworICAgICAgICAvLyBGSVhNRTogSSBtb3ZlZCBz
dGVwIDcgYmVmb3JlIDYgYmVjYXVzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vaW1tZXJzaXZlLXdl
Yi93ZWJ4ci9pc3N1ZXMvMTE2NAorICAgICAgICAvLyA3LklmIHNlc3Npb27igJlzIHBlbmRpbmcg
cmVuZGVyIHN0YXRlIGlzIG5vdCBudWxsLCBhcHBseSB0aGUgcGVuZGluZyByZW5kZXIgc3RhdGUu
CisgICAgICAgIGlmIChtX3BlbmRpbmdSZW5kZXJTdGF0ZSkKKyAgICAgICAgICAgIGFwcGx5UGVu
ZGluZ1JlbmRlclN0YXRlKCk7CisKKyAgICAgICAgLy8gNi4gSWYgdGhlIGZyYW1lIHNob3VsZCBi
ZSByZW5kZXJlZCBmb3Igc2Vzc2lvbjoKKyAgICAgICAgaWYgKGZyYW1lU2hvdWxkQmVSZW5kZXJl
ZCgpKSB7CisgICAgICAgICAgICAvLyA2LjEuU2V0IHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVu
dGx5IHJ1bm5pbmcgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcyB0byBiZSBzZXNzaW9u4oCZcyBs
aXN0IG9mIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MuCisgICAgICAgICAgICAvLyA2LjIuU2V0
IHNlc3Npb27igJlzIGxpc3Qgb2YgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcyB0byB0aGUgZW1w
dHkgbGlzdC4KKyAgICAgICAgICAgIGF1dG8gY2FsbGJhY2tzID0gbV9jYWxsYmFja3M7CisKKyAg
ICAgICAgICAgIC8vIDYuMy5TZXQgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIHRvIHRydWUuCisg
ICAgICAgICAgICBmcmFtZS0+c2V0QWN0aXZlKHRydWUpOworCisgICAgICAgICAgICAvLyA2LjQu
QXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCisgICAgICAgICAgICAvLyBGSVhNRTogaW1w
bGVtZW50LgorCisgICAgICAgICAgICAvLyA2LjUuRm9yIGVhY2ggZW50cnkgaW4gc2Vzc2lvbuKA
mXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzLCBp
biBvcmRlcjoKKyAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpIHsK
KyAgICAgICAgICAgICAgICAvLyAgNi42LklmIHRoZSBlbnRyeeKAmXMgY2FuY2VsbGVkIGJvb2xl
YW4gaXMgdHJ1ZSwgY29udGludWUgdG8gdGhlIG5leHQgZW50cnkuCisgICAgICAgICAgICAgICAg
aWYgKGNhbGxiYWNrLT5pc0ZpcmVkT3JDYW5jZWxsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgY2FsbGJhY2stPnNldEZpcmVkT3JDYW5jZWxsZWQo
KTsKKyAgICAgICAgICAgICAgICAvLyAgNi43Lkludm9rZSB0aGUgV2ViIElETCBjYWxsYmFjayBm
dW5jdGlvbiBmb3IgZW50cnksIHBhc3Npbmcgbm93IGFuZCBmcmFtZSBhcyB0aGUgYXJndW1lbnRz
CisgICAgICAgICAgICAgICAgY2FsbGJhY2stPmhhbmRsZUV2ZW50KG5vdywgZnJhbWUuZ2V0KCkp
OworCisgICAgICAgICAgICAgICAgLy8gIDYuOC5JZiBhbiBleGNlcHRpb24gaXMgdGhyb3duLCBy
ZXBvcnQgdGhlIGV4Y2VwdGlvbi4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIDYuOS5T
ZXQgc2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUg
Y2FsbGJhY2tzIHRvIHRoZSBlbXB0eSBsaXN0LgorICAgICAgICAgICAgbV9jYWxsYmFja3MucmVt
b3ZlQWxsTWF0Y2hpbmcoW10oYXV0byYgY2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2stPmlzRmlyZWRPckNhbmNlbGxlZCgpOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIC8vIDYuMTAuU2V0IGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiB0byBmYWxzZS4K
KyAgICAgICAgICAgIC8vIElmIHRoZSBzZXNzaW9uIGlzIGVuZGVkLCBtX2FuaW1hdGlvbkZyYW1l
LT5zZXRBY3RpdmUgZmFsc2UgaXMgc2V0IGluIHNodXRkb3duKCkuCisgICAgICAgICAgICBmcmFt
ZS0+c2V0QWN0aXZlKGZhbHNlKTsKKworICAgICAgICAgICAgaWYgKCFtX2NhbGxiYWNrcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgcmVxdWVzdEZyYW1lKCk7CisgICAgICAgIH0KKworICAg
IH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAppbmRleCA1
NTU0MzBjOGMzZjczMTIzMWFhZjRmMGMzZmZiNTgyOWQ2OTI5YjM2Li5kODM2M2E1YzkzMWNmNTBm
N2I2ZTMxOWFlZWRiM2U4YTIzMzRmZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTZXNzaW9uLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgi
CiAjaW5jbHVkZSAiV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgiCiAjaW5jbHVkZSAiV2ViWFJSZW5k
ZXJTdGF0ZS5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKQEAgLTEwOSwxMSArMTA5LDEzIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzaHV0ZG93bihJbml0aWF0ZWRCeVN5c3RlbSk7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVNodXRkb3duKCk7CiAKLSAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQo
KTsKLSAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7Ci0KICAgICBib29sIHJlZmVyZW5jZVNw
YWNlSXNTdXBwb3J0ZWQoWFJSZWZlcmVuY2VTcGFjZVR5cGUpIGNvbnN0OwogCisgICAgYm9vbCBm
cmFtZVNob3VsZEJlUmVuZGVyZWQoKSBjb25zdDsKKyAgICB2b2lkIHJlcXVlc3RGcmFtZSgpOwor
ICAgIHZvaWQgb25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmKTsKKyAgICB2
b2lkIGFwcGx5UGVuZGluZ1JlbmRlclN0YXRlKCk7CisKICAgICBYUkVudmlyb25tZW50QmxlbmRN
b2RlIG1fZW52aXJvbm1lbnRCbGVuZE1vZGU7CiAgICAgWFJJbnRlcmFjdGlvbk1vZGUgbV9pbnRl
cmFjdGlvbk1vZGU7CiAgICAgWFJWaXNpYmlsaXR5U3RhdGUgbV92aXNpYmlsaXR5U3RhdGU7CkBA
IC0xMjYsMTMgKzEyOCwxNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8UGxhdGZvcm1YUjo6RGV2
aWNlPiBtX2RldmljZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9hY3RpdmVSZW5k
ZXJTdGF0ZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9wZW5kaW5nUmVuZGVyU3Rh
dGU7CisgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPcmlnaW47CiAKICAgICB1bnNpZ25lZCBtX25l
eHRDYWxsYmFja0lkIHsgMSB9OwogICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFj
az4+IG1fY2FsbGJhY2tzOwotICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFjaz4+
IG1fcnVubmluZ0NhbGxiYWNrczsKIAotICAgIFRpbWVyIG1fYW5pbWF0aW9uVGltZXI7Ci0gICAg
TW9ub3RvbmljVGltZSBtX2xhc3RBbmltYXRpb25GcmFtZVRpbWVzdGFtcDsKKyAgICBkb3VibGUg
bV9taW5pbXVtSW5saW5lRk9WIHsgMC4wIH07CisgICAgZG91YmxlIG1fbWF4aW11bUlubGluZUZP
ViB7IHBpRmxvYXQgfTsKKworICAgIC8vIEluIG1ldGVycy4KKyAgICBkb3VibGUgbV9taW5pbXVt
TmVhckNsaXBQbGFuZSB7IDAuMSB9OworICAgIGRvdWJsZSBtX21heGltdW1GYXJDbGlwUGxhbmUg
eyAxMDAwLjAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKaW5kZXggNTI1MzhjOTM5NjcwM2Y2OThl
ZWNkZTFhNTZhMjE5ZDdiOTBlZWU2NC4uODUwNjJmZDUzZDZmMGQyYWQ4OTVlZjhkM2JkMWUwOTlh
YTBiM2Q4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5
c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU1dlYlhSU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIkpTWFJSZWZlcmVuY2VTcGFjZVR5cGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisj
aW5jbHVkZSAiUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNDksMTEgKzUwLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJTeXN0ZW0pOwog
Ci1XZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OkR1bW15SW5saW5lRGV2aWNlKCkKLXsK
LSAgICBzZXRFbmFibGVkRmVhdHVyZXMoWFJTZXNzaW9uTW9kZTo6SW5saW5lLCB7IFhSUmVmZXJl
bmNlU3BhY2VUeXBlOjpWaWV3ZXIgfSk7Ci19Ci0KIFJlZjxXZWJYUlN5c3RlbT4gV2ViWFJTeXN0
ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSU3lzdGVtKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpKTsKQEAgLTYxLDYgKzU3LDcgQEAgUmVmPFdlYlhSU3lzdGVtPiBXZWJYUlN5c3Rl
bTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnQKIAog
V2ViWFJTeXN0ZW06OldlYlhSU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpCisgICAgLCBtX2RlZmF1bHRJbmxpbmVEZXZpY2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKIHsKICAgICBtX2lubGluZVhSRGV2aWNlID0gbWFrZVdlYWtQdHIobV9kZWZhdWx0SW5saW5l
RGV2aWNlKTsKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTQ4Niw2ICs0ODMsNTEgQEAgdm9p
ZCBXZWJYUlN5c3RlbTo6c2Vzc2lvbkVuZGVkKFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKICAgICBt
X2lubGluZVNlc3Npb25zLnJlbW92ZShzZXNzaW9uKTsKIH0KIAorY2xhc3MgSW5saW5lUmVxdWVz
dEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2sgZmluYWw6IHB1YmxpYyBSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVDYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbmxpbmVSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUoY2FsbGJhY2spKSk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGdW5jdGlvbjx2b2lkKCk+
JiYgY2FsbGJhY2spCisgICAgICAgIDogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soJnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSAKKyAg
ICB7CisgICAgfQorCisgICAgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZlbnQoZG91Ymxl
KSBmaW5hbAorICAgIHsKKyAgICAgICAgbV9jYWxsYmFjaygpOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KKworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jYWxsYmFjazsKK307CisKKworV2Vi
WFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpEdW1teUlubGluZURldmljZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIDogQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCit7CisgICAgc2V0RW5hYmxl
ZEZlYXR1cmVzKFhSU2Vzc2lvbk1vZGU6OklubGluZSwgeyBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6
Vmlld2VyIH0pOworfQorCit2b2lkIFdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6cmVx
dWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIC8vIElubGluZSBYUiBzZXNzaW9ucyByZWx5IG9uIGRvY3VtZW50LnJlcXVlc3RB
bmltYXRpb25GcmFtZSB0byBwZXJmb3JtIHRoZSByZW5kZXIgbG9vcC4KKyAgICBhdXRvIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByYWYgPSBJbmxpbmVS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAg
ICBjYWxsYmFjayh7IH0pOworICAgIH0pOworCisgICAgZG9jdW1lbnQtPnJlcXVlc3RBbmltYXRp
b25GcmFtZShyYWYpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
aAppbmRleCBjNzYyZDQ2YWMwZTkwNGEzOTgzZDM5N2Y2ODY1NjFkNGMxNjViMzU1Li4xZGU4Yjc1
Yjc5NTA2N2YzMWEwOWJjYzY3MDcwY2RiMThjNmYyYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCkBAIC0xMDQsMTMgKzEwNCwxNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNYUlBlcm1pc3Npb25HcmFudGVkKFhSU2Vzc2lvbk1vZGUsIGNvbnN0IFhSU2Vz
c2lvbkluaXQmLCBQbGF0Zm9ybVhSOjpEZXZpY2UqLCBKU0M6OkpTR2xvYmFsT2JqZWN0JikgY29u
c3Q7CiAKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkZWZh
dWx0LWlubGluZS14ci1kZXZpY2UKLSAgICBjbGFzcyBEdW1teUlubGluZURldmljZSBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgeworICAgIGNsYXNzIER1bW15SW5saW5lRGV2aWNl
IGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlciB7CiAgICAgcHVibGljOgotICAgICAgICBEdW1teUlubGluZURldmljZSgp
OworICAgICAgICBleHBsaWNpdCBEdW1teUlubGluZURldmljZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9CiAgICAgICAgIHZv
aWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsIHsgfQorICAgICAgICB2b2lk
IGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUp
IGZpbmFsIHsgfTsKKworICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZp
Y2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIH07CiAgICAgRHVtbXlJbmxp
bmVEZXZpY2UgbV9kZWZhdWx0SW5saW5lRGV2aWNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKaW5kZXggNTEzMGYyZWZjZGZmM2E4YTMy
MTBhMWUxZjU5MTQ4N2RlNTA1NGU5YS4uMGU1NzNiMjJkNjU3ZjhlY2FkNTRkYzc1ZmE3MDc1Nzgw
YTIzNDNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldl
YkdMTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJH
TExheWVyLmNwcApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5j
bHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2lmIEVOQUJMRShXRUJHTDIpCkBAIC0x
OTgsNiArMjAwLDE5IEBAIGRvdWJsZSBXZWJYUldlYkdMTGF5ZXI6OmdldE5hdGl2ZUZyYW1lYnVm
ZmVyU2NhbGVGYWN0b3IoY29uc3QgV2ViWFJTZXNzaW9uJiBzZXNzCiAgICAgcmV0dXJuIChuYXRp
dmVTaXplIC8gcmVjb21tZW5kZWRTaXplKS53aWR0aCgpOwogfQogCitIVE1MQ2FudmFzRWxlbWVu
dCogV2ViWFJXZWJHTExheWVyOjpjYW52YXMoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fY29udGV4dCwgW10oY29uc3QgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U+JiBiYXNlQ29udGV4dCkgeworICAgICAgICBhdXRvIGNhbnZhcyA9IGJhc2VDb250ZXh0LT5j
YW52YXMoKTsKKyAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oY2FudmFzLCBbXShjb25zdCBS
ZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBjYW52YXMpIHsKKyAgICAgICAgICAgIHJldHVybiBj
YW52YXMuZ2V0KCk7CisgICAgICAgIH0sIFtdKGNvbnN0IFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoImJhc2VMYXllciBvZiBhIFdlYlhS
V2ViR0xMYXllciBtdXN0IGJlIGFuIEhUTUxDYW52YXNFbGVtZW50Iik7CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCmluZGV4IDIxZWNhYjIwMzBlMjgzODIyNjgy
N2MzZTAzYWVlOTE2ZTJlY2ZiOTAuLjEwNmNlYjVmY2QzNjVjNzE2NjJlODRkMDAxZjE3ZTI5YTNl
YjZlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJH
TExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5
ZXIuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhU
TUxDYW52YXNFbGVtZW50OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFdlYkdMRnJhbWVidWZmZXI7
CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7CkBAIC03NCw2ICs3NSwxMCBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSB7IHJldHVybiBtX3Nlc3Npb247
IH0KIAorICAgIGJvb2wgaXNDb21wb3NpdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29tcG9zaXRpb25FbmFibGVkOyB9CisKKyAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKCkg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgV2ViWFJXZWJHTExheWVyKFJlZjxXZWJYUlNlc3Npb24+
JiYsIFdlYlhSUmVuZGVyaW5nQ29udGV4dCYmLCBjb25zdCBYUldlYkdMTGF5ZXJJbml0Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJGcmFtZVJlcXVlc3RD
YWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkZyYW1lUmVxdWVzdENh
bGxiYWNrLmgKaW5kZXggNDhkY2Q5MzY0ZmIzOWJhMzVhODI0YjMxZTdlMGJlMmUxNmExYjcxOS4u
ZWYzZjY0NmQ2ZGI1Yjg1MzEzNDM3ODg3NTc1YmVjNGFjMWNlMzRkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkZyYW1lUmVxdWVzdENhbGxiYWNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkZyYW1lUmVxdWVzdENhbGxiYWNrLmgKQEAg
LTQzLDEyICs0MywxMiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBjYWxsYmFja0lkKCkgeyBB
U1NFUlQobV9pZCk7IHJldHVybiBtX2lkOyB9CiAgICAgdm9pZCBzZXRDYWxsYmFja0lkKHVuc2ln
bmVkIGlkKSB7IEFTU0VSVCghbV9pZCk7IG1faWQgPSBpZDsgfQotICAgIHZvaWQgY2FuY2VsKCkg
eyBtX2NhbmNlbGxlZCA9IHRydWU7IH0KLSAgICBib29sIGlzQ2FuY2VsbGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYW5jZWxsZWQ7IH0KKyAgICB2b2lkIHNldEZpcmVkT3JDYW5jZWxsZWQoKSB7IG1f
ZmlyZWRPckNhbmNlbGxlZCA9IHRydWU7IH0KKyAgICBib29sIGlzRmlyZWRPckNhbmNlbGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZmlyZWRPckNhbmNlbGxlZDsgfQogCiBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1faWQgeyAwIH07Ci0gICAgYm9vbCBtX2NhbmNlbGxlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2ZpcmVkT3JDYW5jZWxsZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1Y
Ui5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IGI5ZWY0
NWMwYzY5NzE0YWU4M2M3MDQ0NTRkOTU0YmQ1MWVhNDc2NmIuLjQzMjVmMzM3NWNmMzAyOGE0N2Rm
ZmNjNmRmNTliYjc0MzgzNTAwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9y
bVhSLmgKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJG
bG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgpAQCAtNzUsNiArNzYsMzEgQEAgcHVi
bGljOgogICAgIC8vIElmIHRoaXMgbWV0aG9kIHJldHVybnMgdHJ1ZSwgdGhhdCBtZWFucyB0aGUg
ZGV2aWNlIHdpbGwgbm90aWZ5IFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50CiAgICAgLy8gd2hl
biB0aGUgcGxhdGZvcm0gaGFzIGNvbXBsZXRlZCBhbGwgc3RlcHMgdG8gc2h1dCBkb3duIHRoZSBY
UiBzZXNzaW9uLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlm
aWNhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemVSZWZlcmVuY2VTcGFjZShSZWZlcmVuY2VTcGFjZVR5cGUpID0gMDsKKworICAgIHN0cnVj
dCBGcmFtZURhdGEgeworICAgICAgICBsb25nIHByZWRpY3RlZERpc3BsYXlUaW1lOworICAgICAg
ICBzdHJ1Y3QgVmlld0RhdGEgeworICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpGbG9hdFBvaW50M0QgcG9zaXRpb247CisgICAgICAgICAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgeDsKKyAgICAgICAgICAgICAgICAgICAgZmxv
YXQgeTsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgejsKKyAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgdzsKKyAgICAgICAgICAgICAgICB9IG9yaWVudGF0aW9uOworICAgICAgICAgICAgfSBw
b3NlOworICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBmbG9hdCByVXA7Cisg
ICAgICAgICAgICAgICAgZmxvYXQgckRvd247CisgICAgICAgICAgICAgICAgZmxvYXQgckxlZnQ7
CisgICAgICAgICAgICAgICAgZmxvYXQgclJpZ2h0OworICAgICAgICAgICAgfSBmb3Y7CisgICAg
ICAgIH07CisgICAgICAgIFZlY3RvcjxWaWV3RGF0YT4gdmlld1Bvc2VzOworICAgIH07CisgICAg
dXNpbmcgUmVxdWVzdEZyYW1lQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEZyYW1lRGF0YSYmKT47
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICBEZXZpY2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5k
ZXggZmU4NjVlNjcxZDcwNjg2ZGU3OTFmMTQwMGU2Y2YzZTJjODY5ZWMyMi4uY2M0ZDcyMTUzYzZl
ZWFmZGYyMTYyZTk4ODJhOWUwNzc1OGIyMWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcApAQCAtMjYwLDExICsy
NjAsNiBAQCBPcGVuWFJEZXZpY2U6Ok9wZW5YUkRldmljZShYclN5c3RlbUlkIGlkLCBYckluc3Rh
bmNlIGluc3RhbmNlLCBXb3JrUXVldWUmIHF1ZXVlLAogICAgIH0pOwogfQogCi1PcGVuWFJEZXZp
Y2U6On5PcGVuWFJEZXZpY2UoKQotewotICAgIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmco
KTsKLX0KLQogRGV2aWNlOjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNlOjplbnVt
ZXJhdGVSZWZlcmVuY2VTcGFjZXMoWHJTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogewogICAgIHVp
bnQzMl90IHJlZmVyZW5jZVNwYWNlc0NvdW50OwpAQCAtMzk1LDYgKzM5MCwxNiBAQCBYclZpZXdD
b25maWd1cmF0aW9uVHlwZSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKFNlc3Npb25Nb2RlIG1v
ZGUpCiAgICAgcmV0dXJuIFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTzsK
IH0KIAorc3RhdGljIGJvb2wgaXNTZXNzaW9uQWN0aXZlKFhyU2Vzc2lvblN0YXRlIHN0YXRlKQor
eworICAgIHJldHVybiBzdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX1ZJU0lCTEUgfHwgc3RhdGUg
PT0gWFJfU0VTU0lPTl9TVEFURV9GT0NVU0VEOworfQorCitzdGF0aWMgYm9vbCBpc1Nlc3Npb25S
ZWFkeShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gc3RhdGUgPj0gWFJfU0VT
U0lPTl9TVEFURV9SRUFEWSAgJiYgc3RhdGUgPCBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HOwor
fQorCiB2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNl
c3Npb25Nb2RlIG1vZGUpCiB7CiAgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgbW9kZV0oKSB7
CkBAIC00MTMsMTggKzQxOCwxODYgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2RlKQogfQogCiB2b2lkIE9wZW5YUkRldmlj
ZTo6cmVzZXRTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAm
bV9xdWV1ZS5ydW5Mb29wKCkpOworICAgIGlmIChtX3Nlc3Npb24gIT0gWFJfTlVMTF9IQU5ETEUp
IHsKKyAgICAgICAgeHJEZXN0cm95U2Vzc2lvbihtX3Nlc3Npb24pOworICAgICAgICBtX3Nlc3Np
b24gPSBYUl9OVUxMX0hBTkRMRTsKKyAgICB9CisgICAgbV9zZXNzaW9uU3RhdGUgPSBYUl9TRVNT
SU9OX1NUQVRFX1VOS05PV047Cit9CisKK3ZvaWQgT3BlblhSRGV2aWNlOjpoYW5kbGVTZXNzaW9u
U3RhdGVDaGFuZ2UoKQoreworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1
ZXVlLnJ1bkxvb3AoKSk7CisgICAgaWYgKG1fc2Vzc2lvblN0YXRlID09IFhSX1NFU1NJT05fU1RB
VEVfU1RPUFBJTkcpIHsKKyAgICAgICAgLy8gVGhlIGFwcGxpY2F0aW9uIHNob3VsZCBleGl0IHRo
ZSByZW5kZXIgbG9vcCBhbmQgY2FsbCB4ckVuZFNlc3Npb24KKyAgICAgICAgZW5kU2Vzc2lvbigp
OworICAgIH0gZWxzZSBpZiAobV9zZXNzaW9uU3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9SRUFE
WSkgeworICAgICAgICAvLyBUaGUgYXBwbGljYXRpb24gaXMgcmVhZHkgdG8gY2FsbCB4ckJlZ2lu
U2Vzc2lvbi4KKyAgICAgICAgYmVnaW5TZXNzaW9uKCk7CisgICAgfQorfQorCit2b2lkIE9wZW5Y
UkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCiB7CiAgICAgbV9xdWV1ZS5k
aXNwYXRjaChbdGhpc10oKSB7CiAgICAgICAgIGlmIChtX3Nlc3Npb24gPT0gWFJfTlVMTF9IQU5E
TEUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHhyRGVzdHJveVNlc3Npb24obV9zZXNz
aW9uKTsKLSAgICAgICAgbV9zZXNzaW9uID0gWFJfTlVMTF9IQU5ETEU7CisKKyAgICAgICAgLy8g
eHJSZXF1ZXN0RXhpdFNlc3Npb24oKSB3aWxsIHRyYW5zaXRpb24gdGhlIHNlc3Npb24gdG8gU1RP
UFBFRCBzdGF0ZS4KKyAgICAgICAgLy8gSWYgdGhlIHNlc3Npb24gd2FzIG5vdCBydW5uaW5nIHdl
IGhhdmUgdG8gcmVzZXQgdGhlIHNlc3Npb24gb3Vyc2VsdmVzLgorICAgICAgICBpZiAoWFJfRkFJ
TEVEKHhyUmVxdWVzdEV4aXRTZXNzaW9uKG1fc2Vzc2lvbikpKSB7CisgICAgICAgICAgICByZXNl
dFNlc3Npb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IE9wZW5YUiBuZWVkcyB0byB3YWl0IGZvciB0aGUgWFJfU0VTU0lPTl9TVEFURV9TVE9QUElORyBz
dGF0ZSB0byBwcm9wZXJseSBlbmQgdGhlIHNlc3Npb24uCisgICAgICAgIHdhaXRVbnRpbFN0b3Bw
aW5nKCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgT3BlblhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5n
QW5kUmVuZGVyaW5nKCkKK3ZvaWQgT3BlblhSRGV2aWNlOjp3YWl0VW50aWxTdG9wcGluZygpCiB7
CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsK
KyAgICBwb2xsRXZlbnRzKCk7CisgICAgaWYgKG1fc2Vzc2lvblN0YXRlID49IFhSX1NFU1NJT05f
U1RBVEVfU1RPUFBJTkcpCisgICAgICAgIHJldHVybjsKKyAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0
aGlzXSgpIHsKKyAgICAgICAgd2FpdFVudGlsU3RvcHBpbmcoKTsKKyAgICB9KTsKK30KKwordm9p
ZCBPcGVuWFJEZXZpY2U6OnBvbGxFdmVudHMoKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIGF1dG8gcnVudGltZUV2ZW50ID0gY3JlYXRlU3RydWN0dXJlPFhyRXZlbnREYXRh
QnVmZmVyLCBYUl9UWVBFX0VWRU5UX0RBVEFfQlVGRkVSPigpOworICAgIHdoaWxlICh4clBvbGxF
dmVudChtX2luc3RhbmNlLCAmcnVudGltZUV2ZW50KSA9PSBYUl9TVUNDRVNTKSB7CisgICAgICAg
IHN3aXRjaCAocnVudGltZUV2ZW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5U
X0RBVEFfU0VTU0lPTl9TVEFURV9DSEFOR0VEOiB7CisgICAgICAgICAgICBhdXRvKiBldmVudCA9
IChYckV2ZW50RGF0YVNlc3Npb25TdGF0ZUNoYW5nZWQqKSZydW50aW1lRXZlbnQ7CisgICAgICAg
ICAgICBtX3Nlc3Npb25TdGF0ZSA9IGV2ZW50LT5zdGF0ZTsKKyAgICAgICAgICAgIGhhbmRsZVNl
c3Npb25TdGF0ZUNoYW5nZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfRVZFTlRTX0xPU1Q6CisgICAgICAgIGNhc2UgWFJf
VFlQRV9FVkVOVF9EQVRBX0lOU1RBTkNFX0xPU1NfUEVORElORzoKKyAgICAgICAgY2FzZSBYUl9U
WVBFX0VWRU5UX0RBVEFfUkVGRVJFTkNFX1NQQUNFX0NIQU5HRV9QRU5ESU5HOgorICAgICAgICBj
YXNlIFhSX1RZUEVfRVZFTlRfREFUQV9JTlRFUkFDVElPTl9QUk9GSUxFX0NIQU5HRUQ6CisgICAg
ICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX01BSU5fU0VTU0lPTl9WSVNJQklMSVRZX0NIQU5H
RURfRVhUWDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfVklTSUJJTElUWV9NQVNL
X0NIQU5HRURfS0hSOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9QRVJGX1NFVFRJ
TkdTX0VYVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCJVbmhhbmRsZWQgZXZlbnQgdHlwZSAlZFxuIiwgcnVudGlt
ZUV2ZW50LnR5cGUpOworICAgICAgICB9CisgICAgfQorfQorCitYclJlc3VsdCBPcGVuWFJEZXZp
Y2U6OmJlZ2luU2Vzc2lvbigpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKG1fc2Vzc2lvblN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkpOworCisgICAg
YXV0byBzZXNzaW9uQmVnaW5JbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyU2Vzc2lvbkJlZ2luSW5m
bywgWFJfVFlQRV9TRVNTSU9OX0JFR0lOX0lORk8+KCk7CisgICAgc2Vzc2lvbkJlZ2luSW5mby5w
cmltYXJ5Vmlld0NvbmZpZ3VyYXRpb25UeXBlID0gWFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVf
UFJJTUFSWV9TVEVSRU87CisgICAgYXV0byByZXN1bHQgPSB4ckJlZ2luU2Vzc2lvbihtX3Nlc3Np
b24sICZzZXNzaW9uQmVnaW5JbmZvKTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKFhSX0ZB
SUxFRChyZXN1bHQpKQorICAgICAgICBMT0coWFIsICIlcyAlczogJXNcbiIsIF9fZnVuY19fLCAi
eHJCZWdpblNlc3Npb24iLCByZXN1bHRUb1N0cmluZyhyZXN1bHQsIG1faW5zdGFuY2UpLnV0Zjgo
KS5kYXRhKCkpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBPcGVuWFJE
ZXZpY2U6OmVuZFNlc3Npb24oKQoreworICAgIEFTU0VSVChtX3Nlc3Npb24gIT0gWFJfTlVMTF9I
QU5ETEUpOworICAgIHhyRW5kU2Vzc2lvbihtX3Nlc3Npb24pOwogICAgIHJlc2V0U2Vzc2lvbigp
OworICAgIGlmICghbV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gTm90aWZ5IGRpZCBlbmQgZXZlbnQKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSB7CisgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX3RyYWNraW5nQW5kUmVu
ZGVyaW5nQ2xpZW50KQorICAgICAgICAgICAgbV90cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudC0+
c2Vzc2lvbkRpZEVuZCgpOworICAgIH0pOworfQorCisKK0RldmljZTo6RnJhbWVEYXRhOjpWaWV3
RGF0YSB4clZpZXdUb1ZpZXdEYXRhKFhyVmlldyB2aWV3KQoreworICAgIERldmljZTo6RnJhbWVE
YXRhOjpWaWV3RGF0YSBkYXRhOworICAgIGRhdGEuZm92ID0geyB2aWV3LmZvdi5hbmdsZVVwLCB2
aWV3LmZvdi5hbmdsZURvd24sIHZpZXcuZm92LmFuZ2xlTGVmdCwgdmlldy5mb3YuYW5nbGVSaWdo
dCB9OworICAgIGRhdGEucG9zZS5vcmllbnRhdGlvbiA9IHsgdmlldy5wb3NlLm9yaWVudGF0aW9u
LngsIHZpZXcucG9zZS5vcmllbnRhdGlvbi55LCB2aWV3LnBvc2Uub3JpZW50YXRpb24ueiwgdmll
dy5wb3NlLm9yaWVudGF0aW9uLncgfTsKKyAgICBkYXRhLnBvc2UucG9zaXRpb24gPSB7IHZpZXcu
cG9zZS5wb3NpdGlvbi54LCB2aWV3LnBvc2UucG9zaXRpb24ueSwgdmlldy5wb3NlLnBvc2l0aW9u
LnogfTsKKyAgICByZXR1cm4gZGF0YTsKK30KKwordm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RG
cmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIG1fcXVldWUuZGlz
cGF0Y2goW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHBvbGxFdmVudHMoKTsKKyAgICAgICAgaWYgKCFpc1Nlc3Npb25SZWFkeShtX3Nlc3Np
b25TdGF0ZSkpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgLy8gRGV2aWNlIG5v
dCByZWFkeSBvciBzdG9wcGluZy4gUmVwb3J0IGZyYW1lRGF0YSB3aXRoIGludmFsaWQgdHJhY2tp
bmcuCisgICAgICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBmcmFtZVN0YXRlID0g
Y3JlYXRlU3RydWN0dXJlPFhyRnJhbWVTdGF0ZSwgWFJfVFlQRV9GUkFNRV9TVEFURT4oKTsKKyAg
ICAgICAgYXV0byBmcmFtZVdhaXRJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyRnJhbWVXYWl0SW5m
bywgWFJfVFlQRV9GUkFNRV9XQUlUX0lORk8+KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0geHJX
YWl0RnJhbWUobV9zZXNzaW9uLCAmZnJhbWVXYWl0SW5mbywgJmZyYW1lU3RhdGUpOworICAgICAg
ICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyV2FpdEZyYW1lIiwgbV9pbnN0YW5jZSk7Cisg
ICAgICAgIFhyVGltZSBwcmVkaWN0ZWRUaW1lID0gZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5
VGltZTsKKworICAgICAgICBhdXRvIGZyYW1lQmVnaW5JbmZvID0gY3JlYXRlU3RydWN0dXJlPFhy
RnJhbWVCZWdpbkluZm8sIFhSX1RZUEVfRlJBTUVfQkVHSU5fSU5GTz4oKTsKKyAgICAgICAgcmVz
dWx0ID0geHJCZWdpbkZyYW1lKG1fc2Vzc2lvbiwgJmZyYW1lQmVnaW5JbmZvKTsKKyAgICAgICAg
UkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckJlZ2luRnJhbWUiLCBtX2luc3RhbmNlKTsKKwor
ICAgICAgICBEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGE7CisgICAgICAgIGZyYW1lRGF0YS5w
cmVkaWN0ZWREaXNwbGF5VGltZSA9IGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7CisK
KyAgICAgICAgaWYgKGlzU2Vzc2lvbkFjdGl2ZShtX3Nlc3Npb25TdGF0ZSkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb25WaWV3cy5jb250YWlucyhtX2N1cnJlbnRWaWV3Q29u
ZmlndXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGNvbmZpZ3VyYXRpb25W
aWV3ID0gbV9jb25maWd1cmF0aW9uVmlld3MuZ2V0KG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9u
VHlwZSk7CisKKyAgICAgICAgICAgIGF1dG8gdmlld0xvY2F0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1
cmU8WHJWaWV3TG9jYXRlSW5mbywgWFJfVFlQRV9WSUVXX0xPQ0FURV9JTkZPPigpOworICAgICAg
ICAgICAgdmlld0xvY2F0ZUluZm8uZGlzcGxheVRpbWUgPSBwcmVkaWN0ZWRUaW1lOworICAgICAg
ICAgICAgLy8gRklYTUU6IHVzZSB0aGUgY3VycmVudCByZWZlcmVuY2Ugc3BhY2UuCisgICAgICAg
ICAgICAvLyB2aWV3TG9jYXRlSW5mby5zcGFjZSA9IG1fbG9jYWxTcGFjZTsKKworICAgICAgICAg
ICAgdWludDMyX3Qgdmlld0NvdW50ID0gY29uZmlndXJhdGlvblZpZXcuc2l6ZSgpOworICAgICAg
ICAgICAgVmVjdG9yPFhyVmlldz4gdmlld3Modmlld0NvdW50LCBbXSB7CisgICAgICAgICAgICAg
ICAgWHJWaWV3IG9iamVjdDsKKyAgICAgICAgICAgICAgICBzdGQ6Om1lbXNldCgmb2JqZWN0LCAw
LCBzaXplb2YoWHJWaWV3KSk7CisgICAgICAgICAgICAgICAgb2JqZWN0LnR5cGUgPSBYUl9UWVBF
X1ZJRVc7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0oKSk7
CisKKyAgICAgICAgICAgIGF1dG8gdmlld1N0YXRlID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld1N0
YXRlLCBYUl9UWVBFX1ZJRVdfU1RBVEU+KCk7CisgICAgICAgICAgICB1aW50MzJfdCB2aWV3Q291
bnRPdXRwdXQ7CisgICAgICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZpZXdzKG1fc2Vzc2lvbiwg
JnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2aWV3Q291bnRPdXRwdXQs
IHZpZXdzLmRhdGEoKSk7CisgICAgICAgICAgICBpZiAoIVhSX0ZBSUxFRChyZXN1bHQpKSB7Cisg
ICAgICAgICAgICAgICAgZm9yIChhdXRvJiB2aWV3IDogdmlld3MpCisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lRGF0YS52aWV3UG9zZXMuYXBwZW5kKHhyVmlld1RvVmlld0RhdGEodmlldykpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZnJh
bWVEYXRhID0gV1RGTW92ZShmcmFtZURhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShmcmFtZURhdGEpKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBmcmFtZUVuZEluZm8gPSBjcmVhdGVTdHJ1Y3R1
cmU8WHJGcmFtZUVuZEluZm8sIFhSX1RZUEVfRlJBTUVfRU5EX0lORk8+KCk7CisgICAgICAgIGZy
YW1lRW5kSW5mby5kaXNwbGF5VGltZSA9IHByZWRpY3RlZFRpbWU7CisgICAgICAgIGZyYW1lRW5k
SW5mby5lbnZpcm9ubWVudEJsZW5kTW9kZSA9IFhSX0VOVklST05NRU5UX0JMRU5EX01PREVfT1BB
UVVFOworICAgICAgICBmcmFtZUVuZEluZm8ubGF5ZXJDb3VudCA9IDA7CisgICAgICAgIHJlc3Vs
dCA9IHhyRW5kRnJhbWUobV9zZXNzaW9uLCAmZnJhbWVFbmRJbmZvKTsKKyAgICAgICAgUkVUVVJO
X0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVuZEZyYW1lIiwgbV9pbnN0YW5jZSk7CisgICAgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCmluZGV4IGFhMmY3ODBlZjkxMjk2
MjBmNDQxMmRiNDlhMGU4YTA0MmQ1OGI1MjkuLjViZWJlNjk2NjkzMjdkYjJjODE1YjU1NmFlZGQx
Y2E5OWI0NmUxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54
ci9QbGF0Zm9ybVhST3BlblhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL1BsYXRmb3JtWFJPcGVuWFIuaApAQCAtNDQsNyArNDQsNiBAQCBuYW1lc3BhY2UgUGxhdGZv
cm1YUiB7CiBjbGFzcyBPcGVuWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgRGV2aWNlIHsKIHB1Ymxp
YzoKICAgICBPcGVuWFJEZXZpY2UoWHJTeXN0ZW1JZCwgWHJJbnN0YW5jZSwgV29ya1F1ZXVlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB+T3BlblhSRGV2aWNlKCk7CiAgICAg
WHJTeXN0ZW1JZCB4clN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogCiBw
cml2YXRlOgpAQCAtNTIsMTMgKzUxLDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0Q29u
ZmlndXJhdGlvblZpZXdzKCk7CiAKICAgICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMgZW51bWVyYXRl
UmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiYpIGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZVJl
ZmVyZW5jZVNwYWNlKFJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9OwogCiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUpIGZpbmFsOwogCiAg
ICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpIGZpbmFs
OwogICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CisgICAgdm9pZCB3YWl0VW50aWxTdG9wcGluZygpOwogCisgICAgdm9pZCBw
b2xsRXZlbnRzKCk7CisgICAgWHJSZXN1bHQgYmVnaW5TZXNzaW9uKCk7CisgICAgdm9pZCBlbmRT
ZXNzaW9uKCk7CiAgICAgdm9pZCByZXNldFNlc3Npb24oKTsKKyAgICB2b2lkIGhhbmRsZVNlc3Np
b25TdGF0ZUNoYW5nZSgpOworCisgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2Fs
bGJhY2smJikgZmluYWw7CiAKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNN
YXAgPSBIYXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBYclZpZXdDb25maWd1cmF0aW9u
UHJvcGVydGllcywgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ryb25n
RW51bUhhc2hUcmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKICAgICBWaWV3Q29uZmln
dXJhdGlvblByb3BlcnRpZXNNYXAgbV92aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXM7CkBAIC02
OCw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgWHJTeXN0ZW1JZCBtX3N5c3RlbUlkOwogICAgIFhy
SW5zdGFuY2UgbV9pbnN0YW5jZTsKICAgICBYclNlc3Npb24gbV9zZXNzaW9uIHsgWFJfTlVMTF9I
QU5ETEUgfTsKKyAgICBYclNlc3Npb25TdGF0ZSBtX3Nlc3Npb25TdGF0ZSB7IFhSX1NFU1NJT05f
U1RBVEVfVU5LTk9XTiB9OwogCiAgICAgV29ya1F1ZXVlJiBtX3F1ZXVlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5kZXggYTQ3YzFlY2E3ZGVkY2VkYTUw
NTBhZDk3YmM0N2Q4NTY1YmE1OTBlZi4uNTQwMThkYTdlYmI1M2RkNTE5NDJkZTc2NjE0OTY3MmZm
MWFjODQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZp
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcApA
QCAtMzEsMTQgKzMxLDI4IEBACiAjaW5jbHVkZSAiRE9NUG9pbnRSZWFkT25seS5oIgogI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIEZha2VYUkZyYW1lVGltZSA9
IDE1X21zOworCiB2b2lkIEZha2VYUlZpZXc6OnNldEZpZWxkT2ZWaWV3KEZha2VYUlZpZXdJbml0
OjpGaWVsZE9mVmlld0luaXQgZm92KQogewogICAgIG1fZm92ID0gZm92OwogfQogCitTaW11bGF0
ZWRYUkRldmljZTo6U2ltdWxhdGVkWFJEZXZpY2UoKQorICAgIDogbV9mcmFtZVRpbWVyKCp0aGlz
LCAmU2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCkKK3sKKyAgICBtX3N1cHBvcnRz
T3JpZW50YXRpb25UcmFja2luZyA9IHRydWU7Cit9CisKK1NpbXVsYXRlZFhSRGV2aWNlOjp+U2lt
dWxhdGVkWFJEZXZpY2UoKQoreworICAgIHN0b3BUaW1lcigpOworfQorCiB2b2lkIFNpbXVsYXRl
ZFhSRGV2aWNlOjpzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCkKIHsKICAgICBpZiAobV90cmFj
a2luZ0FuZFJlbmRlcmluZ0NsaWVudCkKQEAgLTQ5LDYgKzYzLDI3IEBAIHZvaWQgU2ltdWxhdGVk
WFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQogewogICAgIGlmIChtX3N1
cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24pCiAgICAgICAgIHNpbXVsYXRlU2h1dGRvd25Db21w
bGV0ZWQoKTsKKyAgICBzdG9wVGltZXIoKTsKK30KKwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6
c3RvcFRpbWVyKCkKK3sKKyAgICBpZiAobV9mcmFtZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fZnJhbWVUaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1l
VGltZXJGaXJlZCgpCit7CisgICAgYXV0byBjYWxsYmFja3MgPSBXVEZNb3ZlKG1fY2FsbGJhY2tz
KTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFj
ayh7IH0pOworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVz
dEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RG
TW92ZShjYWxsYmFjaykpOworICAgIGlmICghbV9mcmFtZVRpbWVyLmlzQWN0aXZlKCkpCisgICAg
ICAgIG1fZnJhbWVUaW1lci5zdGFydE9uZVNob3QoRmFrZVhSRnJhbWVUaW1lKTsKIH0KIAogV2Vi
RmFrZVhSRGV2aWNlOjpXZWJGYWtlWFJEZXZpY2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAppbmRleCA4NDdiYmNiMTc0NDg0NDhmMGVjN2U4Y2Vi
MWI2ZmQ2ZTlmYWM5NTg4Li4zOTFiZmMzNDdlZWY5YWFhZjE3YmQyYmE4YjZiYTQzNmYwMDA0NmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKQEAgLTYzLDcgKzYz
LDggQEAgcHJpdmF0ZToKIGNsYXNzIFNpbXVsYXRlZFhSRGV2aWNlIGZpbmFsIDogcHVibGljIFBs
YXRmb3JtWFI6OkRldmljZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgU2ltdWxhdGVkWFJEZXZpY2UoKSB7IG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNraW5n
ID0gdHJ1ZTsgfQorICAgIFNpbXVsYXRlZFhSRGV2aWNlKCk7CisgICAgflNpbXVsYXRlZFhSRGV2
aWNlKCk7CiAgICAgdm9pZCBzZXROYXRpdmVCb3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91
bmRzUG9pbnQ+IGdlb21ldHJ5KSB7IG1fbmF0aXZlQm91bmRzR2VvbWV0cnkgPSBnZW9tZXRyeTsg
fQogICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYm
IG9yaWdpbikgeyBtX3ZpZXdlck9yaWdpbiA9IFdURk1vdmUob3JpZ2luKTsgfQogICAgIHZvaWQg
c2V0Rmxvb3JPcmlnaW4oUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2luKSB7IG1f
Zmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KQEAgLTc1LDEyICs3NiwyMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6
OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5k
ZXJpbmcoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9u
OyB9CisgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJl
bmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJh
bWVDYWxsYmFjayYmKSBmaW5hbDsKKworICAgIHZvaWQgc3RvcFRpbWVyKCk7CisgICAgdm9pZCBm
cmFtZVRpbWVyRmlyZWQoKTsKKwogICAgIE9wdGlvbmFsPFZlY3RvcjxGYWtlWFJCb3VuZHNQb2lu
dD4+IG1fbmF0aXZlQm91bmRzR2VvbWV0cnk7CiAgICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+IG1fdmlld2VyT3JpZ2luOwogICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX2Zs
b29yT3JpZ2luOwogICAgIGJvb2wgbV9lbXVsYXRlZFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBW
ZWN0b3I8UmVmPEZha2VYUlZpZXc+PiBtX3ZpZXdzOwogICAgIGJvb2wgbV9zdXBwb3J0c1NodXRk
b3duTm90aWZpY2F0aW9uIHsgZmFsc2UgfTsKKyAgICBUaW1lciBtX2ZyYW1lVGltZXI7CisgICAg
VmVjdG9yPFJlcXVlc3RGcmFtZUNhbGxiYWNrPiBtX2NhbGxiYWNrczsKIH07CiAKIGNsYXNzIFdl
YkZha2VYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkZha2VYUkRldmljZT4g
ewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDZiMjkzMzQyZmYwMThmMzdjZDc5MmUxYjRiOWY2OWY5MTgzYTUwNzMuLjRjZjk2
OWFiMGM0OGE5NWZmZWIxMDcxM2UwNGM5M2NjZjQ4MWRkZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMS0wMi0wMyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4g
YW5kIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAg
Q29tcGxldGUgWFJTZXNzaW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3OQor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMi0xMSAgUm9iIEJ1aXMgIDxyYnVpc0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIEhhbmRsZSBtaW4td2lkdGgvbWluLWhlaWdodDphdXRvIGZv
ciBhc3BlY3QtcmF0aW8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDNhNzliOTc1
ZTRhNTc4OWU0NTNhNzJhZjkzYWIwMzY4ODY3ZTkxMjQuLjk0MzM0YjcyNjhjN2VlNzA3MDE1YTVj
OTRlOTQxOTkxMDBkNjIzMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTAyLTAzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2Fs
aWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246OnJlcXVlc3RBbmltYXRpb25GcmFtZSBpbXBsZW1l
bnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBF
bmFibGUgWFJTZXNzaW9uIFJBRiB0ZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTAyLTExICBaaXJhbiBTdW4gIDx6c3VuQGlnYWxp
YS5jb20+CiAKICAgICAgICAgdGhlIG5lc3RlZCBncmlkIGNvbnRhaW5lciB3aGljaCBoYXMgcmVw
bGFjZWQgaXRlbSB3aXRoICdtYXgtaGVpZ2h0JyBoYXMgd3Jvbmcgd2lkdGgoMHB4KS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjU4YTQyM2ZjNmIxOTgxMTI5MzViZmYyOTA3Mjc4ZmRhOTRmY2M1Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0
cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFhSRnJhbWUgZ2V0Vmlld2Vy
UG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0IGZyYW1lIGZvciBpbW1lcnNpdmUKK1BBU1MgWFJGcmFt
ZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIG5vbi1pbW1lcnNp
dmUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBjNDgx
ZDI0NjYxNzg3MTAyMTBmNjkyMDk1YWZkM2NjZTY2YzIzMzkzLi5iMDcwMTZhZTA2NzJkOTYyZmMy
ZjYyMjBjMGFkZWRmMjY2MTFlMTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNjQwLDYgKzY0MCw3IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgd2Via2l0
Lm9yZy9iLzIxNTYzNyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyCiB3
ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lX2ludmFsaWRoYW5kbGUuaHR0cHMuaHRtbCBb
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwgWyBQ
YXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2NhbGxiYWNrX2NhbGxzLmh0
dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMuaHRtbCBbIFBh
c3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0UmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBhc3Mg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2Vy
X2F2YWlsYWJpbGl0eS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5lc3Mu
aHR0cHMud2luZG93Lmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>