<?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>221225</bug_id>
          
          <creation_ts>2021-02-01 13:57:41 -0800</creation_ts>
          <short_desc>Implement WebXR getViewerPose and getPose</short_desc>
          <delta_ts>2021-04-19 03:21:03 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>220979</dependson>
          <blocked>208988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Imanol Fernandez">ifernandez</reporter>
          <assigned_to name="Imanol Fernandez">ifernandez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>adachan</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1724403</commentid>
    <comment_count>0</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-01 13:57:41 -0800</bug_when>
    <thetext>Implement WebXR getViewerPose and getPose</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724421</commentid>
    <comment_count>1</comment_count>
      <attachid>418928</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-01 14:43:54 -0800</bug_when>
    <thetext>Created attachment 418928
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724422</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-02-01 14:44:51 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726784</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-08 13:58:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/74112910&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728561</commentid>
    <comment_count>4</comment_count>
      <attachid>420125</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-12 08:16:11 -0800</bug_when>
    <thetext>Created attachment 420125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728568</commentid>
    <comment_count>5</comment_count>
      <attachid>420125</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-12 08:53:49 -0800</bug_when>
    <thetext>Comment on attachment 420125
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:41


I would pass a WebXRSession&amp; if possible.

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:82


auto

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

Would be slightly more consistent to initialise m_session before m_IsAnimationFrame.
Also s/m_IsAnimationFrame/m_isAnimationFrame/

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:58
&gt; +    auto isOutsideNativeBoundsOfBoundedReferenceSpace = [] (const WebXRSpace&amp; space, const WebXRSpace&amp;) {

Might be better as a free function.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:74
&gt; +    auto isLocalReferenceSpace = [] (const WebXRSpace&amp; space) {

Ditto.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:87
&gt; +        // than 15m (suggested by specs) return true.

Should we return true here?

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:97
&gt; +    bool emulatedPosition;

Might be good to initialise the value if possible

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:192
&gt; +            const double near = m_session-&gt;renderState().depthNear();

s/const //

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:203
&gt; +                aspect = (double) layer-&gt;framebufferWidth() / (double) layer-&gt;framebufferHeight();

static_cast

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:205
&gt; +            const double far = m_session-&gt;renderState().depthFar();

s/const //

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:209
&gt; +        xrView-&gt;setProjectionMatrix(projection);

WTFMove(projection)?

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:213
&gt; +        ++index;

We could replace index by checking xrViews size

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:237
&gt; +    RefPtr&lt;WebXRPose&gt; pose = WebXRPose::create(WebXRRigidTransform::create(populateValue-&gt;transform), populateValue-&gt;emulatedPosition);

directly return here?

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:493
&gt; +        auto frame = WebXRFrame::create(makeRef(*this), true /*isAnimationFrame*/);

Would read better by using an enum instead of a bool.

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:550
&gt; +    // 2. If the request does not originate from document, return false.

It does not seem like you implement the check here.

&gt; Source/WebCore/Modules/webxr/WebXRSpace.cpp:41
&gt; +WebXRSpace::WebXRSpace(Document&amp; document, WeakPtr&lt;WebXRSession&gt;&amp;&amp; session, Ref&lt;WebXRRigidTransform&gt;&amp;&amp; offset)

I would pass a WebXRSession&amp;

&gt; Source/WebCore/Modules/webxr/WebXRView.cpp:50
&gt; +void WebXRView::setProjectionMatrix(const std::array&lt;float, 16&gt;&amp; projection)

Might be left to a follow-up but why not passing directly a Ref&lt;Float32Array&gt;&amp;&amp; here?

&gt; Source/WebCore/Modules/webxr/WebXRView.h:50
&gt; +    const Float32Array&amp; projectionMatrix() const { return *m_projection; }

How can we guarantee that m_projection is not null?
Is there a way we could pass a Ref&lt;Float32Array&gt; in the constructor?

&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:606
&gt; +    const double upTan = tan(fovUp);

why const? upTan is only used once so I am not sure it adds much.

&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:308
&gt; +    XrPosef identityPose = {

s / = //

&gt; LayoutTests/platform/wpe/TestExpectations:641
&gt; +imported/w3c/web-platform-tests/webxr/xrFrame_getViewerPose_getPose.https.html [ Pass ]

Could they be enabled cross-platform?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729118</commentid>
    <comment_count>6</comment_count>
      <attachid>420125</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-15 04:24:47 -0800</bug_when>
    <thetext>Comment on attachment 420125
Patch

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:41
&gt;&gt; +Ref&lt;WebXRBoundedReferenceSpace&gt; WebXRBoundedReferenceSpace::create(Document&amp; document, WeakPtr&lt;WebXRSession&gt;&amp;&amp; session, XRReferenceSpaceType type)
&gt; 
&gt; I would pass a WebXRSession&amp; if possible.

I don&apos;t think it&apos;s safe because JS can hold XRSpace instances after a XRSession is destroyed.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:82
&gt;&gt; +    Ref&lt;WebXRRigidTransform&gt; offset = WebXRRigidTransform::create(m_originOffset-&gt;rawTransform() * offsetTransform.rawTransform());
&gt; 
&gt; auto

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:49
&gt;&gt; +    , m_session(WTFMove(session))
&gt; 
&gt; Would be slightly more consistent to initialise m_session before m_IsAnimationFrame.
&gt; Also s/m_IsAnimationFrame/m_isAnimationFrame/

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:58
&gt;&gt; +    auto isOutsideNativeBoundsOfBoundedReferenceSpace = [] (const WebXRSpace&amp; space, const WebXRSpace&amp;) {
&gt; 
&gt; Might be better as a free function.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:87
&gt;&gt; +        // than 15m (suggested by specs) return true.
&gt; 
&gt; Should we return true here?

Only if the distance is greater than 15m. I want to implement the limits logic there and in other paths in a separate follow-up patch to not make this one more complex.

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:97
&gt;&gt; +    bool emulatedPosition;
&gt; 
&gt; Might be good to initialise the value if possible

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:192
&gt;&gt; +            const double near = m_session-&gt;renderState().depthNear();
&gt; 
&gt; s/const //

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:203
&gt;&gt; +                aspect = (double) layer-&gt;framebufferWidth() / (double) layer-&gt;framebufferHeight();
&gt; 
&gt; static_cast

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:205
&gt;&gt; +            const double far = m_session-&gt;renderState().depthFar();
&gt; 
&gt; s/const //

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:209
&gt;&gt; +        xrView-&gt;setProjectionMatrix(projection);
&gt; 
&gt; WTFMove(projection)?

done, moved to the constructor

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:213
&gt;&gt; +        ++index;
&gt; 
&gt; We could replace index by checking xrViews size

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:237
&gt;&gt; +    RefPtr&lt;WebXRPose&gt; pose = WebXRPose::create(WebXRRigidTransform::create(populateValue-&gt;transform), populateValue-&gt;emulatedPosition);
&gt; 
&gt; directly return here?

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:493
&gt;&gt; +        auto frame = WebXRFrame::create(makeRef(*this), true /*isAnimationFrame*/);
&gt; 
&gt; Would read better by using an enum instead of a bool.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRView.cpp:50
&gt;&gt; +void WebXRView::setProjectionMatrix(const std::array&lt;float, 16&gt;&amp; projection)
&gt; 
&gt; Might be left to a follow-up but why not passing directly a Ref&lt;Float32Array&gt;&amp;&amp; here?

I moved it to the constructor

&gt;&gt; Source/WebCore/Modules/webxr/WebXRView.h:50
&gt;&gt; +    const Float32Array&amp; projectionMatrix() const { return *m_projection; }
&gt; 
&gt; How can we guarantee that m_projection is not null?
&gt; Is there a way we could pass a Ref&lt;Float32Array&gt; in the constructor?

done

&gt;&gt; Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp:606
&gt;&gt; +    const double upTan = tan(fovUp);
&gt; 
&gt; why const? upTan is only used once so I am not sure it adds much.

Done. I&apos;m used to default immutability in Rust so I&apos;ll tend to add const by default :)

&gt;&gt; Source/WebCore/platform/xr/openxr/PlatformXROpenXR.cpp:308
&gt;&gt; +    XrPosef identityPose = {
&gt; 
&gt; s / = //

done

&gt;&gt; LayoutTests/platform/wpe/TestExpectations:641
&gt;&gt; +imported/w3c/web-platform-tests/webxr/xrFrame_getViewerPose_getPose.https.html [ Pass ]
&gt; 
&gt; Could they be enabled cross-platform?

I&apos;ll address that as a follow-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729120</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-15 04:32:13 -0800</bug_when>
    <thetext>(In reply to Imanol Fernandez from comment #6)
&gt; Comment on attachment 420125 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420125&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:41
&gt; &gt;&gt; +Ref&lt;WebXRBoundedReferenceSpace&gt; WebXRBoundedReferenceSpace::create(Document&amp; document, WeakPtr&lt;WebXRSession&gt;&amp;&amp; session, XRReferenceSpaceType type)
&gt; &gt; 
&gt; &gt; I would pass a WebXRSession&amp; if possible.
&gt; 
&gt; I don&apos;t think it&apos;s safe because JS can hold XRSpace instances after a
&gt; XRSession is destroyed.

I was meaning to pass a WebXRSession&amp; but store a WeakPtr&lt;&gt;.
This makes it clear for instance that session cannot be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729122</commentid>
    <comment_count>8</comment_count>
      <attachid>420304</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-15 04:34:07 -0800</bug_when>
    <thetext>Created attachment 420304
Patch

Address review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729127</commentid>
    <comment_count>9</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-15 04:41:38 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #7)
&gt; (In reply to Imanol Fernandez from comment #6)
&gt; &gt; Comment on attachment 420125 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=420125&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:41
&gt; &gt; &gt;&gt; +Ref&lt;WebXRBoundedReferenceSpace&gt; WebXRBoundedReferenceSpace::create(Document&amp; document, WeakPtr&lt;WebXRSession&gt;&amp;&amp; session, XRReferenceSpaceType type)
&gt; &gt; &gt; 
&gt; &gt; &gt; I would pass a WebXRSession&amp; if possible.
&gt; &gt; 
&gt; &gt; I don&apos;t think it&apos;s safe because JS can hold XRSpace instances after a
&gt; &gt; XRSession is destroyed.
&gt; 
&gt; I was meaning to pass a WebXRSession&amp; but store a WeakPtr&lt;&gt;.
&gt; This makes it clear for instance that session cannot be null.

ah ok. I tried to use WebXRSession&amp; initially but there is a problem with getOffsetReferencespace. In that case we&apos;d need to convert the WeakPtr&lt;WebXRSession&gt; to WebXRSession to create the new XRReferenceSpace. The spec does not define any exception for that case: https://immersive-web.github.io/webxr/#dom-xrreferencespace-getoffsetreferencespace

The exceptions are handled in getPose or getViewerPose calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729149</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-15 06:52:10 -0800</bug_when>
    <thetext>WebXRSpace was previously taking a Ref&lt;WebXRSession&gt; and this patch is changing it to a WeakPtr&lt;WebXRSession&gt;.
With this change, WebXRSpace needs to handle the case of a null WebXRSession, while previously, it was not possible. Can you describe why this is good to do so?

Are we getting closer to spec? It seems this particular change could potentially be observable (before GC, WebXRSpace does something, after GC it does something different).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729239</commentid>
    <comment_count>11</comment_count>
      <attachid>420336</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-15 11:04:05 -0800</bug_when>
    <thetext>Created attachment 420336
Patch

Fix build error in wincairo: near and far are non-standard extension keywords</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729256</commentid>
    <comment_count>12</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-15 11:15:55 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #10)
&gt; WebXRSpace was previously taking a Ref&lt;WebXRSession&gt; and this patch is
&gt; changing it to a WeakPtr&lt;WebXRSession&gt;.
&gt; With this change, WebXRSpace needs to handle the case of a null
&gt; WebXRSession, while previously, it was not possible. Can you describe why
&gt; this is good to do so?
&gt; 
&gt; Are we getting closer to spec? It seems this particular change could
&gt; potentially be observable (before GC, WebXRSpace does something, after GC it
&gt; does something different).

I made the change when I added https://immersive-web.github.io/webxr/#xrsession-viewer-reference-space in order to avoid a cycle between Session and the viewer reference space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729572</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-16 00:46:35 -0800</bug_when>
    <thetext>(In reply to Imanol Fernandez from comment #12)
&gt; (In reply to youenn fablet from comment #10)
&gt; &gt; WebXRSpace was previously taking a Ref&lt;WebXRSession&gt; and this patch is
&gt; &gt; changing it to a WeakPtr&lt;WebXRSession&gt;.
&gt; &gt; With this change, WebXRSpace needs to handle the case of a null
&gt; &gt; WebXRSession, while previously, it was not possible. Can you describe why
&gt; &gt; this is good to do so?
&gt; &gt; 
&gt; &gt; Are we getting closer to spec? It seems this particular change could
&gt; &gt; potentially be observable (before GC, WebXRSpace does something, after GC it
&gt; &gt; does something different).
&gt; 
&gt; I made the change when I added
&gt; https://immersive-web.github.io/webxr/#xrsession-viewer-reference-space in
&gt; order to avoid a cycle between Session and the viewer reference space.

From the spec I can see:
- Each XRSpace has a session which is set to the XRSession that created the XRSpace.
- Each XRSession has a viewer reference space, which is an XRReferenceSpace of type &quot;viewer&quot; with an identity transform origin offset.

It seems that as long as XRSpace is alive, its XRSession should be alive.
If XRSpace is never changing of XRSession, one possibility is to have:
- XRSession is RefCounted&lt;XRSession&gt;
- XRSpace is no longer a RefCounted&lt;XRSpace&gt;
- XRSpace stores a XRSession&amp;
- XRSpace implements its ref/deref methods by calling ref/deref of its XRSession.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729622</commentid>
    <comment_count>14</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-16 04:39:10 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #13)
&gt; (In reply to Imanol Fernandez from comment #12)
&gt; &gt; (In reply to youenn fablet from comment #10)
&gt; &gt; &gt; WebXRSpace was previously taking a Ref&lt;WebXRSession&gt; and this patch is
&gt; &gt; &gt; changing it to a WeakPtr&lt;WebXRSession&gt;.
&gt; &gt; &gt; With this change, WebXRSpace needs to handle the case of a null
&gt; &gt; &gt; WebXRSession, while previously, it was not possible. Can you describe why
&gt; &gt; &gt; this is good to do so?
&gt; &gt; &gt; 
&gt; &gt; &gt; Are we getting closer to spec? It seems this particular change could
&gt; &gt; &gt; potentially be observable (before GC, WebXRSpace does something, after GC it
&gt; &gt; &gt; does something different).
&gt; &gt; 
&gt; &gt; I made the change when I added
&gt; &gt; https://immersive-web.github.io/webxr/#xrsession-viewer-reference-space in
&gt; &gt; order to avoid a cycle between Session and the viewer reference space.
&gt; 
&gt; From the spec I can see:
&gt; - Each XRSpace has a session which is set to the XRSession that created the
&gt; XRSpace.
&gt; - Each XRSession has a viewer reference space, which is an XRReferenceSpace
&gt; of type &quot;viewer&quot; with an identity transform origin offset.
&gt; 
&gt; It seems that as long as XRSpace is alive, its XRSession should be alive.
&gt; If XRSpace is never changing of XRSession, one possibility is to have:
&gt; - XRSession is RefCounted&lt;XRSession&gt;
&gt; - XRSpace is no longer a RefCounted&lt;XRSpace&gt;
&gt; - XRSpace stores a XRSession&amp;
&gt; - XRSpace implements its ref/deref methods by calling ref/deref of its
&gt; XRSession.

That&apos;s a good option. I&apos;m going to update the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729624</commentid>
    <comment_count>15</comment_count>
      <attachid>420452</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-16 04:42:03 -0800</bug_when>
    <thetext>Created attachment 420452
Patch

Use WebXRSession&amp; in WebXRSpace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729664</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-16 07:15:31 -0800</bug_when>
    <thetext>If you want to keep the design of using only WebXRSession ref, you will need to keep all spaces in WebXRSession (see how XMLHtppRequestUpload uses the ref/deref mechanism I mentioned before).

Looking further the spec (I am not familiar with it), there is not a 1-1 relationship between session and space.
- Spaces always need a reference to their session. I think having a Ref&lt;WebXRSession&gt; is good.
- One space, the viewer space, is creating a circular reference as its session needs to ref it.

It is not totally clear to me whether the viewer space is exposed somehow to scripts.

One possibility would be to have the session keep a WeakPtr&lt;&gt; of the viewer space if it is easy to recreate it as needed.
Another possibility is for the viewer space to be a different class, not refcounted at all, but fully owned by the WebXRSession as a unique_ptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729671</commentid>
    <comment_count>17</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-16 07:59:18 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #16)
&gt; If you want to keep the design of using only WebXRSession ref, you will need
&gt; to keep all spaces in WebXRSession (see how XMLHtppRequestUpload uses the
&gt; ref/deref mechanism I mentioned before).
&gt; 
&gt; Looking further the spec (I am not familiar with it), there is not a 1-1
&gt; relationship between session and space.
&gt; - Spaces always need a reference to their session. I think having a
&gt; Ref&lt;WebXRSession&gt; is good.
&gt; - One space, the viewer space, is creating a circular reference as its
&gt; session needs to ref it.
&gt; 
&gt; It is not totally clear to me whether the viewer space is exposed somehow to
&gt; scripts.
&gt; 
&gt; One possibility would be to have the session keep a WeakPtr&lt;&gt; of the viewer
&gt; space if it is easy to recreate it as needed.
&gt; Another possibility is for the viewer space to be a different class, not
&gt; refcounted at all, but fully owned by the WebXRSession as a unique_ptr.

The viewer space owned by the WebXRSession is not exposed to script. It&apos;s only used in WebXRFrame::getViewerPose().

Another option would be to create a separate populatePose method in WebXRFrame for getViewerPose calls. That would avoid creating a new class at all or the ref/deref proxy solution but at the cost of some code reusability in WebXRFrame::populatePose();

Thinking more about the pros/cons of all the 4 solutions I like the one about creating a separate class for viewer space:
- It&apos;s simpler to understand than the ref/deref proxy solution.
- It doesn&apos;t require to recreate the viewer space if WeakPtr&lt;&gt; is not alive. XRFrame::getViewerPose is tipically called once per frame so I prefer to avoid allocations as much as possible
- It allows us to reuse the WebXRFrame::populatePose() logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729868</commentid>
    <comment_count>18</comment_count>
      <attachid>420521</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-16 12:26:50 -0800</bug_when>
    <thetext>Created attachment 420521
Patch

Create a different class to hold WebXRSession&apos;s viewer-space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730290</commentid>
    <comment_count>19</comment_count>
      <attachid>420521</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-17 08:34:17 -0800</bug_when>
    <thetext>Comment on attachment 420521
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:78
&gt; +    ASSERT(is&lt;Document&gt;(scriptExecutionContext()));

I guess you could do something like:
auto* document = downcast&lt;Document&gt;(scriptExecutionContext());
if (!document)
   ...

&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.h:40
&gt;      WTF_MAKE_ISO_ALLOCATED(WebXRBoundedReferenceSpace);

Can WebXRBoundedReferenceSpace be set as final?

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:39
&gt; +

Unnecessary

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:142
&gt; +    if (limit) {

We could probably compute limit closer to its actual use.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:68
&gt; +    explicit WebXRFrame(Ref&lt;WebXRSession&gt;&amp;&amp;, IsAnimationFrame);

explici not needed.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:69
&gt; +    WebXRFrame(WebXRSession&amp;, bool isAnimationFrame);

To remove?

&gt; Source/WebCore/Modules/webxr/WebXRFrame.idl:37
&gt; +    [MayThrowException, CallWith=Document] WebXRPose? getPose(WebXRSpace space, WebXRSpace baseSpace);

Should we use the Document here, or the document that created the WebXRSession?

&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.cpp:102
&gt;      ASSERT(is&lt;Document&gt;(scriptExecutionContext()));

ditto here, we can probably simplify a tiny bit.

&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.cpp:126
&gt; +

not needed

&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.h:53
&gt; +    WebXRReferenceSpace(Document&amp;, Ref&lt;WebXRSession&gt;&amp;&amp;, Ref&lt;WebXRRigidTransform&gt;&amp;&amp;, XRReferenceSpaceType);

Should be either protected or private, not public though probably since we have create static method

&gt; Source/WebCore/Modules/webxr/WebXRSpace.h:86
&gt; +    WebXRSession&amp; m_session;

A ref here is probably not safe since WebXRViewerSpace is refcounted, it could potentially outlive its WebXRSession.
If we cannot make WebXRViewerSpace a unique_ptr, let&apos;s have a WeakPtr there.
The alternative would be for WebXRSpace to be RefCounted.
Or to introduce a WebXRSpaceBase which is not refcounted from which would derive WebXRViewerSpace and WebXRSpace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730334</commentid>
    <comment_count>20</comment_count>
      <attachid>420521</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-17 09:56:54 -0800</bug_when>
    <thetext>Comment on attachment 420521
Patch

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.cpp:78
&gt;&gt; +    ASSERT(is&lt;Document&gt;(scriptExecutionContext()));
&gt; 
&gt; I guess you could do something like:
&gt; auto* document = downcast&lt;Document&gt;(scriptExecutionContext());
&gt; if (!document)
&gt;    ...

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRBoundedReferenceSpace.h:40
&gt;&gt;      WTF_MAKE_ISO_ALLOCATED(WebXRBoundedReferenceSpace);
&gt; 
&gt; Can WebXRBoundedReferenceSpace be set as final?

yes, done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:39
&gt;&gt; +
&gt; 
&gt; Unnecessary

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:142
&gt;&gt; +    if (limit) {
&gt; 
&gt; We could probably compute limit closer to its actual use.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:68
&gt;&gt; +    explicit WebXRFrame(Ref&lt;WebXRSession&gt;&amp;&amp;, IsAnimationFrame);
&gt; 
&gt; explici not needed.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.h:69
&gt;&gt; +    WebXRFrame(WebXRSession&amp;, bool isAnimationFrame);
&gt; 
&gt; To remove?

yes, removed

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.idl:37
&gt;&gt; +    [MayThrowException, CallWith=Document] WebXRPose? getPose(WebXRSpace space, WebXRSpace baseSpace);
&gt; 
&gt; Should we use the Document here, or the document that created the WebXRSession?

We need both. I had to add it to implement a security check from the spec:

https://immersive-web.github.io/webxr/#poses-may-be-reported
&quot;If session’s relevant global object is not the current global object, return false.&quot;

&gt;&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.cpp:102
&gt;&gt;      ASSERT(is&lt;Document&gt;(scriptExecutionContext()));
&gt; 
&gt; ditto here, we can probably simplify a tiny bit.

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.cpp:126
&gt;&gt; +
&gt; 
&gt; not needed

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRReferenceSpace.h:53
&gt;&gt; +    WebXRReferenceSpace(Document&amp;, Ref&lt;WebXRSession&gt;&amp;&amp;, Ref&lt;WebXRRigidTransform&gt;&amp;&amp;, XRReferenceSpaceType);
&gt; 
&gt; Should be either protected or private, not public though probably since we have create static method

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSpace.h:86
&gt;&gt; +    WebXRSession&amp; m_session;
&gt; 
&gt; A ref here is probably not safe since WebXRViewerSpace is refcounted, it could potentially outlive its WebXRSession.
&gt; If we cannot make WebXRViewerSpace a unique_ptr, let&apos;s have a WeakPtr there.
&gt; The alternative would be for WebXRSpace to be RefCounted.
&gt; Or to introduce a WebXRSpaceBase which is not refcounted from which would derive WebXRViewerSpace and WebXRSpace.

Thanks for the review. I have changed WebXRSpace to be not RefCounted and make WebXRReferenceSpace RefCounted instead.

Now WebXRViewerSpace is not RefCounted and uses a unique_ptr in WebXRSession.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730343</commentid>
    <comment_count>21</comment_count>
      <attachid>420660</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-17 10:07:37 -0800</bug_when>
    <thetext>Created attachment 420660
Patch

Address review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730792</commentid>
    <comment_count>22</comment_count>
      <attachid>420660</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-18 02:02:59 -0800</bug_when>
    <thetext>Comment on attachment 420660
Patch

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

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:134
&gt; +    const bool emulatedPosition = m_data.isPositionEmulated || !m_data.isPositionValid;

why const bool?

&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:60
&gt; +    , m_viewerReferenceSpace(new WebXRViewerSpace(document, *this))

makeUnique&lt;WebXRViewerSpace&gt;(document, this)

&gt; Source/WebCore/Modules/webxr/WebXRSpace.h:58
&gt;      ScriptExecutionContext* scriptExecutionContext() const override { return ContextDestructionObserver::scriptExecutionContext(); }

final?

&gt; Source/WebCore/Modules/webxr/WebXRSpace.h:60
&gt; +    Ref&lt;WebXRRigidTransform&gt; m_originOffset;

Can we make it private and add a protected WebXRRigidTransform&amp; getter?

&gt; Source/WebCore/Modules/webxr/WebXRSpace.h:81
&gt; +    void derefEventTarget() final { RELEASE_ASSERT_NOT_REACHED(); }

This is fine like this. Otherwise, you could do m_session.ref()/m_session.deref();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730803</commentid>
    <comment_count>23</comment_count>
      <attachid>420660</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-18 02:49:31 -0800</bug_when>
    <thetext>Comment on attachment 420660
Patch

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

&gt;&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:134
&gt;&gt; +    const bool emulatedPosition = m_data.isPositionEmulated || !m_data.isPositionValid;
&gt; 
&gt; why const bool?

IMO it&apos;s a good practice to use const on local variables that don&apos;t change (e.g some discussion about this here: https://www.bfilipek.com/2016/12/please-declare-your-variables-as-const.html). I wish C++ had implicit const by default :)

I removed the const to follow the same style as existing code. This could be a https://webkit.org/code-style-guidelines/ follow-up discussion

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSession.cpp:60
&gt;&gt; +    , m_viewerReferenceSpace(new WebXRViewerSpace(document, *this))
&gt; 
&gt; makeUnique&lt;WebXRViewerSpace&gt;(document, this)

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSpace.h:58
&gt;&gt;      ScriptExecutionContext* scriptExecutionContext() const override { return ContextDestructionObserver::scriptExecutionContext(); }
&gt; 
&gt; final?

done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSpace.h:60
&gt;&gt; +    Ref&lt;WebXRRigidTransform&gt; m_originOffset;
&gt; 
&gt; Can we make it private and add a protected WebXRRigidTransform&amp; getter?

yes, done

&gt;&gt; Source/WebCore/Modules/webxr/WebXRSpace.h:81
&gt;&gt; +    void derefEventTarget() final { RELEASE_ASSERT_NOT_REACHED(); }
&gt; 
&gt; This is fine like this. Otherwise, you could do m_session.ref()/m_session.deref();

perfect, thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730804</commentid>
    <comment_count>24</comment_count>
      <attachid>420818</attachid>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-02-18 02:50:17 -0800</bug_when>
    <thetext>Created attachment 420818
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730807</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-02-18 03:12:52 -0800</bug_when>
    <thetext>&gt; IMO it&apos;s a good practice to use const on local variables that don&apos;t change
&gt; (e.g some discussion about this here:
&gt; https://www.bfilipek.com/2016/12/please-declare-your-variables-as-const.
&gt; html). I wish C++ had implicit const by default :)
&gt; 
&gt; I removed the const to follow the same style as existing code. This could be
&gt; a https://webkit.org/code-style-guidelines/ follow-up discussion

Agreed this adds some nice properties but this makes reading the code is a bit more tedious.
Starting a webkit thread might be indeed be a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731262</commentid>
    <comment_count>26</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-19 01:07:17 -0800</bug_when>
    <thetext>Committed r273132: &lt;https://commits.webkit.org/r273132&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420818.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741596</commentid>
    <comment_count>27</comment_count>
      <attachid>420818</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-18 22:42:05 -0700</bug_when>
    <thetext>Comment on attachment 420818
Patch for landing

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

&gt; Source/WebCore/testing/WebFakeXRDevice.cpp:170
&gt; +    m_device.scheduleOnNextFrame([this]() {

This likes a use-after-free bug waiting to happen.  I think the XR code could use a good audit to make sure there aren&apos;t pointer safety or garbage collection issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741660</commentid>
    <comment_count>28</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-19 04:20:06 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #27)
&gt; Comment on attachment 420818 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420818&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/testing/WebFakeXRDevice.cpp:170
&gt; &gt; +    m_device.scheduleOnNextFrame([this]() {
&gt; 
&gt; This likes a use-after-free bug waiting to happen.  I think the XR code
&gt; could use a good audit to make sure there aren&apos;t pointer safety or garbage
&gt; collection issues.

True that it does not look great, though I think it is probably fine now since m_device is owned by WebFakeXRDevice and uses a timer to execute the pending updates.

@Imanol, it would be nice to do a refactoring there to get this code more robust in the long run.
It seems that scheduleOnNextFrame could be implemented by WebFakeXRDevice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742213</commentid>
    <comment_count>29</comment_count>
    <who name="Imanol Fernandez">ifernandez</who>
    <bug_when>2021-03-22 06:49:16 -0700</bug_when>
    <thetext>We can also probably get rid of the scheduleOnNextFrame calls by splitting the fake frame state into currentFrame and nextFrame, and just copy the next on the current on each fake frame.

I&apos;ll try this apporach and submit some patch for review</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418928</attachid>
            <date>2021-02-01 14:43:54 -0800</date>
            <delta_ts>2021-02-12 08:16:05 -0800</delta_ts>
            <desc>wip</desc>
            <filename>bug-221225-20210201234352.patch</filename>
            <type>text/plain</type>
            <size>112266</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM1ZGM0YWQxNjQ0N2Qz
ZTk5ZGRmY2Y5NTcyNzBmMGFkZmE4ZTcyYy4uMGQzY2U3NzVmOTI4YzhkNDdhMmFiMTU5NzhlZDYx
NjBhMjA1MDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NiBAQAorMjAyMS0wMi0wMSAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJl
ZmVyZW5jZVNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpib3VuZHNHZW9tZXRyeSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNl
U3BhY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3Bh
Y2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bWF0cml4RnJvbVBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OldlYlhSRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6bXVzdFBvc2VzQmVMaW1pdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkZyYW1lOjpnZXRWaWV3ZXJQb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6
OmdldFBvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6c2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkZyYW1lOjpzZXRGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFt
ZTo6Z2V0RnJhbWVEYXRhIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSUG9zZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUG9z
ZTo6V2ViWFJQb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJQb3NlOjppc1ZpZXdlclBvc2UgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSUmVmZXJlbmNlU3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VT
cGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6Oldl
YlhSUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFj
ZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNl
U3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhy
L1dlYlhSUmVmZXJlbmNlU3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNl
U3BhY2U6OnR5cGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSU2Vzc2lvbjo6fldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNl
c3Npb246OmluaXRpYWxpemVWaWV3ZXJSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTZXNzaW9u
Ojpwb3Nlc0NhbkJlUmVwb3J0ZWQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OldlYlhSU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJTcGFjZTo6ZWZmZWN0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSU3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OnNlc3Np
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6aXNSZWZlcmVuY2VTcGFj
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNlOjppc0JvdW5kZWRSZWZlcmVu
Y2VTcGFjZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OnJlcXVl
c3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZp
Y2U6OnZpZXdzIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJWaWV3OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpXZWJY
UlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpzZXRQcm9qZWN0aW9uTWF0cml4
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJWaWV3Ojpwcm9qZWN0aW9uTWF0cml4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSVmlldzo6dHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSVmlld2VyUG9zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdlclBvc2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdlclBvc2U6OldlYlhSVmlld2VyUG9z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdlclBvc2U6OnNldFZpZXdzKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5oOgorICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJWaWV3ZXJQb3NlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1hSRXll
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJv
bVByb2plY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmg6
CisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOgorICAg
ICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpjcmVhdGVSZWZlcmVuY2VTcGFjZSk6Cisg
ICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbik6
CisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZyk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpYclBvc2VmVG9Qb3NlKToKKyAgICAg
ICAgKFBsYXRmb3JtWFI6OnhyVmlld1RvUG9zZURhdGEpOgorICAgICAgICAoUGxhdGZvcm1YUjo6
T3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhS
RGV2aWNlOjp2aWV3cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGYWtlWFJWaWV3OjpzZXRQcm9qZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkZha2VYUlZpZXc6OnNldEZpZWxkT2ZWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2lt
dWxhdGVkWFJEZXZpY2U6OnZpZXdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRl
ZFhSRGV2aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZh
a2VYUkRldmljZTo6c2V0Vmlld3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNl
OjpzZXRWaWV3ZXJPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpj
bGVhclZpZXdlck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNl
dEZsb29yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6Y2xlYXJG
bG9vck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmll
dyk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaDoKKworMjAyMS0wMi0wMSAg
U2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4gYW5kIEltYW5vbCBGZXJu
YW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgQ29tcGxldGUgWFJTZXNz
aW9uOjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDk3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gUHJvcGVybHkgaW1wbGVtZW50IHRo
ZSByZW5kZXIgbG9vcCBmb3IgaW1tZXJzaXZlIGFuZCBpbmxpbmUgWFIgc2Vzc2lvbnMKKyAgICAg
ICAgLSBBcHBseSBwZW5kaW5nIHJlbmRlciBzdGF0ZSBjaGFuZ2VzCisKKyAgICAgICAgVGVzdGVk
IGJ5IHRoZSBXZWJYUiBwbGF0Zm9ybSB0ZXN0cy4gCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OldlYlhSRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJGcmFtZTo6c2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpzZXRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJYUkZyYW1lOjppc0FjdGl2ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlJlbmRlclN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlbmRlclN0YXRl
OjpzZXRPdXRwdXRDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJSZW5kZXJTdGF0ZTo6
Y29tcG9zaXRpb25EaXNhYmxlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlbmRl
clN0YXRlOjpzZXRDb21wb3NpdGlvbkRpc2FibGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhy
L1dlYlhSU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OldlYlhS
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVu
Y2VTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVlc3RBbmltYXRp
b25GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OmFwcGx5UGVuZGluZ1Jl
bmRlclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6ZnJhbWVTaG91bGRC
ZVJlbmRlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6cmVxdWVz
dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6b25GcmFtZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpXZWJY
UlN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZp
Y2U6OkR1bW15SW5saW5lRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3lzdGVtOjpE
dW1teUlubGluZURldmljZTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhy
L1dlYlhSU3lzdGVtLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVyOjpjYW52YXMgY29uc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpXZWJYUldlYkdMTGF5ZXI6OmNvbXBvc2l0aW9uRGlzYWJsZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJXZWJHTExheWVyOjpzZXRDb21wb3NpdGlvbkRpc2FibGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgICogcGxhdGZvcm0veHIv
b3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhS
RGV2aWNlOjpyZXNldFNlc3Npb24pOgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNl
OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9w
ZW5YUkRldmljZTo6cG9sbEV2ZW50cyk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpzZXNzaW9uSXNW
aXNpYmxlKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OnNlc3Npb25TaG91bGRTdG9wKToKKyAgICAg
ICAgKFBsYXRmb3JtWFI6OnNlc3Npb25Jc0FjdGl2ZSk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpP
cGVuWFJEZXZpY2U6OmJlZ2luU2Vzc2lvbik6CisgICAgICAgIChQbGF0Zm9ybVhSOjp4clZpZXdU
b1ZpZXdEYXRhKToKKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVxdWVzdEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oOgor
ICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXVsYXRlZFhSRGV2aWNlOjpTaW11bGF0ZWRYUkRldmljZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaW11bGF0ZWRYUkRldmljZTo6flNpbXVsYXRlZFhSRGV2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzdG9wVGltZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1lKToKKyAgICAgICAgKiB0ZXN0
aW5nL1dlYkZha2VYUkRldmljZS5oOgorCiAyMDIxLTAyLTAxICBTYWFtIEJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIExhemlseSBjcmVhdGUgbV93aW5kb3dDbG9zZVdhdGNo
cG9pbnRzIHNvIHdlIGRvbid0IG1pc3Rha2VubHkgdGhpbmsgd2UgaGF2ZSBhIGZyYW1lIHdoZW4g
cmUtYXNzb2NpYXRpbmcgYSBkb2N1bWVudCB0byBhIGdpdmVuIGNhY2hlZCBmcmFtZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlLmNwcAppbmRleCBkNDRlZDYyYmRjZDU2ZmJlODI3OTQwMWUzMDYwMzg4ZDczZjQ5
MWZkLi4xMjNjNjUwZTYyYTI1YzdiYzAwMjZhMmM2ZGM2OTE5NzVjZTg5YTdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlLmNwcApAQCAtMjgsNyArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRE9NUG9pbnRSZWFkT25seS5oIgorI2lu
Y2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNywxMSArNDAsMTkgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlKTsKIAogUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3Vt
ZW50LCBXVEZNb3ZlKHNlc3Npb24pLCB0eXBlKSk7CisJUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
IG9mZnNldCA9IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNl
c3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsKIH0KIAotV2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwg
UmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQot
ICAgIDogV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlw
ZSkKKworUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBz
ZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUob2Zmc2V0KSwg
dHlwZSkpOworfQorCisKK1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpXZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vz
c2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSB0eXBlKQorICAgIDogV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShz
ZXNzaW9uKSwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKQogewogfQogCkBAIC00OSw5ICs2MCwyNyBA
QCBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6fldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
KCkgPSBkZWZhdWx0OwogCiBjb25zdCBWZWN0b3I8UmVmPERPTVBvaW50UmVhZE9ubHk+PiYgV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmJvdW5kc0dlb21ldHJ5KCkgY29uc3QKIHsKKwkvLyBG
SVhNRTogZ2V0IGRhdGEgZnJvbSBkZXZpY2UKICAgICByZXR1cm4gbV9ib3VuZHNHZW9tZXRyeTsK
IH0KIAorCitSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0m
IG9mZnNldFRyYW5zZm9ybSkKK3sKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGlzPERvY3VtZW50PihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpKTsKKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRo
dWIuaW8vd2VieHIvI2RvbS14cnJlZmVyZW5jZXNwYWNlLWdldG9mZnNldHJlZmVyZW5jZXNwYWNl
CisgICAgLy8gU2V0IG9mZnNldFNwYWNl4oCZcyBvcmlnaW4gb2Zmc2V0IHRvIHRoZSByZXN1bHQg
b2YgbXVsdGlwbHlpbmcgYmFzZeKAmXMgb3JpZ2luIG9mZnNldCBieSBvcmlnaW5PZmZzZXQgaW4g
dGhlIHJlbGV2YW50IHJlYWxtIG9mIGJhc2UuCisgICAgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
IG9mZnNldCA9IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShtX29yaWdpbk9mZnNldC0+cmF3
VHJhbnNmb3JtKCkgKiBvZmZzZXRUcmFuc2Zvcm0ucmF3VHJhbnNmb3JtKCkpOworCisgICAgLy8g
RklYTUU6IHNldCBvZmZzZXRTcGFjZeKAmXMgYm91bmRzR2VvbWV0cnkgdG8gYmFzZeKAmXMgYm91
bmRzR2VvbWV0cnksIHdpdGggZWFjaCBwb2ludCBtdWx0aXBsaWVkIGJ5IHRoZSBpbnZlcnNlIG9m
IG9yaWdpbk9mZnNldC4KKworICAgIHJldHVybiBjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLCBtX3Nlc3Npb24uY29weVJlZigpLCBXVEZNb3ZlKG9m
ZnNldCksIG1fdHlwZSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCmluZGV4IDcxYTlmOTcwYTczMDFiZDRm
MDRlNGMwYmJlZTgxZWFlZWEzZjQ0ZDcuLmYwYWY3ZTc1Zjg0ZTQ2YmUwZmIzODIyMGYyZGEwMTcw
MWQ3NWYzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKQEAgLTI1LDEzICsyNSwxMyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2lmIEVOQUJMRShXRUJYUikKKwogI2luY2x1ZGUgIldlYlhSUmVmZXJlbmNl
U3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIEVOQUJMRShXRUJYUikKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01Qb2ludFJlYWRPbmx5OwpAQCAtNDAsMTcgKzQwLDIz
IEBAIGNsYXNzIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlIDogcHVibGljIFdlYlhSUmVmZXJl
bmNlU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2UpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFhSUmVmZXJlbmNl
U3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBj
cmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgdmlydHVhbCB+V2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8RE9NUG9pbnRSZWFk
T25seT4+JiBib3VuZHNHZW9tZXRyeSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJYUlJlZmVyZW5j
ZVNwYWNlPiBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3Jt
JikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9j
dW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAg
V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYm
LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworCisg
ICAgYm9vbCBpc0JvdW5kZWRSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIFZlY3RvcjxSZWY8RE9NUG9pbnRSZWFkT25seT4+IG1fYm91bmRzR2VvbWV0
cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0VCWFJTUEFDRShXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSwgaXNCb3VuZGVkUmVmZXJl
bmNlU3BhY2UoKSkKKwogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IDkzNWRjMTI3YzlkMDdhN2M4ZDIzODQx
NTQ1ODdkNTEzNTg4N2FlMWEuLmY2N2M3MjY0OWYxNTQ5NWJmZWY0ZWNhODdmZjVkNDRiOTdiZjRk
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAt
MjgsMzkgKzI4LDIyMiBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2UuaCIKKyNpbmNsdWRlICJXZWJYUlJlZmVyZW5jZVNwYWNlLmgi
CiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViWFJWaWV3ZXJQb3NlLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4RnJvbVBvc2UoY29uc3QgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2UmIHBvc2UpCit7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbWF0cml4OworICAgIG1hdHJpeC50cmFuc2xhdGUzZChwb3NlLnBvc2l0aW9u
LngoKSwgcG9zZS5wb3NpdGlvbi55KCksIHBvc2UucG9zaXRpb24ueigpKTsKKyAgICBtYXRyaXgu
bXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21RdWF0ZXJuaW9uKHBvc2Uub3JpZW50
YXRpb24ueCwgcG9zZS5vcmllbnRhdGlvbi55LCBwb3NlLm9yaWVudGF0aW9uLnosIHBvc2Uub3Jp
ZW50YXRpb24udykpOworICAgIHJldHVybiBtYXRyaXg7Cit9CisKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJYUkZyYW1lKTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6OmNy
ZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCitSZWY8V2ViWFJGcmFtZT4gV2ViWFJG
cmFtZTo6Y3JlYXRlKFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgYm9vbCBpc0FuaW1hdGlvbkZyYW1l
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUoV1RGTW92ZShzZXNzaW9u
KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUoc2Vzc2lvbiwgaXNBbmlt
YXRpb25GcmFtZSkpOwogfQogCi1XZWJYUkZyYW1lOjpXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbikKLSAgICA6IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorV2ViWFJG
cmFtZTo6V2ViWFJGcmFtZShXZWJYUlNlc3Npb24mIHNlc3Npb24sIGJvb2wgaXNBbmltYXRpb25G
cmFtZSkKKyAgICA6IG1fYWN0aXZlKGZhbHNlKQorICAgICwgbV9Jc0FuaW1hdGlvbkZyYW1lKGlz
QW5pbWF0aW9uRnJhbWUpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKIHsKIH0KIAogV2ViWFJG
cmFtZTo6fldlYlhSRnJhbWUoKSA9IGRlZmF1bHQ7CiAKLWNvbnN0IFdlYlhSU2Vzc2lvbiYgV2Vi
WFJGcmFtZTo6c2Vzc2lvbigpIGNvbnN0CisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHVi
LmlvL3dlYnhyLyNwb3Nlcy1tdXN0LWJlLWxpbWl0ZWQKK2Jvb2wgV2ViWFJGcmFtZTo6bXVzdFBv
c2VzQmVMaW1pdGVkKGNvbnN0IFdlYlhSU3BhY2UmIHNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJiBi
YXNlU3BhY2UpCiB7Ci0gICAgcmV0dXJuIG1fc2Vzc2lvbjsKKyAgICBhdXRvIGlzT3V0c2lkZU5h
dGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5jZVNwYWNlID0gW10gKGNvbnN0IFdlYlhSU3BhY2Um
IHNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJiBvdGhlcikgeworICAgICAgICBVTlVTRURfUEFSQU0o
b3RoZXIpOworICAgICAgICBpZiAoIWlzPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPihzcGFj
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gVE9ETzogcmV0dXJu
IHRydWUgd2hlbmV2ZXIgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGJvdW5kZWQgZ2VvbWV0cnkgb2YK
KyAgICAgICAgLy8gfHNwYWNlfCB0byB0aGUgbmF0aXZlIG9yaWdpbiBvZiB8b3RoZXJ8IHNwYWNl
IGlzIGdyZWF0ZXIgdGhhbiAxbQorICAgICAgICAvLyAoc3VnZ2VzdGVkIGJ5IHNwZWNzKS4KKwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIGlmIChpc091dHNpZGVOYXRpdmVC
b3VuZHNPZkJvdW5kZWRSZWZlcmVuY2VTcGFjZShzcGFjZSwgYmFzZVNwYWNlKQorICAgICAgICB8
fCBpc091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5kZWRSZWZlcmVuY2VTcGFjZShiYXNlU3BhY2Us
IHNwYWNlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIGlzTG9jYWxSZWZlcmVu
Y2VTcGFjZSA9IFtdIChjb25zdCBXZWJYUlNwYWNlJiBzcGFjZSkgeworICAgICAgICBpZiAoIWlz
PFdlYlhSUmVmZXJlbmNlU3BhY2U+KHNwYWNlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBhdXRvIHR5cGUgPSBkb3duY2FzdDxXZWJYUlJlZmVyZW5jZVNwYWNlPihzcGFj
ZSkudHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9j
YWwgfHwgdHlwZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vcikKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAg
aWYgKGlzTG9jYWxSZWZlcmVuY2VTcGFjZShzcGFjZSkgfHwgaXNMb2NhbFJlZmVyZW5jZVNwYWNl
KGJhc2VTcGFjZSkpIHsKKyAgICAgICAgLy8gVE9ETzogSWYgdGhlIGRpc3RhbmNlIGJldHdlZW4g
bmF0aXZlIG9yaWdpbnMgb2Ygc3BhY2VzIGlzIGdyZWF0ZXIKKyAgICAgICAgLy8gdGhhbiAxNW0g
KHN1Z2dlc3RlZCBieSBzcGVjcykgcmV0dXJuIHRydWUuCisgICAgfQorCisgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1SZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBXZWJYUkZyYW1lOjpnZXRWaWV3ZXJQ
b3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKQorCitzdHJ1Y3QgV2ViWFJGcmFtZTo6UG9w
dWxhdGVkUG9zZSB7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIGJv
b2wgZW11bGF0ZWRQb3NpdGlvbjsKK307CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRo
dWIuaW8vd2VieHIvI3BvcHVsYXRlLXRoZS1wb3NlCitFeGNlcHRpb25PcjxPcHRpb25hbDxXZWJY
UkZyYW1lOjpQb3B1bGF0ZWRQb3NlPj4gV2ViWFJGcmFtZTo6cG9wdWxhdGVQb3NlKGNvbnN0IFdl
YlhSU3BhY2UmIHNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJiBiYXNlU3BhY2UpCiB7Ci0gICAgcmV0
dXJuIHsgfTsKKyAgICAvLyAxLiBJZiBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gaXMgZmFsc2Us
IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBp
ZiAoIW1fYWN0aXZlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKKworICAgIC8vIDIuIExldCBzZXNzaW9uIGJlIGZyYW1l4oCZcyBzZXNzaW9uIG9iamVj
dC4KKyAgICAvLyAzLiBJZiBzcGFjZeKAmXMgc2Vzc2lvbiBkb2VzIG5vdCBlcXVhbCBzZXNzaW9u
LCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAg
aWYgKCZzcGFjZS5zZXNzaW9uKCkgIT0gJm1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyA0LiBJZiBiYXNlU3BhY2XigJlz
IHNlc3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICgmYmFzZVNwYWNlLnNlc3Npb24oKSAh
PSAmbV9zZXNzaW9uKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKKworICAgIC8vIDUuIENoZWNrIGlmIHBvc2VzIG1heSBiZSByZXBvcnRlZCBhbmQsIGlm
IG5vdCwgdGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBp
ZiAoIW1fc2Vzc2lvbi5wb3Nlc0NhbkJlUmVwb3J0ZWQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKKworICAgIC8vIDYuIExldCBsaW1pdCBiZSB0aGUgcmVz
dWx0IG9mIHdoZXRoZXIgcG9zZXMgbXVzdCBiZSBsaW1pdGVkIGJldHdlZW4gc3BhY2UgYW5kIGJh
c2VTcGFjZS4KKyAgICBib29sIGxpbWl0ID0gbXVzdFBvc2VzQmVMaW1pdGVkKHNwYWNlLCBiYXNl
U3BhY2UpOworCisgICAgLy8gNy4gTGV0IHRyYW5zZm9ybSBiZSBwb3Nl4oCZcyB0cmFuc2Zvcm0u
CisgICAgLy8gOC4gUXVlcnkgdGhlIFhSIGRldmljZSdzIHRyYWNraW5nIHN5c3RlbSBmb3Igc3Bh
Y2XigJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNwYWNlIGF0IHRoZSBmcmFtZeKAmXMgdGltZS4K
KworICAgIGlmICghbV9kYXRhLmlzVHJhY2tpbmdWYWxpZCkgeworICAgICAgICAvLyBGSVhNRTog
Y2hlY2sgaWYgc3BhY2XigJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNwYWNlIGhhcyBiZWVuIGRl
dGVybWluZWQgaW4gdGhlIHBhc3QuCisgICAgICAgIC8vIEFueXdheSB0aGlzIGVtdWxhdGlvbiBp
cyB1c3VhbGx5IHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0gaW4gdGhlIHBvc2UgKGUuZy4gT3BlblhS
KQorICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKyAgICB9CisKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBiYXNlVHJhbnNmb3JtID0gYmFzZVNwYWNlLmVmZmVjdGl2ZU9yaWdpbigp
OworICAgIGlmICghYmFzZVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAgICAgcmV0dXJu
IHsgV1RGOjpudWxsb3B0IH07CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0g
PSAgKmJhc2VUcmFuc2Zvcm0uaW52ZXJzZSgpICogc3BhY2UuZWZmZWN0aXZlT3JpZ2luKCk7Cisg
ICAgY29uc3QgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gbV9kYXRhLmlzUG9zaXRpb25FbXVsYXRl
ZCB8fCAhbV9kYXRhLmlzUG9zaXRpb25WYWxpZDsKKworICAgIGlmIChsaW1pdCkgeworICAgICAg
ICAvLyBUT0RPOiBhcHBseSBwb3NlIGxpbWl0cyBsb2dpYworICAgIH0KKworICAgIHJldHVybiB7
IFBvcHVsYXRlZFBvc2UgeyB0cmFuc2Zvcm0sIGVtdWxhdGVkUG9zaXRpb24gfSB9OworfQorCisv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJmcmFtZS1nZXR2
aWV3ZXJwb3NlCitFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPj4gV2ViWFJGcmFt
ZTo6Z2V0Vmlld2VyUG9zZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJiByZWZlcmVuY2VTcGFj
ZSkKK3sKKyAgICAvLyAxLiBMZXQgZnJhbWUgYmUgdGhpcy4KKyAgICAvLyAyLiBMZXQgc2Vzc2lv
biBiZSBmcmFtZeKAmXMgc2Vzc2lvbiBvYmplY3QuCisgICAgLy8gMy4gSWYgZnJhbWXigJlzIGFu
aW1hdGlvbkZyYW1lIGJvb2xlYW4gaXMgZmFsc2UsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9y
IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fSXNBbmltYXRpb25GcmFtZSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyA0
LiBMZXQgcG9zZSBiZSBhIG5ldyBYUlZpZXdlclBvc2Ugb2JqZWN0IGluIHRoZSByZWxldmFudCBy
ZWFsbSBvZiBzZXNzaW9uLgorICAgIC8vIDUuIFBvcHVsYXRlIHRoZSBwb3NlIG9mIHNlc3Npb27i
gJlzIHZpZXdlciByZWZlcmVuY2Ugc3BhY2UgaW4gcmVmZXJlbmNlU3BhY2UgYXQgdGhlIHRpbWUg
cmVwcmVzZW50ZWQgYnkgZnJhbWUgaW50byBwb3NlLgorICAgIGF1dG8gcG9wdWxhdGVQb3NlUmVz
dWx0ID0gcG9wdWxhdGVQb3NlKG1fc2Vzc2lvbi52aWV3ZXJSZWZlcmVuY2VTcGFjZSgpLCByZWZl
cmVuY2VTcGFjZSk7CisgICAgaWYgKHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisK
KyAgICAvLyA2LiBJZiBwb3NlIGlzIG51bGwgcmV0dXJuIG51bGwuCisgICAgYXV0byBwb3B1bGF0
ZVZhbHVlID0gcG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlm
ICghcG9wdWxhdGVWYWx1ZS5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+IHBvc2UgPSBXZWJYUlZpZXdlclBvc2U6OmNyZWF0
ZShXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUocG9wdWxhdGVWYWx1ZS0+dHJhbnNmb3JtKSwg
cG9wdWxhdGVWYWx1ZS0+ZW11bGF0ZWRQb3NpdGlvbik7CisKKyAgICAvLyA3LiBMZXQgeHJ2aWV3
cyBiZSBhbiBlbXB0eSBsaXN0LgorICAgIFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4geHJWaWV3czsK
KyAgICAvLyA4LiBGb3IgZWFjaCBhY3RpdmUgdmlldyB2aWV3IGluIHRoZSBsaXN0IG9mIHZpZXdz
IG9uIHNlc3Npb24sIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICB1aW50MzJfdCBp
bmRleCA9IDA7CisgICAgZm9yIChhdXRvJiB2aWV3IDogbV9zZXNzaW9uLnZpZXdzKCkpIHsKKyAg
ICAgICAgaWYgKCF2aWV3LmFjdGl2ZSB8fCBtX2RhdGEudmlld3Muc2l6ZSgpIDw9IGluZGV4KQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gOC4xIExldCB4cnZpZXcgYmUgYSBu
ZXcgWFJWaWV3IG9iamVjdCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Ygc2Vzc2lvbi4KKyAgICAg
ICAgLy8gOC4yIEluaXRpYWxpemUgeHJ2aWV34oCZcyB1bmRlcmx5aW5nIHZpZXcgdG8gdmlldy4K
KyAgICAgICAgLy8gOC4zIEluaXRpYWxpemUgeHJ2aWV34oCZcyBleWUgdG8gdmlld+KAmXMgZXll
LgorICAgICAgICAvLyA4LjQgSW5pdGlhbGl6ZSB4cnZpZXfigJlzIGZyYW1lIHRpbWUgdG8gZnJh
bWXigJlzIHRpbWUuCisgICAgICAgIC8vIDguNSBJbml0aWFsaXplIHhydmlld+KAmXMgc2Vzc2lv
biB0byBzZXNzaW9uLgorICAgICAgICAvLyA4LjYuIExldCBvZmZzZXQgYmUgYW4gbmV3IFhSUmln
aWRUcmFuc2Zvcm0gb2JqZWN0IGVxdWFsIHRvIHRoZSB2aWV3IG9mZnNldCBvZiB2aWV3IGluIHRo
ZSByZWxldmFudCByZWFsbSBvZiBzZXNzaW9uLgorICAgICAgICAvLyA4LjcuIFNldCB4cnZpZXfi
gJlzIHRyYW5zZm9ybSBwcm9wZXJ0eSB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIHRoZSBY
UlZpZXdlclBvc2UncyB0cmFuc2Zvcm0gYnkgdGhlIG9mZnNldCB0cmFuc2Zvcm0gaW4gdGhlIHJl
bGV2YW50IHJlYWxtIG9mIHNlc3Npb24KKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggb2Zm
c2V0ID0gbWF0cml4RnJvbVBvc2UobV9kYXRhLnZpZXdzW2luZGV4XS5vZmZzZXQpOworICAgICAg
ICBhdXRvIHRyYW5zZm9ybSA9IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShwb3NlLT50cmFu
c2Zvcm0oKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldCk7CisKKyAgICAgICAgYXV0byB4clZpZXcg
PSBXZWJYUlZpZXc6OmNyZWF0ZSh2aWV3LmV5ZSwgV1RGTW92ZSh0cmFuc2Zvcm0pLCBtYWtlUmVm
KG1fc2Vzc2lvbikpOworCisgICAgICAgIC8vIFNldCBwcm9qZWN0aW9uIG1hdHJpeCBmb3IgZWFj
aCB2aWV3CisgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDE2PiBwcm9qZWN0aW9uID0gc3dpdGNo
T24obV9kYXRhLnZpZXdzW2luZGV4XS5wcm9qZWN0aW9uLCBbJl0oY29uc3QgUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OkZvdiYgZm92KSB7CisgICAgICAgICAgICBjb25zdCBkb3VibGUg
bmVhciA9IG1fc2Vzc2lvbi5yZW5kZXJTdGF0ZSgpLmRlcHRoTmVhcigpOworICAgICAgICAgICAg
Y29uc3QgZG91YmxlIGZhciA9IG1fc2Vzc2lvbi5yZW5kZXJTdGF0ZSgpLmRlcHRoRmFyKCk7Cisg
ICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGZv
di51cCwgZm92LmRvd24sIGZvdi5sZWZ0LCBmb3YucmlnaHQsIG5lYXIsIGZhcikudG9Db2x1bW5N
YWpvckZsb2F0QXJyYXkoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQs
IDE2PiYgbWF0cml4KSB7CisgICAgICAgICAgICByZXR1cm4gbWF0cml4OworICAgICAgICB9LCBb
Jl0oc3RkOjpudWxscHRyX3QmKSB7CisgICAgICAgICAgICAvLyBVc2UgYXNwZWN0IHByb2plY3Rp
b24gZm9yIGlubGluZSBzZXNzaW9ucworICAgICAgICAgICAgY29uc3QgZG91YmxlIGZvdiA9ICBt
X3Nlc3Npb24ucmVuZGVyU3RhdGUoKS5pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkudmFsdWVP
cihwaU92ZXJUd29Eb3VibGUpOworICAgICAgICAgICAgZmxvYXQgYXNwZWN0ID0gMTsKKyAgICAg
ICAgICAgIGF1dG8gbGF5ZXIgPSBtX3Nlc3Npb24ucmVuZGVyU3RhdGUoKS5iYXNlTGF5ZXIoKTsK
KyAgICAgICAgICAgIGlmIChsYXllcikgeworICAgICAgICAgICAgICAgIGFzcGVjdCA9IChkb3Vi
bGUpIGxheWVyLT5mcmFtZWJ1ZmZlcldpZHRoKCkgLyAoZG91YmxlKSBsYXllci0+ZnJhbWVidWZm
ZXJIZWlnaHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBuZWFy
ID0gbV9zZXNzaW9uLnJlbmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7CisgICAgICAgICAgICBjb25z
dCBkb3VibGUgZmFyID0gbV9zZXNzaW9uLnJlbmRlclN0YXRlKCkuZGVwdGhGYXIoKTsKKyAgICAg
ICAgICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVByb2plY3Rpb24oZm92LCBh
c3BlY3QsIG5lYXIsIGZhcikudG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgeHJWaWV3LT5zZXRQcm9qZWN0aW9uTWF0cml4KHByb2plY3Rpb24pOworCisg
ICAgICAgIC8vICA4LjguIEFwcGVuZCB4cnZpZXcgdG8geHJ2aWV3cworICAgICAgICB4clZpZXdz
LmFwcGVuZChXVEZNb3ZlKHhyVmlldykpOworICAgICAgICArK2luZGV4OworICAgIH0KKworICAg
IC8vIDkuIFNldCBwb3Nl4oCZcyB2aWV3cyB0byB4cnZpZXdzCisgICAgcG9zZS0+c2V0Vmlld3Mo
V1RGTW92ZSh4clZpZXdzKSk7CisKKyAgICAvLyAxMC4gUmV0dXJuIHBvc2UuCisgICAgcmV0dXJu
IHBvc2U7CiB9CiAKLVJlZlB0cjxXZWJYUlBvc2U+IFdlYlhSRnJhbWU6OmdldFBvc2UoY29uc3Qg
V2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKQorRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhS
UG9zZT4+IFdlYlhSRnJhbWU6OmdldFBvc2UoY29uc3QgV2ViWFJTcGFjZSYgc3BhY2UsIGNvbnN0
IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSkKIHsKLSAgICByZXR1cm4geyB9OworICAgIC8vIDEuIExl
dCBmcmFtZSBiZSB0aGlzLgorICAgIC8vIDIuIExldCBwb3NlIGJlIGEgbmV3IFhSUG9zZSBvYmpl
Y3QgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIGZyYW1lLgorICAgIC8vIDMuIFBvcHVsYXRlIHRo
ZSBwb3NlIG9mIHNwYWNlIGluIGJhc2VTcGFjZSBhdCB0aGUgdGltZSByZXByZXNlbnRlZCBieSBm
cmFtZSBpbnRvIHBvc2UuCisKKyAgICBhdXRvIHBvcHVsYXRlUG9zZVJlc3VsdCA9IHBvcHVsYXRl
UG9zZShzcGFjZSwgYmFzZVNwYWNlKTsKKyAgICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKTsKKworICAgIGF1dG8gcG9wdWxhdGVWYWx1ZSA9IHBvcHVsYXRlUG9zZVJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIXBvcHVsYXRlVmFsdWUuaGFzVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZWZQdHI8V2ViWFJQb3NlPiBwb3NlID0g
V2ViWFJQb3NlOjpjcmVhdGUoV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKHBvcHVsYXRlVmFs
dWUtPnRyYW5zZm9ybSksIHBvcHVsYXRlVmFsdWUtPmVtdWxhdGVkUG9zaXRpb24pOworCisgICAg
Ly8gNC4gUmV0dXJuIHBvc2UuCisgICAgcmV0dXJuIHBvc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJG
cmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKaW5kZXgg
ODA4YTY3NjRmMGQyYzVhZTYxZTRkNjU4YzI4MjUwNTc5ZmU1YjYyNy4uZTE2ZTgzYTkyY2RjMDdh
M2M3YjljNjFmMTI1MGJjMDhhMWYyNmUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAor
I2luY2x1ZGUgIkRPTUhpZ2hSZXNUaW1lU3RhbXAuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Mywx
OCArNDYsMzUgQEAgY2xhc3MgV2ViWFJWaWV3ZXJQb3NlOwogY2xhc3MgV2ViWFJGcmFtZSA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYlhSRnJhbWU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFdlYlhSRnJhbWUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRl
KFJlZjxXZWJYUlNlc3Npb24+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRl
KFdlYlhSU2Vzc2lvbiYsIGJvb2wgaXNBbmltYXRpb25GcmFtZSA9IGZhbHNlKTsKICAgICB+V2Vi
WFJGcmFtZSgpOwogCi0gICAgY29uc3QgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3Q7Cisg
ICAgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uOyB9CiAK
LSAgICBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVm
ZXJlbmNlU3BhY2UmKTsKLSAgICBSZWZQdHI8V2ViWFJQb3NlPiBnZXRQb3NlKGNvbnN0IFdlYlhS
U3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CisgICAgYm9vbCBtdXN0UG9zZXNCZUxpbWl0ZWQo
Y29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSk7CisgICAgRXhj
ZXB0aW9uT3I8UmVmUHRyPFdlYlhSVmlld2VyUG9zZT4+IGdldFZpZXdlclBvc2UoY29uc3QgV2Vi
WFJSZWZlcmVuY2VTcGFjZSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBn
ZXRQb3NlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CisKKyAgICB2b2lk
IHNldFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KKyAg
ICB2b2lkIHNldEZyYW1lRGF0YShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYg
ZGF0YSkgeyBtX2RhdGEgPSBkYXRhOyB9CisgICAgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGEmIGdldEZyYW1lRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAg
dm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUpIHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0KKyAgICBi
b29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KIAogcHJpdmF0ZToKLSAg
ICBXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYpOworICAgIFdlYlhSRnJhbWUoV2ViWFJT
ZXNzaW9uJiwgYm9vbCBpc0FuaW1hdGlvbkZyYW1lKTsKKworICAgIHN0cnVjdCBQb3B1bGF0ZWRQ
b3NlOworICAgIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFBvcHVsYXRlZFBvc2U+PiBwb3B1bGF0ZVBv
c2UoY29uc3QgV2ViWFJTcGFjZSYgc3BhY2UsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSk7
CisKKyAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fSXNBbmltYXRpb25G
cmFtZSB7IGZhbHNlIH07CisgICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBtX3RpbWU7CisgICAgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgbV9kYXRhOwogCi0gICAgUmVmPFdlYlhSU2Vzc2lv
bj4gbV9zZXNzaW9uOworICAgIC8vIFNlc3Npb24gb3ducyB0aGUgZnJhbWUuCisgICAgV2ViWFJT
ZXNzaW9uJiBtX3Nlc3Npb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbAppbmRleCAyMWZjZjNjZmU0ZDlj
NzVmZDdmNDY4ZTQ5N2RiOGU4MDA3YjhhZGYyLi4wYjQyZTY3ZjlkZTI0NzFjYTgxZWExMDFlYjIw
NjU5MTUxYThiMDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFt
ZS5pZGwKQEAgLTMzLDYgKzMzLDYgQEAKIF0gaW50ZXJmYWNlIFdlYlhSRnJhbWUgewogICAgIFtT
YW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJTZXNzaW9uIHNlc3Npb247CiAKLSAg
ICBXZWJYUlZpZXdlclBvc2U/IGdldFZpZXdlclBvc2UoV2ViWFJSZWZlcmVuY2VTcGFjZSByZWZl
cmVuY2VTcGFjZSk7Ci0gICAgV2ViWFJQb3NlPyBnZXRQb3NlKFdlYlhSU3BhY2Ugc3BhY2UsIFdl
YlhSU3BhY2UgYmFzZVNwYWNlKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdlYlhSVmlld2Vy
UG9zZT8gZ2V0Vmlld2VyUG9zZShXZWJYUlJlZmVyZW5jZVNwYWNlIHJlZmVyZW5jZVNwYWNlKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNwYWNlIHNw
YWNlLCBXZWJYUlNwYWNlIGJhc2VTcGFjZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlBvc2UuY3BwCmluZGV4IDFjNWY4MGE1NDQ1NWNiZThmY2IwNzJkNTQ3YjMxOTZh
OTg4Nzg2NTguLjMzOTlkOGFlNTAwM2UyYWU0M2MwMWU0NmJkMDMzYjA5MTNiMjg2NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5jcHAKQEAgLTM1LDEzICszNSwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChX
ZWJYUlBvc2UpOwogCi1SZWY8V2ViWFJQb3NlPiBXZWJYUlBvc2U6OmNyZWF0ZSgpCitSZWY8V2Vi
WFJQb3NlPiBXZWJYUlBvc2U6OmNyZWF0ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFu
c2Zvcm0sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJYUlBvc2UpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUG9zZShXVEZNb3Zl
KHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pKTsKIH0KIAotV2ViWFJQb3NlOjpXZWJYUlBv
c2UoKQotICAgIDogbV90cmFuc2Zvcm0oV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCitX
ZWJYUlBvc2U6OldlYlhSUG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0s
IGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKKyAgICA6IG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNm
b3JtKSksIG1fZW11bGF0ZWRQb3NpdGlvbihlbXVsYXRlZFBvc2l0aW9uKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuaAppbmRleCAyOTkxOWQyNGMzOTUzYWEz
OWEyYzQ4OTRiYzdjY2U1YzI5YzE3ZTZhLi5hYzY3MWM0Y2NjMzU0M2EyNzYwNjdiNWI2YTZjZGQ5
NTI3Mjc4Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
UG9zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmgKQEAg
LTI2LDcgKzI2LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdFQlhSKQotCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgpAQCAtMzgsMTQgKzM3LDE2IEBAIGNsYXNzIFdlYlhSUmlnaWRUcmFu
c2Zvcm07CiBjbGFzcyBXZWJYUlBvc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlBvc2U+IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSUG9zZSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJYUlBvc2U+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8V2ViWFJQb3NlPiBj
cmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIGJvb2wgZW11bGF0ZWRQb3NpdGlvbik7
CiAgICAgfldlYlhSUG9zZSgpOwogCiAgICAgY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYgdHJh
bnNmb3JtKCkgY29uc3Q7CiAgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKCkgY29uc3Q7CiAKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNWaWV3ZXJQb3NlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwog
cHJvdGVjdGVkOgotICAgIFdlYlhSUG9zZSgpOworICAgIFdlYlhSUG9zZShSZWY8V2ViWFJSaWdp
ZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKIAogICAgIFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKICAgICBib29sIG1fZW11bGF0ZWRQb3NpdGlvbiB7
IGZhbHNlIH07CkBAIC01Myw0ICs1NCw5IEBAIHByb3RlY3RlZDoKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCWFJQT1NFKFRvVmFs
dWVUeXBlTmFtZSwgcHJlZGljYXRlKSAgICAgICAgICAgICAgICAgICAgXAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5hbWUpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
V2ViWFJQb3NlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LnByZWRpY2F0ZTsgfSBcCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwKaW5kZXggNGM0ZTlkYWRjOGVh
MGFmMzE1MTg2OTQxOTNiOTI0OTY0NDc4ODAyNi4uMmU1YjM4NjRlNTk4Mjc4MmE3OTVjZWI5YmQ3
YzRlMThkNmRlMjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlBvc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3Nl
LmlkbApAQCAtMjgsNyArMjgsNiBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAgIFNlY3Vy
ZUNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3csCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKICAgICBJbnRlcmZhY2VOYW1lPVhSUG9zZQogXSBpbnRlcmZhY2UgV2ViWFJQb3NlIHsK
ICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSUmlnaWRUcmFuc2Zvcm0g
dHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJS
ZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDViYjBlODFmOTJjNTg5YWM3ZmM2Yjc1NzEzNjUyNWFm
MDJjYTc5Ni4uMWQ1Y2U5MDk5ZmVhZDg1YzlhNjZhY2RjMTViNTUxYWM5ZTIwMTQ3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2Uu
Y3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5BQkxFKFdFQlhSKQogCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJSaWdpZFRy
YW5zZm9ybS5oIgogI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKQEAgLTM4LDIzICs0MCw2OCBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoV2ViWFJSZWZlcmVuY2VTcGFjZSk7CiAKIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNl
PiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2Vi
WFJTZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92
ZShzZXNzaW9uKSwgdHlwZSkpOworCS8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHIvI3hyc3BhY2UtbmF0aXZlLW9yaWdpbgorICAgIC8vIFRoZSB0cmFuc2Zvcm0gZnJvbSB0
aGUgZWZmZWN0aXZlIHNwYWNlIHRvIHRoZSBuYXRpdmUgb3JpZ2luJ3Mgc3BhY2UgaXMKKyAgICAv
LyBkZWZpbmVkIGJ5IGFuIG9yaWdpbiBvZmZzZXQsIHdoaWNoIGlzIGFuIFhSUmlnaWRUcmFuc2Zv
cm0gaW5pdGlhbGx5IHNldAorICAgIC8vIHRvIGFuIGlkZW50aXR5IHRyYW5zZm9ybS4KKwlSZWY8
V2ViWFJSaWdpZFRyYW5zZm9ybT4gb2Zmc2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRl
KCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3Vt
ZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsKIH0KIAotV2Vi
WFJSZWZlcmVuY2VTcGFjZTo6V2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkK
LSAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbikpCitSZWY8V2ViWFJS
ZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9u
KSwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7Cit9CisKK1dlYlhSUmVmZXJlbmNlU3BhY2U6Oldl
YlhSUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYm
IHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VT
cGFjZVR5cGUgdHlwZSkKKyAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lv
biksIFdURk1vdmUob2Zmc2V0KSkKICAgICAsIG1fdHlwZSh0eXBlKQogewogfQogCiBXZWJYUlJl
ZmVyZW5jZVNwYWNlOjp+V2ViWFJSZWZlcmVuY2VTcGFjZSgpID0gZGVmYXVsdDsKIAotUmVmUHRy
PFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVy
ZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKQorVHJhbnNmb3JtYXRpb25NYXRy
aXggV2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QgeworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG9yaWdpbjsKKworICAgIC8vIFdlIGFzc3VtZSB0aGF0IHBvc2VzIGdv
dCBmcm9tIHRoZSBkZXZpY2VzIGFyZSBpbiBsb2NhbCBzcGFjZS4KKyAgICAvLyBUaGlzIHdpbGwg
cmVxdWlyZSBtb3JlIGNvbXBsZXggbG9naWMgaWYgd2UgYWRkIHBvcnRzIHdpdGggZGlmZmVyZW50
IGRlZmF1bHQgY29vcmRpbmF0ZXMuCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFhS
UmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXI6IHsKKyAgICAgICAgLy8gUmV0dXJuIHRoZSBjdXJy
ZW50IHBvc2UuIENvbnRlbnQgcmVuZGVyZWQgaW4gdmlld2VyIHBvc2Ugd2lsbCBzdGF5IGluIGZp
eGVkIHBvaW50IG9uIEhNRHMuCisgICAgICAgIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhJiBkYXRhID0gbV9zZXNzaW9uLT5hbmltYXRpb25GcmFtZSgpLmdldEZyYW1lRGF0YSgp
OworICAgICAgICBvcmlnaW4udHJhbnNsYXRlM2QoZGF0YS5vcmlnaW4ucG9zaXRpb24ueCgpLCBk
YXRhLm9yaWdpbi5wb3NpdGlvbi55KCksIGRhdGEub3JpZ2luLnBvc2l0aW9uLnooKSk7CisgICAg
ICAgIG9yaWdpbiAqPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVF1YXRlcm5pb24oZGF0YS5v
cmlnaW4ub3JpZW50YXRpb24ueCwgZGF0YS5vcmlnaW4ub3JpZW50YXRpb24ueSwgZGF0YS5vcmln
aW4ub3JpZW50YXRpb24ueiwgZGF0YS5vcmlnaW4ub3JpZW50YXRpb24udyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbDoKKyAgICBj
YXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpVbmJvdW5kZWQ6CisgICAgICAgIC8vIExvY2FsIGFu
ZCB1bmJvdW5kZWQgdXNlIHRoZSBzYW1lIGRldmljZSBzcGFjZSwgdXNlIHRoZSBpZGVudGl0eSBt
YXRyaXguCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWFJSZWZlcmVuY2VTcGFjZVR5cGU6Okxv
Y2FsRmxvb3I6CisgICAgICAgIC8vIFRPRE86IAorICAgICAgICBicmVhazsKKyAgICBjYXNlIFhS
UmVmZXJlbmNlU3BhY2VUeXBlOjpCb3VuZGVkRmxvb3I6CisgICAgZGVmYXVsdDoKKyAgICAgICAg
Ly8gQm91bmRlZEZsb29yIGlzIGhhbmRsZWQgYnkgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2Ug
c3ViY2xhc3MKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gb3JpZ2luOworfQorCitSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2Vi
WFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdp
ZFRyYW5zZm9ybSYgb2Zmc2V0VHJhbnNmb3JtKQogewogICAgIGlmICghc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQoaXM8RG9jdW1l
bnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOwotICAgIHJldHVybiBjcmVhdGUoZG93bmNh
c3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLCBtX3Nlc3Npb24uY29weVJl
ZigpLCBtX3R5cGUpOworCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93
ZWJ4ci8jZG9tLXhycmVmZXJlbmNlc3BhY2UtZ2V0b2Zmc2V0cmVmZXJlbmNlc3BhY2UKKyAgICAv
LyBTZXQgb2Zmc2V0U3BhY2XigJlzIG9yaWdpbiBvZmZzZXQgdG8gdGhlIHJlc3VsdCBvZiBtdWx0
aXBseWluZyBiYXNl4oCZcyBvcmlnaW4gb2Zmc2V0IGJ5IG9yaWdpbk9mZnNldCBpbiB0aGUgcmVs
ZXZhbnQgcmVhbG0gb2YgYmFzZS4KKyAgICBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4gb2Zmc2V0
ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG1fb3JpZ2luT2Zmc2V0LT5yYXdUcmFuc2Zv
cm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7CisKKyAgICByZXR1cm4gY3Jl
YXRlKGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSwgbV9zZXNz
aW9uLmNvcHlSZWYoKSwgV1RGTW92ZShvZmZzZXQpLCBtX3R5cGUpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSUmVmZXJlbmNlU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJS
ZWZlcmVuY2VTcGFjZS5oCmluZGV4IGEyYzgwNTFmNTljMjI3ZDg3Nzc5NWMyYmI4ZjZlNzM2M2Rl
OGYzZTMuLmEyODYwMGU5NDZjM2JlOWQzNzMwMmIxZDc5NjBiNTI1NGIyMmU1MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCkBA
IC00MSwxNyArNDEsMjQgQEAgY2xhc3MgV2ViWFJSZWZlcmVuY2VTcGFjZSA6IHB1YmxpYyBXZWJY
UlNwYWNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSUmVmZXJlbmNlU3BhY2Up
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERv
Y3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAg
IHN0YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdl
YlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldlYlhSUmVmZXJlbmNlU3BhY2UoKTsKIAotICAgIFJl
ZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBX
ZWJYUlJpZ2lkVHJhbnNmb3JtJik7CisJVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2lu
KCkgY29uc3QgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4g
Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYpOworICAg
IFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAog
cHJvdGVjdGVkOgotICAgIFdlYlhSUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJT
ZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgV2ViWFJSZWZlcmVuY2VTcGFj
ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisKKyAgICBib29sIGlzUmVmZXJlbmNlU3BhY2Uo
KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBYUlJlZmVyZW5j
ZVNwYWNlVHlwZSBtX3R5cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0VCWFJTUEFDRShXZWJYUlJlZmVyZW5jZVNwYWNlLCBpc1JlZmVy
ZW5jZVNwYWNlKCkpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5oCmluZGV4IDFlNDM2M2YxZjE5NDMx
ZTRhMWVjOTU4ZjFiZmEyYjQ3MDc0NTc3YTIuLmU2ZDQzYzA0Njg5NTk4YjUzZGE2ZDRiYmI3M2Yy
ZGMxYTQxM2EyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJSZW5kZXJTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJS
ZW5kZXJTdGF0ZS5oCkBAIC01Niw2ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYXNl
TGF5ZXIoV2ViWFJXZWJHTExheWVyKiBiYXNlTGF5ZXIpIHsgbV9iYXNlTGF5ZXIgPSBiYXNlTGF5
ZXI7IH0KIAogICAgIEhUTUxDYW52YXNFbGVtZW50KiBvdXRwdXRDYW52YXMoKSBjb25zdCB7IHJl
dHVybiBtX291dHB1dENhbnZhcy5nZXQoKTsgfQorICAgIHZvaWQgc2V0T3V0cHV0Q2FudmFzKEhU
TUxDYW52YXNFbGVtZW50KiBjYW52YXMpIHsgbV9vdXRwdXRDYW52YXMgPSBtYWtlV2Vha1B0cihj
YW52YXMpOyB9CisKKyAgICBib29sIGNvbXBvc2l0aW9uRGlzYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2NvbXBvc2l0aW9uRGlzYWJsZWQ7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0aW9uRGlzYWJs
ZWQoYm9vbCBjb21wb3NpdGlvbkRpc2FibGVkKSB7IG1fY29tcG9zaXRpb25EaXNhYmxlZCA9IGNv
bXBvc2l0aW9uRGlzYWJsZWQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJYUlJlbmRl
clN0YXRlKE9wdGlvbmFsPGRvdWJsZT4gZmllbGRPZlZpZXcpOwpAQCAtNjksNiArNzMsNyBAQCBw
cml2YXRlOgogICAgIE9wdGlvbmFsPGRvdWJsZT4gbV9pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3
OyAvLyBpbiByYWRpYW5zCiAgICAgUmVmUHRyPFdlYlhSV2ViR0xMYXllcj4gbV9iYXNlTGF5ZXI7
CiAgICAgV2Vha1B0cjxIVE1MQ2FudmFzRWxlbWVudD4gbV9vdXRwdXRDYW52YXM7CisgICAgYm9v
bCBtX2NvbXBvc2l0aW9uRGlzYWJsZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3Bw
CmluZGV4IGQ4ZTJmODExYzI0NWIwY2ViMGFjZWZlYTNkZmVkYTU0ZTUyOGIwMDUuLjBmOGNlYzE2
NmQ4ODY2MDEwOGM2NzI2NjY2OTBiMDZhMzkwNWQxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTI4LDExICsyOCwxMyBAQAogCiAjaWYg
RU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiSlNXZWJYUlJlZmVyZW5jZVNwYWNlLmgiCiAjaW5jbHVkZSAiV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaCIKICNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCiAjaW5j
bHVkZSAiV2ViWFJTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJYUlZpZXcuaCIKICNpbmNsdWRlICJY
UkZyYW1lUmVxdWVzdENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiWFJSZW5kZXJTdGF0ZUluaXQuaCIK
ICNpbmNsdWRlICJYUlNlc3Npb25FdmVudC5oIgpAQCAtNDUsNyArNDcsOSBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoV2ViWFJTZXNzaW9uKTsKIAogUmVmPFdlYlhSU2Vzc2lvbj4gV2Vi
WFJTZXNzaW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVt
LCBYUlNlc3Npb25Nb2RlIG1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYgZGV2aWNlKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSU2Vzc2lvbihkb2N1bWVudCwgc3lzdGVtLCBtb2Rl
LCBkZXZpY2UpKTsKKyAgICBhdXRvIHdlYlhSU2Vzc2lvbiA9IGFkb3B0UmVmKCpuZXcgV2ViWFJT
ZXNzaW9uKGRvY3VtZW50LCBzeXN0ZW0sIG1vZGUsIGRldmljZSkpOworICAgIHdlYlhSU2Vzc2lv
bi0+aW5pdGlhbGl6ZVZpZXdlclJlZmVyZW5jZVNwYWNlKGRvY3VtZW50KTsKKyAgICByZXR1cm4g
d2ViWFJTZXNzaW9uOwogfQogCiBXZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbihEb2N1bWVudCYg
ZG9jdW1lbnQsIFdlYlhSU3lzdGVtJiBzeXN0ZW0sIFhSU2Vzc2lvbk1vZGUgbW9kZSwgUGxhdGZv
cm1YUjo6RGV2aWNlJiBkZXZpY2UpCkBAIC01NSwxMSArNTksMTcgQEAgV2ViWFJTZXNzaW9uOjpX
ZWJYUlNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNl
c3Npb25Nb2QKICAgICAsIG1fbW9kZShtb2RlKQogICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIo
ZGV2aWNlKSkKICAgICAsIG1fYWN0aXZlUmVuZGVyU3RhdGUoV2ViWFJSZW5kZXJTdGF0ZTo6Y3Jl
YXRlKG1vZGUpKQotICAgICwgbV9hbmltYXRpb25UaW1lcigqdGhpcywgJldlYlhSU2Vzc2lvbjo6
YW5pbWF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fdGltZU9yaWdpbihNb25vdG9uaWNUaW1lOjpu
b3coKSkKKyAgICAsIG1fYW5pbWF0aW9uRnJhbWUoV2ViWFJGcmFtZTo6Y3JlYXRlKCp0aGlzLCB0
cnVlKSkKKyAgICAsIG1fdmlld3MoZGV2aWNlLnZpZXdzKG1vZGUpKQogewogICAgIG1fZGV2aWNl
LT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcobW9kZSk7CiAgICAgbV9kZXZpY2UtPnNl
dFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KG1ha2VXZWFrUHRyKCp0aGlzKSk7CiAKKyAgICAv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNyZWYtZm9yLWRvbS14cnJl
ZmVyZW5jZXNwYWNldHlwZS12aWV3ZXIlRTIlOTElQTIKKyAgICAvLyBFdmVyeSBzZXNzaW9uIE1V
U1Qgc3VwcG9ydCB2aWV3ZXIgWFJSZWZlcmVuY2VTcGFjZXMuCisgICAgbV9kZXZpY2UtPmluaXRp
YWxpemVSZWZlcmVuY2VTcGFjZShYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyKTsKKwogICAg
IHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCkBAIC02Nyw2ICs3NywxNyBAQCBXZWJYUlNlc3Npb246
On5XZWJYUlNlc3Npb24oKQogewogICAgIGlmICghbV9lbmRlZCAmJiBtX2RldmljZSkKICAgICAg
ICAgbV9kZXZpY2UtPnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKworICAgIGF1dG8g
dmlld2VyUmVmZXJlbmNlU3BhY2UgPSBhZG9wdFJlZihtX3ZpZXdlclJlZmVyZW5jZVNwYWNlKTsK
KyAgICBtX3ZpZXdlclJlZmVyZW5jZVNwYWNlID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJYUlNl
c3Npb246OmluaXRpYWxpemVWaWV3ZXJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQp
Cit7CisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcmVmLWZv
ci1kb20teHJyZWZlcmVuY2VzcGFjZXR5cGUtdmlld2VyJUUyJTkxJUEyCisgICAgLy8gRXZlcnkg
c2Vzc2lvbiBNVVNUIHN1cHBvcnQgdmlld2VyIFhSUmVmZXJlbmNlU3BhY2VzLgorICAgIG1fdmll
d2VyUmVmZXJlbmNlU3BhY2UgPSAmV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50
LCBtYWtlUmVmKCp0aGlzKSwgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlcikubGVha1JlZigp
OworICAgIG1fZGV2aWNlLT5pbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFj
ZVR5cGU6OlZpZXdlcik7CiB9CiAKIFhSRW52aXJvbm1lbnRCbGVuZE1vZGUgV2ViWFJTZXNzaW9u
OjplbnZpcm9ubWVudEJsZW5kTW9kZSgpIGNvbnN0CkBAIC0yMDAsNjEgKzIyMSwzNCBAQCB2b2lk
IFdlYlhSU2Vzc2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBl
IHR5cGUsIFJlcXVlc3RSZWZlcgogICAgIH0KICAgICAvLyAxLiBMZXQgcHJvbWlzZSBiZSBhIG5l
dyBQcm9taXNlLgogICAgIC8vIDIuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVs
OgotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCB0eXBlXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAg
ICAgIC8vICAyLjEuIENyZWF0ZSBhIHJlZmVyZW5jZSBzcGFjZSwgcmVmZXJlbmNlU3BhY2UsIHdp
dGggdGhlIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUuCi0gICAgICAgIC8vICAyLjIuIElmIHJl
ZmVyZW5jZVNwYWNlIGlzIG51bGwsIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRF
cnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHR5cGVdKGF1dG8m
IGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAvLyAyLjEuIElmIHRoZSByZXN1bHQgb2YgcnVu
bmluZyByZWZlcmVuY2Ugc3BhY2UgaXMgc3VwcG9ydGVkIGZvciB0eXBlIGFuZCBzZXNzaW9uIGlz
IGZhbHNlLCBxdWV1ZSBhIHRhc2sgdG8gcmVqZWN0IHByb21pc2UKKyAgICAgICAgLy8gd2l0aCBh
IE5vdFN1cHBvcnRlZEVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKCFy
ZWZlcmVuY2VTcGFjZUlzU3VwcG9ydGVkKHR5cGUpKSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAgIHF1ZXVl
VGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBwcm9taXNl
LnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9KTsKKyAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgLy8gaHR0cHM6Ly9p
bW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCi0g
ICAgICAgIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiByZWZlcmVuY2VTcGFjZTsKLSAgICAg
ICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikKLSAgICAg
ICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0
ZShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIG1ha2VSZWYoKnRoaXMpLCB0eXBlKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUlJlZmVyZW5jZVNw
YWNlOjpjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBtYWtlUmVmKCp0aGlzKSwg
dHlwZSk7Ci0KLSAgICAgICAgLy8gIDIuMy4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVmZXJlbmNl
U3BhY2UuCi0gICAgICAgIC8vIDMuIFJldHVybiBwcm9taXNlLgotICAgICAgICBwcm9taXNlLnJl
c29sdmUocmVmZXJlbmNlU3BhY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIC8vIDIuMi4g
U2V0IHVwIGFueSBwbGF0Zm9ybSByZXNvdXJjZXMgcmVxdWlyZWQgdG8gdHJhY2sgcmVmZXJlbmNl
IHNwYWNlcyBvZiB0eXBlIHR5cGUuCisgICAgICAgIG1fZGV2aWNlLT5pbml0aWFsaXplUmVmZXJl
bmNlU3BhY2UodHlwZSk7CisKKyAgICAgICAgLy8gMi4zLiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCB0eXBlLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgcHJvdGVjdGVkRG9jdW1lbnQgPSBtYWtlUmVmKGRvd25jYXN0PERvY3VtZW50Pihj
b250ZXh0KSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAvLyAyLjQuIENyZWF0ZSBhIHJlZmVy
ZW5jZSBzcGFjZSwgcmVmZXJlbmNlU3BhY2UsIHdpdGggdHlwZSBhbmQgc2Vzc2lvbi4KKyAgICAg
ICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2NyZWF0ZS1h
LXJlZmVyZW5jZS1zcGFjZQorICAgICAgICAgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+
IHJlZmVyZW5jZVNwYWNlOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFj
ZVR5cGU6OkJvdW5kZWRGbG9vcikKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUocHJvdGVjdGVkRG9jdW1lbnQsIG1ha2VS
ZWYoKnRoaXMpLCB0eXBlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWZl
cmVuY2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShwcm90ZWN0ZWREb2N1bWVu
dCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworCisgICAgICAgICAgICAvLyAyLjUuIFJlc29sdmUg
cHJvbWlzZSB3aXRoIHJlZmVyZW5jZVNwYWNlLgorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZl
KHJlZmVyZW5jZVNwYWNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9KTsKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJYUlNlc3Npb246OmFuaW1hdGlvblRpbWVyRmlyZWQoKQotewotICAgIG1f
bGFzdEFuaW1hdGlvbkZyYW1lVGltZXN0YW1wID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0KLSAg
ICBpZiAobV9jYWxsYmFja3MuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBU
T0RPOiByZXRyaWV2ZSBmcmFtZSBmcm9tIHBsYXRmb3JtLgotICAgIGF1dG8gZnJhbWUgPSBXZWJY
UkZyYW1lOjpjcmVhdGUoKnRoaXMpOwotCi0gICAgbV9ydW5uaW5nQ2FsbGJhY2tzLnN3YXAobV9j
YWxsYmFja3MpOwotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtX3J1bm5pbmdDYWxsYmFja3Mp
IHsKLSAgICAgICAgaWYgKGNhbGxiYWNrLT5pc0NhbmNlbGxlZCgpKQotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGNhbGxiYWNrLT5oYW5kbGVFdmVudChtX2xhc3RBbmltYXRpb25GcmFt
ZVRpbWVzdGFtcC5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpLCBmcmFtZS5nZXQo
KSk7Ci0gICAgfQotCi0gICAgbV9ydW5uaW5nQ2FsbGJhY2tzLmNsZWFyKCk7Ci19Ci0KLXZvaWQg
V2ViWFJTZXNzaW9uOjpzY2hlZHVsZUFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1fYW5pbWF0aW9u
VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fZW5kZWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIFRPRE86IHVzZSBkZXZpY2UncyByZWZyZXNoIHJhdGUu
IExldCdzIHN0YXJ0IHdpdGggNjBmcHMuCi0gICAgU2Vjb25kcyBhbmltYXRpb25JbnRlcnZhbCA9
IDE1X21zOwotICAgIFNlY29uZHMgc2NoZWR1bGVEZWxheSA9IHN0ZDo6bWF4KGFuaW1hdGlvbklu
dGVydmFsIC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1l
c3RhbXApLCAwX3MpOwotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHNjaGVkdWxl
RGVsYXkpOwotfQotCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNk
b20teHJzZXNzaW9uLXJlcXVlc3RhbmltYXRpb25mcmFtZQogdW5zaWduZWQgV2ViWFJTZXNzaW9u
OjpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoUmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2Fs
bGJhY2spCiB7CkBAIC0yNjcsNyArMjYxLDggQEAgdW5zaWduZWQgV2ViWFJTZXNzaW9uOjpyZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoUmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+JiYgY2FsbGIKICAg
ICBjYWxsYmFjay0+c2V0Q2FsbGJhY2tJZChuZXdJZCk7CiAgICAgbV9jYWxsYmFja3MuYXBwZW5k
KFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgaWYg
KG1fY2FsbGJhY2tzLnNpemUoKSA9PSAxICYmICFtX2FuaW1hdGlvbkZyYW1lLT5pc0FjdGl2ZSgp
KQorICAgICAgICByZXF1ZXN0RnJhbWUoKTsKIAogICAgIC8vIDQuIFJldHVybiBzZXNzaW9uJ3Mg
YW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrIGlkZW50aWZpZXIncyBjdXJyZW50IHZhbHVlLgogICAg
IHJldHVybiBuZXdJZDsKQEAgLTQyMCw2ICs0MTUsMTU4IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpz
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
aXRpb24gZGlzYWJsZWQgYW5kIG91dHB1dCBjYW52YXMgYXMgZm9sbG93czoKKyAgICBtX2FjdGl2
ZVJlbmRlclN0YXRlLT5zZXRDb21wb3NpdGlvbkRpc2FibGVkKHRydWUpOworICAgIGlmIChtX21v
ZGUgPT0gWFJTZXNzaW9uTW9kZTo6SW5saW5lICYmIGlzPFdlYlhSV2ViR0xMYXllcj4oYmFzZUxh
eWVyKSAmJiBiYXNlTGF5ZXItPmNvbXBvc2l0aW9uRGlzYWJsZWQoKSkgeworICAgICAgICBtX2Fj
dGl2ZVJlbmRlclN0YXRlLT5zZXRDb21wb3NpdGlvbkRpc2FibGVkKHRydWUpOworICAgICAgICBt
X2FjdGl2ZVJlbmRlclN0YXRlLT5zZXRPdXRwdXRDYW52YXMoYmFzZUxheWVyLT5jYW52YXMoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9hY3RpdmVSZW5kZXJTdGF0ZS0+c2V0Q29tcG9zaXRp
b25EaXNhYmxlZChmYWxzZSk7CisgICAgICAgIG1fYWN0aXZlUmVuZGVyU3RhdGUtPnNldE91dHB1
dENhbnZhcyhudWxscHRyKTsKKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5n
aXRodWIuaW8vd2VieHIvI3Nob3VsZC1iZS1yZW5kZXJlZAorYm9vbCBXZWJYUlNlc3Npb246OmZy
YW1lU2hvdWxkQmVSZW5kZXJlZCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2FjdGl2ZVJlbmRlclN0
YXRlLT5iYXNlTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZGUg
PT0gWFJTZXNzaW9uTW9kZTo6SW5saW5lICYmICFtX2FjdGl2ZVJlbmRlclN0YXRlLT5vdXRwdXRD
YW52YXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFdlYlhSU2Vzc2lvbjo6cmVxdWVzdEZyYW1lKCkKK3sKKyAgICBtX2RldmljZS0+cmVxdWVz
dEZyYW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhIGZyYW1lRGF0YSkKKyAgICB7CisgICAgICAgIG9uRnJhbWUoZnJh
bWVEYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgZnJhbWVEYXRhKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisKKyAgICBpZiAobV9lbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
UXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwcy4KKyAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbdGhpcywgZnJh
bWVEYXRhXSgpIHsKKyAgICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0aGUgY3VycmVudCBoaWdoIHJl
c29sdXRpb24gdGltZS4KKyAgICAgICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBub3cgPSAoTW9ub3Rv
bmljVGltZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25kcygpOworCisgICAgICAg
IC8vICAyLkxldCBmcmFtZSBiZSBzZXNzaW9u4oCZcyBhbmltYXRpb24gZnJhbWUuCisgICAgICAg
IC8vICAzLlNldCBmcmFtZeKAmXMgdGltZSB0byBmcmFtZVRpbWUuCisgICAgICAgIG1fYW5pbWF0
aW9uRnJhbWUtPnNldFRpbWUoc3RhdGljX2Nhc3Q8RE9NSGlnaFJlc1RpbWVTdGFtcD4oZnJhbWVE
YXRhLnByZWRpY3RlZERpc3BsYXlUaW1lKSk7CisKKyAgICAgICAgLy8gNC4gRm9yIGVhY2ggdmll
dyBpbiBsaXN0IG9mIHZpZXdzLCBzZXQgdmlld+KAmXMgdmlld3BvcnQgbW9kaWZpYWJsZSBmbGFn
IHRvIHRydWUuCisgICAgICAgIC8vIDUuIElmIHRoZSBhY3RpdmUgZmxhZyBvZiBhbnkgdmlldyBp
biB0aGUgbGlzdCBvZiB2aWV3cyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBYUiBhbmltYXRp
b24gZnJhbWUsIHVwZGF0ZSB0aGUgdmlld3BvcnRzLgorICAgICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50LgorCisgICAgICAgIC8vIEZJWE1FOiBJIG1vdmVkIHN0ZXAgNyBiZWZvcmUgNiBiZWNhdXNl
IG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9pbW1lcnNpdmUtd2ViL3dlYnhyL2lzc3Vlcy8xMTY0Cisg
ICAgICAgIC8vIDcuSWYgc2Vzc2lvbuKAmXMgcGVuZGluZyByZW5kZXIgc3RhdGUgaXMgbm90IG51
bGwsIGFwcGx5IHRoZSBwZW5kaW5nIHJlbmRlciBzdGF0ZS4KKyAgICAgICAgaWYgKG1fcGVuZGlu
Z1JlbmRlclN0YXRlKQorICAgICAgICAgICAgYXBwbHlQZW5kaW5nUmVuZGVyU3RhdGUoKTsKKwor
ICAgICAgICAvLyA2LiBJZiB0aGUgZnJhbWUgc2hvdWxkIGJlIHJlbmRlcmVkIGZvciBzZXNzaW9u
OgorICAgICAgICBpZiAoZnJhbWVTaG91bGRCZVJlbmRlcmVkKCkpIHsKKyAgICAgICAgICAgIC8v
IDYuMS5TZXQgc2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24g
ZnJhbWUgY2FsbGJhY2tzIHRvIGJlIHNlc3Npb27igJlzIGxpc3Qgb2YgYW5pbWF0aW9uIGZyYW1l
IGNhbGxiYWNrcy4KKyAgICAgICAgICAgIC8vIDYuMi5TZXQgc2Vzc2lvbuKAmXMgbGlzdCBvZiBh
bmltYXRpb24gZnJhbWUgY2FsbGJhY2tzIHRvIHRoZSBlbXB0eSBsaXN0LgorICAgICAgICAgICAg
bV9ydW5uaW5nQ2FsbGJhY2tzLnN3YXAobV9jYWxsYmFja3MpOworCisgICAgICAgICAgICAvLyA2
LjMuU2V0IGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiB0byB0cnVlLgorICAgICAgICAgICAgbV9h
bmltYXRpb25GcmFtZS0+c2V0QWN0aXZlKHRydWUpOworCisgICAgICAgICAgICAvLyA2LjQuQXBw
bHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCisgICAgICAgICAgICBtX2FuaW1hdGlvbkZyYW1l
LT5zZXRGcmFtZURhdGEoZnJhbWVEYXRhKTsKKworICAgICAgICAgICAgLy8gNi41LkZvciBlYWNo
IGVudHJ5IGluIHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5pbmcgYW5pbWF0aW9u
IGZyYW1lIGNhbGxiYWNrcywgaW4gb3JkZXI6CisgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrIDogbV9ydW5uaW5nQ2FsbGJhY2tzKSB7CisgICAgICAgICAgICAgICAgLy8gIDYuNi5JZiB0
aGUgZW50cnnigJlzIGNhbmNlbGxlZCBib29sZWFuIGlzIHRydWUsIGNvbnRpbnVlIHRvIHRoZSBu
ZXh0IGVudHJ5LgorICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjay0+aXNDYW5jZWxsZWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgLy8gIDYuNy5J
bnZva2UgdGhlIFdlYiBJREwgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGVudHJ5LCBwYXNzaW5nIG5v
dyBhbmQgZnJhbWUgYXMgdGhlIGFyZ3VtZW50cworICAgICAgICAgICAgICAgIGNhbGxiYWNrLT5o
YW5kbGVFdmVudChub3csIG1fYW5pbWF0aW9uRnJhbWUuZ2V0KCkpOworCisgICAgICAgICAgICAg
ICAgLy8gIDYuOC5JZiBhbiBleGNlcHRpb24gaXMgdGhyb3duLCByZXBvcnQgdGhlIGV4Y2VwdGlv
bi4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIDYuOS5TZXQgc2Vzc2lvbuKAmXMgbGlz
dCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2tzIHRvIHRoZSBl
bXB0eSBsaXN0LgorICAgICAgICAgICAgbV9ydW5uaW5nQ2FsbGJhY2tzLmNsZWFyKCk7CisKKyAg
ICAgICAgICAgIC8vIDYuMTAuU2V0IGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiB0byBmYWxzZS4K
KyAgICAgICAgICAgIG1fYW5pbWF0aW9uRnJhbWUtPnNldEFjdGl2ZShmYWxzZSk7CisKKyAgICAg
ICAgICAgIGlmICghbV9jYWxsYmFja3MuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJlcXVl
c3RGcmFtZSgpOworICAgICAgICB9CisKKyAgICB9KTsKK30KKworLy8gaHR0cHM6Ly9pbW1lcnNp
dmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcG9zZXMtbWF5LWJlLXJlcG9ydGVkCitib29sIFdlYlhS
U2Vzc2lvbjo6cG9zZXNDYW5CZVJlcG9ydGVkKCkgY29uc3QKK3sKKyAgICAvLyBUaGVyZSBhcmUg
c2V2ZXJhbCByZXF1aXJlbWVudHMgaW4gdGhlIHNwZWNzIGJ1dCBzaW5jZSB3ZSBhbHJlYWR5IGhh
dmUgYSBzZXNzaW9uIGV2ZXJ5dGhpbmcgZ2V0cworICAgIC8vIDEuIExldCBkb2N1bWVudCBiZSB0
aGUgZG9jdW1lbnQgdGhhdCBvd25zIHNlc3Npb24uCisgICAgLy8gMi4gSWYgdGhlIHJlcXVlc3Qg
ZG9lcyBub3Qgb3JpZ2luYXRlIGZyb20gZG9jdW1lbnQsIHJldHVybiBmYWxzZS4KKyAgICBhdXRv
KiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIDMu
IElmIGRvY3VtZW50IGlzIG5vdCBhY3RpdmUgYW5kIGZvY3VzZWQsIHJldHVybiBmYWxzZS4KKyAg
ICBpZiAoIWRvY3VtZW50LT5oYXNGb2N1cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyA0LiBJZiBzZXNzaW9uJ3MgdmlzaWJpbGl0eVN0YXRlIGluIG5vdCAidmlzaWJsZSIsIHJl
dHVybiBmYWxzZS4KKyAgICBpZiAobV92aXNpYmlsaXR5U3RhdGUgIT0gWFJWaXNpYmlsaXR5U3Rh
dGU6OlZpc2libGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIDUuIERldGVybWlu
ZSBpZiB0aGUgcG9zZSBkYXRhIGNhbiBiZSByZXR1cm5lZCBhcyBmb2xsb3dzOgorICAgIC8vIFRo
ZSBwcm9jZWR1cmUgaW4gdGhlIHNwZWNzIHRyaWVzIHRvIGVuc3VyZSB0aGF0IHdlIGFwcGx5IG1l
YXN1cmVzIHRvCisgICAgLy8gcHJldmVudCBmaW5nZXJwcmludGludCBpbiBwb3NlIGRhdGEgYW5k
IHJldHVybiBmYWxzZSBpbiBjYXNlIHdlIGRvbid0LgorICAgIC8vIFdlJ3JlIGdvaW5nIHRvIGFw
cGx5IHRoZW0gc28gbGV0J3MganVzdCByZXR1cm4gdHJ1ZS4KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKaW5kZXggNTU1NDMwYzhj
M2Y3MzEyMzFhYWY0ZjBjM2ZmYjU4MjlkNjkyOWIzNi4uNzI0ZjcyYjczODQ4ODVjNDEzY2Y0ODg3
M2U3ZTdiZTZkZjU1MjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgogI2luY2x1
ZGUgIldlYlhSSW5wdXRTb3VyY2VBcnJheS5oIgogI2luY2x1ZGUgIldlYlhSUmVuZGVyU3RhdGUu
aCIKICNpbmNsdWRlICJXZWJYUlNwYWNlLmgiCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s7CiBjbGFzcyBXZWJYUlJlZmVy
ZW5jZVNwYWNlOwogY2xhc3MgV2ViWFJTeXN0ZW07CitjbGFzcyBXZWJYUlZpZXc7CiBzdHJ1Y3Qg
WFJSZW5kZXJTdGF0ZUluaXQ7CiAKIGNsYXNzIFdlYlhSU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYlhSU2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgUGxhdGZvcm1YUjo6VHJhY2tpbmdBbmRS
ZW5kZXJpbmdDbGllbnQgewpAQCAtOTAsOSArOTEsMTYgQEAgcHVibGljOgogCiAgICAgWFJTZXNz
aW9uTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAKKyAgICBjb25zdCBXZWJY
UlJlZmVyZW5jZVNwYWNlJiB2aWV3ZXJSZWZlcmVuY2VTcGFjZSgpIHsgQVNTRVJUKG1fdmlld2Vy
UmVmZXJlbmNlU3BhY2UpOyByZXR1cm4gKm1fdmlld2VyUmVmZXJlbmNlU3BhY2U7IH0KKyAgICBj
b25zdCBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4mIHZpZXdzKCkgeyByZXR1
cm4gbV92aWV3czsgfQorICAgIGJvb2wgcG9zZXNDYW5CZVJlcG9ydGVkKCkgY29uc3Q7CisgICAg
Y29uc3QgV2ViWFJGcmFtZSYgYW5pbWF0aW9uRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2FuaW1h
dGlvbkZyYW1lOyB9CisKIHByaXZhdGU6CiAgICAgV2ViWFJTZXNzaW9uKERvY3VtZW50JiwgV2Vi
WFJTeXN0ZW0mLCBYUlNlc3Npb25Nb2RlLCBQbGF0Zm9ybVhSOjpEZXZpY2UmKTsKIAorICAgIHZv
aWQgaW5pdGlhbGl6ZVZpZXdlclJlZmVyZW5jZVNwYWNlKERvY3VtZW50Jik7CisKICAgICAvLyBF
dmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV2ViWFJTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOyB9CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0K
QEAgLTEwOSwxMSArMTE3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaHV0ZG93bihJbml0aWF0
ZWRCeVN5c3RlbSk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVNodXRkb3duKCk7CiAKLSAgICB2b2lk
IGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7Ci0K
ICAgICBib29sIHJlZmVyZW5jZVNwYWNlSXNTdXBwb3J0ZWQoWFJSZWZlcmVuY2VTcGFjZVR5cGUp
IGNvbnN0OwogCisgICAgYm9vbCBmcmFtZVNob3VsZEJlUmVuZGVyZWQoKSBjb25zdDsKKyAgICB2
b2lkIHJlcXVlc3RGcmFtZSgpOworICAgIHZvaWQgb25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSk7CisgICAgdm9pZCBhcHBseVBlbmRpbmdSZW5kZXJTdGF0ZSgpOworCiAgICAg
WFJFbnZpcm9ubWVudEJsZW5kTW9kZSBtX2Vudmlyb25tZW50QmxlbmRNb2RlOwogICAgIFhSSW50
ZXJhY3Rpb25Nb2RlIG1faW50ZXJhY3Rpb25Nb2RlOwogICAgIFhSVmlzaWJpbGl0eVN0YXRlIG1f
dmlzaWJpbGl0eVN0YXRlOwpAQCAtMTI2LDEzICsxMzYsMjUgQEAgcHJpdmF0ZToKICAgICBXZWFr
UHRyPFBsYXRmb3JtWFI6OkRldmljZT4gbV9kZXZpY2U7CiAgICAgUmVmUHRyPFdlYlhSUmVuZGVy
U3RhdGU+IG1fYWN0aXZlUmVuZGVyU3RhdGU7CiAgICAgUmVmUHRyPFdlYlhSUmVuZGVyU3RhdGU+
IG1fcGVuZGluZ1JlbmRlclN0YXRlOworICAgIE1vbm90b25pY1RpbWUgbV90aW1lT3JpZ2luOwog
CiAgICAgdW5zaWduZWQgbV9uZXh0Q2FsbGJhY2tJZCB7IDEgfTsKICAgICBWZWN0b3I8UmVmPFhS
RnJhbWVSZXF1ZXN0Q2FsbGJhY2s+PiBtX2NhbGxiYWNrczsKICAgICBWZWN0b3I8UmVmPFhSRnJh
bWVSZXF1ZXN0Q2FsbGJhY2s+PiBtX3J1bm5pbmdDYWxsYmFja3M7CiAKLSAgICBUaW1lciBtX2Fu
aW1hdGlvblRpbWVyOwotICAgIE1vbm90b25pY1RpbWUgbV9sYXN0QW5pbWF0aW9uRnJhbWVUaW1l
c3RhbXA7CisgICAgUmVmPFdlYlhSRnJhbWU+IG1fYW5pbWF0aW9uRnJhbWU7CisKKyAgICAvLyBX
ZSBob2xkIGEgcG9pbnRlciBqdXN0IHRvIGF2b2lkIGEgcmVmIGN5Y2xlIGJ1dCB3ZSBtdXN0IHVu
cmVmIGl0LgorICAgIFdlYlhSUmVmZXJlbmNlU3BhY2UqIG1fdmlld2VyUmVmZXJlbmNlU3BhY2U7
CisKKyAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gbV92aWV3czsKKwor
ICAgIGRvdWJsZSBtX21pbmltdW1JbmxpbmVGT1YgeyAwLjAgfTsKKyAgICBkb3VibGUgbV9tYXhp
bXVtSW5saW5lRk9WIHsgcGlGbG9hdCB9OworCisgICAgLy8gSW4gbWV0ZXJzLgorICAgIGRvdWJs
ZSBtX21pbmltdW1OZWFyQ2xpcFBsYW5lIHsgMC4xIH07CisgICAgZG91YmxlIG1fbWF4aW11bUZh
ckNsaXBQbGFuZSB7IDEwMDAuMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKaW5kZXggNTI0MjU0ZmE0
Njc3YjhkYjE1MjM1NTA2MjhkM2E3OWU2OTIyNjkxNC4uMDkzODdhNzQ1NDc2NmQxNjQ5MjY3ODZm
YjEzOTRlYThhNDk4YWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3BhY2UuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNs
dWRlICJET01Qb2ludFJlYWRPbmx5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzYsMTQgKzM4LDIzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSU3BhY2Up
OwogCi1XZWJYUlNwYWNlOjpXZWJYUlNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiBzZXNzaW9uKQorV2ViWFJTcGFjZTo6V2ViWFJTcGFjZShEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgb2Zmc2V0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmRvY3VtZW50
KQogICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX29yaWdpbk9mZnNl
dChXVEZNb3ZlKG9mZnNldCkpCiB7CiB9CiAKIFdlYlhSU3BhY2U6On5XZWJYUlNwYWNlKCkgPSBk
ZWZhdWx0OwogCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSU3BhY2U6OmVmZmVjdGl2ZU9y
aWdpbigpIGNvbnN0Cit7CisJLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci8jeHJzcGFjZS1lZmZlY3RpdmUtb3JpZ2luCisJLy8gVGhlIGVmZmVjdGl2ZSBvcmlnaW4gY2Fu
IGJlIG9idGFpbmVkIGJ5IG11bHRpcGx5aW5nIG9yaWdpbiBvZmZzZXQgYW5kIHRoZSBuYXRpdmUg
b3JpZ2luLgorCXJldHVybiBtX29yaWdpbk9mZnNldC0+cmF3VHJhbnNmb3JtKCkgKiBuYXRpdmVP
cmlnaW4oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNw
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaAppbmRleCA3
ZjFjNGU5NzQ3MzlhNzBjYzRiMGMwYjFjZWJmMThlNWZiODQ5OTBkLi4wYjBhNTcwYTJjMmRiYzBi
OGU3YTA1MDA4YWVlYzI0Yjg3ZDdmMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3BhY2UuaApAQCAtMjksMTIgKzI5LDE0IEBACiAKICNpbmNsdWRlICJDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKK2NsYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm07CiBjbGFzcyBXZWJYUlNlc3Np
b247CiAKIGNsYXNzIFdlYlhSU3BhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlNwYWNlPiwg
cHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlciB7CkBAIC00MiwxNiArNDQsMjUgQEAgY2xhc3MgV2ViWFJTcGFjZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlhSU3BhY2U+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGEK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJYUlNwYWNlKCk7CiAKKyAgICBjb25zdCBXZWJYUlNl
c3Npb24mIHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKworICAg
IHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgPSAwOwor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGVmZmVjdGl2ZU9yaWdpbigpIGNvbnN0OworCisgICAg
dmlydHVhbCBib29sIGlzUmVmZXJlbmNlU3BhY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0JvdW5kZWRSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSU3BhY2U+OjpyZWY7CiAgICAg
dXNpbmcgUmVmQ291bnRlZDxXZWJYUlNwYWNlPjo6ZGVyZWY7CiAKIHByb3RlY3RlZDoKLSAgICBX
ZWJYUlNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAgV2ViWFJTcGFj
ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiYmKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIFJl
ZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4g
bV9vcmlnaW5PZmZzZXQ7CiAKIHByaXZhdGU6CiAgICAgLy8gRXZlbnRUYXJnZXQKQEAgLTYyLDQg
KzczLDkgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZGVmaW5lIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCWFJTUEFDRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0
ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5h
bWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V2ViWFJTcGFjZSYg
Y29udGV4dCkgeyByZXR1cm4gY29udGV4dC5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAppbmRleCAxMmE5ZjIxZTcyNGExMmRkYzE1
ZGE5YTg0YzFiODJlYjRkMTdkNGQ4Li4zMDY0Yjg2YzNkZWJhMmYwNTg4NDllY2M1NWIzYmUzYzc4
NDBlYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiSlNYUlJlZmVyZW5jZVNwYWNlVHlwZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKyNp
bmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC00OSwxMSArNTAsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlN5c3RlbSk7CiAK
LVdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6RHVtbXlJbmxpbmVEZXZpY2UoKQotewot
ICAgIHNldEVuYWJsZWRGZWF0dXJlcyhYUlNlc3Npb25Nb2RlOjpJbmxpbmUsIHsgWFJSZWZlcmVu
Y2VTcGFjZVR5cGU6OlZpZXdlciB9KTsKLX0KLQogUmVmPFdlYlhSU3lzdGVtPiBXZWJYUlN5c3Rl
bTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJTeXN0ZW0oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkpOwpAQCAtNjEsNiArNTcsNyBAQCBSZWY8V2ViWFJTeXN0ZW0+IFdlYlhSU3lzdGVt
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udAogCiBX
ZWJYUlN5c3RlbTo6V2ViWFJTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKKyAgICAsIG1fZGVmYXVsdElubGluZURldmljZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQogewogICAgIG1faW5saW5lWFJEZXZpY2UgPSBtYWtlV2Vha1B0cihtX2RlZmF1bHRJbmxpbmVE
ZXZpY2UpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtNDc1LDYgKzQ3Miw1NyBAQCB2b2lk
IFdlYlhSU3lzdGVtOjpzZXNzaW9uRW5kZWQoV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQogICAgIG1f
aW5saW5lU2Vzc2lvbnMucmVtb3ZlKHNlc3Npb24pOwogfQogCitjbGFzcyBJbmxpbmVSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVDYWxsYmFjazogcHVibGljIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPElubGluZVJlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShjYWxsYmFjaykpKTsKKyAgICB9CisKKyAgICBJ
bmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCisg
ICAgICAgIDogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2soJnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSAKKyAgICB7CisgICAgfQorCisg
ICAgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZlbnQoZG91YmxlIGhpZ2hSZXNUaW1lTXMp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0oaGlnaFJlc1RpbWVNcyk7Cisg
ICAgICAgIG1fY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Citwcml2YXRl
OgorICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jYWxsYmFjazsKK307CisKKworV2ViWFJTeXN0ZW06
OkR1bW15SW5saW5lRGV2aWNlOjpEdW1teUlubGluZURldmljZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQoreworICAgIHNldEVuYWJsZWRGZWF0dXJlcyhY
UlNlc3Npb25Nb2RlOjpJbmxpbmUsIHsgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlciB9KTsK
K30KKwordm9pZCBXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OnJlcXVlc3RGcmFtZShQ
bGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7Cisg
ICAgLy8gSW5saW5lIFhSIHNlc3Npb25zIHJlbHkgb24gZG9jdW1lbnQucmVxdWVzdEFuaW1hdGlv
bkZyYW1lIHRvIHBlcmZvcm0gdGhlIHJlbmRlciBsb29wLgorICAgIGF1dG8gZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBhdXRvIHJh
ZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOjpjcmVhdGUoKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7CisKKyAgICAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgZGF0YTsKKyAgICAg
ICAgZGF0YS5pc1RyYWNraW5nVmFsaWQgPSB0cnVlOworICAgICAgICBkYXRhLmlzUG9zaXRpb25W
YWxpZCA9IHRydWU7CisgICAgICAgIGRhdGEudmlld3MuYXBwZW5kKHsgfSk7CisgICAgICAgIGNh
bGxiYWNrKGRhdGEpOworICAgIH0pOworCisgICAgZG9jdW1lbnQtPnJlcXVlc3RBbmltYXRpb25G
cmFtZShyYWYpOworfQorCitWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gV2Vi
WFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjp2aWV3cyhYUlNlc3Npb25Nb2RlKSBjb25zdAor
eworICAgIHJldHVybiB7IHsgLmFjdGl2ZSA9IHRydWUsIFBsYXRmb3JtWFI6OkV5ZTo6Tm9uZSB9
IH07Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdF
QlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3Rl
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCmluZGV4IGM3
NjJkNDZhYzBlOTA0YTM5ODNkMzk3ZjY4NjU2MWQ0YzE2NWIzNTUuLjk2NWNhZjEyNzEwYWU3ZTUw
NWVlZDU2ZDQ1NTI0M2JhOWQzODNmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3lzdGVtLmgKQEAgLTEwNiwxMSArMTA2LDE3IEBAIHByaXZhdGU6CiAgICAgLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZGVmYXVsdC1pbmxpbmUteHItZGV2
aWNlCiAgICAgY2xhc3MgRHVtbXlJbmxpbmVEZXZpY2UgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1Y
Ujo6RGV2aWNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIER1bW15SW5saW5lRGV2aWNlKCk7Cisg
ICAgICAgIER1bW15SW5saW5lRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBs
YXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBzaHV0RG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWwgeyB9CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVJl
ZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisK
KyAgICAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJh
bWVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICAgICAgVmVjdG9yPERldmljZTo6Vmlld0RhdGE+IHZp
ZXdzKFhSU2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICB9OwogICAgIER1bW15SW5s
aW5lRGV2aWNlIG1fZGVmYXVsdElubGluZURldmljZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwCmluZGV4IDFhOThjYjE0NTA0NTlmZjI2NTYzOGY1OGRmNDhi
YjRmY2NmZjMwYmUuLjk1OWQ4MDIxNDQyMDliM2FiNDI3MzJlOTMwY2Q1Y2QyZmNkZDRlNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKQEAgLTM2LDIzICsz
NiwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJYUlZpZXcpOwogCi1SZWY8V2ViWFJWaWV3PiBXZWJYUlZpZXc6OmNyZWF0ZSgpCitSZWY8
V2ViWFJWaWV3PiBXZWJYUlZpZXc6OmNyZWF0ZShYUkV5ZSBleWUsIFJlZjxXZWJYUlJpZ2lkVHJh
bnNmb3JtPiYmIHRyYW5zZm9ybSwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmlldyk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViWFJWaWV3KGV5ZSwgV1RGTW92ZSh0cmFuc2Zvcm0pLCBXVEZNb3ZlKHNlc3Npb24pKSk7
CiB9CiAKLVdlYlhSVmlldzo6V2ViWFJWaWV3KCkKLSAgICA6IG1fZXllKFhSRXllOjpOb25lKQor
V2ViWFJWaWV3OjpXZWJYUlZpZXcoWFJFeWUgZXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4m
JiB0cmFuc2Zvcm0sIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKKyAgICA6IG1fZXllKGV5
ZSkKKyAgICAsIG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSkKKyAgICAsIG1fc2Vzc2lv
bihXVEZNb3ZlKHNlc3Npb24pKQogewogfQogCi1XZWJYUlZpZXc6On5XZWJYUlZpZXcoKSA9IGRl
ZmF1bHQ7Ci0KLXZvaWQgV2ViWFJWaWV3OjpzZXRQcm9qZWN0aW9uTWF0cml4KGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIG1hdHJpeCkKK3ZvaWQgV2ViWFJWaWV3OjpzZXRQcm9qZWN0aW9uTWF0cml4KGNv
bnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIDE2PiYgcHJvamVjdGlvbikKIHsKLSAgICBtX3Byb2plY3Rp
b25NYXRyaXggPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZShtYXRyaXguZGF0YSgpLCBtYXRyaXguc2l6
ZSgpKTsKKwltX3Byb2plY3Rpb24gPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZShwcm9qZWN0aW9uLmRh
dGEoKSwgcHJvamVjdGlvbi5zaXplKCkpOwogfQogCitXZWJYUlZpZXc6On5XZWJYUlZpZXcoKSA9
IGRlZmF1bHQ7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oCmluZGV4IDM5YTA5
Y2UxMGJhYWEyYzI3OTdjODc1NTczNzFjMmJmNzg4YWM0ZTUuLmFjZGNkYmFjNGM3YjhmNDI2ZjI0
NTIyODEwOGU3OWVlMWUxODVjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJYUikKIAogI2luY2x1ZGUg
IldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNs
dWRlICJYUkV5ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KQEAgLTM3LDI4ICszOCwyOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdlYlhSRnJhbWU7CiBjbGFzcyBXZWJYUlJpZ2lkVHJhbnNm
b3JtOwogCiBjbGFzcyBXZWJYUlZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlZpZXc+IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChXZWJYUlZpZXcsIFdFQkNPUkVfRVhQ
T1JUKTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFdlYlhSVmlldz4g
Y3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxXZWJYUlZpZXc+IGNyZWF0
ZShYUkV5ZSBleWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBSZWY8V2ViWFJTZXNzaW9u
PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+V2ViWFJWaWV3KCk7CiAKICAgICBYUkV5ZSBleWUo
KSBjb25zdCB7IHJldHVybiBtX2V5ZTsgfQotICAgIGNvbnN0IEZsb2F0MzJBcnJheSYgcHJvamVj
dGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuICptX3Byb2plY3Rpb25NYXRyaXg7IH0KLSAgICBj
b25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiAqbV90
cmFuc2Zvcm07IH0KKyAgICBjb25zdCBGbG9hdDMyQXJyYXkmIHByb2plY3Rpb25NYXRyaXgoKSBj
b25zdCB7IHJldHVybiAqbV9wcm9qZWN0aW9uOyB9CisgICAgY29uc3QgV2ViWFJSaWdpZFRyYW5z
Zm9ybSYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0uZ2V0KCk7IH0KIAot
ICAgIHZvaWQgc2V0RXllKFhSRXllIGV5ZSkgeyBtX2V5ZSA9IGV5ZTsgfQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UHJvamVjdGlvbk1hdHJpeChjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7Ci0g
ICAgdm9pZCBzZXRUcmFuc2Zvcm0oUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdmlld09m
ZnNldCkgeyBtX3RyYW5zZm9ybSA9IFdURk1vdmUodmlld09mZnNldCk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFByb2plY3Rpb25NYXRyaXgoY29uc3Qgc3RkOjphcnJheTxmbG9hdCwg
MTY+Jik7CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJWaWV3KCk7CisgICAgV2ViWFJWaWV3KFhSRXll
IGV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFJlZjxXZWJYUlNlc3Npb24+JiYpOwog
CiAgICAgWFJFeWUgbV9leWU7Ci0gICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbV9wcm9qZWN0aW9u
TWF0cml4OwotICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKKyAg
ICBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgUmVmPFdlYlhSU2Vz
c2lvbj4gbV9zZXNzaW9uOworICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+IG1fcHJvamVjdGlvbjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcAppbmRleCA2MDYzYzk1ZjM2NDNhZGFiMGEyODFk
YTg4YjNjYmFlNjVhNzk3YjA5Li40NzdlODk0MGMyMDQyOWM1ZGVkNzc0OWYzYzRjZmNhZjZjN2M3
ZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2Vy
UG9zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBv
c2UuY3BwCkBAIC0yNSwxNyArMjUsMjQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYlhSVmlld2VyUG9zZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYlhS
Vmlld2VyUG9zZT4gV2ViWFJWaWV3ZXJQb3NlOjpjcmVhdGUoKQorV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKFdlYlhSVmlld2VyUG9zZSk7CisKK1JlZjxXZWJYUlZpZXdlclBvc2U+IFdlYlhS
Vmlld2VyUG9zZTo6Y3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwg
Ym9vbCBlbXVsYXRlZFBvc2l0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhS
Vmlld2VyUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pKTsKK30KKwor
V2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCisJOiBXZWJYUlBvc2UoV1RGTW92
ZSh0cmFuc2Zvcm0pLCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSVmlld2VyUG9zZSk7CiB9CiAKLVdlYlhSVmlld2VyUG9zZTo6V2ViWFJWaWV3ZXJQ
b3NlKCkgPSBkZWZhdWx0OwogV2ViWFJWaWV3ZXJQb3NlOjp+V2ViWFJWaWV3ZXJQb3NlKCkgPSBk
ZWZhdWx0OwogCiBjb25zdCBWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiBXZWJYUlZpZXdlclBvc2U6
OnZpZXdzKCkgY29uc3QKQEAgLTQzLDYgKzUwLDExIEBAIGNvbnN0IFZlY3RvcjxSZWY8V2ViWFJW
aWV3Pj4mIFdlYlhSVmlld2VyUG9zZTo6dmlld3MoKSBjb25zdAogICAgIHJldHVybiBtX3ZpZXdz
OwogfQogCit2b2lkIFdlYlhSVmlld2VyUG9zZTo6c2V0Vmlld3MoVmVjdG9yPFJlZjxXZWJYUlZp
ZXc+PiYmIHZpZXdzKQoreworICAgIG1fdmlld3MgPSBXVEZNb3ZlKHZpZXdzKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmgKaW5kZXggYTRlZDI1YjEw
YzI1MzE5YTZlOTIxODUyODA2NGU1MWM4ZDRkOGYyMC4uOTg0NjNiODU5NmFiNjA1YjQ2NTc2Mjc0
MWRhNTEwZWVjNGM0MjRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlZpZXdlclBvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSVmlld2VyUG9zZS5oCkBAIC0zNywxOCArMzcsMjQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV2ViWFJWaWV3ZXJQb3NlIDogcHVibGljIFdlYlhSUG9zZSB7CisJV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChXZWJYUlZpZXdlclBvc2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
V2ViWFJWaWV3ZXJQb3NlPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSVmlld2VyUG9z
ZT4gY3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRp
b24pOwogICAgIH5XZWJYUlZpZXdlclBvc2UoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8V2Vi
WFJWaWV3Pj4mIHZpZXdzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRWaWV3cyhWZWN0b3I8UmVmPFdl
YlhSVmlldz4+JiYpOwogCiBwcml2YXRlOgotICAgIFdlYlhSVmlld2VyUG9zZSgpOworICAgIFdl
YlhSVmlld2VyUG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBv
c2l0aW9uKTsKKworICAgIGJvb2wgaXNWaWV3ZXJQb3NlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgVmVjdG9yPFJlZjxXZWJYUlZpZXc+PiBtX3ZpZXdzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQlhSUE9TRShX
ZWJYUlZpZXdlclBvc2UsIGlzVmlld2VyUG9zZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBv
c2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRs
CmluZGV4IGQxYmViMmMwODZmODliZmFmZGY1ZTBiZjFmOTVjMGY0OGM2MDc2MTMuLjZhNzZkZTg0
MzU0OWZiZjA2M2QwYmE1ZDQxMTNhMDE1Mjk1MGIyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5pZGwKQEAgLTI4LDcgKzI4LDggQEAKICAg
ICBDb25kaXRpb25hbD1XRUJYUiwKICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2lu
ZG93LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIEludGVyZmFjZU5hbWU9
WFJWaWV3ZXJQb3NlCiBdIGludGVyZmFjZSBXZWJYUlZpZXdlclBvc2UgOiBXZWJYUlBvc2Ugewog
ICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJWaWV3
PiB2aWV3czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJX
ZWJHTExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExh
eWVyLmNwcAppbmRleCA4NmRkMTFiMDAxNDNiZjgwZWE4MWFlMmFkZDhkZTg0ZGMwMmQwMzNmLi4x
NGNjNzRiOGU5NTFhMmVlMTE0N2RmNTc4MDA1ZDZiOGRlNDdjNjI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdMTGF5ZXIuY3BwCkBAIC0yOCw3ICsyOCw5
IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNp
bmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaWYgRU5BQkxFKFdFQkdMMikKQEAgLTE5OCw2ICsyMDAsMjMgQEAgZG91YmxlIFdl
YlhSV2ViR0xMYXllcjo6Z2V0TmF0aXZlRnJhbWVidWZmZXJTY2FsZUZhY3Rvcihjb25zdCBXZWJY
UlNlc3Npb24mIHNlc3MKICAgICByZXR1cm4gKG5hdGl2ZVNpemUgLyByZWNvbW1lbmRlZFNpemUp
LndpZHRoKCk7CiB9CiAKK0hUTUxDYW52YXNFbGVtZW50KiBXZWJYUldlYkdMTGF5ZXI6OmNhbnZh
cygpIGNvbnN0Cit7CisgICAgSFRNTENhbnZhc0VsZW1lbnQqIGMgPSBXVEY6OnN3aXRjaE9uKG1f
Y29udGV4dCwgW10oY29uc3QgUmVmUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+JiBiYXNl
Q29udGV4dCkgeworICAgICAgICBhdXRvIGNhbnZhcyA9IGJhc2VDb250ZXh0LT5jYW52YXMoKTsK
KyAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oCisgICAgICAgICAgICBjYW52YXMsCisgICAg
ICAgICAgICBbXShjb25zdCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBjYW52YXMpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldCgpOworICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIFtdKFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+KSB7CisgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCJiYXNlTGF5ZXIgb2YgYSBXZWJYUldlYkdMTGF5ZXIgbXVzdCBiZSBh
biBIVE1MQ2FudmFzRWxlbWVudCIpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgfSk7CisgICAgfSk7CisgICAgcmV0dXJuIGM7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJXZWJHTExheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSV2ViR0xMYXllci5oCmluZGV4IDMxNzU1ZDg0OTZhNmE3MDJl
MjMzMjljZmJmMzI5YjljYzRiOGE5ZGYuLjNmNzU4N2RlODlkYTZlMjMxYzk0M2M0ZjkwNWZjMWNm
MTgwNTkyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJX
ZWJHTExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUldlYkdM
TGF5ZXIuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEhUTUxDYW52YXNFbGVtZW50OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFdlYkdMRnJhbWVidWZm
ZXI7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7CkBAIC03NCw2ICs3NSwxMSBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSB7IHJldHVybiBtX3Nlc3Np
b247IH0KIAorICAgIGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb21wb3NpdGlvbkRpc2FibGVkOyB9CisgICAgdm9pZCBzZXRDb21wb3NpdGlvbkRpc2FibGVk
KGJvb2wgY29tcG9zaXRpb25EaXNhYmxlZCkgeyBtX2lzQ29tcG9zaXRpb25EaXNhYmxlZCA9IGNv
bXBvc2l0aW9uRGlzYWJsZWQ7IH0KKworICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMoKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJYUldlYkdMTGF5ZXIoUmVmPFdlYlhSU2Vzc2lvbj4m
JiwgV2ViWFJSZW5kZXJpbmdDb250ZXh0JiYsIGNvbnN0IFhSV2ViR0xMYXllckluaXQmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkV5ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkV5ZS5oCmluZGV4IGVhMWVhN2UxZTdkODIyNjMyNWY2
MGM4MjZmZmZiYzBiOWJhNGQ2NmYuLmY5YTM0M2JkYTQ0NzQ5N2Y2ZGRhNTQ0OTkwOGU0ZDk5ZDlm
Yzk3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJFeWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSRXllLmgKQEAgLTI3LDEzICsyNywx
MSBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgWFJFeWUgewotICAgIE5vbmUsCi0gICAg
TGVmdCwKLSAgICBSaWdodCwKLX07Cit1c2luZyBYUkV5ZSA9IFBsYXRmb3JtWFI6OkV5ZTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwCmluZGV4IGE3ZTRlMDE0MmM0YTM0YTVlYWRkNzk3M2Y0ZGI0NzI1ODUzZGYwYzEuLmQ4
NjE3Y2JjZTdjZTMwZWVmZGI4Y2JjOWViYTkwYzkyMzJlNDMzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC02MDAsNiArNjAwLDM0IEBAIFRyYW5zZm9ybWF0
aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpmcm9tUXVhdGVybmlvbihkb3VibGUgcXgs
IGRvdWJsZSBxeSwKICAgICAgICAgMCwgMCwgMCwgMSk7CiB9CiAKKworVHJhbnNmb3JtYXRpb25N
YXRyaXggVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGRvdWJsZSBmb3ZVcCwg
ZG91YmxlIGZvdkRvd24sIGRvdWJsZSBmb3ZMZWZ0LCBkb3VibGUgZm92UmlnaHQsIGRvdWJsZSBu
ZWFyLCBkb3VibGUgZmFyKQoreworICAgIGNvbnN0IGRvdWJsZSB1cFRhbiA9IHRhbihmb3ZVcCk7
CisgICAgY29uc3QgZG91YmxlIGRvd25UYW4gPSB0YW4oZm92RG93bik7CisgICAgY29uc3QgZG91
YmxlIGxlZnRUYW4gPSB0YW4oZm92TGVmdCk7CisgICAgY29uc3QgZG91YmxlIHJpZ2h0VGFuID0g
dGFuKGZvdlJpZ2h0KTsKKyAgICBjb25zdCBkb3VibGUgeFNjYWxlID0gMi4wIC8gKGxlZnRUYW4g
KyByaWdodFRhbik7CisgICAgY29uc3QgZG91YmxlIHlTY2FsZSA9IDIuMCAvICh1cFRhbiArIGRv
d25UYW4pOworICAgIGNvbnN0IGRvdWJsZSBpbnZEZXB0aCA9IDEuMCAvIChuZWFyIC0gZmFyKTsK
KworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh4U2NhbGUsIDAuMGYsIDAuMGYsIDAu
MGYsCisgICAgICAgIDAuMGYsIHlTY2FsZSwgMC4wZiwgMC4wZiwKKyAgICAgICAgKGxlZnRUYW4g
LSByaWdodFRhbikgKiB4U2NhbGUgKiAtMC41LCAodXBUYW4gLSBkb3duVGFuKSAqIHlTY2FsZSAq
IDAuNSwgKG5lYXIgKyBmYXIpICogaW52RGVwdGgsIC0xLjBmLAorICAgICAgICAwLjBmLCAwLjBm
LCAoMi4wZiAqIGZhciAqIG5lYXIpICogaW52RGVwdGgsIDAuMGYpOworfQorCitUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVByb2plY3Rpb24oZG91YmxlIGZv
dnksIGRvdWJsZSBhc3BlY3QsIGRvdWJsZSBuZWFyLCBkb3VibGUgZmFyKQoreworICAgIGNvbnN0
IGZsb2F0IGYgPSAxLjBmIC8gdGFuZihmb3Z5IC8gMik7CisgICAgY29uc3QgZmxvYXQgaW52RGVw
dGggPSAxLjBmIC8gKG5lYXIgLSBmYXIpOworCisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0
cml4KGYgLyBhc3BlY3QsIDAuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIGYsIDAuMGYs
IDAuMGYsCisgICAgICAgIDAuMGYsIDAuMGYsIChmYXIgKyBuZWFyKSAqIGludkRlcHRoLCAtMS4w
ZiwKKyAgICAgICAgMC4wZiwgMC4wZiwgKDIuMGYgKiBmYXIgKiBuZWFyKSAqIGludkRlcHRoLCAw
LjBmKTsKK30KKwogVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpz
Y2FsZShkb3VibGUgcykKIHsKICAgICByZXR1cm4gc2NhbGVOb25Vbmlmb3JtKHMsIHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IDYwMGU3ZDBiMWNlMjZhN2MyNDIx
ZDU4NTYxY2M1NzRiMDRhMTdiMjkuLjVlOGFiNWI2MTM0NjViMjdmYjQxNjEyZTQ4YWRjMTY4NDQ4
ZWNhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTEyMSw2ICsx
MjEsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21R
dWF0ZXJuaW9uKGRvdWJsZSBxeCwgZG91YmxlIHF5LCBkb3VibGUgcXosIGRvdWJsZSBxdyk7CiAK
KyAgICAvLyBGaWVsZCBvZiB2aWV3IGluIHJhZGlhbnMKKyAgICBzdGF0aWMgVHJhbnNmb3JtYXRp
b25NYXRyaXggZnJvbVByb2plY3Rpb24oZG91YmxlIGZvdlVwLCBkb3VibGUgZm92RG93biwgZG91
YmxlIGZvdkxlZnQsIGRvdWJsZSBmb3ZSaWdodCwgZG91YmxlIG5lYXIsIGRvdWJsZSBmYXIpOwor
ICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tUHJvamVjdGlvbihkb3VibGUgZm92
eSwgZG91YmxlIGFzcGVjdCwgZG91YmxlIG5lYXIsIGRvdWJsZSBmYXIpOworCiAgICAgc3RhdGlj
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5OwogCiAgICAgdm9pZCBzZXRNYXRy
aXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3Vi
bGUgZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCBiOWVmNDVj
MGM2OTcxNGFlODNjNzA0NDU0ZDk1NGJkNTFlYTQ3NjZiLi4xNTZlZTdkODU3MzA2ZjFkYTliZGZi
ZWI2ZTM3NTJhMDliNTA5YjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1Y
Ui5oCkBAIC0xOCwxMSArMTgsMTMgQEAKICAqLwogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJG
bG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAg
LTQyLDYgKzQ0LDEyIEBAIGVudW0gY2xhc3MgUmVmZXJlbmNlU3BhY2VUeXBlIHsKICAgICBVbmJv
dW5kZWQKIH07CiAKK2VudW0gY2xhc3MgRXllIHsKKyAgICBOb25lLAorICAgIExlZnQsCisgICAg
UmlnaHQsCit9OworCiAjaWYgRU5BQkxFKFdFQlhSKQogCiBjbGFzcyBUcmFja2luZ0FuZFJlbmRl
cmluZ0NsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0Ns
aWVudD4gewpAQCAtNzUsNyArODMsNDcgQEAgcHVibGljOgogICAgIC8vIElmIHRoaXMgbWV0aG9k
IHJldHVybnMgdHJ1ZSwgdGhhdCBtZWFucyB0aGUgZGV2aWNlIHdpbGwgbm90aWZ5IFRyYWNraW5n
QW5kUmVuZGVyaW5nQ2xpZW50CiAgICAgLy8gd2hlbiB0aGUgcGxhdGZvcm0gaGFzIGNvbXBsZXRl
ZCBhbGwgc3RlcHMgdG8gc2h1dCBkb3duIHRoZSBYUiBzZXNzaW9uLgogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0KKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFJlZmVy
ZW5jZVNwYWNlVHlwZSkgPSAwOworCisgICAgc3RydWN0IEZyYW1lRGF0YSB7CisgICAgICAgIHN0
cnVjdCBGbG9hdFF1YXRlcm5pb24geworICAgICAgICAgICAgZmxvYXQgeCA9IDAsIHkgPSAwLCB6
ID0gMCwgdyA9IDE7CisgICAgICAgIH07CisKKyAgICAgICAgc3RydWN0IFBvc2UgeworICAgICAg
ICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludDNEIHBvc2l0aW9uOworICAgICAgICAgICAgRmxvYXRR
dWF0ZXJuaW9uIG9yaWVudGF0aW9uOworICAgICAgICB9OworCisgICAgICAgIHN0cnVjdCBGb3Yg
eworICAgICAgICAgICAgLy8gaW4gcmFkaWFucworICAgICAgICAgICAgZmxvYXQgdXAsIGRvd24s
IGxlZnQsIHJpZ2h0OworICAgICAgICB9OworCisgICAgICAgIHVzaW5nIFByb2plY3Rpb24gPSBW
YXJpYW50PEZvdiwgc3RkOjphcnJheTxmbG9hdCwgMTY+LCBzdGQ6Om51bGxwdHJfdD47CisKKyAg
ICAgICAgc3RydWN0IFZpZXcgeworICAgICAgICAgICAgUG9zZSBvZmZzZXQ7CisgICAgICAgICAg
ICBQcm9qZWN0aW9uIHByb2plY3Rpb24gPSB7IG51bGxwdHIgfTsKKyAgICAgICAgfTsKKworICAg
ICAgICBib29sIGlzVHJhY2tpbmdWYWxpZCA9IGZhbHNlOworICAgICAgICBib29sIGlzUG9zaXRp
b25WYWxpZCA9IGZhbHNlOworICAgICAgICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCA9IGZhbHNl
OworICAgICAgICBsb25nIHByZWRpY3RlZERpc3BsYXlUaW1lOworICAgICAgICBQb3NlIG9yaWdp
bjsKKyAgICAgICAgVmVjdG9yPFZpZXc+IHZpZXdzOworICAgIH07CisKKyAgICBzdHJ1Y3QgVmll
d0RhdGEgeworICAgICAgICBib29sIGFjdGl2ZTsKKyAgICAgICAgRXllIGV5ZTsKKyAgICB9Owor
CisgICAgdmlydHVhbCBWZWN0b3I8Vmlld0RhdGE+IHZpZXdzKFNlc3Npb25Nb2RlKSBjb25zdCA9
IDA7CisKKyAgICB1c2luZyBSZXF1ZXN0RnJhbWVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9p
ZChGcmFtZURhdGEpPjsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFt
ZUNhbGxiYWNrJiYpID0gMDsKIHByb3RlY3RlZDoKICAgICBEZXZpY2UoKSA9IGRlZmF1bHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhS
T3BlblhSLmNwcAppbmRleCBmZTg2NWU2NzFkNzA2ODZkZTc5MWYxNDAwZTZjZjNlMmM4NjllYzIy
Li5lNTc1OGVhODU1YTQ3OGNkOGY2YTU0ZmEzM2ViMzA4YzQ2MWM2Y2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3Bw
CkBAIC0zMDQsNiArMzA0LDI4IEBAIERldmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5Y
UkRldmljZTo6ZW51bWVyYXRlUmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiYKICAgICByZXR1cm4g
ZW5hYmxlZEZlYXR1cmVzOwogfQogCitYclNwYWNlIE9wZW5YUkRldmljZTo6Y3JlYXRlUmVmZXJl
bmNlU3BhY2UoWHJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQoJlJ1bkxv
b3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOworICAgIEFTU0VSVChtX3Nlc3Np
b24gIT0gWFJfTlVMTF9IQU5ETEUpOworICAgIEFTU0VSVChtX2luc3RhbmNlICE9IFhSX05VTExf
SEFORExFKTsKKworICAgIFhyUG9zZWYgaWRlbnRpdHlQb3NlID0geworICAgICAgICAub3JpZW50
YXRpb24gPSB7IC54ID0gMCwgLnkgPSAwLCAueiA9IDAsIC53ID0gMS4wIH0sCisgICAgICAgIC5w
b3NpdGlvbiA9IHsgLnggPSAwLCAueSA9IDAsIC56ID0gMCB9CisgICAgfTsKKworICAgIGF1dG8g
c3BhY2VDcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyUmVmZXJlbmNlU3BhY2VDcmVhdGVJ
bmZvLCBYUl9UWVBFX1JFRkVSRU5DRV9TUEFDRV9DUkVBVEVfSU5GTz4oKTsKKyAgICBzcGFjZUNy
ZWF0ZUluZm8ucmVmZXJlbmNlU3BhY2VUeXBlID0gdHlwZTsKKyAgICBzcGFjZUNyZWF0ZUluZm8u
cG9zZUluUmVmZXJlbmNlU3BhY2UgPSBpZGVudGl0eVBvc2U7CisKKyAgICBYclNwYWNlIHNwYWNl
OworICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVSZWZlcmVuY2VTcGFjZShtX3Nlc3Npb24sICZz
cGFjZUNyZWF0ZUluZm8sICZzcGFjZSk7CisgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4
ckNyZWF0ZVJlZmVyZW5jZVNwYWNlIiwgbV9pbnN0YW5jZSwgWFJfTlVMTF9IQU5ETEUpOworCisg
ICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRl
ZFNlc3Npb25Nb2RlcygpCiB7CiAgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1f
cXVldWUucnVuTG9vcCgpKTsKQEAgLTM3MywxNSArMzk1LDYgQEAgdm9pZCBPcGVuWFJEZXZpY2U6
OmNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKQogICAgIH0KIH0KIAotV2ViQ29yZTo6SW50U2l6
ZSBPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSBtb2RlKQot
ewotICAgIGF1dG8gY29uZmlnVHlwZSA9IG1vZGUgPT0gU2Vzc2lvbk1vZGU6OklubGluZSA/IFhS
X1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTyA6IFhSX1ZJRVdfQ09ORklHVVJB
VElPTl9UWVBFX1BSSU1BUllfU1RFUkVPOwotICAgIGF1dG8gdmlld3NJdGVyYXRvciA9IG1fY29u
ZmlndXJhdGlvblZpZXdzLmZpbmQoY29uZmlnVHlwZSk7Ci0gICAgaWYgKHZpZXdzSXRlcmF0b3Ig
IT0gbV9jb25maWd1cmF0aW9uVmlld3MuZW5kKCkpCi0gICAgICAgIHJldHVybiB7IHN0YXRpY19j
YXN0PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFnZVJlY3RXaWR0
aCksIHN0YXRpY19jYXN0PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5kZWRJ
bWFnZVJlY3RIZWlnaHQpIH07Ci0gICAgcmV0dXJuIERldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0
aW9uKG1vZGUpOwotfQotCiBYclZpZXdDb25maWd1cmF0aW9uVHlwZSB0b1hyVmlld0NvbmZpZ3Vy
YXRpb25UeXBlKFNlc3Npb25Nb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CkBAIC0z
OTUsNiArNDA4LDE1IEBAIFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlIHRvWHJWaWV3Q29uZmlndXJh
dGlvblR5cGUoU2Vzc2lvbk1vZGUgbW9kZSkKICAgICByZXR1cm4gWFJfVklFV19DT05GSUdVUkFU
SU9OX1RZUEVfUFJJTUFSWV9NT05POwogfQogCitXZWJDb3JlOjpJbnRTaXplIE9wZW5YUkRldmlj
ZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlIG1vZGUpCit7CisgICAgYXV0byBj
b25maWdUeXBlID0gdG9YclZpZXdDb25maWd1cmF0aW9uVHlwZShtb2RlKTsKKyAgICBhdXRvIHZp
ZXdzSXRlcmF0b3IgPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5maW5kKGNvbmZpZ1R5cGUpOworICAg
IGlmICh2aWV3c0l0ZXJhdG9yICE9IG1fY29uZmlndXJhdGlvblZpZXdzLmVuZCgpKQorICAgICAg
ICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZhbHVlWzBdLnJlY29t
bWVuZGVkSW1hZ2VSZWN0V2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZh
bHVlWzBdLnJlY29tbWVuZGVkSW1hZ2VSZWN0SGVpZ2h0KSB9OworICAgIHJldHVybiBEZXZpY2U6
OnJlY29tbWVuZGVkUmVzb2x1dGlvbihtb2RlKTsKK30KKwogdm9pZCBPcGVuWFJEZXZpY2U6Omlu
aXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2RlKQogewogICAgIG1f
cXVldWUuZGlzcGF0Y2goW3RoaXMsIG1vZGVdKCkgewpAQCAtNDA5LDIyICs0MzEsMjAwIEBAIHZv
aWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1v
ZGUgbW9kZSkKICAgICAgICAgc2Vzc2lvbkNyZWF0ZUluZm8uc3lzdGVtSWQgPSBtX3N5c3RlbUlk
OwogICAgICAgICBhdXRvIHJlc3VsdCA9IHhyQ3JlYXRlU2Vzc2lvbihtX2luc3RhbmNlLCAmc2Vz
c2lvbkNyZWF0ZUluZm8sICZtX3Nlc3Npb24pOwogICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJl
c3VsdCwgInhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIiwgbV9pbnN0YW5j
ZSk7CisKKyAgICAgICAgbV9sb2NhbFNwYWNlID0gY3JlYXRlUmVmZXJlbmNlU3BhY2UoWFJfUkVG
RVJFTkNFX1NQQUNFX1RZUEVfTE9DQUwpOworICAgICAgICBtX3ZpZXdTcGFjZSA9IGNyZWF0ZVJl
ZmVyZW5jZVNwYWNlKFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX1ZJRVcpOwogICAgIH0pOwogfQog
CiB2b2lkIE9wZW5YUkRldmljZTo6cmVzZXRTZXNzaW9uKCkKIHsKLSAgICBtX3F1ZXVlLmRpc3Bh
dGNoKFt0aGlzXSgpIHsKLSAgICAgICAgaWYgKG1fc2Vzc2lvbiA9PSBYUl9OVUxMX0hBTkRMRSkK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAm
bV9xdWV1ZS5ydW5Mb29wKCkpOworICAgIGlmIChtX3Nlc3Npb24gIT0gWFJfTlVMTF9IQU5ETEUp
IHsKICAgICAgICAgeHJEZXN0cm95U2Vzc2lvbihtX3Nlc3Npb24pOwogICAgICAgICBtX3Nlc3Np
b24gPSBYUl9OVUxMX0hBTkRMRTsKLSAgICB9KTsKKyAgICB9CisgICAgbV9zZXNzaW9uU3RhdGUg
PSBYUl9TRVNTSU9OX1NUQVRFX1VOS05PV047CiB9CiAKIHZvaWQgT3BlblhSRGV2aWNlOjpzaHV0
RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKIHsKLSAgICByZXNldFNlc3Npb24oKTsKKyAgICAv
LyB4clJlcXVlc3RFeGl0U2Vzc2lvbigpIHdpbGwgdHJhbnNpdGlvbiB0aGUgc2Vzc2lvbiB0byBT
VE9QUEVEIHN0YXRlIGFuZCB0aGVuIHRoZSByZXF1ZXN0RnJhbWUoKSBtZXRob2Qgd2lsbCBjYWxs
IHJlc2V0LgorICAgIC8vIElmIHRoZSBzZXNzaW9uIHdhcyBub3QgcnVubmluZyB3ZSBoYXZlIHRv
IHJlc2V0IHRoZSBzZXNzaW9uIG91cnNlbHZlcy4KKyAgICBpZiAoWFJfRkFJTEVEKHhyUmVxdWVz
dEV4aXRTZXNzaW9uKG1fc2Vzc2lvbikpKSB7CisgICAgICAgIHJlc2V0U2Vzc2lvbigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRW5zdXJlIHRoYXQgcmVxdWVzdEZyYW1lKCkg
aXMgY2FsbGVkIGF0IGxlYXN0IG9uZSBtb3JlIHRpbWUgdG8gcHJvcGVybHkgZW5kIHRoZSBzZXNz
aW9uLgorICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldKCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXF1ZXN0RnJhbWUoW10oRnJhbWVEYXRhKSB7IH0pOworICAgIH0pOworfQorCit2
b2lkIE9wZW5YUkRldmljZTo6cG9sbEV2ZW50cygpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CisgICAgYXV0byBydW50aW1lRXZlbnQgPSBjcmVhdGVTdHJ1Y3R1cmU8WHJFdmVudERh
dGFCdWZmZXIsIFhSX1RZUEVfRVZFTlRfREFUQV9CVUZGRVI+KCk7CisgICAgd2hpbGUgKHhyUG9s
bEV2ZW50KG1faW5zdGFuY2UsICZydW50aW1lRXZlbnQpID09IFhSX1NVQ0NFU1MpIHsKKyAgICAg
ICAgc3dpdGNoIChydW50aW1lRXZlbnQudHlwZSkgeworICAgICAgICBjYXNlIFhSX1RZUEVfRVZF
TlRfREFUQV9TRVNTSU9OX1NUQVRFX0NIQU5HRUQ6IHsKKyAgICAgICAgICAgIGF1dG8qIGV2ZW50
ID0gKFhyRXZlbnREYXRhU2Vzc2lvblN0YXRlQ2hhbmdlZCopJnJ1bnRpbWVFdmVudDsKKyAgICAg
ICAgICAgIG1fc2Vzc2lvblN0YXRlID0gZXZlbnQtPnN0YXRlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfRVZFTlRTX0xPU1Q6
CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX0lOU1RBTkNFX0xPU1NfUEVORElORzoK
KyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RBVEFfUkVGRVJFTkNFX1NQQUNFX0NIQU5HRV9Q
RU5ESU5HOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZFTlRfREFUQV9JTlRFUkFDVElPTl9QUk9G
SUxFX0NIQU5HRUQ6CisgICAgICAgIGNhc2UgWFJfVFlQRV9FVkVOVF9EQVRBX01BSU5fU0VTU0lP
Tl9WSVNJQklMSVRZX0NIQU5HRURfRVhUWDoKKyAgICAgICAgY2FzZSBYUl9UWVBFX0VWRU5UX0RB
VEFfVklTSUJJTElUWV9NQVNLX0NIQU5HRURfS0hSOgorICAgICAgICBjYXNlIFhSX1RZUEVfRVZF
TlRfREFUQV9QRVJGX1NFVFRJTkdTX0VYVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCJVbmhhbmRsZWQgZXZlbnQg
dHlwZSAlZFxuIiwgcnVudGltZUV2ZW50LnR5cGUpOworICAgICAgICB9CisgICAgfQorfQorCiti
b29sIHNlc3Npb25Jc1Zpc2libGUoWHJTZXNzaW9uU3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJu
IHN0YXRlIDw9IFhSX1NFU1NJT05fU1RBVEVfRk9DVVNFRDsKK30KKworYm9vbCBzZXNzaW9uU2hv
dWxkU3RvcChYclNlc3Npb25TdGF0ZSBzdGF0ZSkKK3sKKyAgICByZXR1cm4gc3RhdGUgPj0gWFJf
U0VTU0lPTl9TVEFURV9TVE9QUElORzsKK30KKworYm9vbCBzZXNzaW9uSXNBY3RpdmUoWHJTZXNz
aW9uU3RhdGUgc3RhdGUpCit7CisgICAgcmV0dXJuIHN0YXRlID09IFhSX1NFU1NJT05fU1RBVEVf
VklTSUJMRSB8fCBzdGF0ZSA9PSBYUl9TRVNTSU9OX1NUQVRFX0ZPQ1VTRUQ7Cit9CisKK1hyUmVz
dWx0IE9wZW5YUkRldmljZTo6YmVnaW5TZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uU3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9S
RUFEWSk7CisKKyAgICBhdXRvIHNlc3Npb25CZWdpbkluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJT
ZXNzaW9uQmVnaW5JbmZvLCBYUl9UWVBFX1NFU1NJT05fQkVHSU5fSU5GTz4oKTsKKyAgICBzZXNz
aW9uQmVnaW5JbmZvLnByaW1hcnlWaWV3Q29uZmlndXJhdGlvblR5cGUgPSBYUl9WSUVXX0NPTkZJ
R1VSQVRJT05fVFlQRV9QUklNQVJZX1NURVJFTzsKKyAgICBhdXRvIHJlc3VsdCA9IHhyQmVnaW5T
ZXNzaW9uKG1fc2Vzc2lvbiwgJnNlc3Npb25CZWdpbkluZm8pOworI2lmICFMT0dfRElTQUJMRUQK
KyAgICBpZiAoWFJfRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIExPRyhYUiwgIiVzICVzOiAlc1xu
IiwgX19mdW5jX18sICJ4ckJlZ2luU2Vzc2lvbiIsIHJlc3VsdFRvU3RyaW5nKHJlc3VsdCwgbV9p
bnN0YW5jZSkudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CisKK3N0YXRpYyBEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSBYclBvc2VmVG9Qb3NlKFhyUG9zZWYg
cG9zZSkgeworICAgIERldmljZTo6RnJhbWVEYXRhOjpQb3NlIHJlc3VsdDsKKyAgICByZXN1bHQu
b3JpZW50YXRpb24gPSB7IHBvc2Uub3JpZW50YXRpb24ueCwgcG9zZS5vcmllbnRhdGlvbi55LCBw
b3NlLm9yaWVudGF0aW9uLnosIHBvc2Uub3JpZW50YXRpb24udyB9OworICAgIHJlc3VsdC5wb3Np
dGlvbiA9IHsgcG9zZS5wb3NpdGlvbi54LCBwb3NlLnBvc2l0aW9uLnksIHBvc2UucG9zaXRpb24u
eiB9OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBEZXZpY2U6OkZyYW1lRGF0YTo6
VmlldyB4clZpZXdUb1Bvc2VEYXRhKFhyVmlldyB2aWV3KQoreworICAgIERldmljZTo6RnJhbWVE
YXRhOjpWaWV3IHBvc2U7CisgICAgcG9zZS5wcm9qZWN0aW9uID0gRGV2aWNlOjpGcmFtZURhdGE6
OkZvdiB7IHZpZXcuZm92LmFuZ2xlVXAsIHZpZXcuZm92LmFuZ2xlRG93biwgdmlldy5mb3YuYW5n
bGVMZWZ0LCB2aWV3LmZvdi5hbmdsZVJpZ2h0IH07CisgICAgcG9zZS5vZmZzZXQgPSBYclBvc2Vm
VG9Qb3NlKHZpZXcucG9zZSk7CisgICAgcmV0dXJuIHBvc2U7Cit9CisKK3ZvaWQgT3BlblhSRGV2
aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAg
ICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgeworICAgICAgICBYclNlc3Npb25TdGF0ZSBvbGRTZXNzaW9uU3RhdGUgPSBtX3Nl
c3Npb25TdGF0ZTsKKyAgICAgICAgcG9sbEV2ZW50cygpOworICAgICAgICBpZiAoc2Vzc2lvblNo
b3VsZFN0b3AobV9zZXNzaW9uU3RhdGUpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogbm90aWZ5
IHdpdGggc29tZSBldmVudC4KKyAgICAgICAgICAgIHhyRW5kU2Vzc2lvbihtX3Nlc3Npb24pOwor
ICAgICAgICAgICAgcmVzZXRTZXNzaW9uKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBpZiAobV9zZXNzaW9uU3RhdGUgPT0gWFJfU0VTU0lPTl9TVEFURV9SRUFE
WSAmJiBtX3Nlc3Npb25TdGF0ZSAhPSBvbGRTZXNzaW9uU3RhdGUpCisgICAgICAgICAgICBiZWdp
blNlc3Npb24oKTsKKworICAgICAgICBhdXRvIGZyYW1lU3RhdGUgPSBjcmVhdGVTdHJ1Y3R1cmU8
WHJGcmFtZVN0YXRlLCBYUl9UWVBFX0ZSQU1FX1NUQVRFPigpOworICAgICAgICBhdXRvIGZyYW1l
V2FpdEluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZVdhaXRJbmZvLCBYUl9UWVBFX0ZSQU1F
X1dBSVRfSU5GTz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSB4cldhaXRGcmFtZShtX3Nlc3Np
b24sICZmcmFtZVdhaXRJbmZvLCAmZnJhbWVTdGF0ZSk7CisgICAgICAgIFJFVFVSTl9JRl9GQUlM
RUQocmVzdWx0LCAieHJXYWl0RnJhbWUiLCBtX2luc3RhbmNlKTsKKyAgICAgICAgWHJUaW1lIHBy
ZWRpY3RlZFRpbWUgPSBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOworCisgICAgICAg
IGF1dG8gZnJhbWVCZWdpbkluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJGcmFtZUJlZ2luSW5mbywg
WFJfVFlQRV9GUkFNRV9CRUdJTl9JTkZPPigpOworICAgICAgICByZXN1bHQgPSB4ckJlZ2luRnJh
bWUobV9zZXNzaW9uLCAmZnJhbWVCZWdpbkluZm8pOworICAgICAgICBSRVRVUk5fSUZfRkFJTEVE
KHJlc3VsdCwgInhyQmVnaW5GcmFtZSIsIG1faW5zdGFuY2UpOworCisgICAgICAgIERldmljZTo6
RnJhbWVEYXRhIGZyYW1lRGF0YSA9IHt9OworICAgICAgICBmcmFtZURhdGEucHJlZGljdGVkRGlz
cGxheVRpbWUgPSBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOworCisgICAgICAgIGlm
IChzZXNzaW9uSXNBY3RpdmUobV9zZXNzaW9uU3RhdGUpKSB7CisgICAgICAgICAgICAvLyBRdWVy
eSBoZWFkIGxvY2F0aW9uCisgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gY3JlYXRlU3RydWN0
dXJlPFhyU3BhY2VMb2NhdGlvbiwgWFJfVFlQRV9TUEFDRV9MT0NBVElPTj4oKTsKKyAgICAgICAg
ICAgIHhyTG9jYXRlU3BhY2UobV92aWV3U3BhY2UsIG1fbG9jYWxTcGFjZSwgZnJhbWVTdGF0ZS5w
cmVkaWN0ZWREaXNwbGF5VGltZSwgJmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGZyYW1lRGF0YS5p
c1RyYWNraW5nVmFsaWQgPSAobG9jYXRpb24ubG9jYXRpb25GbGFncyAmIFhSX1NQQUNFX0xPQ0FU
SU9OX09SSUVOVEFUSU9OX1ZBTElEX0JJVCkgIT0gMDsKKyAgICAgICAgICAgIGZyYW1lRGF0YS5p
c1Bvc2l0aW9uVmFsaWQgPSAobG9jYXRpb24ubG9jYXRpb25GbGFncyAmIFhSX1NQQUNFX0xPQ0FU
SU9OX1BPU0lUSU9OX1ZBTElEX0JJVCkgIT0gMDsKKyAgICAgICAgICAgIGZyYW1lRGF0YS5pc1Bv
c2l0aW9uRW11bGF0ZWQgPSAobG9jYXRpb24ubG9jYXRpb25GbGFncyAmIFhSX1NQQUNFX0xPQ0FU
SU9OX1BPU0lUSU9OX1RSQUNLRURfQklUKSA9PSAwOworCisgICAgICAgICAgICBpZiAoZnJhbWVE
YXRhLmlzVHJhY2tpbmdWYWxpZCkKKyAgICAgICAgICAgICAgICBmcmFtZURhdGEub3JpZ2luID0g
WHJQb3NlZlRvUG9zZShsb2NhdGlvbi5wb3NlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
QVNTRVJUKG1fY29uZmlndXJhdGlvblZpZXdzLmNvbnRhaW5zKG1fY3VycmVudFZpZXdDb25maWd1
cmF0aW9uVHlwZSkpOworICAgICAgICAgICAgY29uc3QgYXV0byYgY29uZmlndXJhdGlvblZpZXcg
PSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5nZXQobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBl
KTsKKworICAgICAgICAgICAgYXV0byB2aWV3TG9jYXRlSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxY
clZpZXdMb2NhdGVJbmZvLCBYUl9UWVBFX1ZJRVdfTE9DQVRFX0lORk8+KCk7CisgICAgICAgICAg
ICB2aWV3TG9jYXRlSW5mby5kaXNwbGF5VGltZSA9IHByZWRpY3RlZFRpbWU7CisgICAgICAgICAg
ICB2aWV3TG9jYXRlSW5mby5zcGFjZSA9IG1fbG9jYWxTcGFjZTsKKworICAgICAgICAgICAgdWlu
dDMyX3Qgdmlld0NvdW50ID0gY29uZmlndXJhdGlvblZpZXcuc2l6ZSgpOworICAgICAgICAgICAg
VmVjdG9yPFhyVmlldz4gdmlld3Modmlld0NvdW50LCBbXSB7CisgICAgICAgICAgICAgICAgWHJW
aWV3IG9iamVjdDsKKyAgICAgICAgICAgICAgICBzdGQ6Om1lbXNldCgmb2JqZWN0LCAwLCBzaXpl
b2YoWHJWaWV3KSk7CisgICAgICAgICAgICAgICAgb2JqZWN0LnR5cGUgPSBYUl9UWVBFX1ZJRVc7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAgICAgIH0oKSk7CisKKyAg
ICAgICAgICAgIGF1dG8gdmlld1N0YXRlID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld1N0YXRlLCBY
Ul9UWVBFX1ZJRVdfU1RBVEU+KCk7CisgICAgICAgICAgICB1aW50MzJfdCB2aWV3Q291bnRPdXRw
dXQ7CisgICAgICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZpZXdzKG1fc2Vzc2lvbiwgJnZpZXdM
b2NhdGVJbmZvLCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2aWV3Q291bnRPdXRwdXQsIHZpZXdz
LmRhdGEoKSk7CisgICAgICAgICAgICBpZiAoIVhSX0ZBSUxFRChyZXN1bHQpKSB7CisgICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiB2aWV3IDogdmlld3MpCisgICAgICAgICAgICAgICAgICAgIGZy
YW1lRGF0YS52aWV3cy5hcHBlbmQoeHJWaWV3VG9Qb3NlRGF0YSh2aWV3KSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtmcmFtZURhdGEsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgeworICAgICAgICAgICAgY2FsbGJhY2soZnJh
bWVEYXRhKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBmcmFtZUVuZEluZm8gPSBjcmVh
dGVTdHJ1Y3R1cmU8WHJGcmFtZUVuZEluZm8sIFhSX1RZUEVfRlJBTUVfRU5EX0lORk8+KCk7Cisg
ICAgICAgIGZyYW1lRW5kSW5mby5kaXNwbGF5VGltZSA9IHByZWRpY3RlZFRpbWU7CisgICAgICAg
IGZyYW1lRW5kSW5mby5lbnZpcm9ubWVudEJsZW5kTW9kZSA9IFhSX0VOVklST05NRU5UX0JMRU5E
X01PREVfT1BBUVVFOworICAgICAgICBmcmFtZUVuZEluZm8ubGF5ZXJDb3VudCA9IDA7CisgICAg
ICAgIHJlc3VsdCA9IHhyRW5kRnJhbWUobV9zZXNzaW9uLCAmZnJhbWVFbmRJbmZvKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVuZEZyYW1lIiwgbV9pbnN0YW5jZSk7Cisg
ICAgfSk7Cit9CisKK1ZlY3RvcjxEZXZpY2U6OlZpZXdEYXRhPiBPcGVuWFJEZXZpY2U6OnZpZXdz
KFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7CisgICAgVmVjdG9yPERldmljZTo6Vmlld0RhdGE+
IHZpZXdzOworICAgIGF1dG8gY29uZmlndXJhdGlvblR5cGUgPSB0b1hyVmlld0NvbmZpZ3VyYXRp
b25UeXBlKG1vZGUpOworCisgICAgaWYgKGNvbmZpZ3VyYXRpb25UeXBlID09IFhSX1ZJRVdfQ09O
RklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTykKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFj
dGl2ZSA9IHRydWUsIC5leWUgPSBFeWU6Ok5vbmUgfSk7CisgICAgZWxzZSB7CisgICAgICAgIEFT
U0VSVChjb25maWd1cmF0aW9uVHlwZSA9PSBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklN
QVJZX1NURVJFTyk7CisgICAgICAgIC8vIE9wZW5YUiBsaXN0cyBmaXJzdCB0aGUgbGVmdCBleWUg
YW5kIHRoZW4gdGhlIHJpZ2h0IGV5ZS4KKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9
IHRydWUsIEV5ZTo6TGVmdCB9KTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRy
dWUsIEV5ZTo6UmlnaHQgfSk7CisgICAgfQorICAgIHJldHVybiB2aWV3czsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgUGxhdGZvcm1YUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKaW5kZXggYWEyZjc4MGVmOTEyOTYyMGY0NDEyZGI0
OWEwZThhMDQyZDU4YjUyOS4uMmNlZmE0MGMyMTIzNzFmMDI2Y2NjYjlmZmMzY2E2ZGFkMzVhZTg2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3Jt
WFJPcGVuWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZv
cm1YUk9wZW5YUi5oCkBAIC01MiwxNCArNTIsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbGxl
Y3RDb25maWd1cmF0aW9uVmlld3MoKTsKIAogICAgIExpc3RPZkVuYWJsZWRGZWF0dXJlcyBlbnVt
ZXJhdGVSZWZlcmVuY2VTcGFjZXMoWHJTZXNzaW9uJikgY29uc3Q7CisgICAgWHJTcGFjZSBjcmVh
dGVSZWZlcmVuY2VTcGFjZShYclJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICBXZWJDb3JlOjpJ
bnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSkgZmluYWw7CiAKICAgICB2
b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSkgZmluYWw7CiAg
ICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7CisgICAgdm9pZCBp
bml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBm
aW5hbCB7IH0KIAorICAgIHZvaWQgcG9sbEV2ZW50cygpOworICAgIFhyUmVzdWx0IGJlZ2luU2Vz
c2lvbigpOwogICAgIHZvaWQgcmVzZXRTZXNzaW9uKCk7CiAKKyAgICB2b2lkIHJlcXVlc3RGcmFt
ZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKworICAgIFZlY3RvcjxWaWV3RGF0YT4g
dmlld3MoU2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOworCiAgICAgdXNpbmcgVmlld0NvbmZpZ3Vy
YXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1hcDxYclZpZXdDb25maWd1cmF0aW9uVHlwZSwgWHJW
aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIEludEhhc2g8WHJWaWV3Q29uZmlndXJhdGlvblR5
cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPj47
CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwIG1fdmlld0NvbmZpZ3VyYXRpb25Q
cm9wZXJ0aWVzOwogICAgIHVzaW5nIFZpZXdDb25maWd1cmF0aW9uVmlld3NNYXAgPSBIYXNoTWFw
PFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBWZWN0b3I8WHJWaWV3Q29uZmlndXJhdGlvblZpZXc+
LCBJbnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4+OwpAQCAtNjgsMTAgKzc2LDEzIEBAIHByaXZh
dGU6CiAgICAgWHJTeXN0ZW1JZCBtX3N5c3RlbUlkOwogICAgIFhySW5zdGFuY2UgbV9pbnN0YW5j
ZTsKICAgICBYclNlc3Npb24gbV9zZXNzaW9uIHsgWFJfTlVMTF9IQU5ETEUgfTsKKyAgICBYclNl
c3Npb25TdGF0ZSBtX3Nlc3Npb25TdGF0ZSB7IFhSX1NFU1NJT05fU1RBVEVfVU5LTk9XTiB9Owog
CiAgICAgV29ya1F1ZXVlJiBtX3F1ZXVlOwogCiAgICAgWHJWaWV3Q29uZmlndXJhdGlvblR5cGUg
bV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBlOworICAgIFhyU3BhY2UgbV9sb2NhbFNwYWNl
OworICAgIFhyU3BhY2UgbV92aWV3U3BhY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9y
bVhSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKaW5kZXggYTQ3
YzFlY2E3ZGVkY2VkYTUwNTBhZDk3YmM0N2Q4NTY1YmE1OTBlZi4uYTYxZjNiMDUwZThjZDEzNWQ4
YmNiYTgxOTEwYzEzYTZkYWY3Y2YxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFr
ZVhSRGV2aWNlLmNwcApAQCAtMzEsMTIgKzMxLDI5IEBACiAjaW5jbHVkZSAiRE9NUG9pbnRSZWFk
T25seS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIEZha2VYUlZpZXc6OnNldEZpZWxkT2ZWaWV3KEZha2VYUlZpZXdJbml0OjpGaWVsZE9m
Vmlld0luaXQgZm92KQordm9pZCBGYWtlWFJWaWV3OjpzZXRQcm9qZWN0aW9uKGNvbnN0IFZlY3Rv
cjxmbG9hdD4mIHByb2plY3Rpb24pIHsKKyAgICBzdGQ6OmNvcHkoc3RkOjpiZWdpbihwcm9qZWN0
aW9uKSwgc3RkOjplbmQocHJvamVjdGlvbiksIHN0ZDo6YmVnaW4obV9wcm9qZWN0aW9uKSk7Cit9
CisKK3ZvaWQgRmFrZVhSVmlldzo6c2V0RmllbGRPZlZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQ6
OkZpZWxkT2ZWaWV3SW5pdCYgZm92KQoreworICAgIG1fZm92ID0gUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OkZvdiB7IGRlZzJyYWQoZm92LnVwRGVncmVlcyksIGRlZzJyYWQoZm92LmRv
d25EZWdyZWVzKSwgZGVnMnJhZChmb3YubGVmdERlZ3JlZXMpLCBkZWcycmFkKGZvdi5yaWdodERl
Z3JlZXMpIH07Cit9CisKK1NpbXVsYXRlZFhSRGV2aWNlOjpTaW11bGF0ZWRYUkRldmljZSgpCisg
ICAgOiBtX2ZyYW1lVGltZXIoKnRoaXMsICZTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZp
cmVkKQogewotICAgIG1fZm92ID0gZm92OworICAgIG1fc3VwcG9ydHNPcmllbnRhdGlvblRyYWNr
aW5nID0gdHJ1ZTsKK30KKworU2ltdWxhdGVkWFJEZXZpY2U6On5TaW11bGF0ZWRYUkRldmljZSgp
Cit7CisgICAgc3RvcFRpbWVyKCk7CiB9CiAKIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNpbXVs
YXRlU2h1dGRvd25Db21wbGV0ZWQoKQpAQCAtNDksMjEgKzY2LDg5IEBAIHZvaWQgU2ltdWxhdGVk
WFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQogewogICAgIGlmIChtX3N1
cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24pCiAgICAgICAgIHNpbXVsYXRlU2h1dGRvd25Db21w
bGV0ZWQoKTsKKyAgICBzdG9wVGltZXIoKTsKIH0KIAotV2ViRmFrZVhSRGV2aWNlOjpXZWJGYWtl
WFJEZXZpY2UoKSA9IGRlZmF1bHQ7Cit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzdG9wVGltZXIo
KQoreworICAgIGlmIChtX2ZyYW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9mcmFtZVRp
bWVyLnN0b3AoKTsKK30KIAotdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNldFZpZXdzKGNvbnN0IFZl
Y3RvcjxGYWtlWFJWaWV3SW5pdD4mIHZpZXdzKQordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6ZnJh
bWVUaW1lckZpcmVkKCkKIHsKLSAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiYgZGV2aWNlVmll
d3MgPSBtX2RldmljZS52aWV3cygpOwotICAgIGRldmljZVZpZXdzLmNsZWFyKCk7CisgICAgVmVj
dG9yPEZ1bmN0aW9uPHZvaWQoKT4+IHBlbmRpbmdVcGRhdGVzOworICAgIHBlbmRpbmdVcGRhdGVz
LnN3YXAobV9wZW5kaW5nVXBkYXRlcyk7CisgICAgZm9yIChhdXRvJiB1cGRhdGUgOiBwZW5kaW5n
VXBkYXRlcykKKyAgICAgICAgdXBkYXRlKCk7CisKKyAgICBGcmFtZURhdGEgZGF0YSA9IHt9Owor
ICAgIGlmIChtX3ZpZXdlck9yaWdpbikgeworICAgICAgICBhdXRvJiBwb3NpdGlvbiA9IG1fdmll
d2VyT3JpZ2luLT5wb3NpdGlvbigpOworICAgICAgICBhdXRvJiBvcmllbnRhdGlvbiA9IG1fdmll
d2VyT3JpZ2luLT5vcmllbnRhdGlvbigpOworICAgICAgICBkYXRhLm9yaWdpbi5wb3NpdGlvbiA9
IHsgKGZsb2F0KXBvc2l0aW9uLngoKSwgKGZsb2F0KSBwb3NpdGlvbi55KCksIChmbG9hdCkgcG9z
aXRpb24ueigpIH07CisgICAgICAgIGRhdGEub3JpZ2luLm9yaWVudGF0aW9uID0geyAoZmxvYXQp
b3JpZW50YXRpb24ueCgpLCAoZmxvYXQpb3JpZW50YXRpb24ueSgpLCAoZmxvYXQpb3JpZW50YXRp
b24ueigpLCAoZmxvYXQpb3JpZW50YXRpb24udygpIH07CisgICAgICAgIGRhdGEuaXNUcmFja2lu
Z1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgZGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSB0cnVlOworICAg
IH0KIAotICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIGZvciAo
YXV0byYgdmlld0luaXQgOiB2aWV3cykgewotICAgICAgICBhdXRvIHZpZXcgPSBwYXJzZVZpZXco
dmlld0luaXQpOwotICAgICAgICBpZiAoIXZpZXcuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICBkZXZpY2VWaWV3cy5hcHBlbmQodmlldy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgZm9y
IChhdXRvJiB2aWV3OiBtX3ZpZXdzKSB7CisgICAgICAgIEZyYW1lRGF0YTo6VmlldyBwb3NlID0g
e307CisgICAgICAgIGF1dG8mIHBvc2l0aW9uID0gdmlldy0+b2Zmc2V0KCktPnBvc2l0aW9uKCk7
CisgICAgICAgIGF1dG8mIG9yaWVudGF0aW9uID0gdmlldy0+b2Zmc2V0KCktPm9yaWVudGF0aW9u
KCk7CisgICAgICAgIHBvc2Uub2Zmc2V0LnBvc2l0aW9uID0geyAoZmxvYXQpcG9zaXRpb24ueCgp
LCAoZmxvYXQpcG9zaXRpb24ueSgpLCAoZmxvYXQpcG9zaXRpb24ueigpIH07CisgICAgICAgIHBv
c2Uub2Zmc2V0Lm9yaWVudGF0aW9uID0geyAoZmxvYXQpb3JpZW50YXRpb24ueCgpLCAoZmxvYXQp
b3JpZW50YXRpb24ueSgpLCAoZmxvYXQpb3JpZW50YXRpb24ueigpLCAoZmxvYXQpb3JpZW50YXRp
b24udygpIH07CisgICAgICAgIGlmICh2aWV3LT5maWVsZE9mVmlldygpLmhhc1ZhbHVlKCkpIHsK
KyAgICAgICAgICAgIHBvc2UucHJvamVjdGlvbiA9IHsgKnZpZXctPmZpZWxkT2ZWaWV3KCkgfTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBvc2UucHJvamVjdGlvbiA9IHsgdmlldy0+
cHJvamVjdGlvbigpIH07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRhdGEudmlld3Mu
YXBwZW5kKHBvc2UpOwogICAgIH0KKworICAgIFZlY3RvcjxSZXF1ZXN0RnJhbWVDYWxsYmFjaz4g
cnVubmluZ0NhbGxiYWNrczsKKyAgICBydW5uaW5nQ2FsbGJhY2tzLnN3YXAobV9jYWxsYmFja3Mp
OworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBydW5uaW5nQ2FsbGJhY2tzKQorICAgICAgICBj
YWxsYmFjayhkYXRhKTsKK30KKwordm9pZCBTaW11bGF0ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1l
KFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9jYWxsYmFja3MuYXBw
ZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBpZiAoIW1fZnJhbWVUaW1lci5pc0FjdGl2ZSgp
KQorICAgICAgICBtX2ZyYW1lVGltZXIuc3RhcnRPbmVTaG90KDE1X21zKTsKK30KKworCitWZWN0
b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gU2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdz
KFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0IHsKKyAgICBpZiAobW9kZSA9PSBQ
bGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpIHsKKyAgICAgICAgcmV0dXJuIHsg
eyAuYWN0aXZlID0gdHJ1ZSwgUGxhdGZvcm1YUjo6RXllOjpMZWZ0IH0sIHsgLmFjdGl2ZSA9IHRy
dWUsIFBsYXRmb3JtWFI6OkV5ZTo6UmlnaHQgfSB9OworICAgIH0gZWxzZSB7CisgICAgICAgIHJl
dHVybiB7IHsgLmFjdGl2ZSA9IHRydWUsIFBsYXRmb3JtWFI6OkV5ZTo6Tm9uZSB9IH07CisgICAg
fQorfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1lKEZ1bmN0
aW9uPHZvaWQoKT4mJiBmdW5jKQoreworICAgIG1fcGVuZGluZ1VwZGF0ZXMuYXBwZW5kKFdURk1v
dmUoZnVuYykpOworfQorCisKK1dlYkZha2VYUkRldmljZTo6V2ViRmFrZVhSRGV2aWNlKCkgPSBk
ZWZhdWx0OworCit2b2lkIFdlYkZha2VYUkRldmljZTo6c2V0Vmlld3MoY29uc3QgVmVjdG9yPEZh
a2VYUlZpZXdJbml0PiYgdmlld3MpCit7CisgICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRGcmFt
ZShbJl0oKXsKKyAgICAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4mIGRldmljZVZpZXdzID0g
bV9kZXZpY2Uudmlld3MoKTsKKyAgICAgICAgZGV2aWNlVmlld3MuY2xlYXIoKTsKKworICAgICAg
ICBmb3IgKGF1dG8mIHZpZXdJbml0IDogdmlld3MpIHsKKyAgICAgICAgICAgIGF1dG8gdmlldyA9
IHBhcnNlVmlldyh2aWV3SW5pdCk7CisgICAgICAgICAgICBpZiAoIXZpZXcuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICAgICAgZGV2aWNlVmlld3MuYXBwZW5kKHZpZXcucmVsZWFzZVJldHVy
blZhbHVlKCkpOworICAgICAgICB9CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNl
OjpkaXNjb25uZWN0KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCkBAIC03Nywx
NSArMTYyLDE5IEBAIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4oRmFrZVhS
UmlnaWRUcmFuc2Zvcm1Jbml0IG9yaWdpbiwgYm9vbCBlbXVsCiAgICAgaWYgKHJpZ2lkVHJhbnNm
b3JtLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUT0RPOiBkbyBp
biBuZXh0IGFuaW1hdGlvbiBmcmFtZS4KLSAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmlnaW4ocmln
aWRUcmFuc2Zvcm0ucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAgIG1fZGV2aWNlLnNldEVtdWxh
dGVkUG9zaXRpb24oZW11bGF0ZWRQb3NpdGlvbik7CisgICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFu
c2Zvcm0+IHRyYW5zZm9ybSA9IHJpZ2lkVHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwor
CisgICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRGcmFtZShbPV0oKXsKKyAgICAgICAgbV9kZXZp
Y2Uuc2V0Vmlld2VyT3JpZ2luKHRyYW5zZm9ybSk7CisgICAgICAgIG1fZGV2aWNlLnNldEVtdWxh
dGVkUG9zaXRpb24oZW11bGF0ZWRQb3NpdGlvbik7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFr
ZVhSRGV2aWNlOjpjbGVhclZpZXdlck9yaWdpbigpCiB7Ci0gICAgLy8gVE9ETzogZG8gaW4gbmV4
dCBhbmltYXRpb24gZnJhbWUuCi0gICAgbV9kZXZpY2Uuc2V0Vmlld2VyT3JpZ2luKG51bGxwdHIp
OworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoWyZdKCl7CisgICAgICAgIG1fZGV2
aWNlLnNldFZpZXdlck9yaWdpbihudWxscHRyKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtl
WFJEZXZpY2U6OnNpbXVsYXRlVmlzaWJpbGl0eUNoYW5nZShYUlZpc2liaWxpdHlTdGF0ZSkKQEAg
LTEwMiwyMCArMTkxLDI2IEBAIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRGbG9vck9yaWdpbihG
YWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgb3JpZ2luKQogICAgIGlmIChyaWdpZFRyYW5zZm9ybS5o
YXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gVE9ETzogZG8gaW4gbmV4
dCBhbmltYXRpb24gZnJhbWUuCi0gICAgbV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4ocmlnaWRUcmFu
c2Zvcm0ucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiB0cmFuc2Zvcm0gPSByaWdpZFRyYW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKwor
ICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoWyZdKCl7CisgICAgICAgIG1fZGV2aWNl
LnNldEZsb29yT3JpZ2luKHRyYW5zZm9ybSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhS
RGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKCkKIHsKLSAgICAvLyBUT0RPOiBkbyBpbiBuZXh0IGFu
aW1hdGlvbiBmcmFtZS4KLSAgICBtX2RldmljZS5zZXRGbG9vck9yaWdpbihudWxscHRyKTsKKyAg
ICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFsmXSgpeworICAgICAgICBtX2RldmljZS5z
ZXRGbG9vck9yaWdpbihudWxscHRyKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZp
Y2U6OnNpbXVsYXRlUmVzZXRQb3NlKCkKIHsKIH0KIAorCisKIFJlZjxXZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXI+IFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24o
RmFrZVhSSW5wdXRTb3VyY2VJbml0KQogewogICAgIHJldHVybiBXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXI6OmNyZWF0ZSgpOwpAQCAtMTQ3LDIyICsyNDIsMTcgQEAgRXhjZXB0aW9uT3I8UmVmPEZh
a2VYUlZpZXc+PiBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyhjb25zdCBGYWtlWFJWaWV3SW5p
dCYgaW4KIAogICAgIGlmIChpbml0LnByb2plY3Rpb25NYXRyaXguc2l6ZSgpICE9IDE2KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Ci0gICAgZmFrZVZpZXctPnZpZXco
KS0+c2V0UHJvamVjdGlvbk1hdHJpeChpbml0LnByb2plY3Rpb25NYXRyaXgpOworICAgIGZha2VW
aWV3LT5zZXRQcm9qZWN0aW9uKGluaXQucHJvamVjdGlvbk1hdHJpeCk7CiAKICAgICBhdXRvIHZp
ZXdPZmZzZXQgPSBwYXJzZVJpZ2lkVHJhbnNmb3JtKGluaXQudmlld09mZnNldCk7CiAgICAgaWYg
KHZpZXdPZmZzZXQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB2aWV3T2Zmc2V0LnJl
bGVhc2VFeGNlcHRpb24oKTsKLSAgICBmYWtlVmlldy0+dmlldygpLT5zZXRUcmFuc2Zvcm0odmll
d09mZnNldC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgZmFrZVZpZXctPnNldE9mZnNldCh2
aWV3T2Zmc2V0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIAogICAgIGZha2VWaWV3LT5zZXRSZXNv
bHV0aW9uKGluaXQucmVzb2x1dGlvbik7CiAKICAgICBpZiAoaW5pdC5maWVsZE9mVmlldykgewog
ICAgICAgICBmYWtlVmlldy0+c2V0RmllbGRPZlZpZXcoaW5pdC5maWVsZE9mVmlldy52YWx1ZSgp
KTsKLSAgICAgICAgLy8gVE9ETzogU2V0IHZpZXfigJlzIHByb2plY3Rpb24gbWF0cml4IHRvIHRo
ZSBwcm9qZWN0aW9uIG1hdHJpeAotICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZmll
bGQgb2YgdmlldywgYW5kIGRlcHRoIHZhbHVlcyBlcXVhbCB0bwotICAgICAgICAvLyBkZXB0aE5l
YXIgYW5kIGRlcHRoRmFyIG9mIGFueSBYUlNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZp
Y2UuCi0gICAgICAgIC8vIElmIHRoZXJlIGN1cnJlbnRseSBpcyBub25lLCB1c2UgdGhlIGRlZmF1
bHQgdmFsdWVzIG9mIG5lYXI9MC4xLAotICAgICAgICAvLyBmYXI9MTAwMC4wLgogICAgIH0KIAog
ICAgIHJldHVybiBmYWtlVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmlj
ZS5oCmluZGV4IDg0N2JiY2IxNzQ0ODQ0OGYwZWM3ZThjZWIxYjZmZDZlOWZhYzk1ODguLjhkZTcx
NzU3MTZlNmNjMjRmYzJjYThjN2RkYjgwNWE1NzVlNWI5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9XZWJGYWtlWFJEZXZpY2UuaApAQCAtNDQsNDMgKzQ0LDYxIEBAIGNsYXNzIEZha2VYUlZp
ZXcgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGYWtlWFJWaWV3PiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxGYWtlWFJWaWV3PiBjcmVhdGUoWFJFeWUgZXllKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZha2VYUlZpZXcoZXllKSk7IH0KIAotICAgIFJlZlB0cjxXZWJYUlZpZXc+IHZpZXco
KSB7IHJldHVybiBtX3ZpZXc7IH0KLSAgICB2b2lkIHNldFJlc29sdXRpb24oRmFrZVhSVmlld0lu
aXQ6OkRldmljZVJlc29sdXRpb24gcmVzb2x1dGlvbikgeyBtX3Jlc29sdXRpb24gPSByZXNvbHV0
aW9uOyB9Ci0gICAgdm9pZCBzZXRGaWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZp
ZXdJbml0KTsKKyAgICBYUkV5ZSBleWUoKSBjb25zdCB7IHJldHVybiBtX2V5ZTsgfQorICAgIGNv
bnN0IFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9vZmZzZXQ7IH0KKyAgICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCAxNj4mIHByb2plY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb247IH0KKyAgICBjb25zdCBPcHRpb25hbDxQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92PiYgZmllbGRPZlZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX2Zvdjt9CiAKKyAgICB2b2lkIHNldFJlc29sdXRpb24oRmFrZVhSVmlld0luaXQ6OkRl
dmljZVJlc29sdXRpb24gcmVzb2x1dGlvbikgeyBtX3Jlc29sdXRpb24gPSByZXNvbHV0aW9uOyB9
CisgICAgdm9pZCBzZXRPZmZzZXQoUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0
KSB7IG1fb2Zmc2V0ID0gV1RGTW92ZShvZmZzZXQpOyB9CisgICAgdm9pZCBzZXRQcm9qZWN0aW9u
KGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAgICB2b2lkIHNldEZpZWxkT2ZWaWV3KGNvbnN0IEZh
a2VYUlZpZXdJbml0OjpGaWVsZE9mVmlld0luaXQmKTsKIHByaXZhdGU6Ci0gICAgRmFrZVhSVmll
dyhYUkV5ZSBleWUpCisgICAgRmFrZVhSVmlldyhYUkV5ZSBleWUpOiBtX2V5ZShleWUpCiAgICAg
ewotICAgICAgICBtX3ZpZXcgPSBXZWJYUlZpZXc6OmNyZWF0ZSgpOwotICAgICAgICBtX3ZpZXct
PnNldEV5ZShleWUpOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJYUlZpZXc+IG1fdmlldzsKKwor
ICAgIFhSRXllIG1fZXllOwogICAgIEZha2VYUlZpZXdJbml0OjpEZXZpY2VSZXNvbHV0aW9uIG1f
cmVzb2x1dGlvbjsKLSAgICBGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0IG1fZm92Owor
ICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX29mZnNldDsKKyAgICBzdGQ6OmFycmF5
PGZsb2F0LCAxNj4gbV9wcm9qZWN0aW9uOworICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpGb3Y+IG1fZm92OwogfTsKIAogY2xhc3MgU2ltdWxhdGVkWFJEZXZpY2Ug
ZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTaW11bGF0ZWRYUkRldmljZSgpIHsgbV9zdXBwb3J0c09y
aWVudGF0aW9uVHJhY2tpbmcgPSB0cnVlOyB9CisgICAgU2ltdWxhdGVkWFJEZXZpY2UoKTsKKyAg
ICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsKICAgICB2b2lkIHNldE5hdGl2ZUJvdW5kc0dlb21ldHJ5
KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4gZ2VvbWV0cnkpIHsgbV9uYXRpdmVCb3VuZHNHZW9t
ZXRyeSA9IGdlb21ldHJ5OyB9Ci0gICAgdm9pZCBzZXRWaWV3ZXJPcmlnaW4oUmVmUHRyPFdlYlhS
UmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2luKSB7IG1fdmlld2VyT3JpZ2luID0gV1RGTW92ZShvcmln
aW4pOyB9Ci0gICAgdm9pZCBzZXRGbG9vck9yaWdpbihSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiBvcmlnaW4pIHsgbV9mbG9vck9yaWdpbiA9IFdURk1vdmUob3JpZ2luKTsgfQorICAgIHZv
aWQgc2V0Vmlld2VyT3JpZ2luKGNvbnN0IFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYgb3Jp
Z2luKSB7IG1fdmlld2VyT3JpZ2luID0gb3JpZ2luOyB9CisgICAgdm9pZCBzZXRGbG9vck9yaWdp
bihjb25zdCBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mIG9yaWdpbikgeyBtX2Zsb29yT3Jp
Z2luID0gb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRFbXVsYXRlZFBvc2l0aW9uKGJvb2wgZW11bGF0
ZWQpIHsgbV9lbXVsYXRlZFBvc2l0aW9uID0gZW11bGF0ZWQ7IH0KICAgICBWZWN0b3I8UmVmPEZh
a2VYUlZpZXc+PiYgdmlld3MoKSB7IHJldHVybiBtX3ZpZXdzOyB9CiAgICAgdm9pZCBzZXRTdXBw
b3J0c1NodXRkb3duTm90aWZpY2F0aW9uKGJvb2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlv
bikgeyBtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24gPSBzdXBwb3J0c1NodXRkb3duTm90
aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CisgICAg
dm9pZCBzY2hlZHVsZU9uTmV4dEZyYW1lKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Np
b25Nb2RlKSBmaW5hbCB7IH0KICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmco
KSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9Cisg
ICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3Bh
Y2VUeXBlKSBmaW5hbCB7IH0KKyAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0
YT4gdmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0RnJh
bWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisKKyAgICB2b2lkIHN0b3BUaW1lcigp
OworICAgIHZvaWQgZnJhbWVUaW1lckZpcmVkKCk7CisKICAgICBPcHRpb25hbDxWZWN0b3I8RmFr
ZVhSQm91bmRzUG9pbnQ+PiBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5OwogICAgIFJlZlB0cjxXZWJY
UlJpZ2lkVHJhbnNmb3JtPiBtX3ZpZXdlck9yaWdpbjsKICAgICBSZWZQdHI8V2ViWFJSaWdpZFRy
YW5zZm9ybT4gbV9mbG9vck9yaWdpbjsKICAgICBib29sIG1fZW11bGF0ZWRQb3NpdGlvbiB7IGZh
bHNlIH07CiAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4gbV92aWV3czsKICAgICBib29sIG1f
c3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CisgICAgVGltZXIgbV9mcmFt
ZVRpbWVyOworICAgIFZlY3RvcjxSZXF1ZXN0RnJhbWVDYWxsYmFjaz4gbV9jYWxsYmFja3M7Cisg
ICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1VwZGF0ZXM7CiB9OwogCiBjbGFz
cyBXZWJGYWtlWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJGYWtlWFJEZXZp
Y2U+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggZTcwMjkyYzQ0ZGMzNzU0ZmYyZWNiNjk2M2Q2OGEwNTNmZjAxOGY5Ny4uNjExZDc0N2NkYmNi
ZTM5N2JmOGRkZTI4NTE1N2YxZTM1N2NlNTMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NDcsNiArMzg0Nyw4IEBAIHZvaWQgV2ViUGFn
ZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAg
ICAgbV9pcGNUZXN0aW5nQVBJRW5hYmxlZCA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6aXBjVGVzdGluZ0FQSUVuYWJsZWRLZXkoKSk7CiAjZW5kaWYKIAorICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0V2ViWFJFbmFibGVk
KHRydWUpOyAKKwogICAgIG1fcGFnZS0+c2V0VGV4dEludGVyYWN0aW9uRW5hYmxlZChzdG9yZS5n
ZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRleHRJbnRlcmFjdGlvbkVuYWJs
ZWRLZXkoKSkpOwogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikgJiYgUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dz
ZXIvd3BlL21haW4uY3BwCmluZGV4IDJhYjA0Y2UwNjFjZmZiZmNiYmM0ZTY0YzY2ODM5OTZiNjcy
YWJiY2UuLmQ0N2FjNmY5M2M4MGViZmZkMTAwYzQ3NWIwNjVjOTM1YjNkODFmOTAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci93cGUvbWFpbi5jcHAKQEAgLTI4MSw2ICsyODEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
ciAqYXJndltdKQogICAgICAgICAiZW5hYmxlLXdlYmdsIiwgVFJVRSwKICAgICAgICAgImVuYWJs
ZS1tZWRpYS1zdHJlYW0iLCBUUlVFLAogICAgICAgICAiZW5hYmxlLWVuY3J5cHRlZC1tZWRpYSIs
IFRSVUUsCisgICAgICAgICJlbmFibGUtd3JpdGUtY29uc29sZS1tZXNzYWdlcy10by1zdGRvdXQi
LCBUUlVFLAogICAgICAgICBudWxscHRyKTsKIAogICAgIGF1dG8qIGJhY2tlbmRQdHIgPSBiYWNr
ZW5kLmdldCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDQ4MTg5NjI1MjAzMzMwMTE3MjJlNmU5N2Q4ZGI4YzE4MGQ3YWFj
ZTkuLjc0NzY3NDEzMWVjNmU1ZWM1MDM3MDFkM2UyMzgzMmQ2YWFmM2Y1ZjQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMS0wMi0wMSAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdh
bGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0
UG9zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
MjI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IFdlYlhSIGdldFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKworICAgICAgICAqIHBsYXRm
b3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgorCisyMDIxLTAyLTAxICBTZXJnaW8gVmlsbGFyIFNl
bmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5k
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBDb21wbGV0ZSBYUlNlc3Npb246OnJlcXVlc3RBbmlt
YXRpb25GcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIwOTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAy
MS0wMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVh
ZGFibGVTdHJlYW0gQysrIG1ldGhvZHMgc2hvdWxkIGNoZWNrIGZvciBleGNlcHRpb24KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDg4ZTBlODczNDk1YTAwNzEwNTk3ODA3Y2VkYjMz
MTY5YzdmMDlmZmUuLmIwYTI5M2I4MDQyYjlmMjA1NjY3NjAxMjZlY2M4MzVjZGI0OTM2ODMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTAyLTAx
ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBXZWJYUiBnZXRWaWV3ZXJQb3NlIGFuZCBnZXRQb3NlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyMjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94ckZyYW1lX2dldFBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLmh0bWw6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQ
b3NlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRw
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2dldFZpZXdlclBvc2UuaHR0cHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJT
ZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZp
ZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisKKzIwMjEtMDItMDEgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxp
YS5jb20+IGFuZCBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisg
ICAgICAgIENvbXBsZXRlIFhSU2Vzc2lvbjo6cmVxdWVzdEFuaW1hdGlvbkZyYW1lIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjA5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bmFibGUgWFJTZXNzaW9uIFJBRiB0ZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTAxLTMxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY29sb3IocHJvcGhvdG8tcmdiIC4u
LikgYXMgcGFydCBvZiBDU1MgQ29sb3IgNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFBvc2UuaHR0cHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94ckZyYW1lX2dldFBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NjIz
ZDRmOGExN2Y4NWZmODI3Y2M1OGU4NTgzMzUwNGY5NjY5MjgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVf
Z2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgWFJGcmFt
ZS5nZXRQb3NlIHdvcmtzIGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMKK1BBU1MgWFJGcmFtZS5nZXRQ
b3NlIHdvcmtzIGZvciBub24taW1tZXJzaXZlIHNlc3Npb25zCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQ
b3NlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy5odG1sCmluZGV4IDFmM2UzNzY1ZGY0ZTBh
NDMxOWVhOTQ4NDJmMjM2OGU2NzM5NDhjNGMuLjMzMGI3N2U0NzBlZDk4NTE1M2Y5ZjZiMmY4ZGMw
OGZlYzc4ZTA3NzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFBv
c2UuaHR0cHMuaHRtbApAQCAtNDIsNiArNDIsNyBAQCBsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rp
b24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQpIHsKICAgICAgICAgYXNzZXJ0X21h
dHJpeF9hcHByb3hfZXF1YWxzKHRyYW5zbGF0ZWRfZnJvbV9iYXNlLnRyYW5zZm9ybS5tYXRyaXgs
IG9mZnNldC5tYXRyaXgsIEZMT0FUX0VQU0lMT04pOwogICAgICAgfSk7CiAKKwogICAgICAgLy8g
Um90YXRlIDkwIGRlZ3JlZXMgYWJvdXQgeCBheGlzLCB0aGVuIG1vdmUgMSBtZXRlciBhbG9uZyB5
IGF4aXMuCiAgICAgICBzcGFjZTEgPSBzcGFjZTEuZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UobmV3
IFhSUmlnaWRUcmFuc2Zvcm0oCiAgICAgICAgIERPTVBvaW50UmVhZE9ubHkuZnJvbVBvaW50KHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3NlX2dldFBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1l
X2dldFZpZXdlclBvc2VfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYx
YmUzOTAxMzc4ZDkwNjA1YmIyNjNkNjFiZmJlOGJkYWYyMGUwZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFt
ZV9nZXRWaWV3ZXJQb3NlX2dldFBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitQQVNTIFhSRnJhbWUgZ2V0Vmlld2VyUG9zZShyZWZTcGFjZSkgbWF0Y2hlcyBnZXRQb3Nl
KHZpZXdlciwgcmVmU3BhY2UpLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJh
bWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJh
bWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ5ZjM5MWE3NjRm
NDg4YjhmN2UzMTgyY2M4NmU4MjBiMDFmMzA1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVl
c3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKKworUEFTUyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcmVzb2x2ZXMgd2l0aCBnb29kIGRh
dGEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2dldFZpZXdlclBvc2Uu
aHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2dldFZpZXdlclBv
c2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZTY3ZGFmZWU1YzNjODEwYWQ5YTI5
YTNlZDVjY2Q5OWNhNTcwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisK
K1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9y
IG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0
ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vz
c2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV90aW1lc3RhbXAuaHR0cHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY1OGE0MjNmYzZiMTk4MTEyOTM1YmZmMjkwNzI3OGZkYTk0ZmNjNTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZyYW1lIGdldFZpZXdlclBvc2Ug
dXBkYXRlcyBvbiB0aGUgbmV4dCBmcmFtZSBmb3IgaW1tZXJzaXZlCitQQVNTIFhSRnJhbWUgZ2V0
Vmlld2VyUG9zZSB1cGRhdGVzIG9uIHRoZSBuZXh0IGZyYW1lIGZvciBub24taW1tZXJzaXZlCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vz
c2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNiNTYyMWE0ZTFiMzY4MWJjNGRlMjQ1N2Q3OWNiZjViZWQyYzg4MTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
U2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorCitQQVNTIElkZW50aXR5IHJlZmVyZW5jZSBzcGFjZSBwcm92aWRlcyBjb3JyZWN0
IHBvc2VzIGZvciBpbmxpbmUgc2Vzc2lvbnMKK1BBU1MgSWRlbnRpdHkgcmVmZXJlbmNlIHNwYWNl
IHByb3ZpZGVzIGNvcnJlY3QgcG9zZXMgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
Vmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X2V5ZXMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRjZGFjMmRlMTJhMTBjNjY5YmNiNTk4M2FhMzAyZGE1OWJiNjlmOWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKwor
UEFTUyBYUlZpZXcuZXllIGlzIGNvcnJlY3QgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBY
UlZpZXcuZXllIGlzIGNvcnJlY3QgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjExM2Y2YmM5ZTY1ZWM2ZjEzNDYxM2I5ZTJiMWY0NzFiY2EzNTk0MDUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyVmlld19tYXRjaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CisKK1BBU1MgWFJGcmFtZSBjb250YWlucyB0aGUgZXhwZWN0ZWQgdmlld3MKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZp
ZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0
cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMDIyMTU4ZjBiNWRhYzczMzFmYzZlNTg3YTAw
OTBkM2Y1OGJkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFtZXVwZGF0ZS5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJWaWV3IHByb2plY3Rpb24gbWF0cmlj
ZXMgdXBkYXRlIG5lYXIgYW5kIGZhciBkZXB0aHMgb24gdGhlIG5leHQgZnJhbWUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2Y2I0YTBkNGQ4NTAxNWQ2
NDAzMGNiYzJkMjY3YzQ4NWM1ZTNlZmY0Li4yZWVjOTkzODI2MDJlYzc4ZmRmYTAxMDAzZjhkNmUz
NGM4NDJkODI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtNjI5LDEyICs2MjksMTMgQEAgd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW8KIHdlYmtpdC5vcmcv
Yi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9y
ZXF1ZXN0U2Vzc2lvbl9ub25faW1tZXJzaXZlX25vX2dlc3R1cmUuaHR0cHMuaHRtbCBbIFBhc3Mg
XQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX29wdGlvbmFsRmVhdHVyZXMuaHR0cHMuaHRtbCBb
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSB3ZWJraXQub3JnL2IvMjE1NjM3IGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZy
YW1lLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRp
b25GcmFtZV9pbnZhbGlkaGFuZGxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8y
MDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZmVh
dHVyZXNfZGV2aWNlU3VwcG9ydC5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMjA5
ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVl
c3RBbmltYXRpb25GcmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJr
aXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJT
ZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQ
b3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8y
MDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRs
aGFybmVzcy5odHRwcy53aW5kb3cuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS94ckRldmljZV9p
c1Nlc3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlLWFyLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X2V5ZXMuaHR0cHMuaHRtbCBb
IFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0
Y2guaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9y
Zy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xM
YXllcl9jb25zdHJ1Y3Rvci5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2ZyYW1l
YnVmZmVyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9uYXZpZ2F0b3JfeHJfc2FtZU9iamVjdC5odHRwcy5odG1sIFsg
UGFzcyBdCkBAIC02NDIsNyArNjQzLDE2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fY29uc3Ry
dWN0b3IuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX2ludmVyc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX21hdHJp
eC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyU2Vzc2lvbl9lbmQuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5pbWF0aW9uRnJhbWVfaW52YWxp
ZGhhbmRsZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwgWyBQ
YXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3By
ZXZlbnRfbXVsdGlwbGVfZXhjbHVzaXZlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFt
ZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92
YWxpZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRw
cy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
U2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVl
c3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMu
aHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZW5k
ZXJfc3RhdGVfdmVydGljYWxfZm92X2ltbWVyc2l2ZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3JlbmRlcl9zdGF0ZV91cGRhdGUuaHR0
cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clNlc3Npb25fZW5kLmh0dHBzLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420125</attachid>
            <date>2021-02-12 08:16:11 -0800</date>
            <delta_ts>2021-02-15 04:34:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221225-20210212171609.patch</filename>
            <type>text/plain</type>
            <size>94252</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM4YjAyZGY0MjEwNWQy
MThjNmNkNDFhZmViOWZkODAwODkzYjYyYS4uYmMwNzIwMjI3ZDc5MWU5M2RkN2E5NDA0MGE3ZDRl
M2ZjMzQ4Y2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAyMS0wMi0xMiAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4gYW5kIEltYW5vbCBGZXJuYW5k
ZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdl
dFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQxMTI5MTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBy
b3ZlIFBsYXRmb3JtWFI6OkZyYW1lRGF0YSBzdHJ1Y3QuCisgICAgICAgIC0gSW1wbGVtZW50IFdl
YlhSRnJhbWUgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZS4KKyAgICAgICAgLSBJbXBsZW1lbnQg
V2ViWFJSZWZlcmVuY2VTcGFjZSBvZmZzZXQsIG9yaWdpbiBhbmQgZWZmZWN0aXZlIHRyYW5mb3Jt
cy4KKyAgICAgICAgLSBJbXBsZW1lbnQgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UgbmF0aXZl
T3JpZ2luLgorICAgICAgICAtIEFwcGx5IGZyYW1lIHVwZGF0ZXMgaW4gV2ViWFJTZXNzaW9uLgor
ICAgICAgICAtIEltcGxlbWVudCB2aWV3cyBmb3IgT3BlblhSIGFuZCBEdW1teUlubGluZURldmlj
ZSBpbmxpbmUgc2Vzc2lvbnMuCisgICAgICAgIC0gUXVlcnkgYW5kIGNvbXBsZXRlIGFsbCB0aGUg
bmV3IEZyYW1lRGF0YSBpbiB0aGUgT3BlblhSIHBvcnQuCisgICAgICAgIC0gQ29tcGxldGUgdGhl
IFdlYkZha2VYUkRldmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorCisg
ICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgV1BUIHRlc3RzCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVtZW50IG5hdGl2ZU9y
aWdpbmEgYW5kIGdldE9mZnNldFJlZmVyZW5jZVNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Ym91
bmRzR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSRnJhbWUuY3BwOiBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0
UG9zZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
RnJhbWU6Om11c3RQb3Nlc0JlTGltaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1l
Ojpwb3B1bGF0ZVBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Z2V0Vmlld2Vy
UG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpnZXRQb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlv
bi4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSRnJhbWU6OnNldEZyYW1lRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmlkbDogYWRkIE1heVRocm93RXhjZXB0aW9uLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuY3BwOiBBZGQgV2ViWFJSaWdpZFRyYW5zZm9ybSBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXIuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJQb3NlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJQb3NlOjpXZWJY
UlBvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlBvc2U6OmlzVmlld2VyUG9zZSBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuaWRsOiBSZW1vdmUgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQor
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVt
ZW50IG9mZnNldCwgb3JpZ2luIGFuZCBlZmZlY3RpdmUgdHJhbmZvcm1zLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmZsb29yT3JpZ2luVHJhbnNmb3Jt
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVy
ZW5jZVNwYWNlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaWRsOiBBZGQgU2tpcFZUYWJsZVZhbGlkYXRpb24uCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6IEFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZy
YW1lLiBBZGQgYWN0aXZlIHZpZXdzIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Np
b246OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVl
c3RSZWZlcmVuY2VTcGFjZSk6IFVzZSBXZWFrUHRyIGluc3RlYWQgUmVmIGZvciBXZWJYUlNlc3Np
b24uCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpwb3Nlc0NhbkJlUmVwb3J0ZWQgY29uc3QpOiBhZGQKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIG5hdGl2ZU9yaWdpbiBhbmQgZWZmZWN0aXZlT3Jp
Z2luIG1lbWJlciBmdW5jdGlvbnMuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6V2ViWFJTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJTcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNlOjppc1JlZmVyZW5jZVNwYWNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzQm91bmRlZFJlZmVyZW5jZVNw
YWNlIGNvbnN0KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOiBJ
bXBsZW1lbnQgdmlld3MgZm9yIER1bW15SW5saW5lRGV2aWNlLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjp2aWV3cyBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwOiBQYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm0gaW4gdGhlIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpXZWJYUlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJWaWV3OjpzZXRQcm9qZWN0aW9uTWF0cml4KTogVXNlIHN0ZDo6YXJyYXkgdG8gbWF0Y2ggZGV2
aWNlIGRhdGEuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSVmlldzo6cHJvamVjdGlvbk1hdHJpeCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlZpZXc6OnRyYW5zZm9ybSBjb25zdCk6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSVmlld2VyUG9zZS5jcHA6IEFkZCB2aWV3cyBzZXR0ZXIuIEFkZCBzcGVjaWFs
aXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpzZXRWaWV3cyk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSVmlld2VyUG9zZS5pZGw6IFJlbW92ZSBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LiBBZGQgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9YUkV5ZS5oOiBSZXVzZSBQbGF0Zm9ybVhSIGVudW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDogQWRkIHByb2plY3Rp
b24gbWF0cml4IHV0aWxpdHkgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6IEltcHJvdmUgRnJhbWVEYXRhLgorCisgICAgICAgICogcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOiBRdWVyeSBhbmQgY29tcGxldGUgYWxs
IHRoZSBuZXcgRnJhbWVEYXRhLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpj
cmVhdGVSZWZlcmVuY2VTcGFjZSk6IGFkZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbik6IFF1ZXJ5IHJlc29s
dXRpb24gZGF0YSBmcm9tIE9wZW5YUi4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmlj
ZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKTogSW5pdGlhbGl6ZSBsb2NhbCBhbmQg
dmlldyBYclNwYWNlcy4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6aW5pdGlh
bGl6ZVJlZmVyZW5jZVNwYWNlKTogTGF6aWx5IGluaXRpYWxpemUgc3RhZ2UgWHJTcGFjZS4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6OlhyUG9zZWZUb1Bvc2UpOiBhZGQgaGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoUGxhdGZvcm1YUjo6eHJWaWV3VG9Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlvbi4K
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKTogQ29tcGxl
dGUgYWxsIHRoZSBuZXcgZnJhbWUgRGF0YQorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2
aWNlOjp2aWV3cyBjb25zdCk6IEltcGxlbWVudCB2aWV3IGRhdGEgZm9yIE9wZW5YUgorICAgICAg
ICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmg6CisKKyAgICAgICAgKiB0
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IENvbXBsZXRlIHRoZSByZXF1aXJlZCBpbXBsZW1l
bnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6RmFrZVhSVmll
dzo6c2V0UHJvamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGYWtlWFJWaWV3OjpzZXRGaWVs
ZE9mVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Vmlld3MpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhclZpZXdlck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Rmxvb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaDoKKwogMjAyMS0wMi0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIFBhdHRlcm4gaG9sZCBhIE5hdGl2ZUltYWdlIGluc3RlYWQg
b2YgYW4gSW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDQ0ZWQ2MmJkY2Q1NmZiZTgy
Nzk0MDFlMzA2MDM4OGQ3M2Y0OTFmZC4uNzkyZWQwZTcyNGIwNzFmNmEzMmJlNzY0MDliMjAwZjEw
ODE5ZjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTI5LDI5ICsyOSw2MyBAQAogI2lm
IEVOQUJMRShXRUJYUikKIAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHkuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKKyNpbmNsdWRl
ICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZSk7CiAKLVJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4g
V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJl
ZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1Jl
ZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmIHNlc3Np
b24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiks
IHR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3Jl
YXRlKCksIHR5cGUpKTsKIH0KIAotV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4m
JiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQotICAgIDogV2ViWFJSZWZlcmVu
Y2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlwZSkKKworUmVmPFdlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlPiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdl
YlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRv
Y3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsKK30KKwor
CitXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2Uo
RG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8
V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUp
CisgICAgOiBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBX
VEZNb3ZlKG9mZnNldCksIHR5cGUpCiB7CiB9CiAKIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
Ojp+V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoKSA9IGRlZmF1bHQ7CiAKK1RyYW5zZm9ybWF0
aW9uTWF0cml4IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4oKSBjb25z
dAoreworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14
cnJlZmVyZW5jZXNwYWNldHlwZS1ib3VuZGVkLWZsb29yLgorICAgIC8vIEJvdW5kZWQgZmxvb3Ig
c3BhY2Ugc2hvdWxkIGJlIGF0IHRoZSBzYW1lIGhlaWdodCBhcyBsb2NhbCBmbG9vciBzcGFjZS4K
KyAgICByZXR1cm4gZmxvb3JPcmlnaW5UcmFuc2Zvcm0oKTsKK30KKwogY29uc3QgVmVjdG9yPFJl
ZjxET01Qb2ludFJlYWRPbmx5Pj4mIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpib3VuZHNH
ZW9tZXRyeSgpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IGdldCBkYXRhIGZyb20gZGV2aWNlCiAg
ICAgcmV0dXJuIG1fYm91bmRzR2VvbWV0cnk7CiB9CiAKKworUmVmUHRyPFdlYlhSUmVmZXJlbmNl
U3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFj
ZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0pCit7CisgICAgaWYg
KCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IEFTU0VSVChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7CisKKyAgICAv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVuY2Vz
cGFjZS1nZXRvZmZzZXRyZWZlcmVuY2VzcGFjZQorICAgIC8vIFNldCBvZmZzZXRTcGFjZeKAmXMg
b3JpZ2luIG9mZnNldCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9yaWdp
biBvZmZzZXQgYnkgb3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNlLgor
ICAgIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBvZmZzZXQgPSBXZWJYUlJpZ2lkVHJhbnNmb3Jt
OjpjcmVhdGUobV9vcmlnaW5PZmZzZXQtPnJhd1RyYW5zZm9ybSgpICogb2Zmc2V0VHJhbnNmb3Jt
LnJhd1RyYW5zZm9ybSgpKTsKKworICAgIC8vIEZJWE1FOiBzZXQgb2Zmc2V0U3BhY2XigJlzIGJv
dW5kc0dlb21ldHJ5IHRvIGJhc2XigJlzIGJvdW5kc0dlb21ldHJ5LCB3aXRoIGVhY2ggcG9pbnQg
bXVsdGlwbGllZCBieSB0aGUgaW52ZXJzZSBvZiBvcmlnaW5PZmZzZXQuCisgICAgcmV0dXJuIGNy
ZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSksIFdlYWtQ
dHI8V2ViWFJTZXNzaW9uPihtX3Nlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSk7Cit9
CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZS5oCmluZGV4IDcxYTlmOTcwYTczMDFiZDRmMDRlNGMwYmJlZTgxZWFlZWEz
ZjQ0ZDcuLjA2MjM5MTgyYWUxMTkwNGU0OGUxOGYzMGE4ZGI1ZTk5ZjM0NmMyYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3Bh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlLmgKQEAgLTI1LDEzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lmIEVO
QUJMRShXRUJYUikKKwogI2luY2x1ZGUgIldlYlhSUmVmZXJlbmNlU3BhY2UuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAotI2lmIEVOQUJMRShXRUJYUikKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBET01Qb2ludFJlYWRPbmx5OwpAQCAtMzksMTggKzM5LDI1IEBAIGNsYXNzIERPTVBvaW50
UmVhZE9ubHk7CiBjbGFzcyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSA6IHB1YmxpYyBXZWJY
UlJlZmVyZW5jZVNwYWNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSQm91bmRl
ZFJlZmVyZW5jZVNwYWNlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJl
ZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJl
ZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYsIFhSUmVmZXJl
bmNlU3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
PiBjcmVhdGUoRG9jdW1lbnQmLCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmln
aWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKCk7CiAKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBu
YXRpdmVPcmlnaW4oKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBWZWN0b3I8UmVmPERPTVBvaW50
UmVhZE9ubHk+PiYgYm91bmRzR2VvbWV0cnkoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViWFJSZWZl
cmVuY2VTcGFjZT4gZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdpZFRyYW5z
Zm9ybSYpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
KERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwor
ICAgIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNl
c3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlw
ZSk7CisKKyAgICBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgVmVjdG9yPFJlZjxET01Qb2ludFJlYWRPbmx5Pj4gbV9ib3Vu
ZHNHZW9tZXRyeTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XRUJYUlNQQUNFKFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLCBpc0JvdW5k
ZWRSZWZlcmVuY2VTcGFjZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKaW5kZXggZjI3ODc2MWIwYTdiN2Qy
OWQxNzk0MjIzNTBhMmFhMTk4YTIzYmRlYy4uYTNmNDVlMmQzNmYzMDY4MmM1M2VjYzlmYWJmNzU5
NTk4YjkxNWVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
Y3BwCkBAIC0yOCwzNSArMjgsMjI0IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRl
ICJXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oIgorI2luY2x1ZGUgIldlYlhSUmVmZXJlbmNl
U3BhY2UuaCIKICNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJYUlZpZXdl
clBvc2UuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKwogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSRnJhbWUpOwog
Ci1SZWY8V2ViWFJGcmFtZT4gV2ViWFJGcmFtZTo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYg
c2Vzc2lvbikKK1JlZjxXZWJYUkZyYW1lPiBXZWJYUkZyYW1lOjpjcmVhdGUoUmVmPFdlYlhSU2Vz
c2lvbj4mJiBzZXNzaW9uLCBib29sIGlzQW5pbWF0aW9uRnJhbWUpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJGcmFtZShXVEZNb3ZlKHNlc3Npb24pKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJGcmFtZShXVEZNb3ZlKHNlc3Npb24pLCBpc0FuaW1hdGlvbkZyYW1l
KSk7CiB9CiAKLVdlYlhSRnJhbWU6OldlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNz
aW9uKQotICAgIDogbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCitXZWJYUkZyYW1lOjpXZWJY
UkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgYm9vbCBpc0FuaW1hdGlvbkZyYW1l
KQorICAgIDogbV9Jc0FuaW1hdGlvbkZyYW1lKGlzQW5pbWF0aW9uRnJhbWUpCisgICAgLCBtX3Nl
c3Npb24oV1RGTW92ZShzZXNzaW9uKSkKIHsKIH0KIAogV2ViWFJGcmFtZTo6fldlYlhSRnJhbWUo
KSA9IGRlZmF1bHQ7CiAKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIv
I3Bvc2VzLW11c3QtYmUtbGltaXRlZAorYm9vbCBXZWJYUkZyYW1lOjptdXN0UG9zZXNCZUxpbWl0
ZWQoY29uc3QgV2ViWFJTcGFjZSYgc3BhY2UsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSkK
K3sKKyAgICBhdXRvIGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5jZVNwYWNl
ID0gW10gKGNvbnN0IFdlYlhSU3BhY2UmIHNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJikgeworCisg
ICAgICAgIGlmICghaXM8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+KHNwYWNlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBGSVhNRTogcmV0dXJuIHRydWUgd2hl
bmV2ZXIgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGJvdW5kZWQgZ2VvbWV0cnkgb2YKKyAgICAgICAg
Ly8gfHNwYWNlfCB0byB0aGUgbmF0aXZlIG9yaWdpbiBvZiB8b3RoZXJ8IHNwYWNlIGlzIGdyZWF0
ZXIgdGhhbiAxbQorICAgICAgICAvLyAoc3VnZ2VzdGVkIGJ5IHNwZWNzKS4KKworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIGlmIChpc091dHNpZGVOYXRpdmVCb3VuZHNPZkJv
dW5kZWRSZWZlcmVuY2VTcGFjZShzcGFjZSwgYmFzZVNwYWNlKQorICAgICAgICB8fCBpc091dHNp
ZGVOYXRpdmVCb3VuZHNPZkJvdW5kZWRSZWZlcmVuY2VTcGFjZShiYXNlU3BhY2UsIHNwYWNlKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIGlzTG9jYWxSZWZlcmVuY2VTcGFjZSA9
IFtdIChjb25zdCBXZWJYUlNwYWNlJiBzcGFjZSkgeworICAgICAgICBpZiAoIWlzPFdlYlhSUmVm
ZXJlbmNlU3BhY2U+KHNwYWNlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBhdXRvIHR5cGUgPSBkb3duY2FzdDxXZWJYUlJlZmVyZW5jZVNwYWNlPihzcGFjZSkudHlwZSgp
OworICAgICAgICBpZiAodHlwZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWwgfHwgdHlw
ZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vcikKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgaWYgKGlzTG9j
YWxSZWZlcmVuY2VTcGFjZShzcGFjZSkgfHwgaXNMb2NhbFJlZmVyZW5jZVNwYWNlKGJhc2VTcGFj
ZSkpIHsKKyAgICAgICAgLy8gRklYTUU6IElmIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5hdGl2ZSBv
cmlnaW5zIG9mIHNwYWNlcyBpcyBncmVhdGVyCisgICAgICAgIC8vIHRoYW4gMTVtIChzdWdnZXN0
ZWQgYnkgc3BlY3MpIHJldHVybiB0cnVlLgorICAgIH0KKworCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCisKK3N0cnVjdCBXZWJYUkZyYW1lOjpQb3B1bGF0ZWRQb3NlIHsKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uOworfTsKKwor
Ly8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcG9wdWxhdGUtdGhlLXBv
c2UKK0V4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+PiBXZWJY
UkZyYW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QgV2ViWFJTcGFjZSYgc3BhY2UsIGNvbnN0IFdlYlhS
U3BhY2UmIGJhc2VTcGFjZSkKK3sKKyAgICAvLyAxLiBJZiBmcmFtZeKAmXMgYWN0aXZlIGJvb2xl
YW4gaXMgZmFsc2UsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KKyAgICBpZiAoIW1fYWN0aXZlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIDIuIExldCBzZXNzaW9uIGJlIGZyYW1l4oCZcyBz
ZXNzaW9uIG9iamVjdC4KKyAgICAvLyAzLiBJZiBzcGFjZeKAmXMgc2Vzc2lvbiBkb2VzIG5vdCBl
cXVhbCBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCisgICAgaWYgKHNwYWNlLnNlc3Npb24oKS5nZXQoKSAhPSBtX3Nlc3Npb24ucHRyKCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAg
Ly8gNC4gSWYgYmFzZVNwYWNl4oCZcyBzZXNzaW9uIGRvZXMgbm90IGVxdWFsIHNlc3Npb24sIHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAo
YmFzZVNwYWNlLnNlc3Npb24oKS5nZXQoKSAhPSBtX3Nlc3Npb24ucHRyKCkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgLy8gNS4gQ2hlY2sg
aWYgcG9zZXMgbWF5IGJlIHJlcG9ydGVkIGFuZCwgaWYgbm90LCB0aHJvdyBhIFNlY3VyaXR5RXJy
b3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9zZXNzaW9uLT5wb3Nlc0NhbkJl
UmVwb3J0ZWQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsK
KworICAgIC8vIDYuIExldCBsaW1pdCBiZSB0aGUgcmVzdWx0IG9mIHdoZXRoZXIgcG9zZXMgbXVz
dCBiZSBsaW1pdGVkIGJldHdlZW4gc3BhY2UgYW5kIGJhc2VTcGFjZS4KKyAgICBib29sIGxpbWl0
ID0gbXVzdFBvc2VzQmVMaW1pdGVkKHNwYWNlLCBiYXNlU3BhY2UpOworCisgICAgLy8gNy4gTGV0
IHRyYW5zZm9ybSBiZSBwb3Nl4oCZcyB0cmFuc2Zvcm0uCisgICAgLy8gOC4gUXVlcnkgdGhlIFhS
IGRldmljZSdzIHRyYWNraW5nIHN5c3RlbSBmb3Igc3BhY2XigJlzIHBvc2UgcmVsYXRpdmUgdG8g
YmFzZVNwYWNlIGF0IHRoZSBmcmFtZeKAmXMgdGltZS4KKworICAgIGlmICghbV9kYXRhLmlzVHJh
Y2tpbmdWYWxpZCkgeworICAgICAgICAvLyBGSVhNRTogY2hlY2sgaWYgc3BhY2XigJlzIHBvc2Ug
cmVsYXRpdmUgdG8gYmFzZVNwYWNlIGhhcyBiZWVuIGRldGVybWluZWQgaW4gdGhlIHBhc3QuCisg
ICAgICAgIC8vIEFueXdheSB0aGlzIGVtdWxhdGlvbiBpcyB1c3VhbGx5IHByb3ZpZGVkIGJ5IHRo
ZSBzeXN0ZW0gaW4gdGhlIHBvc2UgKGUuZy4gT3BlblhSKQorICAgICAgICAvLyBzbyB3ZSBzaG91
bGRuJ3QgaGl0IHRoaXMgcGF0aCBpbiBtb3N0IFhSUGxhdGZvcm0gcG9ydHMuCisgICAgICAgIHJl
dHVybiB7IFdURjo6bnVsbG9wdCB9OworICAgIH0KIAotUmVmUHRyPFdlYlhSVmlld2VyUG9zZT4g
V2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9zZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJikKKyAg
ICBhdXRvIGJhc2VUcmFuc2Zvcm0gPSBiYXNlU3BhY2UuZWZmZWN0aXZlT3JpZ2luKCk7CisgICAg
aWYgKCFiYXNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gICpiYXNlVHJhbnNmb3JtLmludmVy
c2UoKSAqIHNwYWNlLmVmZmVjdGl2ZU9yaWdpbigpOworICAgIGNvbnN0IGJvb2wgZW11bGF0ZWRQ
b3NpdGlvbiA9IG1fZGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQgfHwgIW1fZGF0YS5pc1Bvc2l0aW9u
VmFsaWQ7CisKKyAgICBpZiAobGltaXQpIHsKKyAgICAgICAgLy8gRklYTUU6IGFwcGx5IHBvc2Ug
bGltaXRzIGxvZ2ljCisgICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHIvI3Bvc2VzLW11c3QtYmUtbGltaXRlZAorICAgIH0KKworICAgIHJldHVybiB7IFBvcHVs
YXRlZFBvc2UgeyB0cmFuc2Zvcm0sIGVtdWxhdGVkUG9zaXRpb24gfSB9OworfQorCisvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJmcmFtZS1nZXR2aWV3ZXJw
b3NlCitFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0
Vmlld2VyUG9zZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJiByZWZlcmVuY2VTcGFjZSkKIHsK
LSAgICByZXR1cm4geyB9OworICAgIC8vIDEuIExldCBmcmFtZSBiZSB0aGlzLgorICAgIC8vIDIu
IExldCBzZXNzaW9uIGJlIGZyYW1l4oCZcyBzZXNzaW9uIG9iamVjdC4KKyAgICAvLyAzLiBJZiBm
cmFtZeKAmXMgYW5pbWF0aW9uRnJhbWUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9Jc0FuaW1hdGlv
bkZyYW1lKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIC8vIDQuIExldCBwb3NlIGJlIGEgbmV3IFhSVmlld2VyUG9zZSBvYmplY3QgaW4gdGhl
IHJlbGV2YW50IHJlYWxtIG9mIHNlc3Npb24uCisgICAgLy8gNS4gUG9wdWxhdGUgdGhlIHBvc2Ug
b2Ygc2Vzc2lvbuKAmXMgdmlld2VyIHJlZmVyZW5jZSBzcGFjZSBpbiByZWZlcmVuY2VTcGFjZSBh
dCB0aGUgdGltZSByZXByZXNlbnRlZCBieSBmcmFtZSBpbnRvIHBvc2UuCisgICAgYXV0byBwb3B1
bGF0ZVBvc2VSZXN1bHQgPSBwb3B1bGF0ZVBvc2UobV9zZXNzaW9uLT52aWV3ZXJSZWZlcmVuY2VT
cGFjZSgpLCByZWZlcmVuY2VTcGFjZSk7CisgICAgaWYgKHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisKKyAgICAvLyA2LiBJZiBwb3NlIGlzIG51bGwgcmV0dXJuIG51bGwuCisgICAg
YXV0byBwb3B1bGF0ZVZhbHVlID0gcG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOworICAgIGlmICghcG9wdWxhdGVWYWx1ZS5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+IHBvc2UgPSBXZWJYUlZpZXdl
clBvc2U6OmNyZWF0ZShXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUocG9wdWxhdGVWYWx1ZS0+
dHJhbnNmb3JtKSwgcG9wdWxhdGVWYWx1ZS0+ZW11bGF0ZWRQb3NpdGlvbik7CisKKyAgICAvLyA3
LiBMZXQgeHJ2aWV3cyBiZSBhbiBlbXB0eSBsaXN0LgorICAgIFZlY3RvcjxSZWY8V2ViWFJWaWV3
Pj4geHJWaWV3czsKKyAgICAvLyA4LiBGb3IgZWFjaCBhY3RpdmUgdmlldyB2aWV3IGluIHRoZSBs
aXN0IG9mIHZpZXdzIG9uIHNlc3Npb24sIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoKKyAg
ICB1aW50MzJfdCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvJiB2aWV3IDogbV9zZXNzaW9uLT52
aWV3cygpKSB7CisgICAgICAgIGlmICghdmlldy5hY3RpdmUgfHwgbV9kYXRhLnZpZXdzLnNpemUo
KSA8PSBpbmRleCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIDguMSBMZXQg
eHJ2aWV3IGJlIGEgbmV3IFhSVmlldyBvYmplY3QgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNl
c3Npb24uCisgICAgICAgIC8vIDguMiBJbml0aWFsaXplIHhydmlld+KAmXMgdW5kZXJseWluZyB2
aWV3IHRvIHZpZXcuCisgICAgICAgIC8vIDguMyBJbml0aWFsaXplIHhydmlld+KAmXMgZXllIHRv
IHZpZXfigJlzIGV5ZS4KKyAgICAgICAgLy8gOC40IEluaXRpYWxpemUgeHJ2aWV34oCZcyBmcmFt
ZSB0aW1lIHRvIGZyYW1l4oCZcyB0aW1lLgorICAgICAgICAvLyA4LjUgSW5pdGlhbGl6ZSB4cnZp
ZXfigJlzIHNlc3Npb24gdG8gc2Vzc2lvbi4KKyAgICAgICAgLy8gOC42LiBMZXQgb2Zmc2V0IGJl
IGFuIG5ldyBYUlJpZ2lkVHJhbnNmb3JtIG9iamVjdCBlcXVhbCB0byB0aGUgdmlldyBvZmZzZXQg
b2YgdmlldyBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Ygc2Vzc2lvbi4KKyAgICAgICAgLy8gOC43
LiBTZXQgeHJ2aWV34oCZcyB0cmFuc2Zvcm0gcHJvcGVydHkgdG8gdGhlIHJlc3VsdCBvZiBtdWx0
aXBseWluZyB0aGUgWFJWaWV3ZXJQb3NlJ3MgdHJhbnNmb3JtIGJ5IHRoZSBvZmZzZXQgdHJhbnNm
b3JtIGluIHRoZSByZWxldmFudCByZWFsbSBvZiBzZXNzaW9uCisgICAgICAgIGF1dG8gb2Zmc2V0
ID0gbWF0cml4RnJvbVBvc2UobV9kYXRhLnZpZXdzW2luZGV4XS5vZmZzZXQpOworICAgICAgICBh
dXRvIHRyYW5zZm9ybSA9IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShwb3NlLT50cmFuc2Zv
cm0oKS5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldCk7CisKKyAgICAgICAgYXV0byB4clZpZXcgPSBX
ZWJYUlZpZXc6OmNyZWF0ZSh2aWV3LmV5ZSwgV1RGTW92ZSh0cmFuc2Zvcm0pKTsKKworICAgICAg
ICAvLyBTZXQgcHJvamVjdGlvbiBtYXRyaXggZm9yIGVhY2ggdmlldworICAgICAgICBzdGQ6OmFy
cmF5PGZsb2F0LCAxNj4gcHJvamVjdGlvbiA9IHN3aXRjaE9uKG1fZGF0YS52aWV3c1tpbmRleF0u
cHJvamVjdGlvbiwgWyZdKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3Ym
IGZvdikgeworICAgICAgICAgICAgY29uc3QgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJlbmRl
clN0YXRlKCkuZGVwdGhOZWFyKCk7CisgICAgICAgICAgICBjb25zdCBkb3VibGUgZmFyID0gbV9z
ZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRoRmFyKCk7CisgICAgICAgICAgICByZXR1cm4gVHJh
bnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGZvdi51cCwgZm92LmRvd24sIGZvdi5s
ZWZ0LCBmb3YucmlnaHQsIG5lYXIsIGZhcikudG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKKyAg
ICAgICAgfSwgWyZdKGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIDE2PiYgbWF0cml4KSB7CisgICAg
ICAgICAgICByZXR1cm4gbWF0cml4OworICAgICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7
CisgICAgICAgICAgICAvLyBVc2UgYXNwZWN0IHByb2plY3Rpb24gZm9yIGlubGluZSBzZXNzaW9u
cworICAgICAgICAgICAgY29uc3QgZG91YmxlIGZvdiA9ICBtX3Nlc3Npb24tPnJlbmRlclN0YXRl
KCkuaW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpLnZhbHVlT3IocGlPdmVyVHdvRG91YmxlKTsK
KyAgICAgICAgICAgIGZsb2F0IGFzcGVjdCA9IDE7CisgICAgICAgICAgICBhdXRvIGxheWVyID0g
bV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmJhc2VMYXllcigpOworICAgICAgICAgICAgaWYgKGxh
eWVyKQorICAgICAgICAgICAgICAgIGFzcGVjdCA9IChkb3VibGUpIGxheWVyLT5mcmFtZWJ1ZmZl
cldpZHRoKCkgLyAoZG91YmxlKSBsYXllci0+ZnJhbWVidWZmZXJIZWlnaHQoKTsKKyAgICAgICAg
ICAgIGNvbnN0IGRvdWJsZSBuZWFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRoTmVh
cigpOworICAgICAgICAgICAgY29uc3QgZG91YmxlIGZhciA9IG1fc2Vzc2lvbi0+cmVuZGVyU3Rh
dGUoKS5kZXB0aEZhcigpOworICAgICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
Ojpmcm9tUHJvamVjdGlvbihmb3YsIGFzcGVjdCwgbmVhciwgZmFyKS50b0NvbHVtbk1ham9yRmxv
YXRBcnJheSgpOworICAgICAgICB9KTsKKworICAgICAgICB4clZpZXctPnNldFByb2plY3Rpb25N
YXRyaXgocHJvamVjdGlvbik7CisKKyAgICAgICAgLy8gIDguOC4gQXBwZW5kIHhydmlldyB0byB4
cnZpZXdzCisgICAgICAgIHhyVmlld3MuYXBwZW5kKFdURk1vdmUoeHJWaWV3KSk7CisgICAgICAg
ICsraW5kZXg7CisgICAgfQorCisgICAgLy8gOS4gU2V0IHBvc2XigJlzIHZpZXdzIHRvIHhydmll
d3MKKyAgICBwb3NlLT5zZXRWaWV3cyhXVEZNb3ZlKHhyVmlld3MpKTsKKworICAgIC8vIDEwLiBS
ZXR1cm4gcG9zZS4KKyAgICByZXR1cm4gcG9zZTsKK30KKworRXhjZXB0aW9uT3I8UmVmUHRyPFdl
YlhSUG9zZT4+IFdlYlhSRnJhbWU6OmdldFBvc2UoY29uc3QgV2ViWFJTcGFjZSYgc3BhY2UsIGNv
bnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSkKK3sKKyAgICAvLyAxLiBMZXQgZnJhbWUgYmUgdGhp
cy4KKyAgICAvLyAyLiBMZXQgcG9zZSBiZSBhIG5ldyBYUlBvc2Ugb2JqZWN0IGluIHRoZSByZWxl
dmFudCByZWFsbSBvZiBmcmFtZS4KKyAgICAvLyAzLiBQb3B1bGF0ZSB0aGUgcG9zZSBvZiBzcGFj
ZSBpbiBiYXNlU3BhY2UgYXQgdGhlIHRpbWUgcmVwcmVzZW50ZWQgYnkgZnJhbWUgaW50byBwb3Nl
LgorCisgICAgYXV0byBwb3B1bGF0ZVBvc2VSZXN1bHQgPSBwb3B1bGF0ZVBvc2Uoc3BhY2UsIGJh
c2VTcGFjZSk7CisgICAgaWYgKHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAg
ICBhdXRvIHBvcHVsYXRlVmFsdWUgPSBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCk7CisgICAgaWYgKCFwb3B1bGF0ZVZhbHVlLmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgUmVmUHRyPFdlYlhSUG9zZT4gcG9zZSA9IFdlYlhSUG9zZTo6Y3Jl
YXRlKFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShwb3B1bGF0ZVZhbHVlLT50cmFuc2Zvcm0p
LCBwb3B1bGF0ZVZhbHVlLT5lbXVsYXRlZFBvc2l0aW9uKTsKKworICAgIC8vIDQuIFJldHVybiBw
b3NlLgorICAgIHJldHVybiBwb3NlOwogfQogCi1SZWZQdHI8V2ViWFJQb3NlPiBXZWJYUkZyYW1l
OjpnZXRQb3NlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJikKK1RyYW5zZm9y
bWF0aW9uTWF0cml4IFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKGNvbnN0IFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlJiBwb3NlKQogewotICAgIHJldHVybiB7IH07CisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OworICAgIG1hdHJpeC50cmFuc2xhdGUzZChwb3Nl
LnBvc2l0aW9uLngoKSwgcG9zZS5wb3NpdGlvbi55KCksIHBvc2UucG9zaXRpb24ueigpKTsKKyAg
ICBtYXRyaXgubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21RdWF0ZXJuaW9uKHBv
c2Uub3JpZW50YXRpb24ueCwgcG9zZS5vcmllbnRhdGlvbi55LCBwb3NlLm9yaWVudGF0aW9uLnos
IHBvc2Uub3JpZW50YXRpb24udykpOworICAgIHJldHVybiBtYXRyaXg7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgK
aW5kZXggMmEyNmFkODZhMmMzMGRhOGMyM2RmYjZjN2JiYjkwMzgyZDEyZTA1ZC4uNmE5ODdjYjVk
NjVjY2Y1ODcyMGNhN2UwNzkwOGU1ZWY1OTE3YTNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTI4LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCWFIp
CiAKICNpbmNsdWRlICJET01IaWdoUmVzVGltZVN0YW1wLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
T3IuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAt
NDQsMjMgKzQ2LDM0IEBAIGNsYXNzIFdlYlhSVmlld2VyUG9zZTsKIGNsYXNzIFdlYlhSRnJhbWUg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkZyYW1lPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChXZWJYUkZyYW1lKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNy
ZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNy
ZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmLCBib29sIGlzQW5pbWF0aW9uRnJhbWUgPSBmYWxzZSk7
CiAgICAgfldlYlhSRnJhbWUoKTsKIAogICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogCi0gICAgUmVmUHRyPFdlYlhSVmll
d2VyUG9zZT4gZ2V0Vmlld2VyUG9zZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJik7Ci0gICAg
UmVmUHRyPFdlYlhSUG9zZT4gZ2V0UG9zZShjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJT
cGFjZSYpOworICAgIGJvb2wgbXVzdFBvc2VzQmVMaW1pdGVkKGNvbnN0IFdlYlhSU3BhY2UmLCBj
b25zdCBXZWJYUlNwYWNlJik7CisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSVmlld2VyUG9z
ZT4+IGdldFZpZXdlclBvc2UoY29uc3QgV2ViWFJSZWZlcmVuY2VTcGFjZSYpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBnZXRQb3NlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25z
dCBXZWJYUlNwYWNlJik7CiAKICAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCB0
aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KKyAgICB2b2lkIHNldEZyYW1lRGF0YShQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YSYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQor
CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUpIHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0K
ICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KIAorICAgIHN0
YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXhGcm9tUG9zZShjb25zdCBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSYpOworCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdl
YlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAgZXhwbGljaXQgV2ViWFJGcmFtZShS
ZWY8V2ViWFJTZXNzaW9uPiYmLCBib29sKTsKKyAgICBXZWJYUkZyYW1lKFdlYlhSU2Vzc2lvbiYs
IGJvb2wgaXNBbmltYXRpb25GcmFtZSk7CisKKyAgICBzdHJ1Y3QgUG9wdWxhdGVkUG9zZTsKKyAg
ICBFeGNlcHRpb25PcjxPcHRpb25hbDxQb3B1bGF0ZWRQb3NlPj4gcG9wdWxhdGVQb3NlKGNvbnN0
IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CiAKICAgICBib29sIG1fYWN0aXZlIHsg
ZmFsc2UgfTsKLSAgICBET01IaWdoUmVzVGltZVN0YW1wIG1fdGltZTsKKyAgICBib29sIG1fSXNB
bmltYXRpb25GcmFtZSB7IGZhbHNlIH07CisgICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBtX3RpbWUg
eyAwIH07CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgbV9kYXRhOwogICAgIFJl
ZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaWRsCmluZGV4IDIxZmNmM2NmZTRkOWM3NWZkN2Y0NjhlNDk3ZGI4
ZTgwMDdiOGFkZjIuLjBiNDJlNjdmOWRlMjQ3MWNhODFlYTEwMWViMjA2NTkxNTFhOGIwOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbApAQCAtMzMsNiAr
MzMsNiBAQAogXSBpbnRlcmZhY2UgV2ViWFJGcmFtZSB7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBXZWJYUlNlc3Npb24gc2Vzc2lvbjsKIAotICAgIFdlYlhSVmlld2VyUG9z
ZT8gZ2V0Vmlld2VyUG9zZShXZWJYUlJlZmVyZW5jZVNwYWNlIHJlZmVyZW5jZVNwYWNlKTsKLSAg
ICBXZWJYUlBvc2U/IGdldFBvc2UoV2ViWFJTcGFjZSBzcGFjZSwgV2ViWFJTcGFjZSBiYXNlU3Bh
Y2UpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2ViWFJWaWV3ZXJQb3NlPyBnZXRWaWV3ZXJQ
b3NlKFdlYlhSUmVmZXJlbmNlU3BhY2UgcmVmZXJlbmNlU3BhY2UpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gV2ViWFJQb3NlPyBnZXRQb3NlKFdlYlhSU3BhY2Ugc3BhY2UsIFdlYlhSU3BhY2Ug
YmFzZVNwYWNlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSUG9zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5j
cHAKaW5kZXggMWM1ZjgwYTU0NDU1Y2JlOGZjYjA3MmQ1NDdiMzE5NmE5ODg3ODY1OC4uMzM5OWQ4
YWU1MDAzZTJhZTQzYzAxZTQ2YmQwMzNiMDkxM2IyODY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJQb3NlLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSUG9zZSk7CiAKLVJl
ZjxXZWJYUlBvc2U+IFdlYlhSUG9zZTo6Y3JlYXRlKCkKK1JlZjxXZWJYUlBvc2U+IFdlYlhSUG9z
ZTo6Y3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBlbXVs
YXRlZFBvc2l0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUG9zZSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJQb3NlKFdURk1vdmUodHJhbnNmb3JtKSwgZW11
bGF0ZWRQb3NpdGlvbikpOwogfQogCi1XZWJYUlBvc2U6OldlYlhSUG9zZSgpCi0gICAgOiBtX3Ry
YW5zZm9ybShXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKK1dlYlhSUG9zZTo6V2ViWFJQ
b3NlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBlbXVsYXRlZFBv
c2l0aW9uKQorICAgIDogbV90cmFuc2Zvcm0oV1RGTW92ZSh0cmFuc2Zvcm0pKSwgbV9lbXVsYXRl
ZFBvc2l0aW9uKGVtdWxhdGVkUG9zaXRpb24pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSUG9zZS5oCmluZGV4IDI5OTE5ZDI0YzM5NTNhYTM5YTJjNDg5NGJjN2NjZTVj
MjljMTdlNmEuLmVjNTc5MDY4MzE2NDI1ZDhlOTgyMzMxOTdiNjk5MGI0MThjYmExYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuaApAQCAtMjYsNyArMjYsNiBAQAog
I3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCWFIpCi0KICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CkBAIC0zOCwxNCArMzcsMTYgQEAgY2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKIGNsYXNzIFdl
YlhSUG9zZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSUG9zZT4gewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoV2ViWFJQb3NlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSUG9z
ZT4gY3JlYXRlKCk7Ci0gICAgfldlYlhSUG9zZSgpOworICAgIHN0YXRpYyBSZWY8V2ViWFJQb3Nl
PiBjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIGJvb2wgZW11bGF0ZWRQb3NpdGlv
bik7CisgICAgdmlydHVhbCB+V2ViWFJQb3NlKCk7CiAKICAgICBjb25zdCBXZWJYUlJpZ2lkVHJh
bnNmb3JtJiB0cmFuc2Zvcm0oKSBjb25zdDsKICAgICBib29sIGVtdWxhdGVkUG9zaXRpb24oKSBj
b25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdlclBvc2UoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViWFJQb3NlKCk7CisgICAgV2ViWFJQb3NlKFJl
ZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRpb24pOwogCiAgICAg
UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOwogICAgIGJvb2wgbV9lbXVsYXRl
ZFBvc2l0aW9uIHsgZmFsc2UgfTsKQEAgLTUzLDQgKzU0LDkgQEAgcHJvdGVjdGVkOgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XRUJY
UlBPU0UoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpICAgICAgICAgICAgICAgICAgICBcCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25z
dCBXZWJDb3JlOjpXZWJYUlBvc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQucHJlZGljYXRl
OyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShX
RUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3Nl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmlkbAppbmRleCA0
YzRlOWRhZGM4ZWEwYWYzMTUxODY5NDE5M2I5MjQ5NjQ0Nzg4MDI2Li4yZTViMzg2NGU1OTgyNzgy
YTc5NWNlYjliZDdjNGUxOGQ2ZGUyNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlBvc2UuaWRsCkBAIC0yOCw3ICsyOCw2IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCWFIs
CiAgICAgU2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPVdpbmRvdywKLSAgICBJbXBsZW1lbnRh
dGlvbkxhY2tzVlRhYmxlLAogICAgIEludGVyZmFjZU5hbWU9WFJQb3NlCiBdIGludGVyZmFjZSBX
ZWJYUlBvc2UgewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJSaWdp
ZFRyYW5zZm9ybSB0cmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcAppbmRleCBkNWJiMGU4MWY5MmM1ODlhYzdmYzZi
NzU3MTM2NTI1YWYwMmNhNzk2Li5jNmZjODFmYzRhYjJiYTQ0ODNjYzUzZTUzMmZkOGU5NDJkNmUw
NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJl
bmNlU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZl
cmVuY2VTcGFjZS5jcHAKQEAgLTI5LDM0ICsyOSwxMDkgQEAKICNpZiBFTkFCTEUoV0VCWFIpCiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKKyNpbmNsdWRl
ICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgY29uc3RleHByIGRvdWJsZSBEZWZhdWx0VXNlckhlaWdodEluTWV0ZXJzID0gMS42NTsK
KwogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSUmVmZXJlbmNlU3BhY2UpOwogCi1S
ZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNw
YWNlVHlwZSB0eXBlKQorUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3Bh
Y2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmIHNl
c3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlw
ZSkpOworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyc3Bh
Y2UtbmF0aXZlLW9yaWdpbgorICAgIC8vIFRoZSB0cmFuc2Zvcm0gZnJvbSB0aGUgZWZmZWN0aXZl
IHNwYWNlIHRvIHRoZSBuYXRpdmUgb3JpZ2luJ3Mgc3BhY2UgaXMKKyAgICAvLyBkZWZpbmVkIGJ5
IGFuIG9yaWdpbiBvZmZzZXQsIHdoaWNoIGlzIGFuIFhSUmlnaWRUcmFuc2Zvcm0gaW5pdGlhbGx5
IHNldAorICAgIC8vIHRvIGFuIGlkZW50aXR5IHRyYW5zZm9ybS4KKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBX
ZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSwgdHlwZSkpOwogfQogCi1XZWJYUlJlZmVyZW5j
ZVNwYWNlOjpXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQotICAgIDogV2Vi
WFJTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSkKK1JlZjxXZWJYUlJlZmVyZW5jZVNw
YWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFr
UHRyPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBv
ZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RG
TW92ZShvZmZzZXQpLCB0eXBlKSk7Cit9CisKK1dlYlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVm
ZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4mJiBz
ZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlIHR5cGUpCisgICAgOiBXZWJYUlNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24p
LCBXVEZNb3ZlKG9mZnNldCkpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KIAogV2ViWFJSZWZl
cmVuY2VTcGFjZTo6fldlYlhSUmVmZXJlbmNlU3BhY2UoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxX
ZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVu
Y2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJikKKworVHJhbnNmb3JtYXRpb25NYXRy
aXggV2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QKK3sKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eTsKKworICAgIC8vIFdlIGFzc3VtZSB0aGF0IHBvc2Vz
IGdvdCBmcm9tIHRoZSBkZXZpY2VzIGFyZSBpbiBsb2NhbCBzcGFjZS4KKyAgICAvLyBUaGlzIHdp
bGwgcmVxdWlyZSBtb3JlIGNvbXBsZXggbG9naWMgaWYgd2UgYWRkIHBvcnRzIHdpdGggZGlmZmVy
ZW50IGRlZmF1bHQgY29vcmRpbmF0ZXMuCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNl
IFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXI6IHsKKyAgICAgICAgLy8gUmV0dXJuIHRoZSBj
dXJyZW50IHBvc2UuIENvbnRlbnQgcmVuZGVyZWQgaW4gdmlld2VyIHBvc2Ugd2lsbCBzdGF5IGlu
IGZpeGVkIHBvaW50IG9uIEhNRHMuCisgICAgICAgIGF1dG8gZGF0YSA9IGZyYW1lRGF0YSgpOwor
ICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4gaWRlbnRpdHk7CisgICAgICAg
IHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9zZShkYXRhLT5vcmlnaW4pOworICAgIH0K
KyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbDoKKyAgICAgICAgLy8gRGF0YSBm
cm9tIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBpbiBsb2NhbCwgdXNlIHRoZSBpZGVudGl0eSBtYXRy
aXguCisgICAgICAgIHJldHVybiBpZGVudGl0eTsKKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VU
eXBlOjpVbmJvdW5kZWQ6CisgICAgICAgIC8vIExvY2FsIGFuZCB1bmJvdW5kZWQgdXNlIHRoZSBz
YW1lIGRldmljZSBzcGFjZSwgdXNlIHRoZSBpZGVudGl0eSBtYXRyaXguCisgICAgICAgIHJldHVy
biBpZGVudGl0eTsKKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbEZsb29yOiB7
CisgICAgICAgIC8vIFVzZSB0aGUgZmxvb3IgdHJhbnNmb3JtIHByb3ZpZGVkIGJ5IHRoZSBkZXZp
Y2Ugb3IgZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGhlaWdodC4KKyAgICAgICAgcmV0dXJuIGZsb29y
T3JpZ2luVHJhbnNmb3JtKCk7CisgICAgfQorICAgIGNhc2UgWFJSZWZlcmVuY2VTcGFjZVR5cGU6
OkJvdW5kZWRGbG9vcjoKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBCb3VuZGVkRmxvb3IgaXMg
aGFuZGxlZCBieSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSBzdWJjbGFzcworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBpZGVudGl0
eTsKK30KKworUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6
OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mIG9mZnNl
dFRyYW5zZm9ybSkKIHsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKGlzPERvY3VtZW50PihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpKTsKLSAgICByZXR1cm4gY3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pigqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKSwgbV9zZXNzaW9uLmNvcHlSZWYoKSwgbV90eXBlKTsKKwor
ICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnJlZmVy
ZW5jZXNwYWNlLWdldG9mZnNldHJlZmVyZW5jZXNwYWNlCisgICAgLy8gU2V0IG9mZnNldFNwYWNl
4oCZcyBvcmlnaW4gb2Zmc2V0IHRvIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgYmFzZeKAmXMg
b3JpZ2luIG9mZnNldCBieSBvcmlnaW5PZmZzZXQgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIGJh
c2UuCisgICAgYXV0byBvZmZzZXQgPSBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUobV9vcmln
aW5PZmZzZXQtPnJhd1RyYW5zZm9ybSgpICogb2Zmc2V0VHJhbnNmb3JtLnJhd1RyYW5zZm9ybSgp
KTsKKworICAgIHJldHVybiBjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4obV9zZXNzaW9uKSwgV1RGTW92ZShv
ZmZzZXQpLCBtX3R5cGUpOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVyZW5j
ZVNwYWNlOjpmbG9vck9yaWdpblRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgYXV0byBkYXRhID0g
ZnJhbWVEYXRhKCk7CisgICAgaWYgKCFkYXRhIHx8ICFkYXRhLT5mbG9vclRyYW5zZm9ybSkgewor
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZWZhdXRUcmFuc2Zvcm07CisgICAgICAgIGRl
ZmF1dFRyYW5zZm9ybS50cmFuc2xhdGUzZCgwLjAsIC1EZWZhdWx0VXNlckhlaWdodEluTWV0ZXJz
LCAwLjApOworICAgICAgICByZXR1cm4gZGVmYXV0VHJhbnNmb3JtOworICAgIH0KKworICAgIC8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnJlZmVyZW5jZXNw
YWNldHlwZS1sb2NhbC1mbG9vcgorICAgIC8vIEdldCBmbG9vciBlc3RpbWF0aW9uIGZyb20gdGhl
IGRldmljZQorICAgIC8vIEZJWE1FOiBSb3VuZCB0byBuZWFyZXN0IDFjbSB0byBwcmV2ZW50IGZp
bmdlcnByaW50aW5nCisgICAgcmV0dXJuIFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKCpkYXRh
LT5mbG9vclRyYW5zZm9ybSk7CiB9CiAKK09wdGlvbmFsPGNvbnN0IFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhJj4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6ZnJhbWVEYXRhKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gbV9zZXNzaW9uLT5mcmFtZURhdGEoKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCmluZGV4IGEyYzgwNTFmNTljMjI3ZDg3
Nzc5NWMyYmI4ZjZlNzM2M2RlOGYzZTMuLjU5MGU5NTk1MTgzZmM3YjY4YmJjYzU1ODY1Mzg4OWRi
Mjc4ZWU2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJS
ZWZlcmVuY2VTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJS
ZWZlcmVuY2VTcGFjZS5oCkBAIC00MCwxOCArNDAsMjkgQEAgY2xhc3MgV2ViWFJTZXNzaW9uOwog
Y2xhc3MgV2ViWFJSZWZlcmVuY2VTcGFjZSA6IHB1YmxpYyBXZWJYUlNwYWNlIHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSUmVmZXJlbmNlU3BhY2UpOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViWFJS
ZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYs
IFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSUmVmZXJlbmNlU3Bh
Y2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJS
aWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgdmlydHVhbCB+
V2ViWFJSZWZlcmVuY2VTcGFjZSgpOwogCi0gICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+
IGdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKTsKKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBnZXRPZmZzZXRSZWZlcmVuY2VT
cGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJik7CisgICAgWFJSZWZlcmVuY2VTcGFjZVR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2Vi
WFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFhSUmVmZXJl
bmNlU3BhY2VUeXBlKTsKKyAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgV2Vha1B0
cjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5j
ZVNwYWNlVHlwZSk7CisKKyAgICBib29sIGlzUmVmZXJlbmNlU3BhY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmbG9vck9yaWdpblRy
YW5zZm9ybSgpIGNvbnN0OworCisgICAgT3B0aW9uYWw8Y29uc3QgUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGEmPiBmcmFtZURhdGEoKSBjb25zdDsKIAogICAgIFhSUmVmZXJlbmNlU3BhY2VU
eXBlIG1fdHlwZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XRUJYUlNQQUNFKFdlYlhSUmVmZXJlbmNlU3BhY2UsIGlzUmVmZXJlbmNlU3Bh
Y2UoKSkKKwogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsCmluZGV4IDI4MzUwN2Y0NDVh
NTJmZTJlMTcxOTY2ZjUwNzNiYzEzYjQ5ZmM1M2IuLjgxZTQ0ZDM0ZGExNjdiOGZlNmRiMjM0YzI0
MGM5Mzg1NjM1MjU5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJSZWZlcmVuY2VTcGFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbApAQCAtMzAsNiArMzAsNyBAQAogICAgIEV4cG9zZWQ9
V2luZG93LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTR2VuZXJhdGVUb05hdGl2
ZU9iamVjdCwKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKICAgICBJbnRlcmZhY2VOYW1lPVhS
UmVmZXJlbmNlU3BhY2UKIF0gaW50ZXJmYWNlIFdlYlhSUmVmZXJlbmNlU3BhY2UgOiBXZWJYUlNw
YWNlIHsKICAgICBbTmV3T2JqZWN0XSBXZWJYUlJlZmVyZW5jZVNwYWNlIGdldE9mZnNldFJlZmVy
ZW5jZVNwYWNlKFdlYlhSUmlnaWRUcmFuc2Zvcm0gb3JpZ2luT2Zmc2V0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBiZDZjNTAxY2I3ZWM1
YTcxY2I3YTcwN2IxOTk5ZmQ5YmE5Mjg4YjJjLi5lMjY5MWYzMWVjMDYyNmQ0ZjVkZDNlNjA1ZTQw
M2Q3OGUwYjVjMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uY3BwCkBAIC0yOCwxMSArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpT
V2ViWFJSZWZlcmVuY2VTcGFjZS5oIgogI2luY2x1ZGUgIldlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlLmgiCiAjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlhSU3lzdGVtLmgi
CisjaW5jbHVkZSAiV2ViWFJWaWV3LmgiCiAjaW5jbHVkZSAiWFJGcmFtZVJlcXVlc3RDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIlhSUmVuZGVyU3RhdGVJbml0LmgiCiAjaW5jbHVkZSAiWFJTZXNzaW9u
RXZlbnQuaCIKQEAgLTU1LDcgKzU3LDkgQEAgV2ViWFJTZXNzaW9uOjpXZWJYUlNlc3Npb24oRG9j
dW1lbnQmIGRvY3VtZW50LCBXZWJYUlN5c3RlbSYgc3lzdGVtLCBYUlNlc3Npb25Nb2QKICAgICAs
IG1fbW9kZShtb2RlKQogICAgICwgbV9kZXZpY2UobWFrZVdlYWtQdHIoZGV2aWNlKSkKICAgICAs
IG1fYWN0aXZlUmVuZGVyU3RhdGUoV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRlKG1vZGUpKQorICAg
ICwgbV92aWV3ZXJSZWZlcmVuY2VTcGFjZShXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9j
dW1lbnQsIG1ha2VXZWFrUHRyKCp0aGlzKSwgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlcikp
CiAgICAgLCBtX3RpbWVPcmlnaW4oTW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgLCBtX3ZpZXdz
KGRldmljZS52aWV3cyhtb2RlKSkKIHsKICAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVRyYWNraW5n
QW5kUmVuZGVyaW5nKG1vZGUpOwogICAgIG1fZGV2aWNlLT5zZXRUcmFja2luZ0FuZFJlbmRlcmlu
Z0NsaWVudChtYWtlV2Vha1B0cigqdGhpcykpOwpAQCAtMjMwLDkgKzIzNCw5IEBAIHZvaWQgV2Vi
WFJTZXNzaW9uOjpyZXF1ZXN0UmVmZXJlbmNlU3BhY2UoWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlw
ZSwgUmVxdWVzdFJlZmVyCiAgICAgICAgICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0
aHViLmlvL3dlYnhyLyNjcmVhdGUtYS1yZWZlcmVuY2Utc3BhY2UKICAgICAgICAgICAgIFJlZlB0
cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiByZWZlcmVuY2VTcGFjZTsKICAgICAgICAgICAgIGlmICh0
eXBlID09IFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpCb3VuZGVkRmxvb3IpCi0gICAgICAgICAgICAg
ICAgcmVmZXJlbmNlU3BhY2UgPSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRv
Y3VtZW50LCBtYWtlUmVmKCp0aGlzKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNl
U3BhY2UgPSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtl
V2Vha1B0cigqdGhpcyksIHR5cGUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHJlZmVyZW5jZVNwYWNlID0gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBt
YWtlUmVmKCp0aGlzKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlU3BhY2UgPSBX
ZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VXZWFrUHRyKCp0aGlzKSwg
dHlwZSk7CiAKICAgICAgICAgICAgIC8vIDIuNS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggcmVmZXJl
bmNlU3BhY2UuCiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUocmVmZXJlbmNlU3BhY2UucmVs
ZWFzZU5vbk51bGwoKSk7CkBAIC00NzgsMTMgKzQ4MiwxNSBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6
b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gUXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2lu
ZyBzdGVwcy4KLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3Vy
Y2U6OldlYlhSLCBbdGhpcywgZnJhbWVEYXRhID0gV1RGTW92ZShmcmFtZURhdGEpXSgpIHsKKyAg
ICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBb
dGhpcywgZnJhbWVEYXRhID0gV1RGTW92ZShmcmFtZURhdGEpXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAobV9lbmRlZCkKICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2ZyYW1lRGF0
YSA9IGZyYW1lRGF0YTsKICAgICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0aGUgY3VycmVudCBoaWdo
IHJlc29sdXRpb24gdGltZS4KICAgICAgICAgYXV0byBub3cgPSAoTW9ub3RvbmljVGltZTo6bm93
KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25kcygpOwogCi0gICAgICAgIGF1dG8gZnJhbWUg
PSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigqdGhpcykpOworICAgICAgICBhdXRvIGZyYW1l
ID0gV2ViWFJGcmFtZTo6Y3JlYXRlKG1ha2VSZWYoKnRoaXMpLCB0cnVlIC8qaXNBbmltYXRpb25G
cmFtZSovKTsKICAgICAgICAgLy8gIDIuTGV0IGZyYW1lIGJlIHNlc3Npb27igJlzIGFuaW1hdGlv
biBmcmFtZS4KICAgICAgICAgLy8gIDMuU2V0IGZyYW1l4oCZcyB0aW1lIHRvIGZyYW1lVGltZS4K
ICAgICAgICAgZnJhbWUtPnNldFRpbWUoc3RhdGljX2Nhc3Q8RE9NSGlnaFJlc1RpbWVTdGFtcD4o
ZnJhbWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1lKSk7CkBAIC01MDgsNyArNTE0LDcgQEAgdm9p
ZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBm
cmFtZURhdGEpCiAgICAgICAgICAgICBmcmFtZS0+c2V0QWN0aXZlKHRydWUpOwogCiAgICAgICAg
ICAgICAvLyA2LjQuQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCi0gICAgICAgICAgICAv
LyBGSVhNRTogaW1wbGVtZW50LgorICAgICAgICAgICAgZnJhbWUtPnNldEZyYW1lRGF0YShXVEZN
b3ZlKGZyYW1lRGF0YSkpOwogCiAgICAgICAgICAgICAvLyA2LjUuRm9yIGVhY2ggZW50cnkgaW4g
c2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUgY2Fs
bGJhY2tzLCBpbiBvcmRlcjoKICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxs
YmFja3MpIHsKQEAgLTUzNyw2ICs1NDMsMzAgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgfSk7CiB9CiAK
Ky8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Bvc2VzLW1heS1iZS1y
ZXBvcnRlZAorYm9vbCBXZWJYUlNlc3Npb246OnBvc2VzQ2FuQmVSZXBvcnRlZCgpIGNvbnN0Cit7
CisgICAgLy8gMS4gTGV0IGRvY3VtZW50IGJlIHRoZSBkb2N1bWVudCB0aGF0IG93bnMgc2Vzc2lv
bi4KKyAgICAvLyAyLiBJZiB0aGUgcmVxdWVzdCBkb2VzIG5vdCBvcmlnaW5hdGUgZnJvbSBkb2N1
bWVudCwgcmV0dXJuIGZhbHNlLgorICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gMy4gSWYgZG9jdW1lbnQgaXMgbm90IGFjdGl2ZSBh
bmQgZm9jdXNlZCwgcmV0dXJuIGZhbHNlLgorICAgIGlmICghZG9jdW1lbnQtPmhhc0ZvY3VzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIDQuIElmIHNlc3Npb24ncyB2aXNpYmls
aXR5U3RhdGUgaW4gbm90ICJ2aXNpYmxlIiwgcmV0dXJuIGZhbHNlLgorICAgIGlmIChtX3Zpc2li
aWxpdHlTdGF0ZSAhPSBYUlZpc2liaWxpdHlTdGF0ZTo6VmlzaWJsZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gNS4gRGV0ZXJtaW5lIGlmIHRoZSBwb3NlIGRhdGEgY2FuIGJlIHJl
dHVybmVkIGFzIGZvbGxvd3M6CisgICAgLy8gVGhlIHByb2NlZHVyZSBpbiB0aGUgc3BlY3MgdHJp
ZXMgdG8gZW5zdXJlIHRoYXQgd2UgYXBwbHkgbWVhc3VyZXMgdG8KKyAgICAvLyBwcmV2ZW50IGZp
bmdlcnByaW50aW50IGluIHBvc2UgZGF0YSBhbmQgcmV0dXJuIGZhbHNlIGluIGNhc2Ugd2UgZG9u
J3QuCisgICAgLy8gV2UncmUgZ29pbmcgdG8gYXBwbHkgdGhlbSBzbyBsZXQncyBqdXN0IHJldHVy
biB0cnVlLgorICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uaAppbmRleCBkODM2M2E1YzkzMWNmNTBmN2I2ZTMxOWFlZWRiM2U4YTIzMzRm
ZWU1Li42YTlhNzdhNDY4ZmQxYWI1ZGZiYTE4ZGIyOGFjNGE3Y2ViZTQ3NTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKQEAgLTUwLDYgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgWFJGcmFtZVJlcXVlc3RDYWxsYmFjazsKIGNsYXNz
IFdlYlhSUmVmZXJlbmNlU3BhY2U7CiBjbGFzcyBXZWJYUlN5c3RlbTsKK2NsYXNzIFdlYlhSVmll
dzsKIHN0cnVjdCBYUlJlbmRlclN0YXRlSW5pdDsKIAogY2xhc3MgV2ViWFJTZXNzaW9uIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJTZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBQbGF0Zm9ybVhSOjpU
cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCB7CkBAIC05MCw2ICs5MSwxMSBAQCBwdWJsaWM6CiAK
ICAgICBYUlNlc3Npb25Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KIAorICAg
IGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmIHZpZXdlclJlZmVyZW5jZVNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3ZXJSZWZlcmVuY2VTcGFjZS5nZXQoKTsgfQorICAgIGNvbnN0IFZlY3Rv
cjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiYgdmlld3MoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXdzOyB9CisgICAgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmIGZyYW1l
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVEYXRhOyB9CisgICAgYm9vbCBwb3Nlc0NhbkJl
UmVwb3J0ZWQoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJYUlNlc3Npb24oRG9jdW1lbnQm
LCBXZWJYUlN5c3RlbSYsIFhSU2Vzc2lvbk1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYpOwogCkBA
IC0xMjgsMTEgKzEzNCwxNSBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8UGxhdGZvcm1YUjo6RGV2
aWNlPiBtX2RldmljZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9hY3RpdmVSZW5k
ZXJTdGF0ZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9wZW5kaW5nUmVuZGVyU3Rh
dGU7CisgICAgUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IG1fdmlld2VyUmVmZXJlbmNlU3BhY2U7
CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPcmlnaW47CiAKICAgICB1bnNpZ25lZCBtX25leHRD
YWxsYmFja0lkIHsgMSB9OwogICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJlcXVlc3RDYWxsYmFjaz4+
IG1fY2FsbGJhY2tzOwogCisgICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+
IG1fdmlld3M7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEgbV9mcmFtZURhdGE7
CisKICAgICBkb3VibGUgbV9taW5pbXVtSW5saW5lRk9WIHsgMC4wIH07CiAgICAgZG91YmxlIG1f
bWF4aW11bUlubGluZUZPViB7IHBpRmxvYXQgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTcGFjZS5jcHAKaW5kZXggNTI0MjU0ZmE0Njc3YjhkYjE1MjM1NTA2MjhkM2E3
OWU2OTIyNjkxNC4uNDA1ZGQ5ZjJmNWM4Nzc4Yjg2ZDkwOTQ3MWVjYjA4ZTYwZDE2YzRlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwCkBAIC0yOCw3ICsy
OCw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJET01Qb2ludFJlYWRPbmx5
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJYUlJpZ2lkVHJhbnNmb3Jt
LmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KIApAQCAtMzYsMTQgKzM4LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSU3BhY2UpOwogCi1XZWJYUlNwYWNlOjpXZWJY
UlNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uKQor
V2ViWFJTcGFjZTo6V2ViWFJTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8V2ViWFJT
ZXNzaW9uPiYmIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCkKICAg
ICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZkb2N1bWVudCkKICAgICAsIG1fc2Vzc2lv
bihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9vcmlnaW5PZmZzZXQoV1RGTW92ZShvZmZzZXQp
KQogewogfQogCiBXZWJYUlNwYWNlOjp+V2ViWFJTcGFjZSgpID0gZGVmYXVsdDsKIAorCitUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4oKSBjb25zdAorewor
ICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyc3BhY2UtZWZm
ZWN0aXZlLW9yaWdpbgorICAgIC8vIFRoZSBlZmZlY3RpdmUgb3JpZ2luIGNhbiBiZSBvYnRhaW5l
ZCBieSBtdWx0aXBseWluZyBvcmlnaW4gb2Zmc2V0IGFuZCB0aGUgbmF0aXZlIG9yaWdpbi4KKyAg
ICByZXR1cm4gbV9vcmlnaW5PZmZzZXQtPnJhd1RyYW5zZm9ybSgpICogbmF0aXZlT3JpZ2luKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKaW5kZXggN2YxYzRlOTc0
NzM5YTcwY2M0YjBjMGIxY2ViZjE4ZTVmYjg0OTkwZC4uNDI1NWYwODNjMWI5Njk1YTAxMzI1ZmUx
MmIyMWRiZDM0N2JlZjhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNw
YWNlLmgKQEAgLTI5LDEyICsyOSwxNCBAQAogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CitjbGFzcyBXZWJYUlJpZ2lkVHJhbnNmb3JtOwogY2xhc3MgV2ViWFJTZXNzaW9uOwogCiBj
bGFzcyBXZWJYUlNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJTcGFjZT4sIHB1YmxpYyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIgewpAQCAtNDIsMTYgKzQ0LDI0IEBAIGNsYXNzIFdlYlhSU3BhY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJYUlNwYWNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhCiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+V2ViWFJTcGFjZSgpOwogCisgICAgY29uc3QgV2Vha1B0cjxXZWJYUlNl
c3Npb24+JiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uOyB9CisgICAgdmlydHVh
bCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCA9IDA7CisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggZWZmZWN0aXZlT3JpZ2luKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJTcGFjZT46OnJlZjsKICAgICB1c2luZyBS
ZWZDb3VudGVkPFdlYlhSU3BhY2U+OjpkZXJlZjsKIAogcHJvdGVjdGVkOgotICAgIFdlYlhSU3Bh
Y2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBXZWJYUlNwYWNlKERvY3Vt
ZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYm
KTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgIFJlZjxX
ZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNz
aW9uOworICAgIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX29yaWdpbk9mZnNldDsKIAogcHJp
dmF0ZToKICAgICAvLyBFdmVudFRhcmdldApAQCAtNjIsNCArNzIsOSBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
RUJYUlNQQUNFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpXZWJYUlNwYWNlJiBjb250ZXh0KSB7IHJldHVybiBjb250
ZXh0LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJT
eXN0ZW0uY3BwCmluZGV4IDg1MDYyZmQ1M2Q2ZjBkMmFkODk1ZWY4ZDNiZDFlMDk5YWEwYjNkOGMu
LmEyNmM2MjY1OGMwNzVhNjFhNmNjOGZiZmI3MjlhY2IxNWU4OTlhYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCkBAIC01MjEsMTIgKzUyMSwyMSBA
QCB2b2lkIFdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6cmVxdWVzdEZyYW1lKFBsYXRm
b3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHJh
ZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOjpjcmVhdGUoKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhIGRhdGE7CisgICAgICAgIGRhdGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKKyAg
ICAgICAgZGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSB0cnVlOworICAgICAgICBkYXRhLnZpZXdzLmFw
cGVuZCh7IH0pOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGRhdGEpKTsKICAgICB9KTsKIAog
ICAgIGRvY3VtZW50LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmFmKTsKIH0KIAorVmVjdG9yPFBs
YXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmlj
ZTo6dmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4geyB7IC5hY3RpdmUg
PSB0cnVlLCBQbGF0Zm9ybVhSOjpFeWU6Ok5vbmUgfSB9OworfQorCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCmlu
ZGV4IDFkZThiNzViNzk1MDY3ZjMxYTA5YmNjNjcwNzBjZGIxOGM2ZjJhZTcuLjEwMjRkMGY1YTRm
M2MxZjZiNDFhZGY3Zjk2YmQ4M2NjMzg0YWQwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTExMSw5ICsxMTEsMTAgQEAgcHJpdmF0ZToKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0
Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9CiAgICAgICAgIHZvaWQgc2h1dERvd25UcmFj
a2luZ0FuZFJlbmRlcmluZygpIGZpbmFsIHsgfQotICAgICAgICB2b2lkIGluaXRpYWxpemVSZWZl
cmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfTsKKyAg
ICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNl
U3BhY2VUeXBlKSBmaW5hbCB7IH0KIAogICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9y
bVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOworICAgICAgICBWZWN0
b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7CiAg
ICAgfTsKICAgICBEdW1teUlubGluZURldmljZSBtX2RlZmF1bHRJbmxpbmVEZXZpY2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcAppbmRleCAxYTk4Y2IxNDUw
NDU5ZmYyNjU2MzhmNThkZjQ4YmI0ZmNjZmYzMGJlLi5jZjZiMjM4NWY4NDcyZDRjNDdkNzVlZTZl
YmU3MWIxYWUzNmFhN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZp
ZXcuY3BwCkBAIC0zNiwyMyArMzYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJWaWV3KTsKIAotUmVmPFdlYlhSVmlldz4gV2ViWFJW
aWV3OjpjcmVhdGUoKQorUmVmPFdlYlhSVmlldz4gV2ViWFJWaWV3OjpjcmVhdGUoWFJFeWUgZXll
LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0pCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJWaWV3KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlZp
ZXcoZXllLCBXVEZNb3ZlKHRyYW5zZm9ybSkpKTsKIH0KIAotV2ViWFJWaWV3OjpXZWJYUlZpZXco
KQotICAgIDogbV9leWUoWFJFeWU6Ok5vbmUpCitXZWJYUlZpZXc6OldlYlhSVmlldyhYUkV5ZSBl
eWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkKKyAgICA6IG1fZXllKGV5
ZSkKKyAgICAsIG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSkKIHsKIH0KIAotV2ViWFJW
aWV3Ojp+V2ViWFJWaWV3KCkgPSBkZWZhdWx0OwotCi12b2lkIFdlYlhSVmlldzo6c2V0UHJvamVj
dGlvbk1hdHJpeChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBtYXRyaXgpCit2b2lkIFdlYlhSVmlldzo6
c2V0UHJvamVjdGlvbk1hdHJpeChjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCAxNj4mIHByb2plY3Rp
b24pCiB7Ci0gICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUobWF0
cml4LmRhdGEoKSwgbWF0cml4LnNpemUoKSk7CisgICAgbV9wcm9qZWN0aW9uID0gRmxvYXQzMkFy
cmF5OjpjcmVhdGUocHJvamVjdGlvbi5kYXRhKCksIHByb2plY3Rpb24uc2l6ZSgpKTsKIH0KIAor
V2ViWFJWaWV3Ojp+V2ViWFJWaWV3KCkgPSBkZWZhdWx0OworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlZpZXcuaAppbmRleCAzOWEwOWNlMTBiYWFhMmMyNzk3Yzg3NTU3MzcxYzJiZjc4OGFj
NGU1Li4yNTk3YjA1MjY5MmI1MzI5NmJiOGVhNmM2MTc5NzI5ODc0ZTExODBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKQEAgLTM3LDI4ICszNywyNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdlYlhSRnJhbWU7CiBjbGFzcyBXZWJYUlJpZ2lk
VHJhbnNmb3JtOwogCiBjbGFzcyBXZWJYUlZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlZp
ZXc+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChXZWJYUlZpZXcsIFdFQkNP
UkVfRVhQT1JUKTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFdlYlhS
Vmlldz4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxXZWJYUlZpZXc+
IGNyZWF0ZShYUkV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5XZWJYUlZpZXcoKTsKIAogICAgIFhSRXllIGV5ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXllOyB9Ci0gICAgY29uc3QgRmxvYXQzMkFycmF5JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3Qg
eyByZXR1cm4gKm1fcHJvamVjdGlvbk1hdHJpeDsgfQotICAgIGNvbnN0IFdlYlhSUmlnaWRUcmFu
c2Zvcm0mIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuICptX3RyYW5zZm9ybTsgfQorICAgIGNv
bnN0IEZsb2F0MzJBcnJheSYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuICptX3By
b2plY3Rpb247IH0KKyAgICBjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiB0cmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX3RyYW5zZm9ybS5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRFeWUoWFJF
eWUgZXllKSB7IG1fZXllID0gZXllOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcm9q
ZWN0aW9uTWF0cml4KGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLSAgICB2b2lkIHNldFRyYW5zZm9y
bShSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB2aWV3T2Zmc2V0KSB7IG1fdHJhbnNmb3Jt
ID0gV1RGTW92ZSh2aWV3T2Zmc2V0KTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJv
amVjdGlvbk1hdHJpeChjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCAxNj4mKTsKIAogcHJpdmF0ZToK
LSAgICBXZWJYUlZpZXcoKTsKKyAgICBXZWJYUlZpZXcoWFJFeWUsIFJlZjxXZWJYUlJpZ2lkVHJh
bnNmb3JtPiYmKTsKIAogICAgIFhSRXllIG1fZXllOwotICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+
IG1fcHJvamVjdGlvbk1hdHJpeDsKLSAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV90
cmFuc2Zvcm07CisgICAgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOworICAg
IFJlZlB0cjxGbG9hdDMyQXJyYXk+IG1fcHJvamVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJW
aWV3ZXJQb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQ
b3NlLmNwcAppbmRleCA2MDYzYzk1ZjM2NDNhZGFiMGEyODFkYTg4YjNjYmFlNjVhNzk3YjA5Li5l
NDllNmM3ODc0YWQzMjNmNWY1ODU5MzM0YzI3N2JiM2JhZTJmMWEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuY3BwCkBAIC0yNSwxNyArMjUs
MjQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlhSVmlld2VyUG9zZS5o
IgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKICNpZiBFTkFCTEUoV0VCWFIp
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYlhSVmlld2VyUG9zZT4gV2ViWFJWaWV3
ZXJQb3NlOjpjcmVhdGUoKQorV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSVmlld2Vy
UG9zZSk7CisKK1JlZjxXZWJYUlZpZXdlclBvc2U+IFdlYlhSVmlld2VyUG9zZTo6Y3JlYXRlKFJl
ZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBlbXVsYXRlZFBvc2l0aW9u
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmlld2VyUG9zZShXVEZNb3ZlKHRy
YW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pKTsKK30KKworV2ViWFJWaWV3ZXJQb3NlOjpXZWJY
UlZpZXdlclBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29sIGVt
dWxhdGVkUG9zaXRpb24pCisgICAgOiBXZWJYUlBvc2UoV1RGTW92ZSh0cmFuc2Zvcm0pLCBlbXVs
YXRlZFBvc2l0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmlld2VyUG9z
ZSk7CiB9CiAKLVdlYlhSVmlld2VyUG9zZTo6V2ViWFJWaWV3ZXJQb3NlKCkgPSBkZWZhdWx0Owog
V2ViWFJWaWV3ZXJQb3NlOjp+V2ViWFJWaWV3ZXJQb3NlKCkgPSBkZWZhdWx0OwogCiBjb25zdCBW
ZWN0b3I8UmVmPFdlYlhSVmlldz4+JiBXZWJYUlZpZXdlclBvc2U6OnZpZXdzKCkgY29uc3QKQEAg
LTQzLDYgKzUwLDExIEBAIGNvbnN0IFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4mIFdlYlhSVmlld2Vy
UG9zZTo6dmlld3MoKSBjb25zdAogICAgIHJldHVybiBtX3ZpZXdzOwogfQogCit2b2lkIFdlYlhS
Vmlld2VyUG9zZTo6c2V0Vmlld3MoVmVjdG9yPFJlZjxXZWJYUlZpZXc+PiYmIHZpZXdzKQorewor
ICAgIG1fdmlld3MgPSBXVEZNb3ZlKHZpZXdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJWaWV3ZXJQb3NlLmgKaW5kZXggYTRlZDI1YjEwYzI1MzE5YTZlOTIxODUyODA2
NGU1MWM4ZDRkOGYyMC4uZTlmMGEzOWQ4NWI3ZWFjZTcwMTNjYTE4NDI5ZDJiM2NiYjgwZGNhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5oCkBA
IC0zNywxOCArMzcsMjQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViWFJWaWV3
ZXJQb3NlIDogcHVibGljIFdlYlhSUG9zZSB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChX
ZWJYUlZpZXdlclBvc2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJWaWV3ZXJQb3Nl
PiBjcmVhdGUoKTsKLSAgICB+V2ViWFJWaWV3ZXJQb3NlKCk7CisgICAgc3RhdGljIFJlZjxXZWJY
UlZpZXdlclBvc2U+IGNyZWF0ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVs
YXRlZFBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIH5XZWJYUlZpZXdlclBvc2UoKTsKIAogICAgIGNv
bnN0IFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4mIHZpZXdzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRW
aWV3cyhWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiYpOwogCiBwcml2YXRlOgotICAgIFdlYlhSVmll
d2VyUG9zZSgpOworICAgIFdlYlhSVmlld2VyUG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4m
JiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKKworICAgIGJvb2wgaXNWaWV3ZXJQb3NlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgVmVjdG9yPFJlZjxXZWJYUlZpZXc+PiBt
X3ZpZXdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dFQlhSUE9TRShXZWJYUlZpZXdlclBvc2UsIGlzVmlld2VyUG9zZSgpKQorCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlZpZXdlclBvc2UuaWRsCmluZGV4IGQxYmViMmMwODZmODliZmFmZGY1ZTBiZjFmOTVjMGY0
OGM2MDc2MTMuLjZhNzZkZTg0MzU0OWZiZjA2M2QwYmE1ZDQxMTNhMDE1Mjk1MGIyZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5pZGwKQEAg
LTI4LDcgKzI4LDggQEAKICAgICBDb25kaXRpb25hbD1XRUJYUiwKICAgICBTZWN1cmVDb250ZXh0
LAogICAgIEV4cG9zZWQ9V2luZG93LAotICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisg
ICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAog
ICAgIEludGVyZmFjZU5hbWU9WFJWaWV3ZXJQb3NlCiBdIGludGVyZmFjZSBXZWJYUlZpZXdlclBv
c2UgOiBXZWJYUlBvc2UgewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRnJv
emVuQXJyYXk8V2ViWFJWaWV3PiB2aWV3czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvWFJFeWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJFeWUu
aAppbmRleCBlYTFlYTdlMWU3ZDgyMjYzMjVmNjBjODI2ZmZmYmMwYjliYTRkNjZmLi5mOWEzNDNi
ZGE0NDc0OTdmNmRkYTU0NDk5MDhlNGQ5OWQ5ZmM5N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1hSRXllLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9YUkV5ZS5oCkBAIC0yNywxMyArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAor
I2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNs
YXNzIFhSRXllIHsKLSAgICBOb25lLAotICAgIExlZnQsCi0gICAgUmlnaHQsCi19OwordXNpbmcg
WFJFeWUgPSBQbGF0Zm9ybVhSOjpFeWU7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBhN2U0ZTAxNDJjNGEzNGE1
ZWFkZDc5NzNmNGRiNDcyNTg1M2RmMGMxLi43MTRiOWMyNDM3ZGI4MWZhZTRhY2I4MWNjMDk4MzNm
NDdmNzVlNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAt
NjAwLDYgKzYwMCwzNCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6ZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksCiAgICAgICAgIDAsIDAsIDAs
IDEpOwogfQogCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpm
cm9tUHJvamVjdGlvbihkb3VibGUgZm92VXAsIGRvdWJsZSBmb3ZEb3duLCBkb3VibGUgZm92TGVm
dCwgZG91YmxlIGZvdlJpZ2h0LCBkb3VibGUgbmVhciwgZG91YmxlIGZhcikKK3sKKyAgICBjb25z
dCBkb3VibGUgdXBUYW4gPSB0YW4oZm92VXApOworICAgIGNvbnN0IGRvdWJsZSBkb3duVGFuID0g
dGFuKGZvdkRvd24pOworICAgIGNvbnN0IGRvdWJsZSBsZWZ0VGFuID0gdGFuKGZvdkxlZnQpOwor
ICAgIGNvbnN0IGRvdWJsZSByaWdodFRhbiA9IHRhbihmb3ZSaWdodCk7CisgICAgY29uc3QgZG91
YmxlIHhTY2FsZSA9IDIuMCAvIChsZWZ0VGFuICsgcmlnaHRUYW4pOworICAgIGNvbnN0IGRvdWJs
ZSB5U2NhbGUgPSAyLjAgLyAodXBUYW4gKyBkb3duVGFuKTsKKyAgICBjb25zdCBkb3VibGUgaW52
RGVwdGggPSAxLjAgLyAobmVhciAtIGZhcik7CisKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXgoeFNjYWxlLCAwLjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCB5U2NhbGUsIDAu
MGYsIDAuMGYsCisgICAgICAgIChsZWZ0VGFuIC0gcmlnaHRUYW4pICogeFNjYWxlICogLTAuNSwg
KHVwVGFuIC0gZG93blRhbikgKiB5U2NhbGUgKiAwLjUsIChuZWFyICsgZmFyKSAqIGludkRlcHRo
LCAtMS4wZiwKKyAgICAgICAgMC4wZiwgMC4wZiwgKDIuMGYgKiBmYXIgKiBuZWFyKSAqIGludkRl
cHRoLCAwLjBmKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRpb25NYXRy
aXg6OmZyb21Qcm9qZWN0aW9uKGRvdWJsZSBmb3Z5LCBkb3VibGUgYXNwZWN0LCBkb3VibGUgbmVh
ciwgZG91YmxlIGZhcikKK3sKKyAgICBjb25zdCBkb3VibGUgZiA9IDEuMGYgLyB0YW5mKGZvdnkg
LyAyKTsKKyAgICBjb25zdCBkb3VibGUgaW52RGVwdGggPSAxLjBmIC8gKG5lYXIgLSBmYXIpOwor
CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KGYgLyBhc3BlY3QsIDAuMGYsIDAuMGYs
IDAuMGYsCisgICAgICAgIDAuMGYsIGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIDAuMGYs
IChmYXIgKyBuZWFyKSAqIGludkRlcHRoLCAtMS4wZiwKKyAgICAgICAgMC4wZiwgMC4wZiwgKDIu
MGYgKiBmYXIgKiBuZWFyKSAqIGludkRlcHRoLCAwLjBmKTsKK30KKwogVHJhbnNmb3JtYXRpb25N
YXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZShkb3VibGUgcykKIHsKICAgICByZXR1
cm4gc2NhbGVOb25Vbmlmb3JtKHMsIHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oCmluZGV4IDYwMGU3ZDBiMWNlMjZhN2MyNDIxZDU4NTYxY2M1NzRiMDRhMTdiMjkuLjVlOGFi
NWI2MTM0NjViMjdmYjQxNjEyZTQ4YWRjMTY4NDQ4ZWNhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmgKQEAgLTEyMSw2ICsxMjEsMTAgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21RdWF0ZXJuaW9uKGRvdWJsZSBxeCwgZG91Ymxl
IHF5LCBkb3VibGUgcXosIGRvdWJsZSBxdyk7CiAKKyAgICAvLyBGaWVsZCBvZiB2aWV3IGluIHJh
ZGlhbnMKKyAgICBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVByb2plY3Rpb24oZG91
YmxlIGZvdlVwLCBkb3VibGUgZm92RG93biwgZG91YmxlIGZvdkxlZnQsIGRvdWJsZSBmb3ZSaWdo
dCwgZG91YmxlIG5lYXIsIGRvdWJsZSBmYXIpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBmcm9tUHJvamVjdGlvbihkb3VibGUgZm92eSwgZG91YmxlIGFzcGVjdCwgZG91YmxlIG5l
YXIsIGRvdWJsZSBmYXIpOworCiAgICAgc3RhdGljIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5OwogCiAgICAgdm9pZCBzZXRNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3Vi
bGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaAppbmRleCA0MzI1ZjMzNzVjZjMwMjhhNDdkZmZjYzZkZjU5YmI3NDM4
MzUwMGQ1Li5lMzcyMWQ4ODZlYTk5YTBkZjkwODJlNThlMjU1Y2QzMmQwZjdkZThiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNDMs
NiArNDQsMTIgQEAgZW51bSBjbGFzcyBSZWZlcmVuY2VTcGFjZVR5cGUgewogICAgIFVuYm91bmRl
ZAogfTsKIAorZW51bSBjbGFzcyBFeWUgeworICAgIE5vbmUsCisgICAgTGVmdCwKKyAgICBSaWdo
dCwKK307CisKICNpZiBFTkFCTEUoV0VCWFIpCiAKIGNsYXNzIFRyYWNraW5nQW5kUmVuZGVyaW5n
Q2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50
PiB7CkBAIC03OSwyOSArODYsNTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplUmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSA9IDA7CiAKICAgICBzdHJ1Y3Qg
RnJhbWVEYXRhIHsKLSAgICAgICAgbG9uZyBwcmVkaWN0ZWREaXNwbGF5VGltZTsKLSAgICAgICAg
c3RydWN0IFZpZXdEYXRhIHsKLSAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAg
V2ViQ29yZTo6RmxvYXRQb2ludDNEIHBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHN0cnVjdCB7
Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHg7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0
IHk7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHo7Ci0gICAgICAgICAgICAgICAgICAgIGZs
b2F0IHc7Ci0gICAgICAgICAgICAgICAgfSBvcmllbnRhdGlvbjsKLSAgICAgICAgICAgIH0gcG9z
ZTsKLSAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgclVwOwotICAg
ICAgICAgICAgICAgIGZsb2F0IHJEb3duOwotICAgICAgICAgICAgICAgIGZsb2F0IHJMZWZ0Owot
ICAgICAgICAgICAgICAgIGZsb2F0IHJSaWdodDsKLSAgICAgICAgICAgIH0gZm92OworICAgICAg
ICBzdHJ1Y3QgRmxvYXRRdWF0ZXJuaW9uIHsKKyAgICAgICAgICAgIGZsb2F0IHggeyAwLjBmIH07
CisgICAgICAgICAgICBmbG9hdCB5IHsgMC4wZiB9OworICAgICAgICAgICAgZmxvYXQgeiB7IDAu
MGYgfTsKKyAgICAgICAgICAgIGZsb2F0IHcgeyAxLjBmIH07CisgICAgICAgIH07CisKKyAgICAg
ICAgc3RydWN0IFBvc2UgeworICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludDNEIHBvc2l0
aW9uOworICAgICAgICAgICAgRmxvYXRRdWF0ZXJuaW9uIG9yaWVudGF0aW9uOwogICAgICAgICB9
OwotICAgICAgICBWZWN0b3I8Vmlld0RhdGE+IHZpZXdQb3NlczsKKworICAgICAgICBzdHJ1Y3Qg
Rm92IHsKKyAgICAgICAgICAgIC8vIEluIHJhZGlhbnMKKyAgICAgICAgICAgIGZsb2F0IHVwIHsg
MC4wZiB9OworICAgICAgICAgICAgZmxvYXQgZG93biB7IDAuMGYgfTsKKyAgICAgICAgICAgIGZs
b2F0IGxlZnQgeyAwLjBmIH07CisgICAgICAgICAgICBmbG9hdCByaWdodCB7IDAuMGYgfTsKKyAg
ICAgICAgfTsKKworICAgICAgICB1c2luZyBQcm9qZWN0aW9uID0gVmFyaWFudDxGb3YsIHN0ZDo6
YXJyYXk8ZmxvYXQsIDE2Piwgc3RkOjpudWxscHRyX3Q+OworCisgICAgICAgIHN0cnVjdCBWaWV3
IHsKKyAgICAgICAgICAgIFBvc2Ugb2Zmc2V0OworICAgICAgICAgICAgUHJvamVjdGlvbiBwcm9q
ZWN0aW9uID0geyBudWxscHRyIH07CisgICAgICAgIH07CisKKyAgICAgICAgYm9vbCBpc1RyYWNr
aW5nVmFsaWQgeyBmYWxzZSB9OworICAgICAgICBib29sIGlzUG9zaXRpb25WYWxpZCB7IGZhbHNl
IH07CisgICAgICAgIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkIHsgZmFsc2UgfTsKKyAgICAgICAg
bG9uZyBwcmVkaWN0ZWREaXNwbGF5VGltZSB7IDAgfTsKKyAgICAgICAgUG9zZSBvcmlnaW47Cisg
ICAgICAgIE9wdGlvbmFsPFBvc2U+IGZsb29yVHJhbnNmb3JtOworICAgICAgICBWZWN0b3I8Vmll
dz4gdmlld3M7CisgICAgfTsKKworICAgIHN0cnVjdCBWaWV3RGF0YSB7CisgICAgICAgIGJvb2wg
YWN0aXZlIHsgZmFsc2UgfTsKKyAgICAgICAgRXllIGV5ZSB7IEV5ZTo6Tm9uZSB9OwogICAgIH07
CisKKyAgICB2aXJ0dWFsIFZlY3RvcjxWaWV3RGF0YT4gdmlld3MoU2Vzc2lvbk1vZGUpIGNvbnN0
ID0gMDsKKwogICAgIHVzaW5nIFJlcXVlc3RGcmFtZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChG
cmFtZURhdGEmJik+OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1l
Q2FsbGJhY2smJikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgRGV2aWNlKCkgPSBkZWZhdWx0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1Y
Uk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1Y
Uk9wZW5YUi5jcHAKaW5kZXggY2M0ZDcyMTUzYzZlZWFmZGYyMTYyZTk4ODJhOWUwNzc1OGIyMWRm
Ny4uZDM2NjcxMDY3NzkxYzQ0NGM0ZTM3OGFmODliMTQ3NzljOWY0ZmIxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNw
cApAQCAtMjk5LDYgKzI5OSwyOCBAQCBEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVu
WFJEZXZpY2U6OmVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mCiAgICAgcmV0dXJu
IGVuYWJsZWRGZWF0dXJlczsKIH0KIAorWHJTcGFjZSBPcGVuWFJEZXZpY2U6OmNyZWF0ZVJlZmVy
ZW5jZVNwYWNlKFhyUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKCZSdW5M
b29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKKyAgICBBU1NFUlQobV9zZXNz
aW9uICE9IFhSX05VTExfSEFORExFKTsKKyAgICBBU1NFUlQobV9pbnN0YW5jZSAhPSBYUl9OVUxM
X0hBTkRMRSk7CisKKyAgICBYclBvc2VmIGlkZW50aXR5UG9zZSA9IHsKKyAgICAgICAgLm9yaWVu
dGF0aW9uID0geyAueCA9IDAsIC55ID0gMCwgLnogPSAwLCAudyA9IDEuMCB9LAorICAgICAgICAu
cG9zaXRpb24gPSB7IC54ID0gMCwgLnkgPSAwLCAueiA9IDAgfQorICAgIH07CisKKyAgICBhdXRv
IHNwYWNlQ3JlYXRlSW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclJlZmVyZW5jZVNwYWNlQ3JlYXRl
SW5mbywgWFJfVFlQRV9SRUZFUkVOQ0VfU1BBQ0VfQ1JFQVRFX0lORk8+KCk7CisgICAgc3BhY2VD
cmVhdGVJbmZvLnJlZmVyZW5jZVNwYWNlVHlwZSA9IHR5cGU7CisgICAgc3BhY2VDcmVhdGVJbmZv
LnBvc2VJblJlZmVyZW5jZVNwYWNlID0gaWRlbnRpdHlQb3NlOworCisgICAgWHJTcGFjZSBzcGFj
ZTsKKyAgICBhdXRvIHJlc3VsdCA9IHhyQ3JlYXRlUmVmZXJlbmNlU3BhY2UobV9zZXNzaW9uLCAm
c3BhY2VDcmVhdGVJbmZvLCAmc3BhY2UpOworICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAi
eHJDcmVhdGVSZWZlcmVuY2VTcGFjZSIsIG1faW5zdGFuY2UsIFhSX05VTExfSEFORExFKTsKKwor
ICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RTdXBwb3J0
ZWRTZXNzaW9uTW9kZXMoKQogewogICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZt
X3F1ZXVlLnJ1bkxvb3AoKSk7CkBAIC0zNjgsMTUgKzM5MCw2IEBAIHZvaWQgT3BlblhSRGV2aWNl
Ojpjb2xsZWN0Q29uZmlndXJhdGlvblZpZXdzKCkKICAgICB9CiB9CiAKLVdlYkNvcmU6OkludFNp
emUgT3BlblhSRGV2aWNlOjpyZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUgbW9kZSkK
LXsKLSAgICBhdXRvIGNvbmZpZ1R5cGUgPSBtb2RlID09IFNlc3Npb25Nb2RlOjpJbmxpbmUgPyBY
Ul9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX01PTk8gOiBYUl9WSUVXX0NPTkZJR1VS
QVRJT05fVFlQRV9QUklNQVJZX1NURVJFTzsKLSAgICBhdXRvIHZpZXdzSXRlcmF0b3IgPSBtX2Nv
bmZpZ3VyYXRpb25WaWV3cy5maW5kKGNvbmZpZ1R5cGUpOwotICAgIGlmICh2aWV3c0l0ZXJhdG9y
ICE9IG1fY29uZmlndXJhdGlvblZpZXdzLmVuZCgpKQotICAgICAgICByZXR1cm4geyBzdGF0aWNf
Y2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZhbHVlWzBdLnJlY29tbWVuZGVkSW1hZ2VSZWN0V2lk
dGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZhbHVlWzBdLnJlY29tbWVuZGVk
SW1hZ2VSZWN0SGVpZ2h0KSB9OwotICAgIHJldHVybiBEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1
dGlvbihtb2RlKTsKLX0KLQogWHJWaWV3Q29uZmlndXJhdGlvblR5cGUgdG9YclZpZXdDb25maWd1
cmF0aW9uVHlwZShTZXNzaW9uTW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewpAQCAt
NDAwLDYgKzQxMywxNSBAQCBzdGF0aWMgYm9vbCBpc1Nlc3Npb25SZWFkeShYclNlc3Npb25TdGF0
ZSBzdGF0ZSkKICAgICByZXR1cm4gc3RhdGUgPj0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSAgJiYg
c3RhdGUgPCBYUl9TRVNTSU9OX1NUQVRFX1NUT1BQSU5HOwogfQogCitXZWJDb3JlOjpJbnRTaXpl
IE9wZW5YUkRldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlIG1vZGUpCit7
CisgICAgYXV0byBjb25maWdUeXBlID0gdG9YclZpZXdDb25maWd1cmF0aW9uVHlwZShtb2RlKTsK
KyAgICBhdXRvIHZpZXdzSXRlcmF0b3IgPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5maW5kKGNvbmZp
Z1R5cGUpOworICAgIGlmICh2aWV3c0l0ZXJhdG9yICE9IG1fY29uZmlndXJhdGlvblZpZXdzLmVu
ZCgpKQorICAgICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZh
bHVlWzBdLnJlY29tbWVuZGVkSW1hZ2VSZWN0V2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdz
SXRlcmF0b3ItPnZhbHVlWzBdLnJlY29tbWVuZGVkSW1hZ2VSZWN0SGVpZ2h0KSB9OworICAgIHJl
dHVybiBEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihtb2RlKTsKK30KKwogdm9pZCBPcGVu
WFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2Rl
KQogewogICAgIG1fcXVldWUuZGlzcGF0Y2goW3RoaXMsIG1vZGVdKCkgewpAQCAtNDE0LDYgKzQz
Niw5IEBAIHZvaWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmco
U2Vzc2lvbk1vZGUgbW9kZSkKICAgICAgICAgc2Vzc2lvbkNyZWF0ZUluZm8uc3lzdGVtSWQgPSBt
X3N5c3RlbUlkOwogICAgICAgICBhdXRvIHJlc3VsdCA9IHhyQ3JlYXRlU2Vzc2lvbihtX2luc3Rh
bmNlLCAmc2Vzc2lvbkNyZWF0ZUluZm8sICZtX3Nlc3Npb24pOwogICAgICAgICBSRVRVUk5fSUZf
RkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIiwg
bV9pbnN0YW5jZSk7CisKKyAgICAgICAgbV9sb2NhbFNwYWNlID0gY3JlYXRlUmVmZXJlbmNlU3Bh
Y2UoWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfTE9DQUwpOworICAgICAgICBtX3ZpZXdTcGFjZSA9
IGNyZWF0ZVJlZmVyZW5jZVNwYWNlKFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX1ZJRVcpOwogICAg
IH0pOwogfQogCkBAIC00NTcsNiArNDgyLDEyIEBAIHZvaWQgT3BlblhSRGV2aWNlOjpzaHV0RG93
blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKICAgICB9KTsKIH0KIAordm9pZCBPcGVuWFJEZXZpY2U6
OmluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUg
c3BhY2VUeXBlKQoreworICAgIGlmICgoc3BhY2VUeXBlID09IFJlZmVyZW5jZVNwYWNlVHlwZTo6
TG9jYWxGbG9vciB8fCBzcGFjZVR5cGUgPT0gUmVmZXJlbmNlU3BhY2VUeXBlOjpCb3VuZGVkRmxv
b3IpICYmIG1fc3RhZ2VTcGFjZSA9PSBYUl9OVUxMX0hBTkRMRSkKKyAgICAgICAgbV9zdGFnZVNw
YWNlID0gY3JlYXRlUmVmZXJlbmNlU3BhY2UoWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfU1RBR0Up
OworfQorCiB2b2lkIE9wZW5YUkRldmljZTo6d2FpdFVudGlsU3RvcHBpbmcoKQogewogICAgIEFT
U0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CkBAIC01MjYs
MTQgKzU1NywyMCBAQCB2b2lkIE9wZW5YUkRldmljZTo6ZW5kU2Vzc2lvbigpCiAgICAgfSk7CiB9
CiAKK3N0YXRpYyBEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSBYclBvc2VmVG9Qb3NlKFhyUG9zZWYg
cG9zZSkKK3sKKyAgICBEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSByZXN1bHQ7CisgICAgcmVzdWx0
Lm9yaWVudGF0aW9uID0geyBwb3NlLm9yaWVudGF0aW9uLngsIHBvc2Uub3JpZW50YXRpb24ueSwg
cG9zZS5vcmllbnRhdGlvbi56LCBwb3NlLm9yaWVudGF0aW9uLncgfTsKKyAgICByZXN1bHQucG9z
aXRpb24gPSB7IHBvc2UucG9zaXRpb24ueCwgcG9zZS5wb3NpdGlvbi55LCBwb3NlLnBvc2l0aW9u
LnogfTsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCi1EZXZpY2U6OkZyYW1lRGF0YTo6Vmlld0Rh
dGEgeHJWaWV3VG9WaWV3RGF0YShYclZpZXcgdmlldykKK3N0YXRpYyBEZXZpY2U6OkZyYW1lRGF0
YTo6VmlldyB4clZpZXdUb1Bvc2UoWHJWaWV3IHZpZXcpCiB7Ci0gICAgRGV2aWNlOjpGcmFtZURh
dGE6OlZpZXdEYXRhIGRhdGE7Ci0gICAgZGF0YS5mb3YgPSB7IHZpZXcuZm92LmFuZ2xlVXAsIHZp
ZXcuZm92LmFuZ2xlRG93biwgdmlldy5mb3YuYW5nbGVMZWZ0LCB2aWV3LmZvdi5hbmdsZVJpZ2h0
IH07Ci0gICAgZGF0YS5wb3NlLm9yaWVudGF0aW9uID0geyB2aWV3LnBvc2Uub3JpZW50YXRpb24u
eCwgdmlldy5wb3NlLm9yaWVudGF0aW9uLnksIHZpZXcucG9zZS5vcmllbnRhdGlvbi56LCB2aWV3
LnBvc2Uub3JpZW50YXRpb24udyB9OwotICAgIGRhdGEucG9zZS5wb3NpdGlvbiA9IHsgdmlldy5w
b3NlLnBvc2l0aW9uLngsIHZpZXcucG9zZS5wb3NpdGlvbi55LCB2aWV3LnBvc2UucG9zaXRpb24u
eiB9OwotICAgIHJldHVybiBkYXRhOworICAgIERldmljZTo6RnJhbWVEYXRhOjpWaWV3IHBvc2U7
CisgICAgcG9zZS5wcm9qZWN0aW9uID0gRGV2aWNlOjpGcmFtZURhdGE6OkZvdiB7IHZpZXcuZm92
LmFuZ2xlVXAsIHZpZXcuZm92LmFuZ2xlRG93biwgdmlldy5mb3YuYW5nbGVMZWZ0LCB2aWV3LmZv
di5hbmdsZVJpZ2h0IH07CisgICAgcG9zZS5vZmZzZXQgPSBYclBvc2VmVG9Qb3NlKHZpZXcucG9z
ZSk7CisgICAgcmV0dXJuIHBvc2U7CiB9CiAKIHZvaWQgT3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJh
bWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTU2MiwxMyArNTk5LDIyIEBA
IHZvaWQgT3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBj
YWxsYmFjaykKICAgICAgICAgZnJhbWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1lID0gZnJhbWVT
dGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZTsKIAogICAgICAgICBpZiAoaXNTZXNzaW9uQWN0aXZl
KG1fc2Vzc2lvblN0YXRlKSkgeworICAgICAgICAgICAgLy8gUXVlcnkgaGVhZCBsb2NhdGlvbgor
ICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9IGNyZWF0ZVN0cnVjdHVyZTxYclNwYWNlTG9jYXRp
b24sIFhSX1RZUEVfU1BBQ0VfTE9DQVRJT04+KCk7CisgICAgICAgICAgICB4ckxvY2F0ZVNwYWNl
KG1fdmlld1NwYWNlLCBtX2xvY2FsU3BhY2UsIGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRp
bWUsICZsb2NhdGlvbik7CisgICAgICAgICAgICBmcmFtZURhdGEuaXNUcmFja2luZ1ZhbGlkID0g
bG9jYXRpb24ubG9jYXRpb25GbGFncyAmIFhSX1NQQUNFX0xPQ0FUSU9OX09SSUVOVEFUSU9OX1ZB
TElEX0JJVDsKKyAgICAgICAgICAgIGZyYW1lRGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSBsb2NhdGlv
bi5sb2NhdGlvbkZsYWdzICYgWFJfU1BBQ0VfTE9DQVRJT05fUE9TSVRJT05fVkFMSURfQklUOwor
ICAgICAgICAgICAgZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRlZCA9IGxvY2F0aW9uLmxvY2F0
aW9uRmxhZ3MgJiBYUl9TUEFDRV9MT0NBVElPTl9QT1NJVElPTl9UUkFDS0VEX0JJVDsKKworICAg
ICAgICAgICAgaWYgKGZyYW1lRGF0YS5pc1RyYWNraW5nVmFsaWQpCisgICAgICAgICAgICAgICAg
ZnJhbWVEYXRhLm9yaWdpbiA9IFhyUG9zZWZUb1Bvc2UobG9jYXRpb24ucG9zZSk7CisgICAgICAg
ICAgICAKICAgICAgICAgICAgIEFTU0VSVChtX2NvbmZpZ3VyYXRpb25WaWV3cy5jb250YWlucyht
X2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpKTsKICAgICAgICAgICAgIGNvbnN0IGF1dG8m
IGNvbmZpZ3VyYXRpb25WaWV3ID0gbV9jb25maWd1cmF0aW9uVmlld3MuZ2V0KG1fY3VycmVudFZp
ZXdDb25maWd1cmF0aW9uVHlwZSk7CiAKICAgICAgICAgICAgIGF1dG8gdmlld0xvY2F0ZUluZm8g
PSBjcmVhdGVTdHJ1Y3R1cmU8WHJWaWV3TG9jYXRlSW5mbywgWFJfVFlQRV9WSUVXX0xPQ0FURV9J
TkZPPigpOwogICAgICAgICAgICAgdmlld0xvY2F0ZUluZm8uZGlzcGxheVRpbWUgPSBwcmVkaWN0
ZWRUaW1lOwotICAgICAgICAgICAgLy8gRklYTUU6IHVzZSB0aGUgY3VycmVudCByZWZlcmVuY2Ug
c3BhY2UuCi0gICAgICAgICAgICAvLyB2aWV3TG9jYXRlSW5mby5zcGFjZSA9IG1fbG9jYWxTcGFj
ZTsKKyAgICAgICAgICAgIHZpZXdMb2NhdGVJbmZvLnNwYWNlID0gbV9sb2NhbFNwYWNlOwogCiAg
ICAgICAgICAgICB1aW50MzJfdCB2aWV3Q291bnQgPSBjb25maWd1cmF0aW9uVmlldy5zaXplKCk7
CiAgICAgICAgICAgICBWZWN0b3I8WHJWaWV3PiB2aWV3cyh2aWV3Q291bnQsIFtdIHsKQEAgLTU4
Myw3ICs2MjksMTQgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJh
bWVDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgICAgICAgICAgcmVzdWx0ID0geHJMb2NhdGVWaWV3
cyhtX3Nlc3Npb24sICZ2aWV3TG9jYXRlSW5mbywgJnZpZXdTdGF0ZSwgdmlld0NvdW50LCAmdmll
d0NvdW50T3V0cHV0LCB2aWV3cy5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKCFYUl9GQUlMRUQo
cmVzdWx0KSkgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgdmlldyA6IHZpZXdzKQotICAg
ICAgICAgICAgICAgICAgICBmcmFtZURhdGEudmlld1Bvc2VzLmFwcGVuZCh4clZpZXdUb1ZpZXdE
YXRhKHZpZXcpKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVEYXRhLnZpZXdzLmFwcGVuZCh4
clZpZXdUb1Bvc2UodmlldykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBRdWVy
eSBmbG9vciB0cmFuc2Zvcm0KKyAgICAgICAgICAgIGlmIChtX3N0YWdlU3BhY2UgIT0gWFJfTlVM
TF9IQU5ETEUpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGZsb29yTG9jYXRpb24gPSBjcmVhdGVT
dHJ1Y3R1cmU8WHJTcGFjZUxvY2F0aW9uLCBYUl9UWVBFX1NQQUNFX0xPQ0FUSU9OPigpOworICAg
ICAgICAgICAgICAgIHhyTG9jYXRlU3BhY2UobV9zdGFnZVNwYWNlLCBtX2xvY2FsU3BhY2UsIGZy
YW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWUsICZmbG9vckxvY2F0aW9uKTsKKyAgICAgICAg
ICAgICAgICBmcmFtZURhdGEuZmxvb3JUcmFuc2Zvcm0gPSB7IFhyUG9zZWZUb1Bvc2UoZmxvb3JM
b2NhdGlvbi5wb3NlKSB9OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTYwMCw2ICs2
NTMsMjEgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxs
YmFjayYmIGNhbGxiYWNrKQogICAgIH0pOwogfQogCitWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4g
T3BlblhSRGV2aWNlOjp2aWV3cyhTZXNzaW9uTW9kZSBtb2RlKSBjb25zdAoreworICAgIFZlY3Rv
cjxEZXZpY2U6OlZpZXdEYXRhPiB2aWV3czsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb25UeXBlID0g
dG9YclZpZXdDb25maWd1cmF0aW9uVHlwZShtb2RlKTsKKworICAgIGlmIChjb25maWd1cmF0aW9u
VHlwZSA9PSBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX01PTk8pCisgICAgICAg
IHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVlLCAuZXllID0gRXllOjpOb25lIH0pOworICAg
IGVsc2UgeworICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvblR5cGUgPT0gWFJfVklFV19DT05G
SUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9TVEVSRU8pOworICAgICAgICB2aWV3cy5hcHBlbmQoeyAu
YWN0aXZlID0gdHJ1ZSwgRXllOjpMZWZ0IH0pOworICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0
aXZlID0gdHJ1ZSwgRXllOjpSaWdodCB9KTsKKyAgICB9CisgICAgcmV0dXJuIHZpZXdzOworfQor
CiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpICYm
IFVTRShPUEVOWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVu
eHIvUGxhdGZvcm1YUk9wZW5YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L1BsYXRmb3JtWFJPcGVuWFIuaAppbmRleCA1YmViZTY5NjY5MzI3ZGIyYzgxNWI1NTZhZWRkMWNh
OTliNDZlMTc2Li4wMmQxOTRlNjI3MWViYTZiMmE4NDQ4NzAyNzk1YTYwOWVhMjkwNzNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5Y
Ui5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3Bl
blhSLmgKQEAgLTUxLDEyICs1MSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29sbGVjdENvbmZp
Z3VyYXRpb25WaWV3cygpOwogCiAgICAgTGlzdE9mRW5hYmxlZEZlYXR1cmVzIGVudW1lcmF0ZVJl
ZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mKSBjb25zdDsKLSAgICB2b2lkIGluaXRpYWxpemVSZWZl
cmVuY2VTcGFjZShSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfTsKKyAgICBYclNwYWNlIGNy
ZWF0ZVJlZmVyZW5jZVNwYWNlKFhyUmVmZXJlbmNlU3BhY2VUeXBlKTsKIAogICAgIFdlYkNvcmU6
OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlKSBmaW5hbDsKIAogICAg
IHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlKSBmaW5hbDsK
ICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICB2b2lk
IGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUp
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCB3YWl0VW50aWxTdG9wcGluZygp
OwogCkBAIC02OCw2ICs2OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlcXVlc3RGcmFtZShS
ZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKIAorICAgIFZlY3RvcjxWaWV3RGF0YT4gdmll
d3MoU2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOworCiAgICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRp
b25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1hcDxYclZpZXdDb25maWd1cmF0aW9uVHlwZSwgWHJWaWV3
Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIEludEhhc2g8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+
LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPj47CiAg
ICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwIG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9w
ZXJ0aWVzOwogICAgIHVzaW5nIFZpZXdDb25maWd1cmF0aW9uVmlld3NNYXAgPSBIYXNoTWFwPFhy
Vmlld0NvbmZpZ3VyYXRpb25UeXBlLCBWZWN0b3I8WHJWaWV3Q29uZmlndXJhdGlvblZpZXc+LCBJ
bnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0
czxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4+OwpAQCAtODEsNiArODQsOSBAQCBwcml2YXRlOgog
ICAgIFdvcmtRdWV1ZSYgbV9xdWV1ZTsKIAogICAgIFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlIG1f
Y3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZTsKKyAgICBYclNwYWNlIG1fbG9jYWxTcGFjZSB7
IFhSX05VTExfSEFORExFIH07CisgICAgWHJTcGFjZSBtX3ZpZXdTcGFjZSB7IFhSX05VTExfSEFO
RExFIH07CisgICAgWHJTcGFjZSBtX3N0YWdlU3BhY2UgeyBYUl9OVUxMX0hBTkRMRSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1YUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuY3BwCmluZGV4IDU0MDE4ZGE3ZWJiNTNkZDUxOTQyZGU3NjYxNDk2NzJmZjFh
Yzg0NTcuLmJmMzgxNDJiZmM5ZGU5YmI3OGRmODQwZmRjMTVhZjRhOThmODE0NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKQEAgLTMyLDE0ICszMiwyMCBA
QAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiV2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Cisj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgY29uc3RleHByIFNlY29uZHMgRmFrZVhSRnJhbWVUaW1lID0gMTVfbXM7CiAKLXZvaWQgRmFr
ZVhSVmlldzo6c2V0RmllbGRPZlZpZXcoRmFrZVhSVmlld0luaXQ6OkZpZWxkT2ZWaWV3SW5pdCBm
b3YpCit2b2lkIEZha2VYUlZpZXc6OnNldFByb2plY3Rpb24oY29uc3QgVmVjdG9yPGZsb2F0PiYg
cHJvamVjdGlvbikKIHsKLSAgICBtX2ZvdiA9IGZvdjsKKyAgICBzdGQ6OmNvcHkoc3RkOjpiZWdp
bihwcm9qZWN0aW9uKSwgc3RkOjplbmQocHJvamVjdGlvbiksIHN0ZDo6YmVnaW4obV9wcm9qZWN0
aW9uKSk7Cit9CisKK3ZvaWQgRmFrZVhSVmlldzo6c2V0RmllbGRPZlZpZXcoY29uc3QgRmFrZVhS
Vmlld0luaXQ6OkZpZWxkT2ZWaWV3SW5pdCYgZm92KQoreworICAgIG1fZm92ID0gUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpGcmFtZURhdGE6OkZvdiB7IGRlZzJyYWQoZm92LnVwRGVncmVlcyksIGRlZzJy
YWQoZm92LmRvd25EZWdyZWVzKSwgZGVnMnJhZChmb3YubGVmdERlZ3JlZXMpLCBkZWcycmFkKGZv
di5yaWdodERlZ3JlZXMpIH07CiB9CiAKIFNpbXVsYXRlZFhSRGV2aWNlOjpTaW11bGF0ZWRYUkRl
dmljZSgpCkBAIC03NCwzMSArODAsNzIgQEAgdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c3RvcFRp
bWVyKCkKIAogdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1lckZpcmVkKCkKIHsKLSAg
ICBhdXRvIGNhbGxiYWNrcyA9IFdURk1vdmUobV9jYWxsYmFja3MpOwotICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBjYWxsYmFja3MpCi0gICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgYXV0byB1
cGRhdGVzID0gV1RGTW92ZShtX3BlbmRpbmdVcGRhdGVzKTsKKyAgICBmb3IgKGF1dG8mIHVwZGF0
ZSA6IHVwZGF0ZXMpCisgICAgICAgIHVwZGF0ZSgpOworCisgICAgRnJhbWVEYXRhIGRhdGE7Cisg
ICAgaWYgKG1fdmlld2VyT3JpZ2luKSB7CisgICAgICAgIGRhdGEub3JpZ2luID0gKm1fdmlld2Vy
T3JpZ2luOworICAgICAgICBkYXRhLmlzVHJhY2tpbmdWYWxpZCA9IHRydWU7CisgICAgICAgIGRh
dGEuaXNQb3NpdGlvblZhbGlkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobV9mbG9vck9yaWdp
bikKKyAgICAgICAgZGF0YS5mbG9vclRyYW5zZm9ybSA9IHsgKm1fZmxvb3JPcmlnaW4gfTsKKwor
ICAgIGZvciAoYXV0byYgZmFrZVZpZXcgOiBtX3ZpZXdzKSB7CisgICAgICAgIEZyYW1lRGF0YTo6
VmlldyB2aWV3OworICAgICAgICB2aWV3Lm9mZnNldCA9IGZha2VWaWV3LT5vZmZzZXQoKTsKKyAg
ICAgICAgaWYgKGZha2VWaWV3LT5maWVsZE9mVmlldygpLmhhc1ZhbHVlKCkpCisgICAgICAgICAg
ICB2aWV3LnByb2plY3Rpb24gPSB7ICpmYWtlVmlldy0+ZmllbGRPZlZpZXcoKSB9OworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB2aWV3LnByb2plY3Rpb24gPSB7IGZha2VWaWV3LT5wcm9qZWN0
aW9uKCkgfTsKKyAgICAgICAgCisgICAgICAgIGRhdGEudmlld3MuYXBwZW5kKHZpZXcpOworICAg
IH0KKworICAgIGlmIChtX0ZyYW1lQ2FsbGJhY2spCisgICAgICAgIG1fRnJhbWVDYWxsYmFjayhX
VEZNb3ZlKGRhdGEpKTsKIH0KIAogdm9pZCBTaW11bGF0ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1l
KFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgbV9jYWxsYmFja3MuYXBw
ZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX0ZyYW1lQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKICAgICBpZiAoIW1fZnJhbWVUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Zy
YW1lVGltZXIuc3RhcnRPbmVTaG90KEZha2VYUkZyYW1lVGltZSk7CiB9CiAKKworVmVjdG9yPFBs
YXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFNpbXVsYXRlZFhSRGV2aWNlOjp2aWV3cyhQbGF0
Zm9ybVhSOjpTZXNzaW9uTW9kZSBtb2RlKSBjb25zdAoreworICAgIGlmIChtb2RlID09IFBsYXRm
b3JtWFI6OlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWcikKKyAgICAgICAgcmV0dXJuIHsgeyAuYWN0
aXZlID0gdHJ1ZSwgUGxhdGZvcm1YUjo6RXllOjpMZWZ0IH0sIHsgLmFjdGl2ZSA9IHRydWUsIFBs
YXRmb3JtWFI6OkV5ZTo6UmlnaHQgfSB9OworCisgICAgcmV0dXJuIHsgeyAuYWN0aXZlID0gdHJ1
ZSwgUGxhdGZvcm1YUjo6RXllOjpOb25lIH0gfTsKK30KKwordm9pZCBTaW11bGF0ZWRYUkRldmlj
ZTo6c2NoZWR1bGVPbk5leHRGcmFtZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuYykKK3sKKyAgICBt
X3BlbmRpbmdVcGRhdGVzLmFwcGVuZChXVEZNb3ZlKGZ1bmMpKTsKK30KKworCiBXZWJGYWtlWFJE
ZXZpY2U6OldlYkZha2VYUkRldmljZSgpID0gZGVmYXVsdDsKIAogdm9pZCBXZWJGYWtlWFJEZXZp
Y2U6OnNldFZpZXdzKGNvbnN0IFZlY3RvcjxGYWtlWFJWaWV3SW5pdD4mIHZpZXdzKQogewotICAg
IFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiBkZXZpY2VWaWV3cyA9IG1fZGV2aWNlLnZpZXdzKCk7
Ci0gICAgZGV2aWNlVmlld3MuY2xlYXIoKTsKKyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZy
YW1lKFt0aGlzLCB2aWV3c10oKSB7CisgICAgICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+IGRl
dmljZVZpZXdzOwogCi0gICAgLy8gVE9ETzogZG8gaW4gbmV4dCBhbmltYXRpb24gZnJhbWUuCi0g
ICAgZm9yIChhdXRvJiB2aWV3SW5pdCA6IHZpZXdzKSB7Ci0gICAgICAgIGF1dG8gdmlldyA9IHBh
cnNlVmlldyh2aWV3SW5pdCk7Ci0gICAgICAgIGlmICghdmlldy5oYXNFeGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIGRldmljZVZpZXdzLmFwcGVuZCh2aWV3LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
LSAgICB9CisgICAgICAgIGZvciAoYXV0byYgdmlld0luaXQgOiB2aWV3cykgeworICAgICAgICAg
ICAgYXV0byB2aWV3ID0gcGFyc2VWaWV3KHZpZXdJbml0KTsKKyAgICAgICAgICAgIGlmICghdmll
dy5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBkZXZpY2VWaWV3cy5hcHBlbmQodmll
dy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgIH0KKworICAgICAgICBtX2RldmljZS5z
ZXRWaWV3cyhXVEZNb3ZlKGRldmljZVZpZXdzKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFr
ZVhSRGV2aWNlOjpkaXNjb25uZWN0KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2Up
CkBAIC0xMDgsNzEgKzE1NSw3MyBAQCB2b2lkIFdlYkZha2VYUkRldmljZTo6ZGlzY29ubmVjdChE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogCiB2b2lkIFdlYkZha2VYUkRldmlj
ZTo6c2V0Vmlld2VyT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBvcmlnaW4sIGJvb2wg
ZW11bGF0ZWRQb3NpdGlvbikKIHsKLSAgICBhdXRvIHJpZ2lkVHJhbnNmb3JtID0gcGFyc2VSaWdp
ZFRyYW5zZm9ybShvcmlnaW4pOwotICAgIGlmIChyaWdpZFRyYW5zZm9ybS5oYXNFeGNlcHRpb24o
KSkKKyAgICBhdXRvIHJlc3VsdCA9IHBhcnNlUmlnaWRUcmFuc2Zvcm0ob3JpZ2luKTsKKyAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUT0RP
OiBkbyBpbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS4KLSAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmln
aW4ocmlnaWRUcmFuc2Zvcm0ucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAgIG1fZGV2aWNlLnNl
dEVtdWxhdGVkUG9zaXRpb24oZW11bGF0ZWRQb3NpdGlvbik7CisgICAgYXV0byBwb3NlID0gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworCisgICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRG
cmFtZShbdGhpcywgcG9zZSA9IFdURk1vdmUocG9zZSksIGVtdWxhdGVkUG9zaXRpb25dKCkgbXV0
YWJsZSB7CisgICAgICAgIG1fZGV2aWNlLnNldFZpZXdlck9yaWdpbihXVEZNb3ZlKHBvc2UpKTsK
KyAgICAgICAgbV9kZXZpY2Uuc2V0RW11bGF0ZWRQb3NpdGlvbihlbXVsYXRlZFBvc2l0aW9uKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OmNsZWFyVmlld2VyT3JpZ2luKCkK
IHsKLSAgICAvLyBUT0RPOiBkbyBpbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS4KLSAgICBtX2Rldmlj
ZS5zZXRWaWV3ZXJPcmlnaW4obnVsbHB0cik7CisgICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRG
cmFtZShbdGhpc10oKSB7CisgICAgICAgIG1fZGV2aWNlLnNldFZpZXdlck9yaWdpbihXVEY6Om51
bGxvcHQpOworICAgIH0pOwogfQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVWaXNp
YmlsaXR5Q2hhbmdlKFhSVmlzaWJpbGl0eVN0YXRlKQogewogfQogCi12b2lkIFdlYkZha2VYUkRl
dmljZTo6c2V0Qm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PikKK3ZvaWQg
V2ViRmFrZVhSRGV2aWNlOjpzZXRCb3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9p
bnQ+JiYpCiB7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRGbG9vck9yaWdpbihGYWtl
WFJSaWdpZFRyYW5zZm9ybUluaXQgb3JpZ2luKQogewotICAgIGF1dG8gcmlnaWRUcmFuc2Zvcm0g
PSBwYXJzZVJpZ2lkVHJhbnNmb3JtKG9yaWdpbik7Ci0gICAgaWYgKHJpZ2lkVHJhbnNmb3JtLmhh
c0V4Y2VwdGlvbigpKQorICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmln
aW4pOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNl
dEZsb29yT3JpZ2luKHJpZ2lkVHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBh
dXRvIHBvc2UgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAgICBtX2RldmljZS5z
Y2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzLCBwb3NlID0gV1RGTW92ZShwb3NlKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgbV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4oV1RGTW92ZShwb3NlKSk7CisgICAg
fSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKCkKIHsKLSAg
ICAvLyBUT0RPOiBkbyBpbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS4KLSAgICBtX2RldmljZS5zZXRG
bG9vck9yaWdpbihudWxscHRyKTsKKyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0
aGlzXSgpIHsKKyAgICAgICAgbV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4oV1RGOjpudWxsb3B0KTsK
KyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRlUmVzZXRQb3NlKCkK
IHsKIH0KIAorCiBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBXZWJGYWtlWFJEZXZpY2U6
OnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKEZha2VYUklucHV0U291cmNlSW5pdCkKIHsK
ICAgICByZXR1cm4gV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpjcmVhdGUoKTsKIH0KIAotRXhj
ZXB0aW9uT3I8UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+PiBXZWJGYWtlWFJEZXZpY2U6OnBhcnNl
UmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0JiBpbml0KQorRXhj
ZXB0aW9uT3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2U+IFdlYkZha2VYUkRl
dmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQm
IGluaXQpCiB7CiAgICAgaWYgKGluaXQucG9zaXRpb24uc2l6ZSgpICE9IDMgfHwgaW5pdC5vcmll
bnRhdGlvbi5zaXplKCkgIT0gNCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJv
ciB9OwogCi0gICAgRE9NUG9pbnRJbml0IHBvc2l0aW9uOwotICAgIHBvc2l0aW9uLnggPSBpbml0
LnBvc2l0aW9uWzBdOwotICAgIHBvc2l0aW9uLnkgPSBpbml0LnBvc2l0aW9uWzFdOwotICAgIHBv
c2l0aW9uLnogPSBpbml0LnBvc2l0aW9uWzJdOwotCi0gICAgRE9NUG9pbnRJbml0IG9yaWVudGF0
aW9uOwotICAgIG9yaWVudGF0aW9uLnggPSBpbml0Lm9yaWVudGF0aW9uWzBdOwotICAgIG9yaWVu
dGF0aW9uLnkgPSBpbml0Lm9yaWVudGF0aW9uWzFdOwotICAgIG9yaWVudGF0aW9uLnogPSBpbml0
Lm9yaWVudGF0aW9uWzJdOwotICAgIG9yaWVudGF0aW9uLncgPSBpbml0Lm9yaWVudGF0aW9uWzNd
OworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlIHBvc2U7CisgICAgcG9z
ZS5wb3NpdGlvbiA9IHsgaW5pdC5wb3NpdGlvblswXSwgaW5pdC5wb3NpdGlvblsxXSwgaW5pdC5w
b3NpdGlvblsyXSB9OworICAgIHBvc2Uub3JpZW50YXRpb24gPSB7IGluaXQub3JpZW50YXRpb25b
MF0sIGluaXQub3JpZW50YXRpb25bMV0sIGluaXQub3JpZW50YXRpb25bMl0sIGluaXQub3JpZW50
YXRpb25bM10gfTsKIAotICAgIHJldHVybiBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUocG9z
aXRpb24sIG9yaWVudGF0aW9uKTsKKyAgICByZXR1cm4gcG9zZTsKIH0KIAogRXhjZXB0aW9uT3I8
UmVmPEZha2VYUlZpZXc+PiBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyhjb25zdCBGYWtlWFJW
aWV3SW5pdCYgaW5pdCkKQEAgLTE4MiwyMiArMjMxLDE3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGYWtl
WFJWaWV3Pj4gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQm
IGluCiAKICAgICBpZiAoaW5pdC5wcm9qZWN0aW9uTWF0cml4LnNpemUoKSAhPSAxNikKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwotICAgIGZha2VWaWV3LT52aWV3KCkt
PnNldFByb2plY3Rpb25NYXRyaXgoaW5pdC5wcm9qZWN0aW9uTWF0cml4KTsKKyAgICBmYWtlVmll
dy0+c2V0UHJvamVjdGlvbihpbml0LnByb2plY3Rpb25NYXRyaXgpOwogCiAgICAgYXV0byB2aWV3
T2Zmc2V0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShpbml0LnZpZXdPZmZzZXQpOwogICAgIGlmICh2
aWV3T2Zmc2V0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gdmlld09mZnNldC5yZWxl
YXNlRXhjZXB0aW9uKCk7Ci0gICAgZmFrZVZpZXctPnZpZXcoKS0+c2V0VHJhbnNmb3JtKHZpZXdP
ZmZzZXQucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIGZha2VWaWV3LT5zZXRPZmZzZXQodmll
d09mZnNldC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAKICAgICBmYWtlVmlldy0+c2V0UmVzb2x1
dGlvbihpbml0LnJlc29sdXRpb24pOwogCiAgICAgaWYgKGluaXQuZmllbGRPZlZpZXcpIHsKICAg
ICAgICAgZmFrZVZpZXctPnNldEZpZWxkT2ZWaWV3KGluaXQuZmllbGRPZlZpZXcudmFsdWUoKSk7
Ci0gICAgICAgIC8vIFRPRE86IFNldCB2aWV34oCZcyBwcm9qZWN0aW9uIG1hdHJpeCB0byB0aGUg
cHJvamVjdGlvbiBtYXRyaXgKLSAgICAgICAgLy8gY29ycmVzcG9uZGluZyB0byB0aGlzIGZpZWxk
IG9mIHZpZXcsIGFuZCBkZXB0aCB2YWx1ZXMgZXF1YWwgdG8KLSAgICAgICAgLy8gZGVwdGhOZWFy
IGFuZCBkZXB0aEZhciBvZiBhbnkgWFJTZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNl
LgotICAgICAgICAvLyBJZiB0aGVyZSBjdXJyZW50bHkgaXMgbm9uZSwgdXNlIHRoZSBkZWZhdWx0
IHZhbHVlcyBvZiBuZWFyPTAuMSwKLSAgICAgICAgLy8gZmFyPTEwMDAuMC4KICAgICB9CiAKICAg
ICByZXR1cm4gZmFrZVZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YkZha2VYUkRldmljZS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
aAppbmRleCAzOTFiZmMzNDdlZWY5YWFhZjE3YmQyYmE4YjZiYTQzNmYwMDA0NmQ1Li4zYTZiMGU4
NTc2NTNmMzdjNGQxOGM2MTE4N2MzMTJlOWQ4MTdkYjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmgKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJKU0RPTVBy
b21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKICNpbmNsdWRlICJXZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgi
Ci0jaW5jbHVkZSAiV2ViWFJWaWV3LmgiCiAjaW5jbHVkZSAiWFJWaXNpYmlsaXR5U3RhdGUuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTQzLDIxICs0MSwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGYWtlWFJWaWV3IGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8RmFrZVhSVmlldz4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8RmFrZVhSVmlldz4gY3JlYXRlKFhSRXllIGV5ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGYWtlWFJWaWV3KGV5ZSkpOyB9CisgICAgdXNpbmcgUG9zZSA9IFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpQb3NlOworICAgIHVzaW5nIEZvdiA9IFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpGb3Y7CiAKLSAgICBSZWZQdHI8V2ViWFJWaWV3PiB2aWV3KCkgeyByZXR1cm4g
bV92aWV3OyB9Ci0gICAgdm9pZCBzZXRSZXNvbHV0aW9uKEZha2VYUlZpZXdJbml0OjpEZXZpY2VS
ZXNvbHV0aW9uIHJlc29sdXRpb24pIHsgbV9yZXNvbHV0aW9uID0gcmVzb2x1dGlvbjsgfQotICAg
IHZvaWQgc2V0RmllbGRPZlZpZXcoRmFrZVhSVmlld0luaXQ6OkZpZWxkT2ZWaWV3SW5pdCk7Cisg
ICAgWFJFeWUgZXllKCkgY29uc3QgeyByZXR1cm4gbV9leWU7IH0KKyAgICBjb25zdCBQb3NlJiBv
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIGNvbnN0IHN0ZDo6YXJyYXk8
ZmxvYXQsIDE2PiYgcHJvamVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbjsgfQor
ICAgIGNvbnN0IE9wdGlvbmFsPEZvdj4mIGZpZWxkT2ZWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9m
b3Y7fQogCisgICAgdm9pZCBzZXRSZXNvbHV0aW9uKEZha2VYUlZpZXdJbml0OjpEZXZpY2VSZXNv
bHV0aW9uIHJlc29sdXRpb24pIHsgbV9yZXNvbHV0aW9uID0gcmVzb2x1dGlvbjsgfQorICAgIHZv
aWQgc2V0T2Zmc2V0KFBvc2UmJiBvZmZzZXQpIHsgbV9vZmZzZXQgPSBXVEZNb3ZlKG9mZnNldCk7
IH0KKyAgICB2b2lkIHNldFByb2plY3Rpb24oY29uc3QgVmVjdG9yPGZsb2F0PiYpOworICAgIHZv
aWQgc2V0RmllbGRPZlZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQ6OkZpZWxkT2ZWaWV3SW5pdCYp
OwogcHJpdmF0ZToKICAgICBGYWtlWFJWaWV3KFhSRXllIGV5ZSkKLSAgICB7Ci0gICAgICAgIG1f
dmlldyA9IFdlYlhSVmlldzo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fdmlldy0+c2V0RXllKGV5ZSk7
Ci0gICAgfQorICAgICAgICA6IG1fZXllKGV5ZSkgeyB9CisKIAotICAgIFJlZlB0cjxXZWJYUlZp
ZXc+IG1fdmlldzsKKyAgICBYUkV5ZSBtX2V5ZTsKICAgICBGYWtlWFJWaWV3SW5pdDo6RGV2aWNl
UmVzb2x1dGlvbiBtX3Jlc29sdXRpb247Ci0gICAgRmFrZVhSVmlld0luaXQ6OkZpZWxkT2ZWaWV3
SW5pdCBtX2ZvdjsKKyAgICBQb3NlIG1fb2Zmc2V0OworICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDE2
PiBtX3Byb2plY3Rpb247CisgICAgT3B0aW9uYWw8Rm92PiBtX2ZvdjsKIH07CiAKIGNsYXNzIFNp
bXVsYXRlZFhSRGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CkBAIC02
NSwzMSArNzAsMzUgQEAgY2xhc3MgU2ltdWxhdGVkWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgUGxh
dGZvcm1YUjo6RGV2aWNlIHsKIHB1YmxpYzoKICAgICBTaW11bGF0ZWRYUkRldmljZSgpOwogICAg
IH5TaW11bGF0ZWRYUkRldmljZSgpOwotICAgIHZvaWQgc2V0TmF0aXZlQm91bmRzR2VvbWV0cnko
VmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiBnZW9tZXRyeSkgeyBtX25hdGl2ZUJvdW5kc0dlb21l
dHJ5ID0gZ2VvbWV0cnk7IH0KLSAgICB2b2lkIHNldFZpZXdlck9yaWdpbihSZWZQdHI8V2ViWFJS
aWdpZFRyYW5zZm9ybT4mJiBvcmlnaW4pIHsgbV92aWV3ZXJPcmlnaW4gPSBXVEZNb3ZlKG9yaWdp
bik7IH0KLSAgICB2b2lkIHNldEZsb29yT3JpZ2luKFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiYmIG9yaWdpbikgeyBtX2Zsb29yT3JpZ2luID0gV1RGTW92ZShvcmlnaW4pOyB9CisgICAgdm9p
ZCBzZXRWaWV3cyhWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiYmIHZpZXdzKSB7IG1fdmlld3MgPSBX
VEZNb3ZlKHZpZXdzKTsgfQorICAgIHZvaWQgc2V0TmF0aXZlQm91bmRzR2VvbWV0cnkoY29uc3Qg
VmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiYgZ2VvbWV0cnkpIHsgbV9uYXRpdmVCb3VuZHNHZW9t
ZXRyeSA9IGdlb21ldHJ5OyB9CisgICAgdm9pZCBzZXRWaWV3ZXJPcmlnaW4oT3B0aW9uYWw8RnJh
bWVEYXRhOjpQb3NlPiYmIG9yaWdpbikgeyBtX3ZpZXdlck9yaWdpbiA9IFdURk1vdmUob3JpZ2lu
KTsgfQorICAgIHZvaWQgc2V0Rmxvb3JPcmlnaW4oT3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYm
IG9yaWdpbikgeyBtX2Zsb29yT3JpZ2luID0gV1RGTW92ZShvcmlnaW4pOyB9CiAgICAgdm9pZCBz
ZXRFbXVsYXRlZFBvc2l0aW9uKGJvb2wgZW11bGF0ZWQpIHsgbV9lbXVsYXRlZFBvc2l0aW9uID0g
ZW11bGF0ZWQ7IH0KICAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiYgdmlld3MoKSB7IHJldHVy
biBtX3ZpZXdzOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKGJv
b2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbikgeyBtX3N1cHBvcnRzU2h1dGRvd25Ob3Rp
ZmljYXRpb24gPSBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBzaW11
bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CisgICAgdm9pZCBzY2hlZHVsZU9uTmV4dEZyYW1lKEZ1
bmN0aW9uPHZvaWQoKT4mJik7CiBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5n
QW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KICAgICB2b2lk
IHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRz
U2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zdXBw
b3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNl
U3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KKyAgICBWZWN0
b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNh
bGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCBzdG9wVGltZXIoKTsKICAgICB2b2lkIGZyYW1l
VGltZXJGaXJlZCgpOwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEZha2VYUkJvdW5kc1BvaW50Pj4g
bV9uYXRpdmVCb3VuZHNHZW9tZXRyeTsKLSAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4g
bV92aWV3ZXJPcmlnaW47Ci0gICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fZmxvb3JP
cmlnaW47CisgICAgT3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiBtX3ZpZXdlck9yaWdpbjsKKyAg
ICBPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+IG1fZmxvb3JPcmlnaW47CiAgICAgYm9vbCBtX2Vt
dWxhdGVkUG9zaXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+IG1f
dmlld3M7CiAgICAgYm9vbCBtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24geyBmYWxzZSB9
OwogICAgIFRpbWVyIG1fZnJhbWVUaW1lcjsKLSAgICBWZWN0b3I8UmVxdWVzdEZyYW1lQ2FsbGJh
Y2s+IG1fY2FsbGJhY2tzOworICAgIFJlcXVlc3RGcmFtZUNhbGxiYWNrIG1fRnJhbWVDYWxsYmFj
azsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5kaW5nVXBkYXRlczsKIH07CiAK
IGNsYXNzIFdlYkZha2VYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkZha2VY
UkRldmljZT4gewpAQCAtMTA2LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2ltdWxh
dGVWaXNpYmlsaXR5Q2hhbmdlKFhSVmlzaWJpbGl0eVN0YXRlKTsKIAotICAgIHZvaWQgc2V0Qm91
bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiBib3VuZHNDb29yZGluYXRlcyk7
CisgICAgdm9pZCBzZXRCb3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+JiYg
Ym91bmRzQ29vcmRpbmF0ZXMpOwogCiAgICAgdm9pZCBzZXRGbG9vck9yaWdpbihGYWtlWFJSaWdp
ZFRyYW5zZm9ybUluaXQpOwogCkBAIC0xMjcsNyArMTM2LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBXZWJGYWtlWFJEZXZpY2UoKTsKIAotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2Vi
WFJSaWdpZFRyYW5zZm9ybT4+IHBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRU
cmFuc2Zvcm1Jbml0Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpQb3NlPiBwYXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lk
VHJhbnNmb3JtSW5pdCYpOwogCiAgICAgU2ltdWxhdGVkWFJEZXZpY2UgbV9kZXZpY2U7CiB9Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGM0YWRiOGMwYWVmODA1NTQ5MDI2ODAzZDQ1MTZkMjdkMTY4ZjQ1M2QuLjQwNjIyNzVh
NWU5NDMxOTkzY2I0NDJiZGRmNWMyMTEyNTYxM2Q1ZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMS0wMi0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4gYW5k
IEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1w
bGVtZW50IFdlYlhSIGdldFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzQxMTI5MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFyayBwb3NlIHJlbGF0ZWQgV2ViWFIgdGVzdHMgYXMgcGFzc2luZy4KKworICAg
ICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAyLTEyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IFNldFN0YXRlIERpc3BsYXlMaXN0IGl0ZW0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCmluZGV4IDUxZjlkNmQyYzRhMDBjZmYzNTNlMmVhZTUwZTY3Mzc2NmRjZDViOWEuLmI5
MjdlZjY4MDM5ZWVmMjQ4N2UwYWQ5YmE0ZmE4NmU4YmM1MWJlOTYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTAyLTEyICBTZXJnaW8gVmlsbGFy
IFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPiBhbmQgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJu
YW5kZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld2VyUG9z
ZSBhbmQgZ2V0UG9zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxMjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDExMjkxMD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIHBvc2UgYW5kIHJl
ZmVyZW5jZSBzcGFjZSBXZWJYUiB0ZXN0cyBhcyBwYXNzaW5nLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdl
clBvc2VfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIu
aHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJSZWZlcmVuY2VTcGFjZV9yZWxhdGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1
ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1h
dGlvbkZyYW1lX2dldFZpZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VT
cGFjZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29u
ZWZyYW1ldXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMjEtMDItMTEgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzA1NzguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
RnJhbWVfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk2MjNkNGY4YTE3
Zjg1ZmY4MjdjYzU4ZTg1ODMzNTA0Zjk2NjkyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3Nl
Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZyYW1lLmdldFBv
c2Ugd29ya3MgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBYUkZyYW1lLmdldFBvc2Ugd29y
a3MgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBv
c2VfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0
dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjFiZTM5MDEzNzhkOTA2MDViYjI2M2Q2MWJm
YmU4YmRhZjIwZTBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBvc2VfZ2V0UG9zZS5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3
ZXJQb3NlKHJlZlNwYWNlKSBtYXRjaGVzIGdldFBvc2Uodmlld2VyLCByZWZTcGFjZSkuCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJS
ZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZGY5ZjJiYTZhNTgxOWYwNGYxMGNmNTdiYmNjOWY1NTA2OTU1ZmZhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIENyZWF0aW5nIFhSUmVmZXJlbmNlU3BhY2Ugb3Jp
Z2luIG9mZnNldCBvZmYgb2YgYHZpZXdlcmAgc3BhY2Ugd29ya3MuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVu
Y2VTcGFjZV9yZWxhdGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9yZWxh
dGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWVjYzFiMmJlZjgyZjYx
YWIxYjRhYWVmOGFiMTkxMDM2NmJjZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX3Jl
bGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEJv
dW5kZWQgc3BhY2UsIHZpZXdlciBzcGFjZSwgbG9jYWwgYW5kIGxvY2FsLWZsb29yIHNwYWNlIGhh
dmUgY29ycmVjdCBwb3NlcyB3LnIudC4gZWFjaCBvdGhlcgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1
ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1
ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWQ5ZjM5MWE3NjRmNDg4YjhmN2UzMTgyY2M4NmU4MjBiMDFmMzA1NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcmVzb2x2
ZXMgd2l0aCBnb29kIGRhdGEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1l
X2dldFZpZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZy
YW1lX2dldFZpZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZTY3ZGFm
ZWU1YzNjODEwYWQ5YTI5YTNlZDVjY2Q5OWNhNTcwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhl
IG5leHQgZnJhbWUgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKK1BBU1MgWFJGcmFtZSBnZXRW
aWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIGltbWVyc2l2ZSBzZXNzaW9u
cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYjU2MjFhNGUxYjM2ODFiYzRkZTI0NTdkNzljYmY1YmVkMmM4ODExCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQgQEAKKworUEFTUyBJZGVudGl0eSByZWZlcmVuY2Ugc3BhY2UgcHJvdmlkZXMgY29y
cmVjdCBwb3NlcyBmb3IgaW5saW5lIHNlc3Npb25zCitQQVNTIElkZW50aXR5IHJlZmVyZW5jZSBz
cGFjZSBwcm92aWRlcyBjb3JyZWN0IHBvc2VzIGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40Y2RhYzJkZTEyYTEwYzY2OWJjYjU5ODNhYTMwMmRhNTliYjY5ZjllCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgWFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMKK1BB
U1MgWFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBub24taW1tZXJzaXZlIHNlc3Npb25zCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJWaWV3X21hdGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMTNmNmJjOWU2NWVjNmYxMzQ2MTNiOWUyYjFmNDcxYmNhMzU5NDA1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorCitQQVNTIFhSRnJhbWUgY29udGFpbnMgdGhlIGV4cGVjdGVkIHZpZXdzCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBkYXRl
Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTAyMjE1OGYwYjVkYWM3MzMxZmM2ZTU4
N2EwMDkwZDNmNThiZDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSVmlldyBwcm9qZWN0aW9uIG1h
dHJpY2VzIHVwZGF0ZSBuZWFyIGFuZCBmYXIgZGVwdGhzIG9uIHRoZSBuZXh0IGZyYW1lCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzMyZmNkMDNmYzUy
MWY4YzhkYWM5MTM3NTYxOTdjMWFjNjE3ZWNhNy4uZGRlOTgxZTYzN2VmNDQxOGNjZTU2MzU4ZDQ1
YjAxOTg3NWNhZTU4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTYzOCwyNiArNjM4LDM2IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvCiB3ZWJraXQu
b3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZp
Y2VfcmVxdWVzdFNlc3Npb25fbm9fbW9kZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2Vf
cmVxdWVzdFNlc3Npb25fbm9uX2ltbWVyc2l2ZV9ub19nZXN0dXJlLmh0dHBzLmh0bWwgWyBQYXNz
IF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9vcHRpb25hbEZlYXR1cmVzLmh0dHBzLmh0bWwg
WyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkgd2Via2l0Lm9yZy9iLzIxNTYzNyBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25G
cmFtZS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5pbWF0
aW9uRnJhbWVfaW52YWxpZGhhbmRsZS5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2Iv
MjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2Zl
YXR1cmVzX2RldmljZVN1cHBvcnQuaHR0cHMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzIw
OTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1
ZXN0QW5pbWF0aW9uRnJhbWVfY2FsbGJhY2tfY2FsbHMuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1h
dGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMjA5
ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVl
c3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBzLmh0
bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFt
ZV9nZXRQb3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3Mg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2Vy
X2F2YWlsYWJpbGl0eS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5lc3Mu
aHR0cHMud2luZG93Lmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNzaW9u
U3VwcG9ydGVkX2ltbWVyc2l2ZS1hci5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLmh0bWwgWyBQYXNzIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJW
aWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4
NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfY29u
c3RydWN0b3IuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZlcl9z
YW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIvbmF2aWdhdG9yX3hyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25fc2Ft
ZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy5odG1s
IFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJl
bmNlU3BhY2VfcmVsYXRpb25zaGlwcy5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fY29uc3RydWN0b3IuaHR0
cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clJpZ2lkVHJhbnNmb3JtX2ludmVyc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX21hdHJpeC5odHRwcy5o
dG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vz
c2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFt
ZV9pbnZhbGlkaGFuZGxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2VuZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZp
Y2VTdXBwb3J0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJTZXNzaW9uX3ByZXZlbnRfbXVsdGlwbGVfZXhjbHVzaXZlLmh0dHBzLmh0
bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsgUGFz
cyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1
ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGlt
ZXN0YW1wLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFz
cyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3
ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZW5kZXJfc3RhdGVfdmVydGljYWxfZm92X2ltbWVyc2l2ZS5o
dHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3JlbmRlcl9zdGF0ZV91cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZW5kLmh0dHBzLmh0bWwgWyBQYXNzIF0K
IGh0dHAvd3B0L3dlYnhyL3hyU2Vzc2lvbl9lbmRfZGV2aWNlX3JlcG9ydHNfc2h1dGRvd24uaHR0
cHMuaHRtbCBbIFBhc3MgXQogaHR0cC93cHQvd2VieHIveHJTZXNzaW9uX2VuZGVkX2J5X3N5c3Rl
bS5odHRwcy5odG1sIFsgUGFzcyBdCiBodHRwL3dwdC93ZWJ4ci94clNlc3Npb25fcmVqZWN0X211
bHRpcGxlX2VuZC5odHRwcy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420304</attachid>
            <date>2021-02-15 04:34:07 -0800</date>
            <delta_ts>2021-02-15 11:03:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221225-20210215133406.patch</filename>
            <type>text/plain</type>
            <size>95682</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NiNTRiNzVmZmFmNzdj
N2QyM2FjNGQxM2E4YjQxZTk2MmNkNmIyYy4uODJmNTlhOWI1M2FhNzdmNmExOTBhMmQyYWZkMTY0
MmMyNzlmNWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAyMS0wMi0xNSAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4gYW5kIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdl
dFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQxMTI5MTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBy
b3ZlIFBsYXRmb3JtWFI6OkZyYW1lRGF0YSBzdHJ1Y3QuCisgICAgICAgIC0gSW1wbGVtZW50IFdl
YlhSRnJhbWUgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZS4KKyAgICAgICAgLSBJbXBsZW1lbnQg
V2ViWFJSZWZlcmVuY2VTcGFjZSBvZmZzZXQsIG9yaWdpbiBhbmQgZWZmZWN0aXZlIHRyYW5mb3Jt
cy4KKyAgICAgICAgLSBJbXBsZW1lbnQgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UgbmF0aXZl
T3JpZ2luLgorICAgICAgICAtIEFwcGx5IGZyYW1lIHVwZGF0ZXMgaW4gV2ViWFJTZXNzaW9uLgor
ICAgICAgICAtIEltcGxlbWVudCB2aWV3cyBmb3IgT3BlblhSIGFuZCBEdW1teUlubGluZURldmlj
ZSBpbmxpbmUgc2Vzc2lvbnMuCisgICAgICAgIC0gUXVlcnkgYW5kIGNvbXBsZXRlIGFsbCB0aGUg
bmV3IEZyYW1lRGF0YSBpbiB0aGUgT3BlblhSIHBvcnQuCisgICAgICAgIC0gQ29tcGxldGUgdGhl
IFdlYkZha2VYUkRldmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorCisg
ICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgV1BUIHRlc3RzCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVtZW50IG5hdGl2ZU9y
aWdpbmEgYW5kIGdldE9mZnNldFJlZmVyZW5jZVNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Ym91
bmRzR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSRnJhbWUuY3BwOiBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0
UG9zZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
RnJhbWU6Om11c3RQb3Nlc0JlTGltaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1l
Ojpwb3B1bGF0ZVBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Z2V0Vmlld2Vy
UG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpnZXRQb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlv
bi4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSRnJhbWU6OnNldEZyYW1lRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmlkbDogYWRkIE1heVRocm93RXhjZXB0aW9uLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuY3BwOiBBZGQgV2ViWFJSaWdpZFRyYW5zZm9ybSBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXIuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJQb3NlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJQb3NlOjpXZWJY
UlBvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlBvc2U6OmlzVmlld2VyUG9zZSBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuaWRsOiBSZW1vdmUgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQor
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVt
ZW50IG9mZnNldCwgb3JpZ2luIGFuZCBlZmZlY3RpdmUgdHJhbmZvcm1zLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmZsb29yT3JpZ2luVHJhbnNmb3Jt
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVy
ZW5jZVNwYWNlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaWRsOiBBZGQgU2tpcFZUYWJsZVZhbGlkYXRpb24uCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6IEFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZy
YW1lLiBBZGQgYWN0aXZlIHZpZXdzIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Np
b246OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVl
c3RSZWZlcmVuY2VTcGFjZSk6IFVzZSBXZWFrUHRyIGluc3RlYWQgUmVmIGZvciBXZWJYUlNlc3Np
b24uCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpwb3Nlc0NhbkJlUmVwb3J0ZWQgY29uc3QpOiBhZGQKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIG5hdGl2ZU9yaWdpbiBhbmQgZWZmZWN0aXZlT3Jp
Z2luIG1lbWJlciBmdW5jdGlvbnMuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6V2ViWFJTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJTcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNlOjppc1JlZmVyZW5jZVNwYWNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzQm91bmRlZFJlZmVyZW5jZVNw
YWNlIGNvbnN0KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOiBJ
bXBsZW1lbnQgdmlld3MgZm9yIER1bW15SW5saW5lRGV2aWNlLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjp2aWV3cyBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwOiBQYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm0gaW4gdGhlIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpXZWJYUlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJWaWV3OjpzZXRQcm9qZWN0aW9uTWF0cml4KTogVXNlIHN0ZDo6YXJyYXkgdG8gbWF0Y2ggZGV2
aWNlIGRhdGEuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSVmlldzo6cHJvamVjdGlvbk1hdHJpeCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlZpZXc6OnRyYW5zZm9ybSBjb25zdCk6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSVmlld2VyUG9zZS5jcHA6IEFkZCB2aWV3cyBzZXR0ZXIuIEFkZCBzcGVjaWFs
aXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpzZXRWaWV3cyk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSVmlld2VyUG9zZS5pZGw6IFJlbW92ZSBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LiBBZGQgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9YUkV5ZS5oOiBSZXVzZSBQbGF0Zm9ybVhSIGVudW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDogQWRkIHByb2plY3Rp
b24gbWF0cml4IHV0aWxpdHkgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6IEltcHJvdmUgRnJhbWVEYXRhLgorCisgICAgICAgICogcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOiBRdWVyeSBhbmQgY29tcGxldGUgYWxs
IHRoZSBuZXcgRnJhbWVEYXRhLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpj
cmVhdGVSZWZlcmVuY2VTcGFjZSk6IGFkZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbik6IFF1ZXJ5IHJlc29s
dXRpb24gZGF0YSBmcm9tIE9wZW5YUi4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmlj
ZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKTogSW5pdGlhbGl6ZSBsb2NhbCBhbmQg
dmlldyBYclNwYWNlcy4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6aW5pdGlh
bGl6ZVJlZmVyZW5jZVNwYWNlKTogTGF6aWx5IGluaXRpYWxpemUgc3RhZ2UgWHJTcGFjZS4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6OlhyUG9zZWZUb1Bvc2UpOiBhZGQgaGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoUGxhdGZvcm1YUjo6eHJWaWV3VG9Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlvbi4K
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKTogQ29tcGxl
dGUgYWxsIHRoZSBuZXcgZnJhbWUgRGF0YQorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2
aWNlOjp2aWV3cyBjb25zdCk6IEltcGxlbWVudCB2aWV3IGRhdGEgZm9yIE9wZW5YUgorICAgICAg
ICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmg6CisKKyAgICAgICAgKiB0
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IENvbXBsZXRlIHRoZSByZXF1aXJlZCBpbXBsZW1l
bnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6RmFrZVhSVmll
dzo6c2V0UHJvamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGYWtlWFJWaWV3OjpzZXRGaWVs
ZE9mVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Vmlld3MpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhclZpZXdlck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Rmxvb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaDoKKwogMjAyMS0wMi0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBEb24ndCB1cGRhdGUgZm9ybSBjb250cm9sIGVsZW1lbnRz
IHZhbGlkaXR5IHN0YXR1cyBpZiB0aGV5IGFyZSBkZXRhY2hlZCBmcm9tIHRoZSBkb2N1bWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDQ0ZWQ2MmJkY2Q1NmZiZTgyNzk0MDFlMzA2MDM4
OGQ3M2Y0OTFmZC4uM2ZlNjk4MDc2MGQzMzIzYWRlZWNkZDE5ZGU3ODk1ZmM0ZWNiZjhkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTI5LDI5ICsyOSw2MyBAQAogI2lmIEVOQUJMRShXRUJY
UikKIAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHkuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Np
b24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZSk7CiAKLVJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1JlZjxXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVmZXJl
bmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHR5cGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVu
dCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUp
KTsKIH0KIAotV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBY
UlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQotICAgIDogV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1
bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlwZSkKKworUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlPiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFu
c2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZN
b3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsKK30KKworCitXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRy
YW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCisgICAgOiBXZWJY
UlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNl
dCksIHR5cGUpCiB7CiB9CiAKIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjp+V2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoKSA9IGRlZmF1bHQ7CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAoreworICAgIC8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnJlZmVyZW5jZXNw
YWNldHlwZS1ib3VuZGVkLWZsb29yLgorICAgIC8vIEJvdW5kZWQgZmxvb3Igc3BhY2Ugc2hvdWxk
IGJlIGF0IHRoZSBzYW1lIGhlaWdodCBhcyBsb2NhbCBmbG9vciBzcGFjZS4KKyAgICByZXR1cm4g
Zmxvb3JPcmlnaW5UcmFuc2Zvcm0oKTsKK30KKwogY29uc3QgVmVjdG9yPFJlZjxET01Qb2ludFJl
YWRPbmx5Pj4mIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpib3VuZHNHZW9tZXRyeSgpIGNv
bnN0CiB7CisgICAgLy8gRklYTUU6IGdldCBkYXRhIGZyb20gZGV2aWNlCiAgICAgcmV0dXJuIG1f
Ym91bmRzR2VvbWV0cnk7CiB9CiAKKworUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJY
UlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0pCit7CisgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChpczxE
b2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7CisKKyAgICAvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVuY2VzcGFjZS1nZXRvZmZz
ZXRyZWZlcmVuY2VzcGFjZQorICAgIC8vIFNldCBvZmZzZXRTcGFjZeKAmXMgb3JpZ2luIG9mZnNl
dCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9yaWdpbiBvZmZzZXQgYnkg
b3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNlLgorICAgIGF1dG8gb2Zm
c2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG1fb3JpZ2luT2Zmc2V0LT5yYXdUcmFu
c2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7CisKKyAgICAvLyBGSVhN
RTogc2V0IG9mZnNldFNwYWNl4oCZcyBib3VuZHNHZW9tZXRyeSB0byBiYXNl4oCZcyBib3VuZHNH
ZW9tZXRyeSwgd2l0aCBlYWNoIHBvaW50IG11bHRpcGxpZWQgYnkgdGhlIGludmVyc2Ugb2Ygb3Jp
Z2luT2Zmc2V0LgorICAgIHJldHVybiBjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4obV9zZXNzaW9uKSwgV1RG
TW92ZShvZmZzZXQpLCBtX3R5cGUpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaAppbmRleCA3MWE5Zjk3MGE3
MzAxYmQ0ZjA0ZTRjMGJiZWU4MWVhZWVhM2Y0NGQ3Li4wNjIzOTE4MmFlMTE5MDRlNDhlMThmMzBh
OGRiNWU5OWYzNDZjMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCkBAIC0yNSwxMyArMjUsMTMgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpZiBFTkFCTEUoV0VCWFIpCisKICNpbmNsdWRlICJXZWJYUlJl
ZmVyZW5jZVNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBFTkFCTEUoV0VCWFIpCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NUG9pbnRSZWFkT25seTsKQEAgLTM5LDE4
ICszOSwyNSBAQCBjbGFzcyBET01Qb2ludFJlYWRPbmx5OwogY2xhc3MgV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UgOiBwdWJsaWMgV2ViWFJSZWZlcmVuY2VTcGFjZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50Jiwg
UmVmPFdlYlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBS
ZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYWtQdHI8
V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJY
UlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSk7CiAKICAgICB2aXJ0dWFsIH5XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSgpOwogCisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAgICAg
Y29uc3QgVmVjdG9yPFJlZjxET01Qb2ludFJlYWRPbmx5Pj4mIGJvdW5kc0dlb21ldHJ5KCkgY29u
c3Q7CisgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IGdldE9mZnNldFJlZmVyZW5jZVNw
YWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYs
IFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShE
b2N1bWVudCYsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworCisgICAgYm9vbCBpc0JvdW5kZWRSZWZlcmVu
Y2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFZlY3RvcjxSZWY8
RE9NUG9pbnRSZWFkT25seT4+IG1fYm91bmRzR2VvbWV0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCWFJTUEFDRShXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZSwgaXNCb3VuZGVkUmVmZXJlbmNlU3BhY2UoKSkKKwogI2VuZGlmIC8v
IEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
Y3BwCmluZGV4IGYyNzg3NjFiMGE3YjdkMjlkMTc5NDIyMzUwYTJhYTE5OGEyM2JkZWMuLjhhN2Ux
NzEzMzUxNjUyNTA5MjVhNThiNjVlOWQ3OTFjNmJhZmZlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMjgsMzUgKzI4LDIyMSBAQAogCiAjaWYg
RU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaCIK
KyNpbmNsdWRlICJXZWJYUlJlZmVyZW5jZVNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9u
LmgiCiAjaW5jbHVkZSAiV2ViWFJWaWV3ZXJQb3NlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJYUkZyYW1lKTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6OmNy
ZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCitSZWY8V2ViWFJGcmFtZT4gV2ViWFJG
cmFtZTo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgSXNBbmltYXRpb25GcmFt
ZSBpc0FuaW1hdGlvbkZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJh
bWUoV1RGTW92ZShzZXNzaW9uKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJh
bWUoV1RGTW92ZShzZXNzaW9uKSwgaXNBbmltYXRpb25GcmFtZSkpOwogfQogCi1XZWJYUkZyYW1l
OjpXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKLSAgICA6IG1fc2Vzc2lv
bihXVEZNb3ZlKHNlc3Npb24pKQorV2ViWFJGcmFtZTo6V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNz
aW9uPiYmIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKKyAgICA6
IG1faXNBbmltYXRpb25GcmFtZShpc0FuaW1hdGlvbkZyYW1lID09IElzQW5pbWF0aW9uRnJhbWU6
OlllcykKKyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQogewogfQogCiBXZWJYUkZy
YW1lOjp+V2ViWFJGcmFtZSgpID0gZGVmYXVsdDsKIAogCi1SZWZQdHI8V2ViWFJWaWV3ZXJQb3Nl
PiBXZWJYUkZyYW1lOjpnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKQor
Citib29sIFdlYlhSRnJhbWU6OmlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5j
ZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmIHNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJikgY29uc3QK
K3sKKyAgICBpZiAoIWlzPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPihzcGFjZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiByZXR1cm4gdHJ1ZSB3aGVuZXZlciB0
aGUgZGlzdGFuY2UgZnJvbSB0aGUgYm91bmRlZCBnZW9tZXRyeSBvZgorICAgIC8vIHxzcGFjZXwg
dG8gdGhlIG5hdGl2ZSBvcmlnaW4gb2YgfG90aGVyfCBzcGFjZSBpcyBncmVhdGVyIHRoYW4gMW0K
KyAgICAvLyAoc3VnZ2VzdGVkIGJ5IHNwZWNzKS4KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBXZWJYUkZyYW1lOjppc0xvY2FsUmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYg
c3BhY2UpIGNvbnN0Cit7CisgICAgaWYgKCFpczxXZWJYUlJlZmVyZW5jZVNwYWNlPihzcGFjZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gdHlwZSA9IGRvd25jYXN0PFdlYlhS
UmVmZXJlbmNlU3BhY2U+KHNwYWNlKS50eXBlKCk7CisgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVu
Y2VTcGFjZVR5cGU6OkxvY2FsIHx8IHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2Fs
Rmxvb3IpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNwb3Nlcy1tdXN0LWJlLWxp
bWl0ZWQKK2Jvb2wgV2ViWFJGcmFtZTo6bXVzdFBvc2VzQmVMaW1pdGVkKGNvbnN0IFdlYlhSU3Bh
Y2UmIHNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJiBiYXNlU3BhY2UpIGNvbnN0Cit7CisgICAgaWYg
KGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5jZVNwYWNlKHNwYWNlLCBiYXNl
U3BhY2UpCisgICAgICAgIHx8IGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5j
ZVNwYWNlKGJhc2VTcGFjZSwgc3BhY2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
IChpc0xvY2FsUmVmZXJlbmNlU3BhY2Uoc3BhY2UpIHx8IGlzTG9jYWxSZWZlcmVuY2VTcGFjZShi
YXNlU3BhY2UpKSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZGlzdGFuY2UgYmV0d2VlbiBu
YXRpdmUgb3JpZ2lucyBvZiBzcGFjZXMgaXMgZ3JlYXRlcgorICAgICAgICAvLyB0aGFuIDE1bSAo
c3VnZ2VzdGVkIGJ5IHNwZWNzKSByZXR1cm4gdHJ1ZS4KKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKworc3RydWN0IFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2UgeworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICBib29sIGVtdWxhdGVkUG9zaXRpb24geyBm
YWxzZSB9OworfTsKKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8j
cG9wdWxhdGUtdGhlLXBvc2UKK0V4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVs
YXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBXZWJYUlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNl
KQoreworICAgIC8vIDEuIElmIGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiBpcyBmYWxzZSwgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICgh
bV9hY3RpdmUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OworCisgICAgLy8gMi4gTGV0IHNlc3Npb24gYmUgZnJhbWXigJlzIHNlc3Npb24gb2JqZWN0Lgor
ICAgIC8vIDMuIElmIHNwYWNl4oCZcyBzZXNzaW9uIGRvZXMgbm90IGVxdWFsIHNlc3Npb24sIHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAo
c3BhY2Uuc2Vzc2lvbigpLmdldCgpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyA0LiBJZiBiYXNlU3Bh
Y2XigJlzIHNlc3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChiYXNlU3BhY2Uuc2Vzc2lv
bigpLmdldCgpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyA1LiBDaGVjayBpZiBwb3NlcyBtYXkgYmUg
cmVwb3J0ZWQgYW5kLCBpZiBub3QsIHRocm93IGEgU2VjdXJpdHlFcnJvciBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCisgICAgaWYgKCFtX3Nlc3Npb24tPnBvc2VzQ2FuQmVSZXBvcnRlZChkb2N1bWVu
dCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CisKKyAgICAv
LyA2LiBMZXQgbGltaXQgYmUgdGhlIHJlc3VsdCBvZiB3aGV0aGVyIHBvc2VzIG11c3QgYmUgbGlt
aXRlZCBiZXR3ZWVuIHNwYWNlIGFuZCBiYXNlU3BhY2UuCisgICAgYm9vbCBsaW1pdCA9IG11c3RQ
b3Nlc0JlTGltaXRlZChzcGFjZSwgYmFzZVNwYWNlKTsKKworICAgIC8vIDcuIExldCB0cmFuc2Zv
cm0gYmUgcG9zZeKAmXMgdHJhbnNmb3JtLgorICAgIC8vIDguIFF1ZXJ5IHRoZSBYUiBkZXZpY2Un
cyB0cmFja2luZyBzeXN0ZW0gZm9yIHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZlIHRvIGJhc2VTcGFj
ZSBhdCB0aGUgZnJhbWXigJlzIHRpbWUuCisKKyAgICBpZiAoIW1fZGF0YS5pc1RyYWNraW5nVmFs
aWQpIHsKKyAgICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZl
IHRvIGJhc2VTcGFjZSBoYXMgYmVlbiBkZXRlcm1pbmVkIGluIHRoZSBwYXN0LgorICAgICAgICAv
LyBBbnl3YXkgdGhpcyBlbXVsYXRpb24gaXMgdXN1YWxseSBwcm92aWRlZCBieSB0aGUgc3lzdGVt
IGluIHRoZSBwb3NlIChlLmcuIE9wZW5YUikKKyAgICAgICAgLy8gc28gd2Ugc2hvdWxkbid0IGhp
dCB0aGlzIHBhdGggaW4gbW9zdCBYUlBsYXRmb3JtIHBvcnRzLgorICAgICAgICByZXR1cm4geyBX
VEY6Om51bGxvcHQgfTsKKyAgICB9CisKKyAgICBhdXRvIGJhc2VUcmFuc2Zvcm0gPSBiYXNlU3Bh
Y2UuZWZmZWN0aXZlT3JpZ2luKCk7CisgICAgaWYgKCFiYXNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJs
ZSgpKQorICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKworICAgIGF1dG8gdHJhbnNm
b3JtID0gICpiYXNlVHJhbnNmb3JtLmludmVyc2UoKSAqIHNwYWNlLmVmZmVjdGl2ZU9yaWdpbigp
OworICAgIGNvbnN0IGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IG1fZGF0YS5pc1Bvc2l0aW9uRW11
bGF0ZWQgfHwgIW1fZGF0YS5pc1Bvc2l0aW9uVmFsaWQ7CisKKyAgICBpZiAobGltaXQpIHsKKyAg
ICAgICAgLy8gRklYTUU6IGFwcGx5IHBvc2UgbGltaXRzIGxvZ2ljCisgICAgICAgIC8vIGh0dHBz
Oi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Bvc2VzLW11c3QtYmUtbGltaXRlZAor
ICAgIH0KKworICAgIHJldHVybiB7IFBvcHVsYXRlZFBvc2UgeyB0cmFuc2Zvcm0sIGVtdWxhdGVk
UG9zaXRpb24gfSB9OworfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dl
YnhyLyNkb20teHJmcmFtZS1nZXR2aWV3ZXJwb3NlCitFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJW
aWV3ZXJQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9zZShjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmIHJlZmVyZW5jZVNwYWNlKQoreworICAg
IC8vIDEuIExldCBmcmFtZSBiZSB0aGlzLgorICAgIC8vIDIuIExldCBzZXNzaW9uIGJlIGZyYW1l
4oCZcyBzZXNzaW9uIG9iamVjdC4KKyAgICAvLyAzLiBJZiBmcmFtZeKAmXMgYW5pbWF0aW9uRnJh
bWUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0
IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9pc0FuaW1hdGlvbkZyYW1lKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIDQuIExldCBwb3Nl
IGJlIGEgbmV3IFhSVmlld2VyUG9zZSBvYmplY3QgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNl
c3Npb24uCisgICAgLy8gNS4gUG9wdWxhdGUgdGhlIHBvc2Ugb2Ygc2Vzc2lvbuKAmXMgdmlld2Vy
IHJlZmVyZW5jZSBzcGFjZSBpbiByZWZlcmVuY2VTcGFjZSBhdCB0aGUgdGltZSByZXByZXNlbnRl
ZCBieSBmcmFtZSBpbnRvIHBvc2UuCisgICAgYXV0byBwb3B1bGF0ZVBvc2VSZXN1bHQgPSBwb3B1
bGF0ZVBvc2UoZG9jdW1lbnQsIG1fc2Vzc2lvbi0+dmlld2VyUmVmZXJlbmNlU3BhY2UoKSwgcmVm
ZXJlbmNlU3BhY2UpOworICAgIGlmIChwb3B1bGF0ZVBvc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwor
CisgICAgLy8gNi4gSWYgcG9zZSBpcyBudWxsIHJldHVybiBudWxsLgorICAgIGF1dG8gcG9wdWxh
dGVWYWx1ZSA9IHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBp
ZiAoIXBvcHVsYXRlVmFsdWUuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBwb3NlID0gV2ViWFJWaWV3ZXJQb3NlOjpjcmVh
dGUoV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKHBvcHVsYXRlVmFsdWUtPnRyYW5zZm9ybSks
IHBvcHVsYXRlVmFsdWUtPmVtdWxhdGVkUG9zaXRpb24pOworCisgICAgLy8gNy4gTGV0IHhydmll
d3MgYmUgYW4gZW1wdHkgbGlzdC4KKyAgICBWZWN0b3I8UmVmPFdlYlhSVmlldz4+IHhyVmlld3M7
CisgICAgLy8gOC4gRm9yIGVhY2ggYWN0aXZlIHZpZXcgdmlldyBpbiB0aGUgbGlzdCBvZiB2aWV3
cyBvbiBzZXNzaW9uLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgZm9yIChhdXRv
JiB2aWV3IDogbV9zZXNzaW9uLT52aWV3cygpKSB7CisgICAgICAgIGF1dG8gaW5kZXggPSB4clZp
ZXdzLnNpemUoKTsKKyAgICAgICAgaWYgKCF2aWV3LmFjdGl2ZSB8fCBtX2RhdGEudmlld3Muc2l6
ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gOC4xIExl
dCB4cnZpZXcgYmUgYSBuZXcgWFJWaWV3IG9iamVjdCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Yg
c2Vzc2lvbi4KKyAgICAgICAgLy8gOC4yIEluaXRpYWxpemUgeHJ2aWV34oCZcyB1bmRlcmx5aW5n
IHZpZXcgdG8gdmlldy4KKyAgICAgICAgLy8gOC4zIEluaXRpYWxpemUgeHJ2aWV34oCZcyBleWUg
dG8gdmlld+KAmXMgZXllLgorICAgICAgICAvLyA4LjQgSW5pdGlhbGl6ZSB4cnZpZXfigJlzIGZy
YW1lIHRpbWUgdG8gZnJhbWXigJlzIHRpbWUuCisgICAgICAgIC8vIDguNSBJbml0aWFsaXplIHhy
dmlld+KAmXMgc2Vzc2lvbiB0byBzZXNzaW9uLgorICAgICAgICAvLyA4LjYuIExldCBvZmZzZXQg
YmUgYW4gbmV3IFhSUmlnaWRUcmFuc2Zvcm0gb2JqZWN0IGVxdWFsIHRvIHRoZSB2aWV3IG9mZnNl
dCBvZiB2aWV3IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBzZXNzaW9uLgorICAgICAgICAvLyA4
LjcuIFNldCB4cnZpZXfigJlzIHRyYW5zZm9ybSBwcm9wZXJ0eSB0byB0aGUgcmVzdWx0IG9mIG11
bHRpcGx5aW5nIHRoZSBYUlZpZXdlclBvc2UncyB0cmFuc2Zvcm0gYnkgdGhlIG9mZnNldCB0cmFu
c2Zvcm0gaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNlc3Npb24KKyAgICAgICAgYXV0byBvZmZz
ZXQgPSBtYXRyaXhGcm9tUG9zZShtX2RhdGEudmlld3NbaW5kZXhdLm9mZnNldCk7CisgICAgICAg
IGF1dG8gdHJhbnNmb3JtID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKHBvc2UtPnRyYW5z
Zm9ybSgpLnJhd1RyYW5zZm9ybSgpICogb2Zmc2V0KTsKKworICAgICAgICAvLyBTZXQgcHJvamVj
dGlvbiBtYXRyaXggZm9yIGVhY2ggdmlldworICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCAxNj4g
cHJvamVjdGlvbiA9IHN3aXRjaE9uKG1fZGF0YS52aWV3c1tpbmRleF0ucHJvamVjdGlvbiwgWyZd
KGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3YmIGZvdikgeworICAgICAg
ICAgICAgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7
CisgICAgICAgICAgICBkb3VibGUgZmFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRo
RmFyKCk7CisgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9q
ZWN0aW9uKGZvdi51cCwgZm92LmRvd24sIGZvdi5sZWZ0LCBmb3YucmlnaHQsIG5lYXIsIGZhciku
dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IHN0ZDo6YXJy
YXk8ZmxvYXQsIDE2PiYgbWF0cml4KSB7CisgICAgICAgICAgICByZXR1cm4gbWF0cml4OworICAg
ICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CisgICAgICAgICAgICAvLyBVc2UgYXNwZWN0
IHByb2plY3Rpb24gZm9yIGlubGluZSBzZXNzaW9ucworICAgICAgICAgICAgZG91YmxlIGZvdiA9
ICBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuaW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpLnZh
bHVlT3IocGlPdmVyVHdvRG91YmxlKTsKKyAgICAgICAgICAgIGZsb2F0IGFzcGVjdCA9IDE7Cisg
ICAgICAgICAgICBhdXRvIGxheWVyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmJhc2VMYXll
cigpOworICAgICAgICAgICAgaWYgKGxheWVyKQorICAgICAgICAgICAgICAgIGFzcGVjdCA9IHN0
YXRpY19jYXN0PGRvdWJsZT4obGF5ZXItPmZyYW1lYnVmZmVyV2lkdGgoKSkgLyBzdGF0aWNfY2Fz
dDxkb3VibGU+KGxheWVyLT5mcmFtZWJ1ZmZlckhlaWdodCgpKTsKKyAgICAgICAgICAgIGRvdWJs
ZSBuZWFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRoTmVhcigpOworICAgICAgICAg
ICAgZG91YmxlIGZhciA9IG1fc2Vzc2lvbi0+cmVuZGVyU3RhdGUoKS5kZXB0aEZhcigpOworICAg
ICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpmcm9tUHJvamVjdGlvbihmb3Ys
IGFzcGVjdCwgbmVhciwgZmFyKS50b0NvbHVtbk1ham9yRmxvYXRBcnJheSgpOworICAgICAgICB9
KTsKKworICAgICAgICBhdXRvIHhyVmlldyA9IFdlYlhSVmlldzo6Y3JlYXRlKHZpZXcuZXllLCBX
VEZNb3ZlKHRyYW5zZm9ybSksIEZsb2F0MzJBcnJheTo6Y3JlYXRlKHByb2plY3Rpb24uZGF0YSgp
LCBwcm9qZWN0aW9uLnNpemUoKSkpOworCisgICAgICAgIC8vICA4LjguIEFwcGVuZCB4cnZpZXcg
dG8geHJ2aWV3cworICAgICAgICB4clZpZXdzLmFwcGVuZChXVEZNb3ZlKHhyVmlldykpOworICAg
IH0KKworICAgIC8vIDkuIFNldCBwb3Nl4oCZcyB2aWV3cyB0byB4cnZpZXdzCisgICAgcG9zZS0+
c2V0Vmlld3MoV1RGTW92ZSh4clZpZXdzKSk7CisKKyAgICAvLyAxMC4gUmV0dXJuIHBvc2UuCisg
ICAgcmV0dXJuIHBvc2U7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBXZWJY
UkZyYW1lOjpnZXRQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgV2ViWFJTcGFj
ZSYgc3BhY2UsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSkKIHsKLSAgICByZXR1cm4geyB9
OworICAgIC8vIDEuIExldCBmcmFtZSBiZSB0aGlzLgorICAgIC8vIDIuIExldCBwb3NlIGJlIGEg
bmV3IFhSUG9zZSBvYmplY3QgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIGZyYW1lLgorICAgIC8v
IDMuIFBvcHVsYXRlIHRoZSBwb3NlIG9mIHNwYWNlIGluIGJhc2VTcGFjZSBhdCB0aGUgdGltZSBy
ZXByZXNlbnRlZCBieSBmcmFtZSBpbnRvIHBvc2UuCisKKyAgICBhdXRvIHBvcHVsYXRlUG9zZVJl
c3VsdCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgc3BhY2UsIGJhc2VTcGFjZSk7CisgICAgaWYg
KHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHBvcHVs
YXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIHBvcHVsYXRlVmFs
dWUgPSBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKCFw
b3B1bGF0ZVZhbHVlLmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Ly8gNC4gUmV0dXJuIHBvc2UuCisgICAgcmV0dXJuIFJlZlB0cjxXZWJYUlBvc2U+KFdlYlhSUG9z
ZTo6Y3JlYXRlKFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShwb3B1bGF0ZVZhbHVlLT50cmFu
c2Zvcm0pLCBwb3B1bGF0ZVZhbHVlLT5lbXVsYXRlZFBvc2l0aW9uKSk7CiB9CiAKLVJlZlB0cjxX
ZWJYUlBvc2U+IFdlYlhSRnJhbWU6OmdldFBvc2UoY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdl
YlhSU3BhY2UmKQorVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBv
c2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2UmIHBvc2UpCiB7Ci0g
ICAgcmV0dXJuIHsgfTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7CisgICAgbWF0
cml4LnRyYW5zbGF0ZTNkKHBvc2UucG9zaXRpb24ueCgpLCBwb3NlLnBvc2l0aW9uLnkoKSwgcG9z
ZS5wb3NpdGlvbi56KCkpOworICAgIG1hdHJpeC5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6ZnJvbVF1YXRlcm5pb24ocG9zZS5vcmllbnRhdGlvbi54LCBwb3NlLm9yaWVudGF0aW9uLnks
IHBvc2Uub3JpZW50YXRpb24ueiwgcG9zZS5vcmllbnRhdGlvbi53KSk7CisgICAgcmV0dXJuIG1h
dHJpeDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaAppbmRleCAyYTI2YWQ4NmEyYzMwZGE4YzIzZGZiNmM3YmJiOTAz
ODJkMTJlMDVkLi43MTk2NGMxYzRjMjE5ZDU4NjE4MmQ2YTQ2ZWMxZjA1YjQxNTczMDYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtMjgsNiArMjgsOCBA
QAogI2lmIEVOQUJMRShXRUJYUikKIAogI2luY2x1ZGUgIkRPTUhpZ2hSZXNUaW1lU3RhbXAuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC0zNSw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBXZWJYUlBvc2U7CiBjbGFzcyBXZWJYUlJlZmVyZW5j
ZVNwYWNlOwogY2xhc3MgV2ViWFJTZXNzaW9uOwpAQCAtNDQsMjMgKzQ3LDM4IEBAIGNsYXNzIFdl
YlhSVmlld2VyUG9zZTsKIGNsYXNzIFdlYlhSRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJY
UkZyYW1lPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUkZyYW1lKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYm
KTsKKyAgICBlbnVtIGNsYXNzIElzQW5pbWF0aW9uRnJhbWUgOiBib29sIHsgTm8sIFllcyB9Owor
ICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYsIElz
QW5pbWF0aW9uRnJhbWUpOwogICAgIH5XZWJYUkZyYW1lKCk7CiAKICAgICBjb25zdCBXZWJYUlNl
c3Npb24mIHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KIAotICAg
IFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+IGdldFZpZXdlclBvc2UoY29uc3QgV2ViWFJSZWZlcmVu
Y2VTcGFjZSYpOwotICAgIFJlZlB0cjxXZWJYUlBvc2U+IGdldFBvc2UoY29uc3QgV2ViWFJTcGFj
ZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3
ZXJQb3NlPj4gZ2V0Vmlld2VyUG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFdlYlhSUmVmZXJl
bmNlU3BhY2UmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJQb3NlPj4gZ2V0UG9zZShj
b25zdCBEb2N1bWVudCYsIGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CiAK
ICAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRp
bWU7IH0KKyAgICB2b2lkIHNldEZyYW1lRGF0YShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YSYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQorCiAgICAgdm9pZCBzZXRBY3Rp
dmUoYm9vbCBhY3RpdmUpIHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0KICAgICBib29sIGlzQWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KIAorICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtYXRyaXhGcm9tUG9zZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YTo6UG9zZSYpOworCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlhSRnJhbWUoUmVmPFdlYlhS
U2Vzc2lvbj4mJik7CisgICAgZXhwbGljaXQgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYm
LCBJc0FuaW1hdGlvbkZyYW1lKTsKKyAgICBXZWJYUkZyYW1lKFdlYlhSU2Vzc2lvbiYsIGJvb2wg
aXNBbmltYXRpb25GcmFtZSk7CisKKyAgICBib29sIGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91
bmRlZFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJikg
Y29uc3Q7CisgICAgYm9vbCBpc0xvY2FsUmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYp
IGNvbnN0OworICAgIGJvb2wgbXVzdFBvc2VzQmVMaW1pdGVkKGNvbnN0IFdlYlhSU3BhY2UmLCBj
b25zdCBXZWJYUlNwYWNlJikgY29uc3Q7CisKKyAgICBzdHJ1Y3QgUG9wdWxhdGVkUG9zZTsKKyAg
ICBFeGNlcHRpb25PcjxPcHRpb25hbDxQb3B1bGF0ZWRQb3NlPj4gcG9wdWxhdGVQb3NlKGNvbnN0
IERvY3VtZW50JiwgY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogICAg
IGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OwotICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgbV90aW1l
OworICAgIGJvb2wgbV9pc0FuaW1hdGlvbkZyYW1lIHsgZmFsc2UgfTsKKyAgICBET01IaWdoUmVz
VGltZVN0YW1wIG1fdGltZSB7IDAgfTsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YSBtX2RhdGE7CiAgICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwKaW5kZXggMjFmY2YzY2ZlNGQ5
Yzc1ZmQ3ZjQ2OGU0OTdkYjhlODAwN2I4YWRmMi4uZDM0MDI2NWIyMmQ4ODkyM2VlMmRjMjVhNzdk
ZGI4Mzc5ZGE1NDBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUuaWRsCkBAIC0zMyw2ICszMyw2IEBACiBdIGludGVyZmFjZSBXZWJYUkZyYW1lIHsKICAgICBb
U2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSU2Vzc2lvbiBzZXNzaW9uOwogCi0g
ICAgV2ViWFJWaWV3ZXJQb3NlPyBnZXRWaWV3ZXJQb3NlKFdlYlhSUmVmZXJlbmNlU3BhY2UgcmVm
ZXJlbmNlU3BhY2UpOwotICAgIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNwYWNlIHNwYWNlLCBX
ZWJYUlNwYWNlIGJhc2VTcGFjZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBDYWxsV2l0aD1E
b2N1bWVudF0gV2ViWFJWaWV3ZXJQb3NlPyBnZXRWaWV3ZXJQb3NlKFdlYlhSUmVmZXJlbmNlU3Bh
Y2UgcmVmZXJlbmNlU3BhY2UpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9RG9j
dW1lbnRdIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNwYWNlIHNwYWNlLCBXZWJYUlNwYWNlIGJh
c2VTcGFjZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlBvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuY3Bw
CmluZGV4IDFjNWY4MGE1NDQ1NWNiZThmY2IwNzJkNTQ3YjMxOTZhOTg4Nzg2NTguLjMzOTlkOGFl
NTAwM2UyYWU0M2MwMWU0NmJkMDMzYjA5MTNiMjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSUG9zZS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlBvc2UpOwogCi1SZWY8
V2ViWFJQb3NlPiBXZWJYUlBvc2U6OmNyZWF0ZSgpCitSZWY8V2ViWFJQb3NlPiBXZWJYUlBvc2U6
OmNyZWF0ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0
ZWRQb3NpdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlBvc2UpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxh
dGVkUG9zaXRpb24pKTsKIH0KIAotV2ViWFJQb3NlOjpXZWJYUlBvc2UoKQotICAgIDogbV90cmFu
c2Zvcm0oV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCitXZWJYUlBvc2U6OldlYlhSUG9z
ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0ZWRQb3Np
dGlvbikKKyAgICA6IG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSksIG1fZW11bGF0ZWRQ
b3NpdGlvbihlbXVsYXRlZFBvc2l0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlBvc2UuaAppbmRleCAyOTkxOWQyNGMzOTUzYWEzOWEyYzQ4OTRiYzdjY2U1YzI5
YzE3ZTZhLi5lYzU3OTA2ODMxNjQyNWQ4ZTk4MjMzMTk3YjY5OTBiNDE4Y2JhMWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNw
cmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdFQlhSKQotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Yy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpA
QCAtMzgsMTQgKzM3LDE2IEBAIGNsYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm07CiBjbGFzcyBXZWJY
UlBvc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlBvc2U+IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFdlYlhSUG9zZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlBvc2U+
IGNyZWF0ZSgpOwotICAgIH5XZWJYUlBvc2UoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSUG9zZT4g
Y3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRpb24p
OworICAgIHZpcnR1YWwgfldlYlhSUG9zZSgpOwogCiAgICAgY29uc3QgV2ViWFJSaWdpZFRyYW5z
Zm9ybSYgdHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKCkgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3ZXJQb3NlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKwogcHJvdGVjdGVkOgotICAgIFdlYlhSUG9zZSgpOworICAgIFdlYlhSUG9zZShSZWY8
V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKIAogICAgIFJl
ZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKICAgICBib29sIG1fZW11bGF0ZWRQ
b3NpdGlvbiB7IGZhbHNlIH07CkBAIC01Myw0ICs1NCw5IEBAIHByb3RlY3RlZDoKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCWFJQ
T1NFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSAgICAgICAgICAgICAgICAgICAgXAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5hbWUpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6V2ViWFJQb3NlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LnByZWRpY2F0ZTsg
fSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwKaW5kZXggNGM0
ZTlkYWRjOGVhMGFmMzE1MTg2OTQxOTNiOTI0OTY0NDc4ODAyNi4uMmU1YjM4NjRlNTk4Mjc4MmE3
OTVjZWI5YmQ3YzRlMThkNmRlMjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJQb3NlLmlkbApAQCAtMjgsNyArMjgsNiBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAog
ICAgIFNlY3VyZUNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3csCi0gICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKICAgICBJbnRlcmZhY2VOYW1lPVhSUG9zZQogXSBpbnRlcmZhY2UgV2Vi
WFJQb3NlIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSUmlnaWRU
cmFuc2Zvcm0gdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDViYjBlODFmOTJjNTg5YWM3ZmM2Yjc1
NzEzNjUyNWFmMDJjYTc5Ni4uYzZmYzgxZmM0YWIyYmE0NDgzY2M1M2U1MzJmZDhlOTQyZDZlMDVi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5j
ZVNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJl
bmNlU3BhY2UuY3BwCkBAIC0yOSwzNCArMjksMTA5IEBACiAjaWYgRU5BQkxFKFdFQlhSKQogCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAi
V2ViWFJSaWdpZFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Rh
dGljIGNvbnN0ZXhwciBkb3VibGUgRGVmYXVsdFVzZXJIZWlnaHRJbk1ldGVycyA9IDEuNjU7CisK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlJlZmVyZW5jZVNwYWNlKTsKIAotUmVm
PFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFj
ZVR5cGUgdHlwZSkKK1JlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNl
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4mJiBzZXNz
aW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHR5cGUp
KTsKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4cnNwYWNl
LW5hdGl2ZS1vcmlnaW4KKyAgICAvLyBUaGUgdHJhbnNmb3JtIGZyb20gdGhlIGVmZmVjdGl2ZSBz
cGFjZSB0byB0aGUgbmF0aXZlIG9yaWdpbidzIHNwYWNlIGlzCisgICAgLy8gZGVmaW5lZCBieSBh
biBvcmlnaW4gb2Zmc2V0LCB3aGljaCBpcyBhbiBYUlJpZ2lkVHJhbnNmb3JtIGluaXRpYWxseSBz
ZXQKKyAgICAvLyB0byBhbiBpZGVudGl0eSB0cmFuc2Zvcm0uCisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2Vi
WFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUpKTsKIH0KIAotV2ViWFJSZWZlcmVuY2VT
cGFjZTo6V2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNl
c3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKLSAgICA6IFdlYlhS
U3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbikpCitSZWY8V2ViWFJSZWZlcmVuY2VTcGFj
ZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vha1B0
cjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zm
c2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdURk1v
dmUob2Zmc2V0KSwgdHlwZSkpOworfQorCitXZWJYUlJlZmVyZW5jZVNwYWNlOjpXZWJYUlJlZmVy
ZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYgc2Vz
c2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSB0eXBlKQorICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwg
V1RGTW92ZShvZmZzZXQpKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CiAKIFdlYlhSUmVmZXJl
bmNlU3BhY2U6On5XZWJYUlJlZmVyZW5jZVNwYWNlKCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8V2Vi
WFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNl
U3BhY2UoY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYpCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4
IFdlYlhSUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0Cit7CisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggaWRlbnRpdHk7CisKKyAgICAvLyBXZSBhc3N1bWUgdGhhdCBwb3NlcyBn
b3QgZnJvbSB0aGUgZGV2aWNlcyBhcmUgaW4gbG9jYWwgc3BhY2UuCisgICAgLy8gVGhpcyB3aWxs
IHJlcXVpcmUgbW9yZSBjb21wbGV4IGxvZ2ljIGlmIHdlIGFkZCBwb3J0cyB3aXRoIGRpZmZlcmVu
dCBkZWZhdWx0IGNvb3JkaW5hdGVzLgorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBY
UlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyOiB7CisgICAgICAgIC8vIFJldHVybiB0aGUgY3Vy
cmVudCBwb3NlLiBDb250ZW50IHJlbmRlcmVkIGluIHZpZXdlciBwb3NlIHdpbGwgc3RheSBpbiBm
aXhlZCBwb2ludCBvbiBITURzLgorICAgICAgICBhdXRvIGRhdGEgPSBmcmFtZURhdGEoKTsKKyAg
ICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIGlkZW50aXR5OworICAgICAgICBy
ZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoZGF0YS0+b3JpZ2luKTsKKyAgICB9Cisg
ICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWw6CisgICAgICAgIC8vIERhdGEgZnJv
bSB0aGUgZGV2aWNlIGlzIGFscmVhZHkgaW4gbG9jYWwsIHVzZSB0aGUgaWRlbnRpdHkgbWF0cml4
LgorICAgICAgICByZXR1cm4gaWRlbnRpdHk7CisgICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlw
ZTo6VW5ib3VuZGVkOgorICAgICAgICAvLyBMb2NhbCBhbmQgdW5ib3VuZGVkIHVzZSB0aGUgc2Ft
ZSBkZXZpY2Ugc3BhY2UsIHVzZSB0aGUgaWRlbnRpdHkgbWF0cml4LgorICAgICAgICByZXR1cm4g
aWRlbnRpdHk7CisgICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vcjogewor
ICAgICAgICAvLyBVc2UgdGhlIGZsb29yIHRyYW5zZm9ybSBwcm92aWRlZCBieSB0aGUgZGV2aWNl
IG9yIGZhbGxiYWNrIHRvIGEgZGVmYXVsdCBoZWlnaHQuCisgICAgICAgIHJldHVybiBmbG9vck9y
aWdpblRyYW5zZm9ybSgpOworICAgIH0KKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpC
b3VuZGVkRmxvb3I6CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gQm91bmRlZEZsb29yIGlzIGhh
bmRsZWQgYnkgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2Ugc3ViY2xhc3MKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gaWRlbnRpdHk7
Cit9CisKK1JlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpn
ZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRU
cmFuc2Zvcm0pCiB7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIEFTU0VSVChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSksIG1fc2Vzc2lvbi5jb3B5UmVmKCksIG1fdHlwZSk7CisKKyAg
ICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVu
Y2VzcGFjZS1nZXRvZmZzZXRyZWZlcmVuY2VzcGFjZQorICAgIC8vIFNldCBvZmZzZXRTcGFjZeKA
mXMgb3JpZ2luIG9mZnNldCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9y
aWdpbiBvZmZzZXQgYnkgb3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNl
LgorICAgIGF1dG8gb2Zmc2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG1fb3JpZ2lu
T2Zmc2V0LT5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7
CisKKyAgICByZXR1cm4gY3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSwgV2Vha1B0cjxXZWJYUlNlc3Npb24+KG1fc2Vzc2lvbiksIFdURk1vdmUob2Zm
c2V0KSwgbV90eXBlKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJSZWZlcmVuY2VT
cGFjZTo6Zmxvb3JPcmlnaW5UcmFuc2Zvcm0oKSBjb25zdAoreworICAgIGF1dG8gZGF0YSA9IGZy
YW1lRGF0YSgpOworICAgIGlmICghZGF0YSB8fCAhZGF0YS0+Zmxvb3JUcmFuc2Zvcm0pIHsKKyAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGVmYXV0VHJhbnNmb3JtOworICAgICAgICBkZWZh
dXRUcmFuc2Zvcm0udHJhbnNsYXRlM2QoMC4wLCAtRGVmYXVsdFVzZXJIZWlnaHRJbk1ldGVycywg
MC4wKTsKKyAgICAgICAgcmV0dXJuIGRlZmF1dFRyYW5zZm9ybTsKKyAgICB9CisKKyAgICAvLyBo
dHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVuY2VzcGFj
ZXR5cGUtbG9jYWwtZmxvb3IKKyAgICAvLyBHZXQgZmxvb3IgZXN0aW1hdGlvbiBmcm9tIHRoZSBk
ZXZpY2UKKyAgICAvLyBGSVhNRTogUm91bmQgdG8gbmVhcmVzdCAxY20gdG8gcHJldmVudCBmaW5n
ZXJwcmludGluZworICAgIHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9zZSgqZGF0YS0+
Zmxvb3JUcmFuc2Zvcm0pOwogfQogCitPcHRpb25hbDxjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSY+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmZyYW1lRGF0YSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIG1fc2Vzc2lvbi0+ZnJhbWVEYXRhKCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaAppbmRleCBhMmM4MDUxZjU5YzIyN2Q4Nzc3
OTVjMmJiOGY2ZTczNjNkZThmM2UzLi41OTBlOTU5NTE4M2ZjN2I2OGJiY2M1NTg2NTM4ODlkYjI3
OGVlNjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaApAQCAtNDAsMTggKzQwLDI5IEBAIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIGNs
YXNzIFdlYlhSUmVmZXJlbmNlU3BhY2UgOiBwdWJsaWMgV2ViWFJTcGFjZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJYUlJlZmVyZW5jZVNwYWNlKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNl
c3Npb24+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSUmVm
ZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmLCBY
UlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNl
PiBjcmVhdGUoRG9jdW1lbnQmLCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmln
aWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldl
YlhSUmVmZXJlbmNlU3BhY2UoKTsKIAotICAgIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBn
ZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJik7CisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4gZ2V0T2Zmc2V0UmVmZXJlbmNlU3Bh
Y2UoY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYpOworICAgIFhSUmVmZXJlbmNlU3BhY2VUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYlhS
UmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5j
ZVNwYWNlVHlwZSk7CisgICAgV2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFdlYWtQdHI8
V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VT
cGFjZVR5cGUpOworCisgICAgYm9vbCBpc1JlZmVyZW5jZVNwYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZmxvb3JPcmlnaW5UcmFu
c2Zvcm0oKSBjb25zdDsKKworICAgIE9wdGlvbmFsPGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhJj4gZnJhbWVEYXRhKCkgY29uc3Q7CiAKICAgICBYUlJlZmVyZW5jZVNwYWNlVHlw
ZSBtX3R5cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0VCWFJTUEFDRShXZWJYUlJlZmVyZW5jZVNwYWNlLCBpc1JlZmVyZW5jZVNwYWNl
KCkpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbAppbmRleCAyODM1MDdmNDQ1YTUy
ZmUyZTE3MTk2NmY1MDczYmMxM2I0OWZjNTNiLi44MWU0NGQzNGRhMTY3YjhmZTZkYjIzNGMyNDBj
OTM4NTYzNTI1OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSUmVmZXJlbmNlU3BhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJSZWZlcmVuY2VTcGFjZS5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBFeHBvc2VkPVdp
bmRvdywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVP
YmplY3QsCisgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgSW50ZXJmYWNlTmFtZT1YUlJl
ZmVyZW5jZVNwYWNlCiBdIGludGVyZmFjZSBXZWJYUlJlZmVyZW5jZVNwYWNlIDogV2ViWFJTcGFj
ZSB7CiAgICAgW05ld09iamVjdF0gV2ViWFJSZWZlcmVuY2VTcGFjZSBnZXRPZmZzZXRSZWZlcmVu
Y2VTcGFjZShXZWJYUlJpZ2lkVHJhbnNmb3JtIG9yaWdpbk9mZnNldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggYmQ2YzUwMWNiN2VjNWE3
MWNiN2E3MDdiMTk5OWZkOWJhOTI4OGIyYy4uZWI4Nzg0MDBlMzZhNDVkYmVlMTY0NGRkMTQyNmJm
M2UzNjQ1NGUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmNwcApAQCAtMjgsMTEgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU1dl
YlhSUmVmZXJlbmNlU3BhY2UuaCIKICNpbmNsdWRlICJXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZS5oIgogI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUlN5c3RlbS5oIgor
I2luY2x1ZGUgIldlYlhSVmlldy5oIgogI2luY2x1ZGUgIlhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2su
aCIKICNpbmNsdWRlICJYUlJlbmRlclN0YXRlSW5pdC5oIgogI2luY2x1ZGUgIlhSU2Vzc2lvbkV2
ZW50LmgiCkBAIC01NSw3ICs1Nyw5IEBAIFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBt
X21vZGUobW9kZSkKICAgICAsIG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCiAgICAgLCBt
X2FjdGl2ZVJlbmRlclN0YXRlKFdlYlhSUmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKKyAgICAs
IG1fdmlld2VyUmVmZXJlbmNlU3BhY2UoV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3Vt
ZW50LCBtYWtlV2Vha1B0cigqdGhpcyksIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIpKQog
ICAgICwgbV90aW1lT3JpZ2luKE1vbm90b25pY1RpbWU6Om5vdygpKQorICAgICwgbV92aWV3cyhk
ZXZpY2Uudmlld3MobW9kZSkpCiB7CiAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZyhtb2RlKTsKICAgICBtX2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5kZXJpbmdD
bGllbnQobWFrZVdlYWtQdHIoKnRoaXMpKTsKQEAgLTIzMCw5ICsyMzQsOSBAQCB2b2lkIFdlYlhS
U2Vzc2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUs
IFJlcXVlc3RSZWZlcgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1
Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCiAgICAgICAgICAgICBSZWZQdHI8
V2ViWFJSZWZlcmVuY2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7CiAgICAgICAgICAgICBpZiAodHlw
ZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQotICAgICAgICAgICAgICAg
IHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1
bWVudCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNw
YWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVdl
YWtQdHIoKnRoaXMpLCB0eXBlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFr
ZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2Vi
WFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlV2Vha1B0cigqdGhpcyksIHR5
cGUpOwogCiAgICAgICAgICAgICAvLyAyLjUuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHJlZmVyZW5j
ZVNwYWNlLgogICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNwYWNlLnJlbGVh
c2VOb25OdWxsKCkpOwpAQCAtNDc4LDEzICs0ODIsMTUgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9u
RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFF1ZXVlIGEgdGFzayB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcg
c3RlcHMuCi0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpXZWJYUiwgW3RoaXMsIGZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKV0oKSB7CisgICAg
cXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3Ro
aXMsIGZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKG1fZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9mcmFtZURhdGEg
PSBmcmFtZURhdGE7CiAgICAgICAgIC8vICAxLkxldCBub3cgYmUgdGhlIGN1cnJlbnQgaGlnaCBy
ZXNvbHV0aW9uIHRpbWUuCiAgICAgICAgIGF1dG8gbm93ID0gKE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV90aW1lT3JpZ2luKS5taWxsaXNlY29uZHMoKTsKIAotICAgICAgICBhdXRvIGZyYW1lID0g
V2ViWFJGcmFtZTo6Y3JlYXRlKG1ha2VSZWYoKnRoaXMpKTsKKyAgICAgICAgYXV0byBmcmFtZSA9
IFdlYlhSRnJhbWU6OmNyZWF0ZShtYWtlUmVmKCp0aGlzKSwgV2ViWFJGcmFtZTo6SXNBbmltYXRp
b25GcmFtZTo6WWVzKTsKICAgICAgICAgLy8gIDIuTGV0IGZyYW1lIGJlIHNlc3Npb27igJlzIGFu
aW1hdGlvbiBmcmFtZS4KICAgICAgICAgLy8gIDMuU2V0IGZyYW1l4oCZcyB0aW1lIHRvIGZyYW1l
VGltZS4KICAgICAgICAgZnJhbWUtPnNldFRpbWUoc3RhdGljX2Nhc3Q8RE9NSGlnaFJlc1RpbWVT
dGFtcD4oZnJhbWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1lKSk7CkBAIC01MDgsNyArNTE0LDcg
QEAgdm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGEmJiBmcmFtZURhdGEpCiAgICAgICAgICAgICBmcmFtZS0+c2V0QWN0aXZlKHRydWUpOwogCiAg
ICAgICAgICAgICAvLyA2LjQuQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCi0gICAgICAg
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorICAgICAgICAgICAgZnJhbWUtPnNldEZyYW1lRGF0
YShXVEZNb3ZlKGZyYW1lRGF0YSkpOwogCiAgICAgICAgICAgICAvLyA2LjUuRm9yIGVhY2ggZW50
cnkgaW4gc2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJh
bWUgY2FsbGJhY2tzLCBpbiBvcmRlcjoKICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBjYWxsYmFja3MpIHsKQEAgLTUzNyw2ICs1NDMsMjUgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9u
RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgfSk7
CiB9CiAKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Bvc2VzLW1h
eS1iZS1yZXBvcnRlZAorYm9vbCBXZWJYUlNlc3Npb246OnBvc2VzQ2FuQmVSZXBvcnRlZChjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7CisgICAgLy8gMS4gSWYgc2Vzc2lvbuKAmXMg
cmVsZXZhbnQgZ2xvYmFsIG9iamVjdCBpcyBub3QgdGhlIGN1cnJlbnQgZ2xvYmFsIG9iamVjdCwg
cmV0dXJuIGZhbHNlLgorICAgIGF1dG8qIHNlc3Npb25Eb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghc2Vzc2lvbkRvY3VtZW50
IHx8IHNlc3Npb25Eb2N1bWVudC0+ZG9tV2luZG93KCkgIT0gZG9jdW1lbnQuZG9tV2luZG93KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIDIuIElmIHNlc3Npb24ncyB2aXNpYmls
aXR5U3RhdGUgaW4gbm90ICJ2aXNpYmxlIiwgcmV0dXJuIGZhbHNlLgorICAgIGlmIChtX3Zpc2li
aWxpdHlTdGF0ZSAhPSBYUlZpc2liaWxpdHlTdGF0ZTo6VmlzaWJsZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gNS4gRGV0ZXJtaW5lIGlmIHRoZSBwb3NlIGRhdGEgY2FuIGJlIHJl
dHVybmVkIGFzIGZvbGxvd3M6CisgICAgLy8gVGhlIHByb2NlZHVyZSBpbiB0aGUgc3BlY3MgdHJp
ZXMgdG8gZW5zdXJlIHRoYXQgd2UgYXBwbHkgbWVhc3VyZXMgdG8KKyAgICAvLyBwcmV2ZW50IGZp
bmdlcnByaW50aW50IGluIHBvc2UgZGF0YSBhbmQgcmV0dXJuIGZhbHNlIGluIGNhc2Ugd2UgZG9u
J3QuCisgICAgLy8gV2UncmUgZ29pbmcgdG8gYXBwbHkgdGhlbSBzbyBsZXQncyBqdXN0IHJldHVy
biB0cnVlLgorICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uaAppbmRleCBkODM2M2E1YzkzMWNmNTBmN2I2ZTMxOWFlZWRiM2U4YTIzMzRm
ZWU1Li4zZTgzOTExNzI0MjMyY2Y3MGRlODM5ODUyNTM4OTA2ZTQzYjEyZjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKQEAgLTUwLDYgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgWFJGcmFtZVJlcXVlc3RDYWxsYmFjazsKIGNsYXNz
IFdlYlhSUmVmZXJlbmNlU3BhY2U7CiBjbGFzcyBXZWJYUlN5c3RlbTsKK2NsYXNzIFdlYlhSVmll
dzsKIHN0cnVjdCBYUlJlbmRlclN0YXRlSW5pdDsKIAogY2xhc3MgV2ViWFJTZXNzaW9uIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJTZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBQbGF0Zm9ybVhSOjpU
cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCB7CkBAIC05MCw2ICs5MSwxMSBAQCBwdWJsaWM6CiAK
ICAgICBYUlNlc3Npb25Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KIAorICAg
IGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmIHZpZXdlclJlZmVyZW5jZVNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3ZXJSZWZlcmVuY2VTcGFjZS5nZXQoKTsgfQorICAgIGNvbnN0IFZlY3Rv
cjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiYgdmlld3MoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXdzOyB9CisgICAgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmIGZyYW1l
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVEYXRhOyB9CisgICAgYm9vbCBwb3Nlc0NhbkJl
UmVwb3J0ZWQoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJYUlNl
c3Npb24oRG9jdW1lbnQmLCBXZWJYUlN5c3RlbSYsIFhSU2Vzc2lvbk1vZGUsIFBsYXRmb3JtWFI6
OkRldmljZSYpOwogCkBAIC0xMjgsMTEgKzEzNCwxNSBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8
UGxhdGZvcm1YUjo6RGV2aWNlPiBtX2RldmljZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0
ZT4gbV9hY3RpdmVSZW5kZXJTdGF0ZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9w
ZW5kaW5nUmVuZGVyU3RhdGU7CisgICAgUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IG1fdmlld2Vy
UmVmZXJlbmNlU3BhY2U7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPcmlnaW47CiAKICAgICB1
bnNpZ25lZCBtX25leHRDYWxsYmFja0lkIHsgMSB9OwogICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJl
cXVlc3RDYWxsYmFjaz4+IG1fY2FsbGJhY2tzOwogCisgICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRl
dmljZTo6Vmlld0RhdGE+IG1fdmlld3M7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGEgbV9mcmFtZURhdGE7CisKICAgICBkb3VibGUgbV9taW5pbXVtSW5saW5lRk9WIHsgMC4wIH07
CiAgICAgZG91YmxlIG1fbWF4aW11bUlubGluZUZPViB7IHBpRmxvYXQgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKaW5kZXggNTI0MjU0ZmE0Njc3Yjhk
YjE1MjM1NTA2MjhkM2E3OWU2OTIyNjkxNC4uNDA1ZGQ5ZjJmNWM4Nzc4Yjg2ZDkwOTQ3MWVjYjA4
ZTYwZDE2YzRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2Uu
Y3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJE
T01Qb2ludFJlYWRPbmx5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJY
UlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzYsMTQgKzM4LDIzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSU3BhY2UpOwogCi1X
ZWJYUlNwYWNlOjpXZWJYUlNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lv
bj4mJiBzZXNzaW9uKQorV2ViWFJTcGFjZTo6V2ViWFJTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQs
IFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiYmIG9mZnNldCkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZkb2N1bWVudCkK
ICAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9vcmlnaW5PZmZzZXQo
V1RGTW92ZShvZmZzZXQpKQogewogfQogCiBXZWJYUlNwYWNlOjp+V2ViWFJTcGFjZSgpID0gZGVm
YXVsdDsKIAorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlNwYWNlOjplZmZlY3RpdmVPcmln
aW4oKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI3hyc3BhY2UtZWZmZWN0aXZlLW9yaWdpbgorICAgIC8vIFRoZSBlZmZlY3RpdmUgb3JpZ2lu
IGNhbiBiZSBvYnRhaW5lZCBieSBtdWx0aXBseWluZyBvcmlnaW4gb2Zmc2V0IGFuZCB0aGUgbmF0
aXZlIG9yaWdpbi4KKyAgICByZXR1cm4gbV9vcmlnaW5PZmZzZXQtPnJhd1RyYW5zZm9ybSgpICog
bmF0aXZlT3JpZ2luKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgK
aW5kZXggN2YxYzRlOTc0NzM5YTcwY2M0YjBjMGIxY2ViZjE4ZTVmYjg0OTkwZC4uNDI1NWYwODNj
MWI5Njk1YTAxMzI1ZmUxMmIyMWRiZDM0N2JlZjhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNwYWNlLmgKQEAgLTI5LDEyICsyOSwxNCBAQAogCiAjaW5jbHVkZSAiQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2lu
Y2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBXZWJYUlJpZ2lkVHJhbnNmb3JtOwogY2xhc3MgV2Vi
WFJTZXNzaW9uOwogCiBjbGFzcyBXZWJYUlNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJT
cGFjZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIgewpAQCAtNDIsMTYgKzQ0LDI0IEBAIGNsYXNzIFdlYlhSU3BhY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlNwYWNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViWFJTcGFjZSgpOwogCisgICAgY29uc3Qg
V2Vha1B0cjxXZWJYUlNlc3Npb24+JiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9u
OyB9CisgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25z
dCA9IDA7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZWZmZWN0aXZlT3JpZ2luKCkgY29uc3Q7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJTcGFjZT46OnJl
ZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSU3BhY2U+OjpkZXJlZjsKIAogcHJvdGVjdGVk
OgotICAgIFdlYlhSU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBX
ZWJYUlNwYWNlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
IH0KIAotICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhS
U2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX29yaWdp
bk9mZnNldDsKIAogcHJpdmF0ZToKICAgICAvLyBFdmVudFRhcmdldApAQCAtNjIsNCArNzIsOSBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XRUJYUlNQQUNFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgXAor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXZWJYUlNwYWNlJiBjb250ZXh0
KSB7IHJldHVybiBjb250ZXh0LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4IDg1MDYyZmQ1M2Q2ZjBkMmFkODk1ZWY4ZDNi
ZDFlMDk5YWEwYjNkOGMuLmEyNmM2MjY1OGMwNzVhNjFhNmNjOGZiZmI3MjlhY2IxNWU4OTlhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCkBAIC01
MjEsMTIgKzUyMSwyMSBAQCB2b2lkIFdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6cmVx
dWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIHJhZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOjpj
cmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGRhdGE7CisgICAgICAgIGRhdGEuaXNUcmFja2luZ1Zh
bGlkID0gdHJ1ZTsKKyAgICAgICAgZGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSB0cnVlOworICAgICAg
ICBkYXRhLnZpZXdzLmFwcGVuZCh7IH0pOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGRhdGEp
KTsKICAgICB9KTsKIAogICAgIGRvY3VtZW50LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmFmKTsK
IH0KIAorVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFdlYlhSU3lzdGVtOjpE
dW1teUlubGluZURldmljZTo6dmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QKK3sKKyAgICByZXR1
cm4geyB7IC5hY3RpdmUgPSB0cnVlLCBQbGF0Zm9ybVhSOjpFeWU6Ok5vbmUgfSB9OworfQorCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5oCmluZGV4IDFkZThiNzViNzk1MDY3ZjMxYTA5YmNjNjcwNzBjZGIxOGM2ZjJh
ZTcuLjEwMjRkMGY1YTRmM2MxZjZiNDFhZGY3Zjk2YmQ4M2NjMzg0YWQwODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTExMSw5ICsxMTEsMTAgQEAg
cHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9CiAgICAgICAgIHZv
aWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsIHsgfQotICAgICAgICB2b2lk
IGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUp
IGZpbmFsIHsgfTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZv
cm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KIAogICAgICAgICB2b2lkIHJlcXVl
c3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgICAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoWFJTZXNzaW9uTW9kZSkg
Y29uc3QgZmluYWw7CiAgICAgfTsKICAgICBEdW1teUlubGluZURldmljZSBtX2RlZmF1bHRJbmxp
bmVEZXZpY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcApp
bmRleCAxYTk4Y2IxNDUwNDU5ZmYyNjU2MzhmNThkZjQ4YmI0ZmNjZmYzMGJlLi40M2QxMGI4N2Zm
NmNjYmI3NTAxMDAxNTkzMWNiMGZjZjdhNGIwYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwCkBAIC0zNiwyMyArMzYsMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJWaWV3KTsKIAotUmVmPFdl
YlhSVmlldz4gV2ViWFJWaWV3OjpjcmVhdGUoKQorUmVmPFdlYlhSVmlldz4gV2ViWFJWaWV3Ojpj
cmVhdGUoWFJFeWUgZXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIFJl
ZjxGbG9hdDMyQXJyYXk+JiYgcHJvamVjdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJYUlZpZXcpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmlldyhleWUsIFdU
Rk1vdmUodHJhbnNmb3JtKSwgV1RGTW92ZShwcm9qZWN0aW9uKSkpOwogfQogCi1XZWJYUlZpZXc6
OldlYlhSVmlldygpCi0gICAgOiBtX2V5ZShYUkV5ZTo6Tm9uZSkKK1dlYlhSVmlldzo6V2ViWFJW
aWV3KFhSRXllIGV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBSZWY8
RmxvYXQzMkFycmF5PiYmIHByb2plY3Rpb24pCisgICAgOiBtX2V5ZShleWUpCisgICAgLCBtX3Ry
YW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpCisgICAgLCBtX3Byb2plY3Rpb24ocHJvamVjdGlv
bikKIHsKIH0KIAogV2ViWFJWaWV3Ojp+V2ViWFJWaWV3KCkgPSBkZWZhdWx0OwogCi12b2lkIFdl
YlhSVmlldzo6c2V0UHJvamVjdGlvbk1hdHJpeChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBtYXRyaXgp
Ci17Ci0gICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUobWF0cml4
LmRhdGEoKSwgbWF0cml4LnNpemUoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Vmlldy5oCmluZGV4IDM5YTA5Y2UxMGJhYWEyYzI3OTdjODc1NTczNzFjMmJmNzg4YWM0ZTUuLjRi
NjYwNjkxMTgyNjhkNGFiM2Y4NTc2NTg1YTc4YzkwMjAzMGJiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaApAQCAtMzcsMjggKzM3LDI1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViWFJGcmFtZTsKIGNsYXNzIFdlYlhSUmlnaWRUcmFuc2Zv
cm07CiAKIGNsYXNzIFdlYlhSVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSVmlldz4gewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKFdlYlhSVmlldywgV0VCQ09SRV9FWFBP
UlQpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8V2ViWFJWaWV3PiBj
cmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFdlYlhSVmlldz4gY3JlYXRl
KFhSRXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgUmVmPEZsb2F0MzJBcnJheT4mJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgfldlYlhSVmlldygpOwogCiAgICAgWFJFeWUgZXllKCkgY29u
c3QgeyByZXR1cm4gbV9leWU7IH0KLSAgICBjb25zdCBGbG9hdDMyQXJyYXkmIHByb2plY3Rpb25N
YXRyaXgoKSBjb25zdCB7IHJldHVybiAqbV9wcm9qZWN0aW9uTWF0cml4OyB9Ci0gICAgY29uc3Qg
V2ViWFJSaWdpZFRyYW5zZm9ybSYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gKm1fdHJhbnNm
b3JtOyB9Ci0KLSAgICB2b2lkIHNldEV5ZShYUkV5ZSBleWUpIHsgbV9leWUgPSBleWU7IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb2plY3Rpb25NYXRyaXgoY29uc3QgVmVjdG9yPGZs
b2F0PiYpOwotICAgIHZvaWQgc2V0VHJhbnNmb3JtKFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiYmIHZpZXdPZmZzZXQpIHsgbV90cmFuc2Zvcm0gPSBXVEZNb3ZlKHZpZXdPZmZzZXQpOyB9Cisg
ICAgY29uc3QgRmxvYXQzMkFycmF5JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3QgeyByZXR1cm4g
bV9wcm9qZWN0aW9uLmdldCgpOyB9CisgICAgY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYgdHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0uZ2V0KCk7IH0KIAogcHJpdmF0ZToK
LSAgICBXZWJYUlZpZXcoKTsKKyAgICBXZWJYUlZpZXcoWFJFeWUsIFJlZjxXZWJYUlJpZ2lkVHJh
bnNmb3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYmKTsKIAogICAgIFhSRXllIG1fZXllOwotICAg
IFJlZlB0cjxGbG9hdDMyQXJyYXk+IG1fcHJvamVjdGlvbk1hdHJpeDsKLSAgICBSZWZQdHI8V2Vi
WFJSaWdpZFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+IG1fdHJhbnNmb3JtOworICAgIFJlZjxGbG9hdDMyQXJyYXk+IG1fcHJvamVjdGlvbjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcAppbmRleCA2MDYzYzk1ZjM2NDNhZGFiMGEyODFkYTg4
YjNjYmFlNjVhNzk3YjA5Li5lNDllNmM3ODc0YWQzMjNmNWY1ODU5MzM0YzI3N2JiM2JhZTJmMWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2Uu
Y3BwCkBAIC0yNSwxNyArMjUsMjQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlhSVmlld2VyUG9zZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAK
ICNpZiBFTkFCTEUoV0VCWFIpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYlhSVmll
d2VyUG9zZT4gV2ViWFJWaWV3ZXJQb3NlOjpjcmVhdGUoKQorV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdlYlhSVmlld2VyUG9zZSk7CisKK1JlZjxXZWJYUlZpZXdlclBvc2U+IFdlYlhSVmll
d2VyUG9zZTo6Y3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9v
bCBlbXVsYXRlZFBvc2l0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmll
d2VyUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pKTsKK30KKworV2Vi
WFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYg
dHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCisgICAgOiBXZWJYUlBvc2UoV1RGTW92
ZSh0cmFuc2Zvcm0pLCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSVmlld2VyUG9zZSk7CiB9CiAKLVdlYlhSVmlld2VyUG9zZTo6V2ViWFJWaWV3ZXJQ
b3NlKCkgPSBkZWZhdWx0OwogV2ViWFJWaWV3ZXJQb3NlOjp+V2ViWFJWaWV3ZXJQb3NlKCkgPSBk
ZWZhdWx0OwogCiBjb25zdCBWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiBXZWJYUlZpZXdlclBvc2U6
OnZpZXdzKCkgY29uc3QKQEAgLTQzLDYgKzUwLDExIEBAIGNvbnN0IFZlY3RvcjxSZWY8V2ViWFJW
aWV3Pj4mIFdlYlhSVmlld2VyUG9zZTo6dmlld3MoKSBjb25zdAogICAgIHJldHVybiBtX3ZpZXdz
OwogfQogCit2b2lkIFdlYlhSVmlld2VyUG9zZTo6c2V0Vmlld3MoVmVjdG9yPFJlZjxXZWJYUlZp
ZXc+PiYmIHZpZXdzKQoreworICAgIG1fdmlld3MgPSBXVEZNb3ZlKHZpZXdzKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmgKaW5kZXggYTRlZDI1YjEw
YzI1MzE5YTZlOTIxODUyODA2NGU1MWM4ZDRkOGYyMC4uZTlmMGEzOWQ4NWI3ZWFjZTcwMTNjYTE4
NDI5ZDJiM2NiYjgwZGNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlZpZXdlclBvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSVmlld2VyUG9zZS5oCkBAIC0zNywxOCArMzcsMjQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV2ViWFJWaWV3ZXJQb3NlIDogcHVibGljIFdlYlhSUG9zZSB7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJYUlZpZXdlclBvc2UpOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8V2ViWFJWaWV3ZXJQb3NlPiBjcmVhdGUoKTsKLSAgICB+V2ViWFJWaWV3ZXJQb3NlKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJYUlZpZXdlclBvc2U+IGNyZWF0ZShSZWY8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIH5XZWJYUlZpZXdl
clBvc2UoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4mIHZpZXdzKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRWaWV3cyhWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiYpOwogCiBwcml2
YXRlOgotICAgIFdlYlhSVmlld2VyUG9zZSgpOworICAgIFdlYlhSVmlld2VyUG9zZShSZWY8V2Vi
WFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKKworICAgIGJvb2wg
aXNWaWV3ZXJQb3NlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgVmVjdG9y
PFJlZjxXZWJYUlZpZXc+PiBtX3ZpZXdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQlhSUE9TRShXZWJYUlZpZXdlclBvc2UsIGlzVmll
d2VyUG9zZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsCmluZGV4IGQxYmViMmMwODZmODli
ZmFmZGY1ZTBiZjFmOTVjMGY0OGM2MDc2MTMuLjZhNzZkZTg0MzU0OWZiZjA2M2QwYmE1ZDQxMTNh
MDE1Mjk1MGIyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJWaWV3ZXJQb3NlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Vmlld2VyUG9zZS5pZGwKQEAgLTI4LDcgKzI4LDggQEAKICAgICBDb25kaXRpb25hbD1XRUJYUiwK
ICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2luZG93LAotICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNHZW5lcmF0
ZVRvTmF0aXZlT2JqZWN0LAogICAgIEludGVyZmFjZU5hbWU9WFJWaWV3ZXJQb3NlCiBdIGludGVy
ZmFjZSBXZWJYUlZpZXdlclBvc2UgOiBXZWJYUlBvc2UgewogICAgIFtTYW1lT2JqZWN0XSByZWFk
b25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJWaWV3PiB2aWV3czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJFeWUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvWFJFeWUuaAppbmRleCBlYTFlYTdlMWU3ZDgyMjYzMjVmNjBjODI2ZmZmYmMw
YjliYTRkNjZmLi5mOWEzNDNiZGE0NDc0OTdmNmRkYTU0NDk5MDhlNGQ5OWQ5ZmM5N2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSRXllLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkV5ZS5oCkBAIC0yNywxMyArMjcsMTEgQEAKIAogI2lm
IEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1lbnVtIGNsYXNzIFhSRXllIHsKLSAgICBOb25lLAotICAgIExlZnQsCi0gICAg
UmlnaHQsCi19OwordXNpbmcgWFJFeWUgPSBQbGF0Zm9ybVhSOjpFeWU7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRl
eCBhN2U0ZTAxNDJjNGEzNGE1ZWFkZDc5NzNmNGRiNDcyNTg1M2RmMGMxLi5hODdlNDQ2ZDA5ZjYz
ZGRkYjRiNjU3NWNhMjk0ZmVkZmRiNjgxMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0
aW9uTWF0cml4LmNwcApAQCAtNTg0LDE1ICs1ODQsMTUgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXg6
OlRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdCkKIC8vIEZJWE1F
OiBPbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4NTYgaXMg
YWRkcmVzc2VkIHdlIGNhbiByZXVzZSB0aGlzIGZ1bmN0aW9uIGluIFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWNvbXBvc2U0KCkuCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6ZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksIGRvdWJsZSBxeiwgZG91
YmxlIHF3KQogewotICAgIGNvbnN0IGRvdWJsZSB4eCA9IHF4ICogcXg7Ci0gICAgY29uc3QgZG91
YmxlIHl5ID0gcXkgKiBxeTsKLSAgICBjb25zdCBkb3VibGUgenogPSBxeiAqIHF6OwotICAgIGNv
bnN0IGRvdWJsZSB4eiA9IHF4ICogcXo7Ci0gICAgY29uc3QgZG91YmxlIHh5ID0gcXggKiBxeTsg
Ci0gICAgY29uc3QgZG91YmxlIHl6ID0gcXkgKiBxejsKLSAgICBjb25zdCBkb3VibGUgeHcgPSBx
dyAqIHF4OwotICAgIGNvbnN0IGRvdWJsZSB5dyA9IHF3ICogcXk7Ci0gICAgY29uc3QgZG91Ymxl
IHp3ID0gcXcgKiBxejsKKyAgICBkb3VibGUgeHggPSBxeCAqIHF4OworICAgIGRvdWJsZSB5eSA9
IHF5ICogcXk7CisgICAgZG91YmxlIHp6ID0gcXogKiBxejsKKyAgICBkb3VibGUgeHogPSBxeCAq
IHF6OworICAgIGRvdWJsZSB4eSA9IHF4ICogcXk7IAorICAgIGRvdWJsZSB5eiA9IHF5ICogcXo7
CisgICAgZG91YmxlIHh3ID0gcXcgKiBxeDsKKyAgICBkb3VibGUgeXcgPSBxdyAqIHF5OworICAg
IGRvdWJsZSB6dyA9IHF3ICogcXo7CiAKICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgo
MSAtIDIgKiAoeXkgKyB6eiksIDIgKiAoeHkgKyB6dyksIDIgKiAoeHogLSB5dyksIDAsCiAgICAg
ICAgIDIgKiAoeHkgLSB6dyksIDEgLSAyICogKHh4ICsgenopLCAyICogKHl6ICsgeHcpLCAwLApA
QCAtNjAwLDYgKzYwMCwzNCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6ZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksCiAgICAgICAgIDAsIDAs
IDAsIDEpOwogfQogCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4
Ojpmcm9tUHJvamVjdGlvbihkb3VibGUgZm92VXAsIGRvdWJsZSBmb3ZEb3duLCBkb3VibGUgZm92
TGVmdCwgZG91YmxlIGZvdlJpZ2h0LCBkb3VibGUgbmVhciwgZG91YmxlIGZhcikKK3sKKyAgICBk
b3VibGUgdXBUYW4gPSB0YW4oZm92VXApOworICAgIGRvdWJsZSBkb3duVGFuID0gdGFuKGZvdkRv
d24pOworICAgIGRvdWJsZSBsZWZ0VGFuID0gdGFuKGZvdkxlZnQpOworICAgIGRvdWJsZSByaWdo
dFRhbiA9IHRhbihmb3ZSaWdodCk7CisgICAgZG91YmxlIHhTY2FsZSA9IDIuMCAvIChsZWZ0VGFu
ICsgcmlnaHRUYW4pOworICAgIGRvdWJsZSB5U2NhbGUgPSAyLjAgLyAodXBUYW4gKyBkb3duVGFu
KTsKKyAgICBkb3VibGUgaW52RGVwdGggPSAxLjAgLyAobmVhciAtIGZhcik7CisKKyAgICByZXR1
cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoeFNjYWxlLCAwLjBmLCAwLjBmLCAwLjBmLAorICAgICAg
ICAwLjBmLCB5U2NhbGUsIDAuMGYsIDAuMGYsCisgICAgICAgIChsZWZ0VGFuIC0gcmlnaHRUYW4p
ICogeFNjYWxlICogLTAuNSwgKHVwVGFuIC0gZG93blRhbikgKiB5U2NhbGUgKiAwLjUsIChuZWFy
ICsgZmFyKSAqIGludkRlcHRoLCAtMS4wZiwKKyAgICAgICAgMC4wZiwgMC4wZiwgKDIuMGYgKiBm
YXIgKiBuZWFyKSAqIGludkRlcHRoLCAwLjBmKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXgg
VHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGRvdWJsZSBmb3Z5LCBkb3VibGUg
YXNwZWN0LCBkb3VibGUgbmVhciwgZG91YmxlIGZhcikKK3sKKyAgICBkb3VibGUgZiA9IDEuMGYg
LyB0YW5mKGZvdnkgLyAyKTsKKyAgICBkb3VibGUgaW52RGVwdGggPSAxLjBmIC8gKG5lYXIgLSBm
YXIpOworCisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KGYgLyBhc3BlY3QsIDAuMGYs
IDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYs
IDAuMGYsIChmYXIgKyBuZWFyKSAqIGludkRlcHRoLCAtMS4wZiwKKyAgICAgICAgMC4wZiwgMC4w
ZiwgKDIuMGYgKiBmYXIgKiBuZWFyKSAqIGludkRlcHRoLCAwLjBmKTsKK30KKwogVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZShkb3VibGUgcykKIHsKICAg
ICByZXR1cm4gc2NhbGVOb25Vbmlmb3JtKHMsIHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCmluZGV4IDYwMGU3ZDBiMWNlMjZhN2MyNDIxZDU4NTYxY2M1NzRiMDRhMTdiMjku
LjVlOGFiNWI2MTM0NjViMjdmYjQxNjEyZTQ4YWRjMTY4NDQ4ZWNhN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTEyMSw2ICsxMjEsMTAgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21RdWF0ZXJuaW9uKGRvdWJsZSBxeCwg
ZG91YmxlIHF5LCBkb3VibGUgcXosIGRvdWJsZSBxdyk7CiAKKyAgICAvLyBGaWVsZCBvZiB2aWV3
IGluIHJhZGlhbnMKKyAgICBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVByb2plY3Rp
b24oZG91YmxlIGZvdlVwLCBkb3VibGUgZm92RG93biwgZG91YmxlIGZvdkxlZnQsIGRvdWJsZSBm
b3ZSaWdodCwgZG91YmxlIG5lYXIsIGRvdWJsZSBmYXIpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBmcm9tUHJvamVjdGlvbihkb3VibGUgZm92eSwgZG91YmxlIGFzcGVjdCwgZG91
YmxlIG5lYXIsIGRvdWJsZSBmYXIpOworCiAgICAgc3RhdGljIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5OwogCiAgICAgdm9pZCBzZXRNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBi
LCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCA0MzI1ZjMzNzVjZjMwMjhhNDdkZmZjYzZkZjU5
YmI3NDM4MzUwMGQ1Li5lMzcyMWQ4ODZlYTk5YTBkZjkwODJlNThlMjU1Y2QzMmQwZjdkZThiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBAIC0yNCw2ICsyNCw3IEBA
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApA
QCAtNDMsNiArNDQsMTIgQEAgZW51bSBjbGFzcyBSZWZlcmVuY2VTcGFjZVR5cGUgewogICAgIFVu
Ym91bmRlZAogfTsKIAorZW51bSBjbGFzcyBFeWUgeworICAgIE5vbmUsCisgICAgTGVmdCwKKyAg
ICBSaWdodCwKK307CisKICNpZiBFTkFCTEUoV0VCWFIpCiAKIGNsYXNzIFRyYWNraW5nQW5kUmVu
ZGVyaW5nQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5n
Q2xpZW50PiB7CkBAIC03OSwyOSArODYsNTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSA9IDA7CiAKICAgICBz
dHJ1Y3QgRnJhbWVEYXRhIHsKLSAgICAgICAgbG9uZyBwcmVkaWN0ZWREaXNwbGF5VGltZTsKLSAg
ICAgICAgc3RydWN0IFZpZXdEYXRhIHsKLSAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAg
ICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludDNEIHBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHN0
cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHg7Ci0gICAgICAgICAgICAgICAgICAg
IGZsb2F0IHk7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHo7Ci0gICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHc7Ci0gICAgICAgICAgICAgICAgfSBvcmllbnRhdGlvbjsKLSAgICAgICAgICAg
IH0gcG9zZTsKLSAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgclVw
OwotICAgICAgICAgICAgICAgIGZsb2F0IHJEb3duOwotICAgICAgICAgICAgICAgIGZsb2F0IHJM
ZWZ0OwotICAgICAgICAgICAgICAgIGZsb2F0IHJSaWdodDsKLSAgICAgICAgICAgIH0gZm92Owor
ICAgICAgICBzdHJ1Y3QgRmxvYXRRdWF0ZXJuaW9uIHsKKyAgICAgICAgICAgIGZsb2F0IHggeyAw
LjBmIH07CisgICAgICAgICAgICBmbG9hdCB5IHsgMC4wZiB9OworICAgICAgICAgICAgZmxvYXQg
eiB7IDAuMGYgfTsKKyAgICAgICAgICAgIGZsb2F0IHcgeyAxLjBmIH07CisgICAgICAgIH07CisK
KyAgICAgICAgc3RydWN0IFBvc2UgeworICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludDNE
IHBvc2l0aW9uOworICAgICAgICAgICAgRmxvYXRRdWF0ZXJuaW9uIG9yaWVudGF0aW9uOwogICAg
ICAgICB9OwotICAgICAgICBWZWN0b3I8Vmlld0RhdGE+IHZpZXdQb3NlczsKKworICAgICAgICBz
dHJ1Y3QgRm92IHsKKyAgICAgICAgICAgIC8vIEluIHJhZGlhbnMKKyAgICAgICAgICAgIGZsb2F0
IHVwIHsgMC4wZiB9OworICAgICAgICAgICAgZmxvYXQgZG93biB7IDAuMGYgfTsKKyAgICAgICAg
ICAgIGZsb2F0IGxlZnQgeyAwLjBmIH07CisgICAgICAgICAgICBmbG9hdCByaWdodCB7IDAuMGYg
fTsKKyAgICAgICAgfTsKKworICAgICAgICB1c2luZyBQcm9qZWN0aW9uID0gVmFyaWFudDxGb3Ys
IHN0ZDo6YXJyYXk8ZmxvYXQsIDE2Piwgc3RkOjpudWxscHRyX3Q+OworCisgICAgICAgIHN0cnVj
dCBWaWV3IHsKKyAgICAgICAgICAgIFBvc2Ugb2Zmc2V0OworICAgICAgICAgICAgUHJvamVjdGlv
biBwcm9qZWN0aW9uID0geyBudWxscHRyIH07CisgICAgICAgIH07CisKKyAgICAgICAgYm9vbCBp
c1RyYWNraW5nVmFsaWQgeyBmYWxzZSB9OworICAgICAgICBib29sIGlzUG9zaXRpb25WYWxpZCB7
IGZhbHNlIH07CisgICAgICAgIGJvb2wgaXNQb3NpdGlvbkVtdWxhdGVkIHsgZmFsc2UgfTsKKyAg
ICAgICAgbG9uZyBwcmVkaWN0ZWREaXNwbGF5VGltZSB7IDAgfTsKKyAgICAgICAgUG9zZSBvcmln
aW47CisgICAgICAgIE9wdGlvbmFsPFBvc2U+IGZsb29yVHJhbnNmb3JtOworICAgICAgICBWZWN0
b3I8Vmlldz4gdmlld3M7CisgICAgfTsKKworICAgIHN0cnVjdCBWaWV3RGF0YSB7CisgICAgICAg
IGJvb2wgYWN0aXZlIHsgZmFsc2UgfTsKKyAgICAgICAgRXllIGV5ZSB7IEV5ZTo6Tm9uZSB9Owog
ICAgIH07CisKKyAgICB2aXJ0dWFsIFZlY3RvcjxWaWV3RGF0YT4gdmlld3MoU2Vzc2lvbk1vZGUp
IGNvbnN0ID0gMDsKKwogICAgIHVzaW5nIFJlcXVlc3RGcmFtZUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChGcmFtZURhdGEmJik+OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVz
dEZyYW1lQ2FsbGJhY2smJikgPSAwOwotCiBwcm90ZWN0ZWQ6CiAgICAgRGV2aWNlKCkgPSBkZWZh
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggY2M0ZDcyMTUzYzZlZWFmZGYyMTYyZTk4ODJhOWUwNzc1
OGIyMWRmNy4uYjk0ZTg3MWY1N2I4OTdjN2U0ODQ5YTQ3ZjRhNjRjMzMzMGQ2ZDE3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3Bl
blhSLmNwcApAQCAtMjk5LDYgKzI5OSwyOCBAQCBEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJl
cyBPcGVuWFJEZXZpY2U6OmVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mCiAgICAg
cmV0dXJuIGVuYWJsZWRGZWF0dXJlczsKIH0KIAorWHJTcGFjZSBPcGVuWFJEZXZpY2U6OmNyZWF0
ZVJlZmVyZW5jZVNwYWNlKFhyUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCit7CisgICAgQVNTRVJU
KCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKKyAgICBBU1NFUlQo
bV9zZXNzaW9uICE9IFhSX05VTExfSEFORExFKTsKKyAgICBBU1NFUlQobV9pbnN0YW5jZSAhPSBY
Ul9OVUxMX0hBTkRMRSk7CisKKyAgICBYclBvc2VmIGlkZW50aXR5UG9zZSB7CisgICAgICAgIC5v
cmllbnRhdGlvbiA9IHsgLnggPSAwLCAueSA9IDAsIC56ID0gMCwgLncgPSAxLjAgfSwKKyAgICAg
ICAgLnBvc2l0aW9uID0geyAueCA9IDAsIC55ID0gMCwgLnogPSAwIH0KKyAgICB9OworCisgICAg
YXV0byBzcGFjZUNyZWF0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJSZWZlcmVuY2VTcGFjZUNy
ZWF0ZUluZm8sIFhSX1RZUEVfUkVGRVJFTkNFX1NQQUNFX0NSRUFURV9JTkZPPigpOworICAgIHNw
YWNlQ3JlYXRlSW5mby5yZWZlcmVuY2VTcGFjZVR5cGUgPSB0eXBlOworICAgIHNwYWNlQ3JlYXRl
SW5mby5wb3NlSW5SZWZlcmVuY2VTcGFjZSA9IGlkZW50aXR5UG9zZTsKKworICAgIFhyU3BhY2Ug
c3BhY2U7CisgICAgYXV0byByZXN1bHQgPSB4ckNyZWF0ZVJlZmVyZW5jZVNwYWNlKG1fc2Vzc2lv
biwgJnNwYWNlQ3JlYXRlSW5mbywgJnNwYWNlKTsKKyAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3Vs
dCwgInhyQ3JlYXRlUmVmZXJlbmNlU3BhY2UiLCBtX2luc3RhbmNlLCBYUl9OVUxMX0hBTkRMRSk7
CisKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKIHZvaWQgT3BlblhSRGV2aWNlOjpjb2xsZWN0U3Vw
cG9ydGVkU2Vzc2lvbk1vZGVzKCkKIHsKICAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9
PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOwpAQCAtMzY4LDE1ICszOTAsNiBAQCB2b2lkIE9wZW5YUkRl
dmljZTo6Y29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpCiAgICAgfQogfQogCi1XZWJDb3JlOjpJ
bnRTaXplIE9wZW5YUkRldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlIG1v
ZGUpCi17Ci0gICAgYXV0byBjb25maWdUeXBlID0gbW9kZSA9PSBTZXNzaW9uTW9kZTo6SW5saW5l
ID8gWFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9NT05PIDogWFJfVklFV19DT05G
SUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9TVEVSRU87Ci0gICAgYXV0byB2aWV3c0l0ZXJhdG9yID0g
bV9jb25maWd1cmF0aW9uVmlld3MuZmluZChjb25maWdUeXBlKTsKLSAgICBpZiAodmlld3NJdGVy
YXRvciAhPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHsgc3Rh
dGljX2Nhc3Q8aW50Pih2aWV3c0l0ZXJhdG9yLT52YWx1ZVswXS5yZWNvbW1lbmRlZEltYWdlUmVj
dFdpZHRoKSwgc3RhdGljX2Nhc3Q8aW50Pih2aWV3c0l0ZXJhdG9yLT52YWx1ZVswXS5yZWNvbW1l
bmRlZEltYWdlUmVjdEhlaWdodCkgfTsKLSAgICByZXR1cm4gRGV2aWNlOjpyZWNvbW1lbmRlZFJl
c29sdXRpb24obW9kZSk7Ci19Ci0KIFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlIHRvWHJWaWV3Q29u
ZmlndXJhdGlvblR5cGUoU2Vzc2lvbk1vZGUgbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsK
QEAgLTQwMCw2ICs0MTMsMTUgQEAgc3RhdGljIGJvb2wgaXNTZXNzaW9uUmVhZHkoWHJTZXNzaW9u
U3RhdGUgc3RhdGUpCiAgICAgcmV0dXJuIHN0YXRlID49IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkg
ICYmIHN0YXRlIDwgWFJfU0VTU0lPTl9TVEFURV9TVE9QUElORzsKIH0KIAorV2ViQ29yZTo6SW50
U2l6ZSBPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSBtb2Rl
KQoreworICAgIGF1dG8gY29uZmlnVHlwZSA9IHRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUobW9k
ZSk7CisgICAgYXV0byB2aWV3c0l0ZXJhdG9yID0gbV9jb25maWd1cmF0aW9uVmlld3MuZmluZChj
b25maWdUeXBlKTsKKyAgICBpZiAodmlld3NJdGVyYXRvciAhPSBtX2NvbmZpZ3VyYXRpb25WaWV3
cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50Pih2aWV3c0l0ZXJhdG9y
LT52YWx1ZVswXS5yZWNvbW1lbmRlZEltYWdlUmVjdFdpZHRoKSwgc3RhdGljX2Nhc3Q8aW50Pih2
aWV3c0l0ZXJhdG9yLT52YWx1ZVswXS5yZWNvbW1lbmRlZEltYWdlUmVjdEhlaWdodCkgfTsKKyAg
ICByZXR1cm4gRGV2aWNlOjpyZWNvbW1lbmRlZFJlc29sdXRpb24obW9kZSk7Cit9CisKIHZvaWQg
T3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUg
bW9kZSkKIHsKICAgICBtX3F1ZXVlLmRpc3BhdGNoKFt0aGlzLCBtb2RlXSgpIHsKQEAgLTQxNCw2
ICs0MzYsOSBAQCB2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVy
aW5nKFNlc3Npb25Nb2RlIG1vZGUpCiAgICAgICAgIHNlc3Npb25DcmVhdGVJbmZvLnN5c3RlbUlk
ID0gbV9zeXN0ZW1JZDsKICAgICAgICAgYXV0byByZXN1bHQgPSB4ckNyZWF0ZVNlc3Npb24obV9p
bnN0YW5jZSwgJnNlc3Npb25DcmVhdGVJbmZvLCAmbV9zZXNzaW9uKTsKICAgICAgICAgUkVUVVJO
X0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGll
cyIsIG1faW5zdGFuY2UpOworCisgICAgICAgIG1fbG9jYWxTcGFjZSA9IGNyZWF0ZVJlZmVyZW5j
ZVNwYWNlKFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX0xPQ0FMKTsKKyAgICAgICAgbV92aWV3U3Bh
Y2UgPSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9WSUVXKTsK
ICAgICB9KTsKIH0KIApAQCAtNDU3LDYgKzQ4MiwxMiBAQCB2b2lkIE9wZW5YUkRldmljZTo6c2h1
dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpCiAgICAgfSk7CiB9CiAKK3ZvaWQgT3BlblhSRGV2
aWNlOjppbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VU
eXBlIHNwYWNlVHlwZSkKK3sKKyAgICBpZiAoKHNwYWNlVHlwZSA9PSBSZWZlcmVuY2VTcGFjZVR5
cGU6OkxvY2FsRmxvb3IgfHwgc3BhY2VUeXBlID09IFJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRl
ZEZsb29yKSAmJiBtX3N0YWdlU3BhY2UgPT0gWFJfTlVMTF9IQU5ETEUpCisgICAgICAgIG1fc3Rh
Z2VTcGFjZSA9IGNyZWF0ZVJlZmVyZW5jZVNwYWNlKFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX1NU
QUdFKTsKK30KKwogdm9pZCBPcGVuWFJEZXZpY2U6OndhaXRVbnRpbFN0b3BwaW5nKCkKIHsKICAg
ICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOwpAQCAt
NTI2LDE0ICs1NTcsMjAgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmVuZFNlc3Npb24oKQogICAgIH0p
OwogfQogCitzdGF0aWMgRGV2aWNlOjpGcmFtZURhdGE6OlBvc2UgWHJQb3NlZlRvUG9zZShYclBv
c2VmIHBvc2UpCit7CisgICAgRGV2aWNlOjpGcmFtZURhdGE6OlBvc2UgcmVzdWx0OworICAgIHJl
c3VsdC5vcmllbnRhdGlvbiA9IHsgcG9zZS5vcmllbnRhdGlvbi54LCBwb3NlLm9yaWVudGF0aW9u
LnksIHBvc2Uub3JpZW50YXRpb24ueiwgcG9zZS5vcmllbnRhdGlvbi53IH07CisgICAgcmVzdWx0
LnBvc2l0aW9uID0geyBwb3NlLnBvc2l0aW9uLngsIHBvc2UucG9zaXRpb24ueSwgcG9zZS5wb3Np
dGlvbi56IH07CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAotRGV2aWNlOjpGcmFtZURhdGE6OlZp
ZXdEYXRhIHhyVmlld1RvVmlld0RhdGEoWHJWaWV3IHZpZXcpCitzdGF0aWMgRGV2aWNlOjpGcmFt
ZURhdGE6OlZpZXcgeHJWaWV3VG9Qb3NlKFhyVmlldyB2aWV3KQogewotICAgIERldmljZTo6RnJh
bWVEYXRhOjpWaWV3RGF0YSBkYXRhOwotICAgIGRhdGEuZm92ID0geyB2aWV3LmZvdi5hbmdsZVVw
LCB2aWV3LmZvdi5hbmdsZURvd24sIHZpZXcuZm92LmFuZ2xlTGVmdCwgdmlldy5mb3YuYW5nbGVS
aWdodCB9OwotICAgIGRhdGEucG9zZS5vcmllbnRhdGlvbiA9IHsgdmlldy5wb3NlLm9yaWVudGF0
aW9uLngsIHZpZXcucG9zZS5vcmllbnRhdGlvbi55LCB2aWV3LnBvc2Uub3JpZW50YXRpb24ueiwg
dmlldy5wb3NlLm9yaWVudGF0aW9uLncgfTsKLSAgICBkYXRhLnBvc2UucG9zaXRpb24gPSB7IHZp
ZXcucG9zZS5wb3NpdGlvbi54LCB2aWV3LnBvc2UucG9zaXRpb24ueSwgdmlldy5wb3NlLnBvc2l0
aW9uLnogfTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICBEZXZpY2U6OkZyYW1lRGF0YTo6VmlldyBw
b3NlOworICAgIHBvc2UucHJvamVjdGlvbiA9IERldmljZTo6RnJhbWVEYXRhOjpGb3YgeyB2aWV3
LmZvdi5hbmdsZVVwLCB2aWV3LmZvdi5hbmdsZURvd24sIHZpZXcuZm92LmFuZ2xlTGVmdCwgdmll
dy5mb3YuYW5nbGVSaWdodCB9OworICAgIHBvc2Uub2Zmc2V0ID0gWHJQb3NlZlRvUG9zZSh2aWV3
LnBvc2UpOworICAgIHJldHVybiBwb3NlOwogfQogCiB2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVz
dEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCkBAIC01NjIsMTMgKzU5OSwy
MiBAQCB2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiAgICAgICAgIGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSA9IGZy
YW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWU7CiAKICAgICAgICAgaWYgKGlzU2Vzc2lvbkFj
dGl2ZShtX3Nlc3Npb25TdGF0ZSkpIHsKKyAgICAgICAgICAgIC8vIFF1ZXJ5IGhlYWQgbG9jYXRp
b24KKyAgICAgICAgICAgIGF1dG8gbG9jYXRpb24gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTcGFjZUxv
Y2F0aW9uLCBYUl9UWVBFX1NQQUNFX0xPQ0FUSU9OPigpOworICAgICAgICAgICAgeHJMb2NhdGVT
cGFjZShtX3ZpZXdTcGFjZSwgbV9sb2NhbFNwYWNlLCBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3Bs
YXlUaW1lLCAmbG9jYXRpb24pOworICAgICAgICAgICAgZnJhbWVEYXRhLmlzVHJhY2tpbmdWYWxp
ZCA9IGxvY2F0aW9uLmxvY2F0aW9uRmxhZ3MgJiBYUl9TUEFDRV9MT0NBVElPTl9PUklFTlRBVElP
Tl9WQUxJRF9CSVQ7CisgICAgICAgICAgICBmcmFtZURhdGEuaXNQb3NpdGlvblZhbGlkID0gbG9j
YXRpb24ubG9jYXRpb25GbGFncyAmIFhSX1NQQUNFX0xPQ0FUSU9OX1BPU0lUSU9OX1ZBTElEX0JJ
VDsKKyAgICAgICAgICAgIGZyYW1lRGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQgPSBsb2NhdGlvbi5s
b2NhdGlvbkZsYWdzICYgWFJfU1BBQ0VfTE9DQVRJT05fUE9TSVRJT05fVFJBQ0tFRF9CSVQ7CisK
KyAgICAgICAgICAgIGlmIChmcmFtZURhdGEuaXNUcmFja2luZ1ZhbGlkKQorICAgICAgICAgICAg
ICAgIGZyYW1lRGF0YS5vcmlnaW4gPSBYclBvc2VmVG9Qb3NlKGxvY2F0aW9uLnBvc2UpOworICAg
ICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQobV9jb25maWd1cmF0aW9uVmlld3MuY29udGFp
bnMobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBlKSk7CiAgICAgICAgICAgICBjb25zdCBh
dXRvJiBjb25maWd1cmF0aW9uVmlldyA9IG1fY29uZmlndXJhdGlvblZpZXdzLmdldChtX2N1cnJl
bnRWaWV3Q29uZmlndXJhdGlvblR5cGUpOwogCiAgICAgICAgICAgICBhdXRvIHZpZXdMb2NhdGVJ
bmZvID0gY3JlYXRlU3RydWN0dXJlPFhyVmlld0xvY2F0ZUluZm8sIFhSX1RZUEVfVklFV19MT0NB
VEVfSU5GTz4oKTsKICAgICAgICAgICAgIHZpZXdMb2NhdGVJbmZvLmRpc3BsYXlUaW1lID0gcHJl
ZGljdGVkVGltZTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB1c2UgdGhlIGN1cnJlbnQgcmVmZXJl
bmNlIHNwYWNlLgotICAgICAgICAgICAgLy8gdmlld0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2Fs
U3BhY2U7CisgICAgICAgICAgICB2aWV3TG9jYXRlSW5mby5zcGFjZSA9IG1fbG9jYWxTcGFjZTsK
IAogICAgICAgICAgICAgdWludDMyX3Qgdmlld0NvdW50ID0gY29uZmlndXJhdGlvblZpZXcuc2l6
ZSgpOwogICAgICAgICAgICAgVmVjdG9yPFhyVmlldz4gdmlld3Modmlld0NvdW50LCBbXSB7CkBA
IC01ODMsNyArNjI5LDE0IEBAIHZvaWQgT3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVz
dEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICAgICAgICAgIHJlc3VsdCA9IHhyTG9jYXRl
Vmlld3MobV9zZXNzaW9uLCAmdmlld0xvY2F0ZUluZm8sICZ2aWV3U3RhdGUsIHZpZXdDb3VudCwg
JnZpZXdDb3VudE91dHB1dCwgdmlld3MuZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghWFJfRkFJ
TEVEKHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHZpZXcgOiB2aWV3cykK
LSAgICAgICAgICAgICAgICAgICAgZnJhbWVEYXRhLnZpZXdQb3Nlcy5hcHBlbmQoeHJWaWV3VG9W
aWV3RGF0YSh2aWV3KSk7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lRGF0YS52aWV3cy5hcHBl
bmQoeHJWaWV3VG9Qb3NlKHZpZXcpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
UXVlcnkgZmxvb3IgdHJhbnNmb3JtCisgICAgICAgICAgICBpZiAobV9zdGFnZVNwYWNlICE9IFhS
X05VTExfSEFORExFKSB7CisgICAgICAgICAgICAgICAgYXV0byBmbG9vckxvY2F0aW9uID0gY3Jl
YXRlU3RydWN0dXJlPFhyU3BhY2VMb2NhdGlvbiwgWFJfVFlQRV9TUEFDRV9MT0NBVElPTj4oKTsK
KyAgICAgICAgICAgICAgICB4ckxvY2F0ZVNwYWNlKG1fc3RhZ2VTcGFjZSwgbV9sb2NhbFNwYWNl
LCBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lLCAmZmxvb3JMb2NhdGlvbik7CisgICAg
ICAgICAgICAgICAgZnJhbWVEYXRhLmZsb29yVHJhbnNmb3JtID0geyBYclBvc2VmVG9Qb3NlKGZs
b29yTG9jYXRpb24ucG9zZSkgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC02MDAs
NiArNjUzLDIxIEBAIHZvaWQgT3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1l
Q2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAorVmVjdG9yPERldmljZTo6Vmlld0Rh
dGE+IE9wZW5YUkRldmljZTo6dmlld3MoU2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QKK3sKKyAgICBW
ZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3M7CisgICAgYXV0byBjb25maWd1cmF0aW9uVHlw
ZSA9IHRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUobW9kZSk7CisKKyAgICBpZiAoY29uZmlndXJh
dGlvblR5cGUgPT0gWFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9NT05PKQorICAg
ICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgLmV5ZSA9IEV5ZTo6Tm9uZSB9KTsK
KyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGNvbmZpZ3VyYXRpb25UeXBlID09IFhSX1ZJRVdf
Q09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfU1RFUkVPKTsKKyAgICAgICAgdmlld3MuYXBwZW5k
KHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVmdCB9KTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsg
LmFjdGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQgfSk7CisgICAgfQorICAgIHJldHVybiB2aWV3czsK
K30KKwogfSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1YUgogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KSAmJiBVU0UoT1BFTlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
b3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKaW5kZXggNWJlYmU2OTY2OTMyN2RiMmM4MTViNTU2YWVk
ZDFjYTk5YjQ2ZTE3Ni4uMDJkMTk0ZTYyNzFlYmE2YjJhODQ0ODcwMjc5NWE2MDllYTI5MDczZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJP
cGVuWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1Y
Uk9wZW5YUi5oCkBAIC01MSwxMiArNTEsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RD
b25maWd1cmF0aW9uVmlld3MoKTsKIAogICAgIExpc3RPZkVuYWJsZWRGZWF0dXJlcyBlbnVtZXJh
dGVSZWZlcmVuY2VTcGFjZXMoWHJTZXNzaW9uJikgY29uc3Q7Ci0gICAgdm9pZCBpbml0aWFsaXpl
UmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH07CisgICAgWHJTcGFj
ZSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYclJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICBXZWJD
b3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSkgZmluYWw7CiAK
ICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSkgZmlu
YWw7CiAgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7CisgICAg
dm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VU
eXBlKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgd2FpdFVudGlsU3RvcHBp
bmcoKTsKIApAQCAtNjgsNiArNjksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0RnJh
bWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CiAKKyAgICBWZWN0b3I8Vmlld0RhdGE+
IHZpZXdzKFNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKKwogICAgIHVzaW5nIFZpZXdDb25maWd1
cmF0aW9uUHJvcGVydGllc01hcCA9IEhhc2hNYXA8WHJWaWV3Q29uZmlndXJhdGlvblR5cGUsIFhy
Vmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzLCBJbnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRpb25U
eXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4+
OwogICAgIFZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllc01hcCBtX3ZpZXdDb25maWd1cmF0aW9u
UHJvcGVydGllczsKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlvblZpZXdzTWFwID0gSGFzaE1h
cDxYclZpZXdDb25maWd1cmF0aW9uVHlwZSwgVmVjdG9yPFhyVmlld0NvbmZpZ3VyYXRpb25WaWV3
PiwgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKQEAgLTgxLDYgKzg0LDkgQEAgcHJpdmF0
ZToKICAgICBXb3JrUXVldWUmIG1fcXVldWU7CiAKICAgICBYclZpZXdDb25maWd1cmF0aW9uVHlw
ZSBtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGU7CisgICAgWHJTcGFjZSBtX2xvY2FsU3Bh
Y2UgeyBYUl9OVUxMX0hBTkRMRSB9OworICAgIFhyU3BhY2UgbV92aWV3U3BhY2UgeyBYUl9OVUxM
X0hBTkRMRSB9OworICAgIFhyU3BhY2UgbV9zdGFnZVNwYWNlIHsgWFJfTlVMTF9IQU5ETEUgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmNwcAppbmRleCA1NDAxOGRhN2ViYjUzZGQ1MTk0MmRlNzY2MTQ5Njcy
ZmYxYWM4NDU3Li5iZjM4MTQyYmZjOWRlOWJiNzhkZjg0MGZkYzE1YWY0YTk4ZjgxNDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCkBAIC0zMiwxNCArMzIs
MjAgQEAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIldlYkZh
a2VYUklucHV0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIEZha2VYUkZyYW1lVGltZSA9IDE1X21zOwogCi12b2lk
IEZha2VYUlZpZXc6OnNldEZpZWxkT2ZWaWV3KEZha2VYUlZpZXdJbml0OjpGaWVsZE9mVmlld0lu
aXQgZm92KQordm9pZCBGYWtlWFJWaWV3OjpzZXRQcm9qZWN0aW9uKGNvbnN0IFZlY3RvcjxmbG9h
dD4mIHByb2plY3Rpb24pCiB7Ci0gICAgbV9mb3YgPSBmb3Y7CisgICAgc3RkOjpjb3B5KHN0ZDo6
YmVnaW4ocHJvamVjdGlvbiksIHN0ZDo6ZW5kKHByb2plY3Rpb24pLCBzdGQ6OmJlZ2luKG1fcHJv
amVjdGlvbikpOworfQorCit2b2lkIEZha2VYUlZpZXc6OnNldEZpZWxkT2ZWaWV3KGNvbnN0IEZh
a2VYUlZpZXdJbml0OjpGaWVsZE9mVmlld0luaXQmIGZvdikKK3sKKyAgICBtX2ZvdiA9IFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3YgeyBkZWcycmFkKGZvdi51cERlZ3JlZXMpLCBk
ZWcycmFkKGZvdi5kb3duRGVncmVlcyksIGRlZzJyYWQoZm92LmxlZnREZWdyZWVzKSwgZGVnMnJh
ZChmb3YucmlnaHREZWdyZWVzKSB9OwogfQogCiBTaW11bGF0ZWRYUkRldmljZTo6U2ltdWxhdGVk
WFJEZXZpY2UoKQpAQCAtNzQsMzEgKzgwLDcyIEBAIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnN0
b3BUaW1lcigpCiAKIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCgpCiB7
Ci0gICAgYXV0byBjYWxsYmFja3MgPSBXVEZNb3ZlKG1fY2FsbGJhY2tzKTsKLSAgICBmb3IgKGF1
dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQotICAgICAgICBjYWxsYmFjayh7IH0pOworICAgIGF1
dG8gdXBkYXRlcyA9IFdURk1vdmUobV9wZW5kaW5nVXBkYXRlcyk7CisgICAgZm9yIChhdXRvJiB1
cGRhdGUgOiB1cGRhdGVzKQorICAgICAgICB1cGRhdGUoKTsKKworICAgIEZyYW1lRGF0YSBkYXRh
OworICAgIGlmIChtX3ZpZXdlck9yaWdpbikgeworICAgICAgICBkYXRhLm9yaWdpbiA9ICptX3Zp
ZXdlck9yaWdpbjsKKyAgICAgICAgZGF0YS5pc1RyYWNraW5nVmFsaWQgPSB0cnVlOworICAgICAg
ICBkYXRhLmlzUG9zaXRpb25WYWxpZCA9IHRydWU7CisgICAgfQorCisgICAgaWYgKG1fZmxvb3JP
cmlnaW4pCisgICAgICAgIGRhdGEuZmxvb3JUcmFuc2Zvcm0gPSB7ICptX2Zsb29yT3JpZ2luIH07
CisKKyAgICBmb3IgKGF1dG8mIGZha2VWaWV3IDogbV92aWV3cykgeworICAgICAgICBGcmFtZURh
dGE6OlZpZXcgdmlldzsKKyAgICAgICAgdmlldy5vZmZzZXQgPSBmYWtlVmlldy0+b2Zmc2V0KCk7
CisgICAgICAgIGlmIChmYWtlVmlldy0+ZmllbGRPZlZpZXcoKS5oYXNWYWx1ZSgpKQorICAgICAg
ICAgICAgdmlldy5wcm9qZWN0aW9uID0geyAqZmFrZVZpZXctPmZpZWxkT2ZWaWV3KCkgfTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdmlldy5wcm9qZWN0aW9uID0geyBmYWtlVmlldy0+cHJv
amVjdGlvbigpIH07CisgICAgICAgIAorICAgICAgICBkYXRhLnZpZXdzLmFwcGVuZCh2aWV3KTsK
KyAgICB9CisKKyAgICBpZiAobV9GcmFtZUNhbGxiYWNrKQorICAgICAgICBtX0ZyYW1lQ2FsbGJh
Y2soV1RGTW92ZShkYXRhKSk7CiB9CiAKIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnJlcXVlc3RG
cmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIG1fY2FsbGJhY2tz
LmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9GcmFtZUNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CiAgICAgaWYgKCFtX2ZyYW1lVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAg
bV9mcmFtZVRpbWVyLnN0YXJ0T25lU2hvdChGYWtlWFJGcmFtZVRpbWUpOwogfQogCisKK1ZlY3Rv
cjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiBTaW11bGF0ZWRYUkRldmljZTo6dmlld3Mo
UGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUgbW9kZSkgY29uc3QKK3sKKyAgICBpZiAobW9kZSA9PSBQ
bGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpCisgICAgICAgIHJldHVybiB7IHsg
LmFjdGl2ZSA9IHRydWUsIFBsYXRmb3JtWFI6OkV5ZTo6TGVmdCB9LCB7IC5hY3RpdmUgPSB0cnVl
LCBQbGF0Zm9ybVhSOjpFeWU6OlJpZ2h0IH0gfTsKKworICAgIHJldHVybiB7IHsgLmFjdGl2ZSA9
IHRydWUsIFBsYXRmb3JtWFI6OkV5ZTo6Tm9uZSB9IH07Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJE
ZXZpY2U6OnNjaGVkdWxlT25OZXh0RnJhbWUoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmMpCit7Cisg
ICAgbV9wZW5kaW5nVXBkYXRlcy5hcHBlbmQoV1RGTW92ZShmdW5jKSk7Cit9CisKKwogV2ViRmFr
ZVhSRGV2aWNlOjpXZWJGYWtlWFJEZXZpY2UoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV2ViRmFrZVhS
RGV2aWNlOjpzZXRWaWV3cyhjb25zdCBWZWN0b3I8RmFrZVhSVmlld0luaXQ+JiB2aWV3cykKIHsK
LSAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiYgZGV2aWNlVmlld3MgPSBtX2RldmljZS52aWV3
cygpOwotICAgIGRldmljZVZpZXdzLmNsZWFyKCk7CisgICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5l
eHRGcmFtZShbdGhpcywgdmlld3NdKCkgeworICAgICAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+
PiBkZXZpY2VWaWV3czsKIAotICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1l
LgotICAgIGZvciAoYXV0byYgdmlld0luaXQgOiB2aWV3cykgewotICAgICAgICBhdXRvIHZpZXcg
PSBwYXJzZVZpZXcodmlld0luaXQpOwotICAgICAgICBpZiAoIXZpZXcuaGFzRXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICBkZXZpY2VWaWV3cy5hcHBlbmQodmlldy5yZWxlYXNlUmV0dXJuVmFsdWUo
KSk7Ci0gICAgfQorICAgICAgICBmb3IgKGF1dG8mIHZpZXdJbml0IDogdmlld3MpIHsKKyAgICAg
ICAgICAgIGF1dG8gdmlldyA9IHBhcnNlVmlldyh2aWV3SW5pdCk7CisgICAgICAgICAgICBpZiAo
IXZpZXcuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgZGV2aWNlVmlld3MuYXBwZW5k
KHZpZXcucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICB9CisKKyAgICAgICAgbV9kZXZp
Y2Uuc2V0Vmlld3MoV1RGTW92ZShkZXZpY2VWaWV3cykpOworICAgIH0pOwogfQogCiB2b2lkIFdl
YkZha2VYUkRldmljZTo6ZGlzY29ubmVjdChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9t
aXNlKQpAQCAtMTA4LDcxICsxNTUsNzMgQEAgdm9pZCBXZWJGYWtlWFJEZXZpY2U6OmRpc2Nvbm5l
Y3QoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIAogdm9pZCBXZWJGYWtlWFJE
ZXZpY2U6OnNldFZpZXdlck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgb3JpZ2luLCBi
b29sIGVtdWxhdGVkUG9zaXRpb24pCiB7Ci0gICAgYXV0byByaWdpZFRyYW5zZm9ybSA9IHBhcnNl
UmlnaWRUcmFuc2Zvcm0ob3JpZ2luKTsKLSAgICBpZiAocmlnaWRUcmFuc2Zvcm0uaGFzRXhjZXB0
aW9uKCkpCisgICAgYXV0byByZXN1bHQgPSBwYXJzZVJpZ2lkVHJhbnNmb3JtKG9yaWdpbik7Cisg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8g
VE9ETzogZG8gaW4gbmV4dCBhbmltYXRpb24gZnJhbWUuCi0gICAgbV9kZXZpY2Uuc2V0Vmlld2Vy
T3JpZ2luKHJpZ2lkVHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKLSAgICBtX2Rldmlj
ZS5zZXRFbXVsYXRlZFBvc2l0aW9uKGVtdWxhdGVkUG9zaXRpb24pOworICAgIGF1dG8gcG9zZSA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25O
ZXh0RnJhbWUoW3RoaXMsIHBvc2UgPSBXVEZNb3ZlKHBvc2UpLCBlbXVsYXRlZFBvc2l0aW9uXSgp
IG11dGFibGUgeworICAgICAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmlnaW4oV1RGTW92ZShwb3Nl
KSk7CisgICAgICAgIG1fZGV2aWNlLnNldEVtdWxhdGVkUG9zaXRpb24oZW11bGF0ZWRQb3NpdGlv
bik7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpjbGVhclZpZXdlck9yaWdp
bigpCiB7Ci0gICAgLy8gVE9ETzogZG8gaW4gbmV4dCBhbmltYXRpb24gZnJhbWUuCi0gICAgbV9k
ZXZpY2Uuc2V0Vmlld2VyT3JpZ2luKG51bGxwdHIpOworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25O
ZXh0RnJhbWUoW3RoaXNdKCkgeworICAgICAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmlnaW4oV1RG
OjpudWxsb3B0KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNpbXVsYXRl
VmlzaWJpbGl0eUNoYW5nZShYUlZpc2liaWxpdHlTdGF0ZSkKIHsKIH0KIAotdm9pZCBXZWJGYWtl
WFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4pCit2
b2lkIFdlYkZha2VYUkRldmljZTo6c2V0Qm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5k
c1BvaW50PiYmKQogewogfQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6c2V0Rmxvb3JPcmlnaW4o
RmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IG9yaWdpbikKIHsKLSAgICBhdXRvIHJpZ2lkVHJhbnNm
b3JtID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOwotICAgIGlmIChyaWdpZFRyYW5zZm9y
bS5oYXNFeGNlcHRpb24oKSkKKyAgICBhdXRvIHJlc3VsdCA9IHBhcnNlUmlnaWRUcmFuc2Zvcm0o
b3JpZ2luKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBUT0RPOiBkbyBpbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS4KLSAgICBtX2Rldmlj
ZS5zZXRGbG9vck9yaWdpbihyaWdpZFRyYW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Cisg
ICAgYXV0byBwb3NlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworCisgICAgbV9kZXZp
Y2Uuc2NoZWR1bGVPbk5leHRGcmFtZShbdGhpcywgcG9zZSA9IFdURk1vdmUocG9zZSldKCkgbXV0
YWJsZSB7CisgICAgICAgIG1fZGV2aWNlLnNldEZsb29yT3JpZ2luKFdURk1vdmUocG9zZSkpOwor
ICAgIH0pOwogfQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6Y2xlYXJGbG9vck9yaWdpbigpCiB7
Ci0gICAgLy8gVE9ETzogZG8gaW4gbmV4dCBhbmltYXRpb24gZnJhbWUuCi0gICAgbV9kZXZpY2Uu
c2V0Rmxvb3JPcmlnaW4obnVsbHB0cik7CisgICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRGcmFt
ZShbdGhpc10oKSB7CisgICAgICAgIG1fZGV2aWNlLnNldEZsb29yT3JpZ2luKFdURjo6bnVsbG9w
dCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZVJlc2V0UG9z
ZSgpCiB7CiB9CiAKKwogUmVmPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4gV2ViRmFrZVhSRGV2
aWNlOjpzaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbihGYWtlWFJJbnB1dFNvdXJjZUluaXQp
CiB7CiAgICAgcmV0dXJuIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6Y3JlYXRlKCk7CiB9CiAK
LUV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPj4gV2ViRmFrZVhSRGV2aWNlOjpw
YXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYgaW5pdCkK
K0V4Y2VwdGlvbk9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlPiBXZWJGYWtl
WFJEZXZpY2U6OnBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRUcmFuc2Zvcm1J
bml0JiBpbml0KQogewogICAgIGlmIChpbml0LnBvc2l0aW9uLnNpemUoKSAhPSAzIHx8IGluaXQu
b3JpZW50YXRpb24uc2l6ZSgpICE9IDQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IgfTsKIAotICAgIERPTVBvaW50SW5pdCBwb3NpdGlvbjsKLSAgICBwb3NpdGlvbi54ID0g
aW5pdC5wb3NpdGlvblswXTsKLSAgICBwb3NpdGlvbi55ID0gaW5pdC5wb3NpdGlvblsxXTsKLSAg
ICBwb3NpdGlvbi56ID0gaW5pdC5wb3NpdGlvblsyXTsKLQotICAgIERPTVBvaW50SW5pdCBvcmll
bnRhdGlvbjsKLSAgICBvcmllbnRhdGlvbi54ID0gaW5pdC5vcmllbnRhdGlvblswXTsKLSAgICBv
cmllbnRhdGlvbi55ID0gaW5pdC5vcmllbnRhdGlvblsxXTsKLSAgICBvcmllbnRhdGlvbi56ID0g
aW5pdC5vcmllbnRhdGlvblsyXTsKLSAgICBvcmllbnRhdGlvbi53ID0gaW5pdC5vcmllbnRhdGlv
blszXTsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSBwb3NlOworICAg
IHBvc2UucG9zaXRpb24gPSB7IGluaXQucG9zaXRpb25bMF0sIGluaXQucG9zaXRpb25bMV0sIGlu
aXQucG9zaXRpb25bMl0gfTsKKyAgICBwb3NlLm9yaWVudGF0aW9uID0geyBpbml0Lm9yaWVudGF0
aW9uWzBdLCBpbml0Lm9yaWVudGF0aW9uWzFdLCBpbml0Lm9yaWVudGF0aW9uWzJdLCBpbml0Lm9y
aWVudGF0aW9uWzNdIH07CiAKLSAgICByZXR1cm4gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRl
KHBvc2l0aW9uLCBvcmllbnRhdGlvbik7CisgICAgcmV0dXJuIHBvc2U7CiB9CiAKIEV4Y2VwdGlv
bk9yPFJlZjxGYWtlWFJWaWV3Pj4gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVZpZXcoY29uc3QgRmFr
ZVhSVmlld0luaXQmIGluaXQpCkBAIC0xODIsMjIgKzIzMSwxNyBAQCBFeGNlcHRpb25PcjxSZWY8
RmFrZVhSVmlldz4+IFdlYkZha2VYUkRldmljZTo6cGFyc2VWaWV3KGNvbnN0IEZha2VYUlZpZXdJ
bml0JiBpbgogCiAgICAgaWYgKGluaXQucHJvamVjdGlvbk1hdHJpeC5zaXplKCkgIT0gMTYpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBmYWtlVmlldy0+dmll
dygpLT5zZXRQcm9qZWN0aW9uTWF0cml4KGluaXQucHJvamVjdGlvbk1hdHJpeCk7CisgICAgZmFr
ZVZpZXctPnNldFByb2plY3Rpb24oaW5pdC5wcm9qZWN0aW9uTWF0cml4KTsKIAogICAgIGF1dG8g
dmlld09mZnNldCA9IHBhcnNlUmlnaWRUcmFuc2Zvcm0oaW5pdC52aWV3T2Zmc2V0KTsKICAgICBp
ZiAodmlld09mZnNldC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHZpZXdPZmZzZXQu
cmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIGZha2VWaWV3LT52aWV3KCktPnNldFRyYW5zZm9ybSh2
aWV3T2Zmc2V0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBmYWtlVmlldy0+c2V0T2Zmc2V0
KHZpZXdPZmZzZXQucmVsZWFzZVJldHVyblZhbHVlKCkpOwogCiAgICAgZmFrZVZpZXctPnNldFJl
c29sdXRpb24oaW5pdC5yZXNvbHV0aW9uKTsKIAogICAgIGlmIChpbml0LmZpZWxkT2ZWaWV3KSB7
CiAgICAgICAgIGZha2VWaWV3LT5zZXRGaWVsZE9mVmlldyhpbml0LmZpZWxkT2ZWaWV3LnZhbHVl
KCkpOwotICAgICAgICAvLyBUT0RPOiBTZXQgdmlld+KAmXMgcHJvamVjdGlvbiBtYXRyaXggdG8g
dGhlIHByb2plY3Rpb24gbWF0cml4Ci0gICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBm
aWVsZCBvZiB2aWV3LCBhbmQgZGVwdGggdmFsdWVzIGVxdWFsIHRvCi0gICAgICAgIC8vIGRlcHRo
TmVhciBhbmQgZGVwdGhGYXIgb2YgYW55IFhSU2Vzc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGRl
dmljZS4KLSAgICAgICAgLy8gSWYgdGhlcmUgY3VycmVudGx5IGlzIG5vbmUsIHVzZSB0aGUgZGVm
YXVsdCB2YWx1ZXMgb2YgbmVhcj0wLjEsCi0gICAgICAgIC8vIGZhcj0xMDAwLjAuCiAgICAgfQog
CiAgICAgcmV0dXJuIGZha2VWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9XZWJGYWtlWFJEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2
aWNlLmgKaW5kZXggMzkxYmZjMzQ3ZWVmOWFhYWYxN2JkMmJhOGI2YmE0MzZmMDAwNDZkNS4uM2E2
YjBlODU3NjUzZjM3YzRkMThjNjExODdjMzEyZTlkODE3ZGI3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCiAjaW5jbHVkZSAi
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiV2ViWFJSaWdpZFRyYW5zZm9y
bS5oIgotI2luY2x1ZGUgIldlYlhSVmlldy5oIgogI2luY2x1ZGUgIlhSVmlzaWJpbGl0eVN0YXRl
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC00MywyMSArNDEsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmFrZVhSVmll
dyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZha2VYUlZpZXc+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPEZha2VYUlZpZXc+IGNyZWF0ZShYUkV5ZSBleWUpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRmFrZVhSVmlldyhleWUpKTsgfQorICAgIHVzaW5nIFBvc2UgPSBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6UG9zZTsKKyAgICB1c2luZyBGb3YgPSBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6Rm92OwogCi0gICAgUmVmUHRyPFdlYlhSVmlldz4gdmlldygpIHsgcmV0
dXJuIG1fdmlldzsgfQotICAgIHZvaWQgc2V0UmVzb2x1dGlvbihGYWtlWFJWaWV3SW5pdDo6RGV2
aWNlUmVzb2x1dGlvbiByZXNvbHV0aW9uKSB7IG1fcmVzb2x1dGlvbiA9IHJlc29sdXRpb247IH0K
LSAgICB2b2lkIHNldEZpZWxkT2ZWaWV3KEZha2VYUlZpZXdJbml0OjpGaWVsZE9mVmlld0luaXQp
OworICAgIFhSRXllIGV5ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXllOyB9CisgICAgY29uc3QgUG9z
ZSYgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBjb25zdCBzdGQ6OmFy
cmF5PGZsb2F0LCAxNj4mIHByb2plY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb247
IH0KKyAgICBjb25zdCBPcHRpb25hbDxGb3Y+JiBmaWVsZE9mVmlldygpIGNvbnN0IHsgcmV0dXJu
IG1fZm92O30KIAorICAgIHZvaWQgc2V0UmVzb2x1dGlvbihGYWtlWFJWaWV3SW5pdDo6RGV2aWNl
UmVzb2x1dGlvbiByZXNvbHV0aW9uKSB7IG1fcmVzb2x1dGlvbiA9IHJlc29sdXRpb247IH0KKyAg
ICB2b2lkIHNldE9mZnNldChQb3NlJiYgb2Zmc2V0KSB7IG1fb2Zmc2V0ID0gV1RGTW92ZShvZmZz
ZXQpOyB9CisgICAgdm9pZCBzZXRQcm9qZWN0aW9uKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKKyAg
ICB2b2lkIHNldEZpZWxkT2ZWaWV3KGNvbnN0IEZha2VYUlZpZXdJbml0OjpGaWVsZE9mVmlld0lu
aXQmKTsKIHByaXZhdGU6CiAgICAgRmFrZVhSVmlldyhYUkV5ZSBleWUpCi0gICAgewotICAgICAg
ICBtX3ZpZXcgPSBXZWJYUlZpZXc6OmNyZWF0ZSgpOwotICAgICAgICBtX3ZpZXctPnNldEV5ZShl
eWUpOwotICAgIH0KKyAgICAgICAgOiBtX2V5ZShleWUpIHsgfQorCiAKLSAgICBSZWZQdHI8V2Vi
WFJWaWV3PiBtX3ZpZXc7CisgICAgWFJFeWUgbV9leWU7CiAgICAgRmFrZVhSVmlld0luaXQ6OkRl
dmljZVJlc29sdXRpb24gbV9yZXNvbHV0aW9uOwotICAgIEZha2VYUlZpZXdJbml0OjpGaWVsZE9m
Vmlld0luaXQgbV9mb3Y7CisgICAgUG9zZSBtX29mZnNldDsKKyAgICBzdGQ6OmFycmF5PGZsb2F0
LCAxNj4gbV9wcm9qZWN0aW9uOworICAgIE9wdGlvbmFsPEZvdj4gbV9mb3Y7CiB9OwogCiBjbGFz
cyBTaW11bGF0ZWRYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpEZXZpY2UgewpA
QCAtNjUsMzEgKzcwLDM1IEBAIGNsYXNzIFNpbXVsYXRlZFhSRGV2aWNlIGZpbmFsIDogcHVibGlj
IFBsYXRmb3JtWFI6OkRldmljZSB7CiBwdWJsaWM6CiAgICAgU2ltdWxhdGVkWFJEZXZpY2UoKTsK
ICAgICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsKLSAgICB2b2lkIHNldE5hdGl2ZUJvdW5kc0dlb21l
dHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4gZ2VvbWV0cnkpIHsgbV9uYXRpdmVCb3VuZHNH
ZW9tZXRyeSA9IGdlb21ldHJ5OyB9Ci0gICAgdm9pZCBzZXRWaWV3ZXJPcmlnaW4oUmVmUHRyPFdl
YlhSUmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2luKSB7IG1fdmlld2VyT3JpZ2luID0gV1RGTW92ZShv
cmlnaW4pOyB9Ci0gICAgdm9pZCBzZXRGbG9vck9yaWdpbihSZWZQdHI8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiBvcmlnaW4pIHsgbV9mbG9vck9yaWdpbiA9IFdURk1vdmUob3JpZ2luKTsgfQorICAg
IHZvaWQgc2V0Vmlld3MoVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4mJiB2aWV3cykgeyBtX3ZpZXdz
ID0gV1RGTW92ZSh2aWV3cyk7IH0KKyAgICB2b2lkIHNldE5hdGl2ZUJvdW5kc0dlb21ldHJ5KGNv
bnN0IFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4mIGdlb21ldHJ5KSB7IG1fbmF0aXZlQm91bmRz
R2VvbWV0cnkgPSBnZW9tZXRyeTsgfQorICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKE9wdGlvbmFs
PEZyYW1lRGF0YTo6UG9zZT4mJiBvcmlnaW4pIHsgbV92aWV3ZXJPcmlnaW4gPSBXVEZNb3ZlKG9y
aWdpbik7IH0KKyAgICB2b2lkIHNldEZsb29yT3JpZ2luKE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9z
ZT4mJiBvcmlnaW4pIHsgbV9mbG9vck9yaWdpbiA9IFdURk1vdmUob3JpZ2luKTsgfQogICAgIHZv
aWQgc2V0RW11bGF0ZWRQb3NpdGlvbihib29sIGVtdWxhdGVkKSB7IG1fZW11bGF0ZWRQb3NpdGlv
biA9IGVtdWxhdGVkOyB9CiAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4mIHZpZXdzKCkgeyBy
ZXR1cm4gbV92aWV3czsgfQogICAgIHZvaWQgc2V0U3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlv
bihib29sIHN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24pIHsgbV9zdXBwb3J0c1NodXRkb3du
Tm90aWZpY2F0aW9uID0gc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbjsgfQogICAgIHZvaWQg
c2ltdWxhdGVTaHV0ZG93bkNvbXBsZXRlZCgpOworICAgIHZvaWQgc2NoZWR1bGVPbk5leHRGcmFt
ZShGdW5jdGlvbjx2b2lkKCk+JiYpOwogcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9CiAgICAg
dm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7CiAgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
c3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVy
ZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9CisgICAg
VmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IHZpZXdzKFBsYXRmb3JtWFI6OlNl
c3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJh
bWVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcFRpbWVyKCk7CiAgICAgdm9pZCBm
cmFtZVRpbWVyRmlyZWQoKTsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxGYWtlWFJCb3VuZHNQb2lu
dD4+IG1fbmF0aXZlQm91bmRzR2VvbWV0cnk7Ci0gICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+IG1fdmlld2VyT3JpZ2luOwotICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX2Zs
b29yT3JpZ2luOworICAgIE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4gbV92aWV3ZXJPcmlnaW47
CisgICAgT3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiBtX2Zsb29yT3JpZ2luOwogICAgIGJvb2wg
bV9lbXVsYXRlZFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+
PiBtX3ZpZXdzOwogICAgIGJvb2wgbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uIHsgZmFs
c2UgfTsKICAgICBUaW1lciBtX2ZyYW1lVGltZXI7Ci0gICAgVmVjdG9yPFJlcXVlc3RGcmFtZUNh
bGxiYWNrPiBtX2NhbGxiYWNrczsKKyAgICBSZXF1ZXN0RnJhbWVDYWxsYmFjayBtX0ZyYW1lQ2Fs
bGJhY2s7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVuZGluZ1VwZGF0ZXM7CiB9
OwogCiBjbGFzcyBXZWJGYWtlWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJG
YWtlWFJEZXZpY2U+IHsKQEAgLTEwNiw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNp
bXVsYXRlVmlzaWJpbGl0eUNoYW5nZShYUlZpc2liaWxpdHlTdGF0ZSk7CiAKLSAgICB2b2lkIHNl
dEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4gYm91bmRzQ29vcmRpbmF0
ZXMpOworICAgIHZvaWQgc2V0Qm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50
PiYmIGJvdW5kc0Nvb3JkaW5hdGVzKTsKIAogICAgIHZvaWQgc2V0Rmxvb3JPcmlnaW4oRmFrZVhS
UmlnaWRUcmFuc2Zvcm1Jbml0KTsKIApAQCAtMTI3LDcgKzEzNiw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgV2ViRmFrZVhSRGV2aWNlKCk7CiAKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PFdlYlhSUmlnaWRUcmFuc2Zvcm0+PiBwYXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJp
Z2lkVHJhbnNmb3JtSW5pdCYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gcGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJS
aWdpZFRyYW5zZm9ybUluaXQmKTsKIAogICAgIFNpbXVsYXRlZFhSRGV2aWNlIG1fZGV2aWNlOwog
fTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA2M2VmNTIwYWUzOTFlNzBiNjIxODkwODJlZTY3NDI4NDhkNGFhM2MwLi4yNGJk
YzYyZGRlNThiZGM1YjQyN2IzZWU0YzE4ZGYyZTQ4ZmM1MjlmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjEtMDItMTUgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxpYS5jb20+
IGFuZCBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBXZWJYUiBnZXRWaWV3ZXJQb3NlIGFuZCBnZXRQb3NlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyMjUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc0MTEyOTEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1hcmsgcG9zZSByZWxhdGVkIFdlYlhSIHRlc3RzIGFzIHBhc3NpbmcuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMi0xNCAg
UGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIFVz
ZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQgZnJvbSBXZWJQcmVmZXJlbmNlc0ludGVybmFsIHRv
IFdlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpp
bmRleCAwYTYwZmYxNDVkZjFkZmU4Mjg3ZjBiMzA5ZGQ1NGIxODUzNzAxYTliLi42M2E5MTk1ZjQ3
NGRkZDA4YTliZjhkOWYyODU5NDdiYTVlOTgxZjVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0wMi0xNSAgSW1hbm9sIEZlcm5hbmRleiAgPGlm
ZXJuYW5kZXpAaWdhbGlhLmNvbT4gYW5kIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGln
YWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdldFZpZXdlclBvc2UgYW5kIGdl
dFBvc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQxMTI5MTA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFyayBwb3NlIGFuZCByZWZlcmVuY2Ug
c3BhY2UgV2ViWFIgdGVzdHMgYXMgcGFzc2luZy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3NlX2dl
dFBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
UmVmZXJlbmNlU3BhY2VfcmVsYXRpb25zaGlwcy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1h
dGlvbkZyYW1lX2RhdGFfdmFsaWQuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFt
ZV9nZXRWaWV3ZXJQb3NlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJWaWV3X2V5ZXMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFtZXVw
ZGF0ZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDIxLTAyLTEyICBTZXJnaW8gVmls
bGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0g
QW5vdGhlciBXUFQgdGVzdCBpbXBvcnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTYyM2Q0
ZjhhMTdmODVmZjgyN2NjNThlODU4MzM1MDRmOTY2OTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dl
dFBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFhSRnJhbWUu
Z2V0UG9zZSB3b3JrcyBmb3IgaW1tZXJzaXZlIHNlc3Npb25zCitQQVNTIFhSRnJhbWUuZ2V0UG9z
ZSB3b3JrcyBmb3Igbm9uLWltbWVyc2l2ZSBzZXNzaW9ucworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmll
d2VyUG9zZV9nZXRQb3NlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3NlX2dldFBv
c2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MWJlMzkwMTM3OGQ5MDYwNWJiMjYz
ZDYxYmZiZThiZGFmMjBlMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQ
b3NlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUkZyYW1lIGdl
dFZpZXdlclBvc2UocmVmU3BhY2UpIG1hdGNoZXMgZ2V0UG9zZSh2aWV3ZXIsIHJlZlNwYWNlKS4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZkZjlmMmJhNmE1ODE5ZjA0ZjEwY2Y1N2JiY2M5ZjU1MDY5NTVmZmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQ3JlYXRpbmcgWFJSZWZlcmVuY2VTcGFj
ZSBvcmlnaW4gb2Zmc2V0IG9mZiBvZiBgdmlld2VyYCBzcGFjZSB3b3Jrcy4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJl
ZmVyZW5jZVNwYWNlX3JlbGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNl
X3JlbGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZWNjMWIyYmVm
ODJmNjFhYjFiNGFhZWY4YWIxOTEwMzY2YmNkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3Bh
Y2VfcmVsYXRpb25zaGlwcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BB
U1MgQm91bmRlZCBzcGFjZSwgdmlld2VyIHNwYWNlLCBsb2NhbCBhbmQgbG9jYWwtZmxvb3Igc3Bh
Y2UgaGF2ZSBjb3JyZWN0IHBvc2VzIHcuci50LiBlYWNoIG90aGVyCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZDlmMzkxYTc2NGY0ODhiOGY3ZTMxODJjYzg2ZTgyMGIwMWYzMDU3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2RhdGFfdmFsaWQuaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFJlcXVlc3RBbmltYXRpb25GcmFtZSBy
ZXNvbHZlcyB3aXRoIGdvb2QgZGF0YQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJl
NjdkYWZlZTVjM2M4MTBhZDlhMjlhM2VkNWNjZDk5Y2E1NzBhNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9nZXRWaWV3ZXJQb3NlLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZyYW1lIGdldFZpZXdlclBvc2UgdXBkYXRlcyBv
biB0aGUgbmV4dCBmcmFtZSBmb3Igbm9uLWltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBYUkZyYW1l
IGdldFZpZXdlclBvc2UgdXBkYXRlcyBvbiB0aGUgbmV4dCBmcmFtZSBmb3IgaW1tZXJzaXZlIHNl
c3Npb25zCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNiNTYyMWE0ZTFiMzY4MWJjNGRlMjQ1N2Q3OWNiZjViZWQyYzg4MTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIElkZW50aXR5IHJlZmVyZW5jZSBzcGFjZSBwcm92aWRl
cyBjb3JyZWN0IHBvc2VzIGZvciBpbmxpbmUgc2Vzc2lvbnMKK1BBU1MgSWRlbnRpdHkgcmVmZXJl
bmNlIHNwYWNlIHByb3ZpZGVzIGNvcnJlY3QgcG9zZXMgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X2V5ZXMuaHR0cHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRjZGFjMmRlMTJhMTBjNjY5YmNiNTk4M2FhMzAyZGE1OWJiNjlm
OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKKworUEFTUyBYUlZpZXcuZXllIGlzIGNvcnJlY3QgZm9yIGltbWVyc2l2ZSBzZXNzaW9u
cworUEFTUyBYUlZpZXcuZXllIGlzIGNvcnJlY3QgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExM2Y2YmM5ZTY1ZWM2ZjEzNDYxM2I5ZTJiMWY0NzFiY2Ez
NTk0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19tYXRjaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACisKK1BBU1MgWFJGcmFtZSBjb250YWlucyB0aGUgZXhwZWN0ZWQgdmlld3MKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1
cGRhdGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMDIyMTU4ZjBiNWRhYzczMzFm
YzZlNTg3YTAwOTBkM2Y1OGJkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFtZXVwZGF0ZS5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJWaWV3IHByb2plY3Rp
b24gbWF0cmljZXMgdXBkYXRlIG5lYXIgYW5kIGZhciBkZXB0aHMgb24gdGhlIG5leHQgZnJhbWUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMzJmY2Qw
M2ZjNTIxZjhjOGRhYzkxMzc1NjE5N2MxYWM2MTdlY2E3Li5kZGU5ODFlNjM3ZWY0NDE4Y2NlNTYz
NThkNDViMDE5ODc1Y2FlNTgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNjM4LDI2ICs2MzgsMzYgQEAgd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW8KIHdl
YmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9ub19tb2RlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtp
dC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRl
dmljZV9yZXF1ZXN0U2Vzc2lvbl9ub25faW1tZXJzaXZlX25vX2dlc3R1cmUuaHR0cHMuaHRtbCBb
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX29wdGlvbmFsRmVhdHVyZXMuaHR0cHMu
aHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzIwOTg1OSB3ZWJraXQub3JnL2IvMjE1NjM3IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1h
dGlvbkZyYW1lLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwOTg1
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxB
bmltYXRpb25GcmFtZV9pbnZhbGlkaGFuZGxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5v
cmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Np
b25fZmVhdHVyZXNfZGV2aWNlU3VwcG9ydC5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsgUGFzcyBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0dHBzLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcv
Yi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25f
cmVxdWVzdFJlZmVyZW5jZVNwYWNlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3NlX2dldFBvc2UuaHR0
cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
ckZyYW1lX2dldFBvc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25fc2FtZU9iamVjdC5odHRwcy5odG1sIFsg
UGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92
aWV3ZXJfYXZhaWxhYmlsaXR5Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4
NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFy
bmVzcy5odHRwcy53aW5kb3cuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS94ckRldmljZV9pc1Nl
c3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlLWFyLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X2V5ZXMuaHR0cHMuaHRtbCBbIFBh
c3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2gu
aHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9i
LzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXll
cl9jb25zdHJ1Y3Rvci5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2ZyYW1lYnVm
ZmVyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9uYXZpZ2F0b3JfeHJfc2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFz
cyBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfc2Vzc2lv
bl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJS
ZWZlcmVuY2VTcGFjZV9yZWxhdGlvbnNoaXBzLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9jb25zdHJ1Y3Rv
ci5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyUmlnaWRUcmFuc2Zvcm1faW52ZXJzZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fbWF0cml4Lmh0
dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlv
bkZyYW1lX2ludmFsaWRoYW5kbGUuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZW5kLmh0dHBzLmh0bWwgWyBQYXNzIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2ZlYXR1cmVz
X2RldmljZVN1cHBvcnQuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcHJldmVudF9tdWx0aXBsZV9leGNsdXNpdmUuaHR0
cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2NhbGxiYWNrX2NhbGxzLmh0dHBzLmh0bWwg
WyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmlt
YXRpb25GcmFtZV9nZXRWaWV3ZXJQb3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFt
ZV90aW1lc3RhbXAuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNwYWNlLmh0dHBzLmh0bWwg
WyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3JlbmRlcl9zdGF0ZV92ZXJ0aWNhbF9mb3ZfaW1tZXJz
aXZlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvcmVuZGVyX3N0YXRlX3VwZGF0ZS5odHRwcy5odG1sIFsgUGFzcyBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9lbmQuaHR0cHMuaHRtbCBbIFBh
c3MgXQogaHR0cC93cHQvd2VieHIveHJTZXNzaW9uX2VuZF9kZXZpY2VfcmVwb3J0c19zaHV0ZG93
bi5odHRwcy5odG1sIFsgUGFzcyBdCiBodHRwL3dwdC93ZWJ4ci94clNlc3Npb25fZW5kZWRfYnlf
c3lzdGVtLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGh0dHAvd3B0L3dlYnhyL3hyU2Vzc2lvbl9yZWpl
Y3RfbXVsdGlwbGVfZW5kLmh0dHBzLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420336</attachid>
            <date>2021-02-15 11:04:05 -0800</date>
            <delta_ts>2021-02-16 04:41:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221225-20210215200403.patch</filename>
            <type>text/plain</type>
            <size>95782</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NiNTRiNzVmZmFmNzdj
N2QyM2FjNGQxM2E4YjQxZTk2MmNkNmIyYy4uODJmNTlhOWI1M2FhNzdmNmExOTBhMmQyYWZkMTY0
MmMyNzlmNWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAyMS0wMi0xNSAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4gYW5kIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdl
dFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQxMTI5MTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBy
b3ZlIFBsYXRmb3JtWFI6OkZyYW1lRGF0YSBzdHJ1Y3QuCisgICAgICAgIC0gSW1wbGVtZW50IFdl
YlhSRnJhbWUgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZS4KKyAgICAgICAgLSBJbXBsZW1lbnQg
V2ViWFJSZWZlcmVuY2VTcGFjZSBvZmZzZXQsIG9yaWdpbiBhbmQgZWZmZWN0aXZlIHRyYW5mb3Jt
cy4KKyAgICAgICAgLSBJbXBsZW1lbnQgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UgbmF0aXZl
T3JpZ2luLgorICAgICAgICAtIEFwcGx5IGZyYW1lIHVwZGF0ZXMgaW4gV2ViWFJTZXNzaW9uLgor
ICAgICAgICAtIEltcGxlbWVudCB2aWV3cyBmb3IgT3BlblhSIGFuZCBEdW1teUlubGluZURldmlj
ZSBpbmxpbmUgc2Vzc2lvbnMuCisgICAgICAgIC0gUXVlcnkgYW5kIGNvbXBsZXRlIGFsbCB0aGUg
bmV3IEZyYW1lRGF0YSBpbiB0aGUgT3BlblhSIHBvcnQuCisgICAgICAgIC0gQ29tcGxldGUgdGhl
IFdlYkZha2VYUkRldmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorCisg
ICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgV1BUIHRlc3RzCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVtZW50IG5hdGl2ZU9y
aWdpbmEgYW5kIGdldE9mZnNldFJlZmVyZW5jZVNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Ym91
bmRzR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSRnJhbWUuY3BwOiBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0
UG9zZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
RnJhbWU6Om11c3RQb3Nlc0JlTGltaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1l
Ojpwb3B1bGF0ZVBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Z2V0Vmlld2Vy
UG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpnZXRQb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlv
bi4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSRnJhbWU6OnNldEZyYW1lRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmlkbDogYWRkIE1heVRocm93RXhjZXB0aW9uLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuY3BwOiBBZGQgV2ViWFJSaWdpZFRyYW5zZm9ybSBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXIuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJQb3NlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJQb3NlOjpXZWJY
UlBvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlBvc2U6OmlzVmlld2VyUG9zZSBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuaWRsOiBSZW1vdmUgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQor
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVt
ZW50IG9mZnNldCwgb3JpZ2luIGFuZCBlZmZlY3RpdmUgdHJhbmZvcm1zLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmZsb29yT3JpZ2luVHJhbnNmb3Jt
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVy
ZW5jZVNwYWNlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaWRsOiBBZGQgU2tpcFZUYWJsZVZhbGlkYXRpb24uCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6IEFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZy
YW1lLiBBZGQgYWN0aXZlIHZpZXdzIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Np
b246OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVl
c3RSZWZlcmVuY2VTcGFjZSk6IFVzZSBXZWFrUHRyIGluc3RlYWQgUmVmIGZvciBXZWJYUlNlc3Np
b24uCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpwb3Nlc0NhbkJlUmVwb3J0ZWQgY29uc3QpOiBhZGQKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIG5hdGl2ZU9yaWdpbiBhbmQgZWZmZWN0aXZlT3Jp
Z2luIG1lbWJlciBmdW5jdGlvbnMuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6V2ViWFJTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJTcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNlOjppc1JlZmVyZW5jZVNwYWNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzQm91bmRlZFJlZmVyZW5jZVNw
YWNlIGNvbnN0KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOiBJ
bXBsZW1lbnQgdmlld3MgZm9yIER1bW15SW5saW5lRGV2aWNlLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjp2aWV3cyBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwOiBQYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm0gaW4gdGhlIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpXZWJYUlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJWaWV3OjpzZXRQcm9qZWN0aW9uTWF0cml4KTogVXNlIHN0ZDo6YXJyYXkgdG8gbWF0Y2ggZGV2
aWNlIGRhdGEuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSVmlldzo6cHJvamVjdGlvbk1hdHJpeCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlZpZXc6OnRyYW5zZm9ybSBjb25zdCk6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSVmlld2VyUG9zZS5jcHA6IEFkZCB2aWV3cyBzZXR0ZXIuIEFkZCBzcGVjaWFs
aXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpzZXRWaWV3cyk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSVmlld2VyUG9zZS5pZGw6IFJlbW92ZSBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LiBBZGQgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9YUkV5ZS5oOiBSZXVzZSBQbGF0Zm9ybVhSIGVudW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDogQWRkIHByb2plY3Rp
b24gbWF0cml4IHV0aWxpdHkgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6IEltcHJvdmUgRnJhbWVEYXRhLgorCisgICAgICAgICogcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOiBRdWVyeSBhbmQgY29tcGxldGUgYWxs
IHRoZSBuZXcgRnJhbWVEYXRhLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpj
cmVhdGVSZWZlcmVuY2VTcGFjZSk6IGFkZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbik6IFF1ZXJ5IHJlc29s
dXRpb24gZGF0YSBmcm9tIE9wZW5YUi4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmlj
ZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKTogSW5pdGlhbGl6ZSBsb2NhbCBhbmQg
dmlldyBYclNwYWNlcy4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6aW5pdGlh
bGl6ZVJlZmVyZW5jZVNwYWNlKTogTGF6aWx5IGluaXRpYWxpemUgc3RhZ2UgWHJTcGFjZS4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6OlhyUG9zZWZUb1Bvc2UpOiBhZGQgaGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoUGxhdGZvcm1YUjo6eHJWaWV3VG9Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlvbi4K
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKTogQ29tcGxl
dGUgYWxsIHRoZSBuZXcgZnJhbWUgRGF0YQorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2
aWNlOjp2aWV3cyBjb25zdCk6IEltcGxlbWVudCB2aWV3IGRhdGEgZm9yIE9wZW5YUgorICAgICAg
ICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmg6CisKKyAgICAgICAgKiB0
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IENvbXBsZXRlIHRoZSByZXF1aXJlZCBpbXBsZW1l
bnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6RmFrZVhSVmll
dzo6c2V0UHJvamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGYWtlWFJWaWV3OjpzZXRGaWVs
ZE9mVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Vmlld3MpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhclZpZXdlck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Rmxvb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaDoKKwogMjAyMS0wMi0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBEb24ndCB1cGRhdGUgZm9ybSBjb250cm9sIGVsZW1lbnRz
IHZhbGlkaXR5IHN0YXR1cyBpZiB0aGV5IGFyZSBkZXRhY2hlZCBmcm9tIHRoZSBkb2N1bWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDQ0ZWQ2MmJkY2Q1NmZiZTgyNzk0MDFlMzA2MDM4
OGQ3M2Y0OTFmZC4uM2ZlNjk4MDc2MGQzMzIzYWRlZWNkZDE5ZGU3ODk1ZmM0ZWNiZjhkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTI5LDI5ICsyOSw2MyBAQAogI2lmIEVOQUJMRShXRUJY
UikKIAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHkuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Np
b24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZSk7CiAKLVJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1JlZjxXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVmZXJl
bmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHR5cGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVu
dCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUp
KTsKIH0KIAotV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBY
UlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQotICAgIDogV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1
bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlwZSkKKworUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlPiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFu
c2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZN
b3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsKK30KKworCitXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRy
YW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCisgICAgOiBXZWJY
UlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNl
dCksIHR5cGUpCiB7CiB9CiAKIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjp+V2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoKSA9IGRlZmF1bHQ7CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAoreworICAgIC8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnJlZmVyZW5jZXNw
YWNldHlwZS1ib3VuZGVkLWZsb29yLgorICAgIC8vIEJvdW5kZWQgZmxvb3Igc3BhY2Ugc2hvdWxk
IGJlIGF0IHRoZSBzYW1lIGhlaWdodCBhcyBsb2NhbCBmbG9vciBzcGFjZS4KKyAgICByZXR1cm4g
Zmxvb3JPcmlnaW5UcmFuc2Zvcm0oKTsKK30KKwogY29uc3QgVmVjdG9yPFJlZjxET01Qb2ludFJl
YWRPbmx5Pj4mIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpib3VuZHNHZW9tZXRyeSgpIGNv
bnN0CiB7CisgICAgLy8gRklYTUU6IGdldCBkYXRhIGZyb20gZGV2aWNlCiAgICAgcmV0dXJuIG1f
Ym91bmRzR2VvbWV0cnk7CiB9CiAKKworUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJY
UlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0pCit7CisgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChpczxE
b2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7CisKKyAgICAvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVuY2VzcGFjZS1nZXRvZmZz
ZXRyZWZlcmVuY2VzcGFjZQorICAgIC8vIFNldCBvZmZzZXRTcGFjZeKAmXMgb3JpZ2luIG9mZnNl
dCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9yaWdpbiBvZmZzZXQgYnkg
b3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNlLgorICAgIGF1dG8gb2Zm
c2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG1fb3JpZ2luT2Zmc2V0LT5yYXdUcmFu
c2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7CisKKyAgICAvLyBGSVhN
RTogc2V0IG9mZnNldFNwYWNl4oCZcyBib3VuZHNHZW9tZXRyeSB0byBiYXNl4oCZcyBib3VuZHNH
ZW9tZXRyeSwgd2l0aCBlYWNoIHBvaW50IG11bHRpcGxpZWQgYnkgdGhlIGludmVyc2Ugb2Ygb3Jp
Z2luT2Zmc2V0LgorICAgIHJldHVybiBjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4obV9zZXNzaW9uKSwgV1RG
TW92ZShvZmZzZXQpLCBtX3R5cGUpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaAppbmRleCA3MWE5Zjk3MGE3
MzAxYmQ0ZjA0ZTRjMGJiZWU4MWVhZWVhM2Y0NGQ3Li4wNjIzOTE4MmFlMTE5MDRlNDhlMThmMzBh
OGRiNWU5OWYzNDZjMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCkBAIC0yNSwxMyArMjUsMTMgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpZiBFTkFCTEUoV0VCWFIpCisKICNpbmNsdWRlICJXZWJYUlJl
ZmVyZW5jZVNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBFTkFCTEUoV0VCWFIpCi0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NUG9pbnRSZWFkT25seTsKQEAgLTM5LDE4
ICszOSwyNSBAQCBjbGFzcyBET01Qb2ludFJlYWRPbmx5OwogY2xhc3MgV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UgOiBwdWJsaWMgV2ViWFJSZWZlcmVuY2VTcGFjZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50Jiwg
UmVmPFdlYlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBS
ZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYWtQdHI8
V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJY
UlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSk7CiAKICAgICB2aXJ0dWFsIH5XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSgpOwogCisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAgICAg
Y29uc3QgVmVjdG9yPFJlZjxET01Qb2ludFJlYWRPbmx5Pj4mIGJvdW5kc0dlb21ldHJ5KCkgY29u
c3Q7CisgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IGdldE9mZnNldFJlZmVyZW5jZVNw
YWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYs
IFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShE
b2N1bWVudCYsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworCisgICAgYm9vbCBpc0JvdW5kZWRSZWZlcmVu
Y2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFZlY3RvcjxSZWY8
RE9NUG9pbnRSZWFkT25seT4+IG1fYm91bmRzR2VvbWV0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCWFJTUEFDRShXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZSwgaXNCb3VuZGVkUmVmZXJlbmNlU3BhY2UoKSkKKwogI2VuZGlmIC8v
IEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
Y3BwCmluZGV4IGYyNzg3NjFiMGE3YjdkMjlkMTc5NDIyMzUwYTJhYTE5OGEyM2JkZWMuLjhhN2Ux
NzEzMzUxNjUyNTA5MjVhNThiNjVlOWQ3OTFjNmJhZmZlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMjgsMzUgKzI4LDIyMSBAQAogCiAjaWYg
RU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaCIK
KyNpbmNsdWRlICJXZWJYUlJlZmVyZW5jZVNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9u
LmgiCiAjaW5jbHVkZSAiV2ViWFJWaWV3ZXJQb3NlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChXZWJYUkZyYW1lKTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6OmNy
ZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCitSZWY8V2ViWFJGcmFtZT4gV2ViWFJG
cmFtZTo6Y3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgSXNBbmltYXRpb25GcmFt
ZSBpc0FuaW1hdGlvbkZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJh
bWUoV1RGTW92ZShzZXNzaW9uKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJh
bWUoV1RGTW92ZShzZXNzaW9uKSwgaXNBbmltYXRpb25GcmFtZSkpOwogfQogCi1XZWJYUkZyYW1l
OjpXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKLSAgICA6IG1fc2Vzc2lv
bihXVEZNb3ZlKHNlc3Npb24pKQorV2ViWFJGcmFtZTo6V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNz
aW9uPiYmIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKKyAgICA6
IG1faXNBbmltYXRpb25GcmFtZShpc0FuaW1hdGlvbkZyYW1lID09IElzQW5pbWF0aW9uRnJhbWU6
OlllcykKKyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQogewogfQogCiBXZWJYUkZy
YW1lOjp+V2ViWFJGcmFtZSgpID0gZGVmYXVsdDsKIAogCi1SZWZQdHI8V2ViWFJWaWV3ZXJQb3Nl
PiBXZWJYUkZyYW1lOjpnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKQor
Citib29sIFdlYlhSRnJhbWU6OmlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5j
ZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmIHNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJikgY29uc3QK
K3sKKyAgICBpZiAoIWlzPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPihzcGFjZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiByZXR1cm4gdHJ1ZSB3aGVuZXZlciB0
aGUgZGlzdGFuY2UgZnJvbSB0aGUgYm91bmRlZCBnZW9tZXRyeSBvZgorICAgIC8vIHxzcGFjZXwg
dG8gdGhlIG5hdGl2ZSBvcmlnaW4gb2YgfG90aGVyfCBzcGFjZSBpcyBncmVhdGVyIHRoYW4gMW0K
KyAgICAvLyAoc3VnZ2VzdGVkIGJ5IHNwZWNzKS4KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBXZWJYUkZyYW1lOjppc0xvY2FsUmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYg
c3BhY2UpIGNvbnN0Cit7CisgICAgaWYgKCFpczxXZWJYUlJlZmVyZW5jZVNwYWNlPihzcGFjZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gdHlwZSA9IGRvd25jYXN0PFdlYlhS
UmVmZXJlbmNlU3BhY2U+KHNwYWNlKS50eXBlKCk7CisgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVu
Y2VTcGFjZVR5cGU6OkxvY2FsIHx8IHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2Fs
Rmxvb3IpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNwb3Nlcy1tdXN0LWJlLWxp
bWl0ZWQKK2Jvb2wgV2ViWFJGcmFtZTo6bXVzdFBvc2VzQmVMaW1pdGVkKGNvbnN0IFdlYlhSU3Bh
Y2UmIHNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJiBiYXNlU3BhY2UpIGNvbnN0Cit7CisgICAgaWYg
KGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5jZVNwYWNlKHNwYWNlLCBiYXNl
U3BhY2UpCisgICAgICAgIHx8IGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5j
ZVNwYWNlKGJhc2VTcGFjZSwgc3BhY2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
IChpc0xvY2FsUmVmZXJlbmNlU3BhY2Uoc3BhY2UpIHx8IGlzTG9jYWxSZWZlcmVuY2VTcGFjZShi
YXNlU3BhY2UpKSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZGlzdGFuY2UgYmV0d2VlbiBu
YXRpdmUgb3JpZ2lucyBvZiBzcGFjZXMgaXMgZ3JlYXRlcgorICAgICAgICAvLyB0aGFuIDE1bSAo
c3VnZ2VzdGVkIGJ5IHNwZWNzKSByZXR1cm4gdHJ1ZS4KKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKworc3RydWN0IFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2UgeworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICBib29sIGVtdWxhdGVkUG9zaXRpb24geyBm
YWxzZSB9OworfTsKKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8j
cG9wdWxhdGUtdGhlLXBvc2UKK0V4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVs
YXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBXZWJYUlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNl
KQoreworICAgIC8vIDEuIElmIGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiBpcyBmYWxzZSwgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICgh
bV9hY3RpdmUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OworCisgICAgLy8gMi4gTGV0IHNlc3Npb24gYmUgZnJhbWXigJlzIHNlc3Npb24gb2JqZWN0Lgor
ICAgIC8vIDMuIElmIHNwYWNl4oCZcyBzZXNzaW9uIGRvZXMgbm90IGVxdWFsIHNlc3Npb24sIHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAo
c3BhY2Uuc2Vzc2lvbigpLmdldCgpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyA0LiBJZiBiYXNlU3Bh
Y2XigJlzIHNlc3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChiYXNlU3BhY2Uuc2Vzc2lv
bigpLmdldCgpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyA1LiBDaGVjayBpZiBwb3NlcyBtYXkgYmUg
cmVwb3J0ZWQgYW5kLCBpZiBub3QsIHRocm93IGEgU2VjdXJpdHlFcnJvciBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCisgICAgaWYgKCFtX3Nlc3Npb24tPnBvc2VzQ2FuQmVSZXBvcnRlZChkb2N1bWVu
dCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CisKKyAgICAv
LyA2LiBMZXQgbGltaXQgYmUgdGhlIHJlc3VsdCBvZiB3aGV0aGVyIHBvc2VzIG11c3QgYmUgbGlt
aXRlZCBiZXR3ZWVuIHNwYWNlIGFuZCBiYXNlU3BhY2UuCisgICAgYm9vbCBsaW1pdCA9IG11c3RQ
b3Nlc0JlTGltaXRlZChzcGFjZSwgYmFzZVNwYWNlKTsKKworICAgIC8vIDcuIExldCB0cmFuc2Zv
cm0gYmUgcG9zZeKAmXMgdHJhbnNmb3JtLgorICAgIC8vIDguIFF1ZXJ5IHRoZSBYUiBkZXZpY2Un
cyB0cmFja2luZyBzeXN0ZW0gZm9yIHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZlIHRvIGJhc2VTcGFj
ZSBhdCB0aGUgZnJhbWXigJlzIHRpbWUuCisKKyAgICBpZiAoIW1fZGF0YS5pc1RyYWNraW5nVmFs
aWQpIHsKKyAgICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZl
IHRvIGJhc2VTcGFjZSBoYXMgYmVlbiBkZXRlcm1pbmVkIGluIHRoZSBwYXN0LgorICAgICAgICAv
LyBBbnl3YXkgdGhpcyBlbXVsYXRpb24gaXMgdXN1YWxseSBwcm92aWRlZCBieSB0aGUgc3lzdGVt
IGluIHRoZSBwb3NlIChlLmcuIE9wZW5YUikKKyAgICAgICAgLy8gc28gd2Ugc2hvdWxkbid0IGhp
dCB0aGlzIHBhdGggaW4gbW9zdCBYUlBsYXRmb3JtIHBvcnRzLgorICAgICAgICByZXR1cm4geyBX
VEY6Om51bGxvcHQgfTsKKyAgICB9CisKKyAgICBhdXRvIGJhc2VUcmFuc2Zvcm0gPSBiYXNlU3Bh
Y2UuZWZmZWN0aXZlT3JpZ2luKCk7CisgICAgaWYgKCFiYXNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJs
ZSgpKQorICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKworICAgIGF1dG8gdHJhbnNm
b3JtID0gICpiYXNlVHJhbnNmb3JtLmludmVyc2UoKSAqIHNwYWNlLmVmZmVjdGl2ZU9yaWdpbigp
OworICAgIGNvbnN0IGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IG1fZGF0YS5pc1Bvc2l0aW9uRW11
bGF0ZWQgfHwgIW1fZGF0YS5pc1Bvc2l0aW9uVmFsaWQ7CisKKyAgICBpZiAobGltaXQpIHsKKyAg
ICAgICAgLy8gRklYTUU6IGFwcGx5IHBvc2UgbGltaXRzIGxvZ2ljCisgICAgICAgIC8vIGh0dHBz
Oi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Bvc2VzLW11c3QtYmUtbGltaXRlZAor
ICAgIH0KKworICAgIHJldHVybiB7IFBvcHVsYXRlZFBvc2UgeyB0cmFuc2Zvcm0sIGVtdWxhdGVk
UG9zaXRpb24gfSB9OworfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dl
YnhyLyNkb20teHJmcmFtZS1nZXR2aWV3ZXJwb3NlCitFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJW
aWV3ZXJQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9zZShjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmIHJlZmVyZW5jZVNwYWNlKQoreworICAg
IC8vIDEuIExldCBmcmFtZSBiZSB0aGlzLgorICAgIC8vIDIuIExldCBzZXNzaW9uIGJlIGZyYW1l
4oCZcyBzZXNzaW9uIG9iamVjdC4KKyAgICAvLyAzLiBJZiBmcmFtZeKAmXMgYW5pbWF0aW9uRnJh
bWUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0
IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9pc0FuaW1hdGlvbkZyYW1lKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIDQuIExldCBwb3Nl
IGJlIGEgbmV3IFhSVmlld2VyUG9zZSBvYmplY3QgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNl
c3Npb24uCisgICAgLy8gNS4gUG9wdWxhdGUgdGhlIHBvc2Ugb2Ygc2Vzc2lvbuKAmXMgdmlld2Vy
IHJlZmVyZW5jZSBzcGFjZSBpbiByZWZlcmVuY2VTcGFjZSBhdCB0aGUgdGltZSByZXByZXNlbnRl
ZCBieSBmcmFtZSBpbnRvIHBvc2UuCisgICAgYXV0byBwb3B1bGF0ZVBvc2VSZXN1bHQgPSBwb3B1
bGF0ZVBvc2UoZG9jdW1lbnQsIG1fc2Vzc2lvbi0+dmlld2VyUmVmZXJlbmNlU3BhY2UoKSwgcmVm
ZXJlbmNlU3BhY2UpOworICAgIGlmIChwb3B1bGF0ZVBvc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwor
CisgICAgLy8gNi4gSWYgcG9zZSBpcyBudWxsIHJldHVybiBudWxsLgorICAgIGF1dG8gcG9wdWxh
dGVWYWx1ZSA9IHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBp
ZiAoIXBvcHVsYXRlVmFsdWUuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBwb3NlID0gV2ViWFJWaWV3ZXJQb3NlOjpjcmVh
dGUoV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKHBvcHVsYXRlVmFsdWUtPnRyYW5zZm9ybSks
IHBvcHVsYXRlVmFsdWUtPmVtdWxhdGVkUG9zaXRpb24pOworCisgICAgLy8gNy4gTGV0IHhydmll
d3MgYmUgYW4gZW1wdHkgbGlzdC4KKyAgICBWZWN0b3I8UmVmPFdlYlhSVmlldz4+IHhyVmlld3M7
CisgICAgLy8gOC4gRm9yIGVhY2ggYWN0aXZlIHZpZXcgdmlldyBpbiB0aGUgbGlzdCBvZiB2aWV3
cyBvbiBzZXNzaW9uLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgZm9yIChhdXRv
JiB2aWV3IDogbV9zZXNzaW9uLT52aWV3cygpKSB7CisgICAgICAgIGF1dG8gaW5kZXggPSB4clZp
ZXdzLnNpemUoKTsKKyAgICAgICAgaWYgKCF2aWV3LmFjdGl2ZSB8fCBtX2RhdGEudmlld3Muc2l6
ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gOC4xIExl
dCB4cnZpZXcgYmUgYSBuZXcgWFJWaWV3IG9iamVjdCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Yg
c2Vzc2lvbi4KKyAgICAgICAgLy8gOC4yIEluaXRpYWxpemUgeHJ2aWV34oCZcyB1bmRlcmx5aW5n
IHZpZXcgdG8gdmlldy4KKyAgICAgICAgLy8gOC4zIEluaXRpYWxpemUgeHJ2aWV34oCZcyBleWUg
dG8gdmlld+KAmXMgZXllLgorICAgICAgICAvLyA4LjQgSW5pdGlhbGl6ZSB4cnZpZXfigJlzIGZy
YW1lIHRpbWUgdG8gZnJhbWXigJlzIHRpbWUuCisgICAgICAgIC8vIDguNSBJbml0aWFsaXplIHhy
dmlld+KAmXMgc2Vzc2lvbiB0byBzZXNzaW9uLgorICAgICAgICAvLyA4LjYuIExldCBvZmZzZXQg
YmUgYW4gbmV3IFhSUmlnaWRUcmFuc2Zvcm0gb2JqZWN0IGVxdWFsIHRvIHRoZSB2aWV3IG9mZnNl
dCBvZiB2aWV3IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBzZXNzaW9uLgorICAgICAgICAvLyA4
LjcuIFNldCB4cnZpZXfigJlzIHRyYW5zZm9ybSBwcm9wZXJ0eSB0byB0aGUgcmVzdWx0IG9mIG11
bHRpcGx5aW5nIHRoZSBYUlZpZXdlclBvc2UncyB0cmFuc2Zvcm0gYnkgdGhlIG9mZnNldCB0cmFu
c2Zvcm0gaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNlc3Npb24KKyAgICAgICAgYXV0byBvZmZz
ZXQgPSBtYXRyaXhGcm9tUG9zZShtX2RhdGEudmlld3NbaW5kZXhdLm9mZnNldCk7CisgICAgICAg
IGF1dG8gdHJhbnNmb3JtID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKHBvc2UtPnRyYW5z
Zm9ybSgpLnJhd1RyYW5zZm9ybSgpICogb2Zmc2V0KTsKKworICAgICAgICAvLyBTZXQgcHJvamVj
dGlvbiBtYXRyaXggZm9yIGVhY2ggdmlldworICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCAxNj4g
cHJvamVjdGlvbiA9IHN3aXRjaE9uKG1fZGF0YS52aWV3c1tpbmRleF0ucHJvamVjdGlvbiwgWyZd
KGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3YmIGZvdikgeworICAgICAg
ICAgICAgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7
CisgICAgICAgICAgICBkb3VibGUgZmFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRo
RmFyKCk7CisgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9q
ZWN0aW9uKGZvdi51cCwgZm92LmRvd24sIGZvdi5sZWZ0LCBmb3YucmlnaHQsIG5lYXIsIGZhciku
dG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IHN0ZDo6YXJy
YXk8ZmxvYXQsIDE2PiYgbWF0cml4KSB7CisgICAgICAgICAgICByZXR1cm4gbWF0cml4OworICAg
ICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CisgICAgICAgICAgICAvLyBVc2UgYXNwZWN0
IHByb2plY3Rpb24gZm9yIGlubGluZSBzZXNzaW9ucworICAgICAgICAgICAgZG91YmxlIGZvdiA9
ICBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuaW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpLnZh
bHVlT3IocGlPdmVyVHdvRG91YmxlKTsKKyAgICAgICAgICAgIGZsb2F0IGFzcGVjdCA9IDE7Cisg
ICAgICAgICAgICBhdXRvIGxheWVyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmJhc2VMYXll
cigpOworICAgICAgICAgICAgaWYgKGxheWVyKQorICAgICAgICAgICAgICAgIGFzcGVjdCA9IHN0
YXRpY19jYXN0PGRvdWJsZT4obGF5ZXItPmZyYW1lYnVmZmVyV2lkdGgoKSkgLyBzdGF0aWNfY2Fz
dDxkb3VibGU+KGxheWVyLT5mcmFtZWJ1ZmZlckhlaWdodCgpKTsKKyAgICAgICAgICAgIGRvdWJs
ZSBuZWFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRoTmVhcigpOworICAgICAgICAg
ICAgZG91YmxlIGZhciA9IG1fc2Vzc2lvbi0+cmVuZGVyU3RhdGUoKS5kZXB0aEZhcigpOworICAg
ICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpmcm9tUHJvamVjdGlvbihmb3Ys
IGFzcGVjdCwgbmVhciwgZmFyKS50b0NvbHVtbk1ham9yRmxvYXRBcnJheSgpOworICAgICAgICB9
KTsKKworICAgICAgICBhdXRvIHhyVmlldyA9IFdlYlhSVmlldzo6Y3JlYXRlKHZpZXcuZXllLCBX
VEZNb3ZlKHRyYW5zZm9ybSksIEZsb2F0MzJBcnJheTo6Y3JlYXRlKHByb2plY3Rpb24uZGF0YSgp
LCBwcm9qZWN0aW9uLnNpemUoKSkpOworCisgICAgICAgIC8vICA4LjguIEFwcGVuZCB4cnZpZXcg
dG8geHJ2aWV3cworICAgICAgICB4clZpZXdzLmFwcGVuZChXVEZNb3ZlKHhyVmlldykpOworICAg
IH0KKworICAgIC8vIDkuIFNldCBwb3Nl4oCZcyB2aWV3cyB0byB4cnZpZXdzCisgICAgcG9zZS0+
c2V0Vmlld3MoV1RGTW92ZSh4clZpZXdzKSk7CisKKyAgICAvLyAxMC4gUmV0dXJuIHBvc2UuCisg
ICAgcmV0dXJuIHBvc2U7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBXZWJY
UkZyYW1lOjpnZXRQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgV2ViWFJTcGFj
ZSYgc3BhY2UsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSkKIHsKLSAgICByZXR1cm4geyB9
OworICAgIC8vIDEuIExldCBmcmFtZSBiZSB0aGlzLgorICAgIC8vIDIuIExldCBwb3NlIGJlIGEg
bmV3IFhSUG9zZSBvYmplY3QgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIGZyYW1lLgorICAgIC8v
IDMuIFBvcHVsYXRlIHRoZSBwb3NlIG9mIHNwYWNlIGluIGJhc2VTcGFjZSBhdCB0aGUgdGltZSBy
ZXByZXNlbnRlZCBieSBmcmFtZSBpbnRvIHBvc2UuCisKKyAgICBhdXRvIHBvcHVsYXRlUG9zZVJl
c3VsdCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgc3BhY2UsIGJhc2VTcGFjZSk7CisgICAgaWYg
KHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHBvcHVs
YXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIHBvcHVsYXRlVmFs
dWUgPSBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKCFw
b3B1bGF0ZVZhbHVlLmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Ly8gNC4gUmV0dXJuIHBvc2UuCisgICAgcmV0dXJuIFJlZlB0cjxXZWJYUlBvc2U+KFdlYlhSUG9z
ZTo6Y3JlYXRlKFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShwb3B1bGF0ZVZhbHVlLT50cmFu
c2Zvcm0pLCBwb3B1bGF0ZVZhbHVlLT5lbXVsYXRlZFBvc2l0aW9uKSk7CiB9CiAKLVJlZlB0cjxX
ZWJYUlBvc2U+IFdlYlhSRnJhbWU6OmdldFBvc2UoY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdl
YlhSU3BhY2UmKQorVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBv
c2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2UmIHBvc2UpCiB7Ci0g
ICAgcmV0dXJuIHsgfTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7CisgICAgbWF0
cml4LnRyYW5zbGF0ZTNkKHBvc2UucG9zaXRpb24ueCgpLCBwb3NlLnBvc2l0aW9uLnkoKSwgcG9z
ZS5wb3NpdGlvbi56KCkpOworICAgIG1hdHJpeC5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6ZnJvbVF1YXRlcm5pb24ocG9zZS5vcmllbnRhdGlvbi54LCBwb3NlLm9yaWVudGF0aW9uLnks
IHBvc2Uub3JpZW50YXRpb24ueiwgcG9zZS5vcmllbnRhdGlvbi53KSk7CisgICAgcmV0dXJuIG1h
dHJpeDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSRnJhbWUuaAppbmRleCAyYTI2YWQ4NmEyYzMwZGE4YzIzZGZiNmM3YmJiOTAz
ODJkMTJlMDVkLi43MTk2NGMxYzRjMjE5ZDU4NjE4MmQ2YTQ2ZWMxZjA1YjQxNTczMDYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtMjgsNiArMjgsOCBA
QAogI2lmIEVOQUJMRShXRUJYUikKIAogI2luY2x1ZGUgIkRPTUhpZ2hSZXNUaW1lU3RhbXAuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC0zNSw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBXZWJYUlBvc2U7CiBjbGFzcyBXZWJYUlJlZmVyZW5j
ZVNwYWNlOwogY2xhc3MgV2ViWFJTZXNzaW9uOwpAQCAtNDQsMjMgKzQ3LDM4IEBAIGNsYXNzIFdl
YlhSVmlld2VyUG9zZTsKIGNsYXNzIFdlYlhSRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJY
UkZyYW1lPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUkZyYW1lKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYm
KTsKKyAgICBlbnVtIGNsYXNzIElzQW5pbWF0aW9uRnJhbWUgOiBib29sIHsgTm8sIFllcyB9Owor
ICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYsIElz
QW5pbWF0aW9uRnJhbWUpOwogICAgIH5XZWJYUkZyYW1lKCk7CiAKICAgICBjb25zdCBXZWJYUlNl
c3Npb24mIHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KIAotICAg
IFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+IGdldFZpZXdlclBvc2UoY29uc3QgV2ViWFJSZWZlcmVu
Y2VTcGFjZSYpOwotICAgIFJlZlB0cjxXZWJYUlBvc2U+IGdldFBvc2UoY29uc3QgV2ViWFJTcGFj
ZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3
ZXJQb3NlPj4gZ2V0Vmlld2VyUG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFdlYlhSUmVmZXJl
bmNlU3BhY2UmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJQb3NlPj4gZ2V0UG9zZShj
b25zdCBEb2N1bWVudCYsIGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CiAK
ICAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRp
bWU7IH0KKyAgICB2b2lkIHNldEZyYW1lRGF0YShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YSYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQorCiAgICAgdm9pZCBzZXRBY3Rp
dmUoYm9vbCBhY3RpdmUpIHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0KICAgICBib29sIGlzQWN0aXZl
KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KIAorICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtYXRyaXhGcm9tUG9zZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YTo6UG9zZSYpOworCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlhSRnJhbWUoUmVmPFdlYlhS
U2Vzc2lvbj4mJik7CisgICAgZXhwbGljaXQgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYm
LCBJc0FuaW1hdGlvbkZyYW1lKTsKKyAgICBXZWJYUkZyYW1lKFdlYlhSU2Vzc2lvbiYsIGJvb2wg
aXNBbmltYXRpb25GcmFtZSk7CisKKyAgICBib29sIGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91
bmRlZFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJikg
Y29uc3Q7CisgICAgYm9vbCBpc0xvY2FsUmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYp
IGNvbnN0OworICAgIGJvb2wgbXVzdFBvc2VzQmVMaW1pdGVkKGNvbnN0IFdlYlhSU3BhY2UmLCBj
b25zdCBXZWJYUlNwYWNlJikgY29uc3Q7CisKKyAgICBzdHJ1Y3QgUG9wdWxhdGVkUG9zZTsKKyAg
ICBFeGNlcHRpb25PcjxPcHRpb25hbDxQb3B1bGF0ZWRQb3NlPj4gcG9wdWxhdGVQb3NlKGNvbnN0
IERvY3VtZW50JiwgY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogICAg
IGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OwotICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgbV90aW1l
OworICAgIGJvb2wgbV9pc0FuaW1hdGlvbkZyYW1lIHsgZmFsc2UgfTsKKyAgICBET01IaWdoUmVz
VGltZVN0YW1wIG1fdGltZSB7IDAgfTsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YSBtX2RhdGE7CiAgICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwKaW5kZXggMjFmY2YzY2ZlNGQ5
Yzc1ZmQ3ZjQ2OGU0OTdkYjhlODAwN2I4YWRmMi4uZDM0MDI2NWIyMmQ4ODkyM2VlMmRjMjVhNzdk
ZGI4Mzc5ZGE1NDBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUuaWRsCkBAIC0zMyw2ICszMyw2IEBACiBdIGludGVyZmFjZSBXZWJYUkZyYW1lIHsKICAgICBb
U2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSU2Vzc2lvbiBzZXNzaW9uOwogCi0g
ICAgV2ViWFJWaWV3ZXJQb3NlPyBnZXRWaWV3ZXJQb3NlKFdlYlhSUmVmZXJlbmNlU3BhY2UgcmVm
ZXJlbmNlU3BhY2UpOwotICAgIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNwYWNlIHNwYWNlLCBX
ZWJYUlNwYWNlIGJhc2VTcGFjZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBDYWxsV2l0aD1E
b2N1bWVudF0gV2ViWFJWaWV3ZXJQb3NlPyBnZXRWaWV3ZXJQb3NlKFdlYlhSUmVmZXJlbmNlU3Bh
Y2UgcmVmZXJlbmNlU3BhY2UpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9RG9j
dW1lbnRdIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNwYWNlIHNwYWNlLCBXZWJYUlNwYWNlIGJh
c2VTcGFjZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlBvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuY3Bw
CmluZGV4IDFjNWY4MGE1NDQ1NWNiZThmY2IwNzJkNTQ3YjMxOTZhOTg4Nzg2NTguLjMzOTlkOGFl
NTAwM2UyYWU0M2MwMWU0NmJkMDMzYjA5MTNiMjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSUG9zZS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlBvc2UpOwogCi1SZWY8
V2ViWFJQb3NlPiBXZWJYUlBvc2U6OmNyZWF0ZSgpCitSZWY8V2ViWFJQb3NlPiBXZWJYUlBvc2U6
OmNyZWF0ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0
ZWRQb3NpdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlBvc2UpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxh
dGVkUG9zaXRpb24pKTsKIH0KIAotV2ViWFJQb3NlOjpXZWJYUlBvc2UoKQotICAgIDogbV90cmFu
c2Zvcm0oV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCitXZWJYUlBvc2U6OldlYlhSUG9z
ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0ZWRQb3Np
dGlvbikKKyAgICA6IG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSksIG1fZW11bGF0ZWRQ
b3NpdGlvbihlbXVsYXRlZFBvc2l0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlBvc2UuaAppbmRleCAyOTkxOWQyNGMzOTUzYWEzOWEyYzQ4OTRiYzdjY2U1YzI5
YzE3ZTZhLi5lYzU3OTA2ODMxNjQyNWQ4ZTk4MjMzMTk3YjY5OTBiNDE4Y2JhMWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNw
cmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdFQlhSKQotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Yy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpA
QCAtMzgsMTQgKzM3LDE2IEBAIGNsYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm07CiBjbGFzcyBXZWJY
UlBvc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlBvc2U+IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFdlYlhSUG9zZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlBvc2U+
IGNyZWF0ZSgpOwotICAgIH5XZWJYUlBvc2UoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSUG9zZT4g
Y3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRpb24p
OworICAgIHZpcnR1YWwgfldlYlhSUG9zZSgpOwogCiAgICAgY29uc3QgV2ViWFJSaWdpZFRyYW5z
Zm9ybSYgdHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKCkgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3ZXJQb3NlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKwogcHJvdGVjdGVkOgotICAgIFdlYlhSUG9zZSgpOworICAgIFdlYlhSUG9zZShSZWY8
V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKIAogICAgIFJl
ZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKICAgICBib29sIG1fZW11bGF0ZWRQ
b3NpdGlvbiB7IGZhbHNlIH07CkBAIC01Myw0ICs1NCw5IEBAIHByb3RlY3RlZDoKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCWFJQ
T1NFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSAgICAgICAgICAgICAgICAgICAgXAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5hbWUpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3Qg
V2ViQ29yZTo6V2ViWFJQb3NlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LnByZWRpY2F0ZTsg
fSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VC
WFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwKaW5kZXggNGM0
ZTlkYWRjOGVhMGFmMzE1MTg2OTQxOTNiOTI0OTY0NDc4ODAyNi4uMmU1YjM4NjRlNTk4Mjc4MmE3
OTVjZWI5YmQ3YzRlMThkNmRlMjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJQb3NlLmlkbApAQCAtMjgsNyArMjgsNiBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAog
ICAgIFNlY3VyZUNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3csCi0gICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKICAgICBJbnRlcmZhY2VOYW1lPVhSUG9zZQogXSBpbnRlcmZhY2UgV2Vi
WFJQb3NlIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSUmlnaWRU
cmFuc2Zvcm0gdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDViYjBlODFmOTJjNTg5YWM3ZmM2Yjc1
NzEzNjUyNWFmMDJjYTc5Ni4uYzZmYzgxZmM0YWIyYmE0NDgzY2M1M2U1MzJmZDhlOTQyZDZlMDVi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5j
ZVNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJl
bmNlU3BhY2UuY3BwCkBAIC0yOSwzNCArMjksMTA5IEBACiAjaWYgRU5BQkxFKFdFQlhSKQogCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAi
V2ViWFJSaWdpZFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Rh
dGljIGNvbnN0ZXhwciBkb3VibGUgRGVmYXVsdFVzZXJIZWlnaHRJbk1ldGVycyA9IDEuNjU7CisK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlJlZmVyZW5jZVNwYWNlKTsKIAotUmVm
PFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFj
ZVR5cGUgdHlwZSkKK1JlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNl
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4mJiBzZXNz
aW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHR5cGUp
KTsKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4cnNwYWNl
LW5hdGl2ZS1vcmlnaW4KKyAgICAvLyBUaGUgdHJhbnNmb3JtIGZyb20gdGhlIGVmZmVjdGl2ZSBz
cGFjZSB0byB0aGUgbmF0aXZlIG9yaWdpbidzIHNwYWNlIGlzCisgICAgLy8gZGVmaW5lZCBieSBh
biBvcmlnaW4gb2Zmc2V0LCB3aGljaCBpcyBhbiBYUlJpZ2lkVHJhbnNmb3JtIGluaXRpYWxseSBz
ZXQKKyAgICAvLyB0byBhbiBpZGVudGl0eSB0cmFuc2Zvcm0uCisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2Vi
WFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUpKTsKIH0KIAotV2ViWFJSZWZlcmVuY2VT
cGFjZTo6V2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNl
c3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKLSAgICA6IFdlYlhS
U3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbikpCitSZWY8V2ViWFJSZWZlcmVuY2VTcGFj
ZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vha1B0
cjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zm
c2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdURk1v
dmUob2Zmc2V0KSwgdHlwZSkpOworfQorCitXZWJYUlJlZmVyZW5jZVNwYWNlOjpXZWJYUlJlZmVy
ZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYgc2Vz
c2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSB0eXBlKQorICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwg
V1RGTW92ZShvZmZzZXQpKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CiAKIFdlYlhSUmVmZXJl
bmNlU3BhY2U6On5XZWJYUlJlZmVyZW5jZVNwYWNlKCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8V2Vi
WFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNl
U3BhY2UoY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYpCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4
IFdlYlhSUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0Cit7CisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggaWRlbnRpdHk7CisKKyAgICAvLyBXZSBhc3N1bWUgdGhhdCBwb3NlcyBn
b3QgZnJvbSB0aGUgZGV2aWNlcyBhcmUgaW4gbG9jYWwgc3BhY2UuCisgICAgLy8gVGhpcyB3aWxs
IHJlcXVpcmUgbW9yZSBjb21wbGV4IGxvZ2ljIGlmIHdlIGFkZCBwb3J0cyB3aXRoIGRpZmZlcmVu
dCBkZWZhdWx0IGNvb3JkaW5hdGVzLgorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBY
UlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyOiB7CisgICAgICAgIC8vIFJldHVybiB0aGUgY3Vy
cmVudCBwb3NlLiBDb250ZW50IHJlbmRlcmVkIGluIHZpZXdlciBwb3NlIHdpbGwgc3RheSBpbiBm
aXhlZCBwb2ludCBvbiBITURzLgorICAgICAgICBhdXRvIGRhdGEgPSBmcmFtZURhdGEoKTsKKyAg
ICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIGlkZW50aXR5OworICAgICAgICBy
ZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoZGF0YS0+b3JpZ2luKTsKKyAgICB9Cisg
ICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWw6CisgICAgICAgIC8vIERhdGEgZnJv
bSB0aGUgZGV2aWNlIGlzIGFscmVhZHkgaW4gbG9jYWwsIHVzZSB0aGUgaWRlbnRpdHkgbWF0cml4
LgorICAgICAgICByZXR1cm4gaWRlbnRpdHk7CisgICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlw
ZTo6VW5ib3VuZGVkOgorICAgICAgICAvLyBMb2NhbCBhbmQgdW5ib3VuZGVkIHVzZSB0aGUgc2Ft
ZSBkZXZpY2Ugc3BhY2UsIHVzZSB0aGUgaWRlbnRpdHkgbWF0cml4LgorICAgICAgICByZXR1cm4g
aWRlbnRpdHk7CisgICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vcjogewor
ICAgICAgICAvLyBVc2UgdGhlIGZsb29yIHRyYW5zZm9ybSBwcm92aWRlZCBieSB0aGUgZGV2aWNl
IG9yIGZhbGxiYWNrIHRvIGEgZGVmYXVsdCBoZWlnaHQuCisgICAgICAgIHJldHVybiBmbG9vck9y
aWdpblRyYW5zZm9ybSgpOworICAgIH0KKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpC
b3VuZGVkRmxvb3I6CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gQm91bmRlZEZsb29yIGlzIGhh
bmRsZWQgYnkgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2Ugc3ViY2xhc3MKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gaWRlbnRpdHk7
Cit9CisKK1JlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpn
ZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRU
cmFuc2Zvcm0pCiB7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIEFTU0VSVChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSksIG1fc2Vzc2lvbi5jb3B5UmVmKCksIG1fdHlwZSk7CisKKyAg
ICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVu
Y2VzcGFjZS1nZXRvZmZzZXRyZWZlcmVuY2VzcGFjZQorICAgIC8vIFNldCBvZmZzZXRTcGFjZeKA
mXMgb3JpZ2luIG9mZnNldCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9y
aWdpbiBvZmZzZXQgYnkgb3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNl
LgorICAgIGF1dG8gb2Zmc2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG1fb3JpZ2lu
T2Zmc2V0LT5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7
CisKKyAgICByZXR1cm4gY3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSwgV2Vha1B0cjxXZWJYUlNlc3Npb24+KG1fc2Vzc2lvbiksIFdURk1vdmUob2Zm
c2V0KSwgbV90eXBlKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJSZWZlcmVuY2VT
cGFjZTo6Zmxvb3JPcmlnaW5UcmFuc2Zvcm0oKSBjb25zdAoreworICAgIGF1dG8gZGF0YSA9IGZy
YW1lRGF0YSgpOworICAgIGlmICghZGF0YSB8fCAhZGF0YS0+Zmxvb3JUcmFuc2Zvcm0pIHsKKyAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGVmYXV0VHJhbnNmb3JtOworICAgICAgICBkZWZh
dXRUcmFuc2Zvcm0udHJhbnNsYXRlM2QoMC4wLCAtRGVmYXVsdFVzZXJIZWlnaHRJbk1ldGVycywg
MC4wKTsKKyAgICAgICAgcmV0dXJuIGRlZmF1dFRyYW5zZm9ybTsKKyAgICB9CisKKyAgICAvLyBo
dHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVuY2VzcGFj
ZXR5cGUtbG9jYWwtZmxvb3IKKyAgICAvLyBHZXQgZmxvb3IgZXN0aW1hdGlvbiBmcm9tIHRoZSBk
ZXZpY2UKKyAgICAvLyBGSVhNRTogUm91bmQgdG8gbmVhcmVzdCAxY20gdG8gcHJldmVudCBmaW5n
ZXJwcmludGluZworICAgIHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9zZSgqZGF0YS0+
Zmxvb3JUcmFuc2Zvcm0pOwogfQogCitPcHRpb25hbDxjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSY+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmZyYW1lRGF0YSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIG1fc2Vzc2lvbi0+ZnJhbWVEYXRhKCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaAppbmRleCBhMmM4MDUxZjU5YzIyN2Q4Nzc3
OTVjMmJiOGY2ZTczNjNkZThmM2UzLi41OTBlOTU5NTE4M2ZjN2I2OGJiY2M1NTg2NTM4ODlkYjI3
OGVlNjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaApAQCAtNDAsMTggKzQwLDI5IEBAIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIGNs
YXNzIFdlYlhSUmVmZXJlbmNlU3BhY2UgOiBwdWJsaWMgV2ViWFJTcGFjZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJYUlJlZmVyZW5jZVNwYWNlKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNl
c3Npb24+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSUmVm
ZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmLCBY
UlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNl
PiBjcmVhdGUoRG9jdW1lbnQmLCBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4mJiwgUmVmPFdlYlhSUmln
aWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldl
YlhSUmVmZXJlbmNlU3BhY2UoKTsKIAotICAgIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBn
ZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJik7CisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4gZ2V0T2Zmc2V0UmVmZXJlbmNlU3Bh
Y2UoY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYpOworICAgIFhSUmVmZXJlbmNlU3BhY2VUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYlhS
UmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5j
ZVNwYWNlVHlwZSk7CisgICAgV2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFdlYWtQdHI8
V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VT
cGFjZVR5cGUpOworCisgICAgYm9vbCBpc1JlZmVyZW5jZVNwYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZmxvb3JPcmlnaW5UcmFu
c2Zvcm0oKSBjb25zdDsKKworICAgIE9wdGlvbmFsPGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhJj4gZnJhbWVEYXRhKCkgY29uc3Q7CiAKICAgICBYUlJlZmVyZW5jZVNwYWNlVHlw
ZSBtX3R5cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0VCWFJTUEFDRShXZWJYUlJlZmVyZW5jZVNwYWNlLCBpc1JlZmVyZW5jZVNwYWNl
KCkpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbAppbmRleCAyODM1MDdmNDQ1YTUy
ZmUyZTE3MTk2NmY1MDczYmMxM2I0OWZjNTNiLi44MWU0NGQzNGRhMTY3YjhmZTZkYjIzNGMyNDBj
OTM4NTYzNTI1OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSUmVmZXJlbmNlU3BhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJSZWZlcmVuY2VTcGFjZS5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBFeHBvc2VkPVdp
bmRvdywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVP
YmplY3QsCisgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgSW50ZXJmYWNlTmFtZT1YUlJl
ZmVyZW5jZVNwYWNlCiBdIGludGVyZmFjZSBXZWJYUlJlZmVyZW5jZVNwYWNlIDogV2ViWFJTcGFj
ZSB7CiAgICAgW05ld09iamVjdF0gV2ViWFJSZWZlcmVuY2VTcGFjZSBnZXRPZmZzZXRSZWZlcmVu
Y2VTcGFjZShXZWJYUlJpZ2lkVHJhbnNmb3JtIG9yaWdpbk9mZnNldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggYmQ2YzUwMWNiN2VjNWE3
MWNiN2E3MDdiMTk5OWZkOWJhOTI4OGIyYy4uZWI4Nzg0MDBlMzZhNDVkYmVlMTY0NGRkMTQyNmJm
M2UzNjQ1NGUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmNwcApAQCAtMjgsMTEgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU1dl
YlhSUmVmZXJlbmNlU3BhY2UuaCIKICNpbmNsdWRlICJXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZS5oIgogI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUlN5c3RlbS5oIgor
I2luY2x1ZGUgIldlYlhSVmlldy5oIgogI2luY2x1ZGUgIlhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2su
aCIKICNpbmNsdWRlICJYUlJlbmRlclN0YXRlSW5pdC5oIgogI2luY2x1ZGUgIlhSU2Vzc2lvbkV2
ZW50LmgiCkBAIC01NSw3ICs1Nyw5IEBAIFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBt
X21vZGUobW9kZSkKICAgICAsIG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCiAgICAgLCBt
X2FjdGl2ZVJlbmRlclN0YXRlKFdlYlhSUmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKKyAgICAs
IG1fdmlld2VyUmVmZXJlbmNlU3BhY2UoV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3Vt
ZW50LCBtYWtlV2Vha1B0cigqdGhpcyksIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXIpKQog
ICAgICwgbV90aW1lT3JpZ2luKE1vbm90b25pY1RpbWU6Om5vdygpKQorICAgICwgbV92aWV3cyhk
ZXZpY2Uudmlld3MobW9kZSkpCiB7CiAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZyhtb2RlKTsKICAgICBtX2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5kZXJpbmdD
bGllbnQobWFrZVdlYWtQdHIoKnRoaXMpKTsKQEAgLTIzMCw5ICsyMzQsOSBAQCB2b2lkIFdlYlhS
U2Vzc2lvbjo6cmVxdWVzdFJlZmVyZW5jZVNwYWNlKFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUs
IFJlcXVlc3RSZWZlcgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1
Yi5pby93ZWJ4ci8jY3JlYXRlLWEtcmVmZXJlbmNlLXNwYWNlCiAgICAgICAgICAgICBSZWZQdHI8
V2ViWFJSZWZlcmVuY2VTcGFjZT4gcmVmZXJlbmNlU3BhY2U7CiAgICAgICAgICAgICBpZiAodHlw
ZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKQotICAgICAgICAgICAgICAg
IHJlZmVyZW5jZVNwYWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1
bWVudCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNw
YWNlID0gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVdl
YWtQdHIoKnRoaXMpLCB0eXBlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShkb2N1bWVudCwgbWFr
ZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAgIHJlZmVyZW5jZVNwYWNlID0gV2Vi
WFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlV2Vha1B0cigqdGhpcyksIHR5
cGUpOwogCiAgICAgICAgICAgICAvLyAyLjUuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHJlZmVyZW5j
ZVNwYWNlLgogICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlZmVyZW5jZVNwYWNlLnJlbGVh
c2VOb25OdWxsKCkpOwpAQCAtNDc4LDEzICs0ODIsMTUgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9u
RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFF1ZXVlIGEgdGFzayB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcg
c3RlcHMuCi0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpXZWJYUiwgW3RoaXMsIGZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKV0oKSB7CisgICAg
cXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3Ro
aXMsIGZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKG1fZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9mcmFtZURhdGEg
PSBmcmFtZURhdGE7CiAgICAgICAgIC8vICAxLkxldCBub3cgYmUgdGhlIGN1cnJlbnQgaGlnaCBy
ZXNvbHV0aW9uIHRpbWUuCiAgICAgICAgIGF1dG8gbm93ID0gKE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV90aW1lT3JpZ2luKS5taWxsaXNlY29uZHMoKTsKIAotICAgICAgICBhdXRvIGZyYW1lID0g
V2ViWFJGcmFtZTo6Y3JlYXRlKG1ha2VSZWYoKnRoaXMpKTsKKyAgICAgICAgYXV0byBmcmFtZSA9
IFdlYlhSRnJhbWU6OmNyZWF0ZShtYWtlUmVmKCp0aGlzKSwgV2ViWFJGcmFtZTo6SXNBbmltYXRp
b25GcmFtZTo6WWVzKTsKICAgICAgICAgLy8gIDIuTGV0IGZyYW1lIGJlIHNlc3Npb27igJlzIGFu
aW1hdGlvbiBmcmFtZS4KICAgICAgICAgLy8gIDMuU2V0IGZyYW1l4oCZcyB0aW1lIHRvIGZyYW1l
VGltZS4KICAgICAgICAgZnJhbWUtPnNldFRpbWUoc3RhdGljX2Nhc3Q8RE9NSGlnaFJlc1RpbWVT
dGFtcD4oZnJhbWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1lKSk7CkBAIC01MDgsNyArNTE0LDcg
QEAgdm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGEmJiBmcmFtZURhdGEpCiAgICAgICAgICAgICBmcmFtZS0+c2V0QWN0aXZlKHRydWUpOwogCiAg
ICAgICAgICAgICAvLyA2LjQuQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCi0gICAgICAg
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorICAgICAgICAgICAgZnJhbWUtPnNldEZyYW1lRGF0
YShXVEZNb3ZlKGZyYW1lRGF0YSkpOwogCiAgICAgICAgICAgICAvLyA2LjUuRm9yIGVhY2ggZW50
cnkgaW4gc2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJh
bWUgY2FsbGJhY2tzLCBpbiBvcmRlcjoKICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBjYWxsYmFja3MpIHsKQEAgLTUzNyw2ICs1NDMsMjUgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9u
RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgfSk7
CiB9CiAKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Bvc2VzLW1h
eS1iZS1yZXBvcnRlZAorYm9vbCBXZWJYUlNlc3Npb246OnBvc2VzQ2FuQmVSZXBvcnRlZChjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7CisgICAgLy8gMS4gSWYgc2Vzc2lvbuKAmXMg
cmVsZXZhbnQgZ2xvYmFsIG9iamVjdCBpcyBub3QgdGhlIGN1cnJlbnQgZ2xvYmFsIG9iamVjdCwg
cmV0dXJuIGZhbHNlLgorICAgIGF1dG8qIHNlc3Npb25Eb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghc2Vzc2lvbkRvY3VtZW50
IHx8IHNlc3Npb25Eb2N1bWVudC0+ZG9tV2luZG93KCkgIT0gZG9jdW1lbnQuZG9tV2luZG93KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIDIuIElmIHNlc3Npb24ncyB2aXNpYmls
aXR5U3RhdGUgaW4gbm90ICJ2aXNpYmxlIiwgcmV0dXJuIGZhbHNlLgorICAgIGlmIChtX3Zpc2li
aWxpdHlTdGF0ZSAhPSBYUlZpc2liaWxpdHlTdGF0ZTo6VmlzaWJsZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gNS4gRGV0ZXJtaW5lIGlmIHRoZSBwb3NlIGRhdGEgY2FuIGJlIHJl
dHVybmVkIGFzIGZvbGxvd3M6CisgICAgLy8gVGhlIHByb2NlZHVyZSBpbiB0aGUgc3BlY3MgdHJp
ZXMgdG8gZW5zdXJlIHRoYXQgd2UgYXBwbHkgbWVhc3VyZXMgdG8KKyAgICAvLyBwcmV2ZW50IGZp
bmdlcnByaW50aW50IGluIHBvc2UgZGF0YSBhbmQgcmV0dXJuIGZhbHNlIGluIGNhc2Ugd2UgZG9u
J3QuCisgICAgLy8gV2UncmUgZ29pbmcgdG8gYXBwbHkgdGhlbSBzbyBsZXQncyBqdXN0IHJldHVy
biB0cnVlLgorICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uaAppbmRleCBkODM2M2E1YzkzMWNmNTBmN2I2ZTMxOWFlZWRiM2U4YTIzMzRm
ZWU1Li4zZTgzOTExNzI0MjMyY2Y3MGRlODM5ODUyNTM4OTA2ZTQzYjEyZjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKQEAgLTUwLDYgKzUwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgWFJGcmFtZVJlcXVlc3RDYWxsYmFjazsKIGNsYXNz
IFdlYlhSUmVmZXJlbmNlU3BhY2U7CiBjbGFzcyBXZWJYUlN5c3RlbTsKK2NsYXNzIFdlYlhSVmll
dzsKIHN0cnVjdCBYUlJlbmRlclN0YXRlSW5pdDsKIAogY2xhc3MgV2ViWFJTZXNzaW9uIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJTZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBQbGF0Zm9ybVhSOjpU
cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCB7CkBAIC05MCw2ICs5MSwxMSBAQCBwdWJsaWM6CiAK
ICAgICBYUlNlc3Npb25Nb2RlIG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KIAorICAg
IGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmIHZpZXdlclJlZmVyZW5jZVNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3ZXJSZWZlcmVuY2VTcGFjZS5nZXQoKTsgfQorICAgIGNvbnN0IFZlY3Rv
cjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiYgdmlld3MoKSBjb25zdCB7IHJldHVybiBt
X3ZpZXdzOyB9CisgICAgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmIGZyYW1l
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVEYXRhOyB9CisgICAgYm9vbCBwb3Nlc0NhbkJl
UmVwb3J0ZWQoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJYUlNl
c3Npb24oRG9jdW1lbnQmLCBXZWJYUlN5c3RlbSYsIFhSU2Vzc2lvbk1vZGUsIFBsYXRmb3JtWFI6
OkRldmljZSYpOwogCkBAIC0xMjgsMTEgKzEzNCwxNSBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8
UGxhdGZvcm1YUjo6RGV2aWNlPiBtX2RldmljZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0
ZT4gbV9hY3RpdmVSZW5kZXJTdGF0ZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9w
ZW5kaW5nUmVuZGVyU3RhdGU7CisgICAgUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IG1fdmlld2Vy
UmVmZXJlbmNlU3BhY2U7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPcmlnaW47CiAKICAgICB1
bnNpZ25lZCBtX25leHRDYWxsYmFja0lkIHsgMSB9OwogICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJl
cXVlc3RDYWxsYmFjaz4+IG1fY2FsbGJhY2tzOwogCisgICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRl
dmljZTo6Vmlld0RhdGE+IG1fdmlld3M7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGEgbV9mcmFtZURhdGE7CisKICAgICBkb3VibGUgbV9taW5pbXVtSW5saW5lRk9WIHsgMC4wIH07
CiAgICAgZG91YmxlIG1fbWF4aW11bUlubGluZUZPViB7IHBpRmxvYXQgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKaW5kZXggNTI0MjU0ZmE0Njc3Yjhk
YjE1MjM1NTA2MjhkM2E3OWU2OTIyNjkxNC4uNDA1ZGQ5ZjJmNWM4Nzc4Yjg2ZDkwOTQ3MWVjYjA4
ZTYwZDE2YzRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2Uu
Y3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJE
T01Qb2ludFJlYWRPbmx5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJY
UlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzYsMTQgKzM4LDIzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSU3BhY2UpOwogCi1X
ZWJYUlNwYWNlOjpXZWJYUlNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lv
bj4mJiBzZXNzaW9uKQorV2ViWFJTcGFjZTo6V2ViWFJTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQs
IFdlYWtQdHI8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiYmIG9mZnNldCkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZkb2N1bWVudCkK
ICAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQorICAgICwgbV9vcmlnaW5PZmZzZXQo
V1RGTW92ZShvZmZzZXQpKQogewogfQogCiBXZWJYUlNwYWNlOjp+V2ViWFJTcGFjZSgpID0gZGVm
YXVsdDsKIAorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlNwYWNlOjplZmZlY3RpdmVPcmln
aW4oKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI3hyc3BhY2UtZWZmZWN0aXZlLW9yaWdpbgorICAgIC8vIFRoZSBlZmZlY3RpdmUgb3JpZ2lu
IGNhbiBiZSBvYnRhaW5lZCBieSBtdWx0aXBseWluZyBvcmlnaW4gb2Zmc2V0IGFuZCB0aGUgbmF0
aXZlIG9yaWdpbi4KKyAgICByZXR1cm4gbV9vcmlnaW5PZmZzZXQtPnJhd1RyYW5zZm9ybSgpICog
bmF0aXZlT3JpZ2luKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgK
aW5kZXggN2YxYzRlOTc0NzM5YTcwY2M0YjBjMGIxY2ViZjE4ZTVmYjg0OTkwZC4uNDI1NWYwODNj
MWI5Njk1YTAxMzI1ZmUxMmIyMWRiZDM0N2JlZjhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNwYWNlLmgKQEAgLTI5LDEyICsyOSwxNCBAQAogCiAjaW5jbHVkZSAiQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2lu
Y2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBXZWJYUlJpZ2lkVHJhbnNmb3JtOwogY2xhc3MgV2Vi
WFJTZXNzaW9uOwogCiBjbGFzcyBXZWJYUlNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJT
cGFjZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIgewpAQCAtNDIsMTYgKzQ0LDI0IEBAIGNsYXNzIFdlYlhSU3BhY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlNwYWNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViWFJTcGFjZSgpOwogCisgICAgY29uc3Qg
V2Vha1B0cjxXZWJYUlNlc3Npb24+JiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9u
OyB9CisgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25z
dCA9IDA7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZWZmZWN0aXZlT3JpZ2luKCkgY29uc3Q7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJTcGFjZT46OnJl
ZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSU3BhY2U+OjpkZXJlZjsKIAogcHJvdGVjdGVk
OgotICAgIFdlYlhSU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBX
ZWJYUlNwYWNlKERvY3VtZW50JiwgV2Vha1B0cjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
IH0KIAotICAgIFJlZjxXZWJYUlNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhS
U2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX29yaWdp
bk9mZnNldDsKIAogcHJpdmF0ZToKICAgICAvLyBFdmVudFRhcmdldApAQCAtNjIsNCArNzIsOSBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNkZWZpbmUgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XRUJYUlNQQUNFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgXAor
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXZWJYUlNwYWNlJiBjb250ZXh0
KSB7IHJldHVybiBjb250ZXh0LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4IDg1MDYyZmQ1M2Q2ZjBkMmFkODk1ZWY4ZDNi
ZDFlMDk5YWEwYjNkOGMuLmEyNmM2MjY1OGMwNzVhNjFhNmNjOGZiZmI3MjlhY2IxNWU4OTlhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCkBAIC01
MjEsMTIgKzUyMSwyMSBAQCB2b2lkIFdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6cmVx
dWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIHJhZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOjpj
cmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGRhdGE7CisgICAgICAgIGRhdGEuaXNUcmFja2luZ1Zh
bGlkID0gdHJ1ZTsKKyAgICAgICAgZGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSB0cnVlOworICAgICAg
ICBkYXRhLnZpZXdzLmFwcGVuZCh7IH0pOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGRhdGEp
KTsKICAgICB9KTsKIAogICAgIGRvY3VtZW50LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmFmKTsK
IH0KIAorVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFdlYlhSU3lzdGVtOjpE
dW1teUlubGluZURldmljZTo6dmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QKK3sKKyAgICByZXR1
cm4geyB7IC5hY3RpdmUgPSB0cnVlLCBQbGF0Zm9ybVhSOjpFeWU6Ok5vbmUgfSB9OworfQorCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5oCmluZGV4IDFkZThiNzViNzk1MDY3ZjMxYTA5YmNjNjcwNzBjZGIxOGM2ZjJh
ZTcuLjEwMjRkMGY1YTRmM2MxZjZiNDFhZGY3Zjk2YmQ4M2NjMzg0YWQwODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTExMSw5ICsxMTEsMTAgQEAg
cHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemVUcmFja2luZ0Fu
ZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9CiAgICAgICAgIHZv
aWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsIHsgfQotICAgICAgICB2b2lk
IGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUp
IGZpbmFsIHsgfTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZv
cm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KIAogICAgICAgICB2b2lkIHJlcXVl
c3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgICAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoWFJTZXNzaW9uTW9kZSkg
Y29uc3QgZmluYWw7CiAgICAgfTsKICAgICBEdW1teUlubGluZURldmljZSBtX2RlZmF1bHRJbmxp
bmVEZXZpY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcApp
bmRleCAxYTk4Y2IxNDUwNDU5ZmYyNjU2MzhmNThkZjQ4YmI0ZmNjZmYzMGJlLi40M2QxMGI4N2Zm
NmNjYmI3NTAxMDAxNTkzMWNiMGZjZjdhNGIwYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwCkBAIC0zNiwyMyArMzYsMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJWaWV3KTsKIAotUmVmPFdl
YlhSVmlldz4gV2ViWFJWaWV3OjpjcmVhdGUoKQorUmVmPFdlYlhSVmlldz4gV2ViWFJWaWV3Ojpj
cmVhdGUoWFJFeWUgZXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIFJl
ZjxGbG9hdDMyQXJyYXk+JiYgcHJvamVjdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJYUlZpZXcpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmlldyhleWUsIFdU
Rk1vdmUodHJhbnNmb3JtKSwgV1RGTW92ZShwcm9qZWN0aW9uKSkpOwogfQogCi1XZWJYUlZpZXc6
OldlYlhSVmlldygpCi0gICAgOiBtX2V5ZShYUkV5ZTo6Tm9uZSkKK1dlYlhSVmlldzo6V2ViWFJW
aWV3KFhSRXllIGV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBSZWY8
RmxvYXQzMkFycmF5PiYmIHByb2plY3Rpb24pCisgICAgOiBtX2V5ZShleWUpCisgICAgLCBtX3Ry
YW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpCisgICAgLCBtX3Byb2plY3Rpb24ocHJvamVjdGlv
bikKIHsKIH0KIAogV2ViWFJWaWV3Ojp+V2ViWFJWaWV3KCkgPSBkZWZhdWx0OwogCi12b2lkIFdl
YlhSVmlldzo6c2V0UHJvamVjdGlvbk1hdHJpeChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBtYXRyaXgp
Ci17Ci0gICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUobWF0cml4
LmRhdGEoKSwgbWF0cml4LnNpemUoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Vmlldy5oCmluZGV4IDM5YTA5Y2UxMGJhYWEyYzI3OTdjODc1NTczNzFjMmJmNzg4YWM0ZTUuLjRi
NjYwNjkxMTgyNjhkNGFiM2Y4NTc2NTg1YTc4YzkwMjAzMGJiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaApAQCAtMzcsMjggKzM3LDI1IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViWFJGcmFtZTsKIGNsYXNzIFdlYlhSUmlnaWRUcmFuc2Zv
cm07CiAKIGNsYXNzIFdlYlhSVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSVmlldz4gewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKFdlYlhSVmlldywgV0VCQ09SRV9FWFBP
UlQpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8V2ViWFJWaWV3PiBj
cmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFdlYlhSVmlldz4gY3JlYXRl
KFhSRXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgUmVmPEZsb2F0MzJBcnJheT4mJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgfldlYlhSVmlldygpOwogCiAgICAgWFJFeWUgZXllKCkgY29u
c3QgeyByZXR1cm4gbV9leWU7IH0KLSAgICBjb25zdCBGbG9hdDMyQXJyYXkmIHByb2plY3Rpb25N
YXRyaXgoKSBjb25zdCB7IHJldHVybiAqbV9wcm9qZWN0aW9uTWF0cml4OyB9Ci0gICAgY29uc3Qg
V2ViWFJSaWdpZFRyYW5zZm9ybSYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gKm1fdHJhbnNm
b3JtOyB9Ci0KLSAgICB2b2lkIHNldEV5ZShYUkV5ZSBleWUpIHsgbV9leWUgPSBleWU7IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb2plY3Rpb25NYXRyaXgoY29uc3QgVmVjdG9yPGZs
b2F0PiYpOwotICAgIHZvaWQgc2V0VHJhbnNmb3JtKFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiYmIHZpZXdPZmZzZXQpIHsgbV90cmFuc2Zvcm0gPSBXVEZNb3ZlKHZpZXdPZmZzZXQpOyB9Cisg
ICAgY29uc3QgRmxvYXQzMkFycmF5JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3QgeyByZXR1cm4g
bV9wcm9qZWN0aW9uLmdldCgpOyB9CisgICAgY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYgdHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0uZ2V0KCk7IH0KIAogcHJpdmF0ZToK
LSAgICBXZWJYUlZpZXcoKTsKKyAgICBXZWJYUlZpZXcoWFJFeWUsIFJlZjxXZWJYUlJpZ2lkVHJh
bnNmb3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYmKTsKIAogICAgIFhSRXllIG1fZXllOwotICAg
IFJlZlB0cjxGbG9hdDMyQXJyYXk+IG1fcHJvamVjdGlvbk1hdHJpeDsKLSAgICBSZWZQdHI8V2Vi
WFJSaWdpZFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+IG1fdHJhbnNmb3JtOworICAgIFJlZjxGbG9hdDMyQXJyYXk+IG1fcHJvamVjdGlvbjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcAppbmRleCA2MDYzYzk1ZjM2NDNhZGFiMGEyODFkYTg4
YjNjYmFlNjVhNzk3YjA5Li5lNDllNmM3ODc0YWQzMjNmNWY1ODU5MzM0YzI3N2JiM2JhZTJmMWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2Uu
Y3BwCkBAIC0yNSwxNyArMjUsMjQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlhSVmlld2VyUG9zZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAK
ICNpZiBFTkFCTEUoV0VCWFIpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYlhSVmll
d2VyUG9zZT4gV2ViWFJWaWV3ZXJQb3NlOjpjcmVhdGUoKQorV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdlYlhSVmlld2VyUG9zZSk7CisKK1JlZjxXZWJYUlZpZXdlclBvc2U+IFdlYlhSVmll
d2VyUG9zZTo6Y3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9v
bCBlbXVsYXRlZFBvc2l0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmll
d2VyUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pKTsKK30KKworV2Vi
WFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYg
dHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCisgICAgOiBXZWJYUlBvc2UoV1RGTW92
ZSh0cmFuc2Zvcm0pLCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSVmlld2VyUG9zZSk7CiB9CiAKLVdlYlhSVmlld2VyUG9zZTo6V2ViWFJWaWV3ZXJQ
b3NlKCkgPSBkZWZhdWx0OwogV2ViWFJWaWV3ZXJQb3NlOjp+V2ViWFJWaWV3ZXJQb3NlKCkgPSBk
ZWZhdWx0OwogCiBjb25zdCBWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiBXZWJYUlZpZXdlclBvc2U6
OnZpZXdzKCkgY29uc3QKQEAgLTQzLDYgKzUwLDExIEBAIGNvbnN0IFZlY3RvcjxSZWY8V2ViWFJW
aWV3Pj4mIFdlYlhSVmlld2VyUG9zZTo6dmlld3MoKSBjb25zdAogICAgIHJldHVybiBtX3ZpZXdz
OwogfQogCit2b2lkIFdlYlhSVmlld2VyUG9zZTo6c2V0Vmlld3MoVmVjdG9yPFJlZjxXZWJYUlZp
ZXc+PiYmIHZpZXdzKQoreworICAgIG1fdmlld3MgPSBXVEZNb3ZlKHZpZXdzKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmgKaW5kZXggYTRlZDI1YjEw
YzI1MzE5YTZlOTIxODUyODA2NGU1MWM4ZDRkOGYyMC4uZTlmMGEzOWQ4NWI3ZWFjZTcwMTNjYTE4
NDI5ZDJiM2NiYjgwZGNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlZpZXdlclBvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSVmlld2VyUG9zZS5oCkBAIC0zNywxOCArMzcsMjQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV2ViWFJWaWV3ZXJQb3NlIDogcHVibGljIFdlYlhSUG9zZSB7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJYUlZpZXdlclBvc2UpOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8V2ViWFJWaWV3ZXJQb3NlPiBjcmVhdGUoKTsKLSAgICB+V2ViWFJWaWV3ZXJQb3NlKCk7Cisg
ICAgc3RhdGljIFJlZjxXZWJYUlZpZXdlclBvc2U+IGNyZWF0ZShSZWY8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIH5XZWJYUlZpZXdl
clBvc2UoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4mIHZpZXdzKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRWaWV3cyhWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiYpOwogCiBwcml2
YXRlOgotICAgIFdlYlhSVmlld2VyUG9zZSgpOworICAgIFdlYlhSVmlld2VyUG9zZShSZWY8V2Vi
WFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKKworICAgIGJvb2wg
aXNWaWV3ZXJQb3NlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgVmVjdG9y
PFJlZjxXZWJYUlZpZXc+PiBtX3ZpZXdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQlhSUE9TRShXZWJYUlZpZXdlclBvc2UsIGlzVmll
d2VyUG9zZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsCmluZGV4IGQxYmViMmMwODZmODli
ZmFmZGY1ZTBiZjFmOTVjMGY0OGM2MDc2MTMuLjZhNzZkZTg0MzU0OWZiZjA2M2QwYmE1ZDQxMTNh
MDE1Mjk1MGIyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJWaWV3ZXJQb3NlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Vmlld2VyUG9zZS5pZGwKQEAgLTI4LDcgKzI4LDggQEAKICAgICBDb25kaXRpb25hbD1XRUJYUiwK
ICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2luZG93LAotICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNHZW5lcmF0
ZVRvTmF0aXZlT2JqZWN0LAogICAgIEludGVyZmFjZU5hbWU9WFJWaWV3ZXJQb3NlCiBdIGludGVy
ZmFjZSBXZWJYUlZpZXdlclBvc2UgOiBXZWJYUlBvc2UgewogICAgIFtTYW1lT2JqZWN0XSByZWFk
b25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJWaWV3PiB2aWV3czsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJFeWUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvWFJFeWUuaAppbmRleCBlYTFlYTdlMWU3ZDgyMjYzMjVmNjBjODI2ZmZmYmMw
YjliYTRkNjZmLi5mOWEzNDNiZGE0NDc0OTdmNmRkYTU0NDk5MDhlNGQ5OWQ5ZmM5N2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSRXllLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkV5ZS5oCkBAIC0yNywxMyArMjcsMTEgQEAKIAogI2lm
IEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1lbnVtIGNsYXNzIFhSRXllIHsKLSAgICBOb25lLAotICAgIExlZnQsCi0gICAg
UmlnaHQsCi19OwordXNpbmcgWFJFeWUgPSBQbGF0Zm9ybVhSOjpFeWU7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRl
eCBhN2U0ZTAxNDJjNGEzNGE1ZWFkZDc5NzNmNGRiNDcyNTg1M2RmMGMxLi5iMmVjMTQ1ODRiNTZj
MDZjODY4OGE3NTg2Yjk0MGEyNjgyMWQ4MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0
aW9uTWF0cml4LmNwcApAQCAtNTg0LDE1ICs1ODQsMTUgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXg6
OlRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdCkKIC8vIEZJWE1F
OiBPbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4NTYgaXMg
YWRkcmVzc2VkIHdlIGNhbiByZXVzZSB0aGlzIGZ1bmN0aW9uIGluIFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWNvbXBvc2U0KCkuCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6ZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksIGRvdWJsZSBxeiwgZG91
YmxlIHF3KQogewotICAgIGNvbnN0IGRvdWJsZSB4eCA9IHF4ICogcXg7Ci0gICAgY29uc3QgZG91
YmxlIHl5ID0gcXkgKiBxeTsKLSAgICBjb25zdCBkb3VibGUgenogPSBxeiAqIHF6OwotICAgIGNv
bnN0IGRvdWJsZSB4eiA9IHF4ICogcXo7Ci0gICAgY29uc3QgZG91YmxlIHh5ID0gcXggKiBxeTsg
Ci0gICAgY29uc3QgZG91YmxlIHl6ID0gcXkgKiBxejsKLSAgICBjb25zdCBkb3VibGUgeHcgPSBx
dyAqIHF4OwotICAgIGNvbnN0IGRvdWJsZSB5dyA9IHF3ICogcXk7Ci0gICAgY29uc3QgZG91Ymxl
IHp3ID0gcXcgKiBxejsKKyAgICBkb3VibGUgeHggPSBxeCAqIHF4OworICAgIGRvdWJsZSB5eSA9
IHF5ICogcXk7CisgICAgZG91YmxlIHp6ID0gcXogKiBxejsKKyAgICBkb3VibGUgeHogPSBxeCAq
IHF6OworICAgIGRvdWJsZSB4eSA9IHF4ICogcXk7IAorICAgIGRvdWJsZSB5eiA9IHF5ICogcXo7
CisgICAgZG91YmxlIHh3ID0gcXcgKiBxeDsKKyAgICBkb3VibGUgeXcgPSBxdyAqIHF5OworICAg
IGRvdWJsZSB6dyA9IHF3ICogcXo7CiAKICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgo
MSAtIDIgKiAoeXkgKyB6eiksIDIgKiAoeHkgKyB6dyksIDIgKiAoeHogLSB5dyksIDAsCiAgICAg
ICAgIDIgKiAoeHkgLSB6dyksIDEgLSAyICogKHh4ICsgenopLCAyICogKHl6ICsgeHcpLCAwLApA
QCAtNjAwLDYgKzYwMCwzNCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6ZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksCiAgICAgICAgIDAsIDAs
IDAsIDEpOwogfQogCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4
Ojpmcm9tUHJvamVjdGlvbihkb3VibGUgZm92VXAsIGRvdWJsZSBmb3ZEb3duLCBkb3VibGUgZm92
TGVmdCwgZG91YmxlIGZvdlJpZ2h0LCBkb3VibGUgZGVwdGhOZWFyLCBkb3VibGUgZGVwdGhGYXIp
Cit7CisgICAgZG91YmxlIHVwVGFuID0gdGFuKGZvdlVwKTsKKyAgICBkb3VibGUgZG93blRhbiA9
IHRhbihmb3ZEb3duKTsKKyAgICBkb3VibGUgbGVmdFRhbiA9IHRhbihmb3ZMZWZ0KTsKKyAgICBk
b3VibGUgcmlnaHRUYW4gPSB0YW4oZm92UmlnaHQpOworICAgIGRvdWJsZSB4U2NhbGUgPSAyLjAg
LyAobGVmdFRhbiArIHJpZ2h0VGFuKTsKKyAgICBkb3VibGUgeVNjYWxlID0gMi4wIC8gKHVwVGFu
ICsgZG93blRhbik7CisgICAgZG91YmxlIGludkRlcHRoID0gMS4wIC8gKGRlcHRoTmVhciAtIGRl
cHRoRmFyKTsKKworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh4U2NhbGUsIDAuMGYs
IDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIHlTY2FsZSwgMC4wZiwgMC4wZiwKKyAgICAgICAg
KGxlZnRUYW4gLSByaWdodFRhbikgKiB4U2NhbGUgKiAtMC41LCAodXBUYW4gLSBkb3duVGFuKSAq
IHlTY2FsZSAqIDAuNSwgKGRlcHRoTmVhciArIGRlcHRoRmFyKSAqIGludkRlcHRoLCAtMS4wZiwK
KyAgICAgICAgMC4wZiwgMC4wZiwgKDIuMGYgKiBkZXB0aEZhciAqIGRlcHRoTmVhcikgKiBpbnZE
ZXB0aCwgMC4wZik7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0
cml4Ojpmcm9tUHJvamVjdGlvbihkb3VibGUgZm92eSwgZG91YmxlIGFzcGVjdCwgZG91YmxlIGRl
cHRoTmVhciwgZG91YmxlIGRlcHRoRmFyKQoreworICAgIGRvdWJsZSBmID0gMS4wZiAvIHRhbmYo
Zm92eSAvIDIpOworICAgIGRvdWJsZSBpbnZEZXB0aCA9IDEuMGYgLyAoZGVwdGhOZWFyIC0gZGVw
dGhGYXIpOworCisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KGYgLyBhc3BlY3QsIDAu
MGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAu
MGYsIDAuMGYsIChkZXB0aEZhciArIGRlcHRoTmVhcikgKiBpbnZEZXB0aCwgLTEuMGYsCisgICAg
ICAgIDAuMGYsIDAuMGYsICgyLjBmICogZGVwdGhGYXIgKiBkZXB0aE5lYXIpICogaW52RGVwdGgs
IDAuMGYpOworfQorCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnNjYWxlKGRvdWJsZSBzKQogewogICAgIHJldHVybiBzY2FsZU5vblVuaWZvcm0ocywgcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggNjAwZTdkMGIxY2UyNmE3YzI0
MjFkNTg1NjFjYzU3NGIwNGExN2IyOS4uNWY3MjVhZDY2ZWY3NzA5MWU5ZmIwNjYwOThiOGRhNzU4
ZjVhZjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMTIxLDYg
KzEyMSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJv
bVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksIGRvdWJsZSBxeiwgZG91YmxlIHF3KTsK
IAorICAgIC8vIEZpZWxkIG9mIHZpZXcgaW4gcmFkaWFucworICAgIHN0YXRpYyBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBmcm9tUHJvamVjdGlvbihkb3VibGUgZm92VXAsIGRvdWJsZSBmb3ZEb3duLCBk
b3VibGUgZm92TGVmdCwgZG91YmxlIGZvdlJpZ2h0LCBkb3VibGUgZGVwdGhOZWFyLCBkb3VibGUg
ZGVwdGhGYXIpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tUHJvamVjdGlv
bihkb3VibGUgZm92eSwgZG91YmxlIGFzcGVjdCwgZG91YmxlIGRlcHRoTmVhciwgZG91YmxlIGRl
cHRoRmFyKTsKKwogICAgIHN0YXRpYyBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eTsKIAogICAgIHZvaWQgc2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRv
dWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKaW5kZXggNDMyNWYzMzc1Y2YzMDI4YTQ3ZGZmY2M2ZGY1OWJiNzQzODM1MDBkNS4u
ZTM3MjFkODg2ZWE5OWEwZGY5MDgyZTU4ZTI1NWNkMzJkMGY3ZGU4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQzLDYgKzQ0LDEy
IEBAIGVudW0gY2xhc3MgUmVmZXJlbmNlU3BhY2VUeXBlIHsKICAgICBVbmJvdW5kZWQKIH07CiAK
K2VudW0gY2xhc3MgRXllIHsKKyAgICBOb25lLAorICAgIExlZnQsCisgICAgUmlnaHQsCit9Owor
CiAjaWYgRU5BQkxFKFdFQlhSKQogCiBjbGFzcyBUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudD4gewpAQCAt
NzksMjkgKzg2LDUxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVJlZmVy
ZW5jZVNwYWNlKFJlZmVyZW5jZVNwYWNlVHlwZSkgPSAwOwogCiAgICAgc3RydWN0IEZyYW1lRGF0
YSB7Ci0gICAgICAgIGxvbmcgcHJlZGljdGVkRGlzcGxheVRpbWU7Ci0gICAgICAgIHN0cnVjdCBW
aWV3RGF0YSB7Ci0gICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQzRCBwb3NpdGlvbjsKLSAgICAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAg
ICAgICAgICAgICAgICBmbG9hdCB4OwotICAgICAgICAgICAgICAgICAgICBmbG9hdCB5OwotICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB6OwotICAgICAgICAgICAgICAgICAgICBmbG9hdCB3Owot
ICAgICAgICAgICAgICAgIH0gb3JpZW50YXRpb247Ci0gICAgICAgICAgICB9IHBvc2U7Ci0gICAg
ICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIGZsb2F0IHJVcDsKLSAgICAgICAgICAg
ICAgICBmbG9hdCByRG93bjsKLSAgICAgICAgICAgICAgICBmbG9hdCByTGVmdDsKLSAgICAgICAg
ICAgICAgICBmbG9hdCByUmlnaHQ7Ci0gICAgICAgICAgICB9IGZvdjsKKyAgICAgICAgc3RydWN0
IEZsb2F0UXVhdGVybmlvbiB7CisgICAgICAgICAgICBmbG9hdCB4IHsgMC4wZiB9OworICAgICAg
ICAgICAgZmxvYXQgeSB7IDAuMGYgfTsKKyAgICAgICAgICAgIGZsb2F0IHogeyAwLjBmIH07Cisg
ICAgICAgICAgICBmbG9hdCB3IHsgMS4wZiB9OworICAgICAgICB9OworCisgICAgICAgIHN0cnVj
dCBQb3NlIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCBwb3NpdGlvbjsKKyAg
ICAgICAgICAgIEZsb2F0UXVhdGVybmlvbiBvcmllbnRhdGlvbjsKICAgICAgICAgfTsKLSAgICAg
ICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3UG9zZXM7CisKKyAgICAgICAgc3RydWN0IEZvdiB7Cisg
ICAgICAgICAgICAvLyBJbiByYWRpYW5zCisgICAgICAgICAgICBmbG9hdCB1cCB7IDAuMGYgfTsK
KyAgICAgICAgICAgIGZsb2F0IGRvd24geyAwLjBmIH07CisgICAgICAgICAgICBmbG9hdCBsZWZ0
IHsgMC4wZiB9OworICAgICAgICAgICAgZmxvYXQgcmlnaHQgeyAwLjBmIH07CisgICAgICAgIH07
CisKKyAgICAgICAgdXNpbmcgUHJvamVjdGlvbiA9IFZhcmlhbnQ8Rm92LCBzdGQ6OmFycmF5PGZs
b2F0LCAxNj4sIHN0ZDo6bnVsbHB0cl90PjsKKworICAgICAgICBzdHJ1Y3QgVmlldyB7CisgICAg
ICAgICAgICBQb3NlIG9mZnNldDsKKyAgICAgICAgICAgIFByb2plY3Rpb24gcHJvamVjdGlvbiA9
IHsgbnVsbHB0ciB9OworICAgICAgICB9OworCisgICAgICAgIGJvb2wgaXNUcmFja2luZ1ZhbGlk
IHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBpc1Bvc2l0aW9uVmFsaWQgeyBmYWxzZSB9OworICAg
ICAgICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCB7IGZhbHNlIH07CisgICAgICAgIGxvbmcgcHJl
ZGljdGVkRGlzcGxheVRpbWUgeyAwIH07CisgICAgICAgIFBvc2Ugb3JpZ2luOworICAgICAgICBP
cHRpb25hbDxQb3NlPiBmbG9vclRyYW5zZm9ybTsKKyAgICAgICAgVmVjdG9yPFZpZXc+IHZpZXdz
OworICAgIH07CisKKyAgICBzdHJ1Y3QgVmlld0RhdGEgeworICAgICAgICBib29sIGFjdGl2ZSB7
IGZhbHNlIH07CisgICAgICAgIEV5ZSBleWUgeyBFeWU6Ok5vbmUgfTsKICAgICB9OworCisgICAg
dmlydHVhbCBWZWN0b3I8Vmlld0RhdGE+IHZpZXdzKFNlc3Npb25Nb2RlKSBjb25zdCA9IDA7CisK
ICAgICB1c2luZyBSZXF1ZXN0RnJhbWVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRnJhbWVEYXRh
JiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNr
JiYpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIERldmljZSgpID0gZGVmYXVsdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
Y3BwCmluZGV4IGNjNGQ3MjE1M2M2ZWVhZmRmMjE2MmU5ODgyYTllMDc3NThiMjFkZjcuLmI5NGU4
NzFmNTdiODk3YzdlNDg0OWE0N2Y0YTY0YzMzMzBkNmQxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKQEAgLTI5
OSw2ICsyOTksMjggQEAgRGV2aWNlOjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhSRGV2aWNl
OjplbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMoWHJTZXNzaW9uJgogICAgIHJldHVybiBlbmFibGVk
RmVhdHVyZXM7CiB9CiAKK1hyU3BhY2UgT3BlblhSRGV2aWNlOjpjcmVhdGVSZWZlcmVuY2VTcGFj
ZShYclJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3Vy
cmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgQVNTRVJUKG1fc2Vzc2lvbiAhPSBY
Ul9OVUxMX0hBTkRMRSk7CisgICAgQVNTRVJUKG1faW5zdGFuY2UgIT0gWFJfTlVMTF9IQU5ETEUp
OworCisgICAgWHJQb3NlZiBpZGVudGl0eVBvc2UgeworICAgICAgICAub3JpZW50YXRpb24gPSB7
IC54ID0gMCwgLnkgPSAwLCAueiA9IDAsIC53ID0gMS4wIH0sCisgICAgICAgIC5wb3NpdGlvbiA9
IHsgLnggPSAwLCAueSA9IDAsIC56ID0gMCB9CisgICAgfTsKKworICAgIGF1dG8gc3BhY2VDcmVh
dGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyUmVmZXJlbmNlU3BhY2VDcmVhdGVJbmZvLCBYUl9U
WVBFX1JFRkVSRU5DRV9TUEFDRV9DUkVBVEVfSU5GTz4oKTsKKyAgICBzcGFjZUNyZWF0ZUluZm8u
cmVmZXJlbmNlU3BhY2VUeXBlID0gdHlwZTsKKyAgICBzcGFjZUNyZWF0ZUluZm8ucG9zZUluUmVm
ZXJlbmNlU3BhY2UgPSBpZGVudGl0eVBvc2U7CisKKyAgICBYclNwYWNlIHNwYWNlOworICAgIGF1
dG8gcmVzdWx0ID0geHJDcmVhdGVSZWZlcmVuY2VTcGFjZShtX3Nlc3Npb24sICZzcGFjZUNyZWF0
ZUluZm8sICZzcGFjZSk7CisgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckNyZWF0ZVJl
ZmVyZW5jZVNwYWNlIiwgbV9pbnN0YW5jZSwgWFJfTlVMTF9IQU5ETEUpOworCisgICAgcmV0dXJu
IHNwYWNlOworfQorCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNlc3Npb25N
b2RlcygpCiB7CiAgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVu
TG9vcCgpKTsKQEAgLTM2OCwxNSArMzkwLDYgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RD
b25maWd1cmF0aW9uVmlld3MoKQogICAgIH0KIH0KIAotV2ViQ29yZTo6SW50U2l6ZSBPcGVuWFJE
ZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSBtb2RlKQotewotICAgIGF1
dG8gY29uZmlnVHlwZSA9IG1vZGUgPT0gU2Vzc2lvbk1vZGU6OklubGluZSA/IFhSX1ZJRVdfQ09O
RklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTyA6IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBF
X1BSSU1BUllfU1RFUkVPOwotICAgIGF1dG8gdmlld3NJdGVyYXRvciA9IG1fY29uZmlndXJhdGlv
blZpZXdzLmZpbmQoY29uZmlnVHlwZSk7Ci0gICAgaWYgKHZpZXdzSXRlcmF0b3IgIT0gbV9jb25m
aWd1cmF0aW9uVmlld3MuZW5kKCkpCi0gICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4o
dmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFnZVJlY3RXaWR0aCksIHN0YXRp
Y19jYXN0PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFnZVJlY3RI
ZWlnaHQpIH07Ci0gICAgcmV0dXJuIERldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKG1vZGUp
OwotfQotCiBYclZpZXdDb25maWd1cmF0aW9uVHlwZSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBl
KFNlc3Npb25Nb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CkBAIC00MDAsNiArNDEz
LDE1IEBAIHN0YXRpYyBib29sIGlzU2Vzc2lvblJlYWR5KFhyU2Vzc2lvblN0YXRlIHN0YXRlKQog
ICAgIHJldHVybiBzdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1JFQURZICAmJiBzdGF0ZSA8IFhS
X1NFU1NJT05fU1RBVEVfU1RPUFBJTkc7CiB9CiAKK1dlYkNvcmU6OkludFNpemUgT3BlblhSRGV2
aWNlOjpyZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUgbW9kZSkKK3sKKyAgICBhdXRv
IGNvbmZpZ1R5cGUgPSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKG1vZGUpOworICAgIGF1dG8g
dmlld3NJdGVyYXRvciA9IG1fY29uZmlndXJhdGlvblZpZXdzLmZpbmQoY29uZmlnVHlwZSk7Cisg
ICAgaWYgKHZpZXdzSXRlcmF0b3IgIT0gbV9jb25maWd1cmF0aW9uVmlld3MuZW5kKCkpCisgICAg
ICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVj
b21tZW5kZWRJbWFnZVJlY3RXaWR0aCksIHN0YXRpY19jYXN0PGludD4odmlld3NJdGVyYXRvci0+
dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFnZVJlY3RIZWlnaHQpIH07CisgICAgcmV0dXJuIERldmlj
ZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKG1vZGUpOworfQorCiB2b2lkIE9wZW5YUkRldmljZTo6
aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiB7CiAgICAg
bV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgbW9kZV0oKSB7CkBAIC00MTQsNiArNDM2LDkgQEAgdm9p
ZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNzaW9uTW9k
ZSBtb2RlKQogICAgICAgICBzZXNzaW9uQ3JlYXRlSW5mby5zeXN0ZW1JZCA9IG1fc3lzdGVtSWQ7
CiAgICAgICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVTZXNzaW9uKG1faW5zdGFuY2UsICZzZXNz
aW9uQ3JlYXRlSW5mbywgJm1fc2Vzc2lvbik7CiAgICAgICAgIFJFVFVSTl9JRl9GQUlMRUQocmVz
dWx0LCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMiLCBtX2luc3RhbmNl
KTsKKworICAgICAgICBtX2xvY2FsU3BhY2UgPSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYUl9SRUZF
UkVOQ0VfU1BBQ0VfVFlQRV9MT0NBTCk7CisgICAgICAgIG1fdmlld1NwYWNlID0gY3JlYXRlUmVm
ZXJlbmNlU3BhY2UoWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfVklFVyk7CiAgICAgfSk7CiB9CiAK
QEAgLTQ1Nyw2ICs0ODIsMTIgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OnNodXREb3duVHJhY2tpbmdB
bmRSZW5kZXJpbmcoKQogICAgIH0pOwogfQogCit2b2lkIE9wZW5YUkRldmljZTo6aW5pdGlhbGl6
ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSBzcGFjZVR5cGUp
Cit7CisgICAgaWYgKChzcGFjZVR5cGUgPT0gUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbEZsb29y
IHx8IHNwYWNlVHlwZSA9PSBSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikgJiYgbV9z
dGFnZVNwYWNlID09IFhSX05VTExfSEFORExFKQorICAgICAgICBtX3N0YWdlU3BhY2UgPSBjcmVh
dGVSZWZlcmVuY2VTcGFjZShYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9TVEFHRSk7Cit9CisKIHZv
aWQgT3BlblhSRGV2aWNlOjp3YWl0VW50aWxTdG9wcGluZygpCiB7CiAgICAgQVNTRVJUKCZSdW5M
b29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKQEAgLTUyNiwxNCArNTU3LDIw
IEBAIHZvaWQgT3BlblhSRGV2aWNlOjplbmRTZXNzaW9uKCkKICAgICB9KTsKIH0KIAorc3RhdGlj
IERldmljZTo6RnJhbWVEYXRhOjpQb3NlIFhyUG9zZWZUb1Bvc2UoWHJQb3NlZiBwb3NlKQorewor
ICAgIERldmljZTo6RnJhbWVEYXRhOjpQb3NlIHJlc3VsdDsKKyAgICByZXN1bHQub3JpZW50YXRp
b24gPSB7IHBvc2Uub3JpZW50YXRpb24ueCwgcG9zZS5vcmllbnRhdGlvbi55LCBwb3NlLm9yaWVu
dGF0aW9uLnosIHBvc2Uub3JpZW50YXRpb24udyB9OworICAgIHJlc3VsdC5wb3NpdGlvbiA9IHsg
cG9zZS5wb3NpdGlvbi54LCBwb3NlLnBvc2l0aW9uLnksIHBvc2UucG9zaXRpb24ueiB9OworICAg
IHJldHVybiByZXN1bHQ7Cit9CiAKLURldmljZTo6RnJhbWVEYXRhOjpWaWV3RGF0YSB4clZpZXdU
b1ZpZXdEYXRhKFhyVmlldyB2aWV3KQorc3RhdGljIERldmljZTo6RnJhbWVEYXRhOjpWaWV3IHhy
Vmlld1RvUG9zZShYclZpZXcgdmlldykKIHsKLSAgICBEZXZpY2U6OkZyYW1lRGF0YTo6Vmlld0Rh
dGEgZGF0YTsKLSAgICBkYXRhLmZvdiA9IHsgdmlldy5mb3YuYW5nbGVVcCwgdmlldy5mb3YuYW5n
bGVEb3duLCB2aWV3LmZvdi5hbmdsZUxlZnQsIHZpZXcuZm92LmFuZ2xlUmlnaHQgfTsKLSAgICBk
YXRhLnBvc2Uub3JpZW50YXRpb24gPSB7IHZpZXcucG9zZS5vcmllbnRhdGlvbi54LCB2aWV3LnBv
c2Uub3JpZW50YXRpb24ueSwgdmlldy5wb3NlLm9yaWVudGF0aW9uLnosIHZpZXcucG9zZS5vcmll
bnRhdGlvbi53IH07Ci0gICAgZGF0YS5wb3NlLnBvc2l0aW9uID0geyB2aWV3LnBvc2UucG9zaXRp
b24ueCwgdmlldy5wb3NlLnBvc2l0aW9uLnksIHZpZXcucG9zZS5wb3NpdGlvbi56IH07Ci0gICAg
cmV0dXJuIGRhdGE7CisgICAgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXcgcG9zZTsKKyAgICBwb3Nl
LnByb2plY3Rpb24gPSBEZXZpY2U6OkZyYW1lRGF0YTo6Rm92IHsgdmlldy5mb3YuYW5nbGVVcCwg
dmlldy5mb3YuYW5nbGVEb3duLCB2aWV3LmZvdi5hbmdsZUxlZnQsIHZpZXcuZm92LmFuZ2xlUmln
aHQgfTsKKyAgICBwb3NlLm9mZnNldCA9IFhyUG9zZWZUb1Bvc2Uodmlldy5wb3NlKTsKKyAgICBy
ZXR1cm4gcG9zZTsKIH0KIAogdm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0
RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNTYyLDEzICs1OTksMjIgQEAgdm9pZCBPcGVu
WFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQog
ICAgICAgICBmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUgPSBmcmFtZVN0YXRlLnByZWRp
Y3RlZERpc3BsYXlUaW1lOwogCiAgICAgICAgIGlmIChpc1Nlc3Npb25BY3RpdmUobV9zZXNzaW9u
U3RhdGUpKSB7CisgICAgICAgICAgICAvLyBRdWVyeSBoZWFkIGxvY2F0aW9uCisgICAgICAgICAg
ICBhdXRvIGxvY2F0aW9uID0gY3JlYXRlU3RydWN0dXJlPFhyU3BhY2VMb2NhdGlvbiwgWFJfVFlQ
RV9TUEFDRV9MT0NBVElPTj4oKTsKKyAgICAgICAgICAgIHhyTG9jYXRlU3BhY2UobV92aWV3U3Bh
Y2UsIG1fbG9jYWxTcGFjZSwgZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZSwgJmxvY2F0
aW9uKTsKKyAgICAgICAgICAgIGZyYW1lRGF0YS5pc1RyYWNraW5nVmFsaWQgPSBsb2NhdGlvbi5s
b2NhdGlvbkZsYWdzICYgWFJfU1BBQ0VfTE9DQVRJT05fT1JJRU5UQVRJT05fVkFMSURfQklUOwor
ICAgICAgICAgICAgZnJhbWVEYXRhLmlzUG9zaXRpb25WYWxpZCA9IGxvY2F0aW9uLmxvY2F0aW9u
RmxhZ3MgJiBYUl9TUEFDRV9MT0NBVElPTl9QT1NJVElPTl9WQUxJRF9CSVQ7CisgICAgICAgICAg
ICBmcmFtZURhdGEuaXNQb3NpdGlvbkVtdWxhdGVkID0gbG9jYXRpb24ubG9jYXRpb25GbGFncyAm
IFhSX1NQQUNFX0xPQ0FUSU9OX1BPU0lUSU9OX1RSQUNLRURfQklUOworCisgICAgICAgICAgICBp
ZiAoZnJhbWVEYXRhLmlzVHJhY2tpbmdWYWxpZCkKKyAgICAgICAgICAgICAgICBmcmFtZURhdGEu
b3JpZ2luID0gWHJQb3NlZlRvUG9zZShsb2NhdGlvbi5wb3NlKTsKKyAgICAgICAgICAgIAogICAg
ICAgICAgICAgQVNTRVJUKG1fY29uZmlndXJhdGlvblZpZXdzLmNvbnRhaW5zKG1fY3VycmVudFZp
ZXdDb25maWd1cmF0aW9uVHlwZSkpOwogICAgICAgICAgICAgY29uc3QgYXV0byYgY29uZmlndXJh
dGlvblZpZXcgPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5nZXQobV9jdXJyZW50Vmlld0NvbmZpZ3Vy
YXRpb25UeXBlKTsKIAogICAgICAgICAgICAgYXV0byB2aWV3TG9jYXRlSW5mbyA9IGNyZWF0ZVN0
cnVjdHVyZTxYclZpZXdMb2NhdGVJbmZvLCBYUl9UWVBFX1ZJRVdfTE9DQVRFX0lORk8+KCk7CiAg
ICAgICAgICAgICB2aWV3TG9jYXRlSW5mby5kaXNwbGF5VGltZSA9IHByZWRpY3RlZFRpbWU7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogdXNlIHRoZSBjdXJyZW50IHJlZmVyZW5jZSBzcGFjZS4KLSAg
ICAgICAgICAgIC8vIHZpZXdMb2NhdGVJbmZvLnNwYWNlID0gbV9sb2NhbFNwYWNlOworICAgICAg
ICAgICAgdmlld0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3BhY2U7CiAKICAgICAgICAgICAg
IHVpbnQzMl90IHZpZXdDb3VudCA9IGNvbmZpZ3VyYXRpb25WaWV3LnNpemUoKTsKICAgICAgICAg
ICAgIFZlY3RvcjxYclZpZXc+IHZpZXdzKHZpZXdDb3VudCwgW10gewpAQCAtNTgzLDcgKzYyOSwx
NCBAQCB2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiAgICAgICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZpZXdzKG1fc2Vzc2lv
biwgJnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2aWV3Q291bnRPdXRw
dXQsIHZpZXdzLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAoIVhSX0ZBSUxFRChyZXN1bHQpKSB7
CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB2aWV3IDogdmlld3MpCi0gICAgICAgICAgICAg
ICAgICAgIGZyYW1lRGF0YS52aWV3UG9zZXMuYXBwZW5kKHhyVmlld1RvVmlld0RhdGEodmlldykp
OworICAgICAgICAgICAgICAgICAgICBmcmFtZURhdGEudmlld3MuYXBwZW5kKHhyVmlld1RvUG9z
ZSh2aWV3KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFF1ZXJ5IGZsb29yIHRy
YW5zZm9ybQorICAgICAgICAgICAgaWYgKG1fc3RhZ2VTcGFjZSAhPSBYUl9OVUxMX0hBTkRMRSkg
eworICAgICAgICAgICAgICAgIGF1dG8gZmxvb3JMb2NhdGlvbiA9IGNyZWF0ZVN0cnVjdHVyZTxY
clNwYWNlTG9jYXRpb24sIFhSX1RZUEVfU1BBQ0VfTE9DQVRJT04+KCk7CisgICAgICAgICAgICAg
ICAgeHJMb2NhdGVTcGFjZShtX3N0YWdlU3BhY2UsIG1fbG9jYWxTcGFjZSwgZnJhbWVTdGF0ZS5w
cmVkaWN0ZWREaXNwbGF5VGltZSwgJmZsb29yTG9jYXRpb24pOworICAgICAgICAgICAgICAgIGZy
YW1lRGF0YS5mbG9vclRyYW5zZm9ybSA9IHsgWHJQb3NlZlRvUG9zZShmbG9vckxvY2F0aW9uLnBv
c2UpIH07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjAwLDYgKzY1MywyMSBAQCB2
b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiAgICAgfSk7CiB9CiAKK1ZlY3RvcjxEZXZpY2U6OlZpZXdEYXRhPiBPcGVuWFJEZXZp
Y2U6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7CisgICAgVmVjdG9yPERldmljZTo6
Vmlld0RhdGE+IHZpZXdzOworICAgIGF1dG8gY29uZmlndXJhdGlvblR5cGUgPSB0b1hyVmlld0Nv
bmZpZ3VyYXRpb25UeXBlKG1vZGUpOworCisgICAgaWYgKGNvbmZpZ3VyYXRpb25UeXBlID09IFhS
X1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTykKKyAgICAgICAgdmlld3MuYXBw
ZW5kKHsgLmFjdGl2ZSA9IHRydWUsIC5leWUgPSBFeWU6Ok5vbmUgfSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIEFTU0VSVChjb25maWd1cmF0aW9uVHlwZSA9PSBYUl9WSUVXX0NPTkZJR1VSQVRJT05f
VFlQRV9QUklNQVJZX1NURVJFTyk7CisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0
cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0cnVl
LCBFeWU6OlJpZ2h0IH0pOworICAgIH0KKyAgICByZXR1cm4gdmlld3M7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFBsYXRmb3JtWFIKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikgJiYgVVNFKE9QRU5Y
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9y
bVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1Y
Uk9wZW5YUi5oCmluZGV4IDViZWJlNjk2NjkzMjdkYjJjODE1YjU1NmFlZGQxY2E5OWI0NmUxNzYu
LjAyZDE5NGU2MjcxZWJhNmIyYTg0NDg3MDI3OTVhNjA5ZWEyOTA3M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaApAQCAt
NTEsMTIgKzUxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0Q29uZmlndXJhdGlvblZp
ZXdzKCk7CiAKICAgICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMgZW51bWVyYXRlUmVmZXJlbmNlU3Bh
Y2VzKFhyU2Vzc2lvbiYpIGNvbnN0OwotICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNl
KFJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9OworICAgIFhyU3BhY2UgY3JlYXRlUmVmZXJl
bmNlU3BhY2UoWHJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBy
ZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUpIGZpbmFsOwogCiAgICAgdm9pZCBpbml0
aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpIGZpbmFsOwogICAgIHZvaWQg
c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOworICAgIHZvaWQgaW5pdGlhbGl6
ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWw7CiAg
ICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHdhaXRVbnRpbFN0b3BwaW5nKCk7CiAKQEAgLTY4
LDYgKzY5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFt
ZUNhbGxiYWNrJiYpIGZpbmFsOwogCisgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3cyhTZXNzaW9u
TW9kZSkgY29uc3QgZmluYWw7CisKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRp
ZXNNYXAgPSBIYXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBYclZpZXdDb25maWd1cmF0
aW9uUHJvcGVydGllcywgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdURjo6U3Ry
b25nRW51bUhhc2hUcmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKICAgICBWaWV3Q29u
ZmlndXJhdGlvblByb3BlcnRpZXNNYXAgbV92aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXM7CiAg
ICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25WaWV3c01hcCA9IEhhc2hNYXA8WHJWaWV3Q29uZmln
dXJhdGlvblR5cGUsIFZlY3RvcjxYclZpZXdDb25maWd1cmF0aW9uVmlldz4sIEludEhhc2g8WHJW
aWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFhyVmlld0Nv
bmZpZ3VyYXRpb25UeXBlPj47CkBAIC04MSw2ICs4NCw5IEBAIHByaXZhdGU6CiAgICAgV29ya1F1
ZXVlJiBtX3F1ZXVlOwogCiAgICAgWHJWaWV3Q29uZmlndXJhdGlvblR5cGUgbV9jdXJyZW50Vmll
d0NvbmZpZ3VyYXRpb25UeXBlOworICAgIFhyU3BhY2UgbV9sb2NhbFNwYWNlIHsgWFJfTlVMTF9I
QU5ETEUgfTsKKyAgICBYclNwYWNlIG1fdmlld1NwYWNlIHsgWFJfTlVMTF9IQU5ETEUgfTsKKyAg
ICBYclNwYWNlIG1fc3RhZ2VTcGFjZSB7IFhSX05VTExfSEFORExFIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBQbGF0Zm9ybVhSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmlj
ZS5jcHAKaW5kZXggNTQwMThkYTdlYmI1M2RkNTE5NDJkZTc2NjE0OTY3MmZmMWFjODQ1Ny4uYmYz
ODE0MmJmYzlkZTliYjc4ZGY4NDBmZGMxNWFmNGE5OGY4MTQ1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtMzIsMTQgKzMyLDIwIEBACiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJXZWJGYWtlWFJJbnB1dENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdGV4
cHIgU2Vjb25kcyBGYWtlWFJGcmFtZVRpbWUgPSAxNV9tczsKIAotdm9pZCBGYWtlWFJWaWV3Ojpz
ZXRGaWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0IGZvdikKK3ZvaWQg
RmFrZVhSVmlldzo6c2V0UHJvamVjdGlvbihjb25zdCBWZWN0b3I8ZmxvYXQ+JiBwcm9qZWN0aW9u
KQogewotICAgIG1fZm92ID0gZm92OworICAgIHN0ZDo6Y29weShzdGQ6OmJlZ2luKHByb2plY3Rp
b24pLCBzdGQ6OmVuZChwcm9qZWN0aW9uKSwgc3RkOjpiZWdpbihtX3Byb2plY3Rpb24pKTsKK30K
Kwordm9pZCBGYWtlWFJWaWV3OjpzZXRGaWVsZE9mVmlldyhjb25zdCBGYWtlWFJWaWV3SW5pdDo6
RmllbGRPZlZpZXdJbml0JiBmb3YpCit7CisgICAgbV9mb3YgPSBQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YTo6Rm92IHsgZGVnMnJhZChmb3YudXBEZWdyZWVzKSwgZGVnMnJhZChmb3YuZG93
bkRlZ3JlZXMpLCBkZWcycmFkKGZvdi5sZWZ0RGVncmVlcyksIGRlZzJyYWQoZm92LnJpZ2h0RGVn
cmVlcykgfTsKIH0KIAogU2ltdWxhdGVkWFJEZXZpY2U6OlNpbXVsYXRlZFhSRGV2aWNlKCkKQEAg
LTc0LDMxICs4MCw3MiBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzdG9wVGltZXIoKQogCiB2
b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQoKQogewotICAgIGF1dG8gY2Fs
bGJhY2tzID0gV1RGTW92ZShtX2NhbGxiYWNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IGNhbGxiYWNrcykKLSAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICBhdXRvIHVwZGF0ZXMgPSBX
VEZNb3ZlKG1fcGVuZGluZ1VwZGF0ZXMpOworICAgIGZvciAoYXV0byYgdXBkYXRlIDogdXBkYXRl
cykKKyAgICAgICAgdXBkYXRlKCk7CisKKyAgICBGcmFtZURhdGEgZGF0YTsKKyAgICBpZiAobV92
aWV3ZXJPcmlnaW4pIHsKKyAgICAgICAgZGF0YS5vcmlnaW4gPSAqbV92aWV3ZXJPcmlnaW47Cisg
ICAgICAgIGRhdGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgZGF0YS5pc1Bvc2l0
aW9uVmFsaWQgPSB0cnVlOworICAgIH0KKworICAgIGlmIChtX2Zsb29yT3JpZ2luKQorICAgICAg
ICBkYXRhLmZsb29yVHJhbnNmb3JtID0geyAqbV9mbG9vck9yaWdpbiB9OworCisgICAgZm9yIChh
dXRvJiBmYWtlVmlldyA6IG1fdmlld3MpIHsKKyAgICAgICAgRnJhbWVEYXRhOjpWaWV3IHZpZXc7
CisgICAgICAgIHZpZXcub2Zmc2V0ID0gZmFrZVZpZXctPm9mZnNldCgpOworICAgICAgICBpZiAo
ZmFrZVZpZXctPmZpZWxkT2ZWaWV3KCkuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHZpZXcucHJv
amVjdGlvbiA9IHsgKmZha2VWaWV3LT5maWVsZE9mVmlldygpIH07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHZpZXcucHJvamVjdGlvbiA9IHsgZmFrZVZpZXctPnByb2plY3Rpb24oKSB9Owor
ICAgICAgICAKKyAgICAgICAgZGF0YS52aWV3cy5hcHBlbmQodmlldyk7CisgICAgfQorCisgICAg
aWYgKG1fRnJhbWVDYWxsYmFjaykKKyAgICAgICAgbV9GcmFtZUNhbGxiYWNrKFdURk1vdmUoZGF0
YSkpOwogfQogCiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZy
YW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92
ZShjYWxsYmFjaykpOworICAgIG1fRnJhbWVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwog
ICAgIGlmICghbV9mcmFtZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fZnJhbWVUaW1lci5z
dGFydE9uZVNob3QoRmFrZVhSRnJhbWVUaW1lKTsKIH0KIAorCitWZWN0b3I8UGxhdGZvcm1YUjo6
RGV2aWNlOjpWaWV3RGF0YT4gU2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzKFBsYXRmb3JtWFI6OlNl
c3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7CisgICAgaWYgKG1vZGUgPT0gUGxhdGZvcm1YUjo6U2Vz
c2lvbk1vZGU6OkltbWVyc2l2ZVZyKQorICAgICAgICByZXR1cm4geyB7IC5hY3RpdmUgPSB0cnVl
LCBQbGF0Zm9ybVhSOjpFeWU6OkxlZnQgfSwgeyAuYWN0aXZlID0gdHJ1ZSwgUGxhdGZvcm1YUjo6
RXllOjpSaWdodCB9IH07CisKKyAgICByZXR1cm4geyB7IC5hY3RpdmUgPSB0cnVlLCBQbGF0Zm9y
bVhSOjpFeWU6Ok5vbmUgfSB9OworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzY2hlZHVs
ZU9uTmV4dEZyYW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jKQoreworICAgIG1fcGVuZGluZ1Vw
ZGF0ZXMuYXBwZW5kKFdURk1vdmUoZnVuYykpOworfQorCisKIFdlYkZha2VYUkRldmljZTo6V2Vi
RmFrZVhSRGV2aWNlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6c2V0Vmll
d3MoY29uc3QgVmVjdG9yPEZha2VYUlZpZXdJbml0PiYgdmlld3MpCiB7Ci0gICAgVmVjdG9yPFJl
ZjxGYWtlWFJWaWV3Pj4mIGRldmljZVZpZXdzID0gbV9kZXZpY2Uudmlld3MoKTsKLSAgICBkZXZp
Y2VWaWV3cy5jbGVhcigpOworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoW3RoaXMs
IHZpZXdzXSgpIHsKKyAgICAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4gZGV2aWNlVmlld3M7
CiAKLSAgICAvLyBUT0RPOiBkbyBpbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS4KLSAgICBmb3IgKGF1
dG8mIHZpZXdJbml0IDogdmlld3MpIHsKLSAgICAgICAgYXV0byB2aWV3ID0gcGFyc2VWaWV3KHZp
ZXdJbml0KTsKLSAgICAgICAgaWYgKCF2aWV3Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAg
ZGV2aWNlVmlld3MuYXBwZW5kKHZpZXcucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAgIH0KKyAg
ICAgICAgZm9yIChhdXRvJiB2aWV3SW5pdCA6IHZpZXdzKSB7CisgICAgICAgICAgICBhdXRvIHZp
ZXcgPSBwYXJzZVZpZXcodmlld0luaXQpOworICAgICAgICAgICAgaWYgKCF2aWV3Lmhhc0V4Y2Vw
dGlvbigpKQorICAgICAgICAgICAgICAgIGRldmljZVZpZXdzLmFwcGVuZCh2aWV3LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fZGV2aWNlLnNldFZpZXdzKFdU
Rk1vdmUoZGV2aWNlVmlld3MpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6
OmRpc2Nvbm5lY3QoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKQEAgLTEwOCw3
MSArMTU1LDczIEBAIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpkaXNjb25uZWN0KERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3
ZXJPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IG9yaWdpbiwgYm9vbCBlbXVsYXRlZFBv
c2l0aW9uKQogewotICAgIGF1dG8gcmlnaWRUcmFuc2Zvcm0gPSBwYXJzZVJpZ2lkVHJhbnNmb3Jt
KG9yaWdpbik7Ci0gICAgaWYgKHJpZ2lkVHJhbnNmb3JtLmhhc0V4Y2VwdGlvbigpKQorICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOworICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFRPRE86IGRvIGluIG5l
eHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNldFZpZXdlck9yaWdpbihyaWdpZFRy
YW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci0gICAgbV9kZXZpY2Uuc2V0RW11bGF0ZWRQ
b3NpdGlvbihlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICBhdXRvIHBvc2UgPSByZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCk7CisKKyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlz
LCBwb3NlID0gV1RGTW92ZShwb3NlKSwgZW11bGF0ZWRQb3NpdGlvbl0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgbV9kZXZpY2Uuc2V0Vmlld2VyT3JpZ2luKFdURk1vdmUocG9zZSkpOworICAgICAgICBt
X2RldmljZS5zZXRFbXVsYXRlZFBvc2l0aW9uKGVtdWxhdGVkUG9zaXRpb24pOworICAgIH0pOwog
fQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6Y2xlYXJWaWV3ZXJPcmlnaW4oKQogewotICAgIC8v
IFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNldFZpZXdl
ck9yaWdpbihudWxscHRyKTsKKyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlz
XSgpIHsKKyAgICAgICAgbV9kZXZpY2Uuc2V0Vmlld2VyT3JpZ2luKFdURjo6bnVsbG9wdCk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZVZpc2liaWxpdHlDaGFu
Z2UoWFJWaXNpYmlsaXR5U3RhdGUpCiB7CiB9CiAKLXZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRC
b3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+KQordm9pZCBXZWJGYWtlWFJE
ZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4mJikKIHsK
IH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNldEZsb29yT3JpZ2luKEZha2VYUlJpZ2lkVHJh
bnNmb3JtSW5pdCBvcmlnaW4pCiB7Ci0gICAgYXV0byByaWdpZFRyYW5zZm9ybSA9IHBhcnNlUmln
aWRUcmFuc2Zvcm0ob3JpZ2luKTsKLSAgICBpZiAocmlnaWRUcmFuc2Zvcm0uaGFzRXhjZXB0aW9u
KCkpCisgICAgYXV0byByZXN1bHQgPSBwYXJzZVJpZ2lkVHJhbnNmb3JtKG9yaWdpbik7CisgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gVE9E
TzogZG8gaW4gbmV4dCBhbmltYXRpb24gZnJhbWUuCi0gICAgbV9kZXZpY2Uuc2V0Rmxvb3JPcmln
aW4ocmlnaWRUcmFuc2Zvcm0ucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIGF1dG8gcG9zZSA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25O
ZXh0RnJhbWUoW3RoaXMsIHBvc2UgPSBXVEZNb3ZlKHBvc2UpXSgpIG11dGFibGUgeworICAgICAg
ICBtX2RldmljZS5zZXRGbG9vck9yaWdpbihXVEZNb3ZlKHBvc2UpKTsKKyAgICB9KTsKIH0KIAog
dm9pZCBXZWJGYWtlWFJEZXZpY2U6OmNsZWFyRmxvb3JPcmlnaW4oKQogewotICAgIC8vIFRPRE86
IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNldEZsb29yT3JpZ2lu
KG51bGxwdHIpOworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoW3RoaXNdKCkgewor
ICAgICAgICBtX2RldmljZS5zZXRGbG9vck9yaWdpbihXVEY6Om51bGxvcHQpOworICAgIH0pOwog
fQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVSZXNldFBvc2UoKQogewogfQogCisK
IFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVJ
bnB1dFNvdXJjZUNvbm5lY3Rpb24oRmFrZVhSSW5wdXRTb3VyY2VJbml0KQogewogICAgIHJldHVy
biBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0ZSgpOwogfQogCi1FeGNlcHRpb25PcjxS
ZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4+IFdlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5z
Zm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmIGluaXQpCitFeGNlcHRpb25PcjxQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gV2ViRmFrZVhSRGV2aWNlOjpwYXJz
ZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYgaW5pdCkKIHsK
ICAgICBpZiAoaW5pdC5wb3NpdGlvbi5zaXplKCkgIT0gMyB8fCBpbml0Lm9yaWVudGF0aW9uLnNp
emUoKSAhPSA0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAKLSAg
ICBET01Qb2ludEluaXQgcG9zaXRpb247Ci0gICAgcG9zaXRpb24ueCA9IGluaXQucG9zaXRpb25b
MF07Ci0gICAgcG9zaXRpb24ueSA9IGluaXQucG9zaXRpb25bMV07Ci0gICAgcG9zaXRpb24ueiA9
IGluaXQucG9zaXRpb25bMl07Ci0KLSAgICBET01Qb2ludEluaXQgb3JpZW50YXRpb247Ci0gICAg
b3JpZW50YXRpb24ueCA9IGluaXQub3JpZW50YXRpb25bMF07Ci0gICAgb3JpZW50YXRpb24ueSA9
IGluaXQub3JpZW50YXRpb25bMV07Ci0gICAgb3JpZW50YXRpb24ueiA9IGluaXQub3JpZW50YXRp
b25bMl07Ci0gICAgb3JpZW50YXRpb24udyA9IGluaXQub3JpZW50YXRpb25bM107CisgICAgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2UgcG9zZTsKKyAgICBwb3NlLnBvc2l0aW9u
ID0geyBpbml0LnBvc2l0aW9uWzBdLCBpbml0LnBvc2l0aW9uWzFdLCBpbml0LnBvc2l0aW9uWzJd
IH07CisgICAgcG9zZS5vcmllbnRhdGlvbiA9IHsgaW5pdC5vcmllbnRhdGlvblswXSwgaW5pdC5v
cmllbnRhdGlvblsxXSwgaW5pdC5vcmllbnRhdGlvblsyXSwgaW5pdC5vcmllbnRhdGlvblszXSB9
OwogCi0gICAgcmV0dXJuIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShwb3NpdGlvbiwgb3Jp
ZW50YXRpb24pOworICAgIHJldHVybiBwb3NlOwogfQogCiBFeGNlcHRpb25PcjxSZWY8RmFrZVhS
Vmlldz4+IFdlYkZha2VYUkRldmljZTo6cGFyc2VWaWV3KGNvbnN0IEZha2VYUlZpZXdJbml0JiBp
bml0KQpAQCAtMTgyLDIyICsyMzEsMTcgQEAgRXhjZXB0aW9uT3I8UmVmPEZha2VYUlZpZXc+PiBX
ZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyhjb25zdCBGYWtlWFJWaWV3SW5pdCYgaW4KIAogICAg
IGlmIChpbml0LnByb2plY3Rpb25NYXRyaXguc2l6ZSgpICE9IDE2KQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Ci0gICAgZmFrZVZpZXctPnZpZXcoKS0+c2V0UHJvamVj
dGlvbk1hdHJpeChpbml0LnByb2plY3Rpb25NYXRyaXgpOworICAgIGZha2VWaWV3LT5zZXRQcm9q
ZWN0aW9uKGluaXQucHJvamVjdGlvbk1hdHJpeCk7CiAKICAgICBhdXRvIHZpZXdPZmZzZXQgPSBw
YXJzZVJpZ2lkVHJhbnNmb3JtKGluaXQudmlld09mZnNldCk7CiAgICAgaWYgKHZpZXdPZmZzZXQu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB2aWV3T2Zmc2V0LnJlbGVhc2VFeGNlcHRp
b24oKTsKLSAgICBmYWtlVmlldy0+dmlldygpLT5zZXRUcmFuc2Zvcm0odmlld09mZnNldC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CisgICAgZmFrZVZpZXctPnNldE9mZnNldCh2aWV3T2Zmc2V0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKIAogICAgIGZha2VWaWV3LT5zZXRSZXNvbHV0aW9uKGluaXQu
cmVzb2x1dGlvbik7CiAKICAgICBpZiAoaW5pdC5maWVsZE9mVmlldykgewogICAgICAgICBmYWtl
Vmlldy0+c2V0RmllbGRPZlZpZXcoaW5pdC5maWVsZE9mVmlldy52YWx1ZSgpKTsKLSAgICAgICAg
Ly8gVE9ETzogU2V0IHZpZXfigJlzIHByb2plY3Rpb24gbWF0cml4IHRvIHRoZSBwcm9qZWN0aW9u
IG1hdHJpeAotICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZmllbGQgb2Ygdmlldywg
YW5kIGRlcHRoIHZhbHVlcyBlcXVhbCB0bwotICAgICAgICAvLyBkZXB0aE5lYXIgYW5kIGRlcHRo
RmFyIG9mIGFueSBYUlNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UuCi0gICAgICAg
IC8vIElmIHRoZXJlIGN1cnJlbnRseSBpcyBub25lLCB1c2UgdGhlIGRlZmF1bHQgdmFsdWVzIG9m
IG5lYXI9MC4xLAotICAgICAgICAvLyBmYXI9MTAwMC4wLgogICAgIH0KIAogICAgIHJldHVybiBm
YWtlVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2
aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4IDM5
MWJmYzM0N2VlZjlhYWFmMTdiZDJiYThiNmJhNDM2ZjAwMDQ2ZDUuLjNhNmIwZTg1NzY1M2YzN2M0
ZDE4YzYxMTg3YzMxMmU5ZDgxN2RiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaApAQCAtMzMsOCArMzMsNiBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVy
cmVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgIldlYkZha2VYUklucHV0
Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKLSNpbmNsdWRl
ICJXZWJYUlZpZXcuaCIKICNpbmNsdWRlICJYUlZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDMsMjEgKzQx
LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZha2VYUlZpZXcgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxGYWtlWFJWaWV3PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGYWtl
WFJWaWV3PiBjcmVhdGUoWFJFeWUgZXllKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZha2VYUlZp
ZXcoZXllKSk7IH0KKyAgICB1c2luZyBQb3NlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OlBvc2U7CisgICAgdXNpbmcgRm92ID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OkZvdjsKIAotICAgIFJlZlB0cjxXZWJYUlZpZXc+IHZpZXcoKSB7IHJldHVybiBtX3ZpZXc7IH0K
LSAgICB2b2lkIHNldFJlc29sdXRpb24oRmFrZVhSVmlld0luaXQ6OkRldmljZVJlc29sdXRpb24g
cmVzb2x1dGlvbikgeyBtX3Jlc29sdXRpb24gPSByZXNvbHV0aW9uOyB9Ci0gICAgdm9pZCBzZXRG
aWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0KTsKKyAgICBYUkV5ZSBl
eWUoKSBjb25zdCB7IHJldHVybiBtX2V5ZTsgfQorICAgIGNvbnN0IFBvc2UmIG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgY29uc3Qgc3RkOjphcnJheTxmbG9hdCwgMTY+
JiBwcm9qZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uOyB9CisgICAgY29uc3Qg
T3B0aW9uYWw8Rm92PiYgZmllbGRPZlZpZXcoKSBjb25zdCB7IHJldHVybiBtX2Zvdjt9CiAKKyAg
ICB2b2lkIHNldFJlc29sdXRpb24oRmFrZVhSVmlld0luaXQ6OkRldmljZVJlc29sdXRpb24gcmVz
b2x1dGlvbikgeyBtX3Jlc29sdXRpb24gPSByZXNvbHV0aW9uOyB9CisgICAgdm9pZCBzZXRPZmZz
ZXQoUG9zZSYmIG9mZnNldCkgeyBtX29mZnNldCA9IFdURk1vdmUob2Zmc2V0KTsgfQorICAgIHZv
aWQgc2V0UHJvamVjdGlvbihjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAgdm9pZCBzZXRGaWVs
ZE9mVmlldyhjb25zdCBGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0Jik7CiBwcml2YXRl
OgogICAgIEZha2VYUlZpZXcoWFJFeWUgZXllKQotICAgIHsKLSAgICAgICAgbV92aWV3ID0gV2Vi
WFJWaWV3OjpjcmVhdGUoKTsKLSAgICAgICAgbV92aWV3LT5zZXRFeWUoZXllKTsKLSAgICB9Cisg
ICAgICAgIDogbV9leWUoZXllKSB7IH0KKwogCi0gICAgUmVmUHRyPFdlYlhSVmlldz4gbV92aWV3
OworICAgIFhSRXllIG1fZXllOwogICAgIEZha2VYUlZpZXdJbml0OjpEZXZpY2VSZXNvbHV0aW9u
IG1fcmVzb2x1dGlvbjsKLSAgICBGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0IG1fZm92
OworICAgIFBvc2UgbV9vZmZzZXQ7CisgICAgc3RkOjphcnJheTxmbG9hdCwgMTY+IG1fcHJvamVj
dGlvbjsKKyAgICBPcHRpb25hbDxGb3Y+IG1fZm92OwogfTsKIAogY2xhc3MgU2ltdWxhdGVkWFJE
ZXZpY2UgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKQEAgLTY1LDMxICs3MCwz
NSBAQCBjbGFzcyBTaW11bGF0ZWRYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybVhSOjpE
ZXZpY2UgewogcHVibGljOgogICAgIFNpbXVsYXRlZFhSRGV2aWNlKCk7CiAgICAgflNpbXVsYXRl
ZFhSRGV2aWNlKCk7Ci0gICAgdm9pZCBzZXROYXRpdmVCb3VuZHNHZW9tZXRyeShWZWN0b3I8RmFr
ZVhSQm91bmRzUG9pbnQ+IGdlb21ldHJ5KSB7IG1fbmF0aXZlQm91bmRzR2VvbWV0cnkgPSBnZW9t
ZXRyeTsgfQotICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiYmIG9yaWdpbikgeyBtX3ZpZXdlck9yaWdpbiA9IFdURk1vdmUob3JpZ2luKTsgfQotICAg
IHZvaWQgc2V0Rmxvb3JPcmlnaW4oUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2lu
KSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KKyAgICB2b2lkIHNldFZpZXdz
KFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiYgdmlld3MpIHsgbV92aWV3cyA9IFdURk1vdmUodmll
d3MpOyB9CisgICAgdm9pZCBzZXROYXRpdmVCb3VuZHNHZW9tZXRyeShjb25zdCBWZWN0b3I8RmFr
ZVhSQm91bmRzUG9pbnQ+JiBnZW9tZXRyeSkgeyBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5ID0gZ2Vv
bWV0cnk7IH0KKyAgICB2b2lkIHNldFZpZXdlck9yaWdpbihPcHRpb25hbDxGcmFtZURhdGE6OlBv
c2U+JiYgb3JpZ2luKSB7IG1fdmlld2VyT3JpZ2luID0gV1RGTW92ZShvcmlnaW4pOyB9CisgICAg
dm9pZCBzZXRGbG9vck9yaWdpbihPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+JiYgb3JpZ2luKSB7
IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KICAgICB2b2lkIHNldEVtdWxhdGVk
UG9zaXRpb24oYm9vbCBlbXVsYXRlZCkgeyBtX2VtdWxhdGVkUG9zaXRpb24gPSBlbXVsYXRlZDsg
fQogICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiB2aWV3cygpIHsgcmV0dXJuIG1fdmlld3M7
IH0KICAgICB2b2lkIHNldFN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24oYm9vbCBzdXBwb3J0
c1NodXRkb3duTm90aWZpY2F0aW9uKSB7IG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbiA9
IHN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb247IH0KICAgICB2b2lkIHNpbXVsYXRlU2h1dGRv
d25Db21wbGV0ZWQoKTsKKyAgICB2b2lkIHNjaGVkdWxlT25OZXh0RnJhbWUoRnVuY3Rpb248dm9p
ZCgpPiYmKTsKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJp
bmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQogICAgIHZvaWQgc2h1dERvd25U
cmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uU2h1
dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N1cHBvcnRzU2h1dGRv
d25Ob3RpZmljYXRpb247IH0KICAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0
Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQorICAgIFZlY3RvcjxQbGF0Zm9y
bVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikg
ZmluYWw7CiAKICAgICB2b2lkIHN0b3BUaW1lcigpOwogICAgIHZvaWQgZnJhbWVUaW1lckZpcmVk
KCk7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+PiBtX25hdGl2ZUJv
dW5kc0dlb21ldHJ5OwotICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3ZpZXdlck9y
aWdpbjsKLSAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9mbG9vck9yaWdpbjsKKyAg
ICBPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+IG1fdmlld2VyT3JpZ2luOworICAgIE9wdGlvbmFs
PEZyYW1lRGF0YTo6UG9zZT4gbV9mbG9vck9yaWdpbjsKICAgICBib29sIG1fZW11bGF0ZWRQb3Np
dGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4gbV92aWV3czsKICAg
ICBib29sIG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgVGlt
ZXIgbV9mcmFtZVRpbWVyOwotICAgIFZlY3RvcjxSZXF1ZXN0RnJhbWVDYWxsYmFjaz4gbV9jYWxs
YmFja3M7CisgICAgUmVxdWVzdEZyYW1lQ2FsbGJhY2sgbV9GcmFtZUNhbGxiYWNrOworICAgIFZl
Y3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdVcGRhdGVzOwogfTsKIAogY2xhc3MgV2Vi
RmFrZVhSRGV2aWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRmFrZVhSRGV2aWNlPiB7
CkBAIC0xMDYsNyArMTE1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaW11bGF0ZVZpc2liaWxp
dHlDaGFuZ2UoWFJWaXNpYmlsaXR5U3RhdGUpOwogCi0gICAgdm9pZCBzZXRCb3VuZHNHZW9tZXRy
eShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+IGJvdW5kc0Nvb3JkaW5hdGVzKTsKKyAgICB2b2lk
IHNldEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4mJiBib3VuZHNDb29y
ZGluYXRlcyk7CiAKICAgICB2b2lkIHNldEZsb29yT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3Jt
SW5pdCk7CiAKQEAgLTEyNyw3ICsxMzYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkZh
a2VYUkRldmljZSgpOwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJpZ2lkVHJh
bnNmb3JtPj4gcGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUlu
aXQmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OlBvc2U+IHBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRUcmFuc2Zvcm1J
bml0Jik7CiAKICAgICBTaW11bGF0ZWRYUkRldmljZSBtX2RldmljZTsKIH07CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjNl
ZjUyMGFlMzkxZTcwYjYyMTg5MDgyZWU2NzQyODQ4ZDRhYTNjMC4uMjRiZGM2MmRkZTU4YmRjNWI0
MjdiM2VlNGMxOGRmMmU0OGZjNTI5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTE1
ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPiBhbmQgU2VyZ2lvIFZp
bGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2Vi
WFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDEx
MjkxMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YXJrIHBvc2UgcmVsYXRlZCBXZWJYUiB0ZXN0cyBhcyBwYXNzaW5nLgorCisgICAgICAgICogcGxh
dGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDItMTQgIFBlbmcgTGl1ICA8cGVu
Zy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gTW92ZSBVc2VHUFVQcm9jZXNzRm9y
TWVkaWFFbmFibGVkIGZyb20gV2ViUHJlZmVyZW5jZXNJbnRlcm5hbCB0byBXZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMGE2MGZmMTQ1
ZGYxZGZlODI4N2YwYjMwOWRkNTRiMTg1MzcwMWE5Yi4uNjNhOTE5NWY0NzRkZGQwOGE5YmY4ZDlm
Mjg1OTQ3YmE1ZTk4MWY1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMjEtMDItMTUgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6QGlnYWxp
YS5jb20+IGFuZCBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBXZWJYUiBnZXRWaWV3ZXJQb3NlIGFuZCBnZXRQb3NlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyMjUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc0MTEyOTEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1hcmsgcG9zZSBhbmQgcmVmZXJlbmNlIHNwYWNlIFdlYlhSIHRl
c3RzIGFzIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJG
cmFtZV9nZXRQb3NlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
UmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNl
X3JlbGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRh
X3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0Vmlld2VyUG9z
ZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVz
Lmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyVmlld19tYXRjaC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMS0wMi0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2
aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIEFub3RoZXIgV1BUIHRl
c3QgaW1wb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0
UG9zZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk2MjNkNGY4YTE3Zjg1ZmY4Mjdj
YzU4ZTg1ODMzNTA0Zjk2NjkyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZyYW1lLmdldFBvc2Ugd29ya3Mg
Zm9yIGltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBYUkZyYW1lLmdldFBvc2Ugd29ya3MgZm9yIG5v
bi1pbW1lcnNpdmUgc2Vzc2lvbnMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBvc2VfZ2V0UG9z
ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNjFiZTM5MDEzNzhkOTA2MDViYjI2M2Q2MWJmYmU4YmRhZjIw
ZTBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBvc2VfZ2V0UG9zZS5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlKHJl
ZlNwYWNlKSBtYXRjaGVzIGdldFBvc2Uodmlld2VyLCByZWZTcGFjZSkuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZl
cmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VT
cGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZGY5ZjJiYTZhNTgxOWYwNGYxMGNmNTdiYmNjOWY1NTA2OTU1ZmZhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJl
ZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorCitQQVNTIENyZWF0aW5nIFhSUmVmZXJlbmNlU3BhY2Ugb3JpZ2luIG9mZnNl
dCBvZmYgb2YgYHZpZXdlcmAgc3BhY2Ugd29ya3MuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9y
ZWxhdGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9yZWxhdGlvbnNoaXBz
Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWVjYzFiMmJlZjgyZjYxYWIxYjRhYWVm
OGFiMTkxMDM2NmJjZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX3JlbGF0aW9uc2hp
cHMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEJvdW5kZWQgc3Bh
Y2UsIHZpZXdlciBzcGFjZSwgbG9jYWwgYW5kIGxvY2FsLWZsb29yIHNwYWNlIGhhdmUgY29ycmVj
dCBwb3NlcyB3LnIudC4gZWFjaCBvdGhlcgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ5ZjM5
MWE3NjRmNDg4YjhmN2UzMTgyY2M4NmU4MjBiMDFmMzA1NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKKworUEFTUyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcmVzb2x2ZXMgd2l0aCBn
b29kIGRhdGEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2dldFZpZXdl
clBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2dldFZp
ZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZTY3ZGFmZWU1YzNjODEw
YWQ5YTI5YTNlZDVjY2Q5OWNhNTcwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5p
bWF0aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0
IEBACisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJh
bWUgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3Nl
IHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25f
dmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjU2
MjFhNGUxYjM2ODFiYzRkZTI0NTdkNzljYmY1YmVkMmM4ODExCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Np
b25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQg
QEAKKworUEFTUyBJZGVudGl0eSByZWZlcmVuY2Ugc3BhY2UgcHJvdmlkZXMgY29ycmVjdCBwb3Nl
cyBmb3IgaW5saW5lIHNlc3Npb25zCitQQVNTIElkZW50aXR5IHJlZmVyZW5jZSBzcGFjZSBwcm92
aWRlcyBjb3JyZWN0IHBvc2VzIGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdf
ZXllcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40Y2RhYzJkZTEyYTEwYzY2OWJjYjU5ODNhYTMwMmRhNTliYjY5ZjllCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1Mg
WFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMKK1BBU1MgWFJWaWV3
LmV5ZSBpcyBjb3JyZWN0IGZvciBub24taW1tZXJzaXZlIHNlc3Npb25zCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3
X21hdGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMTNmNmJjOWU2NWVjNmYxMzQ2MTNiOWUyYjFmNDcxYmNhMzU5NDA1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQ
QVNTIFhSRnJhbWUgY29udGFpbnMgdGhlIGV4cGVjdGVkIHZpZXdzCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29u
ZWZyYW1ldXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTAyMjE1OGYwYjVkYWM3MzMxZmM2ZTU4N2EwMDkwZDNm
NThiZDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSVmlldyBwcm9qZWN0aW9uIG1hdHJpY2VzIHVw
ZGF0ZSBuZWFyIGFuZCBmYXIgZGVwdGhzIG9uIHRoZSBuZXh0IGZyYW1lCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzMyZmNkMDNmYzUyMWY4YzhkYWM5
MTM3NTYxOTdjMWFjNjE3ZWNhNy4uZGRlOTgxZTYzN2VmNDQxOGNjZTU2MzU4ZDQ1YjAxOTg3NWNh
ZTU4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYz
OCwyNiArNjM4LDM2IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvCiB3ZWJraXQub3JnL2IvMjA5
ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVz
dFNlc3Npb25fbm9fbW9kZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVxdWVzdFNl
c3Npb25fbm9uX2ltbWVyc2l2ZV9ub19nZXN0dXJlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtp
dC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRl
dmljZV9yZXF1ZXN0U2Vzc2lvbl9vcHRpb25hbEZlYXR1cmVzLmh0dHBzLmh0bWwgWyBQYXNzIF0K
LXdlYmtpdC5vcmcvYi8yMDk4NTkgd2Via2l0Lm9yZy9iLzIxNTYzNyBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZS5odHRw
cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5pbWF0aW9uRnJhbWVf
aW52YWxpZGhhbmRsZS5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMjA5ODU5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2ZlYXR1cmVzX2Rl
dmljZVN1cHBvcnQuaHR0cHMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVfY2FsbGJhY2tfY2FsbHMuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1l
X3RpbWVzdGFtcC5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMjA5ODU5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVu
Y2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3Nl
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX2F2YWlsYWJp
bGl0eS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5lc3MuaHR0cHMud2lu
ZG93Lmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNzaW9uU3VwcG9ydGVk
X2ltbWVyc2l2ZS1hci5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLmh0bWwgWyBQ
YXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZy
YW1ldXBkYXRlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfY29uc3RydWN0b3Iu
aHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZlcl9zYW1lT2JqZWN0
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIvbmF2aWdhdG9yX3hyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25fc2FtZU9iamVjdC5o
dHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy5odG1sIFsgUGFzcyBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vf
cmVsYXRpb25zaGlwcy5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fY29uc3RydWN0b3IuaHR0cHMuaHRtbCBb
IFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJh
bnNmb3JtX2ludmVyc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX21hdHJpeC5odHRwcy5odG1sIFsgUGFz
cyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5j
ZWxBbmltYXRpb25GcmFtZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZV9pbnZhbGlk
aGFuZGxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJTZXNzaW9uX2VuZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZpY2VTdXBwb3J0
Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX3ByZXZlbnRfbXVsdGlwbGVfZXhjbHVzaXZlLmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVl
c3RBbmltYXRpb25GcmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0
Vmlld2VyUG9zZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0
dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJl
bmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci9yZW5kZXJfc3RhdGVfdmVydGljYWxfZm92X2ltbWVyc2l2ZS5odHRwcy5odG1s
IFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3JlbmRlcl9z
dGF0ZV91cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZW5kLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGh0dHAvd3B0
L3dlYnhyL3hyU2Vzc2lvbl9lbmRfZGV2aWNlX3JlcG9ydHNfc2h1dGRvd24uaHR0cHMuaHRtbCBb
IFBhc3MgXQogaHR0cC93cHQvd2VieHIveHJTZXNzaW9uX2VuZGVkX2J5X3N5c3RlbS5odHRwcy5o
dG1sIFsgUGFzcyBdCiBodHRwL3dwdC93ZWJ4ci94clNlc3Npb25fcmVqZWN0X211bHRpcGxlX2Vu
ZC5odHRwcy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420452</attachid>
            <date>2021-02-16 04:42:03 -0800</date>
            <delta_ts>2021-02-16 12:26:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221225-20210216134201.patch</filename>
            <type>text/plain</type>
            <size>96079</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NiNTRiNzVmZmFmNzdj
N2QyM2FjNGQxM2E4YjQxZTk2MmNkNmIyYy4uODJmNTlhOWI1M2FhNzdmNmExOTBhMmQyYWZkMTY0
MmMyNzlmNWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAyMS0wMi0xNSAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4gYW5kIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdl
dFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQxMTI5MTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBy
b3ZlIFBsYXRmb3JtWFI6OkZyYW1lRGF0YSBzdHJ1Y3QuCisgICAgICAgIC0gSW1wbGVtZW50IFdl
YlhSRnJhbWUgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZS4KKyAgICAgICAgLSBJbXBsZW1lbnQg
V2ViWFJSZWZlcmVuY2VTcGFjZSBvZmZzZXQsIG9yaWdpbiBhbmQgZWZmZWN0aXZlIHRyYW5mb3Jt
cy4KKyAgICAgICAgLSBJbXBsZW1lbnQgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UgbmF0aXZl
T3JpZ2luLgorICAgICAgICAtIEFwcGx5IGZyYW1lIHVwZGF0ZXMgaW4gV2ViWFJTZXNzaW9uLgor
ICAgICAgICAtIEltcGxlbWVudCB2aWV3cyBmb3IgT3BlblhSIGFuZCBEdW1teUlubGluZURldmlj
ZSBpbmxpbmUgc2Vzc2lvbnMuCisgICAgICAgIC0gUXVlcnkgYW5kIGNvbXBsZXRlIGFsbCB0aGUg
bmV3IEZyYW1lRGF0YSBpbiB0aGUgT3BlblhSIHBvcnQuCisgICAgICAgIC0gQ29tcGxldGUgdGhl
IFdlYkZha2VYUkRldmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorCisg
ICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgV1BUIHRlc3RzCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVtZW50IG5hdGl2ZU9y
aWdpbmEgYW5kIGdldE9mZnNldFJlZmVyZW5jZVNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Ym91
bmRzR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSRnJhbWUuY3BwOiBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0
UG9zZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
RnJhbWU6Om11c3RQb3Nlc0JlTGltaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1l
Ojpwb3B1bGF0ZVBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Z2V0Vmlld2Vy
UG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpnZXRQb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlv
bi4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSRnJhbWU6OnNldEZyYW1lRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmlkbDogYWRkIE1heVRocm93RXhjZXB0aW9uLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuY3BwOiBBZGQgV2ViWFJSaWdpZFRyYW5zZm9ybSBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXIuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJQb3NlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJQb3NlOjpXZWJY
UlBvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlBvc2U6OmlzVmlld2VyUG9zZSBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuaWRsOiBSZW1vdmUgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQor
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVt
ZW50IG9mZnNldCwgb3JpZ2luIGFuZCBlZmZlY3RpdmUgdHJhbmZvcm1zLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmZsb29yT3JpZ2luVHJhbnNmb3Jt
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVy
ZW5jZVNwYWNlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaWRsOiBBZGQgU2tpcFZUYWJsZVZhbGlkYXRpb24uCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6IEFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZy
YW1lLiBBZGQgYWN0aXZlIHZpZXdzIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Np
b246OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVl
c3RSZWZlcmVuY2VTcGFjZSk6IFVzZSBXZWFrUHRyIGluc3RlYWQgUmVmIGZvciBXZWJYUlNlc3Np
b24uCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpwb3Nlc0NhbkJlUmVwb3J0ZWQgY29uc3QpOiBhZGQKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIG5hdGl2ZU9yaWdpbiBhbmQgZWZmZWN0aXZlT3Jp
Z2luIG1lbWJlciBmdW5jdGlvbnMuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6V2ViWFJTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJTcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNlOjppc1JlZmVyZW5jZVNwYWNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzQm91bmRlZFJlZmVyZW5jZVNw
YWNlIGNvbnN0KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOiBJ
bXBsZW1lbnQgdmlld3MgZm9yIER1bW15SW5saW5lRGV2aWNlLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjp2aWV3cyBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwOiBQYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm0gaW4gdGhlIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpXZWJYUlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJWaWV3OjpzZXRQcm9qZWN0aW9uTWF0cml4KTogVXNlIHN0ZDo6YXJyYXkgdG8gbWF0Y2ggZGV2
aWNlIGRhdGEuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSVmlldzo6cHJvamVjdGlvbk1hdHJpeCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlZpZXc6OnRyYW5zZm9ybSBjb25zdCk6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSVmlld2VyUG9zZS5jcHA6IEFkZCB2aWV3cyBzZXR0ZXIuIEFkZCBzcGVjaWFs
aXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpzZXRWaWV3cyk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSVmlld2VyUG9zZS5pZGw6IFJlbW92ZSBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LiBBZGQgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9YUkV5ZS5oOiBSZXVzZSBQbGF0Zm9ybVhSIGVudW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDogQWRkIHByb2plY3Rp
b24gbWF0cml4IHV0aWxpdHkgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6IEltcHJvdmUgRnJhbWVEYXRhLgorCisgICAgICAgICogcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOiBRdWVyeSBhbmQgY29tcGxldGUgYWxs
IHRoZSBuZXcgRnJhbWVEYXRhLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpj
cmVhdGVSZWZlcmVuY2VTcGFjZSk6IGFkZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbik6IFF1ZXJ5IHJlc29s
dXRpb24gZGF0YSBmcm9tIE9wZW5YUi4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmlj
ZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKTogSW5pdGlhbGl6ZSBsb2NhbCBhbmQg
dmlldyBYclNwYWNlcy4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6aW5pdGlh
bGl6ZVJlZmVyZW5jZVNwYWNlKTogTGF6aWx5IGluaXRpYWxpemUgc3RhZ2UgWHJTcGFjZS4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6OlhyUG9zZWZUb1Bvc2UpOiBhZGQgaGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoUGxhdGZvcm1YUjo6eHJWaWV3VG9Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlvbi4K
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKTogQ29tcGxl
dGUgYWxsIHRoZSBuZXcgZnJhbWUgRGF0YQorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2
aWNlOjp2aWV3cyBjb25zdCk6IEltcGxlbWVudCB2aWV3IGRhdGEgZm9yIE9wZW5YUgorICAgICAg
ICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmg6CisKKyAgICAgICAgKiB0
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IENvbXBsZXRlIHRoZSByZXF1aXJlZCBpbXBsZW1l
bnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6RmFrZVhSVmll
dzo6c2V0UHJvamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGYWtlWFJWaWV3OjpzZXRGaWVs
ZE9mVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Vmlld3MpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhclZpZXdlck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Rmxvb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaDoKKwogMjAyMS0wMi0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBEb24ndCB1cGRhdGUgZm9ybSBjb250cm9sIGVsZW1lbnRz
IHZhbGlkaXR5IHN0YXR1cyBpZiB0aGV5IGFyZSBkZXRhY2hlZCBmcm9tIHRoZSBkb2N1bWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDQ0ZWQ2MmJkY2Q1NmZiZTgyNzk0MDFlMzA2MDM4
OGQ3M2Y0OTFmZC4uOTQ3Y2IxNzlhOGU1M2E2YTRjMjMzOWQxZTg4ZjIzOTZhZGZjZWRmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTI5LDI5ICsyOSw2MyBAQAogI2lmIEVOQUJMRShXRUJY
UikKIAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHkuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJXZWJYUlNlc3Np
b24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZSk7CiAKLVJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Np
b24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK1JlZjxXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1
bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5
cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlwZSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBzZXNzaW9u
LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSwgdHlwZSkpOwogfQogCi1XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBl
IHR5cGUpCi0gICAgOiBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Np
b24pLCB0eXBlKQorCitSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRl
ZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24m
IHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VT
cGFjZVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7
Cit9CisKKworV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uLCBSZWY8V2Vi
WFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCisg
ICAgOiBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBXVEZNb3ZlKG9mZnNl
dCksIHR5cGUpCiB7CiB9CiAKIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjp+V2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoKSA9IGRlZmF1bHQ7CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAoreworICAgIC8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnJlZmVyZW5jZXNw
YWNldHlwZS1ib3VuZGVkLWZsb29yLgorICAgIC8vIEJvdW5kZWQgZmxvb3Igc3BhY2Ugc2hvdWxk
IGJlIGF0IHRoZSBzYW1lIGhlaWdodCBhcyBsb2NhbCBmbG9vciBzcGFjZS4KKyAgICByZXR1cm4g
Zmxvb3JPcmlnaW5UcmFuc2Zvcm0oKTsKK30KKwogY29uc3QgVmVjdG9yPFJlZjxET01Qb2ludFJl
YWRPbmx5Pj4mIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpib3VuZHNHZW9tZXRyeSgpIGNv
bnN0CiB7CisgICAgLy8gRklYTUU6IGdldCBkYXRhIGZyb20gZGV2aWNlCiAgICAgcmV0dXJuIG1f
Ym91bmRzR2VvbWV0cnk7CiB9CiAKKworUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJY
UlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0pCit7CisgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChpczxE
b2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7CisKKyAgICAvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVuY2VzcGFjZS1nZXRvZmZz
ZXRyZWZlcmVuY2VzcGFjZQorICAgIC8vIFNldCBvZmZzZXRTcGFjZeKAmXMgb3JpZ2luIG9mZnNl
dCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9yaWdpbiBvZmZzZXQgYnkg
b3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNlLgorICAgIGF1dG8gb2Zm
c2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG1fb3JpZ2luT2Zmc2V0LT5yYXdUcmFu
c2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7CisKKyAgICAvLyBGSVhN
RTogc2V0IG9mZnNldFNwYWNl4oCZcyBib3VuZHNHZW9tZXRyeSB0byBiYXNl4oCZcyBib3VuZHNH
ZW9tZXRyeSwgd2l0aCBlYWNoIHBvaW50IG11bHRpcGxpZWQgYnkgdGhlIGludmVyc2Ugb2Ygb3Jp
Z2luT2Zmc2V0LgorICAgIHJldHVybiBjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLCBtX3Nlc3Npb24sIFdURk1vdmUob2Zmc2V0KSwgbV90eXBlKTsK
K30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJl
ZmVyZW5jZVNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRl
ZFJlZmVyZW5jZVNwYWNlLmgKaW5kZXggNzFhOWY5NzBhNzMwMWJkNGYwNGU0YzBiYmVlODFlYWVl
YTNmNDRkNy4uNzUyODdmYjc1YjAzNDRiNzdiNzUyYjUyMDRjMjU3MGJjZWJhMGU1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UuaApAQCAtMjUsMTMgKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaWYg
RU5BQkxFKFdFQlhSKQorCiAjaW5jbHVkZSAiV2ViWFJSZWZlcmVuY2VTcGFjZS5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCi0jaWYgRU5BQkxFKFdFQlhSKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERPTVBvaW50UmVhZE9ubHk7CkBAIC0zOSwxOCArMzksMjUgQEAgY2xhc3MgRE9NUG9p
bnRSZWFkT25seTsKIGNsYXNzIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlIDogcHVibGljIFdl
YlhSUmVmZXJlbmNlU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFhS
UmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mLCBYUlJlZmVyZW5jZVNwYWNl
VHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4gY3JlYXRl
KERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhS
UmVmZXJlbmNlU3BhY2VUeXBlKTsKIAogICAgIHZpcnR1YWwgfldlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlKCk7CiAKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25z
dCBmaW5hbDsKICAgICBjb25zdCBWZWN0b3I8UmVmPERPTVBvaW50UmVhZE9ubHk+PiYgYm91bmRz
R2VvbWV0cnkoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4gZ2V0T2Zm
c2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYpIGZpbmFsOwogCiBw
cml2YXRlOgotICAgIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgUmVmPFdl
YlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIFdlYlhSQm91bmRlZFJl
ZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJiwgUmVmPFdlYlhSUmlnaWRUcmFu
c2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKworICAgIGJvb2wgaXNCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBWZWN0b3I8
UmVmPERPTVBvaW50UmVhZE9ubHk+PiBtX2JvdW5kc0dlb21ldHJ5OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQlhSU1BBQ0UoV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2UsIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkpCisKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZy
YW1lLmNwcAppbmRleCBmMjc4NzYxYjBhN2I3ZDI5ZDE3OTQyMjM1MGEyYWExOThhMjNiZGVjLi41
Zjg5YTNiODgzMGEwNWRhOTQ3OTUwMmFkZWVkZmU5ZjdjMTIyNGQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTI4LDM1ICsyOCwyMjEgQEAKIAog
I2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNl
LmgiCisjaW5jbHVkZSAiV2ViWFJSZWZlcmVuY2VTcGFjZS5oIgogI2luY2x1ZGUgIldlYlhSU2Vz
c2lvbi5oIgogI2luY2x1ZGUgIldlYlhSVmlld2VyUG9zZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoV2ViWFJGcmFtZSk7CiAKLVJlZjxXZWJYUkZyYW1lPiBXZWJYUkZyYW1l
OjpjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uKQorUmVmPFdlYlhSRnJhbWU+IFdl
YlhSRnJhbWU6OmNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIElzQW5pbWF0aW9u
RnJhbWUgaXNBbmltYXRpb25GcmFtZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJY
UkZyYW1lKFdURk1vdmUoc2Vzc2lvbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJY
UkZyYW1lKFdURk1vdmUoc2Vzc2lvbiksIGlzQW5pbWF0aW9uRnJhbWUpKTsKIH0KIAotV2ViWFJG
cmFtZTo6V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24pCi0gICAgOiBtX3Nl
c3Npb24oV1RGTW92ZShzZXNzaW9uKSkKK1dlYlhSRnJhbWU6OldlYlhSRnJhbWUoUmVmPFdlYlhS
U2Vzc2lvbj4mJiBzZXNzaW9uLCBJc0FuaW1hdGlvbkZyYW1lIGlzQW5pbWF0aW9uRnJhbWUpCisg
ICAgOiBtX2lzQW5pbWF0aW9uRnJhbWUoaXNBbmltYXRpb25GcmFtZSA9PSBJc0FuaW1hdGlvbkZy
YW1lOjpZZXMpCisgICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKIHsKIH0KIAogV2Vi
WFJGcmFtZTo6fldlYlhSRnJhbWUoKSA9IGRlZmF1bHQ7CiAKIAotUmVmUHRyPFdlYlhSVmlld2Vy
UG9zZT4gV2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9zZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNl
JikKKworYm9vbCBXZWJYUkZyYW1lOjppc091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5kZWRSZWZl
cmVuY2VTcGFjZShjb25zdCBXZWJYUlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJTcGFjZSYpIGNv
bnN0Cit7CisgICAgaWYgKCFpczxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4oc3BhY2UpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogcmV0dXJuIHRydWUgd2hlbmV2
ZXIgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGJvdW5kZWQgZ2VvbWV0cnkgb2YKKyAgICAvLyB8c3Bh
Y2V8IHRvIHRoZSBuYXRpdmUgb3JpZ2luIG9mIHxvdGhlcnwgc3BhY2UgaXMgZ3JlYXRlciB0aGFu
IDFtCisgICAgLy8gKHN1Z2dlc3RlZCBieSBzcGVjcykuCisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgV2ViWFJGcmFtZTo6aXNMb2NhbFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSU3Bh
Y2UmIHNwYWNlKSBjb25zdAoreworICAgIGlmICghaXM8V2ViWFJSZWZlcmVuY2VTcGFjZT4oc3Bh
Y2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHR5cGUgPSBkb3duY2FzdDxX
ZWJYUlJlZmVyZW5jZVNwYWNlPihzcGFjZSkudHlwZSgpOworICAgIGlmICh0eXBlID09IFhSUmVm
ZXJlbmNlU3BhY2VUeXBlOjpMb2NhbCB8fCB0eXBlID09IFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpM
b2NhbEZsb29yKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcG9zZXMtbXVzdC1i
ZS1saW1pdGVkCitib29sIFdlYlhSRnJhbWU6Om11c3RQb3Nlc0JlTGltaXRlZChjb25zdCBXZWJY
UlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlKSBjb25zdAoreworICAg
IGlmIChpc091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5kZWRSZWZlcmVuY2VTcGFjZShzcGFjZSwg
YmFzZVNwYWNlKQorICAgICAgICB8fCBpc091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5kZWRSZWZl
cmVuY2VTcGFjZShiYXNlU3BhY2UsIHNwYWNlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBpZiAoaXNMb2NhbFJlZmVyZW5jZVNwYWNlKHNwYWNlKSB8fCBpc0xvY2FsUmVmZXJlbmNlU3Bh
Y2UoYmFzZVNwYWNlKSkgeworICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGRpc3RhbmNlIGJldHdl
ZW4gbmF0aXZlIG9yaWdpbnMgb2Ygc3BhY2VzIGlzIGdyZWF0ZXIKKyAgICAgICAgLy8gdGhhbiAx
NW0gKHN1Z2dlc3RlZCBieSBzcGVjcykgcmV0dXJuIHRydWUuCisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCisKK3N0cnVjdCBXZWJYUkZyYW1lOjpQb3B1bGF0ZWRQb3NlIHsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9u
IHsgZmFsc2UgfTsKK307CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI3BvcHVsYXRlLXRoZS1wb3NlCitFeGNlcHRpb25PcjxPcHRpb25hbDxXZWJYUkZyYW1lOjpQ
b3B1bGF0ZWRQb3NlPj4gV2ViWFJGcmFtZTo6cG9wdWxhdGVQb3NlKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgV2ViWFJTcGFjZSYgc3BhY2UsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VT
cGFjZSkKK3sKKyAgICAvLyAxLiBJZiBmcmFtZeKAmXMgYWN0aXZlIGJvb2xlYW4gaXMgZmFsc2Us
IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBp
ZiAoIW1fYWN0aXZlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKKworICAgIC8vIDIuIExldCBzZXNzaW9uIGJlIGZyYW1l4oCZcyBzZXNzaW9uIG9iamVj
dC4KKyAgICAvLyAzLiBJZiBzcGFjZeKAmXMgc2Vzc2lvbiBkb2VzIG5vdCBlcXVhbCBzZXNzaW9u
LCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAg
aWYgKCZzcGFjZS5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIDQuIElmIGJhc2VTcGFj
ZeKAmXMgc2Vzc2lvbiBkb2VzIG5vdCBlcXVhbCBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCZiYXNlU3BhY2Uuc2Vzc2lv
bigpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyA1LiBDaGVjayBpZiBwb3NlcyBtYXkgYmUgcmVwb3J0
ZWQgYW5kLCBpZiBub3QsIHRocm93IGEgU2VjdXJpdHlFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3Rl
cHMuCisgICAgaWYgKCFtX3Nlc3Npb24tPnBvc2VzQ2FuQmVSZXBvcnRlZChkb2N1bWVudCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH07CisKKyAgICAvLyA2LiBM
ZXQgbGltaXQgYmUgdGhlIHJlc3VsdCBvZiB3aGV0aGVyIHBvc2VzIG11c3QgYmUgbGltaXRlZCBi
ZXR3ZWVuIHNwYWNlIGFuZCBiYXNlU3BhY2UuCisgICAgYm9vbCBsaW1pdCA9IG11c3RQb3Nlc0Jl
TGltaXRlZChzcGFjZSwgYmFzZVNwYWNlKTsKKworICAgIC8vIDcuIExldCB0cmFuc2Zvcm0gYmUg
cG9zZeKAmXMgdHJhbnNmb3JtLgorICAgIC8vIDguIFF1ZXJ5IHRoZSBYUiBkZXZpY2UncyB0cmFj
a2luZyBzeXN0ZW0gZm9yIHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZlIHRvIGJhc2VTcGFjZSBhdCB0
aGUgZnJhbWXigJlzIHRpbWUuCisKKyAgICBpZiAoIW1fZGF0YS5pc1RyYWNraW5nVmFsaWQpIHsK
KyAgICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZlIHRvIGJh
c2VTcGFjZSBoYXMgYmVlbiBkZXRlcm1pbmVkIGluIHRoZSBwYXN0LgorICAgICAgICAvLyBBbnl3
YXkgdGhpcyBlbXVsYXRpb24gaXMgdXN1YWxseSBwcm92aWRlZCBieSB0aGUgc3lzdGVtIGluIHRo
ZSBwb3NlIChlLmcuIE9wZW5YUikKKyAgICAgICAgLy8gc28gd2Ugc2hvdWxkbid0IGhpdCB0aGlz
IHBhdGggaW4gbW9zdCBYUlBsYXRmb3JtIHBvcnRzLgorICAgICAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQgfTsKKyAgICB9CisKKyAgICBhdXRvIGJhc2VUcmFuc2Zvcm0gPSBiYXNlU3BhY2UuZWZm
ZWN0aXZlT3JpZ2luKCk7CisgICAgaWYgKCFiYXNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQor
ICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0g
ICpiYXNlVHJhbnNmb3JtLmludmVyc2UoKSAqIHNwYWNlLmVmZmVjdGl2ZU9yaWdpbigpOworICAg
IGNvbnN0IGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IG1fZGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQg
fHwgIW1fZGF0YS5pc1Bvc2l0aW9uVmFsaWQ7CisKKyAgICBpZiAobGltaXQpIHsKKyAgICAgICAg
Ly8gRklYTUU6IGFwcGx5IHBvc2UgbGltaXRzIGxvZ2ljCisgICAgICAgIC8vIGh0dHBzOi8vaW1t
ZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Bvc2VzLW11c3QtYmUtbGltaXRlZAorICAgIH0K
KworICAgIHJldHVybiB7IFBvcHVsYXRlZFBvc2UgeyB0cmFuc2Zvcm0sIGVtdWxhdGVkUG9zaXRp
b24gfSB9OworfQorCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNk
b20teHJmcmFtZS1nZXR2aWV3ZXJwb3NlCitFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3ZXJQ
b3NlPj4gV2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9zZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmIHJlZmVyZW5jZVNwYWNlKQoreworICAgIC8vIDEu
IExldCBmcmFtZSBiZSB0aGlzLgorICAgIC8vIDIuIExldCBzZXNzaW9uIGJlIGZyYW1l4oCZcyBz
ZXNzaW9uIG9iamVjdC4KKyAgICAvLyAzLiBJZiBmcmFtZeKAmXMgYW5pbWF0aW9uRnJhbWUgYm9v
bGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgorICAgIGlmICghbV9pc0FuaW1hdGlvbkZyYW1lKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIDQuIExldCBwb3NlIGJlIGEg
bmV3IFhSVmlld2VyUG9zZSBvYmplY3QgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNlc3Npb24u
CisgICAgLy8gNS4gUG9wdWxhdGUgdGhlIHBvc2Ugb2Ygc2Vzc2lvbuKAmXMgdmlld2VyIHJlZmVy
ZW5jZSBzcGFjZSBpbiByZWZlcmVuY2VTcGFjZSBhdCB0aGUgdGltZSByZXByZXNlbnRlZCBieSBm
cmFtZSBpbnRvIHBvc2UuCisgICAgYXV0byBwb3B1bGF0ZVBvc2VSZXN1bHQgPSBwb3B1bGF0ZVBv
c2UoZG9jdW1lbnQsIG1fc2Vzc2lvbi0+dmlld2VyUmVmZXJlbmNlU3BhY2UoKSwgcmVmZXJlbmNl
U3BhY2UpOworICAgIGlmIChwb3B1bGF0ZVBvc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAg
Ly8gNi4gSWYgcG9zZSBpcyBudWxsIHJldHVybiBudWxsLgorICAgIGF1dG8gcG9wdWxhdGVWYWx1
ZSA9IHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIXBv
cHVsYXRlVmFsdWUuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBS
ZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBwb3NlID0gV2ViWFJWaWV3ZXJQb3NlOjpjcmVhdGUoV2Vi
WFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKHBvcHVsYXRlVmFsdWUtPnRyYW5zZm9ybSksIHBvcHVs
YXRlVmFsdWUtPmVtdWxhdGVkUG9zaXRpb24pOworCisgICAgLy8gNy4gTGV0IHhydmlld3MgYmUg
YW4gZW1wdHkgbGlzdC4KKyAgICBWZWN0b3I8UmVmPFdlYlhSVmlldz4+IHhyVmlld3M7CisgICAg
Ly8gOC4gRm9yIGVhY2ggYWN0aXZlIHZpZXcgdmlldyBpbiB0aGUgbGlzdCBvZiB2aWV3cyBvbiBz
ZXNzaW9uLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisgICAgZm9yIChhdXRvJiB2aWV3
IDogbV9zZXNzaW9uLT52aWV3cygpKSB7CisgICAgICAgIGF1dG8gaW5kZXggPSB4clZpZXdzLnNp
emUoKTsKKyAgICAgICAgaWYgKCF2aWV3LmFjdGl2ZSB8fCBtX2RhdGEudmlld3Muc2l6ZSgpIDw9
IGluZGV4KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gOC4xIExldCB4cnZp
ZXcgYmUgYSBuZXcgWFJWaWV3IG9iamVjdCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Ygc2Vzc2lv
bi4KKyAgICAgICAgLy8gOC4yIEluaXRpYWxpemUgeHJ2aWV34oCZcyB1bmRlcmx5aW5nIHZpZXcg
dG8gdmlldy4KKyAgICAgICAgLy8gOC4zIEluaXRpYWxpemUgeHJ2aWV34oCZcyBleWUgdG8gdmll
d+KAmXMgZXllLgorICAgICAgICAvLyA4LjQgSW5pdGlhbGl6ZSB4cnZpZXfigJlzIGZyYW1lIHRp
bWUgdG8gZnJhbWXigJlzIHRpbWUuCisgICAgICAgIC8vIDguNSBJbml0aWFsaXplIHhydmlld+KA
mXMgc2Vzc2lvbiB0byBzZXNzaW9uLgorICAgICAgICAvLyA4LjYuIExldCBvZmZzZXQgYmUgYW4g
bmV3IFhSUmlnaWRUcmFuc2Zvcm0gb2JqZWN0IGVxdWFsIHRvIHRoZSB2aWV3IG9mZnNldCBvZiB2
aWV3IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBzZXNzaW9uLgorICAgICAgICAvLyA4LjcuIFNl
dCB4cnZpZXfigJlzIHRyYW5zZm9ybSBwcm9wZXJ0eSB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5
aW5nIHRoZSBYUlZpZXdlclBvc2UncyB0cmFuc2Zvcm0gYnkgdGhlIG9mZnNldCB0cmFuc2Zvcm0g
aW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNlc3Npb24KKyAgICAgICAgYXV0byBvZmZzZXQgPSBt
YXRyaXhGcm9tUG9zZShtX2RhdGEudmlld3NbaW5kZXhdLm9mZnNldCk7CisgICAgICAgIGF1dG8g
dHJhbnNmb3JtID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKHBvc2UtPnRyYW5zZm9ybSgp
LnJhd1RyYW5zZm9ybSgpICogb2Zmc2V0KTsKKworICAgICAgICAvLyBTZXQgcHJvamVjdGlvbiBt
YXRyaXggZm9yIGVhY2ggdmlldworICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LCAxNj4gcHJvamVj
dGlvbiA9IHN3aXRjaE9uKG1fZGF0YS52aWV3c1tpbmRleF0ucHJvamVjdGlvbiwgWyZdKGNvbnN0
IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3YmIGZvdikgeworICAgICAgICAgICAg
ZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7CisgICAg
ICAgICAgICBkb3VibGUgZmFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRoRmFyKCk7
CisgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9u
KGZvdi51cCwgZm92LmRvd24sIGZvdi5sZWZ0LCBmb3YucmlnaHQsIG5lYXIsIGZhcikudG9Db2x1
bW5NYWpvckZsb2F0QXJyYXkoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IHN0ZDo6YXJyYXk8Zmxv
YXQsIDE2PiYgbWF0cml4KSB7CisgICAgICAgICAgICByZXR1cm4gbWF0cml4OworICAgICAgICB9
LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CisgICAgICAgICAgICAvLyBVc2UgYXNwZWN0IHByb2pl
Y3Rpb24gZm9yIGlubGluZSBzZXNzaW9ucworICAgICAgICAgICAgZG91YmxlIGZvdiA9ICBtX3Nl
c3Npb24tPnJlbmRlclN0YXRlKCkuaW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpLnZhbHVlT3Io
cGlPdmVyVHdvRG91YmxlKTsKKyAgICAgICAgICAgIGZsb2F0IGFzcGVjdCA9IDE7CisgICAgICAg
ICAgICBhdXRvIGxheWVyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmJhc2VMYXllcigpOwor
ICAgICAgICAgICAgaWYgKGxheWVyKQorICAgICAgICAgICAgICAgIGFzcGVjdCA9IHN0YXRpY19j
YXN0PGRvdWJsZT4obGF5ZXItPmZyYW1lYnVmZmVyV2lkdGgoKSkgLyBzdGF0aWNfY2FzdDxkb3Vi
bGU+KGxheWVyLT5mcmFtZWJ1ZmZlckhlaWdodCgpKTsKKyAgICAgICAgICAgIGRvdWJsZSBuZWFy
ID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRoTmVhcigpOworICAgICAgICAgICAgZG91
YmxlIGZhciA9IG1fc2Vzc2lvbi0+cmVuZGVyU3RhdGUoKS5kZXB0aEZhcigpOworICAgICAgICAg
ICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpmcm9tUHJvamVjdGlvbihmb3YsIGFzcGVj
dCwgbmVhciwgZmFyKS50b0NvbHVtbk1ham9yRmxvYXRBcnJheSgpOworICAgICAgICB9KTsKKwor
ICAgICAgICBhdXRvIHhyVmlldyA9IFdlYlhSVmlldzo6Y3JlYXRlKHZpZXcuZXllLCBXVEZNb3Zl
KHRyYW5zZm9ybSksIEZsb2F0MzJBcnJheTo6Y3JlYXRlKHByb2plY3Rpb24uZGF0YSgpLCBwcm9q
ZWN0aW9uLnNpemUoKSkpOworCisgICAgICAgIC8vICA4LjguIEFwcGVuZCB4cnZpZXcgdG8geHJ2
aWV3cworICAgICAgICB4clZpZXdzLmFwcGVuZChXVEZNb3ZlKHhyVmlldykpOworICAgIH0KKwor
ICAgIC8vIDkuIFNldCBwb3Nl4oCZcyB2aWV3cyB0byB4cnZpZXdzCisgICAgcG9zZS0+c2V0Vmll
d3MoV1RGTW92ZSh4clZpZXdzKSk7CisKKyAgICAvLyAxMC4gUmV0dXJuIHBvc2UuCisgICAgcmV0
dXJuIHBvc2U7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBXZWJYUkZyYW1l
OjpnZXRQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgV2ViWFJTcGFjZSYgc3Bh
Y2UsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSkKIHsKLSAgICByZXR1cm4geyB9OworICAg
IC8vIDEuIExldCBmcmFtZSBiZSB0aGlzLgorICAgIC8vIDIuIExldCBwb3NlIGJlIGEgbmV3IFhS
UG9zZSBvYmplY3QgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIGZyYW1lLgorICAgIC8vIDMuIFBv
cHVsYXRlIHRoZSBwb3NlIG9mIHNwYWNlIGluIGJhc2VTcGFjZSBhdCB0aGUgdGltZSByZXByZXNl
bnRlZCBieSBmcmFtZSBpbnRvIHBvc2UuCisKKyAgICBhdXRvIHBvcHVsYXRlUG9zZVJlc3VsdCA9
IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgc3BhY2UsIGJhc2VTcGFjZSk7CisgICAgaWYgKHBvcHVs
YXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHBvcHVsYXRlUG9z
ZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIHBvcHVsYXRlVmFsdWUgPSBw
b3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKCFwb3B1bGF0
ZVZhbHVlLmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gNC4g
UmV0dXJuIHBvc2UuCisgICAgcmV0dXJuIFJlZlB0cjxXZWJYUlBvc2U+KFdlYlhSUG9zZTo6Y3Jl
YXRlKFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShwb3B1bGF0ZVZhbHVlLT50cmFuc2Zvcm0p
LCBwb3B1bGF0ZVZhbHVlLT5lbXVsYXRlZFBvc2l0aW9uKSk7CiB9CiAKLVJlZlB0cjxXZWJYUlBv
c2U+IFdlYlhSRnJhbWU6OmdldFBvc2UoY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3Bh
Y2UmKQorVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2UmIHBvc2UpCiB7Ci0gICAgcmV0
dXJuIHsgfTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7CisgICAgbWF0cml4LnRy
YW5zbGF0ZTNkKHBvc2UucG9zaXRpb24ueCgpLCBwb3NlLnBvc2l0aW9uLnkoKSwgcG9zZS5wb3Np
dGlvbi56KCkpOworICAgIG1hdHJpeC5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJv
bVF1YXRlcm5pb24ocG9zZS5vcmllbnRhdGlvbi54LCBwb3NlLm9yaWVudGF0aW9uLnksIHBvc2Uu
b3JpZW50YXRpb24ueiwgcG9zZS5vcmllbnRhdGlvbi53KSk7CisgICAgcmV0dXJuIG1hdHJpeDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuaAppbmRleCAyYTI2YWQ4NmEyYzMwZGE4YzIzZGZiNmM3YmJiOTAzODJkMTJl
MDVkLi43MTk2NGMxYzRjMjE5ZDU4NjE4MmQ2YTQ2ZWMxZjA1YjQxNTczMDYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtMjgsNiArMjgsOCBAQAogI2lm
IEVOQUJMRShXRUJYUikKIAogI2luY2x1ZGUgIkRPTUhpZ2hSZXNUaW1lU3RhbXAuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC0zNSw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBXZWJYUlBvc2U7CiBjbGFzcyBXZWJYUlJlZmVyZW5jZVNwYWNl
OwogY2xhc3MgV2ViWFJTZXNzaW9uOwpAQCAtNDQsMjMgKzQ3LDM4IEBAIGNsYXNzIFdlYlhSVmll
d2VyUG9zZTsKIGNsYXNzIFdlYlhSRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkZyYW1l
PiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUkZyYW1lKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAg
ICBlbnVtIGNsYXNzIElzQW5pbWF0aW9uRnJhbWUgOiBib29sIHsgTm8sIFllcyB9OworICAgIHN0
YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYsIElzQW5pbWF0
aW9uRnJhbWUpOwogICAgIH5XZWJYUkZyYW1lKCk7CiAKICAgICBjb25zdCBXZWJYUlNlc3Npb24m
IHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KIAotICAgIFJlZlB0
cjxXZWJYUlZpZXdlclBvc2U+IGdldFZpZXdlclBvc2UoY29uc3QgV2ViWFJSZWZlcmVuY2VTcGFj
ZSYpOwotICAgIFJlZlB0cjxXZWJYUlBvc2U+IGdldFBvc2UoY29uc3QgV2ViWFJTcGFjZSYsIGNv
bnN0IFdlYlhSU3BhY2UmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3ZXJQb3Nl
Pj4gZ2V0Vmlld2VyUG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFdlYlhSUmVmZXJlbmNlU3Bh
Y2UmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJQb3NlPj4gZ2V0UG9zZShjb25zdCBE
b2N1bWVudCYsIGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CiAKICAgICB2
b2lkIHNldFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0K
KyAgICB2b2lkIHNldEZyYW1lRGF0YShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGRh
dGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQorCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpIHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0KICAgICBib29sIGlzQWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KIAorICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtYXRyaXhGcm9tUG9zZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9z
ZSYpOworCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lv
bj4mJik7CisgICAgZXhwbGljaXQgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmLCBJc0Fu
aW1hdGlvbkZyYW1lKTsKKyAgICBXZWJYUkZyYW1lKFdlYlhSU2Vzc2lvbiYsIGJvb2wgaXNBbmlt
YXRpb25GcmFtZSk7CisKKyAgICBib29sIGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJl
ZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJikgY29uc3Q7
CisgICAgYm9vbCBpc0xvY2FsUmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYpIGNvbnN0
OworICAgIGJvb2wgbXVzdFBvc2VzQmVMaW1pdGVkKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBX
ZWJYUlNwYWNlJikgY29uc3Q7CisKKyAgICBzdHJ1Y3QgUG9wdWxhdGVkUG9zZTsKKyAgICBFeGNl
cHRpb25PcjxPcHRpb25hbDxQb3B1bGF0ZWRQb3NlPj4gcG9wdWxhdGVQb3NlKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogICAgIGJvb2wg
bV9hY3RpdmUgeyBmYWxzZSB9OwotICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgbV90aW1lOworICAg
IGJvb2wgbV9pc0FuaW1hdGlvbkZyYW1lIHsgZmFsc2UgfTsKKyAgICBET01IaWdoUmVzVGltZVN0
YW1wIG1fdGltZSB7IDAgfTsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBtX2Rh
dGE7CiAgICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwKaW5kZXggMjFmY2YzY2ZlNGQ5Yzc1ZmQ3
ZjQ2OGU0OTdkYjhlODAwN2I4YWRmMi4uZDM0MDI2NWIyMmQ4ODkyM2VlMmRjMjVhNzdkZGI4Mzc5
ZGE1NDBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZy
YW1lLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaWRs
CkBAIC0zMyw2ICszMyw2IEBACiBdIGludGVyZmFjZSBXZWJYUkZyYW1lIHsKICAgICBbU2FtZU9i
amVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSU2Vzc2lvbiBzZXNzaW9uOwogCi0gICAgV2Vi
WFJWaWV3ZXJQb3NlPyBnZXRWaWV3ZXJQb3NlKFdlYlhSUmVmZXJlbmNlU3BhY2UgcmVmZXJlbmNl
U3BhY2UpOwotICAgIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNwYWNlIHNwYWNlLCBXZWJYUlNw
YWNlIGJhc2VTcGFjZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBDYWxsV2l0aD1Eb2N1bWVu
dF0gV2ViWFJWaWV3ZXJQb3NlPyBnZXRWaWV3ZXJQb3NlKFdlYlhSUmVmZXJlbmNlU3BhY2UgcmVm
ZXJlbmNlU3BhY2UpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9RG9jdW1lbnRd
IFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNwYWNlIHNwYWNlLCBXZWJYUlNwYWNlIGJhc2VTcGFj
ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBv
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuY3BwCmluZGV4
IDFjNWY4MGE1NDQ1NWNiZThmY2IwNzJkNTQ3YjMxOTZhOTg4Nzg2NTguLjMzOTlkOGFlNTAwM2Uy
YWU0M2MwMWU0NmJkMDMzYjA5MTNiMjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJQb3NlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSUG9zZS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlBvc2UpOwogCi1SZWY8V2ViWFJQ
b3NlPiBXZWJYUlBvc2U6OmNyZWF0ZSgpCitSZWY8V2ViWFJQb3NlPiBXZWJYUlBvc2U6OmNyZWF0
ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0ZWRQb3Np
dGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlBvc2UpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlhSUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9z
aXRpb24pKTsKIH0KIAotV2ViWFJQb3NlOjpXZWJYUlBvc2UoKQotICAgIDogbV90cmFuc2Zvcm0o
V2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCitXZWJYUlBvc2U6OldlYlhSUG9zZShSZWY8
V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikK
KyAgICA6IG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSksIG1fZW11bGF0ZWRQb3NpdGlv
bihlbXVsYXRlZFBvc2l0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlBvc2UuaAppbmRleCAyOTkxOWQyNGMzOTUzYWEzOWEyYzQ4OTRiYzdjY2U1YzI5YzE3ZTZh
Li5lYzU3OTA2ODMxNjQyNWQ4ZTk4MjMzMTk3YjY5OTBiNDE4Y2JhMWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFnbWEg
b25jZQogCiAjaWYgRU5BQkxFKFdFQlhSKQotCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzgs
MTQgKzM3LDE2IEBAIGNsYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm07CiBjbGFzcyBXZWJYUlBvc2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlBvc2U+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFdlYlhSUG9zZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlBvc2U+IGNyZWF0
ZSgpOwotICAgIH5XZWJYUlBvc2UoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSUG9zZT4gY3JlYXRl
KFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRpb24pOworICAg
IHZpcnR1YWwgfldlYlhSUG9zZSgpOwogCiAgICAgY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYg
dHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKCkgY29uc3Q7CiAK
KyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3ZXJQb3NlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KwogcHJvdGVjdGVkOgotICAgIFdlYlhSUG9zZSgpOworICAgIFdlYlhSUG9zZShSZWY8V2ViWFJS
aWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKIAogICAgIFJlZjxXZWJY
UlJpZ2lkVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKICAgICBib29sIG1fZW11bGF0ZWRQb3NpdGlv
biB7IGZhbHNlIH07CkBAIC01Myw0ICs1NCw5IEBAIHByb3RlY3RlZDoKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCWFJQT1NFKFRv
VmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSAgICAgICAgICAgICAgICAgICAgXAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5hbWUpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6V2ViWFJQb3NlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LnByZWRpY2F0ZTsgfSBcCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwKaW5kZXggNGM0ZTlkYWRj
OGVhMGFmMzE1MTg2OTQxOTNiOTI0OTY0NDc4ODAyNi4uMmU1YjM4NjRlNTk4Mjc4MmE3OTVjZWI5
YmQ3YzRlMThkNmRlMjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlBvc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQ
b3NlLmlkbApAQCAtMjgsNyArMjgsNiBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAgIFNl
Y3VyZUNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3csCi0gICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKICAgICBJbnRlcmZhY2VOYW1lPVhSUG9zZQogXSBpbnRlcmZhY2UgV2ViWFJQb3Nl
IHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSUmlnaWRUcmFuc2Zv
cm0gdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDViYjBlODFmOTJjNTg5YWM3ZmM2Yjc1NzEzNjUy
NWFmMDJjYTc5Ni4uNzAxZTljNzRhMDlmYjM5OWI1MDIzMGMyNTVmNmZiZDI0MjNkODlkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3Bh
Y2UuY3BwCkBAIC0yOSwzNCArMjksMTAwIEBACiAjaWYgRU5BQkxFKFdFQlhSKQogCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJS
aWdpZFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNv
bnN0ZXhwciBkb3VibGUgRGVmYXVsdFVzZXJIZWlnaHRJbk1ldGVycyA9IDEuNjU7CisKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlJlZmVyZW5jZVNwYWNlKTsKIAotUmVmPFdlYlhS
UmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUg
dHlwZSkKK1JlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIFhSUmVmZXJlbmNl
U3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVu
Y2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlwZSkpOworICAgIC8vIGh0dHBz
Oi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyc3BhY2UtbmF0aXZlLW9yaWdpbgor
ICAgIC8vIFRoZSB0cmFuc2Zvcm0gZnJvbSB0aGUgZWZmZWN0aXZlIHNwYWNlIHRvIHRoZSBuYXRp
dmUgb3JpZ2luJ3Mgc3BhY2UgaXMKKyAgICAvLyBkZWZpbmVkIGJ5IGFuIG9yaWdpbiBvZmZzZXQs
IHdoaWNoIGlzIGFuIFhSUmlnaWRUcmFuc2Zvcm0gaW5pdGlhbGx5IHNldAorICAgIC8vIHRvIGFu
IGlkZW50aXR5IHRyYW5zZm9ybS4KKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlZmVy
ZW5jZVNwYWNlKGRvY3VtZW50LCBzZXNzaW9uLCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUo
KSwgdHlwZSkpOwogfQogCi1XZWJYUlJlZmVyZW5jZVNwYWNlOjpXZWJYUlJlZmVyZW5jZVNwYWNl
KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVy
ZW5jZVNwYWNlVHlwZSB0eXBlKQotICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwgV1RGTW92ZShz
ZXNzaW9uKSkKK1JlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24sIFJlZjxXZWJY
UlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBz
ZXNzaW9uLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsKK30KKworV2ViWFJSZWZlcmVuY2VTcGFj
ZTo6V2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYg
c2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNw
YWNlVHlwZSB0eXBlKQorICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwgc2Vzc2lvbiwgV1RGTW92
ZShvZmZzZXQpKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CiAKIFdlYlhSUmVmZXJlbmNlU3Bh
Y2U6On5XZWJYUlJlZmVyZW5jZVNwYWNlKCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8V2ViWFJSZWZl
cmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2Uo
Y29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYpCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhS
UmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggaWRlbnRpdHk7CisKKyAgICAvLyBXZSBhc3N1bWUgdGhhdCBwb3NlcyBnb3QgZnJv
bSB0aGUgZGV2aWNlcyBhcmUgaW4gbG9jYWwgc3BhY2UuCisgICAgLy8gVGhpcyB3aWxsIHJlcXVp
cmUgbW9yZSBjb21wbGV4IGxvZ2ljIGlmIHdlIGFkZCBwb3J0cyB3aXRoIGRpZmZlcmVudCBkZWZh
dWx0IGNvb3JkaW5hdGVzLgorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBYUlJlZmVy
ZW5jZVNwYWNlVHlwZTo6Vmlld2VyOiB7CisgICAgICAgIC8vIFJldHVybiB0aGUgY3VycmVudCBw
b3NlLiBDb250ZW50IHJlbmRlcmVkIGluIHZpZXdlciBwb3NlIHdpbGwgc3RheSBpbiBmaXhlZCBw
b2ludCBvbiBITURzLgorICAgICAgICBhdXRvJiBkYXRhID0gbV9zZXNzaW9uLmZyYW1lRGF0YSgp
OworICAgICAgICByZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoZGF0YS5vcmlnaW4p
OworICAgIH0KKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbDoKKyAgICAgICAg
Ly8gRGF0YSBmcm9tIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBpbiBsb2NhbCwgdXNlIHRoZSBpZGVu
dGl0eSBtYXRyaXguCisgICAgICAgIHJldHVybiBpZGVudGl0eTsKKyAgICBjYXNlIFhSUmVmZXJl
bmNlU3BhY2VUeXBlOjpVbmJvdW5kZWQ6CisgICAgICAgIC8vIExvY2FsIGFuZCB1bmJvdW5kZWQg
dXNlIHRoZSBzYW1lIGRldmljZSBzcGFjZSwgdXNlIHRoZSBpZGVudGl0eSBtYXRyaXguCisgICAg
ICAgIHJldHVybiBpZGVudGl0eTsKKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2Nh
bEZsb29yOiB7CisgICAgICAgIC8vIFVzZSB0aGUgZmxvb3IgdHJhbnNmb3JtIHByb3ZpZGVkIGJ5
IHRoZSBkZXZpY2Ugb3IgZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGhlaWdodC4KKyAgICAgICAgcmV0
dXJuIGZsb29yT3JpZ2luVHJhbnNmb3JtKCk7CisgICAgfQorICAgIGNhc2UgWFJSZWZlcmVuY2VT
cGFjZVR5cGU6OkJvdW5kZWRGbG9vcjoKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBCb3VuZGVk
Rmxvb3IgaXMgaGFuZGxlZCBieSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSBzdWJjbGFzcwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVy
biBpZGVudGl0eTsKK30KKworUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVmZXJl
bmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zv
cm0mIG9mZnNldFRyYW5zZm9ybSkKIHsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKGlzPERvY3VtZW50PihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpKTsKLSAgICByZXR1cm4gY3JlYXRlKGRvd25jYXN0PERvY3Vt
ZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSwgbV9zZXNzaW9uLmNvcHlSZWYoKSwgbV90
eXBlKTsKKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2Rv
bS14cnJlZmVyZW5jZXNwYWNlLWdldG9mZnNldHJlZmVyZW5jZXNwYWNlCisgICAgLy8gU2V0IG9m
ZnNldFNwYWNl4oCZcyBvcmlnaW4gb2Zmc2V0IHRvIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcg
YmFzZeKAmXMgb3JpZ2luIG9mZnNldCBieSBvcmlnaW5PZmZzZXQgaW4gdGhlIHJlbGV2YW50IHJl
YWxtIG9mIGJhc2UuCisgICAgYXV0byBvZmZzZXQgPSBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVh
dGUobV9vcmlnaW5PZmZzZXQtPnJhd1RyYW5zZm9ybSgpICogb2Zmc2V0VHJhbnNmb3JtLnJhd1Ry
YW5zZm9ybSgpKTsKKworICAgIHJldHVybiBjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpLCBtX3Nlc3Npb24sIFdURk1vdmUob2Zmc2V0KSwgbV90eXBl
KTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJSZWZlcmVuY2VTcGFjZTo6Zmxvb3JP
cmlnaW5UcmFuc2Zvcm0oKSBjb25zdAoreworICAgIGF1dG8mIGRhdGEgPSBtX3Nlc3Npb24uZnJh
bWVEYXRhKCk7CisgICAgaWYgKCFkYXRhLmZsb29yVHJhbnNmb3JtKSB7CisgICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGRlZmF1dFRyYW5zZm9ybTsKKyAgICAgICAgZGVmYXV0VHJhbnNmb3Jt
LnRyYW5zbGF0ZTNkKDAuMCwgLURlZmF1bHRVc2VySGVpZ2h0SW5NZXRlcnMsIDAuMCk7CisgICAg
ICAgIHJldHVybiBkZWZhdXRUcmFuc2Zvcm07CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9pbW1l
cnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhycmVmZXJlbmNlc3BhY2V0eXBlLWxvY2Fs
LWZsb29yCisgICAgLy8gR2V0IGZsb29yIGVzdGltYXRpb24gZnJvbSB0aGUgZGV2aWNlCisgICAg
Ly8gRklYTUU6IFJvdW5kIHRvIG5lYXJlc3QgMWNtIHRvIHByZXZlbnQgZmluZ2VycHJpbnRpbmcK
KyAgICByZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoKmRhdGEuZmxvb3JUcmFuc2Zv
cm0pOwogfQogCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZl
cmVuY2VTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5j
ZVNwYWNlLmgKaW5kZXggYTJjODA1MWY1OWMyMjdkODc3Nzk1YzJiYjhmNmU3MzYzZGU4ZjNlMy4u
MjgxYWQ1MzMyNjZiZTczMDhiNDRmZTkxNDE0Mjc2M2U5MjI0YmY0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmgKQEAgLTQwLDE4
ICs0MCwyNyBAQCBjbGFzcyBXZWJYUlNlc3Npb247CiBjbGFzcyBXZWJYUlJlZmVyZW5jZVNwYWNl
IDogcHVibGljIFdlYlhSU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJS
ZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNw
YWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNw
YWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9j
dW1lbnQmLCBXZWJYUlNlc3Npb24mLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGlj
IFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24m
LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAg
ICAgdmlydHVhbCB+V2ViWFJSZWZlcmVuY2VTcGFjZSgpOwogCi0gICAgUmVmUHRyPFdlYlhSUmVm
ZXJlbmNlU3BhY2U+IGdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFu
c2Zvcm0mKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBnZXRPZmZz
ZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJik7CisgICAgWFJSZWZl
cmVuY2VTcGFjZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgV2Vi
WFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYsIFJlZjxXZWJYUlJpZ2lk
VHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKIHByb3RlY3RlZDoKLSAgICBX
ZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgWFJSZWZl
cmVuY2VTcGFjZVR5cGUpOworICAgIGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsb29yT3JpZ2lu
VHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICBYUlJlZmVyZW5jZVNwYWNlVHlwZSBtX3R5cGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VC
WFJTUEFDRShXZWJYUlJlZmVyZW5jZVNwYWNlLCBpc1JlZmVyZW5jZVNwYWNlKCkpCisKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbAppbmRleCAyODM1MDdmNDQ1YTUyZmUyZTE3MTk2NmY1
MDczYmMxM2I0OWZjNTNiLi44MWU0NGQzNGRhMTY3YjhmZTZkYjIzNGMyNDBjOTM4NTYzNTI1OTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNl
U3BhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVu
Y2VTcGFjZS5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCisgICAg
U2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgSW50ZXJmYWNlTmFtZT1YUlJlZmVyZW5jZVNwYWNl
CiBdIGludGVyZmFjZSBXZWJYUlJlZmVyZW5jZVNwYWNlIDogV2ViWFJTcGFjZSB7CiAgICAgW05l
d09iamVjdF0gV2ViWFJSZWZlcmVuY2VTcGFjZSBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShXZWJY
UlJpZ2lkVHJhbnNmb3JtIG9yaWdpbk9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggYmQ2YzUwMWNiN2VjNWE3MWNiN2E3MDdiMTk5
OWZkOWJhOTI4OGIyYy4uOTdlYTM2MDEwNGNkYjQxNWFhOGJlOGUzNTg4NzE1NTllODQ3NWRkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAt
MjgsMTEgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU1dlYlhSUmVmZXJlbmNl
U3BhY2UuaCIKICNpbmNsdWRlICJXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oIgogI2luY2x1
ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUlN5c3RlbS5oIgorI2luY2x1ZGUgIldl
YlhSVmlldy5oIgogI2luY2x1ZGUgIlhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCIKICNpbmNsdWRl
ICJYUlJlbmRlclN0YXRlSW5pdC5oIgogI2luY2x1ZGUgIlhSU2Vzc2lvbkV2ZW50LmgiCkBAIC01
NSw3ICs1Nyw5IEBAIFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX21vZGUobW9kZSkK
ICAgICAsIG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCiAgICAgLCBtX2FjdGl2ZVJlbmRl
clN0YXRlKFdlYlhSUmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKKyAgICAsIG1fdmlld2VyUmVm
ZXJlbmNlU3BhY2UoZG9jdW1lbnQsICp0aGlzLCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUo
KSwgWFJSZWZlcmVuY2VTcGFjZVR5cGU6OlZpZXdlcikKICAgICAsIG1fdGltZU9yaWdpbihNb25v
dG9uaWNUaW1lOjpub3coKSkKKyAgICAsIG1fdmlld3MoZGV2aWNlLnZpZXdzKG1vZGUpKQogewog
ICAgIG1fZGV2aWNlLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcobW9kZSk7CiAgICAg
bV9kZXZpY2UtPnNldFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KG1ha2VXZWFrUHRyKCp0aGlz
KSk7CkBAIC0yMzAsOSArMjM0LDkgQEAgdm9pZCBXZWJYUlNlc3Npb246OnJlcXVlc3RSZWZlcmVu
Y2VTcGFjZShYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlLCBSZXF1ZXN0UmVmZXIKICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2NyZWF0ZS1hLXJl
ZmVyZW5jZS1zcGFjZQogICAgICAgICAgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IHJl
ZmVyZW5jZVNwYWNlOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5
cGU6OkJvdW5kZWRGbG9vcikKLSAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VSZWYoKnRoaXMpLCB0
eXBlKTsKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCB0eXBlKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICByZWZlcmVuY2VTcGFjZSA9IFdlYlhSUmVmZXJlbmNlU3BhY2U6
OmNyZWF0ZShkb2N1bWVudCwgbWFrZVJlZigqdGhpcyksIHR5cGUpOworICAgICAgICAgICAgICAg
IHJlZmVyZW5jZVNwYWNlID0gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKGRvY3VtZW50LCAq
dGhpcywgdHlwZSk7CiAKICAgICAgICAgICAgIC8vIDIuNS4gUmVzb2x2ZSBwcm9taXNlIHdpdGgg
cmVmZXJlbmNlU3BhY2UuCiAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUocmVmZXJlbmNlU3Bh
Y2UucmVsZWFzZU5vbk51bGwoKSk7CkBAIC00NzgsMTMgKzQ4MiwxNSBAQCB2b2lkIFdlYlhSU2Vz
c2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUXVldWUgYSB0YXNrIHRvIHBlcmZvcm0gdGhlIGZv
bGxvd2luZyBzdGVwcy4KLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6OldlYlhSLCBbdGhpcywgZnJhbWVEYXRhID0gV1RGTW92ZShmcmFtZURhdGEpXSgp
IHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Oldl
YlhSLCBbdGhpcywgZnJhbWVEYXRhID0gV1RGTW92ZShmcmFtZURhdGEpXSgpIG11dGFibGUgewog
ICAgICAgICBpZiAobV9lbmRlZCkKICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX2Zy
YW1lRGF0YSA9IGZyYW1lRGF0YTsKICAgICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0aGUgY3VycmVu
dCBoaWdoIHJlc29sdXRpb24gdGltZS4KICAgICAgICAgYXV0byBub3cgPSAoTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25kcygpOwogCi0gICAgICAgIGF1dG8g
ZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigqdGhpcykpOworICAgICAgICBhdXRv
IGZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRlKG1ha2VSZWYoKnRoaXMpLCBXZWJYUkZyYW1lOjpJ
c0FuaW1hdGlvbkZyYW1lOjpZZXMpOwogICAgICAgICAvLyAgMi5MZXQgZnJhbWUgYmUgc2Vzc2lv
buKAmXMgYW5pbWF0aW9uIGZyYW1lLgogICAgICAgICAvLyAgMy5TZXQgZnJhbWXigJlzIHRpbWUg
dG8gZnJhbWVUaW1lLgogICAgICAgICBmcmFtZS0+c2V0VGltZShzdGF0aWNfY2FzdDxET01IaWdo
UmVzVGltZVN0YW1wPihmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUpKTsKQEAgLTUwOCw3
ICs1MTQsNyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6
OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkKICAgICAgICAgICAgIGZyYW1lLT5zZXRBY3RpdmUodHJ1
ZSk7CiAKICAgICAgICAgICAgIC8vIDYuNC5BcHBseSBmcmFtZSB1cGRhdGVzIGZvciBmcmFtZS4K
LSAgICAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisgICAgICAgICAgICBmcmFtZS0+c2V0
RnJhbWVEYXRhKFdURk1vdmUoZnJhbWVEYXRhKSk7CiAKICAgICAgICAgICAgIC8vIDYuNS5Gb3Ig
ZWFjaCBlbnRyeSBpbiBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5uaW5nIGFuaW1h
dGlvbiBmcmFtZSBjYWxsYmFja3MsIGluIG9yZGVyOgogICAgICAgICAgICAgZm9yIChhdXRvJiBj
YWxsYmFjayA6IGNhbGxiYWNrcykgewpAQCAtNTM3LDYgKzU0MywyNSBAQCB2b2lkIFdlYlhSU2Vz
c2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkK
ICAgICB9KTsKIH0KIAorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8j
cG9zZXMtbWF5LWJlLXJlcG9ydGVkCitib29sIFdlYlhSU2Vzc2lvbjo6cG9zZXNDYW5CZVJlcG9y
dGVkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKK3sKKyAgICAvLyAxLiBJZiBzZXNz
aW9u4oCZcyByZWxldmFudCBnbG9iYWwgb2JqZWN0IGlzIG5vdCB0aGUgY3VycmVudCBnbG9iYWwg
b2JqZWN0LCByZXR1cm4gZmFsc2UuCisgICAgYXV0byogc2Vzc2lvbkRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFzZXNzaW9u
RG9jdW1lbnQgfHwgc2Vzc2lvbkRvY3VtZW50LT5kb21XaW5kb3coKSAhPSBkb2N1bWVudC5kb21X
aW5kb3coKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gMi4gSWYgc2Vzc2lvbidz
IHZpc2liaWxpdHlTdGF0ZSBpbiBub3QgInZpc2libGUiLCByZXR1cm4gZmFsc2UuCisgICAgaWYg
KG1fdmlzaWJpbGl0eVN0YXRlICE9IFhSVmlzaWJpbGl0eVN0YXRlOjpWaXNpYmxlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyA1LiBEZXRlcm1pbmUgaWYgdGhlIHBvc2UgZGF0YSBj
YW4gYmUgcmV0dXJuZWQgYXMgZm9sbG93czoKKyAgICAvLyBUaGUgcHJvY2VkdXJlIGluIHRoZSBz
cGVjcyB0cmllcyB0byBlbnN1cmUgdGhhdCB3ZSBhcHBseSBtZWFzdXJlcyB0bworICAgIC8vIHBy
ZXZlbnQgZmluZ2VycHJpbnRpbnQgaW4gcG9zZSBkYXRhIGFuZCByZXR1cm4gZmFsc2UgaW4gY2Fz
ZSB3ZSBkb24ndC4KKyAgICAvLyBXZSdyZSBnb2luZyB0byBhcHBseSB0aGVtIHNvIGxldCdzIGp1
c3QgcmV0dXJuIHRydWUuCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IGQ4MzYzYTVjOTMxY2Y1MGY3YjZlMzE5YWVlZGIz
ZThhMjMzNGZlZTUuLmYzNzg4ZGNjYWI4Mjc0ZjgxZDFlN2YxZGUxZmIwYzgwNTg2NWNjOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAtMzIsMTEg
KzMyLDExIEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJX
ZWJYUkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgiCisjaW5jbHVk
ZSAiV2ViWFJSZWZlcmVuY2VTcGFjZS5oIgogI2luY2x1ZGUgIldlYlhSUmVuZGVyU3RhdGUuaCIK
ICNpbmNsdWRlICJXZWJYUlNwYWNlLmgiCiAjaW5jbHVkZSAiWFJFbnZpcm9ubWVudEJsZW5kTW9k
ZS5oIgogI2luY2x1ZGUgIlhSSW50ZXJhY3Rpb25Nb2RlLmgiCi0jaW5jbHVkZSAiWFJSZWZlcmVu
Y2VTcGFjZVR5cGUuaCIKICNpbmNsdWRlICJYUlNlc3Npb25Nb2RlLmgiCiAjaW5jbHVkZSAiWFJW
aXNpYmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtNDgs
OCArNDgsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBYUkZyYW1lUmVxdWVzdENh
bGxiYWNrOwotY2xhc3MgV2ViWFJSZWZlcmVuY2VTcGFjZTsKIGNsYXNzIFdlYlhSU3lzdGVtOwor
Y2xhc3MgV2ViWFJWaWV3Owogc3RydWN0IFhSUmVuZGVyU3RhdGVJbml0OwogCiBjbGFzcyBXZWJY
UlNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlNlc3Npb24+LCBwdWJsaWMg
RXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IFBsYXRmb3JtWFI6OlRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50IHsKQEAgLTkwLDYgKzkwLDEx
IEBAIHB1YmxpYzoKIAogICAgIFhSU2Vzc2lvbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kZTsgfQogCisgICAgY29uc3QgV2ViWFJSZWZlcmVuY2VTcGFjZSYgdmlld2VyUmVmZXJlbmNl
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdlclJlZmVyZW5jZVNwYWNlOyB9CisgICAgY29u
c3QgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+JiB2aWV3cygpIGNvbnN0IHsg
cmV0dXJuIG1fdmlld3M7IH0KKyAgICBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YSYgZnJhbWVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZURhdGE7IH0KKyAgICBib29sIHBv
c2VzQ2FuQmVSZXBvcnRlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0OworCiBwcml2YXRlOgogICAg
IFdlYlhSU2Vzc2lvbihEb2N1bWVudCYsIFdlYlhSU3lzdGVtJiwgWFJTZXNzaW9uTW9kZSwgUGxh
dGZvcm1YUjo6RGV2aWNlJik7CiAKQEAgLTEyOCwxMSArMTMzLDE1IEBAIHByaXZhdGU6CiAgICAg
V2Vha1B0cjxQbGF0Zm9ybVhSOjpEZXZpY2U+IG1fZGV2aWNlOwogICAgIFJlZlB0cjxXZWJYUlJl
bmRlclN0YXRlPiBtX2FjdGl2ZVJlbmRlclN0YXRlOwogICAgIFJlZlB0cjxXZWJYUlJlbmRlclN0
YXRlPiBtX3BlbmRpbmdSZW5kZXJTdGF0ZTsKKyAgICBXZWJYUlJlZmVyZW5jZVNwYWNlIG1fdmll
d2VyUmVmZXJlbmNlU3BhY2U7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPcmlnaW47CiAKICAg
ICB1bnNpZ25lZCBtX25leHRDYWxsYmFja0lkIHsgMSB9OwogICAgIFZlY3RvcjxSZWY8WFJGcmFt
ZVJlcXVlc3RDYWxsYmFjaz4+IG1fY2FsbGJhY2tzOwogCisgICAgVmVjdG9yPFBsYXRmb3JtWFI6
OkRldmljZTo6Vmlld0RhdGE+IG1fdmlld3M7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGEgbV9mcmFtZURhdGE7CisKICAgICBkb3VibGUgbV9taW5pbXVtSW5saW5lRk9WIHsgMC4w
IH07CiAgICAgZG91YmxlIG1fbWF4aW11bUlubGluZUZPViB7IHBpRmxvYXQgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKaW5kZXggNTI0MjU0ZmE0Njc3
YjhkYjE1MjM1NTA2MjhkM2E3OWU2OTIyNjkxNC4uYTAzYTg4MmI5YmQ4NzU0MWM1NmFkNjg0Nzk1
MTJmMTExNmUyMDA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3Bh
Y2UuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRl
ICJET01Qb2ludFJlYWRPbmx5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJX
ZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzYsMTQgKzM4LDMzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSU3BhY2UpOwog
Ci1XZWJYUlNwYWNlOjpXZWJYUlNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vz
c2lvbj4mJiBzZXNzaW9uKQorV2ViWFJTcGFjZTo6V2ViWFJTcGFjZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zm
c2V0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmRvY3VtZW50KQotICAgICwg
bV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKKyAg
ICAsIG1fb3JpZ2luT2Zmc2V0KFdURk1vdmUob2Zmc2V0KSkKIHsKKyAgICBtX3Nlc3Npb24ucmVm
KCk7CiB9CiAKIFdlYlhSU3BhY2U6On5XZWJYUlNwYWNlKCkgPSBkZWZhdWx0OwogCit2b2lkIFdl
YlhSU3BhY2U6OnJlZigpCit7CisgICAgbV9zZXNzaW9uLnJlZigpOworfQorCit2b2lkIFdlYlhS
U3BhY2U6OmRlcmVmKCkKK3sKKyAgICBtX3Nlc3Npb24uZGVyZWYoKTsKK30KKworVHJhbnNmb3Jt
YXRpb25NYXRyaXggV2ViWFJTcGFjZTo6ZWZmZWN0aXZlT3JpZ2luKCkgY29uc3QKK3sKKyAgICAv
LyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4cnNwYWNlLWVmZmVjdGl2
ZS1vcmlnaW4KKyAgICAvLyBUaGUgZWZmZWN0aXZlIG9yaWdpbiBjYW4gYmUgb2J0YWluZWQgYnkg
bXVsdGlwbHlpbmcgb3JpZ2luIG9mZnNldCBhbmQgdGhlIG5hdGl2ZSBvcmlnaW4uCisgICAgcmV0
dXJuIG1fb3JpZ2luT2Zmc2V0LT5yYXdUcmFuc2Zvcm0oKSAqIG5hdGl2ZU9yaWdpbigpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCmluZGV4IDdmMWM0ZTk3NDczOWE3
MGNjNGIwYzBiMWNlYmYxOGU1ZmI4NDk5MGQuLmM2MmZkZWQwYzE2ZWU5MjY2YjM2NGUzMzM0YTZm
NjgxNzZhNGQwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5o
CkBAIC0yOSwzNyArMjksNTIgQEAKIAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
Y2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIAotY2xhc3Mg
V2ViWFJTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSU3BhY2U+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsK
K2NsYXNzIFdlYlhSU3BhY2UgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVi
bGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFdlYlhSU3BhY2UpOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlhSU3BhY2UoKTsKIAot
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJTcGFjZT46OnJlZjsKLSAgICB1c2luZyBSZWZDb3Vu
dGVkPFdlYlhSU3BhY2U+OjpkZXJlZjsKKyAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24o
KSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb247IH0KKyAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0ID0gMDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBlZmZlY3RpdmVPcmlnaW4oKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc1JlZmVyZW5j
ZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdm9pZCBy
ZWYoKTsKKyAgICB2b2lkIGRlcmVmKCk7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJYUlNwYWNlKERv
Y3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAgV2ViWFJTcGFjZShEb2N1bWVudCYs
IFdlYlhSU2Vzc2lvbiYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmKTsKIAogICAgIC8vIEV2
ZW50VGFyZ2V0CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgIFJlZjxXZWJYUlNlc3Npb24+IG1f
c2Vzc2lvbjsKKyAgICBXZWJYUlNlc3Npb24mIG1fc2Vzc2lvbjsKKyAgICBSZWY8V2ViWFJSaWdp
ZFRyYW5zZm9ybT4gbV9vcmlnaW5PZmZzZXQ7CiAKIHByaXZhdGU6CiAgICAgLy8gRXZlbnRUYXJn
ZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFdlYlhSU3BhY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0K
LSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZvaWQg
ZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
ZmluYWwgeyBkZXJlZigpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNkZWZp
bmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XRUJYUlNQQUNFKFRvVmFsdWVUeXBlTmFtZSwgcHJl
ZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFsdWVU
eXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXZWJYUlNw
YWNlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4IDg1MDYyZmQ1M2Q2ZjBk
MmFkODk1ZWY4ZDNiZDFlMDk5YWEwYjNkOGMuLmEyNmM2MjY1OGMwNzVhNjFhNmNjOGZiZmI3Mjlh
Y2IxNWU4OTlhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0
ZW0uY3BwCkBAIC01MjEsMTIgKzUyMSwyMSBAQCB2b2lkIFdlYlhSU3lzdGVtOjpEdW1teUlubGlu
ZURldmljZTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIHJhZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKHsgfSk7Cisg
ICAgICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGRhdGE7CisgICAgICAgIGRhdGEu
aXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgZGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSB0
cnVlOworICAgICAgICBkYXRhLnZpZXdzLmFwcGVuZCh7IH0pOworICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGRhdGEpKTsKICAgICB9KTsKIAogICAgIGRvY3VtZW50LT5yZXF1ZXN0QW5pbWF0aW9u
RnJhbWUocmFmKTsKIH0KIAorVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFdl
YlhSU3lzdGVtOjpEdW1teUlubGluZURldmljZTo6dmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QK
K3sKKyAgICByZXR1cm4geyB7IC5hY3RpdmUgPSB0cnVlLCBQbGF0Zm9ybVhSOjpFeWU6Ok5vbmUg
fSB9OworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCmluZGV4IDFkZThiNzViNzk1MDY3ZjMxYTA5YmNjNjcw
NzBjZGIxOGM2ZjJhZTcuLjEwMjRkMGY1YTRmM2MxZjZiNDFhZGY3Zjk2YmQ4M2NjMzg0YWQwODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTExMSw5
ICsxMTEsMTAgQEAgcHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxp
emVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9
CiAgICAgICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsIHsgfQot
ICAgICAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVu
Y2VTcGFjZVR5cGUpIGZpbmFsIHsgfTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNl
U3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KIAogICAgICAg
ICB2b2lkIHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxi
YWNrJiYpIGZpbmFsOworICAgICAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoWFJT
ZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7CiAgICAgfTsKICAgICBEdW1teUlubGluZURldmljZSBt
X2RlZmF1bHRJbmxpbmVEZXZpY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJWaWV3LmNwcAppbmRleCAxYTk4Y2IxNDUwNDU5ZmYyNjU2MzhmNThkZjQ4YmI0ZmNjZmYzMGJl
Li40M2QxMGI4N2ZmNmNjYmI3NTAxMDAxNTkzMWNiMGZjZjdhNGIwYjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCkBAIC0zNiwyMyArMzYsMjAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJWaWV3
KTsKIAotUmVmPFdlYlhSVmlldz4gV2ViWFJWaWV3OjpjcmVhdGUoKQorUmVmPFdlYlhSVmlldz4g
V2ViWFJWaWV3OjpjcmVhdGUoWFJFeWUgZXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0
cmFuc2Zvcm0sIFJlZjxGbG9hdDMyQXJyYXk+JiYgcHJvamVjdGlvbikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJYUlZpZXcpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhS
VmlldyhleWUsIFdURk1vdmUodHJhbnNmb3JtKSwgV1RGTW92ZShwcm9qZWN0aW9uKSkpOwogfQog
Ci1XZWJYUlZpZXc6OldlYlhSVmlldygpCi0gICAgOiBtX2V5ZShYUkV5ZTo6Tm9uZSkKK1dlYlhS
Vmlldzo6V2ViWFJWaWV3KFhSRXllIGV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJh
bnNmb3JtLCBSZWY8RmxvYXQzMkFycmF5PiYmIHByb2plY3Rpb24pCisgICAgOiBtX2V5ZShleWUp
CisgICAgLCBtX3RyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpCisgICAgLCBtX3Byb2plY3Rp
b24ocHJvamVjdGlvbikKIHsKIH0KIAogV2ViWFJWaWV3Ojp+V2ViWFJWaWV3KCkgPSBkZWZhdWx0
OwogCi12b2lkIFdlYlhSVmlldzo6c2V0UHJvamVjdGlvbk1hdHJpeChjb25zdCBWZWN0b3I8Zmxv
YXQ+JiBtYXRyaXgpCi17Ci0gICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gRmxvYXQzMkFycmF5Ojpj
cmVhdGUobWF0cml4LmRhdGEoKSwgbWF0cml4LnNpemUoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSVmlldy5oCmluZGV4IDM5YTA5Y2UxMGJhYWEyYzI3OTdjODc1NTczNzFjMmJm
Nzg4YWM0ZTUuLjRiNjYwNjkxMTgyNjhkNGFiM2Y4NTc2NTg1YTc4YzkwMjAzMGJiYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaApAQCAtMzcsMjggKzM3LDI1IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViWFJGcmFtZTsKIGNsYXNzIFdlYlhS
UmlnaWRUcmFuc2Zvcm07CiAKIGNsYXNzIFdlYlhSVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlhSVmlldz4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKFdlYlhSVmlldywg
V0VCQ09SRV9FWFBPUlQpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
V2ViWFJWaWV3PiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFdlYlhS
Vmlldz4gY3JlYXRlKFhSRXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgUmVmPEZsb2F0
MzJBcnJheT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfldlYlhSVmlldygpOwogCiAgICAgWFJF
eWUgZXllKCkgY29uc3QgeyByZXR1cm4gbV9leWU7IH0KLSAgICBjb25zdCBGbG9hdDMyQXJyYXkm
IHByb2plY3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiAqbV9wcm9qZWN0aW9uTWF0cml4OyB9
Ci0gICAgY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gKm1fdHJhbnNmb3JtOyB9Ci0KLSAgICB2b2lkIHNldEV5ZShYUkV5ZSBleWUpIHsgbV9leWUg
PSBleWU7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb2plY3Rpb25NYXRyaXgoY29u
c3QgVmVjdG9yPGZsb2F0PiYpOwotICAgIHZvaWQgc2V0VHJhbnNmb3JtKFJlZlB0cjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmIHZpZXdPZmZzZXQpIHsgbV90cmFuc2Zvcm0gPSBXVEZNb3ZlKHZpZXdP
ZmZzZXQpOyB9CisgICAgY29uc3QgRmxvYXQzMkFycmF5JiBwcm9qZWN0aW9uTWF0cml4KCkgY29u
c3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uLmdldCgpOyB9CisgICAgY29uc3QgV2ViWFJSaWdpZFRy
YW5zZm9ybSYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0uZ2V0KCk7IH0K
IAogcHJpdmF0ZToKLSAgICBXZWJYUlZpZXcoKTsKKyAgICBXZWJYUlZpZXcoWFJFeWUsIFJlZjxX
ZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYmKTsKIAogICAgIFhSRXll
IG1fZXllOwotICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+IG1fcHJvamVjdGlvbk1hdHJpeDsKLSAg
ICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgUmVmPFdlYlhS
UmlnaWRUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOworICAgIFJlZjxGbG9hdDMyQXJyYXk+IG1fcHJv
amVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcAppbmRleCA2MDYzYzk1ZjM2NDNh
ZGFiMGEyODFkYTg4YjNjYmFlNjVhNzk3YjA5Li5lNDllNmM3ODc0YWQzMjNmNWY1ODU5MzM0YzI3
N2JiM2JhZTJmMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSVmlld2VyUG9zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlZpZXdlclBvc2UuY3BwCkBAIC0yNSwxNyArMjUsMjQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYlhSVmlld2VyUG9zZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPFdlYlhSVmlld2VyUG9zZT4gV2ViWFJWaWV3ZXJQb3NlOjpjcmVhdGUoKQorV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSVmlld2VyUG9zZSk7CisKK1JlZjxXZWJYUlZpZXdlclBv
c2U+IFdlYlhSVmlld2VyUG9zZTo6Y3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRy
YW5zZm9ybSwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSVmlld2VyUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24p
KTsKK30KKworV2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2UoUmVmPFdlYlhSUmlnaWRU
cmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCisgICAgOiBXZWJY
UlBvc2UoV1RGTW92ZSh0cmFuc2Zvcm0pLCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlhSVmlld2VyUG9zZSk7CiB9CiAKLVdlYlhSVmlld2VyUG9zZTo6
V2ViWFJWaWV3ZXJQb3NlKCkgPSBkZWZhdWx0OwogV2ViWFJWaWV3ZXJQb3NlOjp+V2ViWFJWaWV3
ZXJQb3NlKCkgPSBkZWZhdWx0OwogCiBjb25zdCBWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiBXZWJY
UlZpZXdlclBvc2U6OnZpZXdzKCkgY29uc3QKQEAgLTQzLDYgKzUwLDExIEBAIGNvbnN0IFZlY3Rv
cjxSZWY8V2ViWFJWaWV3Pj4mIFdlYlhSVmlld2VyUG9zZTo6dmlld3MoKSBjb25zdAogICAgIHJl
dHVybiBtX3ZpZXdzOwogfQogCit2b2lkIFdlYlhSVmlld2VyUG9zZTo6c2V0Vmlld3MoVmVjdG9y
PFJlZjxXZWJYUlZpZXc+PiYmIHZpZXdzKQoreworICAgIG1fdmlld3MgPSBXVEZNb3ZlKHZpZXdz
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBv
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmgKaW5k
ZXggYTRlZDI1YjEwYzI1MzE5YTZlOTIxODUyODA2NGU1MWM4ZDRkOGYyMC4uZTlmMGEzOWQ4NWI3
ZWFjZTcwMTNjYTE4NDI5ZDJiM2NiYjgwZGNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5oCkBAIC0zNywxOCArMzcsMjQgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViWFJWaWV3ZXJQb3NlIDogcHVibGljIFdlYlhSUG9zZSB7
CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUlZpZXdlclBvc2UpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2ViWFJWaWV3ZXJQb3NlPiBjcmVhdGUoKTsKLSAgICB+V2ViWFJWaWV3
ZXJQb3NlKCk7CisgICAgc3RhdGljIFJlZjxXZWJYUlZpZXdlclBvc2U+IGNyZWF0ZShSZWY8V2Vi
WFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICB2aXJ0dWFs
IH5XZWJYUlZpZXdlclBvc2UoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4m
IHZpZXdzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRWaWV3cyhWZWN0b3I8UmVmPFdlYlhSVmlldz4+
JiYpOwogCiBwcml2YXRlOgotICAgIFdlYlhSVmlld2VyUG9zZSgpOworICAgIFdlYlhSVmlld2Vy
UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsK
KworICAgIGJvb2wgaXNWaWV3ZXJQb3NlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgVmVjdG9yPFJlZjxXZWJYUlZpZXc+PiBtX3ZpZXdzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQlhSUE9TRShXZWJYUlZpZXdl
clBvc2UsIGlzVmlld2VyUG9zZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsCmluZGV4IGQx
YmViMmMwODZmODliZmFmZGY1ZTBiZjFmOTVjMGY0OGM2MDc2MTMuLjZhNzZkZTg0MzU0OWZiZjA2
M2QwYmE1ZDQxMTNhMDE1Mjk1MGIyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSVmlld2VyUG9zZS5pZGwKQEAgLTI4LDcgKzI4LDggQEAKICAgICBDb25kaXRp
b25hbD1XRUJYUiwKICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2luZG93LAotICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisg
ICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIEludGVyZmFjZU5hbWU9WFJWaWV3ZXJQ
b3NlCiBdIGludGVyZmFjZSBXZWJYUlZpZXdlclBvc2UgOiBXZWJYUlBvc2UgewogICAgIFtTYW1l
T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJWaWV3PiB2aWV3czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJFeWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJFeWUuaAppbmRleCBlYTFlYTdlMWU3ZDgyMjYzMjVm
NjBjODI2ZmZmYmMwYjliYTRkNjZmLi5mOWEzNDNiZGE0NDc0OTdmNmRkYTU0NDk5MDhlNGQ5OWQ5
ZmM5N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSRXllLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkV5ZS5oCkBAIC0yNywxMyArMjcs
MTEgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFhSRXllIHsKLSAgICBOb25lLAotICAg
IExlZnQsCi0gICAgUmlnaHQsCi19OwordXNpbmcgWFJFeWUgPSBQbGF0Zm9ybVhSOjpFeWU7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0
cml4LmNwcAppbmRleCBhN2U0ZTAxNDJjNGEzNGE1ZWFkZDc5NzNmNGRiNDcyNTg1M2RmMGMxLi5i
MmVjMTQ1ODRiNTZjMDZjODY4OGE3NTg2Yjk0MGEyNjgyMWQ4MDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0
cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtNTg0LDE1ICs1ODQsMTUgQEAgVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OlRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dCkKIC8vIEZJWE1FOiBPbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjA4NTYgaXMgYWRkcmVzc2VkIHdlIGNhbiByZXVzZSB0aGlzIGZ1bmN0aW9uIGluIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpyZWNvbXBvc2U0KCkuCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksIGRv
dWJsZSBxeiwgZG91YmxlIHF3KQogewotICAgIGNvbnN0IGRvdWJsZSB4eCA9IHF4ICogcXg7Ci0g
ICAgY29uc3QgZG91YmxlIHl5ID0gcXkgKiBxeTsKLSAgICBjb25zdCBkb3VibGUgenogPSBxeiAq
IHF6OwotICAgIGNvbnN0IGRvdWJsZSB4eiA9IHF4ICogcXo7Ci0gICAgY29uc3QgZG91YmxlIHh5
ID0gcXggKiBxeTsgCi0gICAgY29uc3QgZG91YmxlIHl6ID0gcXkgKiBxejsKLSAgICBjb25zdCBk
b3VibGUgeHcgPSBxdyAqIHF4OwotICAgIGNvbnN0IGRvdWJsZSB5dyA9IHF3ICogcXk7Ci0gICAg
Y29uc3QgZG91YmxlIHp3ID0gcXcgKiBxejsKKyAgICBkb3VibGUgeHggPSBxeCAqIHF4OworICAg
IGRvdWJsZSB5eSA9IHF5ICogcXk7CisgICAgZG91YmxlIHp6ID0gcXogKiBxejsKKyAgICBkb3Vi
bGUgeHogPSBxeCAqIHF6OworICAgIGRvdWJsZSB4eSA9IHF4ICogcXk7IAorICAgIGRvdWJsZSB5
eiA9IHF5ICogcXo7CisgICAgZG91YmxlIHh3ID0gcXcgKiBxeDsKKyAgICBkb3VibGUgeXcgPSBx
dyAqIHF5OworICAgIGRvdWJsZSB6dyA9IHF3ICogcXo7CiAKICAgICByZXR1cm4gVHJhbnNmb3Jt
YXRpb25NYXRyaXgoMSAtIDIgKiAoeXkgKyB6eiksIDIgKiAoeHkgKyB6dyksIDIgKiAoeHogLSB5
dyksIDAsCiAgICAgICAgIDIgKiAoeHkgLSB6dyksIDEgLSAyICogKHh4ICsgenopLCAyICogKHl6
ICsgeHcpLCAwLApAQCAtNjAwLDYgKzYwMCwzNCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksCiAg
ICAgICAgIDAsIDAsIDAsIDEpOwogfQogCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9y
bWF0aW9uTWF0cml4Ojpmcm9tUHJvamVjdGlvbihkb3VibGUgZm92VXAsIGRvdWJsZSBmb3ZEb3du
LCBkb3VibGUgZm92TGVmdCwgZG91YmxlIGZvdlJpZ2h0LCBkb3VibGUgZGVwdGhOZWFyLCBkb3Vi
bGUgZGVwdGhGYXIpCit7CisgICAgZG91YmxlIHVwVGFuID0gdGFuKGZvdlVwKTsKKyAgICBkb3Vi
bGUgZG93blRhbiA9IHRhbihmb3ZEb3duKTsKKyAgICBkb3VibGUgbGVmdFRhbiA9IHRhbihmb3ZM
ZWZ0KTsKKyAgICBkb3VibGUgcmlnaHRUYW4gPSB0YW4oZm92UmlnaHQpOworICAgIGRvdWJsZSB4
U2NhbGUgPSAyLjAgLyAobGVmdFRhbiArIHJpZ2h0VGFuKTsKKyAgICBkb3VibGUgeVNjYWxlID0g
Mi4wIC8gKHVwVGFuICsgZG93blRhbik7CisgICAgZG91YmxlIGludkRlcHRoID0gMS4wIC8gKGRl
cHRoTmVhciAtIGRlcHRoRmFyKTsKKworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh4
U2NhbGUsIDAuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIHlTY2FsZSwgMC4wZiwgMC4w
ZiwKKyAgICAgICAgKGxlZnRUYW4gLSByaWdodFRhbikgKiB4U2NhbGUgKiAtMC41LCAodXBUYW4g
LSBkb3duVGFuKSAqIHlTY2FsZSAqIDAuNSwgKGRlcHRoTmVhciArIGRlcHRoRmFyKSAqIGludkRl
cHRoLCAtMS4wZiwKKyAgICAgICAgMC4wZiwgMC4wZiwgKDIuMGYgKiBkZXB0aEZhciAqIGRlcHRo
TmVhcikgKiBpbnZEZXB0aCwgMC4wZik7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5z
Zm9ybWF0aW9uTWF0cml4Ojpmcm9tUHJvamVjdGlvbihkb3VibGUgZm92eSwgZG91YmxlIGFzcGVj
dCwgZG91YmxlIGRlcHRoTmVhciwgZG91YmxlIGRlcHRoRmFyKQoreworICAgIGRvdWJsZSBmID0g
MS4wZiAvIHRhbmYoZm92eSAvIDIpOworICAgIGRvdWJsZSBpbnZEZXB0aCA9IDEuMGYgLyAoZGVw
dGhOZWFyIC0gZGVwdGhGYXIpOworCisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KGYg
LyBhc3BlY3QsIDAuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIGYsIDAuMGYsIDAuMGYs
CisgICAgICAgIDAuMGYsIDAuMGYsIChkZXB0aEZhciArIGRlcHRoTmVhcikgKiBpbnZEZXB0aCwg
LTEuMGYsCisgICAgICAgIDAuMGYsIDAuMGYsICgyLjBmICogZGVwdGhGYXIgKiBkZXB0aE5lYXIp
ICogaW52RGVwdGgsIDAuMGYpOworfQorCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OnNjYWxlKGRvdWJsZSBzKQogewogICAgIHJldHVybiBzY2FsZU5vblVuaWZv
cm0ocywgcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggNjAwZTdk
MGIxY2UyNmE3YzI0MjFkNTg1NjFjYzU3NGIwNGExN2IyOS4uNWY3MjVhZDY2ZWY3NzA5MWU5ZmIw
NjYwOThiOGRhNzU4ZjVhZjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aApAQCAtMTIxLDYgKzEyMSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVHJhbnNmb3JtYXRp
b25NYXRyaXggZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksIGRvdWJsZSBxeiwg
ZG91YmxlIHF3KTsKIAorICAgIC8vIEZpZWxkIG9mIHZpZXcgaW4gcmFkaWFucworICAgIHN0YXRp
YyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tUHJvamVjdGlvbihkb3VibGUgZm92VXAsIGRvdWJs
ZSBmb3ZEb3duLCBkb3VibGUgZm92TGVmdCwgZG91YmxlIGZvdlJpZ2h0LCBkb3VibGUgZGVwdGhO
ZWFyLCBkb3VibGUgZGVwdGhGYXIpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBm
cm9tUHJvamVjdGlvbihkb3VibGUgZm92eSwgZG91YmxlIGFzcGVjdCwgZG91YmxlIGRlcHRoTmVh
ciwgZG91YmxlIGRlcHRoRmFyKTsKKwogICAgIHN0YXRpYyBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpZGVudGl0eTsKIAogICAgIHZvaWQgc2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwg
ZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9QbGF0Zm9ybVhSLmgKaW5kZXggNDMyNWYzMzc1Y2YzMDI4YTQ3ZGZmY2M2ZGY1OWJi
NzQzODM1MDBkNS4uZTM3MjFkODg2ZWE5OWEwZGY5MDgyZTU4ZTI1NWNkMzJkMGY3ZGU4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtMjQsNiArMjQsNyBAQAog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAg
LTQzLDYgKzQ0LDEyIEBAIGVudW0gY2xhc3MgUmVmZXJlbmNlU3BhY2VUeXBlIHsKICAgICBVbmJv
dW5kZWQKIH07CiAKK2VudW0gY2xhc3MgRXllIHsKKyAgICBOb25lLAorICAgIExlZnQsCisgICAg
UmlnaHQsCit9OworCiAjaWYgRU5BQkxFKFdFQlhSKQogCiBjbGFzcyBUcmFja2luZ0FuZFJlbmRl
cmluZ0NsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0Ns
aWVudD4gewpAQCAtNzksMjkgKzg2LDUxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFJlZmVyZW5jZVNwYWNlVHlwZSkgPSAwOwogCiAgICAgc3Ry
dWN0IEZyYW1lRGF0YSB7Ci0gICAgICAgIGxvbmcgcHJlZGljdGVkRGlzcGxheVRpbWU7Ci0gICAg
ICAgIHN0cnVjdCBWaWV3RGF0YSB7Ci0gICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAg
ICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCBwb3NpdGlvbjsKLSAgICAgICAgICAgICAgICBzdHJ1
Y3QgewotICAgICAgICAgICAgICAgICAgICBmbG9hdCB4OwotICAgICAgICAgICAgICAgICAgICBm
bG9hdCB5OwotICAgICAgICAgICAgICAgICAgICBmbG9hdCB6OwotICAgICAgICAgICAgICAgICAg
ICBmbG9hdCB3OwotICAgICAgICAgICAgICAgIH0gb3JpZW50YXRpb247Ci0gICAgICAgICAgICB9
IHBvc2U7Ci0gICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIGZsb2F0IHJVcDsK
LSAgICAgICAgICAgICAgICBmbG9hdCByRG93bjsKLSAgICAgICAgICAgICAgICBmbG9hdCByTGVm
dDsKLSAgICAgICAgICAgICAgICBmbG9hdCByUmlnaHQ7Ci0gICAgICAgICAgICB9IGZvdjsKKyAg
ICAgICAgc3RydWN0IEZsb2F0UXVhdGVybmlvbiB7CisgICAgICAgICAgICBmbG9hdCB4IHsgMC4w
ZiB9OworICAgICAgICAgICAgZmxvYXQgeSB7IDAuMGYgfTsKKyAgICAgICAgICAgIGZsb2F0IHog
eyAwLjBmIH07CisgICAgICAgICAgICBmbG9hdCB3IHsgMS4wZiB9OworICAgICAgICB9OworCisg
ICAgICAgIHN0cnVjdCBQb3NlIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCBw
b3NpdGlvbjsKKyAgICAgICAgICAgIEZsb2F0UXVhdGVybmlvbiBvcmllbnRhdGlvbjsKICAgICAg
ICAgfTsKLSAgICAgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3UG9zZXM7CisKKyAgICAgICAgc3Ry
dWN0IEZvdiB7CisgICAgICAgICAgICAvLyBJbiByYWRpYW5zCisgICAgICAgICAgICBmbG9hdCB1
cCB7IDAuMGYgfTsKKyAgICAgICAgICAgIGZsb2F0IGRvd24geyAwLjBmIH07CisgICAgICAgICAg
ICBmbG9hdCBsZWZ0IHsgMC4wZiB9OworICAgICAgICAgICAgZmxvYXQgcmlnaHQgeyAwLjBmIH07
CisgICAgICAgIH07CisKKyAgICAgICAgdXNpbmcgUHJvamVjdGlvbiA9IFZhcmlhbnQ8Rm92LCBz
dGQ6OmFycmF5PGZsb2F0LCAxNj4sIHN0ZDo6bnVsbHB0cl90PjsKKworICAgICAgICBzdHJ1Y3Qg
VmlldyB7CisgICAgICAgICAgICBQb3NlIG9mZnNldDsKKyAgICAgICAgICAgIFByb2plY3Rpb24g
cHJvamVjdGlvbiA9IHsgbnVsbHB0ciB9OworICAgICAgICB9OworCisgICAgICAgIGJvb2wgaXNU
cmFja2luZ1ZhbGlkIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBpc1Bvc2l0aW9uVmFsaWQgeyBm
YWxzZSB9OworICAgICAgICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCB7IGZhbHNlIH07CisgICAg
ICAgIGxvbmcgcHJlZGljdGVkRGlzcGxheVRpbWUgeyAwIH07CisgICAgICAgIFBvc2Ugb3JpZ2lu
OworICAgICAgICBPcHRpb25hbDxQb3NlPiBmbG9vclRyYW5zZm9ybTsKKyAgICAgICAgVmVjdG9y
PFZpZXc+IHZpZXdzOworICAgIH07CisKKyAgICBzdHJ1Y3QgVmlld0RhdGEgeworICAgICAgICBi
b29sIGFjdGl2ZSB7IGZhbHNlIH07CisgICAgICAgIEV5ZSBleWUgeyBFeWU6Ok5vbmUgfTsKICAg
ICB9OworCisgICAgdmlydHVhbCBWZWN0b3I8Vmlld0RhdGE+IHZpZXdzKFNlc3Npb25Nb2RlKSBj
b25zdCA9IDA7CisKICAgICB1c2luZyBSZXF1ZXN0RnJhbWVDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoRnJhbWVEYXRhJiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIERldmljZSgpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRm
b3JtWFJPcGVuWFIuY3BwCmluZGV4IGNjNGQ3MjE1M2M2ZWVhZmRmMjE2MmU5ODgyYTllMDc3NThi
MjFkZjcuLmI5NGU4NzFmNTdiODk3YzdlNDg0OWE0N2Y0YTY0YzMzMzBkNmQxNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5Y
Ui5jcHAKQEAgLTI5OSw2ICsyOTksMjggQEAgRGV2aWNlOjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMg
T3BlblhSRGV2aWNlOjplbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMoWHJTZXNzaW9uJgogICAgIHJl
dHVybiBlbmFibGVkRmVhdHVyZXM7CiB9CiAKK1hyU3BhY2UgT3BlblhSRGV2aWNlOjpjcmVhdGVS
ZWZlcmVuY2VTcGFjZShYclJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCgm
UnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgQVNTRVJUKG1f
c2Vzc2lvbiAhPSBYUl9OVUxMX0hBTkRMRSk7CisgICAgQVNTRVJUKG1faW5zdGFuY2UgIT0gWFJf
TlVMTF9IQU5ETEUpOworCisgICAgWHJQb3NlZiBpZGVudGl0eVBvc2UgeworICAgICAgICAub3Jp
ZW50YXRpb24gPSB7IC54ID0gMCwgLnkgPSAwLCAueiA9IDAsIC53ID0gMS4wIH0sCisgICAgICAg
IC5wb3NpdGlvbiA9IHsgLnggPSAwLCAueSA9IDAsIC56ID0gMCB9CisgICAgfTsKKworICAgIGF1
dG8gc3BhY2VDcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyUmVmZXJlbmNlU3BhY2VDcmVh
dGVJbmZvLCBYUl9UWVBFX1JFRkVSRU5DRV9TUEFDRV9DUkVBVEVfSU5GTz4oKTsKKyAgICBzcGFj
ZUNyZWF0ZUluZm8ucmVmZXJlbmNlU3BhY2VUeXBlID0gdHlwZTsKKyAgICBzcGFjZUNyZWF0ZUlu
Zm8ucG9zZUluUmVmZXJlbmNlU3BhY2UgPSBpZGVudGl0eVBvc2U7CisKKyAgICBYclNwYWNlIHNw
YWNlOworICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVSZWZlcmVuY2VTcGFjZShtX3Nlc3Npb24s
ICZzcGFjZUNyZWF0ZUluZm8sICZzcGFjZSk7CisgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQs
ICJ4ckNyZWF0ZVJlZmVyZW5jZVNwYWNlIiwgbV9pbnN0YW5jZSwgWFJfTlVMTF9IQU5ETEUpOwor
CisgICAgcmV0dXJuIHNwYWNlOworfQorCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBv
cnRlZFNlc3Npb25Nb2RlcygpCiB7CiAgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0g
Jm1fcXVldWUucnVuTG9vcCgpKTsKQEAgLTM2OCwxNSArMzkwLDYgQEAgdm9pZCBPcGVuWFJEZXZp
Y2U6OmNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKQogICAgIH0KIH0KIAotV2ViQ29yZTo6SW50
U2l6ZSBPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSBtb2Rl
KQotewotICAgIGF1dG8gY29uZmlnVHlwZSA9IG1vZGUgPT0gU2Vzc2lvbk1vZGU6OklubGluZSA/
IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTyA6IFhSX1ZJRVdfQ09ORklH
VVJBVElPTl9UWVBFX1BSSU1BUllfU1RFUkVPOwotICAgIGF1dG8gdmlld3NJdGVyYXRvciA9IG1f
Y29uZmlndXJhdGlvblZpZXdzLmZpbmQoY29uZmlnVHlwZSk7Ci0gICAgaWYgKHZpZXdzSXRlcmF0
b3IgIT0gbV9jb25maWd1cmF0aW9uVmlld3MuZW5kKCkpCi0gICAgICAgIHJldHVybiB7IHN0YXRp
Y19jYXN0PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFnZVJlY3RX
aWR0aCksIHN0YXRpY19jYXN0PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5k
ZWRJbWFnZVJlY3RIZWlnaHQpIH07Ci0gICAgcmV0dXJuIERldmljZTo6cmVjb21tZW5kZWRSZXNv
bHV0aW9uKG1vZGUpOwotfQotCiBYclZpZXdDb25maWd1cmF0aW9uVHlwZSB0b1hyVmlld0NvbmZp
Z3VyYXRpb25UeXBlKFNlc3Npb25Nb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CkBA
IC00MDAsNiArNDEzLDE1IEBAIHN0YXRpYyBib29sIGlzU2Vzc2lvblJlYWR5KFhyU2Vzc2lvblN0
YXRlIHN0YXRlKQogICAgIHJldHVybiBzdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1JFQURZICAm
JiBzdGF0ZSA8IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkc7CiB9CiAKK1dlYkNvcmU6OkludFNp
emUgT3BlblhSRGV2aWNlOjpyZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUgbW9kZSkK
K3sKKyAgICBhdXRvIGNvbmZpZ1R5cGUgPSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKG1vZGUp
OworICAgIGF1dG8gdmlld3NJdGVyYXRvciA9IG1fY29uZmlndXJhdGlvblZpZXdzLmZpbmQoY29u
ZmlnVHlwZSk7CisgICAgaWYgKHZpZXdzSXRlcmF0b3IgIT0gbV9jb25maWd1cmF0aW9uVmlld3Mu
ZW5kKCkpCisgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4odmlld3NJdGVyYXRvci0+
dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFnZVJlY3RXaWR0aCksIHN0YXRpY19jYXN0PGludD4odmll
d3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFnZVJlY3RIZWlnaHQpIH07CisgICAg
cmV0dXJuIERldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKG1vZGUpOworfQorCiB2b2lkIE9w
ZW5YUkRldmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1v
ZGUpCiB7CiAgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgbW9kZV0oKSB7CkBAIC00MTQsNiAr
NDM2LDkgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmlu
ZyhTZXNzaW9uTW9kZSBtb2RlKQogICAgICAgICBzZXNzaW9uQ3JlYXRlSW5mby5zeXN0ZW1JZCA9
IG1fc3lzdGVtSWQ7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVTZXNzaW9uKG1faW5z
dGFuY2UsICZzZXNzaW9uQ3JlYXRlSW5mbywgJm1fc2Vzc2lvbik7CiAgICAgICAgIFJFVFVSTl9J
Rl9GQUlMRUQocmVzdWx0LCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMi
LCBtX2luc3RhbmNlKTsKKworICAgICAgICBtX2xvY2FsU3BhY2UgPSBjcmVhdGVSZWZlcmVuY2VT
cGFjZShYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9MT0NBTCk7CisgICAgICAgIG1fdmlld1NwYWNl
ID0gY3JlYXRlUmVmZXJlbmNlU3BhY2UoWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfVklFVyk7CiAg
ICAgfSk7CiB9CiAKQEAgLTQ1Nyw2ICs0ODIsMTIgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OnNodXRE
b3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQogICAgIH0pOwogfQogCit2b2lkIE9wZW5YUkRldmlj
ZTo6aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlw
ZSBzcGFjZVR5cGUpCit7CisgICAgaWYgKChzcGFjZVR5cGUgPT0gUmVmZXJlbmNlU3BhY2VUeXBl
OjpMb2NhbEZsb29yIHx8IHNwYWNlVHlwZSA9PSBSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRG
bG9vcikgJiYgbV9zdGFnZVNwYWNlID09IFhSX05VTExfSEFORExFKQorICAgICAgICBtX3N0YWdl
U3BhY2UgPSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9TVEFH
RSk7Cit9CisKIHZvaWQgT3BlblhSRGV2aWNlOjp3YWl0VW50aWxTdG9wcGluZygpCiB7CiAgICAg
QVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKQEAgLTUy
NiwxNCArNTU3LDIwIEBAIHZvaWQgT3BlblhSRGV2aWNlOjplbmRTZXNzaW9uKCkKICAgICB9KTsK
IH0KIAorc3RhdGljIERldmljZTo6RnJhbWVEYXRhOjpQb3NlIFhyUG9zZWZUb1Bvc2UoWHJQb3Nl
ZiBwb3NlKQoreworICAgIERldmljZTo6RnJhbWVEYXRhOjpQb3NlIHJlc3VsdDsKKyAgICByZXN1
bHQub3JpZW50YXRpb24gPSB7IHBvc2Uub3JpZW50YXRpb24ueCwgcG9zZS5vcmllbnRhdGlvbi55
LCBwb3NlLm9yaWVudGF0aW9uLnosIHBvc2Uub3JpZW50YXRpb24udyB9OworICAgIHJlc3VsdC5w
b3NpdGlvbiA9IHsgcG9zZS5wb3NpdGlvbi54LCBwb3NlLnBvc2l0aW9uLnksIHBvc2UucG9zaXRp
b24ueiB9OworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKLURldmljZTo6RnJhbWVEYXRhOjpWaWV3
RGF0YSB4clZpZXdUb1ZpZXdEYXRhKFhyVmlldyB2aWV3KQorc3RhdGljIERldmljZTo6RnJhbWVE
YXRhOjpWaWV3IHhyVmlld1RvUG9zZShYclZpZXcgdmlldykKIHsKLSAgICBEZXZpY2U6OkZyYW1l
RGF0YTo6Vmlld0RhdGEgZGF0YTsKLSAgICBkYXRhLmZvdiA9IHsgdmlldy5mb3YuYW5nbGVVcCwg
dmlldy5mb3YuYW5nbGVEb3duLCB2aWV3LmZvdi5hbmdsZUxlZnQsIHZpZXcuZm92LmFuZ2xlUmln
aHQgfTsKLSAgICBkYXRhLnBvc2Uub3JpZW50YXRpb24gPSB7IHZpZXcucG9zZS5vcmllbnRhdGlv
bi54LCB2aWV3LnBvc2Uub3JpZW50YXRpb24ueSwgdmlldy5wb3NlLm9yaWVudGF0aW9uLnosIHZp
ZXcucG9zZS5vcmllbnRhdGlvbi53IH07Ci0gICAgZGF0YS5wb3NlLnBvc2l0aW9uID0geyB2aWV3
LnBvc2UucG9zaXRpb24ueCwgdmlldy5wb3NlLnBvc2l0aW9uLnksIHZpZXcucG9zZS5wb3NpdGlv
bi56IH07Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXcgcG9z
ZTsKKyAgICBwb3NlLnByb2plY3Rpb24gPSBEZXZpY2U6OkZyYW1lRGF0YTo6Rm92IHsgdmlldy5m
b3YuYW5nbGVVcCwgdmlldy5mb3YuYW5nbGVEb3duLCB2aWV3LmZvdi5hbmdsZUxlZnQsIHZpZXcu
Zm92LmFuZ2xlUmlnaHQgfTsKKyAgICBwb3NlLm9mZnNldCA9IFhyUG9zZWZUb1Bvc2Uodmlldy5w
b3NlKTsKKyAgICByZXR1cm4gcG9zZTsKIH0KIAogdm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RG
cmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNTYyLDEzICs1OTksMjIg
QEAgdm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYm
IGNhbGxiYWNrKQogICAgICAgICBmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUgPSBmcmFt
ZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lOwogCiAgICAgICAgIGlmIChpc1Nlc3Npb25BY3Rp
dmUobV9zZXNzaW9uU3RhdGUpKSB7CisgICAgICAgICAgICAvLyBRdWVyeSBoZWFkIGxvY2F0aW9u
CisgICAgICAgICAgICBhdXRvIGxvY2F0aW9uID0gY3JlYXRlU3RydWN0dXJlPFhyU3BhY2VMb2Nh
dGlvbiwgWFJfVFlQRV9TUEFDRV9MT0NBVElPTj4oKTsKKyAgICAgICAgICAgIHhyTG9jYXRlU3Bh
Y2UobV92aWV3U3BhY2UsIG1fbG9jYWxTcGFjZSwgZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5
VGltZSwgJmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGZyYW1lRGF0YS5pc1RyYWNraW5nVmFsaWQg
PSBsb2NhdGlvbi5sb2NhdGlvbkZsYWdzICYgWFJfU1BBQ0VfTE9DQVRJT05fT1JJRU5UQVRJT05f
VkFMSURfQklUOworICAgICAgICAgICAgZnJhbWVEYXRhLmlzUG9zaXRpb25WYWxpZCA9IGxvY2F0
aW9uLmxvY2F0aW9uRmxhZ3MgJiBYUl9TUEFDRV9MT0NBVElPTl9QT1NJVElPTl9WQUxJRF9CSVQ7
CisgICAgICAgICAgICBmcmFtZURhdGEuaXNQb3NpdGlvbkVtdWxhdGVkID0gbG9jYXRpb24ubG9j
YXRpb25GbGFncyAmIFhSX1NQQUNFX0xPQ0FUSU9OX1BPU0lUSU9OX1RSQUNLRURfQklUOworCisg
ICAgICAgICAgICBpZiAoZnJhbWVEYXRhLmlzVHJhY2tpbmdWYWxpZCkKKyAgICAgICAgICAgICAg
ICBmcmFtZURhdGEub3JpZ2luID0gWHJQb3NlZlRvUG9zZShsb2NhdGlvbi5wb3NlKTsKKyAgICAg
ICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKG1fY29uZmlndXJhdGlvblZpZXdzLmNvbnRhaW5z
KG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSkpOwogICAgICAgICAgICAgY29uc3QgYXV0
byYgY29uZmlndXJhdGlvblZpZXcgPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5nZXQobV9jdXJyZW50
Vmlld0NvbmZpZ3VyYXRpb25UeXBlKTsKIAogICAgICAgICAgICAgYXV0byB2aWV3TG9jYXRlSW5m
byA9IGNyZWF0ZVN0cnVjdHVyZTxYclZpZXdMb2NhdGVJbmZvLCBYUl9UWVBFX1ZJRVdfTE9DQVRF
X0lORk8+KCk7CiAgICAgICAgICAgICB2aWV3TG9jYXRlSW5mby5kaXNwbGF5VGltZSA9IHByZWRp
Y3RlZFRpbWU7Ci0gICAgICAgICAgICAvLyBGSVhNRTogdXNlIHRoZSBjdXJyZW50IHJlZmVyZW5j
ZSBzcGFjZS4KLSAgICAgICAgICAgIC8vIHZpZXdMb2NhdGVJbmZvLnNwYWNlID0gbV9sb2NhbFNw
YWNlOworICAgICAgICAgICAgdmlld0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3BhY2U7CiAK
ICAgICAgICAgICAgIHVpbnQzMl90IHZpZXdDb3VudCA9IGNvbmZpZ3VyYXRpb25WaWV3LnNpemUo
KTsKICAgICAgICAgICAgIFZlY3RvcjxYclZpZXc+IHZpZXdzKHZpZXdDb3VudCwgW10gewpAQCAt
NTgzLDcgKzYyOSwxNCBAQCB2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RG
cmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZp
ZXdzKG1fc2Vzc2lvbiwgJnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2
aWV3Q291bnRPdXRwdXQsIHZpZXdzLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAoIVhSX0ZBSUxF
RChyZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB2aWV3IDogdmlld3MpCi0g
ICAgICAgICAgICAgICAgICAgIGZyYW1lRGF0YS52aWV3UG9zZXMuYXBwZW5kKHhyVmlld1RvVmll
d0RhdGEodmlldykpOworICAgICAgICAgICAgICAgICAgICBmcmFtZURhdGEudmlld3MuYXBwZW5k
KHhyVmlld1RvUG9zZSh2aWV3KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFF1
ZXJ5IGZsb29yIHRyYW5zZm9ybQorICAgICAgICAgICAgaWYgKG1fc3RhZ2VTcGFjZSAhPSBYUl9O
VUxMX0hBTkRMRSkgeworICAgICAgICAgICAgICAgIGF1dG8gZmxvb3JMb2NhdGlvbiA9IGNyZWF0
ZVN0cnVjdHVyZTxYclNwYWNlTG9jYXRpb24sIFhSX1RZUEVfU1BBQ0VfTE9DQVRJT04+KCk7Cisg
ICAgICAgICAgICAgICAgeHJMb2NhdGVTcGFjZShtX3N0YWdlU3BhY2UsIG1fbG9jYWxTcGFjZSwg
ZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZSwgJmZsb29yTG9jYXRpb24pOworICAgICAg
ICAgICAgICAgIGZyYW1lRGF0YS5mbG9vclRyYW5zZm9ybSA9IHsgWHJQb3NlZlRvUG9zZShmbG9v
ckxvY2F0aW9uLnBvc2UpIH07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjAwLDYg
KzY1MywyMSBAQCB2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiAgICAgfSk7CiB9CiAKK1ZlY3RvcjxEZXZpY2U6OlZpZXdEYXRh
PiBPcGVuWFJEZXZpY2U6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7CisgICAgVmVj
dG9yPERldmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGF1dG8gY29uZmlndXJhdGlvblR5cGUg
PSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKG1vZGUpOworCisgICAgaWYgKGNvbmZpZ3VyYXRp
b25UeXBlID09IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTykKKyAgICAg
ICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIC5leWUgPSBFeWU6Ok5vbmUgfSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChjb25maWd1cmF0aW9uVHlwZSA9PSBYUl9WSUVXX0NP
TkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX1NURVJFTyk7CisgICAgICAgIHZpZXdzLmFwcGVuZCh7
IC5hY3RpdmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5h
Y3RpdmUgPSB0cnVlLCBFeWU6OlJpZ2h0IH0pOworICAgIH0KKyAgICByZXR1cm4gdmlld3M7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikg
JiYgVVNFKE9QRU5YUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9QbGF0Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVu
eHIvUGxhdGZvcm1YUk9wZW5YUi5oCmluZGV4IDViZWJlNjk2NjkzMjdkYjJjODE1YjU1NmFlZGQx
Y2E5OWI0NmUxNzYuLjAyZDE5NGU2MjcxZWJhNmIyYTg0NDg3MDI3OTVhNjA5ZWEyOTA3M2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3Bl
blhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJP
cGVuWFIuaApAQCAtNTEsMTIgKzUxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0Q29u
ZmlndXJhdGlvblZpZXdzKCk7CiAKICAgICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMgZW51bWVyYXRl
UmVmZXJlbmNlU3BhY2VzKFhyU2Vzc2lvbiYpIGNvbnN0OwotICAgIHZvaWQgaW5pdGlhbGl6ZVJl
ZmVyZW5jZVNwYWNlKFJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9OworICAgIFhyU3BhY2Ug
Y3JlYXRlUmVmZXJlbmNlU3BhY2UoWHJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUpIGZpbmFsOwogCiAg
ICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpIGZpbmFs
OwogICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOworICAgIHZv
aWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlw
ZSkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHdhaXRVbnRpbFN0b3BwaW5n
KCk7CiAKQEAgLTY4LDYgKzY5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdEZyYW1l
KFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwogCisgICAgVmVjdG9yPFZpZXdEYXRhPiB2
aWV3cyhTZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7CisKICAgICB1c2luZyBWaWV3Q29uZmlndXJh
dGlvblByb3BlcnRpZXNNYXAgPSBIYXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBYclZp
ZXdDb25maWd1cmF0aW9uUHJvcGVydGllcywgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlw
ZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsK
ICAgICBWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgbV92aWV3Q29uZmlndXJhdGlvblBy
b3BlcnRpZXM7CiAgICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25WaWV3c01hcCA9IEhhc2hNYXA8
WHJWaWV3Q29uZmlndXJhdGlvblR5cGUsIFZlY3RvcjxYclZpZXdDb25maWd1cmF0aW9uVmlldz4s
IEludEhhc2g8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJh
aXRzPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPj47CkBAIC04MSw2ICs4NCw5IEBAIHByaXZhdGU6
CiAgICAgV29ya1F1ZXVlJiBtX3F1ZXVlOwogCiAgICAgWHJWaWV3Q29uZmlndXJhdGlvblR5cGUg
bV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBlOworICAgIFhyU3BhY2UgbV9sb2NhbFNwYWNl
IHsgWFJfTlVMTF9IQU5ETEUgfTsKKyAgICBYclNwYWNlIG1fdmlld1NwYWNlIHsgWFJfTlVMTF9I
QU5ETEUgfTsKKyAgICBYclNwYWNlIG1fc3RhZ2VTcGFjZSB7IFhSX05VTExfSEFORExFIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YkZha2VYUkRldmljZS5jcHAKaW5kZXggNTQwMThkYTdlYmI1M2RkNTE5NDJkZTc2NjE0OTY3MmZm
MWFjODQ1Ny4uYmYzODE0MmJmYzlkZTliYjc4ZGY4NDBmZGMxNWFmNGE5OGY4MTQ1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtMzIsMTQgKzMyLDIw
IEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
KyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBGYWtlWFJGcmFtZVRpbWUgPSAxNV9tczsKIAotdm9pZCBG
YWtlWFJWaWV3OjpzZXRGaWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0
IGZvdikKK3ZvaWQgRmFrZVhSVmlldzo6c2V0UHJvamVjdGlvbihjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBwcm9qZWN0aW9uKQogewotICAgIG1fZm92ID0gZm92OworICAgIHN0ZDo6Y29weShzdGQ6OmJl
Z2luKHByb2plY3Rpb24pLCBzdGQ6OmVuZChwcm9qZWN0aW9uKSwgc3RkOjpiZWdpbihtX3Byb2pl
Y3Rpb24pKTsKK30KKwordm9pZCBGYWtlWFJWaWV3OjpzZXRGaWVsZE9mVmlldyhjb25zdCBGYWtl
WFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0JiBmb3YpCit7CisgICAgbV9mb3YgPSBQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92IHsgZGVnMnJhZChmb3YudXBEZWdyZWVzKSwgZGVn
MnJhZChmb3YuZG93bkRlZ3JlZXMpLCBkZWcycmFkKGZvdi5sZWZ0RGVncmVlcyksIGRlZzJyYWQo
Zm92LnJpZ2h0RGVncmVlcykgfTsKIH0KIAogU2ltdWxhdGVkWFJEZXZpY2U6OlNpbXVsYXRlZFhS
RGV2aWNlKCkKQEAgLTc0LDMxICs4MCw3MiBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzdG9w
VGltZXIoKQogCiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQoKQogewot
ICAgIGF1dG8gY2FsbGJhY2tzID0gV1RGTW92ZShtX2NhbGxiYWNrcyk7Ci0gICAgZm9yIChhdXRv
JiBjYWxsYmFjayA6IGNhbGxiYWNrcykKLSAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICBhdXRv
IHVwZGF0ZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ1VwZGF0ZXMpOworICAgIGZvciAoYXV0byYgdXBk
YXRlIDogdXBkYXRlcykKKyAgICAgICAgdXBkYXRlKCk7CisKKyAgICBGcmFtZURhdGEgZGF0YTsK
KyAgICBpZiAobV92aWV3ZXJPcmlnaW4pIHsKKyAgICAgICAgZGF0YS5vcmlnaW4gPSAqbV92aWV3
ZXJPcmlnaW47CisgICAgICAgIGRhdGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAg
ZGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSB0cnVlOworICAgIH0KKworICAgIGlmIChtX2Zsb29yT3Jp
Z2luKQorICAgICAgICBkYXRhLmZsb29yVHJhbnNmb3JtID0geyAqbV9mbG9vck9yaWdpbiB9Owor
CisgICAgZm9yIChhdXRvJiBmYWtlVmlldyA6IG1fdmlld3MpIHsKKyAgICAgICAgRnJhbWVEYXRh
OjpWaWV3IHZpZXc7CisgICAgICAgIHZpZXcub2Zmc2V0ID0gZmFrZVZpZXctPm9mZnNldCgpOwor
ICAgICAgICBpZiAoZmFrZVZpZXctPmZpZWxkT2ZWaWV3KCkuaGFzVmFsdWUoKSkKKyAgICAgICAg
ICAgIHZpZXcucHJvamVjdGlvbiA9IHsgKmZha2VWaWV3LT5maWVsZE9mVmlldygpIH07CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHZpZXcucHJvamVjdGlvbiA9IHsgZmFrZVZpZXctPnByb2pl
Y3Rpb24oKSB9OworICAgICAgICAKKyAgICAgICAgZGF0YS52aWV3cy5hcHBlbmQodmlldyk7Cisg
ICAgfQorCisgICAgaWYgKG1fRnJhbWVDYWxsYmFjaykKKyAgICAgICAgbV9GcmFtZUNhbGxiYWNr
KFdURk1vdmUoZGF0YSkpOwogfQogCiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJh
bWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBtX2NhbGxiYWNrcy5h
cHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fRnJhbWVDYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spOwogICAgIGlmICghbV9mcmFtZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
ZnJhbWVUaW1lci5zdGFydE9uZVNob3QoRmFrZVhSRnJhbWVUaW1lKTsKIH0KIAorCitWZWN0b3I8
UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gU2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzKFBs
YXRmb3JtWFI6OlNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7CisgICAgaWYgKG1vZGUgPT0gUGxh
dGZvcm1YUjo6U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKQorICAgICAgICByZXR1cm4geyB7IC5h
Y3RpdmUgPSB0cnVlLCBQbGF0Zm9ybVhSOjpFeWU6OkxlZnQgfSwgeyAuYWN0aXZlID0gdHJ1ZSwg
UGxhdGZvcm1YUjo6RXllOjpSaWdodCB9IH07CisKKyAgICByZXR1cm4geyB7IC5hY3RpdmUgPSB0
cnVlLCBQbGF0Zm9ybVhSOjpFeWU6Ok5vbmUgfSB9OworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2
aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jKQoreworICAg
IG1fcGVuZGluZ1VwZGF0ZXMuYXBwZW5kKFdURk1vdmUoZnVuYykpOworfQorCisKIFdlYkZha2VY
UkRldmljZTo6V2ViRmFrZVhSRGV2aWNlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFdlYkZha2VYUkRl
dmljZTo6c2V0Vmlld3MoY29uc3QgVmVjdG9yPEZha2VYUlZpZXdJbml0PiYgdmlld3MpCiB7Ci0g
ICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4mIGRldmljZVZpZXdzID0gbV9kZXZpY2Uudmlld3Mo
KTsKLSAgICBkZXZpY2VWaWV3cy5jbGVhcigpOworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0
RnJhbWUoW3RoaXMsIHZpZXdzXSgpIHsKKyAgICAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4g
ZGV2aWNlVmlld3M7CiAKLSAgICAvLyBUT0RPOiBkbyBpbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS4K
LSAgICBmb3IgKGF1dG8mIHZpZXdJbml0IDogdmlld3MpIHsKLSAgICAgICAgYXV0byB2aWV3ID0g
cGFyc2VWaWV3KHZpZXdJbml0KTsKLSAgICAgICAgaWYgKCF2aWV3Lmhhc0V4Y2VwdGlvbigpKQot
ICAgICAgICAgICAgZGV2aWNlVmlld3MuYXBwZW5kKHZpZXcucmVsZWFzZVJldHVyblZhbHVlKCkp
OwotICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiB2aWV3SW5pdCA6IHZpZXdzKSB7CisgICAgICAg
ICAgICBhdXRvIHZpZXcgPSBwYXJzZVZpZXcodmlld0luaXQpOworICAgICAgICAgICAgaWYgKCF2
aWV3Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGRldmljZVZpZXdzLmFwcGVuZCh2
aWV3LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fZGV2aWNl
LnNldFZpZXdzKFdURk1vdmUoZGV2aWNlVmlld3MpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJG
YWtlWFJEZXZpY2U6OmRpc2Nvbm5lY3QoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlz
ZSkKQEAgLTEwOCw3MSArMTU1LDczIEBAIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpkaXNjb25uZWN0
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAKIHZvaWQgV2ViRmFrZVhSRGV2
aWNlOjpzZXRWaWV3ZXJPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IG9yaWdpbiwgYm9v
bCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIGF1dG8gcmlnaWRUcmFuc2Zvcm0gPSBwYXJzZVJp
Z2lkVHJhbnNmb3JtKG9yaWdpbik7Ci0gICAgaWYgKHJpZ2lkVHJhbnNmb3JtLmhhc0V4Y2VwdGlv
bigpKQorICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOworICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFRP
RE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNldFZpZXdlck9y
aWdpbihyaWdpZFRyYW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci0gICAgbV9kZXZpY2Uu
c2V0RW11bGF0ZWRQb3NpdGlvbihlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICBhdXRvIHBvc2UgPSBy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4
dEZyYW1lKFt0aGlzLCBwb3NlID0gV1RGTW92ZShwb3NlKSwgZW11bGF0ZWRQb3NpdGlvbl0oKSBt
dXRhYmxlIHsKKyAgICAgICAgbV9kZXZpY2Uuc2V0Vmlld2VyT3JpZ2luKFdURk1vdmUocG9zZSkp
OworICAgICAgICBtX2RldmljZS5zZXRFbXVsYXRlZFBvc2l0aW9uKGVtdWxhdGVkUG9zaXRpb24p
OworICAgIH0pOwogfQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6Y2xlYXJWaWV3ZXJPcmlnaW4o
KQogewotICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2
aWNlLnNldFZpZXdlck9yaWdpbihudWxscHRyKTsKKyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4
dEZyYW1lKFt0aGlzXSgpIHsKKyAgICAgICAgbV9kZXZpY2Uuc2V0Vmlld2VyT3JpZ2luKFdURjo6
bnVsbG9wdCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZVZp
c2liaWxpdHlDaGFuZ2UoWFJWaXNpYmlsaXR5U3RhdGUpCiB7CiB9CiAKLXZvaWQgV2ViRmFrZVhS
RGV2aWNlOjpzZXRCb3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+KQordm9p
ZCBXZWJGYWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQ
b2ludD4mJikKIHsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNldEZsb29yT3JpZ2luKEZh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBvcmlnaW4pCiB7Ci0gICAgYXV0byByaWdpZFRyYW5zZm9y
bSA9IHBhcnNlUmlnaWRUcmFuc2Zvcm0ob3JpZ2luKTsKLSAgICBpZiAocmlnaWRUcmFuc2Zvcm0u
aGFzRXhjZXB0aW9uKCkpCisgICAgYXV0byByZXN1bHQgPSBwYXJzZVJpZ2lkVHJhbnNmb3JtKG9y
aWdpbik7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gVE9ETzogZG8gaW4gbmV4dCBhbmltYXRpb24gZnJhbWUuCi0gICAgbV9kZXZpY2Uu
c2V0Rmxvb3JPcmlnaW4ocmlnaWRUcmFuc2Zvcm0ucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAg
IGF1dG8gcG9zZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIG1fZGV2aWNl
LnNjaGVkdWxlT25OZXh0RnJhbWUoW3RoaXMsIHBvc2UgPSBXVEZNb3ZlKHBvc2UpXSgpIG11dGFi
bGUgeworICAgICAgICBtX2RldmljZS5zZXRGbG9vck9yaWdpbihXVEZNb3ZlKHBvc2UpKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OmNsZWFyRmxvb3JPcmlnaW4oKQogewot
ICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNl
dEZsb29yT3JpZ2luKG51bGxwdHIpOworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUo
W3RoaXNdKCkgeworICAgICAgICBtX2RldmljZS5zZXRGbG9vck9yaWdpbihXVEY6Om51bGxvcHQp
OworICAgIH0pOwogfQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVSZXNldFBvc2Uo
KQogewogfQogCisKIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUkRldmlj
ZTo6c2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oRmFrZVhSSW5wdXRTb3VyY2VJbml0KQog
ewogICAgIHJldHVybiBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0ZSgpOwogfQogCi1F
eGNlcHRpb25PcjxSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4+IFdlYkZha2VYUkRldmljZTo6cGFy
c2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmIGluaXQpCitF
eGNlcHRpb25PcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gV2ViRmFrZVhS
RGV2aWNlOjpwYXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5p
dCYgaW5pdCkKIHsKICAgICBpZiAoaW5pdC5wb3NpdGlvbi5zaXplKCkgIT0gMyB8fCBpbml0Lm9y
aWVudGF0aW9uLnNpemUoKSAhPSA0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVy
cm9yIH07CiAKLSAgICBET01Qb2ludEluaXQgcG9zaXRpb247Ci0gICAgcG9zaXRpb24ueCA9IGlu
aXQucG9zaXRpb25bMF07Ci0gICAgcG9zaXRpb24ueSA9IGluaXQucG9zaXRpb25bMV07Ci0gICAg
cG9zaXRpb24ueiA9IGluaXQucG9zaXRpb25bMl07Ci0KLSAgICBET01Qb2ludEluaXQgb3JpZW50
YXRpb247Ci0gICAgb3JpZW50YXRpb24ueCA9IGluaXQub3JpZW50YXRpb25bMF07Ci0gICAgb3Jp
ZW50YXRpb24ueSA9IGluaXQub3JpZW50YXRpb25bMV07Ci0gICAgb3JpZW50YXRpb24ueiA9IGlu
aXQub3JpZW50YXRpb25bMl07Ci0gICAgb3JpZW50YXRpb24udyA9IGluaXQub3JpZW50YXRpb25b
M107CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2UgcG9zZTsKKyAgICBw
b3NlLnBvc2l0aW9uID0geyBpbml0LnBvc2l0aW9uWzBdLCBpbml0LnBvc2l0aW9uWzFdLCBpbml0
LnBvc2l0aW9uWzJdIH07CisgICAgcG9zZS5vcmllbnRhdGlvbiA9IHsgaW5pdC5vcmllbnRhdGlv
blswXSwgaW5pdC5vcmllbnRhdGlvblsxXSwgaW5pdC5vcmllbnRhdGlvblsyXSwgaW5pdC5vcmll
bnRhdGlvblszXSB9OwogCi0gICAgcmV0dXJuIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShw
b3NpdGlvbiwgb3JpZW50YXRpb24pOworICAgIHJldHVybiBwb3NlOwogfQogCiBFeGNlcHRpb25P
cjxSZWY8RmFrZVhSVmlldz4+IFdlYkZha2VYUkRldmljZTo6cGFyc2VWaWV3KGNvbnN0IEZha2VY
UlZpZXdJbml0JiBpbml0KQpAQCAtMTgyLDIyICsyMzEsMTcgQEAgRXhjZXB0aW9uT3I8UmVmPEZh
a2VYUlZpZXc+PiBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyhjb25zdCBGYWtlWFJWaWV3SW5p
dCYgaW4KIAogICAgIGlmIChpbml0LnByb2plY3Rpb25NYXRyaXguc2l6ZSgpICE9IDE2KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Ci0gICAgZmFrZVZpZXctPnZpZXco
KS0+c2V0UHJvamVjdGlvbk1hdHJpeChpbml0LnByb2plY3Rpb25NYXRyaXgpOworICAgIGZha2VW
aWV3LT5zZXRQcm9qZWN0aW9uKGluaXQucHJvamVjdGlvbk1hdHJpeCk7CiAKICAgICBhdXRvIHZp
ZXdPZmZzZXQgPSBwYXJzZVJpZ2lkVHJhbnNmb3JtKGluaXQudmlld09mZnNldCk7CiAgICAgaWYg
KHZpZXdPZmZzZXQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB2aWV3T2Zmc2V0LnJl
bGVhc2VFeGNlcHRpb24oKTsKLSAgICBmYWtlVmlldy0+dmlldygpLT5zZXRUcmFuc2Zvcm0odmll
d09mZnNldC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgZmFrZVZpZXctPnNldE9mZnNldCh2
aWV3T2Zmc2V0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIAogICAgIGZha2VWaWV3LT5zZXRSZXNv
bHV0aW9uKGluaXQucmVzb2x1dGlvbik7CiAKICAgICBpZiAoaW5pdC5maWVsZE9mVmlldykgewog
ICAgICAgICBmYWtlVmlldy0+c2V0RmllbGRPZlZpZXcoaW5pdC5maWVsZE9mVmlldy52YWx1ZSgp
KTsKLSAgICAgICAgLy8gVE9ETzogU2V0IHZpZXfigJlzIHByb2plY3Rpb24gbWF0cml4IHRvIHRo
ZSBwcm9qZWN0aW9uIG1hdHJpeAotICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZmll
bGQgb2YgdmlldywgYW5kIGRlcHRoIHZhbHVlcyBlcXVhbCB0bwotICAgICAgICAvLyBkZXB0aE5l
YXIgYW5kIGRlcHRoRmFyIG9mIGFueSBYUlNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZp
Y2UuCi0gICAgICAgIC8vIElmIHRoZXJlIGN1cnJlbnRseSBpcyBub25lLCB1c2UgdGhlIGRlZmF1
bHQgdmFsdWVzIG9mIG5lYXI9MC4xLAotICAgICAgICAvLyBmYXI9MTAwMC4wLgogICAgIH0KIAog
ICAgIHJldHVybiBmYWtlVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmlj
ZS5oCmluZGV4IDM5MWJmYzM0N2VlZjlhYWFmMTdiZDJiYThiNmJhNDM2ZjAwMDQ2ZDUuLjNhNmIw
ZTg1NzY1M2YzN2M0ZDE4YzYxMTg3YzMxMmU5ZDgxN2RiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9XZWJGYWtlWFJEZXZpY2UuaApAQCAtMzMsOCArMzMsNiBAQAogI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgIldl
YkZha2VYUklucHV0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0u
aCIKLSNpbmNsdWRlICJXZWJYUlZpZXcuaCIKICNpbmNsdWRlICJYUlZpc2liaWxpdHlTdGF0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtNDMsMjEgKzQxLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZha2VYUlZpZXcg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGYWtlWFJWaWV3PiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxGYWtlWFJWaWV3PiBjcmVhdGUoWFJFeWUgZXllKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEZha2VYUlZpZXcoZXllKSk7IH0KKyAgICB1c2luZyBQb3NlID0gUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OlBvc2U7CisgICAgdXNpbmcgRm92ID0gUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OkZvdjsKIAotICAgIFJlZlB0cjxXZWJYUlZpZXc+IHZpZXcoKSB7IHJldHVy
biBtX3ZpZXc7IH0KLSAgICB2b2lkIHNldFJlc29sdXRpb24oRmFrZVhSVmlld0luaXQ6OkRldmlj
ZVJlc29sdXRpb24gcmVzb2x1dGlvbikgeyBtX3Jlc29sdXRpb24gPSByZXNvbHV0aW9uOyB9Ci0g
ICAgdm9pZCBzZXRGaWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0KTsK
KyAgICBYUkV5ZSBleWUoKSBjb25zdCB7IHJldHVybiBtX2V5ZTsgfQorICAgIGNvbnN0IFBvc2Um
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgY29uc3Qgc3RkOjphcnJh
eTxmbG9hdCwgMTY+JiBwcm9qZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uOyB9
CisgICAgY29uc3QgT3B0aW9uYWw8Rm92PiYgZmllbGRPZlZpZXcoKSBjb25zdCB7IHJldHVybiBt
X2Zvdjt9CiAKKyAgICB2b2lkIHNldFJlc29sdXRpb24oRmFrZVhSVmlld0luaXQ6OkRldmljZVJl
c29sdXRpb24gcmVzb2x1dGlvbikgeyBtX3Jlc29sdXRpb24gPSByZXNvbHV0aW9uOyB9CisgICAg
dm9pZCBzZXRPZmZzZXQoUG9zZSYmIG9mZnNldCkgeyBtX29mZnNldCA9IFdURk1vdmUob2Zmc2V0
KTsgfQorICAgIHZvaWQgc2V0UHJvamVjdGlvbihjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAg
dm9pZCBzZXRGaWVsZE9mVmlldyhjb25zdCBGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0
Jik7CiBwcml2YXRlOgogICAgIEZha2VYUlZpZXcoWFJFeWUgZXllKQotICAgIHsKLSAgICAgICAg
bV92aWV3ID0gV2ViWFJWaWV3OjpjcmVhdGUoKTsKLSAgICAgICAgbV92aWV3LT5zZXRFeWUoZXll
KTsKLSAgICB9CisgICAgICAgIDogbV9leWUoZXllKSB7IH0KKwogCi0gICAgUmVmUHRyPFdlYlhS
Vmlldz4gbV92aWV3OworICAgIFhSRXllIG1fZXllOwogICAgIEZha2VYUlZpZXdJbml0OjpEZXZp
Y2VSZXNvbHV0aW9uIG1fcmVzb2x1dGlvbjsKLSAgICBGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZp
ZXdJbml0IG1fZm92OworICAgIFBvc2UgbV9vZmZzZXQ7CisgICAgc3RkOjphcnJheTxmbG9hdCwg
MTY+IG1fcHJvamVjdGlvbjsKKyAgICBPcHRpb25hbDxGb3Y+IG1fZm92OwogfTsKIAogY2xhc3Mg
U2ltdWxhdGVkWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKQEAg
LTY1LDMxICs3MCwzNSBAQCBjbGFzcyBTaW11bGF0ZWRYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBQ
bGF0Zm9ybVhSOjpEZXZpY2UgewogcHVibGljOgogICAgIFNpbXVsYXRlZFhSRGV2aWNlKCk7CiAg
ICAgflNpbXVsYXRlZFhSRGV2aWNlKCk7Ci0gICAgdm9pZCBzZXROYXRpdmVCb3VuZHNHZW9tZXRy
eShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+IGdlb21ldHJ5KSB7IG1fbmF0aXZlQm91bmRzR2Vv
bWV0cnkgPSBnZW9tZXRyeTsgfQotICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKFJlZlB0cjxXZWJY
UlJpZ2lkVHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX3ZpZXdlck9yaWdpbiA9IFdURk1vdmUob3Jp
Z2luKTsgfQotICAgIHZvaWQgc2V0Rmxvb3JPcmlnaW4oUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgb3JpZ2luKSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KKyAgICB2
b2lkIHNldFZpZXdzKFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiYgdmlld3MpIHsgbV92aWV3cyA9
IFdURk1vdmUodmlld3MpOyB9CisgICAgdm9pZCBzZXROYXRpdmVCb3VuZHNHZW9tZXRyeShjb25z
dCBWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+JiBnZW9tZXRyeSkgeyBtX25hdGl2ZUJvdW5kc0dl
b21ldHJ5ID0gZ2VvbWV0cnk7IH0KKyAgICB2b2lkIHNldFZpZXdlck9yaWdpbihPcHRpb25hbDxG
cmFtZURhdGE6OlBvc2U+JiYgb3JpZ2luKSB7IG1fdmlld2VyT3JpZ2luID0gV1RGTW92ZShvcmln
aW4pOyB9CisgICAgdm9pZCBzZXRGbG9vck9yaWdpbihPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+
JiYgb3JpZ2luKSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KICAgICB2b2lk
IHNldEVtdWxhdGVkUG9zaXRpb24oYm9vbCBlbXVsYXRlZCkgeyBtX2VtdWxhdGVkUG9zaXRpb24g
PSBlbXVsYXRlZDsgfQogICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiB2aWV3cygpIHsgcmV0
dXJuIG1fdmlld3M7IH0KICAgICB2b2lkIHNldFN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24o
Ym9vbCBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKSB7IG1fc3VwcG9ydHNTaHV0ZG93bk5v
dGlmaWNhdGlvbiA9IHN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb247IH0KICAgICB2b2lkIHNp
bXVsYXRlU2h1dGRvd25Db21wbGV0ZWQoKTsKKyAgICB2b2lkIHNjaGVkdWxlT25OZXh0RnJhbWUo
RnVuY3Rpb248dm9pZCgpPiYmKTsKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tp
bmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQogICAgIHZv
aWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNTZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N1
cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb247IH0KICAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVu
Y2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQorICAgIFZl
Y3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpTZXNz
aW9uTW9kZSkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1l
Q2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIHN0b3BUaW1lcigpOwogICAgIHZvaWQgZnJh
bWVUaW1lckZpcmVkKCk7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+
PiBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5OwotICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3Jt
PiBtX3ZpZXdlck9yaWdpbjsKLSAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9mbG9v
ck9yaWdpbjsKKyAgICBPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+IG1fdmlld2VyT3JpZ2luOwor
ICAgIE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4gbV9mbG9vck9yaWdpbjsKICAgICBib29sIG1f
ZW11bGF0ZWRQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4g
bV92aWV3czsKICAgICBib29sIG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbiB7IGZhbHNl
IH07CiAgICAgVGltZXIgbV9mcmFtZVRpbWVyOwotICAgIFZlY3RvcjxSZXF1ZXN0RnJhbWVDYWxs
YmFjaz4gbV9jYWxsYmFja3M7CisgICAgUmVxdWVzdEZyYW1lQ2FsbGJhY2sgbV9GcmFtZUNhbGxi
YWNrOworICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdVcGRhdGVzOwogfTsK
IAogY2xhc3MgV2ViRmFrZVhSRGV2aWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRmFr
ZVhSRGV2aWNlPiB7CkBAIC0xMDYsNyArMTE1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaW11
bGF0ZVZpc2liaWxpdHlDaGFuZ2UoWFJWaXNpYmlsaXR5U3RhdGUpOwogCi0gICAgdm9pZCBzZXRC
b3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+IGJvdW5kc0Nvb3JkaW5hdGVz
KTsKKyAgICB2b2lkIHNldEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4m
JiBib3VuZHNDb29yZGluYXRlcyk7CiAKICAgICB2b2lkIHNldEZsb29yT3JpZ2luKEZha2VYUlJp
Z2lkVHJhbnNmb3JtSW5pdCk7CiAKQEAgLTEyNyw3ICsxMzYsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFdlYkZha2VYUkRldmljZSgpOwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxX
ZWJYUlJpZ2lkVHJhbnNmb3JtPj4gcGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdp
ZFRyYW5zZm9ybUluaXQmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OlBvc2U+IHBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmln
aWRUcmFuc2Zvcm1Jbml0Jik7CiAKICAgICBTaW11bGF0ZWRYUkRldmljZSBtX2RldmljZTsKIH07
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNjNlZjUyMGFlMzkxZTcwYjYyMTg5MDgyZWU2NzQyODQ4ZDRhYTNjMC4uMjRiZGM2
MmRkZTU4YmRjNWI0MjdiM2VlNGMxOGRmMmU0OGZjNTI5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIxLTAyLTE1ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPiBh
bmQgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjI1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NDExMjkxMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNYXJrIHBvc2UgcmVsYXRlZCBXZWJYUiB0ZXN0cyBhcyBwYXNzaW5nLgorCisg
ICAgICAgICogcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDItMTQgIFBl
bmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gTW92ZSBVc2VH
UFVQcm9jZXNzRm9yTWVkaWFFbmFibGVkIGZyb20gV2ViUHJlZmVyZW5jZXNJbnRlcm5hbCB0byBX
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5k
ZXggMGE2MGZmMTQ1ZGYxZGZlODI4N2YwYjMwOWRkNTRiMTg1MzcwMWE5Yi4uNjNhOTE5NWY0NzRk
ZGQwOGE5YmY4ZDlmMjg1OTQ3YmE1ZTk4MWY1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMDItMTUgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVy
bmFuZGV6QGlnYWxpYS5jb20+IGFuZCBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2Fs
aWEuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJYUiBnZXRWaWV3ZXJQb3NlIGFuZCBnZXRQ
b3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEy
MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MTEyOTEwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgcG9zZSBhbmQgcmVmZXJlbmNlIHNw
YWNlIFdlYlhSIHRlc3RzIGFzIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQ
b3NlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJl
ZmVyZW5jZVNwYWNlX3JlbGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRp
b25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVf
Z2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19tYXRjaC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRh
dGUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMS0wMi0xMiAgU2VyZ2lvIFZpbGxh
ciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIEFu
b3RoZXIgV1BUIHRlc3QgaW1wb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyRnJhbWVfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk2MjNkNGY4
YTE3Zjg1ZmY4MjdjYzU4ZTg1ODMzNTA0Zjk2NjkyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQ
b3NlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZyYW1lLmdl
dFBvc2Ugd29ya3MgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBYUkZyYW1lLmdldFBvc2Ug
d29ya3MgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdl
clBvc2VfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3Nl
Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjFiZTM5MDEzNzhkOTA2MDViYjI2M2Q2
MWJmYmU4YmRhZjIwZTBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBvc2VfZ2V0UG9z
ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJGcmFtZSBnZXRW
aWV3ZXJQb3NlKHJlZlNwYWNlKSBtYXRjaGVzIGdldFBvc2Uodmlld2VyLCByZWZTcGFjZSkuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZGY5ZjJiYTZhNTgxOWYwNGYxMGNmNTdiYmNjOWY1NTA2OTU1ZmZhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIENyZWF0aW5nIFhSUmVmZXJlbmNlU3BhY2Ug
b3JpZ2luIG9mZnNldCBvZmYgb2YgYHZpZXdlcmAgc3BhY2Ugd29ya3MuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZl
cmVuY2VTcGFjZV9yZWxhdGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9y
ZWxhdGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWVjYzFiMmJlZjgy
ZjYxYWIxYjRhYWVmOGFiMTkxMDM2NmJjZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNl
X3JlbGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNT
IEJvdW5kZWQgc3BhY2UsIHZpZXdlciBzcGFjZSwgbG9jYWwgYW5kIGxvY2FsLWZsb29yIHNwYWNl
IGhhdmUgY29ycmVjdCBwb3NlcyB3LnIudC4gZWFjaCBvdGhlcgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWQ5ZjM5MWE3NjRmNDg4YjhmN2UzMTgyY2M4NmU4MjBiMDFmMzA1NwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcmVz
b2x2ZXMgd2l0aCBnb29kIGRhdGEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZy
YW1lX2dldFZpZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlv
bkZyYW1lX2dldFZpZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZTY3
ZGFmZWU1YzNjODEwYWQ5YTI5YTNlZDVjY2Q5OWNhNTcwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lv
bl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24g
dGhlIG5leHQgZnJhbWUgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKK1BBU1MgWFJGcmFtZSBn
ZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIGltbWVyc2l2ZSBzZXNz
aW9ucworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYjU2MjFhNGUxYjM2ODFiYzRkZTI0NTdkNzljYmY1YmVkMmM4ODExCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQgQEAKKworUEFTUyBJZGVudGl0eSByZWZlcmVuY2Ugc3BhY2UgcHJvdmlkZXMg
Y29ycmVjdCBwb3NlcyBmb3IgaW5saW5lIHNlc3Npb25zCitQQVNTIElkZW50aXR5IHJlZmVyZW5j
ZSBzcGFjZSBwcm92aWRlcyBjb3JyZWN0IHBvc2VzIGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40Y2RhYzJkZTEyYTEwYzY2OWJjYjU5ODNhYTMwMmRhNTliYjY5Zjll
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0
IEBACisKK1BBU1MgWFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMK
K1BBU1MgWFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBub24taW1tZXJzaXZlIHNlc3Npb25zCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJWaWV3X21hdGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMTNmNmJjOWU2NWVjNmYxMzQ2MTNiOWUyYjFmNDcxYmNhMzU5
NDA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorCitQQVNTIFhSRnJhbWUgY29udGFpbnMgdGhlIGV4cGVjdGVkIHZpZXdzCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBk
YXRlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTAyMjE1OGYwYjVkYWM3MzMxZmM2
ZTU4N2EwMDkwZDNmNThiZDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0
cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSVmlldyBwcm9qZWN0aW9u
IG1hdHJpY2VzIHVwZGF0ZSBuZWFyIGFuZCBmYXIgZGVwdGhzIG9uIHRoZSBuZXh0IGZyYW1lCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzMyZmNkMDNm
YzUyMWY4YzhkYWM5MTM3NTYxOTdjMWFjNjE3ZWNhNy4uZGRlOTgxZTYzN2VmNDQxOGNjZTU2MzU4
ZDQ1YjAxOTg3NWNhZTU4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTYzOCwyNiArNjM4LDM2IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvCiB3ZWJr
aXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJE
ZXZpY2VfcmVxdWVzdFNlc3Npb25fbm9fbW9kZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQu
b3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZp
Y2VfcmVxdWVzdFNlc3Npb25fbm9uX2ltbWVyc2l2ZV9ub19nZXN0dXJlLmh0dHBzLmh0bWwgWyBQ
YXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9vcHRpb25hbEZlYXR1cmVzLmh0dHBzLmh0
bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkgd2Via2l0Lm9yZy9iLzIxNTYzNyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRp
b25GcmFtZS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5p
bWF0aW9uRnJhbWVfaW52YWxpZGhhbmRsZS5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X2ZlYXR1cmVzX2RldmljZVN1cHBvcnQuaHR0cHMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9i
LzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVfY2FsbGJhY2tfY2FsbHMuaHR0cHMuaHRtbCBbIFBhc3MgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFu
aW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2Iv
MjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3Jl
cXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJG
cmFtZV9nZXRQb3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBh
c3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmll
d2VyX2F2YWlsYWJpbGl0eS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5l
c3MuaHR0cHMud2luZG93Lmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNz
aW9uU3VwcG9ydGVkX2ltbWVyc2l2ZS1hci5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0
dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8y
MDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJf
Y29uc3RydWN0b3IuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZl
cl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIvbmF2aWdhdG9yX3hyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3Mg
XQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25f
c2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy5o
dG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVm
ZXJlbmNlU3BhY2VfcmVsYXRpb25zaGlwcy5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fY29uc3RydWN0b3Iu
aHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clJpZ2lkVHJhbnNmb3JtX2ludmVyc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX21hdHJpeC5odHRw
cy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
U2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25G
cmFtZV9pbnZhbGlkaGFuZGxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2VuZC5odHRwcy5odG1sIFsgUGFzcyBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19k
ZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3ByZXZlbnRfbXVsdGlwbGVfZXhjbHVzaXZlLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJT
ZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsg
UGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVf
dGltZXN0YW1wLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsg
UGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92
aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZW5kZXJfc3RhdGVfdmVydGljYWxfZm92X2ltbWVyc2l2
ZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3JlbmRlcl9zdGF0ZV91cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZW5kLmh0dHBzLmh0bWwgWyBQYXNz
IF0KIGh0dHAvd3B0L3dlYnhyL3hyU2Vzc2lvbl9lbmRfZGV2aWNlX3JlcG9ydHNfc2h1dGRvd24u
aHR0cHMuaHRtbCBbIFBhc3MgXQogaHR0cC93cHQvd2VieHIveHJTZXNzaW9uX2VuZGVkX2J5X3N5
c3RlbS5odHRwcy5odG1sIFsgUGFzcyBdCiBodHRwL3dwdC93ZWJ4ci94clNlc3Npb25fcmVqZWN0
X211bHRpcGxlX2VuZC5odHRwcy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420521</attachid>
            <date>2021-02-16 12:26:50 -0800</date>
            <delta_ts>2021-02-17 10:07:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221225-20210216212648.patch</filename>
            <type>text/plain</type>
            <size>95446</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NiNTRiNzVmZmFmNzdj
N2QyM2FjNGQxM2E4YjQxZTk2MmNkNmIyYy4uODJmNTlhOWI1M2FhNzdmNmExOTBhMmQyYWZkMTY0
MmMyNzlmNWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAyMS0wMi0xNSAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4gYW5kIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdl
dFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQxMTI5MTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBy
b3ZlIFBsYXRmb3JtWFI6OkZyYW1lRGF0YSBzdHJ1Y3QuCisgICAgICAgIC0gSW1wbGVtZW50IFdl
YlhSRnJhbWUgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZS4KKyAgICAgICAgLSBJbXBsZW1lbnQg
V2ViWFJSZWZlcmVuY2VTcGFjZSBvZmZzZXQsIG9yaWdpbiBhbmQgZWZmZWN0aXZlIHRyYW5mb3Jt
cy4KKyAgICAgICAgLSBJbXBsZW1lbnQgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UgbmF0aXZl
T3JpZ2luLgorICAgICAgICAtIEFwcGx5IGZyYW1lIHVwZGF0ZXMgaW4gV2ViWFJTZXNzaW9uLgor
ICAgICAgICAtIEltcGxlbWVudCB2aWV3cyBmb3IgT3BlblhSIGFuZCBEdW1teUlubGluZURldmlj
ZSBpbmxpbmUgc2Vzc2lvbnMuCisgICAgICAgIC0gUXVlcnkgYW5kIGNvbXBsZXRlIGFsbCB0aGUg
bmV3IEZyYW1lRGF0YSBpbiB0aGUgT3BlblhSIHBvcnQuCisgICAgICAgIC0gQ29tcGxldGUgdGhl
IFdlYkZha2VYUkRldmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorCisg
ICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgV1BUIHRlc3RzCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVtZW50IG5hdGl2ZU9y
aWdpbmEgYW5kIGdldE9mZnNldFJlZmVyZW5jZVNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Ym91
bmRzR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSRnJhbWUuY3BwOiBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0
UG9zZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
RnJhbWU6Om11c3RQb3Nlc0JlTGltaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1l
Ojpwb3B1bGF0ZVBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Z2V0Vmlld2Vy
UG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpnZXRQb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlv
bi4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSRnJhbWU6OnNldEZyYW1lRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmlkbDogYWRkIE1heVRocm93RXhjZXB0aW9uLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuY3BwOiBBZGQgV2ViWFJSaWdpZFRyYW5zZm9ybSBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXIuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJQb3NlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJQb3NlOjpXZWJY
UlBvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlBvc2U6OmlzVmlld2VyUG9zZSBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuaWRsOiBSZW1vdmUgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQor
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVt
ZW50IG9mZnNldCwgb3JpZ2luIGFuZCBlZmZlY3RpdmUgdHJhbmZvcm1zLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmZsb29yT3JpZ2luVHJhbnNmb3Jt
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVy
ZW5jZVNwYWNlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaWRsOiBBZGQgU2tpcFZUYWJsZVZhbGlkYXRpb24uCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6IEFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZy
YW1lLiBBZGQgYWN0aXZlIHZpZXdzIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Np
b246OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVl
c3RSZWZlcmVuY2VTcGFjZSk6IFVzZSBXZWFrUHRyIGluc3RlYWQgUmVmIGZvciBXZWJYUlNlc3Np
b24uCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpwb3Nlc0NhbkJlUmVwb3J0ZWQgY29uc3QpOiBhZGQKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIG5hdGl2ZU9yaWdpbiBhbmQgZWZmZWN0aXZlT3Jp
Z2luIG1lbWJlciBmdW5jdGlvbnMuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6V2ViWFJTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJTcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNlOjppc1JlZmVyZW5jZVNwYWNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzQm91bmRlZFJlZmVyZW5jZVNw
YWNlIGNvbnN0KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOiBJ
bXBsZW1lbnQgdmlld3MgZm9yIER1bW15SW5saW5lRGV2aWNlLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjp2aWV3cyBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwOiBQYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm0gaW4gdGhlIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpXZWJYUlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJWaWV3OjpzZXRQcm9qZWN0aW9uTWF0cml4KTogVXNlIHN0ZDo6YXJyYXkgdG8gbWF0Y2ggZGV2
aWNlIGRhdGEuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSVmlldzo6cHJvamVjdGlvbk1hdHJpeCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlZpZXc6OnRyYW5zZm9ybSBjb25zdCk6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSVmlld2VyUG9zZS5jcHA6IEFkZCB2aWV3cyBzZXR0ZXIuIEFkZCBzcGVjaWFs
aXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpzZXRWaWV3cyk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSVmlld2VyUG9zZS5pZGw6IFJlbW92ZSBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LiBBZGQgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9YUkV5ZS5oOiBSZXVzZSBQbGF0Zm9ybVhSIGVudW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDogQWRkIHByb2plY3Rp
b24gbWF0cml4IHV0aWxpdHkgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6IEltcHJvdmUgRnJhbWVEYXRhLgorCisgICAgICAgICogcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOiBRdWVyeSBhbmQgY29tcGxldGUgYWxs
IHRoZSBuZXcgRnJhbWVEYXRhLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpj
cmVhdGVSZWZlcmVuY2VTcGFjZSk6IGFkZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbik6IFF1ZXJ5IHJlc29s
dXRpb24gZGF0YSBmcm9tIE9wZW5YUi4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmlj
ZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKTogSW5pdGlhbGl6ZSBsb2NhbCBhbmQg
dmlldyBYclNwYWNlcy4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6aW5pdGlh
bGl6ZVJlZmVyZW5jZVNwYWNlKTogTGF6aWx5IGluaXRpYWxpemUgc3RhZ2UgWHJTcGFjZS4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6OlhyUG9zZWZUb1Bvc2UpOiBhZGQgaGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoUGxhdGZvcm1YUjo6eHJWaWV3VG9Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlvbi4K
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKTogQ29tcGxl
dGUgYWxsIHRoZSBuZXcgZnJhbWUgRGF0YQorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2
aWNlOjp2aWV3cyBjb25zdCk6IEltcGxlbWVudCB2aWV3IGRhdGEgZm9yIE9wZW5YUgorICAgICAg
ICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmg6CisKKyAgICAgICAgKiB0
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IENvbXBsZXRlIHRoZSByZXF1aXJlZCBpbXBsZW1l
bnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6RmFrZVhSVmll
dzo6c2V0UHJvamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGYWtlWFJWaWV3OjpzZXRGaWVs
ZE9mVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Vmlld3MpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhclZpZXdlck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Rmxvb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaDoKKwogMjAyMS0wMi0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBEb24ndCB1cGRhdGUgZm9ybSBjb250cm9sIGVsZW1lbnRz
IHZhbGlkaXR5IHN0YXR1cyBpZiB0aGV5IGFyZSBkZXRhY2hlZCBmcm9tIHRoZSBkb2N1bWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDQ0ZWQ2MmJkY2Q1NmZiZTgyNzk0MDFlMzA2MDM4
OGQ3M2Y0OTFmZC4uNWI5YjE3OWIyYmFhM2IxNWJiNDQ0ZDNhYzVhYjk2MTM0OGUxZDU5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTI5LDYgKzI5LDkgQEAKICNpZiBFTkFCTEUoV0VCWFIp
CiAKICNpbmNsdWRlICJET01Qb2ludFJlYWRPbmx5LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiV2ViWFJTZXNzaW9u
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzcsMjEgKzQwLDUyIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZSk7CiAKIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShk
b2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24p
LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSwgdHlwZSkpOwogfQogCi1XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVmZXJlbmNlU3BhY2VUeXBl
IHR5cGUpCi0gICAgOiBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Np
b24pLCB0eXBlKQorCitSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRl
ZFJlZmVyZW5jZVNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNz
aW9uPiYmIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZl
cmVuY2VTcGFjZVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShv
ZmZzZXQpLCB0eXBlKSk7Cit9CisKKworV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lv
bj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJl
bmNlU3BhY2VUeXBlIHR5cGUpCisgICAgOiBXZWJYUlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBX
VEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpCiB7CiB9CiAKIFdlYlhSQm91
bmRlZFJlZmVyZW5jZVNwYWNlOjp+V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoKSA9IGRlZmF1
bHQ7CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpu
YXRpdmVPcmlnaW4oKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRo
dWIuaW8vd2VieHIvI2RvbS14cnJlZmVyZW5jZXNwYWNldHlwZS1ib3VuZGVkLWZsb29yLgorICAg
IC8vIEJvdW5kZWQgZmxvb3Igc3BhY2Ugc2hvdWxkIGJlIGF0IHRoZSBzYW1lIGhlaWdodCBhcyBs
b2NhbCBmbG9vciBzcGFjZS4KKyAgICByZXR1cm4gZmxvb3JPcmlnaW5UcmFuc2Zvcm0oKTsKK30K
KwogY29uc3QgVmVjdG9yPFJlZjxET01Qb2ludFJlYWRPbmx5Pj4mIFdlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlOjpib3VuZHNHZW9tZXRyeSgpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IGdldCBk
YXRhIGZyb20gZGV2aWNlCiAgICAgcmV0dXJuIG1fYm91bmRzR2VvbWV0cnk7CiB9CiAKKworUmVm
UHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpnZXRP
ZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFu
c2Zvcm0pCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIEFTU0VSVChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKSk7CisKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhy
LyNkb20teHJyZWZlcmVuY2VzcGFjZS1nZXRvZmZzZXRyZWZlcmVuY2VzcGFjZQorICAgIC8vIFNl
dCBvZmZzZXRTcGFjZeKAmXMgb3JpZ2luIG9mZnNldCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5
aW5nIGJhc2XigJlzIG9yaWdpbiBvZmZzZXQgYnkgb3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFu
dCByZWFsbSBvZiBiYXNlLgorICAgIGF1dG8gb2Zmc2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6
Y3JlYXRlKG1fb3JpZ2luT2Zmc2V0LT5yYXdUcmFuc2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5y
YXdUcmFuc2Zvcm0oKSk7CisKKyAgICAvLyBGSVhNRTogc2V0IG9mZnNldFNwYWNl4oCZcyBib3Vu
ZHNHZW9tZXRyeSB0byBiYXNl4oCZcyBib3VuZHNHZW9tZXRyeSwgd2l0aCBlYWNoIHBvaW50IG11
bHRpcGxpZWQgYnkgdGhlIGludmVyc2Ugb2Ygb3JpZ2luT2Zmc2V0LgorICAgIHJldHVybiBjcmVh
dGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLCBtX3Nlc3Np
b24uY29weVJlZigpLCBXVEZNb3ZlKG9mZnNldCksIG1fdHlwZSk7Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5o
CmluZGV4IDcxYTlmOTcwYTczMDFiZDRmMDRlNGMwYmJlZTgxZWFlZWEzZjQ0ZDcuLjZlMTIzY2Ey
MTVlZGIzYTc1ZTdiMzkzN2IwYWRmNjhmOGZmNTEwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKQEAg
LTI1LDEzICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lmIEVOQUJMRShXRUJYUikKKwog
I2luY2x1ZGUgIldlYlhSUmVmZXJlbmNlU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lm
IEVOQUJMRShXRUJYUikKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01Qb2ludFJl
YWRPbmx5OwpAQCAtNDAsMTcgKzQwLDI0IEBAIGNsYXNzIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlIDogcHVibGljIFdlYlhSUmVmZXJlbmNlU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJY
UlNlc3Npb24+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9u
PiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwog
CiAgICAgdmlydHVhbCB+V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoKTsKIAorICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9yaWdpbigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFZl
Y3RvcjxSZWY8RE9NUG9pbnRSZWFkT25seT4+JiBib3VuZHNHZW9tZXRyeSgpIGNvbnN0OworICAg
IFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25z
dCBXZWJYUlJpZ2lkVHJhbnNmb3JtJikgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVy
ZW5jZVNwYWNlVHlwZSk7CisgICAgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQm
LCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZl
cmVuY2VTcGFjZVR5cGUpOworCisgICAgYm9vbCBpc0JvdW5kZWRSZWZlcmVuY2VTcGFjZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFZlY3RvcjxSZWY8RE9NUG9pbnRSZWFk
T25seT4+IG1fYm91bmRzR2VvbWV0cnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VCWFJTUEFDRShXZWJYUkJvdW5kZWRSZWZlcmVuY2VT
cGFjZSwgaXNCb3VuZGVkUmVmZXJlbmNlU3BhY2UoKSkKKwogI2VuZGlmIC8vIEVOQUJMRShXRUJY
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IGYy
Nzg3NjFiMGE3YjdkMjlkMTc5NDIyMzUwYTJhYTE5OGEyM2JkZWMuLjVmODlhM2I4ODMwYTA1ZGE5
NDc5NTAyYWRlZWRmZTlmN2MxMjI0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmNwcApAQCAtMjgsMzUgKzI4LDIyMSBAQAogCiAjaWYgRU5BQkxFKFdFQlhS
KQogCisjaW5jbHVkZSAiV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaCIKKyNpbmNsdWRlICJX
ZWJYUlJlZmVyZW5jZVNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiV2ViWFJWaWV3ZXJQb3NlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChX
ZWJYUkZyYW1lKTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6OmNyZWF0ZShSZWY8V2Vi
WFJTZXNzaW9uPiYmIHNlc3Npb24pCitSZWY8V2ViWFJGcmFtZT4gV2ViWFJGcmFtZTo6Y3JlYXRl
KFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgSXNBbmltYXRpb25GcmFtZSBpc0FuaW1hdGlv
bkZyYW1lKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUoV1RGTW92ZShz
ZXNzaW9uKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUoV1RGTW92ZShz
ZXNzaW9uKSwgaXNBbmltYXRpb25GcmFtZSkpOwogfQogCi1XZWJYUkZyYW1lOjpXZWJYUkZyYW1l
KFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKLSAgICA6IG1fc2Vzc2lvbihXVEZNb3ZlKHNl
c3Npb24pKQorV2ViWFJGcmFtZTo6V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Np
b24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKKyAgICA6IG1faXNBbmltYXRp
b25GcmFtZShpc0FuaW1hdGlvbkZyYW1lID09IElzQW5pbWF0aW9uRnJhbWU6OlllcykKKyAgICAs
IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQogewogfQogCiBXZWJYUkZyYW1lOjp+V2ViWFJG
cmFtZSgpID0gZGVmYXVsdDsKIAogCi1SZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBXZWJYUkZyYW1l
OjpnZXRWaWV3ZXJQb3NlKGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKQorCitib29sIFdlYlhS
RnJhbWU6OmlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5jZVNwYWNlKGNvbnN0
IFdlYlhSU3BhY2UmIHNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJikgY29uc3QKK3sKKyAgICBpZiAo
IWlzPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPihzcGFjZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIEZJWE1FOiByZXR1cm4gdHJ1ZSB3aGVuZXZlciB0aGUgZGlzdGFuY2Ug
ZnJvbSB0aGUgYm91bmRlZCBnZW9tZXRyeSBvZgorICAgIC8vIHxzcGFjZXwgdG8gdGhlIG5hdGl2
ZSBvcmlnaW4gb2YgfG90aGVyfCBzcGFjZSBpcyBncmVhdGVyIHRoYW4gMW0KKyAgICAvLyAoc3Vn
Z2VzdGVkIGJ5IHNwZWNzKS4KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJYUkZy
YW1lOjppc0xvY2FsUmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYgc3BhY2UpIGNvbnN0
Cit7CisgICAgaWYgKCFpczxXZWJYUlJlZmVyZW5jZVNwYWNlPihzcGFjZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGF1dG8gdHlwZSA9IGRvd25jYXN0PFdlYlhSUmVmZXJlbmNlU3Bh
Y2U+KHNwYWNlKS50eXBlKCk7CisgICAgaWYgKHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6
OkxvY2FsIHx8IHR5cGUgPT0gWFJSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2FsRmxvb3IpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNwb3Nlcy1tdXN0LWJlLWxpbWl0ZWQKK2Jvb2wg
V2ViWFJGcmFtZTo6bXVzdFBvc2VzQmVMaW1pdGVkKGNvbnN0IFdlYlhSU3BhY2UmIHNwYWNlLCBj
b25zdCBXZWJYUlNwYWNlJiBiYXNlU3BhY2UpIGNvbnN0Cit7CisgICAgaWYgKGlzT3V0c2lkZU5h
dGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5jZVNwYWNlKHNwYWNlLCBiYXNlU3BhY2UpCisgICAg
ICAgIHx8IGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09mQm91bmRlZFJlZmVyZW5jZVNwYWNlKGJhc2VT
cGFjZSwgc3BhY2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChpc0xvY2FsUmVm
ZXJlbmNlU3BhY2Uoc3BhY2UpIHx8IGlzTG9jYWxSZWZlcmVuY2VTcGFjZShiYXNlU3BhY2UpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZGlzdGFuY2UgYmV0d2VlbiBuYXRpdmUgb3JpZ2lu
cyBvZiBzcGFjZXMgaXMgZ3JlYXRlcgorICAgICAgICAvLyB0aGFuIDE1bSAoc3VnZ2VzdGVkIGJ5
IHNwZWNzKSByZXR1cm4gdHJ1ZS4KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKwor
c3RydWN0IFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2UgeworICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zZm9ybTsKKyAgICBib29sIGVtdWxhdGVkUG9zaXRpb24geyBmYWxzZSB9OworfTsK
KworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcG9wdWxhdGUtdGhl
LXBvc2UKK0V4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+PiBX
ZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBX
ZWJYUlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlKQoreworICAgIC8v
IDEuIElmIGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9hY3RpdmUpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgLy8g
Mi4gTGV0IHNlc3Npb24gYmUgZnJhbWXigJlzIHNlc3Npb24gb2JqZWN0LgorICAgIC8vIDMuIElm
IHNwYWNl4oCZcyBzZXNzaW9uIGRvZXMgbm90IGVxdWFsIHNlc3Npb24sIHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoJnNwYWNlLnNlc3Np
b24oKSAhPSBtX3Nlc3Npb24ucHRyKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworCisgICAgLy8gNC4gSWYgYmFzZVNwYWNl4oCZcyBzZXNzaW9uIGRv
ZXMgbm90IGVxdWFsIHNlc3Npb24sIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoJmJhc2VTcGFjZS5zZXNzaW9uKCkgIT0gbV9zZXNzaW9u
LnB0cigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIC8vIDUuIENoZWNrIGlmIHBvc2VzIG1heSBiZSByZXBvcnRlZCBhbmQsIGlmIG5vdCwg
dGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1f
c2Vzc2lvbi0+cG9zZXNDYW5CZVJlcG9ydGVkKGRvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKKworICAgIC8vIDYuIExldCBsaW1pdCBiZSB0aGUg
cmVzdWx0IG9mIHdoZXRoZXIgcG9zZXMgbXVzdCBiZSBsaW1pdGVkIGJldHdlZW4gc3BhY2UgYW5k
IGJhc2VTcGFjZS4KKyAgICBib29sIGxpbWl0ID0gbXVzdFBvc2VzQmVMaW1pdGVkKHNwYWNlLCBi
YXNlU3BhY2UpOworCisgICAgLy8gNy4gTGV0IHRyYW5zZm9ybSBiZSBwb3Nl4oCZcyB0cmFuc2Zv
cm0uCisgICAgLy8gOC4gUXVlcnkgdGhlIFhSIGRldmljZSdzIHRyYWNraW5nIHN5c3RlbSBmb3Ig
c3BhY2XigJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNwYWNlIGF0IHRoZSBmcmFtZeKAmXMgdGlt
ZS4KKworICAgIGlmICghbV9kYXRhLmlzVHJhY2tpbmdWYWxpZCkgeworICAgICAgICAvLyBGSVhN
RTogY2hlY2sgaWYgc3BhY2XigJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNwYWNlIGhhcyBiZWVu
IGRldGVybWluZWQgaW4gdGhlIHBhc3QuCisgICAgICAgIC8vIEFueXdheSB0aGlzIGVtdWxhdGlv
biBpcyB1c3VhbGx5IHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0gaW4gdGhlIHBvc2UgKGUuZy4gT3Bl
blhSKQorICAgICAgICAvLyBzbyB3ZSBzaG91bGRuJ3QgaGl0IHRoaXMgcGF0aCBpbiBtb3N0IFhS
UGxhdGZvcm0gcG9ydHMuCisgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCB9OworICAgIH0K
KworICAgIGF1dG8gYmFzZVRyYW5zZm9ybSA9IGJhc2VTcGFjZS5lZmZlY3RpdmVPcmlnaW4oKTsK
KyAgICBpZiAoIWJhc2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCB9OworCisgICAgYXV0byB0cmFuc2Zvcm0gPSAgKmJhc2VUcmFuc2Zvcm0u
aW52ZXJzZSgpICogc3BhY2UuZWZmZWN0aXZlT3JpZ2luKCk7CisgICAgY29uc3QgYm9vbCBlbXVs
YXRlZFBvc2l0aW9uID0gbV9kYXRhLmlzUG9zaXRpb25FbXVsYXRlZCB8fCAhbV9kYXRhLmlzUG9z
aXRpb25WYWxpZDsKKworICAgIGlmIChsaW1pdCkgeworICAgICAgICAvLyBGSVhNRTogYXBwbHkg
cG9zZSBsaW1pdHMgbG9naWMKKyAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1
Yi5pby93ZWJ4ci8jcG9zZXMtbXVzdC1iZS1saW1pdGVkCisgICAgfQorCisgICAgcmV0dXJuIHsg
UG9wdWxhdGVkUG9zZSB7IHRyYW5zZm9ybSwgZW11bGF0ZWRQb3NpdGlvbiB9IH07Cit9CisKKy8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cmZyYW1lLWdldHZp
ZXdlcnBvc2UKK0V4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+PiBXZWJYUkZyYW1l
OjpnZXRWaWV3ZXJQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgV2ViWFJSZWZl
cmVuY2VTcGFjZSYgcmVmZXJlbmNlU3BhY2UpCit7CisgICAgLy8gMS4gTGV0IGZyYW1lIGJlIHRo
aXMuCisgICAgLy8gMi4gTGV0IHNlc3Npb24gYmUgZnJhbWXigJlzIHNlc3Npb24gb2JqZWN0Lgor
ICAgIC8vIDMuIElmIGZyYW1l4oCZcyBhbmltYXRpb25GcmFtZSBib29sZWFuIGlzIGZhbHNlLCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYg
KCFtX2lzQW5pbWF0aW9uRnJhbWUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciB9OworCisgICAgLy8gNC4gTGV0IHBvc2UgYmUgYSBuZXcgWFJWaWV3ZXJQb3Nl
IG9iamVjdCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Ygc2Vzc2lvbi4KKyAgICAvLyA1LiBQb3B1
bGF0ZSB0aGUgcG9zZSBvZiBzZXNzaW9u4oCZcyB2aWV3ZXIgcmVmZXJlbmNlIHNwYWNlIGluIHJl
ZmVyZW5jZVNwYWNlIGF0IHRoZSB0aW1lIHJlcHJlc2VudGVkIGJ5IGZyYW1lIGludG8gcG9zZS4K
KyAgICBhdXRvIHBvcHVsYXRlUG9zZVJlc3VsdCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgbV9z
ZXNzaW9uLT52aWV3ZXJSZWZlcmVuY2VTcGFjZSgpLCByZWZlcmVuY2VTcGFjZSk7CisgICAgaWYg
KHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHBvcHVs
YXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAvLyA2LiBJZiBwb3NlIGlz
IG51bGwgcmV0dXJuIG51bGwuCisgICAgYXV0byBwb3B1bGF0ZVZhbHVlID0gcG9wdWxhdGVQb3Nl
UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmICghcG9wdWxhdGVWYWx1ZS5oYXNW
YWx1ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxXZWJYUlZpZXdl
clBvc2U+IHBvc2UgPSBXZWJYUlZpZXdlclBvc2U6OmNyZWF0ZShXZWJYUlJpZ2lkVHJhbnNmb3Jt
OjpjcmVhdGUocG9wdWxhdGVWYWx1ZS0+dHJhbnNmb3JtKSwgcG9wdWxhdGVWYWx1ZS0+ZW11bGF0
ZWRQb3NpdGlvbik7CisKKyAgICAvLyA3LiBMZXQgeHJ2aWV3cyBiZSBhbiBlbXB0eSBsaXN0Lgor
ICAgIFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4geHJWaWV3czsKKyAgICAvLyA4LiBGb3IgZWFjaCBh
Y3RpdmUgdmlldyB2aWV3IGluIHRoZSBsaXN0IG9mIHZpZXdzIG9uIHNlc3Npb24sIHBlcmZvcm0g
dGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBmb3IgKGF1dG8mIHZpZXcgOiBtX3Nlc3Npb24tPnZp
ZXdzKCkpIHsKKyAgICAgICAgYXV0byBpbmRleCA9IHhyVmlld3Muc2l6ZSgpOworICAgICAgICBp
ZiAoIXZpZXcuYWN0aXZlIHx8IG1fZGF0YS52aWV3cy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAvLyA4LjEgTGV0IHhydmlldyBiZSBhIG5ldyBYUlZp
ZXcgb2JqZWN0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBzZXNzaW9uLgorICAgICAgICAvLyA4
LjIgSW5pdGlhbGl6ZSB4cnZpZXfigJlzIHVuZGVybHlpbmcgdmlldyB0byB2aWV3LgorICAgICAg
ICAvLyA4LjMgSW5pdGlhbGl6ZSB4cnZpZXfigJlzIGV5ZSB0byB2aWV34oCZcyBleWUuCisgICAg
ICAgIC8vIDguNCBJbml0aWFsaXplIHhydmlld+KAmXMgZnJhbWUgdGltZSB0byBmcmFtZeKAmXMg
dGltZS4KKyAgICAgICAgLy8gOC41IEluaXRpYWxpemUgeHJ2aWV34oCZcyBzZXNzaW9uIHRvIHNl
c3Npb24uCisgICAgICAgIC8vIDguNi4gTGV0IG9mZnNldCBiZSBhbiBuZXcgWFJSaWdpZFRyYW5z
Zm9ybSBvYmplY3QgZXF1YWwgdG8gdGhlIHZpZXcgb2Zmc2V0IG9mIHZpZXcgaW4gdGhlIHJlbGV2
YW50IHJlYWxtIG9mIHNlc3Npb24uCisgICAgICAgIC8vIDguNy4gU2V0IHhydmlld+KAmXMgdHJh
bnNmb3JtIHByb3BlcnR5IHRvIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgdGhlIFhSVmlld2Vy
UG9zZSdzIHRyYW5zZm9ybSBieSB0aGUgb2Zmc2V0IHRyYW5zZm9ybSBpbiB0aGUgcmVsZXZhbnQg
cmVhbG0gb2Ygc2Vzc2lvbgorICAgICAgICBhdXRvIG9mZnNldCA9IG1hdHJpeEZyb21Qb3NlKG1f
ZGF0YS52aWV3c1tpbmRleF0ub2Zmc2V0KTsKKyAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSBXZWJY
UlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUocG9zZS0+dHJhbnNmb3JtKCkucmF3VHJhbnNmb3JtKCkg
KiBvZmZzZXQpOworCisgICAgICAgIC8vIFNldCBwcm9qZWN0aW9uIG1hdHJpeCBmb3IgZWFjaCB2
aWV3CisgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDE2PiBwcm9qZWN0aW9uID0gc3dpdGNoT24o
bV9kYXRhLnZpZXdzW2luZGV4XS5wcm9qZWN0aW9uLCBbJl0oY29uc3QgUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OkZvdiYgZm92KSB7CisgICAgICAgICAgICBkb3VibGUgbmVhciA9IG1f
c2Vzc2lvbi0+cmVuZGVyU3RhdGUoKS5kZXB0aE5lYXIoKTsKKyAgICAgICAgICAgIGRvdWJsZSBm
YXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuZGVwdGhGYXIoKTsKKyAgICAgICAgICAgIHJl
dHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVByb2plY3Rpb24oZm92LnVwLCBmb3YuZG93
biwgZm92LmxlZnQsIGZvdi5yaWdodCwgbmVhciwgZmFyKS50b0NvbHVtbk1ham9yRmxvYXRBcnJh
eSgpOworICAgICAgICB9LCBbJl0oY29uc3Qgc3RkOjphcnJheTxmbG9hdCwgMTY+JiBtYXRyaXgp
IHsKKyAgICAgICAgICAgIHJldHVybiBtYXRyaXg7CisgICAgICAgIH0sIFsmXShzdGQ6Om51bGxw
dHJfdCYpIHsKKyAgICAgICAgICAgIC8vIFVzZSBhc3BlY3QgcHJvamVjdGlvbiBmb3IgaW5saW5l
IHNlc3Npb25zCisgICAgICAgICAgICBkb3VibGUgZm92ID0gIG1fc2Vzc2lvbi0+cmVuZGVyU3Rh
dGUoKS5pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkudmFsdWVPcihwaU92ZXJUd29Eb3VibGUp
OworICAgICAgICAgICAgZmxvYXQgYXNwZWN0ID0gMTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIg
PSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuYmFzZUxheWVyKCk7CisgICAgICAgICAgICBpZiAo
bGF5ZXIpCisgICAgICAgICAgICAgICAgYXNwZWN0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXll
ci0+ZnJhbWVidWZmZXJXaWR0aCgpKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obGF5ZXItPmZyYW1l
YnVmZmVySGVpZ2h0KCkpOworICAgICAgICAgICAgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJl
bmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7CisgICAgICAgICAgICBkb3VibGUgZmFyID0gbV9zZXNz
aW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRoRmFyKCk7CisgICAgICAgICAgICByZXR1cm4gVHJhbnNm
b3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGZvdiwgYXNwZWN0LCBuZWFyLCBmYXIpLnRv
Q29sdW1uTWFqb3JGbG9hdEFycmF5KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8geHJW
aWV3ID0gV2ViWFJWaWV3OjpjcmVhdGUodmlldy5leWUsIFdURk1vdmUodHJhbnNmb3JtKSwgRmxv
YXQzMkFycmF5OjpjcmVhdGUocHJvamVjdGlvbi5kYXRhKCksIHByb2plY3Rpb24uc2l6ZSgpKSk7
CisKKyAgICAgICAgLy8gIDguOC4gQXBwZW5kIHhydmlldyB0byB4cnZpZXdzCisgICAgICAgIHhy
Vmlld3MuYXBwZW5kKFdURk1vdmUoeHJWaWV3KSk7CisgICAgfQorCisgICAgLy8gOS4gU2V0IHBv
c2XigJlzIHZpZXdzIHRvIHhydmlld3MKKyAgICBwb3NlLT5zZXRWaWV3cyhXVEZNb3ZlKHhyVmll
d3MpKTsKKworICAgIC8vIDEwLiBSZXR1cm4gcG9zZS4KKyAgICByZXR1cm4gcG9zZTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSUG9zZT4+IFdlYlhSRnJhbWU6OmdldFBvc2UoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJYUlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJT
cGFjZSYgYmFzZVNwYWNlKQogewotICAgIHJldHVybiB7IH07CisgICAgLy8gMS4gTGV0IGZyYW1l
IGJlIHRoaXMuCisgICAgLy8gMi4gTGV0IHBvc2UgYmUgYSBuZXcgWFJQb3NlIG9iamVjdCBpbiB0
aGUgcmVsZXZhbnQgcmVhbG0gb2YgZnJhbWUuCisgICAgLy8gMy4gUG9wdWxhdGUgdGhlIHBvc2Ug
b2Ygc3BhY2UgaW4gYmFzZVNwYWNlIGF0IHRoZSB0aW1lIHJlcHJlc2VudGVkIGJ5IGZyYW1lIGlu
dG8gcG9zZS4KKworICAgIGF1dG8gcG9wdWxhdGVQb3NlUmVzdWx0ID0gcG9wdWxhdGVQb3NlKGRv
Y3VtZW50LCBzcGFjZSwgYmFzZVNwYWNlKTsKKyAgICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKTsKKworICAgIGF1dG8gcG9wdWxhdGVWYWx1ZSA9IHBvcHVsYXRlUG9zZVJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIXBvcHVsYXRlVmFsdWUuaGFzVmFsdWUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyA0LiBSZXR1cm4gcG9zZS4KKyAg
ICByZXR1cm4gUmVmUHRyPFdlYlhSUG9zZT4oV2ViWFJQb3NlOjpjcmVhdGUoV2ViWFJSaWdpZFRy
YW5zZm9ybTo6Y3JlYXRlKHBvcHVsYXRlVmFsdWUtPnRyYW5zZm9ybSksIHBvcHVsYXRlVmFsdWUt
PmVtdWxhdGVkUG9zaXRpb24pKTsKIH0KIAotUmVmUHRyPFdlYlhSUG9zZT4gV2ViWFJGcmFtZTo6
Z2V0UG9zZShjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpCitUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9zZShjb25zdCBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSYgcG9zZSkKIHsKLSAgICByZXR1cm4geyB9OworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICBtYXRyaXgudHJhbnNsYXRlM2QocG9zZS5w
b3NpdGlvbi54KCksIHBvc2UucG9zaXRpb24ueSgpLCBwb3NlLnBvc2l0aW9uLnooKSk7CisgICAg
bWF0cml4Lm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpmcm9tUXVhdGVybmlvbihwb3Nl
Lm9yaWVudGF0aW9uLngsIHBvc2Uub3JpZW50YXRpb24ueSwgcG9zZS5vcmllbnRhdGlvbi56LCBw
b3NlLm9yaWVudGF0aW9uLncpKTsKKyAgICByZXR1cm4gbWF0cml4OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCmlu
ZGV4IDJhMjZhZDg2YTJjMzBkYThjMjNkZmI2YzdiYmI5MDM4MmQxMmUwNWQuLjcxOTY0YzFjNGMy
MTlkNTg2MTgyZDZhNDZlYzFmMDViNDE1NzMwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJGcmFtZS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWYgRU5BQkxFKFdFQlhSKQog
CiAjaW5jbHVkZSAiRE9NSGlnaFJlc1RpbWVTdGFtcC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9y
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM1
LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIFdlYlhSUG9zZTsKIGNsYXNzIFdlYlhSUmVmZXJlbmNlU3BhY2U7CiBjbGFzcyBXZWJYUlNl
c3Npb247CkBAIC00NCwyMyArNDcsMzggQEAgY2xhc3MgV2ViWFJWaWV3ZXJQb3NlOwogY2xhc3Mg
V2ViWFJGcmFtZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSRnJhbWU+IHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFdlYlhSRnJhbWUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
WFJGcmFtZT4gY3JlYXRlKFJlZjxXZWJYUlNlc3Npb24+JiYpOworICAgIGVudW0gY2xhc3MgSXNB
bmltYXRpb25GcmFtZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgc3RhdGljIFJlZjxXZWJYUkZy
YW1lPiBjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4mJiwgSXNBbmltYXRpb25GcmFtZSk7CiAgICAg
fldlYlhSRnJhbWUoKTsKIAogICAgIGNvbnN0IFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogCi0gICAgUmVmUHRyPFdlYlhSVmlld2VyUG9z
ZT4gZ2V0Vmlld2VyUG9zZShjb25zdCBXZWJYUlJlZmVyZW5jZVNwYWNlJik7Ci0gICAgUmVmUHRy
PFdlYlhSUG9zZT4gZ2V0UG9zZShjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYp
OworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+PiBnZXRWaWV3ZXJQb3Nl
KGNvbnN0IERvY3VtZW50JiwgY29uc3QgV2ViWFJSZWZlcmVuY2VTcGFjZSYpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBnZXRQb3NlKGNvbnN0IERvY3VtZW50JiwgY29uc3Qg
V2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogICAgIHZvaWQgc2V0VGltZShET01I
aWdoUmVzVGltZVN0YW1wIHRpbWUpIHsgbV90aW1lID0gdGltZTsgfQorICAgIHZvaWQgc2V0RnJh
bWVEYXRhKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYgZGF0YSkgeyBtX2RhdGEgPSBX
VEZNb3ZlKGRhdGEpOyB9CisKICAgICB2b2lkIHNldEFjdGl2ZShib29sIGFjdGl2ZSkgeyBtX2Fj
dGl2ZSA9IGFjdGl2ZTsgfQogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2Fj
dGl2ZTsgfQogCisgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeEZyb21Qb3Nl
KGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlJik7CisKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgV2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBleHBs
aWNpdCBXZWJYUkZyYW1lKFJlZjxXZWJYUlNlc3Npb24+JiYsIElzQW5pbWF0aW9uRnJhbWUpOwor
ICAgIFdlYlhSRnJhbWUoV2ViWFJTZXNzaW9uJiwgYm9vbCBpc0FuaW1hdGlvbkZyYW1lKTsKKwor
ICAgIGJvb2wgaXNPdXRzaWRlTmF0aXZlQm91bmRzT2ZCb3VuZGVkUmVmZXJlbmNlU3BhY2UoY29u
c3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKSBjb25zdDsKKyAgICBib29sIGlzTG9j
YWxSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlNwYWNlJikgY29uc3Q7CisgICAgYm9vbCBtdXN0
UG9zZXNCZUxpbWl0ZWQoY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKSBjb25z
dDsKKworICAgIHN0cnVjdCBQb3B1bGF0ZWRQb3NlOworICAgIEV4Y2VwdGlvbk9yPE9wdGlvbmFs
PFBvcHVsYXRlZFBvc2U+PiBwb3B1bGF0ZVBvc2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBXZWJY
UlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOwogCiAgICAgYm9vbCBtX2FjdGl2ZSB7IGZhbHNl
IH07Ci0gICAgRE9NSGlnaFJlc1RpbWVTdGFtcCBtX3RpbWU7CisgICAgYm9vbCBtX2lzQW5pbWF0
aW9uRnJhbWUgeyBmYWxzZSB9OworICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgbV90aW1lIHsgMCB9
OworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIG1fZGF0YTsKICAgICBSZWY8V2Vi
WFJTZXNzaW9uPiBtX3Nlc3Npb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmlkbAppbmRleCAyMWZjZjNjZmU0ZDljNzVmZDdmNDY4ZTQ5N2RiOGU4MDA3
YjhhZGYyLi5kMzQwMjY1YjIyZDg4OTIzZWUyZGMyNWE3N2RkYjgzNzlkYTU0MGY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwKQEAgLTMzLDYgKzMzLDYg
QEAKIF0gaW50ZXJmYWNlIFdlYlhSRnJhbWUgewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBh
dHRyaWJ1dGUgV2ViWFJTZXNzaW9uIHNlc3Npb247CiAKLSAgICBXZWJYUlZpZXdlclBvc2U/IGdl
dFZpZXdlclBvc2UoV2ViWFJSZWZlcmVuY2VTcGFjZSByZWZlcmVuY2VTcGFjZSk7Ci0gICAgV2Vi
WFJQb3NlPyBnZXRQb3NlKFdlYlhSU3BhY2Ugc3BhY2UsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb24sIENhbGxXaXRoPURvY3VtZW50XSBXZWJYUlZpZXdlclBv
c2U/IGdldFZpZXdlclBvc2UoV2ViWFJSZWZlcmVuY2VTcGFjZSByZWZlcmVuY2VTcGFjZSk7Cisg
ICAgW01heVRocm93RXhjZXB0aW9uLCBDYWxsV2l0aD1Eb2N1bWVudF0gV2ViWFJQb3NlPyBnZXRQ
b3NlKFdlYlhSU3BhY2Ugc3BhY2UsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5jcHAKaW5kZXggMWM1ZjgwYTU0NDU1Y2Jl
OGZjYjA3MmQ1NDdiMzE5NmE5ODg3ODY1OC4uMzM5OWQ4YWU1MDAzZTJhZTQzYzAxZTQ2YmQwMzNi
MDkxM2IyODY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlBvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmNw
cApAQCAtMzUsMTMgKzM1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdlYlhSUG9zZSk7CiAKLVJlZjxXZWJYUlBvc2U+IFdlYlhSUG9zZTo6
Y3JlYXRlKCkKK1JlZjxXZWJYUlBvc2U+IFdlYlhSUG9zZTo6Y3JlYXRlKFJlZjxXZWJYUlJpZ2lk
VHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUG9zZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViWFJQb3NlKFdURk1vdmUodHJhbnNmb3JtKSwgZW11bGF0ZWRQb3NpdGlvbikpOwogfQogCi1X
ZWJYUlBvc2U6OldlYlhSUG9zZSgpCi0gICAgOiBtX3RyYW5zZm9ybShXZWJYUlJpZ2lkVHJhbnNm
b3JtOjpjcmVhdGUoKSkKK1dlYlhSUG9zZTo6V2ViWFJQb3NlKFJlZjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQorICAgIDogbV90cmFuc2Zv
cm0oV1RGTW92ZSh0cmFuc2Zvcm0pKSwgbV9lbXVsYXRlZFBvc2l0aW9uKGVtdWxhdGVkUG9zaXRp
b24pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJQb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oCmluZGV4
IDI5OTE5ZDI0YzM5NTNhYTM5YTJjNDg5NGJjN2NjZTVjMjljMTdlNmEuLmVjNTc5MDY4MzE2NDI1
ZDhlOTgyMzMxOTdiNjk5MGI0MThjYmExYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJQb3NlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlBvc2UuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFC
TEUoV0VCWFIpCi0KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zOCwxNCArMzcsMTYgQEAgY2xh
c3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKIGNsYXNzIFdlYlhSUG9zZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlhSUG9zZT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJQb3NlKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSUG9zZT4gY3JlYXRlKCk7Ci0gICAgfldlYlhS
UG9zZSgpOworICAgIHN0YXRpYyBSZWY8V2ViWFJQb3NlPiBjcmVhdGUoUmVmPFdlYlhSUmlnaWRU
cmFuc2Zvcm0+JiYsIGJvb2wgZW11bGF0ZWRQb3NpdGlvbik7CisgICAgdmlydHVhbCB+V2ViWFJQ
b3NlKCk7CiAKICAgICBjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiB0cmFuc2Zvcm0oKSBjb25z
dDsKICAgICBib29sIGVtdWxhdGVkUG9zaXRpb24oKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9v
bCBpc1ZpZXdlclBvc2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6Ci0g
ICAgV2ViWFJQb3NlKCk7CisgICAgV2ViWFJQb3NlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYm
LCBib29sIGVtdWxhdGVkUG9zaXRpb24pOwogCiAgICAgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
IG1fdHJhbnNmb3JtOwogICAgIGJvb2wgbV9lbXVsYXRlZFBvc2l0aW9uIHsgZmFsc2UgfTsKQEAg
LTUzLDQgKzU0LDkgQEAgcHJvdGVjdGVkOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNk
ZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XRUJYUlBPU0UoVG9WYWx1ZVR5cGVOYW1lLCBw
cmVkaWNhdGUpICAgICAgICAgICAgICAgICAgICBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXZWJYUlBvc2UmIGNv
bnRleHQpIHsgcmV0dXJuIGNvbnRleHQucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJQb3NlLmlkbAppbmRleCA0YzRlOWRhZGM4ZWEwYWYzMTUxODY5NDE5
M2I5MjQ5NjQ0Nzg4MDI2Li4yZTViMzg2NGU1OTgyNzgyYTc5NWNlYjliZDdjNGUxOGQ2ZGUyNjdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuaWRsCkBAIC0yOCw3
ICsyOCw2IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCWFIsCiAgICAgU2VjdXJlQ29udGV4dCwKICAg
ICBFeHBvc2VkPVdpbmRvdywKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIElu
dGVyZmFjZU5hbWU9WFJQb3NlCiBdIGludGVyZmFjZSBXZWJYUlBvc2UgewogICAgIFtTYW1lT2Jq
ZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJSaWdpZFRyYW5zZm9ybSB0cmFuc2Zvcm07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3Bh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNl
LmNwcAppbmRleCBkNWJiMGU4MWY5MmM1ODlhYzdmYzZiNzU3MTM2NTI1YWYwMmNhNzk2Li4wYjVh
MzcwYzgxZmQ5MmU5MzMyOWVjMjA0OGNlNWE4YmM1YjAxMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTI5LDM0
ICsyOSwxMDEgQEAKICNpZiBFTkFCTEUoV0VCWFIpCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgi
CiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3RleHByIGRvdWJsZSBE
ZWZhdWx0VXNlckhlaWdodEluTWV0ZXJzID0gMS42NTsKKwogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdlYlhSUmVmZXJlbmNlU3BhY2UpOwogCiBSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4g
V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUo
c2Vzc2lvbiksIHR5cGUpKTsKKyAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlv
L3dlYnhyLyN4cnNwYWNlLW5hdGl2ZS1vcmlnaW4KKyAgICAvLyBUaGUgdHJhbnNmb3JtIGZyb20g
dGhlIGVmZmVjdGl2ZSBzcGFjZSB0byB0aGUgbmF0aXZlIG9yaWdpbidzIHNwYWNlIGlzCisgICAg
Ly8gZGVmaW5lZCBieSBhbiBvcmlnaW4gb2Zmc2V0LCB3aGljaCBpcyBhbiBYUlJpZ2lkVHJhbnNm
b3JtIGluaXRpYWxseSBzZXQKKyAgICAvLyB0byBhbiBpZGVudGl0eSB0cmFuc2Zvcm0uCisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92
ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5cGUpKTsKIH0KIAot
V2ViWFJSZWZlcmVuY2VTcGFjZTo6V2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlw
ZSkKLSAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbikpCitSZWY8V2Vi
WFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNz
aW9uKSwgV1RGTW92ZShvZmZzZXQpLCB0eXBlKSk7Cit9CisKK1dlYlhSUmVmZXJlbmNlU3BhY2U6
OldlYlhSUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9u
PiYmIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCwgWFJSZWZlcmVu
Y2VTcGFjZVR5cGUgdHlwZSkKKyAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUob2Zm
c2V0KSkKKyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQogICAgICwgbV90eXBlKHR5
cGUpCiB7CiB9CiAKIFdlYlhSUmVmZXJlbmNlU3BhY2U6On5XZWJYUlJlZmVyZW5jZVNwYWNlKCkg
PSBkZWZhdWx0OwogCi1SZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VT
cGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYp
CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdp
bigpIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHk7CisKKyAgICAv
LyBXZSBhc3N1bWUgdGhhdCBwb3NlcyBnb3QgZnJvbSB0aGUgZGV2aWNlcyBhcmUgaW4gbG9jYWwg
c3BhY2UuCisgICAgLy8gVGhpcyB3aWxsIHJlcXVpcmUgbW9yZSBjb21wbGV4IGxvZ2ljIGlmIHdl
IGFkZCBwb3J0cyB3aXRoIGRpZmZlcmVudCBkZWZhdWx0IGNvb3JkaW5hdGVzLgorICAgIHN3aXRj
aCAobV90eXBlKSB7CisgICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6Vmlld2VyOiB7Cisg
ICAgICAgIC8vIFJldHVybiB0aGUgY3VycmVudCBwb3NlLiBDb250ZW50IHJlbmRlcmVkIGluIHZp
ZXdlciBwb3NlIHdpbGwgc3RheSBpbiBmaXhlZCBwb2ludCBvbiBITURzLgorICAgICAgICBhdXRv
JiBkYXRhID0gbV9zZXNzaW9uLT5mcmFtZURhdGEoKTsKKyAgICAgICAgcmV0dXJuIFdlYlhSRnJh
bWU6Om1hdHJpeEZyb21Qb3NlKGRhdGEub3JpZ2luKTsKKyAgICB9CisgICAgY2FzZSBYUlJlZmVy
ZW5jZVNwYWNlVHlwZTo6TG9jYWw6CisgICAgICAgIC8vIERhdGEgZnJvbSB0aGUgZGV2aWNlIGlz
IGFscmVhZHkgaW4gbG9jYWwsIHVzZSB0aGUgaWRlbnRpdHkgbWF0cml4LgorICAgICAgICByZXR1
cm4gaWRlbnRpdHk7CisgICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6VW5ib3VuZGVkOgor
ICAgICAgICAvLyBMb2NhbCBhbmQgdW5ib3VuZGVkIHVzZSB0aGUgc2FtZSBkZXZpY2Ugc3BhY2Us
IHVzZSB0aGUgaWRlbnRpdHkgbWF0cml4LgorICAgICAgICByZXR1cm4gaWRlbnRpdHk7CisgICAg
Y2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vcjogeworICAgICAgICAvLyBVc2Ug
dGhlIGZsb29yIHRyYW5zZm9ybSBwcm92aWRlZCBieSB0aGUgZGV2aWNlIG9yIGZhbGxiYWNrIHRv
IGEgZGVmYXVsdCBoZWlnaHQuCisgICAgICAgIHJldHVybiBmbG9vck9yaWdpblRyYW5zZm9ybSgp
OworICAgIH0KKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpCb3VuZGVkRmxvb3I6Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgLy8gQm91bmRlZEZsb29yIGlzIGhhbmRsZWQgYnkgV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2Ugc3ViY2xhc3MKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gaWRlbnRpdHk7Cit9CisKK1JlZlB0cjxX
ZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVu
Y2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0pCiB7CiAg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIEFTU0VSVChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSk7Ci0g
ICAgcmV0dXJuIGNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSksIG1fc2Vzc2lvbi5jb3B5UmVmKCksIG1fdHlwZSk7CisKKyAgICAvLyBodHRwczovL2lt
bWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVuY2VzcGFjZS1nZXRvZmZz
ZXRyZWZlcmVuY2VzcGFjZQorICAgIC8vIFNldCBvZmZzZXRTcGFjZeKAmXMgb3JpZ2luIG9mZnNl
dCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9yaWdpbiBvZmZzZXQgYnkg
b3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNlLgorICAgIGF1dG8gb2Zm
c2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG1fb3JpZ2luT2Zmc2V0LT5yYXdUcmFu
c2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7CisKKyAgICByZXR1cm4g
Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSwgbV9z
ZXNzaW9uLmNvcHlSZWYoKSwgV1RGTW92ZShvZmZzZXQpLCBtX3R5cGUpOworfQorCitUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVyZW5jZVNwYWNlOjpmbG9vck9yaWdpblRyYW5zZm9ybSgp
IGNvbnN0Cit7CisgICAgYXV0byYgZGF0YSA9IG1fc2Vzc2lvbi0+ZnJhbWVEYXRhKCk7CisgICAg
aWYgKCFkYXRhLmZsb29yVHJhbnNmb3JtKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGRlZmF1dFRyYW5zZm9ybTsKKyAgICAgICAgZGVmYXV0VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAu
MCwgLURlZmF1bHRVc2VySGVpZ2h0SW5NZXRlcnMsIDAuMCk7CisgICAgICAgIHJldHVybiBkZWZh
dXRUcmFuc2Zvcm07CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1
Yi5pby93ZWJ4ci8jZG9tLXhycmVmZXJlbmNlc3BhY2V0eXBlLWxvY2FsLWZsb29yCisgICAgLy8g
R2V0IGZsb29yIGVzdGltYXRpb24gZnJvbSB0aGUgZGV2aWNlCisgICAgLy8gRklYTUU6IFJvdW5k
IHRvIG5lYXJlc3QgMWNtIHRvIHByZXZlbnQgZmluZ2VycHJpbnRpbmcKKyAgICByZXR1cm4gV2Vi
WFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoKmRhdGEuZmxvb3JUcmFuc2Zvcm0pOwogfQogCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmgKaW5kZXgg
YTJjODA1MWY1OWMyMjdkODc3Nzk1YzJiYjhmNmU3MzYzZGU4ZjNlMy4uNDY4NjA1OGZiZGY4YjJl
ZWE0YjQ4NzJjNzlhNWQ3ZmYxZmNhYmJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmgKQEAgLTQxLDE3ICs0MSwyOCBAQCBjbGFz
cyBXZWJYUlJlZmVyZW5jZVNwYWNlIDogcHVibGljIFdlYlhSU3BhY2UgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoV2ViWFJSZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNz
aW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUlJlZmVy
ZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2Vi
WFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgdmlydHVh
bCB+V2ViWFJSZWZlcmVuY2VTcGFjZSgpOwogCi0gICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3Bh
Y2U+IGdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKTsK
KyAgICBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Np
b24uZ2V0KCk7IH0KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBnZXRP
ZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJik7CisgICAgWFJS
ZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAg
V2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxX
ZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4m
JiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworICAgIGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZs
b29yT3JpZ2luVHJhbnNmb3JtKCkgY29uc3Q7CiAKKyAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nl
c3Npb247CiAgICAgWFJSZWZlcmVuY2VTcGFjZVR5cGUgbV90eXBlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQlhSU1BBQ0UoV2ViWFJS
ZWZlcmVuY2VTcGFjZSwgaXNSZWZlcmVuY2VTcGFjZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdF
QlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVy
ZW5jZVNwYWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVu
Y2VTcGFjZS5pZGwKaW5kZXggMjgzNTA3ZjQ0NWE1MmZlMmUxNzE5NjZmNTA3M2JjMTNiNDlmYzUz
Yi4uODFlNDRkMzRkYTE2N2I4ZmU2ZGIyMzRjMjQwYzkzODU2MzUyNTkwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsCkBA
IC0zMCw2ICszMCw3IEBACiAgICAgRXhwb3NlZD1XaW5kb3csCiAgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAorICAgIFNraXBWVGFibGVWYWxp
ZGF0aW9uLAogICAgIEludGVyZmFjZU5hbWU9WFJSZWZlcmVuY2VTcGFjZQogXSBpbnRlcmZhY2Ug
V2ViWFJSZWZlcmVuY2VTcGFjZSA6IFdlYlhSU3BhY2UgewogICAgIFtOZXdPYmplY3RdIFdlYlhS
UmVmZXJlbmNlU3BhY2UgZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoV2ViWFJSaWdpZFRyYW5zZm9y
bSBvcmlnaW5PZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uY3BwCmluZGV4IGJkNmM1MDFjYjdlYzVhNzFjYjdhNzA3YjE5OTlmZDliYTkyODhiMmMu
LjMxZmEyOTAyN2Y5YzY2Y2E3YjcyMjZhYmY2ZDMwZGQ0YzdjNTA1ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTI4LDExICsyOCwxMyBA
QAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNXZWJYUlJlZmVyZW5jZVNwYWNlLmgiCiAjaW5j
bHVkZSAiV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaCIKICNpbmNsdWRlICJXZWJYUkZyYW1l
LmgiCiAjaW5jbHVkZSAiV2ViWFJTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJYUlZpZXcuaCIKICNp
bmNsdWRlICJYUkZyYW1lUmVxdWVzdENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiWFJSZW5kZXJTdGF0
ZUluaXQuaCIKICNpbmNsdWRlICJYUlNlc3Npb25FdmVudC5oIgpAQCAtNTUsNyArNTcsOSBAQCBX
ZWJYUlNlc3Npb246OldlYlhSU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU3lzdGVt
JiBzeXN0ZW0sIFhSU2Vzc2lvbk1vZAogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2Rldmlj
ZShtYWtlV2Vha1B0cihkZXZpY2UpKQogICAgICwgbV9hY3RpdmVSZW5kZXJTdGF0ZShXZWJYUlJl
bmRlclN0YXRlOjpjcmVhdGUobW9kZSkpCisgICAgLCBtX3ZpZXdlclJlZmVyZW5jZVNwYWNlKG5l
dyBXZWJYUlZpZXdlclNwYWNlKGRvY3VtZW50LCAqdGhpcykpCiAgICAgLCBtX3RpbWVPcmlnaW4o
TW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgLCBtX3ZpZXdzKGRldmljZS52aWV3cyhtb2RlKSkK
IHsKICAgICBtX2RldmljZS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKG1vZGUpOwog
ICAgIG1fZGV2aWNlLT5zZXRUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudChtYWtlV2Vha1B0cigq
dGhpcykpOwpAQCAtNDc4LDEzICs0ODIsMTUgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIFF1ZXVlIGEgdGFzayB0byBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHMu
Ci0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJY
UiwgW3RoaXMsIGZyYW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKV0oKSB7CisgICAgcXVldWVU
YXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpXZWJYUiwgW3RoaXMsIGZy
YW1lRGF0YSA9IFdURk1vdmUoZnJhbWVEYXRhKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1f
ZW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9mcmFtZURhdGEgPSBmcmFt
ZURhdGE7CiAgICAgICAgIC8vICAxLkxldCBub3cgYmUgdGhlIGN1cnJlbnQgaGlnaCByZXNvbHV0
aW9uIHRpbWUuCiAgICAgICAgIGF1dG8gbm93ID0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV90
aW1lT3JpZ2luKS5taWxsaXNlY29uZHMoKTsKIAotICAgICAgICBhdXRvIGZyYW1lID0gV2ViWFJG
cmFtZTo6Y3JlYXRlKG1ha2VSZWYoKnRoaXMpKTsKKyAgICAgICAgYXV0byBmcmFtZSA9IFdlYlhS
RnJhbWU6OmNyZWF0ZShtYWtlUmVmKCp0aGlzKSwgV2ViWFJGcmFtZTo6SXNBbmltYXRpb25GcmFt
ZTo6WWVzKTsKICAgICAgICAgLy8gIDIuTGV0IGZyYW1lIGJlIHNlc3Npb27igJlzIGFuaW1hdGlv
biBmcmFtZS4KICAgICAgICAgLy8gIDMuU2V0IGZyYW1l4oCZcyB0aW1lIHRvIGZyYW1lVGltZS4K
ICAgICAgICAgZnJhbWUtPnNldFRpbWUoc3RhdGljX2Nhc3Q8RE9NSGlnaFJlc1RpbWVTdGFtcD4o
ZnJhbWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1lKSk7CkBAIC01MDgsNyArNTE0LDcgQEAgdm9p
ZCBXZWJYUlNlc3Npb246Om9uRnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBm
cmFtZURhdGEpCiAgICAgICAgICAgICBmcmFtZS0+c2V0QWN0aXZlKHRydWUpOwogCiAgICAgICAg
ICAgICAvLyA2LjQuQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJhbWUuCi0gICAgICAgICAgICAv
LyBGSVhNRTogaW1wbGVtZW50LgorICAgICAgICAgICAgZnJhbWUtPnNldEZyYW1lRGF0YShXVEZN
b3ZlKGZyYW1lRGF0YSkpOwogCiAgICAgICAgICAgICAvLyA2LjUuRm9yIGVhY2ggZW50cnkgaW4g
c2Vzc2lvbuKAmXMgbGlzdCBvZiBjdXJyZW50bHkgcnVubmluZyBhbmltYXRpb24gZnJhbWUgY2Fs
bGJhY2tzLCBpbiBvcmRlcjoKICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxs
YmFja3MpIHsKQEAgLTUzNyw2ICs1NDMsMjUgQEAgdm9pZCBXZWJYUlNlc3Npb246Om9uRnJhbWUo
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmJiBmcmFtZURhdGEpCiAgICAgfSk7CiB9CiAK
Ky8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Bvc2VzLW1heS1iZS1y
ZXBvcnRlZAorYm9vbCBXZWJYUlNlc3Npb246OnBvc2VzQ2FuQmVSZXBvcnRlZChjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7CisgICAgLy8gMS4gSWYgc2Vzc2lvbuKAmXMgcmVsZXZh
bnQgZ2xvYmFsIG9iamVjdCBpcyBub3QgdGhlIGN1cnJlbnQgZ2xvYmFsIG9iamVjdCwgcmV0dXJu
IGZhbHNlLgorICAgIGF1dG8qIHNlc3Npb25Eb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghc2Vzc2lvbkRvY3VtZW50IHx8IHNl
c3Npb25Eb2N1bWVudC0+ZG9tV2luZG93KCkgIT0gZG9jdW1lbnQuZG9tV2luZG93KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIDIuIElmIHNlc3Npb24ncyB2aXNpYmlsaXR5U3Rh
dGUgaW4gbm90ICJ2aXNpYmxlIiwgcmV0dXJuIGZhbHNlLgorICAgIGlmIChtX3Zpc2liaWxpdHlT
dGF0ZSAhPSBYUlZpc2liaWxpdHlTdGF0ZTo6VmlzaWJsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gNS4gRGV0ZXJtaW5lIGlmIHRoZSBwb3NlIGRhdGEgY2FuIGJlIHJldHVybmVk
IGFzIGZvbGxvd3M6CisgICAgLy8gVGhlIHByb2NlZHVyZSBpbiB0aGUgc3BlY3MgdHJpZXMgdG8g
ZW5zdXJlIHRoYXQgd2UgYXBwbHkgbWVhc3VyZXMgdG8KKyAgICAvLyBwcmV2ZW50IGZpbmdlcnBy
aW50aW50IGluIHBvc2UgZGF0YSBhbmQgcmV0dXJuIGZhbHNlIGluIGNhc2Ugd2UgZG9uJ3QuCisg
ICAgLy8gV2UncmUgZ29pbmcgdG8gYXBwbHkgdGhlbSBzbyBsZXQncyBqdXN0IHJldHVybiB0cnVl
LgorICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uaAppbmRleCBkODM2M2E1YzkzMWNmNTBmN2I2ZTMxOWFlZWRiM2U4YTIzMzRmZWU1Li5k
ZjMzYWM2ZTRkMWI1ZDZhMWI1OTJjMDExNzIzMDQyNWJmODFiMzdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNs
dWRlICJXZWJYUkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViWFJJbnB1dFNvdXJjZUFycmF5LmgiCiAj
aW5jbHVkZSAiV2ViWFJSZW5kZXJTdGF0ZS5oIgotI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKICNp
bmNsdWRlICJYUkVudmlyb25tZW50QmxlbmRNb2RlLmgiCiAjaW5jbHVkZSAiWFJJbnRlcmFjdGlv
bk1vZGUuaCIKICNpbmNsdWRlICJYUlJlZmVyZW5jZVNwYWNlVHlwZS5oIgpAQCAtNDgsOCArNDcs
OSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBYUkZyYW1lUmVxdWVzdENhbGxiYWNr
OwotY2xhc3MgV2ViWFJSZWZlcmVuY2VTcGFjZTsKIGNsYXNzIFdlYlhSU3lzdGVtOworY2xhc3Mg
V2ViWFJWaWV3OworY2xhc3MgV2ViWFJWaWV3ZXJTcGFjZTsKIHN0cnVjdCBYUlJlbmRlclN0YXRl
SW5pdDsKIAogY2xhc3MgV2ViWFJTZXNzaW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
WFJTZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QsIHB1YmxpYyBQbGF0Zm9ybVhSOjpUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVu
dCB7CkBAIC05MCw2ICs5MCwxMSBAQCBwdWJsaWM6CiAKICAgICBYUlNlc3Npb25Nb2RlIG1vZGUo
KSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KIAorICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybVhS
OjpEZXZpY2U6OlZpZXdEYXRhPiYgdmlld3MoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdzOyB9Cisg
ICAgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmIGZyYW1lRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVEYXRhOyB9CisgICAgY29uc3QgV2ViWFJWaWV3ZXJTcGFjZSYgdmll
d2VyUmVmZXJlbmNlU3BhY2UoKSBjb25zdCB7IHJldHVybiAqbV92aWV3ZXJSZWZlcmVuY2VTcGFj
ZTsgfQorICAgIGJvb2wgcG9zZXNDYW5CZVJlcG9ydGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgV2ViWFJTZXNzaW9uKERvY3VtZW50JiwgV2ViWFJTeXN0ZW0mLCBY
UlNlc3Npb25Nb2RlLCBQbGF0Zm9ybVhSOjpEZXZpY2UmKTsKIApAQCAtMTI4LDExICsxMzMsMTUg
QEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPFBsYXRmb3JtWFI6OkRldmljZT4gbV9kZXZpY2U7CiAg
ICAgUmVmUHRyPFdlYlhSUmVuZGVyU3RhdGU+IG1fYWN0aXZlUmVuZGVyU3RhdGU7CiAgICAgUmVm
UHRyPFdlYlhSUmVuZGVyU3RhdGU+IG1fcGVuZGluZ1JlbmRlclN0YXRlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJYUlZpZXdlclNwYWNlPiBtX3ZpZXdlclJlZmVyZW5jZVNwYWNlOwogICAgIE1v
bm90b25pY1RpbWUgbV90aW1lT3JpZ2luOwogCiAgICAgdW5zaWduZWQgbV9uZXh0Q2FsbGJhY2tJ
ZCB7IDEgfTsKICAgICBWZWN0b3I8UmVmPFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s+PiBtX2NhbGxi
YWNrczsKIAorICAgIFZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiBtX3ZpZXdz
OworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIG1fZnJhbWVEYXRhOworCiAgICAg
ZG91YmxlIG1fbWluaW11bUlubGluZUZPViB7IDAuMCB9OwogICAgIGRvdWJsZSBtX21heGltdW1J
bmxpbmVGT1YgeyBwaUZsb2F0IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3BhY2UuY3BwCmluZGV4IDUyNDI1NGZhNDY3N2I4ZGIxNTIzNTUwNjI4ZDNhNzllNjkyMjY5
MTQuLmZhODgxZDRiYmI0ZjU1MWJkNmEzMjgyOTJiMDIyOWVhMTdkOTQ5ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcApAQCAtMjgsNyArMjgsOSBAQAog
CiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiRE9NUG9pbnRSZWFkT25seS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViWFJSaWdpZFRyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKQEAgLTM2LDE0ICszOCwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJYUlNwYWNlKTsKIAotV2ViWFJTcGFjZTo6V2ViWFJTcGFjZShE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbikKK1dlYlhSU3Bh
Y2U6OldlYlhSU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiBvZmZzZXQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZG9jdW1lbnQp
Ci0gICAgLCBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKKyAgICAsIG1fb3JpZ2luT2Zmc2V0
KFdURk1vdmUob2Zmc2V0KSkKIHsKIH0KIAogV2ViWFJTcGFjZTo6fldlYlhSU3BhY2UoKSA9IGRl
ZmF1bHQ7CiAKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSU3BhY2U6OmVmZmVjdGl2ZU9yaWdp
bigpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4
ci8jeHJzcGFjZS1lZmZlY3RpdmUtb3JpZ2luCisgICAgLy8gVGhlIGVmZmVjdGl2ZSBvcmlnaW4g
Y2FuIGJlIG9idGFpbmVkIGJ5IG11bHRpcGx5aW5nIG9yaWdpbiBvZmZzZXQgYW5kIHRoZSBuYXRp
dmUgb3JpZ2luLgorICAgIHJldHVybiBtX29yaWdpbk9mZnNldC0+cmF3VHJhbnNmb3JtKCkgKiBu
YXRpdmVPcmlnaW4oKTsKK30KKworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJW
aWV3ZXJTcGFjZSk7CisKK1dlYlhSVmlld2VyU3BhY2U6OldlYlhSVmlld2VyU3BhY2UoRG9jdW1l
bnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCisgICAgOiBXZWJYUlNwYWNlKGRv
Y3VtZW50LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKKyAgICAsIG1fc2Vzc2lvbihz
ZXNzaW9uKQoreworfQorCitXZWJYUlZpZXdlclNwYWNlOjp+V2ViWFJWaWV3ZXJTcGFjZSgpID0g
ZGVmYXVsdDsKKworVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJWaWV3ZXJTcGFjZTo6bmF0aXZl
T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2Uo
bV9zZXNzaW9uLmZyYW1lRGF0YSgpLm9yaWdpbik7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSU3BhY2UuaAppbmRleCA3ZjFjNGU5NzQ3MzlhNzBjYzRiMGMwYjFjZWJmMThlNWZi
ODQ5OTBkLi5kZDkwOWQyMGE2MWIyNjc3OTRhYzk1YmU3NTUyMTFiODRlNjhlMTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaApAQCAtMjksMTIgKzI5LDE0IEBA
CiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFdlYlhSUmlnaWRUcmFu
c2Zvcm07CiBjbGFzcyBXZWJYUlNlc3Npb247CiAKIGNsYXNzIFdlYlhSU3BhY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJYUlNwYWNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CkBAIC00NSwyMSArNDcsNTEgQEAg
cHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJTcGFjZT46OnJlZjsKICAgICB1c2lu
ZyBSZWZDb3VudGVkPFdlYlhSU3BhY2U+OjpkZXJlZjsKIAorICAgIHZpcnR1YWwgV2ViWFJTZXNz
aW9uJiBzZXNzaW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRy
aXggbmF0aXZlT3JpZ2luKCkgY29uc3QgPSAwOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGVm
ZmVjdGl2ZU9yaWdpbigpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzUmVmZXJlbmNlU3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0JvdW5kZWRS
ZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKLSAg
ICBXZWJYUlNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAgV2ViWFJT
cGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmKTsKIAogICAgIC8vIEV2
ZW50VGFyZ2V0CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgIFJlZjxXZWJYUlNlc3Npb24+IG1f
c2Vzc2lvbjsKKyAgICBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9vcmlnaW5PZmZzZXQ7CiAK
IHByaXZhdGU6CiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdlYlhSU3BhY2VF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3Zl
cnJpZGUgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsg
ZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Cisg
ICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiB9OwogCisKKy8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyc2Vzc2lvbi12aWV3ZXIt
cmVmZXJlbmNlLXNwYWNlCisvLyBUaGlzIGlzIGEgaGVscGVyIGNsYXNzIHRvIGltcGxlbWVudCB0
aGUgdmlld2VyIHNwYWNlIG93bmVkIGJ5IGEgV2ViWFJTZXNzaW9uLgorLy8gSXQgYXZvaWRzIGEg
Y2lyY3VsYXIgcmVmZXJlbmNlIGJldHdlZW4gdGhlIHNlc3Npb24gYW5kIHRoZSByZWZlcmVuY2Ug
c3BhY2UuCitjbGFzcyBXZWJYUlZpZXdlclNwYWNlIDogcHVibGljIFdlYlhSU3BhY2UgeworICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJWaWV3ZXJTcGFjZSk7CitwdWJsaWM6CisgICAg
V2ViWFJWaWV3ZXJTcGFjZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYpOworICAgIHZpcnR1YWwg
fldlYlhSVmlld2VyU3BhY2UoKTsKKworcHJpdmF0ZToKKyAgICBXZWJYUlNlc3Npb24mIHNlc3Np
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb247IH0KKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCBmaW5hbDsKKworICAgIFdlYlhSU2Vzc2lvbiYg
bV9zZXNzaW9uOworfTsKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNkZWZpbmUgU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XRUJYUlNQQUNFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRl
KSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFt
ZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXZWJYUlNwYWNlJiBj
b250ZXh0KSB7IHJldHVybiBjb250ZXh0LnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4IDg1MDYyZmQ1M2Q2ZjBkMmFkODk1
ZWY4ZDNiZDFlMDk5YWEwYjNkOGMuLmEyNmM2MjY1OGMwNzVhNjFhNmNjOGZiZmI3MjlhY2IxNWU4
OTlhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3Bw
CkBAIC01MjEsMTIgKzUyMSwyMSBAQCB2b2lkIFdlYlhSU3lzdGVtOjpEdW1teUlubGluZURldmlj
ZTo6cmVxdWVzdEZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvIHJhZiA9IElubGluZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxi
YWNrOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAg
IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGRhdGE7CisgICAgICAgIGRhdGEuaXNUcmFj
a2luZ1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgZGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSB0cnVlOwor
ICAgICAgICBkYXRhLnZpZXdzLmFwcGVuZCh7IH0pOworICAgICAgICBjYWxsYmFjayhXVEZNb3Zl
KGRhdGEpKTsKICAgICB9KTsKIAogICAgIGRvY3VtZW50LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
cmFmKTsKIH0KIAorVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IFdlYlhSU3lz
dGVtOjpEdW1teUlubGluZURldmljZTo6dmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4geyB7IC5hY3RpdmUgPSB0cnVlLCBQbGF0Zm9ybVhSOjpFeWU6Ok5vbmUgfSB9Owor
fQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlN5c3RlbS5oCmluZGV4IDFkZThiNzViNzk1MDY3ZjMxYTA5YmNjNjcwNzBjZGIx
OGM2ZjJhZTcuLjEwMjRkMGY1YTRmM2MxZjZiNDFhZGY3Zjk2YmQ4M2NjMzg0YWQwODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTExMSw5ICsxMTEs
MTAgQEAgcHJpdmF0ZToKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRpYWxpemVUcmFj
a2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkgZmluYWwgeyB9CiAgICAg
ICAgIHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsIHsgfQotICAgICAg
ICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFj
ZVR5cGUpIGZpbmFsIHsgfTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2Uo
UGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH0KIAogICAgICAgICB2b2lk
IHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYp
IGZpbmFsOworICAgICAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoWFJTZXNzaW9u
TW9kZSkgY29uc3QgZmluYWw7CiAgICAgfTsKICAgICBEdW1teUlubGluZURldmljZSBtX2RlZmF1
bHRJbmxpbmVEZXZpY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3
LmNwcAppbmRleCAxYTk4Y2IxNDUwNDU5ZmYyNjU2MzhmNThkZjQ4YmI0ZmNjZmYzMGJlLi40M2Qx
MGI4N2ZmNmNjYmI3NTAxMDAxNTkzMWNiMGZjZjdhNGIwYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCkBAIC0zNiwyMyArMzYsMjAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJWaWV3KTsKIAot
UmVmPFdlYlhSVmlldz4gV2ViWFJWaWV3OjpjcmVhdGUoKQorUmVmPFdlYlhSVmlldz4gV2ViWFJW
aWV3OjpjcmVhdGUoWFJFeWUgZXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zv
cm0sIFJlZjxGbG9hdDMyQXJyYXk+JiYgcHJvamVjdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJYUlZpZXcpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmlldyhl
eWUsIFdURk1vdmUodHJhbnNmb3JtKSwgV1RGTW92ZShwcm9qZWN0aW9uKSkpOwogfQogCi1XZWJY
UlZpZXc6OldlYlhSVmlldygpCi0gICAgOiBtX2V5ZShYUkV5ZTo6Tm9uZSkKK1dlYlhSVmlldzo6
V2ViWFJWaWV3KFhSRXllIGV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3Jt
LCBSZWY8RmxvYXQzMkFycmF5PiYmIHByb2plY3Rpb24pCisgICAgOiBtX2V5ZShleWUpCisgICAg
LCBtX3RyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpCisgICAgLCBtX3Byb2plY3Rpb24ocHJv
amVjdGlvbikKIHsKIH0KIAogV2ViWFJWaWV3Ojp+V2ViWFJWaWV3KCkgPSBkZWZhdWx0OwogCi12
b2lkIFdlYlhSVmlldzo6c2V0UHJvamVjdGlvbk1hdHJpeChjb25zdCBWZWN0b3I8ZmxvYXQ+JiBt
YXRyaXgpCi17Ci0gICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gRmxvYXQzMkFycmF5OjpjcmVhdGUo
bWF0cml4LmRhdGEoKSwgbWF0cml4LnNpemUoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSVmlldy5oCmluZGV4IDM5YTA5Y2UxMGJhYWEyYzI3OTdjODc1NTczNzFjMmJmNzg4YWM0
ZTUuLjRiNjYwNjkxMTgyNjhkNGFiM2Y4NTc2NTg1YTc4YzkwMjAzMGJiYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaApAQCAtMzcsMjggKzM3LDI1IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViWFJGcmFtZTsKIGNsYXNzIFdlYlhSUmlnaWRU
cmFuc2Zvcm07CiAKIGNsYXNzIFdlYlhSVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSVmll
dz4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURURfRVhQT1JUKFdlYlhSVmlldywgV0VCQ09S
RV9FWFBPUlQpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8V2ViWFJW
aWV3PiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFdlYlhSVmlldz4g
Y3JlYXRlKFhSRXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgUmVmPEZsb2F0MzJBcnJh
eT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfldlYlhSVmlldygpOwogCiAgICAgWFJFeWUgZXll
KCkgY29uc3QgeyByZXR1cm4gbV9leWU7IH0KLSAgICBjb25zdCBGbG9hdDMyQXJyYXkmIHByb2pl
Y3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiAqbV9wcm9qZWN0aW9uTWF0cml4OyB9Ci0gICAg
Y29uc3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gKm1f
dHJhbnNmb3JtOyB9Ci0KLSAgICB2b2lkIHNldEV5ZShYUkV5ZSBleWUpIHsgbV9leWUgPSBleWU7
IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb2plY3Rpb25NYXRyaXgoY29uc3QgVmVj
dG9yPGZsb2F0PiYpOwotICAgIHZvaWQgc2V0VHJhbnNmb3JtKFJlZlB0cjxXZWJYUlJpZ2lkVHJh
bnNmb3JtPiYmIHZpZXdPZmZzZXQpIHsgbV90cmFuc2Zvcm0gPSBXVEZNb3ZlKHZpZXdPZmZzZXQp
OyB9CisgICAgY29uc3QgRmxvYXQzMkFycmF5JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9qZWN0aW9uLmdldCgpOyB9CisgICAgY29uc3QgV2ViWFJSaWdpZFRyYW5zZm9y
bSYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0uZ2V0KCk7IH0KIAogcHJp
dmF0ZToKLSAgICBXZWJYUlZpZXcoKTsKKyAgICBXZWJYUlZpZXcoWFJFeWUsIFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYmKTsKIAogICAgIFhSRXllIG1fZXll
OwotICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+IG1fcHJvamVjdGlvbk1hdHJpeDsKLSAgICBSZWZQ
dHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgUmVmPFdlYlhSUmlnaWRU
cmFuc2Zvcm0+IG1fdHJhbnNmb3JtOworICAgIFJlZjxGbG9hdDMyQXJyYXk+IG1fcHJvamVjdGlv
bjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcAppbmRleCA2MDYzYzk1ZjM2NDNhZGFiMGEy
ODFkYTg4YjNjYmFlNjVhNzk3YjA5Li5lNDllNmM3ODc0YWQzMjNmNWY1ODU5MzM0YzI3N2JiM2Jh
ZTJmMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmll
d2VyUG9zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdl
clBvc2UuY3BwCkBAIC0yNSwxNyArMjUsMjQgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYlhSVmlld2VyUG9zZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdl
YlhSVmlld2VyUG9zZT4gV2ViWFJWaWV3ZXJQb3NlOjpjcmVhdGUoKQorV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFdlYlhSVmlld2VyUG9zZSk7CisKK1JlZjxXZWJYUlZpZXdlclBvc2U+IFdl
YlhSVmlld2VyUG9zZTo6Y3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9y
bSwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlhSVmlld2VyUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pKTsKK30K
KworV2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCisgICAgOiBXZWJYUlBvc2Uo
V1RGTW92ZSh0cmFuc2Zvcm0pLCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYlhSVmlld2VyUG9zZSk7CiB9CiAKLVdlYlhSVmlld2VyUG9zZTo6V2ViWFJW
aWV3ZXJQb3NlKCkgPSBkZWZhdWx0OwogV2ViWFJWaWV3ZXJQb3NlOjp+V2ViWFJWaWV3ZXJQb3Nl
KCkgPSBkZWZhdWx0OwogCiBjb25zdCBWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiBXZWJYUlZpZXdl
clBvc2U6OnZpZXdzKCkgY29uc3QKQEAgLTQzLDYgKzUwLDExIEBAIGNvbnN0IFZlY3RvcjxSZWY8
V2ViWFJWaWV3Pj4mIFdlYlhSVmlld2VyUG9zZTo6dmlld3MoKSBjb25zdAogICAgIHJldHVybiBt
X3ZpZXdzOwogfQogCit2b2lkIFdlYlhSVmlld2VyUG9zZTo6c2V0Vmlld3MoVmVjdG9yPFJlZjxX
ZWJYUlZpZXc+PiYmIHZpZXdzKQoreworICAgIG1fdmlld3MgPSBXVEZNb3ZlKHZpZXdzKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmgKaW5kZXggYTRl
ZDI1YjEwYzI1MzE5YTZlOTIxODUyODA2NGU1MWM4ZDRkOGYyMC4uZTlmMGEzOWQ4NWI3ZWFjZTcw
MTNjYTE4NDI5ZDJiM2NiYjgwZGNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSVmlld2VyUG9zZS5oCkBAIC0zNywxOCArMzcsMjQgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgV2ViWFJWaWV3ZXJQb3NlIDogcHVibGljIFdlYlhSUG9zZSB7CisgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUlZpZXdlclBvc2UpOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8V2ViWFJWaWV3ZXJQb3NlPiBjcmVhdGUoKTsKLSAgICB+V2ViWFJWaWV3ZXJQb3Nl
KCk7CisgICAgc3RhdGljIFJlZjxXZWJYUlZpZXdlclBvc2U+IGNyZWF0ZShSZWY8V2ViWFJSaWdp
ZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICB2aXJ0dWFsIH5XZWJY
UlZpZXdlclBvc2UoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4mIHZpZXdz
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRWaWV3cyhWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiYpOwog
CiBwcml2YXRlOgotICAgIFdlYlhSVmlld2VyUG9zZSgpOworICAgIFdlYlhSVmlld2VyUG9zZShS
ZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKKworICAg
IGJvb2wgaXNWaWV3ZXJQb3NlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
VmVjdG9yPFJlZjxXZWJYUlZpZXc+PiBtX3ZpZXdzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dFQlhSUE9TRShXZWJYUlZpZXdlclBvc2Us
IGlzVmlld2VyUG9zZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsCmluZGV4IGQxYmViMmMw
ODZmODliZmFmZGY1ZTBiZjFmOTVjMGY0OGM2MDc2MTMuLjZhNzZkZTg0MzU0OWZiZjA2M2QwYmE1
ZDQxMTNhMDE1Mjk1MGIyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJWaWV3ZXJQb3NlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSVmlld2VyUG9zZS5pZGwKQEAgLTI4LDcgKzI4LDggQEAKICAgICBDb25kaXRpb25hbD1X
RUJYUiwKICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2luZG93LAotICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNH
ZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIEludGVyZmFjZU5hbWU9WFJWaWV3ZXJQb3NlCiBd
IGludGVyZmFjZSBXZWJYUlZpZXdlclBvc2UgOiBXZWJYUlBvc2UgewogICAgIFtTYW1lT2JqZWN0
XSByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8V2ViWFJWaWV3PiB2aWV3czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJFeWUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvWFJFeWUuaAppbmRleCBlYTFlYTdlMWU3ZDgyMjYzMjVmNjBjODI2
ZmZmYmMwYjliYTRkNjZmLi5mOWEzNDNiZGE0NDc0OTdmNmRkYTU0NDk5MDhlNGQ5OWQ5ZmM5N2Qz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSRXllLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkV5ZS5oCkBAIC0yNywxMyArMjcsMTEgQEAK
IAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFhSRXllIHsKLSAgICBOb25lLAotICAgIExlZnQs
Ci0gICAgUmlnaHQsCi19OwordXNpbmcgWFJFeWUgPSBQbGF0Zm9ybVhSOjpFeWU7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cAppbmRleCBhN2U0ZTAxNDJjNGEzNGE1ZWFkZDc5NzNmNGRiNDcyNTg1M2RmMGMxLi5iMmVjMTQ1
ODRiNTZjMDZjODY4OGE3NTg2Yjk0MGEyNjgyMWQ4MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcApAQCAtNTg0LDE1ICs1ODQsMTUgQEAgVHJhbnNmb3JtYXRpb25N
YXRyaXg6OlRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdCkKIC8v
IEZJWE1FOiBPbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4
NTYgaXMgYWRkcmVzc2VkIHdlIGNhbiByZXVzZSB0aGlzIGZ1bmN0aW9uIGluIFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpyZWNvbXBvc2U0KCkuCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6ZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksIGRvdWJsZSBx
eiwgZG91YmxlIHF3KQogewotICAgIGNvbnN0IGRvdWJsZSB4eCA9IHF4ICogcXg7Ci0gICAgY29u
c3QgZG91YmxlIHl5ID0gcXkgKiBxeTsKLSAgICBjb25zdCBkb3VibGUgenogPSBxeiAqIHF6Owot
ICAgIGNvbnN0IGRvdWJsZSB4eiA9IHF4ICogcXo7Ci0gICAgY29uc3QgZG91YmxlIHh5ID0gcXgg
KiBxeTsgCi0gICAgY29uc3QgZG91YmxlIHl6ID0gcXkgKiBxejsKLSAgICBjb25zdCBkb3VibGUg
eHcgPSBxdyAqIHF4OwotICAgIGNvbnN0IGRvdWJsZSB5dyA9IHF3ICogcXk7Ci0gICAgY29uc3Qg
ZG91YmxlIHp3ID0gcXcgKiBxejsKKyAgICBkb3VibGUgeHggPSBxeCAqIHF4OworICAgIGRvdWJs
ZSB5eSA9IHF5ICogcXk7CisgICAgZG91YmxlIHp6ID0gcXogKiBxejsKKyAgICBkb3VibGUgeHog
PSBxeCAqIHF6OworICAgIGRvdWJsZSB4eSA9IHF4ICogcXk7IAorICAgIGRvdWJsZSB5eiA9IHF5
ICogcXo7CisgICAgZG91YmxlIHh3ID0gcXcgKiBxeDsKKyAgICBkb3VibGUgeXcgPSBxdyAqIHF5
OworICAgIGRvdWJsZSB6dyA9IHF3ICogcXo7CiAKICAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXgoMSAtIDIgKiAoeXkgKyB6eiksIDIgKiAoeHkgKyB6dyksIDIgKiAoeHogLSB5dyksIDAs
CiAgICAgICAgIDIgKiAoeHkgLSB6dyksIDEgLSAyICogKHh4ICsgenopLCAyICogKHl6ICsgeHcp
LCAwLApAQCAtNjAwLDYgKzYwMCwzNCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6ZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksCiAgICAgICAg
IDAsIDAsIDAsIDEpOwogfQogCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9u
TWF0cml4Ojpmcm9tUHJvamVjdGlvbihkb3VibGUgZm92VXAsIGRvdWJsZSBmb3ZEb3duLCBkb3Vi
bGUgZm92TGVmdCwgZG91YmxlIGZvdlJpZ2h0LCBkb3VibGUgZGVwdGhOZWFyLCBkb3VibGUgZGVw
dGhGYXIpCit7CisgICAgZG91YmxlIHVwVGFuID0gdGFuKGZvdlVwKTsKKyAgICBkb3VibGUgZG93
blRhbiA9IHRhbihmb3ZEb3duKTsKKyAgICBkb3VibGUgbGVmdFRhbiA9IHRhbihmb3ZMZWZ0KTsK
KyAgICBkb3VibGUgcmlnaHRUYW4gPSB0YW4oZm92UmlnaHQpOworICAgIGRvdWJsZSB4U2NhbGUg
PSAyLjAgLyAobGVmdFRhbiArIHJpZ2h0VGFuKTsKKyAgICBkb3VibGUgeVNjYWxlID0gMi4wIC8g
KHVwVGFuICsgZG93blRhbik7CisgICAgZG91YmxlIGludkRlcHRoID0gMS4wIC8gKGRlcHRoTmVh
ciAtIGRlcHRoRmFyKTsKKworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh4U2NhbGUs
IDAuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIHlTY2FsZSwgMC4wZiwgMC4wZiwKKyAg
ICAgICAgKGxlZnRUYW4gLSByaWdodFRhbikgKiB4U2NhbGUgKiAtMC41LCAodXBUYW4gLSBkb3du
VGFuKSAqIHlTY2FsZSAqIDAuNSwgKGRlcHRoTmVhciArIGRlcHRoRmFyKSAqIGludkRlcHRoLCAt
MS4wZiwKKyAgICAgICAgMC4wZiwgMC4wZiwgKDIuMGYgKiBkZXB0aEZhciAqIGRlcHRoTmVhcikg
KiBpbnZEZXB0aCwgMC4wZik7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0
aW9uTWF0cml4Ojpmcm9tUHJvamVjdGlvbihkb3VibGUgZm92eSwgZG91YmxlIGFzcGVjdCwgZG91
YmxlIGRlcHRoTmVhciwgZG91YmxlIGRlcHRoRmFyKQoreworICAgIGRvdWJsZSBmID0gMS4wZiAv
IHRhbmYoZm92eSAvIDIpOworICAgIGRvdWJsZSBpbnZEZXB0aCA9IDEuMGYgLyAoZGVwdGhOZWFy
IC0gZGVwdGhGYXIpOworCisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KGYgLyBhc3Bl
Y3QsIDAuMGYsIDAuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIGYsIDAuMGYsIDAuMGYsCisgICAg
ICAgIDAuMGYsIDAuMGYsIChkZXB0aEZhciArIGRlcHRoTmVhcikgKiBpbnZEZXB0aCwgLTEuMGYs
CisgICAgICAgIDAuMGYsIDAuMGYsICgyLjBmICogZGVwdGhGYXIgKiBkZXB0aE5lYXIpICogaW52
RGVwdGgsIDAuMGYpOworfQorCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnNjYWxlKGRvdWJsZSBzKQogewogICAgIHJldHVybiBzY2FsZU5vblVuaWZvcm0ocywg
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggNjAwZTdkMGIxY2Uy
NmE3YzI0MjFkNTg1NjFjYzU3NGIwNGExN2IyOS4uNWY3MjVhZDY2ZWY3NzA5MWU5ZmIwNjYwOThi
OGRhNzU4ZjVhZjkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAt
MTIxLDYgKzEyMSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRy
aXggZnJvbVF1YXRlcm5pb24oZG91YmxlIHF4LCBkb3VibGUgcXksIGRvdWJsZSBxeiwgZG91Ymxl
IHF3KTsKIAorICAgIC8vIEZpZWxkIG9mIHZpZXcgaW4gcmFkaWFucworICAgIHN0YXRpYyBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBmcm9tUHJvamVjdGlvbihkb3VibGUgZm92VXAsIGRvdWJsZSBmb3ZE
b3duLCBkb3VibGUgZm92TGVmdCwgZG91YmxlIGZvdlJpZ2h0LCBkb3VibGUgZGVwdGhOZWFyLCBk
b3VibGUgZGVwdGhGYXIpOworICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tUHJv
amVjdGlvbihkb3VibGUgZm92eSwgZG91YmxlIGFzcGVjdCwgZG91YmxlIGRlcHRoTmVhciwgZG91
YmxlIGRlcHRoRmFyKTsKKwogICAgIHN0YXRpYyBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eTsKIAogICAgIHZvaWQgc2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91Ymxl
IGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmgKaW5kZXggNDMyNWYzMzc1Y2YzMDI4YTQ3ZGZmY2M2ZGY1OWJiNzQzODM1
MDBkNS4uZTM3MjFkODg2ZWE5OWEwZGY5MDgyZTU4ZTI1NWNkMzJkMGY3ZGU4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQzLDYg
KzQ0LDEyIEBAIGVudW0gY2xhc3MgUmVmZXJlbmNlU3BhY2VUeXBlIHsKICAgICBVbmJvdW5kZWQK
IH07CiAKK2VudW0gY2xhc3MgRXllIHsKKyAgICBOb25lLAorICAgIExlZnQsCisgICAgUmlnaHQs
Cit9OworCiAjaWYgRU5BQkxFKFdFQlhSKQogCiBjbGFzcyBUcmFja2luZ0FuZFJlbmRlcmluZ0Ns
aWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUcmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudD4g
ewpAQCAtNzksMjkgKzg2LDUxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZVJlZmVyZW5jZVNwYWNlKFJlZmVyZW5jZVNwYWNlVHlwZSkgPSAwOwogCiAgICAgc3RydWN0IEZy
YW1lRGF0YSB7Ci0gICAgICAgIGxvbmcgcHJlZGljdGVkRGlzcGxheVRpbWU7Ci0gICAgICAgIHN0
cnVjdCBWaWV3RGF0YSB7Ci0gICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQzRCBwb3NpdGlvbjsKLSAgICAgICAgICAgICAgICBzdHJ1Y3Qgewot
ICAgICAgICAgICAgICAgICAgICBmbG9hdCB4OwotICAgICAgICAgICAgICAgICAgICBmbG9hdCB5
OwotICAgICAgICAgICAgICAgICAgICBmbG9hdCB6OwotICAgICAgICAgICAgICAgICAgICBmbG9h
dCB3OwotICAgICAgICAgICAgICAgIH0gb3JpZW50YXRpb247Ci0gICAgICAgICAgICB9IHBvc2U7
Ci0gICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIGZsb2F0IHJVcDsKLSAgICAg
ICAgICAgICAgICBmbG9hdCByRG93bjsKLSAgICAgICAgICAgICAgICBmbG9hdCByTGVmdDsKLSAg
ICAgICAgICAgICAgICBmbG9hdCByUmlnaHQ7Ci0gICAgICAgICAgICB9IGZvdjsKKyAgICAgICAg
c3RydWN0IEZsb2F0UXVhdGVybmlvbiB7CisgICAgICAgICAgICBmbG9hdCB4IHsgMC4wZiB9Owor
ICAgICAgICAgICAgZmxvYXQgeSB7IDAuMGYgfTsKKyAgICAgICAgICAgIGZsb2F0IHogeyAwLjBm
IH07CisgICAgICAgICAgICBmbG9hdCB3IHsgMS4wZiB9OworICAgICAgICB9OworCisgICAgICAg
IHN0cnVjdCBQb3NlIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCBwb3NpdGlv
bjsKKyAgICAgICAgICAgIEZsb2F0UXVhdGVybmlvbiBvcmllbnRhdGlvbjsKICAgICAgICAgfTsK
LSAgICAgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3UG9zZXM7CisKKyAgICAgICAgc3RydWN0IEZv
diB7CisgICAgICAgICAgICAvLyBJbiByYWRpYW5zCisgICAgICAgICAgICBmbG9hdCB1cCB7IDAu
MGYgfTsKKyAgICAgICAgICAgIGZsb2F0IGRvd24geyAwLjBmIH07CisgICAgICAgICAgICBmbG9h
dCBsZWZ0IHsgMC4wZiB9OworICAgICAgICAgICAgZmxvYXQgcmlnaHQgeyAwLjBmIH07CisgICAg
ICAgIH07CisKKyAgICAgICAgdXNpbmcgUHJvamVjdGlvbiA9IFZhcmlhbnQ8Rm92LCBzdGQ6OmFy
cmF5PGZsb2F0LCAxNj4sIHN0ZDo6bnVsbHB0cl90PjsKKworICAgICAgICBzdHJ1Y3QgVmlldyB7
CisgICAgICAgICAgICBQb3NlIG9mZnNldDsKKyAgICAgICAgICAgIFByb2plY3Rpb24gcHJvamVj
dGlvbiA9IHsgbnVsbHB0ciB9OworICAgICAgICB9OworCisgICAgICAgIGJvb2wgaXNUcmFja2lu
Z1ZhbGlkIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBpc1Bvc2l0aW9uVmFsaWQgeyBmYWxzZSB9
OworICAgICAgICBib29sIGlzUG9zaXRpb25FbXVsYXRlZCB7IGZhbHNlIH07CisgICAgICAgIGxv
bmcgcHJlZGljdGVkRGlzcGxheVRpbWUgeyAwIH07CisgICAgICAgIFBvc2Ugb3JpZ2luOworICAg
ICAgICBPcHRpb25hbDxQb3NlPiBmbG9vclRyYW5zZm9ybTsKKyAgICAgICAgVmVjdG9yPFZpZXc+
IHZpZXdzOworICAgIH07CisKKyAgICBzdHJ1Y3QgVmlld0RhdGEgeworICAgICAgICBib29sIGFj
dGl2ZSB7IGZhbHNlIH07CisgICAgICAgIEV5ZSBleWUgeyBFeWU6Ok5vbmUgfTsKICAgICB9Owor
CisgICAgdmlydHVhbCBWZWN0b3I8Vmlld0RhdGE+IHZpZXdzKFNlc3Npb25Nb2RlKSBjb25zdCA9
IDA7CisKICAgICB1c2luZyBSZXF1ZXN0RnJhbWVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoRnJh
bWVEYXRhJiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNh
bGxiYWNrJiYpID0gMDsKLQogcHJvdGVjdGVkOgogICAgIERldmljZSgpID0gZGVmYXVsdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJP
cGVuWFIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJP
cGVuWFIuY3BwCmluZGV4IGNjNGQ3MjE1M2M2ZWVhZmRmMjE2MmU5ODgyYTllMDc3NThiMjFkZjcu
LmI5NGU4NzFmNTdiODk3YzdlNDg0OWE0N2Y0YTY0YzMzMzBkNmQxNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAK
QEAgLTI5OSw2ICsyOTksMjggQEAgRGV2aWNlOjpMaXN0T2ZFbmFibGVkRmVhdHVyZXMgT3BlblhS
RGV2aWNlOjplbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMoWHJTZXNzaW9uJgogICAgIHJldHVybiBl
bmFibGVkRmVhdHVyZXM7CiB9CiAKK1hyU3BhY2UgT3BlblhSRGV2aWNlOjpjcmVhdGVSZWZlcmVu
Y2VTcGFjZShYclJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAgIEFTU0VSVCgmUnVuTG9v
cDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CisgICAgQVNTRVJUKG1fc2Vzc2lv
biAhPSBYUl9OVUxMX0hBTkRMRSk7CisgICAgQVNTRVJUKG1faW5zdGFuY2UgIT0gWFJfTlVMTF9I
QU5ETEUpOworCisgICAgWHJQb3NlZiBpZGVudGl0eVBvc2UgeworICAgICAgICAub3JpZW50YXRp
b24gPSB7IC54ID0gMCwgLnkgPSAwLCAueiA9IDAsIC53ID0gMS4wIH0sCisgICAgICAgIC5wb3Np
dGlvbiA9IHsgLnggPSAwLCAueSA9IDAsIC56ID0gMCB9CisgICAgfTsKKworICAgIGF1dG8gc3Bh
Y2VDcmVhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyUmVmZXJlbmNlU3BhY2VDcmVhdGVJbmZv
LCBYUl9UWVBFX1JFRkVSRU5DRV9TUEFDRV9DUkVBVEVfSU5GTz4oKTsKKyAgICBzcGFjZUNyZWF0
ZUluZm8ucmVmZXJlbmNlU3BhY2VUeXBlID0gdHlwZTsKKyAgICBzcGFjZUNyZWF0ZUluZm8ucG9z
ZUluUmVmZXJlbmNlU3BhY2UgPSBpZGVudGl0eVBvc2U7CisKKyAgICBYclNwYWNlIHNwYWNlOwor
ICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVSZWZlcmVuY2VTcGFjZShtX3Nlc3Npb24sICZzcGFj
ZUNyZWF0ZUluZm8sICZzcGFjZSk7CisgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckNy
ZWF0ZVJlZmVyZW5jZVNwYWNlIiwgbV9pbnN0YW5jZSwgWFJfTlVMTF9IQU5ETEUpOworCisgICAg
cmV0dXJuIHNwYWNlOworfQorCiB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdFN1cHBvcnRlZFNl
c3Npb25Nb2RlcygpCiB7CiAgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVl
dWUucnVuTG9vcCgpKTsKQEAgLTM2OCwxNSArMzkwLDYgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OmNv
bGxlY3RDb25maWd1cmF0aW9uVmlld3MoKQogICAgIH0KIH0KIAotV2ViQ29yZTo6SW50U2l6ZSBP
cGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSBtb2RlKQotewot
ICAgIGF1dG8gY29uZmlnVHlwZSA9IG1vZGUgPT0gU2Vzc2lvbk1vZGU6OklubGluZSA/IFhSX1ZJ
RVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTyA6IFhSX1ZJRVdfQ09ORklHVVJBVElP
Tl9UWVBFX1BSSU1BUllfU1RFUkVPOwotICAgIGF1dG8gdmlld3NJdGVyYXRvciA9IG1fY29uZmln
dXJhdGlvblZpZXdzLmZpbmQoY29uZmlnVHlwZSk7Ci0gICAgaWYgKHZpZXdzSXRlcmF0b3IgIT0g
bV9jb25maWd1cmF0aW9uVmlld3MuZW5kKCkpCi0gICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0
PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFnZVJlY3RXaWR0aCks
IHN0YXRpY19jYXN0PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFn
ZVJlY3RIZWlnaHQpIH07Ci0gICAgcmV0dXJuIERldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9u
KG1vZGUpOwotfQotCiBYclZpZXdDb25maWd1cmF0aW9uVHlwZSB0b1hyVmlld0NvbmZpZ3VyYXRp
b25UeXBlKFNlc3Npb25Nb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7CkBAIC00MDAs
NiArNDEzLDE1IEBAIHN0YXRpYyBib29sIGlzU2Vzc2lvblJlYWR5KFhyU2Vzc2lvblN0YXRlIHN0
YXRlKQogICAgIHJldHVybiBzdGF0ZSA+PSBYUl9TRVNTSU9OX1NUQVRFX1JFQURZICAmJiBzdGF0
ZSA8IFhSX1NFU1NJT05fU1RBVEVfU1RPUFBJTkc7CiB9CiAKK1dlYkNvcmU6OkludFNpemUgT3Bl
blhSRGV2aWNlOjpyZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUgbW9kZSkKK3sKKyAg
ICBhdXRvIGNvbmZpZ1R5cGUgPSB0b1hyVmlld0NvbmZpZ3VyYXRpb25UeXBlKG1vZGUpOworICAg
IGF1dG8gdmlld3NJdGVyYXRvciA9IG1fY29uZmlndXJhdGlvblZpZXdzLmZpbmQoY29uZmlnVHlw
ZSk7CisgICAgaWYgKHZpZXdzSXRlcmF0b3IgIT0gbV9jb25maWd1cmF0aW9uVmlld3MuZW5kKCkp
CisgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4odmlld3NJdGVyYXRvci0+dmFsdWVb
MF0ucmVjb21tZW5kZWRJbWFnZVJlY3RXaWR0aCksIHN0YXRpY19jYXN0PGludD4odmlld3NJdGVy
YXRvci0+dmFsdWVbMF0ucmVjb21tZW5kZWRJbWFnZVJlY3RIZWlnaHQpIH07CisgICAgcmV0dXJu
IERldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKG1vZGUpOworfQorCiB2b2lkIE9wZW5YUkRl
dmljZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiB7
CiAgICAgbV9xdWV1ZS5kaXNwYXRjaChbdGhpcywgbW9kZV0oKSB7CkBAIC00MTQsNiArNDM2LDkg
QEAgdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhTZXNz
aW9uTW9kZSBtb2RlKQogICAgICAgICBzZXNzaW9uQ3JlYXRlSW5mby5zeXN0ZW1JZCA9IG1fc3lz
dGVtSWQ7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0geHJDcmVhdGVTZXNzaW9uKG1faW5zdGFuY2Us
ICZzZXNzaW9uQ3JlYXRlSW5mbywgJm1fc2Vzc2lvbik7CiAgICAgICAgIFJFVFVSTl9JRl9GQUlM
RUQocmVzdWx0LCAieHJFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMiLCBtX2lu
c3RhbmNlKTsKKworICAgICAgICBtX2xvY2FsU3BhY2UgPSBjcmVhdGVSZWZlcmVuY2VTcGFjZShY
Ul9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9MT0NBTCk7CisgICAgICAgIG1fdmlld1NwYWNlID0gY3Jl
YXRlUmVmZXJlbmNlU3BhY2UoWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfVklFVyk7CiAgICAgfSk7
CiB9CiAKQEAgLTQ1Nyw2ICs0ODIsMTIgQEAgdm9pZCBPcGVuWFJEZXZpY2U6OnNodXREb3duVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoKQogICAgIH0pOwogfQogCit2b2lkIE9wZW5YUkRldmljZTo6aW5p
dGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSBzcGFj
ZVR5cGUpCit7CisgICAgaWYgKChzcGFjZVR5cGUgPT0gUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2Nh
bEZsb29yIHx8IHNwYWNlVHlwZSA9PSBSZWZlcmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcikg
JiYgbV9zdGFnZVNwYWNlID09IFhSX05VTExfSEFORExFKQorICAgICAgICBtX3N0YWdlU3BhY2Ug
PSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYUl9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9TVEFHRSk7Cit9
CisKIHZvaWQgT3BlblhSRGV2aWNlOjp3YWl0VW50aWxTdG9wcGluZygpCiB7CiAgICAgQVNTRVJU
KCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1fcXVldWUucnVuTG9vcCgpKTsKQEAgLTUyNiwxNCAr
NTU3LDIwIEBAIHZvaWQgT3BlblhSRGV2aWNlOjplbmRTZXNzaW9uKCkKICAgICB9KTsKIH0KIAor
c3RhdGljIERldmljZTo6RnJhbWVEYXRhOjpQb3NlIFhyUG9zZWZUb1Bvc2UoWHJQb3NlZiBwb3Nl
KQoreworICAgIERldmljZTo6RnJhbWVEYXRhOjpQb3NlIHJlc3VsdDsKKyAgICByZXN1bHQub3Jp
ZW50YXRpb24gPSB7IHBvc2Uub3JpZW50YXRpb24ueCwgcG9zZS5vcmllbnRhdGlvbi55LCBwb3Nl
Lm9yaWVudGF0aW9uLnosIHBvc2Uub3JpZW50YXRpb24udyB9OworICAgIHJlc3VsdC5wb3NpdGlv
biA9IHsgcG9zZS5wb3NpdGlvbi54LCBwb3NlLnBvc2l0aW9uLnksIHBvc2UucG9zaXRpb24ueiB9
OworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKLURldmljZTo6RnJhbWVEYXRhOjpWaWV3RGF0YSB4
clZpZXdUb1ZpZXdEYXRhKFhyVmlldyB2aWV3KQorc3RhdGljIERldmljZTo6RnJhbWVEYXRhOjpW
aWV3IHhyVmlld1RvUG9zZShYclZpZXcgdmlldykKIHsKLSAgICBEZXZpY2U6OkZyYW1lRGF0YTo6
Vmlld0RhdGEgZGF0YTsKLSAgICBkYXRhLmZvdiA9IHsgdmlldy5mb3YuYW5nbGVVcCwgdmlldy5m
b3YuYW5nbGVEb3duLCB2aWV3LmZvdi5hbmdsZUxlZnQsIHZpZXcuZm92LmFuZ2xlUmlnaHQgfTsK
LSAgICBkYXRhLnBvc2Uub3JpZW50YXRpb24gPSB7IHZpZXcucG9zZS5vcmllbnRhdGlvbi54LCB2
aWV3LnBvc2Uub3JpZW50YXRpb24ueSwgdmlldy5wb3NlLm9yaWVudGF0aW9uLnosIHZpZXcucG9z
ZS5vcmllbnRhdGlvbi53IH07Ci0gICAgZGF0YS5wb3NlLnBvc2l0aW9uID0geyB2aWV3LnBvc2Uu
cG9zaXRpb24ueCwgdmlldy5wb3NlLnBvc2l0aW9uLnksIHZpZXcucG9zZS5wb3NpdGlvbi56IH07
Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXcgcG9zZTsKKyAg
ICBwb3NlLnByb2plY3Rpb24gPSBEZXZpY2U6OkZyYW1lRGF0YTo6Rm92IHsgdmlldy5mb3YuYW5n
bGVVcCwgdmlldy5mb3YuYW5nbGVEb3duLCB2aWV3LmZvdi5hbmdsZUxlZnQsIHZpZXcuZm92LmFu
Z2xlUmlnaHQgfTsKKyAgICBwb3NlLm9mZnNldCA9IFhyUG9zZWZUb1Bvc2Uodmlldy5wb3NlKTsK
KyAgICByZXR1cm4gcG9zZTsKIH0KIAogdm9pZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShS
ZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNTYyLDEzICs1OTksMjIgQEAgdm9p
ZCBPcGVuWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxi
YWNrKQogICAgICAgICBmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUgPSBmcmFtZVN0YXRl
LnByZWRpY3RlZERpc3BsYXlUaW1lOwogCiAgICAgICAgIGlmIChpc1Nlc3Npb25BY3RpdmUobV9z
ZXNzaW9uU3RhdGUpKSB7CisgICAgICAgICAgICAvLyBRdWVyeSBoZWFkIGxvY2F0aW9uCisgICAg
ICAgICAgICBhdXRvIGxvY2F0aW9uID0gY3JlYXRlU3RydWN0dXJlPFhyU3BhY2VMb2NhdGlvbiwg
WFJfVFlQRV9TUEFDRV9MT0NBVElPTj4oKTsKKyAgICAgICAgICAgIHhyTG9jYXRlU3BhY2UobV92
aWV3U3BhY2UsIG1fbG9jYWxTcGFjZSwgZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZSwg
JmxvY2F0aW9uKTsKKyAgICAgICAgICAgIGZyYW1lRGF0YS5pc1RyYWNraW5nVmFsaWQgPSBsb2Nh
dGlvbi5sb2NhdGlvbkZsYWdzICYgWFJfU1BBQ0VfTE9DQVRJT05fT1JJRU5UQVRJT05fVkFMSURf
QklUOworICAgICAgICAgICAgZnJhbWVEYXRhLmlzUG9zaXRpb25WYWxpZCA9IGxvY2F0aW9uLmxv
Y2F0aW9uRmxhZ3MgJiBYUl9TUEFDRV9MT0NBVElPTl9QT1NJVElPTl9WQUxJRF9CSVQ7CisgICAg
ICAgICAgICBmcmFtZURhdGEuaXNQb3NpdGlvbkVtdWxhdGVkID0gbG9jYXRpb24ubG9jYXRpb25G
bGFncyAmIFhSX1NQQUNFX0xPQ0FUSU9OX1BPU0lUSU9OX1RSQUNLRURfQklUOworCisgICAgICAg
ICAgICBpZiAoZnJhbWVEYXRhLmlzVHJhY2tpbmdWYWxpZCkKKyAgICAgICAgICAgICAgICBmcmFt
ZURhdGEub3JpZ2luID0gWHJQb3NlZlRvUG9zZShsb2NhdGlvbi5wb3NlKTsKKyAgICAgICAgICAg
IAogICAgICAgICAgICAgQVNTRVJUKG1fY29uZmlndXJhdGlvblZpZXdzLmNvbnRhaW5zKG1fY3Vy
cmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSkpOwogICAgICAgICAgICAgY29uc3QgYXV0byYgY29u
ZmlndXJhdGlvblZpZXcgPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5nZXQobV9jdXJyZW50Vmlld0Nv
bmZpZ3VyYXRpb25UeXBlKTsKIAogICAgICAgICAgICAgYXV0byB2aWV3TG9jYXRlSW5mbyA9IGNy
ZWF0ZVN0cnVjdHVyZTxYclZpZXdMb2NhdGVJbmZvLCBYUl9UWVBFX1ZJRVdfTE9DQVRFX0lORk8+
KCk7CiAgICAgICAgICAgICB2aWV3TG9jYXRlSW5mby5kaXNwbGF5VGltZSA9IHByZWRpY3RlZFRp
bWU7Ci0gICAgICAgICAgICAvLyBGSVhNRTogdXNlIHRoZSBjdXJyZW50IHJlZmVyZW5jZSBzcGFj
ZS4KLSAgICAgICAgICAgIC8vIHZpZXdMb2NhdGVJbmZvLnNwYWNlID0gbV9sb2NhbFNwYWNlOwor
ICAgICAgICAgICAgdmlld0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3BhY2U7CiAKICAgICAg
ICAgICAgIHVpbnQzMl90IHZpZXdDb3VudCA9IGNvbmZpZ3VyYXRpb25WaWV3LnNpemUoKTsKICAg
ICAgICAgICAgIFZlY3RvcjxYclZpZXc+IHZpZXdzKHZpZXdDb3VudCwgW10gewpAQCAtNTgzLDcg
KzYyOSwxNCBAQCB2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgICAgICByZXN1bHQgPSB4ckxvY2F0ZVZpZXdzKG1f
c2Vzc2lvbiwgJnZpZXdMb2NhdGVJbmZvLCAmdmlld1N0YXRlLCB2aWV3Q291bnQsICZ2aWV3Q291
bnRPdXRwdXQsIHZpZXdzLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAoIVhSX0ZBSUxFRChyZXN1
bHQpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiB2aWV3IDogdmlld3MpCi0gICAgICAg
ICAgICAgICAgICAgIGZyYW1lRGF0YS52aWV3UG9zZXMuYXBwZW5kKHhyVmlld1RvVmlld0RhdGEo
dmlldykpOworICAgICAgICAgICAgICAgICAgICBmcmFtZURhdGEudmlld3MuYXBwZW5kKHhyVmll
d1RvUG9zZSh2aWV3KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFF1ZXJ5IGZs
b29yIHRyYW5zZm9ybQorICAgICAgICAgICAgaWYgKG1fc3RhZ2VTcGFjZSAhPSBYUl9OVUxMX0hB
TkRMRSkgeworICAgICAgICAgICAgICAgIGF1dG8gZmxvb3JMb2NhdGlvbiA9IGNyZWF0ZVN0cnVj
dHVyZTxYclNwYWNlTG9jYXRpb24sIFhSX1RZUEVfU1BBQ0VfTE9DQVRJT04+KCk7CisgICAgICAg
ICAgICAgICAgeHJMb2NhdGVTcGFjZShtX3N0YWdlU3BhY2UsIG1fbG9jYWxTcGFjZSwgZnJhbWVT
dGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZSwgJmZsb29yTG9jYXRpb24pOworICAgICAgICAgICAg
ICAgIGZyYW1lRGF0YS5mbG9vclRyYW5zZm9ybSA9IHsgWHJQb3NlZlRvUG9zZShmbG9vckxvY2F0
aW9uLnBvc2UpIH07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjAwLDYgKzY1Mywy
MSBAQCB2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiAgICAgfSk7CiB9CiAKK1ZlY3RvcjxEZXZpY2U6OlZpZXdEYXRhPiBPcGVu
WFJEZXZpY2U6OnZpZXdzKFNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7CisgICAgVmVjdG9yPERl
dmljZTo6Vmlld0RhdGE+IHZpZXdzOworICAgIGF1dG8gY29uZmlndXJhdGlvblR5cGUgPSB0b1hy
Vmlld0NvbmZpZ3VyYXRpb25UeXBlKG1vZGUpOworCisgICAgaWYgKGNvbmZpZ3VyYXRpb25UeXBl
ID09IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllfTU9OTykKKyAgICAgICAgdmll
d3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIC5leWUgPSBFeWU6Ok5vbmUgfSk7CisgICAgZWxz
ZSB7CisgICAgICAgIEFTU0VSVChjb25maWd1cmF0aW9uVHlwZSA9PSBYUl9WSUVXX0NPTkZJR1VS
QVRJT05fVFlQRV9QUklNQVJZX1NURVJFTyk7CisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3Rp
dmUgPSB0cnVlLCBFeWU6OkxlZnQgfSk7CisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUg
PSB0cnVlLCBFeWU6OlJpZ2h0IH0pOworICAgIH0KKyAgICByZXR1cm4gdmlld3M7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFBsYXRmb3JtWFIKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikgJiYgVVNF
KE9QRU5YUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9Q
bGF0Zm9ybVhST3BlblhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxh
dGZvcm1YUk9wZW5YUi5oCmluZGV4IDViZWJlNjk2NjkzMjdkYjJjODE1YjU1NmFlZGQxY2E5OWI0
NmUxNzYuLjAyZDE5NGU2MjcxZWJhNmIyYTg0NDg3MDI3OTVhNjA5ZWEyOTA3M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIu
aApAQCAtNTEsMTIgKzUxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0Q29uZmlndXJh
dGlvblZpZXdzKCk7CiAKICAgICBMaXN0T2ZFbmFibGVkRmVhdHVyZXMgZW51bWVyYXRlUmVmZXJl
bmNlU3BhY2VzKFhyU2Vzc2lvbiYpIGNvbnN0OwotICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5j
ZVNwYWNlKFJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9OworICAgIFhyU3BhY2UgY3JlYXRl
UmVmZXJlbmNlU3BhY2UoWHJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgV2ViQ29yZTo6SW50
U2l6ZSByZWNvbW1lbmRlZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUpIGZpbmFsOwogCiAgICAgdm9p
ZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUpIGZpbmFsOwogICAg
IHZvaWQgc2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOworICAgIHZvaWQgaW5p
dGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmlu
YWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHdhaXRVbnRpbFN0b3BwaW5nKCk7CiAK
QEAgLTY4LDYgKzY5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdEZyYW1lKFJlcXVl
c3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwogCisgICAgVmVjdG9yPFZpZXdEYXRhPiB2aWV3cyhT
ZXNzaW9uTW9kZSkgY29uc3QgZmluYWw7CisKICAgICB1c2luZyBWaWV3Q29uZmlndXJhdGlvblBy
b3BlcnRpZXNNYXAgPSBIYXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBYclZpZXdDb25m
aWd1cmF0aW9uUHJvcGVydGllcywgSW50SGFzaDxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4sIFdU
Rjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+PjsKICAgICBW
aWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXNNYXAgbV92aWV3Q29uZmlndXJhdGlvblByb3BlcnRp
ZXM7CiAgICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25WaWV3c01hcCA9IEhhc2hNYXA8WHJWaWV3
Q29uZmlndXJhdGlvblR5cGUsIFZlY3RvcjxYclZpZXdDb25maWd1cmF0aW9uVmlldz4sIEludEhh
c2g8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFhy
Vmlld0NvbmZpZ3VyYXRpb25UeXBlPj47CkBAIC04MSw2ICs4NCw5IEBAIHByaXZhdGU6CiAgICAg
V29ya1F1ZXVlJiBtX3F1ZXVlOwogCiAgICAgWHJWaWV3Q29uZmlndXJhdGlvblR5cGUgbV9jdXJy
ZW50Vmlld0NvbmZpZ3VyYXRpb25UeXBlOworICAgIFhyU3BhY2UgbV9sb2NhbFNwYWNlIHsgWFJf
TlVMTF9IQU5ETEUgfTsKKyAgICBYclNwYWNlIG1fdmlld1NwYWNlIHsgWFJfTlVMTF9IQU5ETEUg
fTsKKyAgICBYclNwYWNlIG1fc3RhZ2VTcGFjZSB7IFhSX05VTExfSEFORExFIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUkRldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VY
UkRldmljZS5jcHAKaW5kZXggNTQwMThkYTdlYmI1M2RkNTE5NDJkZTc2NjE0OTY3MmZmMWFjODQ1
Ny4uYmYzODE0MmJmYzlkZTliYjc4ZGY4NDBmZGMxNWFmNGE5OGY4MTQ1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcApAQCAtMzIsMTQgKzMyLDIwIEBACiAj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJXZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyBGYWtlWFJGcmFtZVRpbWUgPSAxNV9tczsKIAotdm9pZCBGYWtlWFJW
aWV3OjpzZXRGaWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0IGZvdikK
K3ZvaWQgRmFrZVhSVmlldzo6c2V0UHJvamVjdGlvbihjb25zdCBWZWN0b3I8ZmxvYXQ+JiBwcm9q
ZWN0aW9uKQogewotICAgIG1fZm92ID0gZm92OworICAgIHN0ZDo6Y29weShzdGQ6OmJlZ2luKHBy
b2plY3Rpb24pLCBzdGQ6OmVuZChwcm9qZWN0aW9uKSwgc3RkOjpiZWdpbihtX3Byb2plY3Rpb24p
KTsKK30KKwordm9pZCBGYWtlWFJWaWV3OjpzZXRGaWVsZE9mVmlldyhjb25zdCBGYWtlWFJWaWV3
SW5pdDo6RmllbGRPZlZpZXdJbml0JiBmb3YpCit7CisgICAgbV9mb3YgPSBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6Rm92IHsgZGVnMnJhZChmb3YudXBEZWdyZWVzKSwgZGVnMnJhZChm
b3YuZG93bkRlZ3JlZXMpLCBkZWcycmFkKGZvdi5sZWZ0RGVncmVlcyksIGRlZzJyYWQoZm92LnJp
Z2h0RGVncmVlcykgfTsKIH0KIAogU2ltdWxhdGVkWFJEZXZpY2U6OlNpbXVsYXRlZFhSRGV2aWNl
KCkKQEAgLTc0LDMxICs4MCw3MiBAQCB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzdG9wVGltZXIo
KQogCiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVyRmlyZWQoKQogewotICAgIGF1
dG8gY2FsbGJhY2tzID0gV1RGTW92ZShtX2NhbGxiYWNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxs
YmFjayA6IGNhbGxiYWNrcykKLSAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICBhdXRvIHVwZGF0
ZXMgPSBXVEZNb3ZlKG1fcGVuZGluZ1VwZGF0ZXMpOworICAgIGZvciAoYXV0byYgdXBkYXRlIDog
dXBkYXRlcykKKyAgICAgICAgdXBkYXRlKCk7CisKKyAgICBGcmFtZURhdGEgZGF0YTsKKyAgICBp
ZiAobV92aWV3ZXJPcmlnaW4pIHsKKyAgICAgICAgZGF0YS5vcmlnaW4gPSAqbV92aWV3ZXJPcmln
aW47CisgICAgICAgIGRhdGEuaXNUcmFja2luZ1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgZGF0YS5p
c1Bvc2l0aW9uVmFsaWQgPSB0cnVlOworICAgIH0KKworICAgIGlmIChtX2Zsb29yT3JpZ2luKQor
ICAgICAgICBkYXRhLmZsb29yVHJhbnNmb3JtID0geyAqbV9mbG9vck9yaWdpbiB9OworCisgICAg
Zm9yIChhdXRvJiBmYWtlVmlldyA6IG1fdmlld3MpIHsKKyAgICAgICAgRnJhbWVEYXRhOjpWaWV3
IHZpZXc7CisgICAgICAgIHZpZXcub2Zmc2V0ID0gZmFrZVZpZXctPm9mZnNldCgpOworICAgICAg
ICBpZiAoZmFrZVZpZXctPmZpZWxkT2ZWaWV3KCkuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgIHZp
ZXcucHJvamVjdGlvbiA9IHsgKmZha2VWaWV3LT5maWVsZE9mVmlldygpIH07CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHZpZXcucHJvamVjdGlvbiA9IHsgZmFrZVZpZXctPnByb2plY3Rpb24o
KSB9OworICAgICAgICAKKyAgICAgICAgZGF0YS52aWV3cy5hcHBlbmQodmlldyk7CisgICAgfQor
CisgICAgaWYgKG1fRnJhbWVDYWxsYmFjaykKKyAgICAgICAgbV9GcmFtZUNhbGxiYWNrKFdURk1v
dmUoZGF0YSkpOwogfQogCiB2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVx
dWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBtX2NhbGxiYWNrcy5hcHBlbmQo
V1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fRnJhbWVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOwogICAgIGlmICghbV9mcmFtZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fZnJhbWVU
aW1lci5zdGFydE9uZVNob3QoRmFrZVhSRnJhbWVUaW1lKTsKIH0KIAorCitWZWN0b3I8UGxhdGZv
cm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gU2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzKFBsYXRmb3Jt
WFI6OlNlc3Npb25Nb2RlIG1vZGUpIGNvbnN0Cit7CisgICAgaWYgKG1vZGUgPT0gUGxhdGZvcm1Y
Ujo6U2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKQorICAgICAgICByZXR1cm4geyB7IC5hY3RpdmUg
PSB0cnVlLCBQbGF0Zm9ybVhSOjpFeWU6OkxlZnQgfSwgeyAuYWN0aXZlID0gdHJ1ZSwgUGxhdGZv
cm1YUjo6RXllOjpSaWdodCB9IH07CisKKyAgICByZXR1cm4geyB7IC5hY3RpdmUgPSB0cnVlLCBQ
bGF0Zm9ybVhSOjpFeWU6Ok5vbmUgfSB9OworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpz
Y2hlZHVsZU9uTmV4dEZyYW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jKQoreworICAgIG1fcGVu
ZGluZ1VwZGF0ZXMuYXBwZW5kKFdURk1vdmUoZnVuYykpOworfQorCisKIFdlYkZha2VYUkRldmlj
ZTo6V2ViRmFrZVhSRGV2aWNlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6
c2V0Vmlld3MoY29uc3QgVmVjdG9yPEZha2VYUlZpZXdJbml0PiYgdmlld3MpCiB7Ci0gICAgVmVj
dG9yPFJlZjxGYWtlWFJWaWV3Pj4mIGRldmljZVZpZXdzID0gbV9kZXZpY2Uudmlld3MoKTsKLSAg
ICBkZXZpY2VWaWV3cy5jbGVhcigpOworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUo
W3RoaXMsIHZpZXdzXSgpIHsKKyAgICAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4gZGV2aWNl
Vmlld3M7CiAKLSAgICAvLyBUT0RPOiBkbyBpbiBuZXh0IGFuaW1hdGlvbiBmcmFtZS4KLSAgICBm
b3IgKGF1dG8mIHZpZXdJbml0IDogdmlld3MpIHsKLSAgICAgICAgYXV0byB2aWV3ID0gcGFyc2VW
aWV3KHZpZXdJbml0KTsKLSAgICAgICAgaWYgKCF2aWV3Lmhhc0V4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgZGV2aWNlVmlld3MuYXBwZW5kKHZpZXcucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAg
IH0KKyAgICAgICAgZm9yIChhdXRvJiB2aWV3SW5pdCA6IHZpZXdzKSB7CisgICAgICAgICAgICBh
dXRvIHZpZXcgPSBwYXJzZVZpZXcodmlld0luaXQpOworICAgICAgICAgICAgaWYgKCF2aWV3Lmhh
c0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGRldmljZVZpZXdzLmFwcGVuZCh2aWV3LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fZGV2aWNlLnNldFZp
ZXdzKFdURk1vdmUoZGV2aWNlVmlld3MpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtlWFJE
ZXZpY2U6OmRpc2Nvbm5lY3QoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKQEAg
LTEwOCw3MSArMTU1LDczIEBAIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpkaXNjb25uZWN0KERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpz
ZXRWaWV3ZXJPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IG9yaWdpbiwgYm9vbCBlbXVs
YXRlZFBvc2l0aW9uKQogewotICAgIGF1dG8gcmlnaWRUcmFuc2Zvcm0gPSBwYXJzZVJpZ2lkVHJh
bnNmb3JtKG9yaWdpbik7Ci0gICAgaWYgKHJpZ2lkVHJhbnNmb3JtLmhhc0V4Y2VwdGlvbigpKQor
ICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOworICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFRPRE86IGRv
IGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNldFZpZXdlck9yaWdpbihy
aWdpZFRyYW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Ci0gICAgbV9kZXZpY2Uuc2V0RW11
bGF0ZWRQb3NpdGlvbihlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICBhdXRvIHBvc2UgPSByZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1l
KFt0aGlzLCBwb3NlID0gV1RGTW92ZShwb3NlKSwgZW11bGF0ZWRQb3NpdGlvbl0oKSBtdXRhYmxl
IHsKKyAgICAgICAgbV9kZXZpY2Uuc2V0Vmlld2VyT3JpZ2luKFdURk1vdmUocG9zZSkpOworICAg
ICAgICBtX2RldmljZS5zZXRFbXVsYXRlZFBvc2l0aW9uKGVtdWxhdGVkUG9zaXRpb24pOworICAg
IH0pOwogfQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6Y2xlYXJWaWV3ZXJPcmlnaW4oKQogewot
ICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNl
dFZpZXdlck9yaWdpbihudWxscHRyKTsKKyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1l
KFt0aGlzXSgpIHsKKyAgICAgICAgbV9kZXZpY2Uuc2V0Vmlld2VyT3JpZ2luKFdURjo6bnVsbG9w
dCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZVZpc2liaWxp
dHlDaGFuZ2UoWFJWaXNpYmlsaXR5U3RhdGUpCiB7CiB9CiAKLXZvaWQgV2ViRmFrZVhSRGV2aWNl
OjpzZXRCb3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+KQordm9pZCBXZWJG
YWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4m
JikKIHsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNldEZsb29yT3JpZ2luKEZha2VYUlJp
Z2lkVHJhbnNmb3JtSW5pdCBvcmlnaW4pCiB7Ci0gICAgYXV0byByaWdpZFRyYW5zZm9ybSA9IHBh
cnNlUmlnaWRUcmFuc2Zvcm0ob3JpZ2luKTsKLSAgICBpZiAocmlnaWRUcmFuc2Zvcm0uaGFzRXhj
ZXB0aW9uKCkpCisgICAgYXV0byByZXN1bHQgPSBwYXJzZVJpZ2lkVHJhbnNmb3JtKG9yaWdpbik7
CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Ly8gVE9ETzogZG8gaW4gbmV4dCBhbmltYXRpb24gZnJhbWUuCi0gICAgbV9kZXZpY2Uuc2V0Rmxv
b3JPcmlnaW4ocmlnaWRUcmFuc2Zvcm0ucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIGF1dG8g
cG9zZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIG1fZGV2aWNlLnNjaGVk
dWxlT25OZXh0RnJhbWUoW3RoaXMsIHBvc2UgPSBXVEZNb3ZlKHBvc2UpXSgpIG11dGFibGUgewor
ICAgICAgICBtX2RldmljZS5zZXRGbG9vck9yaWdpbihXVEZNb3ZlKHBvc2UpKTsKKyAgICB9KTsK
IH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OmNsZWFyRmxvb3JPcmlnaW4oKQogewotICAgIC8v
IFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNldEZsb29y
T3JpZ2luKG51bGxwdHIpOworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoW3RoaXNd
KCkgeworICAgICAgICBtX2RldmljZS5zZXRGbG9vck9yaWdpbihXVEY6Om51bGxvcHQpOworICAg
IH0pOwogfQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVSZXNldFBvc2UoKQogewog
fQogCisKIFJlZjxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUkRldmljZTo6c2lt
dWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oRmFrZVhSSW5wdXRTb3VyY2VJbml0KQogewogICAg
IHJldHVybiBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmNyZWF0ZSgpOwogfQogCi1FeGNlcHRp
b25PcjxSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4+IFdlYkZha2VYUkRldmljZTo6cGFyc2VSaWdp
ZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmIGluaXQpCitFeGNlcHRp
b25PcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gV2ViRmFrZVhSRGV2aWNl
OjpwYXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYgaW5p
dCkKIHsKICAgICBpZiAoaW5pdC5wb3NpdGlvbi5zaXplKCkgIT0gMyB8fCBpbml0Lm9yaWVudGF0
aW9uLnNpemUoKSAhPSA0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07
CiAKLSAgICBET01Qb2ludEluaXQgcG9zaXRpb247Ci0gICAgcG9zaXRpb24ueCA9IGluaXQucG9z
aXRpb25bMF07Ci0gICAgcG9zaXRpb24ueSA9IGluaXQucG9zaXRpb25bMV07Ci0gICAgcG9zaXRp
b24ueiA9IGluaXQucG9zaXRpb25bMl07Ci0KLSAgICBET01Qb2ludEluaXQgb3JpZW50YXRpb247
Ci0gICAgb3JpZW50YXRpb24ueCA9IGluaXQub3JpZW50YXRpb25bMF07Ci0gICAgb3JpZW50YXRp
b24ueSA9IGluaXQub3JpZW50YXRpb25bMV07Ci0gICAgb3JpZW50YXRpb24ueiA9IGluaXQub3Jp
ZW50YXRpb25bMl07Ci0gICAgb3JpZW50YXRpb24udyA9IGluaXQub3JpZW50YXRpb25bM107Cisg
ICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBvc2UgcG9zZTsKKyAgICBwb3NlLnBv
c2l0aW9uID0geyBpbml0LnBvc2l0aW9uWzBdLCBpbml0LnBvc2l0aW9uWzFdLCBpbml0LnBvc2l0
aW9uWzJdIH07CisgICAgcG9zZS5vcmllbnRhdGlvbiA9IHsgaW5pdC5vcmllbnRhdGlvblswXSwg
aW5pdC5vcmllbnRhdGlvblsxXSwgaW5pdC5vcmllbnRhdGlvblsyXSwgaW5pdC5vcmllbnRhdGlv
blszXSB9OwogCi0gICAgcmV0dXJuIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShwb3NpdGlv
biwgb3JpZW50YXRpb24pOworICAgIHJldHVybiBwb3NlOwogfQogCiBFeGNlcHRpb25PcjxSZWY8
RmFrZVhSVmlldz4+IFdlYkZha2VYUkRldmljZTo6cGFyc2VWaWV3KGNvbnN0IEZha2VYUlZpZXdJ
bml0JiBpbml0KQpAQCAtMTgyLDIyICsyMzEsMTcgQEAgRXhjZXB0aW9uT3I8UmVmPEZha2VYUlZp
ZXc+PiBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyhjb25zdCBGYWtlWFJWaWV3SW5pdCYgaW4K
IAogICAgIGlmIChpbml0LnByb2plY3Rpb25NYXRyaXguc2l6ZSgpICE9IDE2KQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Ci0gICAgZmFrZVZpZXctPnZpZXcoKS0+c2V0
UHJvamVjdGlvbk1hdHJpeChpbml0LnByb2plY3Rpb25NYXRyaXgpOworICAgIGZha2VWaWV3LT5z
ZXRQcm9qZWN0aW9uKGluaXQucHJvamVjdGlvbk1hdHJpeCk7CiAKICAgICBhdXRvIHZpZXdPZmZz
ZXQgPSBwYXJzZVJpZ2lkVHJhbnNmb3JtKGluaXQudmlld09mZnNldCk7CiAgICAgaWYgKHZpZXdP
ZmZzZXQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB2aWV3T2Zmc2V0LnJlbGVhc2VF
eGNlcHRpb24oKTsKLSAgICBmYWtlVmlldy0+dmlldygpLT5zZXRUcmFuc2Zvcm0odmlld09mZnNl
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgZmFrZVZpZXctPnNldE9mZnNldCh2aWV3T2Zm
c2V0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIAogICAgIGZha2VWaWV3LT5zZXRSZXNvbHV0aW9u
KGluaXQucmVzb2x1dGlvbik7CiAKICAgICBpZiAoaW5pdC5maWVsZE9mVmlldykgewogICAgICAg
ICBmYWtlVmlldy0+c2V0RmllbGRPZlZpZXcoaW5pdC5maWVsZE9mVmlldy52YWx1ZSgpKTsKLSAg
ICAgICAgLy8gVE9ETzogU2V0IHZpZXfigJlzIHByb2plY3Rpb24gbWF0cml4IHRvIHRoZSBwcm9q
ZWN0aW9uIG1hdHJpeAotICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZmllbGQgb2Yg
dmlldywgYW5kIGRlcHRoIHZhbHVlcyBlcXVhbCB0bwotICAgICAgICAvLyBkZXB0aE5lYXIgYW5k
IGRlcHRoRmFyIG9mIGFueSBYUlNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UuCi0g
ICAgICAgIC8vIElmIHRoZXJlIGN1cnJlbnRseSBpcyBub25lLCB1c2UgdGhlIGRlZmF1bHQgdmFs
dWVzIG9mIG5lYXI9MC4xLAotICAgICAgICAvLyBmYXI9MTAwMC4wLgogICAgIH0KIAogICAgIHJl
dHVybiBmYWtlVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFr
ZVhSRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCmlu
ZGV4IDM5MWJmYzM0N2VlZjlhYWFmMTdiZDJiYThiNmJhNDM2ZjAwMDQ2ZDUuLjNhNmIwZTg1NzY1
M2YzN2M0ZDE4YzYxMTg3YzMxMmU5ZDgxN2RiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJEZXZpY2UuaApAQCAtMzMsOCArMzMsNiBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgogI2luY2x1ZGUgIldlYkZha2VY
UklucHV0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKLSNp
bmNsdWRlICJXZWJYUlZpZXcuaCIKICNpbmNsdWRlICJYUlZpc2liaWxpdHlTdGF0ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDMs
MjEgKzQxLDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZha2VYUlZpZXcgZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxGYWtlWFJWaWV3PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxGYWtlWFJWaWV3PiBjcmVhdGUoWFJFeWUgZXllKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZh
a2VYUlZpZXcoZXllKSk7IH0KKyAgICB1c2luZyBQb3NlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OlBvc2U7CisgICAgdXNpbmcgRm92ID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OkZvdjsKIAotICAgIFJlZlB0cjxXZWJYUlZpZXc+IHZpZXcoKSB7IHJldHVybiBtX3Zp
ZXc7IH0KLSAgICB2b2lkIHNldFJlc29sdXRpb24oRmFrZVhSVmlld0luaXQ6OkRldmljZVJlc29s
dXRpb24gcmVzb2x1dGlvbikgeyBtX3Jlc29sdXRpb24gPSByZXNvbHV0aW9uOyB9Ci0gICAgdm9p
ZCBzZXRGaWVsZE9mVmlldyhGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0KTsKKyAgICBY
UkV5ZSBleWUoKSBjb25zdCB7IHJldHVybiBtX2V5ZTsgfQorICAgIGNvbnN0IFBvc2UmIG9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgY29uc3Qgc3RkOjphcnJheTxmbG9h
dCwgMTY+JiBwcm9qZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uOyB9CisgICAg
Y29uc3QgT3B0aW9uYWw8Rm92PiYgZmllbGRPZlZpZXcoKSBjb25zdCB7IHJldHVybiBtX2Zvdjt9
CiAKKyAgICB2b2lkIHNldFJlc29sdXRpb24oRmFrZVhSVmlld0luaXQ6OkRldmljZVJlc29sdXRp
b24gcmVzb2x1dGlvbikgeyBtX3Jlc29sdXRpb24gPSByZXNvbHV0aW9uOyB9CisgICAgdm9pZCBz
ZXRPZmZzZXQoUG9zZSYmIG9mZnNldCkgeyBtX29mZnNldCA9IFdURk1vdmUob2Zmc2V0KTsgfQor
ICAgIHZvaWQgc2V0UHJvamVjdGlvbihjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CisgICAgdm9pZCBz
ZXRGaWVsZE9mVmlldyhjb25zdCBGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0Jik7CiBw
cml2YXRlOgogICAgIEZha2VYUlZpZXcoWFJFeWUgZXllKQotICAgIHsKLSAgICAgICAgbV92aWV3
ID0gV2ViWFJWaWV3OjpjcmVhdGUoKTsKLSAgICAgICAgbV92aWV3LT5zZXRFeWUoZXllKTsKLSAg
ICB9CisgICAgICAgIDogbV9leWUoZXllKSB7IH0KKwogCi0gICAgUmVmUHRyPFdlYlhSVmlldz4g
bV92aWV3OworICAgIFhSRXllIG1fZXllOwogICAgIEZha2VYUlZpZXdJbml0OjpEZXZpY2VSZXNv
bHV0aW9uIG1fcmVzb2x1dGlvbjsKLSAgICBGYWtlWFJWaWV3SW5pdDo6RmllbGRPZlZpZXdJbml0
IG1fZm92OworICAgIFBvc2UgbV9vZmZzZXQ7CisgICAgc3RkOjphcnJheTxmbG9hdCwgMTY+IG1f
cHJvamVjdGlvbjsKKyAgICBPcHRpb25hbDxGb3Y+IG1fZm92OwogfTsKIAogY2xhc3MgU2ltdWxh
dGVkWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKQEAgLTY1LDMx
ICs3MCwzNSBAQCBjbGFzcyBTaW11bGF0ZWRYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9y
bVhSOjpEZXZpY2UgewogcHVibGljOgogICAgIFNpbXVsYXRlZFhSRGV2aWNlKCk7CiAgICAgflNp
bXVsYXRlZFhSRGV2aWNlKCk7Ci0gICAgdm9pZCBzZXROYXRpdmVCb3VuZHNHZW9tZXRyeShWZWN0
b3I8RmFrZVhSQm91bmRzUG9pbnQ+IGdlb21ldHJ5KSB7IG1fbmF0aXZlQm91bmRzR2VvbWV0cnkg
PSBnZW9tZXRyeTsgfQotICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKFJlZlB0cjxXZWJYUlJpZ2lk
VHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX3ZpZXdlck9yaWdpbiA9IFdURk1vdmUob3JpZ2luKTsg
fQotICAgIHZvaWQgc2V0Rmxvb3JPcmlnaW4oUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYg
b3JpZ2luKSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KKyAgICB2b2lkIHNl
dFZpZXdzKFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiYgdmlld3MpIHsgbV92aWV3cyA9IFdURk1v
dmUodmlld3MpOyB9CisgICAgdm9pZCBzZXROYXRpdmVCb3VuZHNHZW9tZXRyeShjb25zdCBWZWN0
b3I8RmFrZVhSQm91bmRzUG9pbnQ+JiBnZW9tZXRyeSkgeyBtX25hdGl2ZUJvdW5kc0dlb21ldHJ5
ID0gZ2VvbWV0cnk7IH0KKyAgICB2b2lkIHNldFZpZXdlck9yaWdpbihPcHRpb25hbDxGcmFtZURh
dGE6OlBvc2U+JiYgb3JpZ2luKSB7IG1fdmlld2VyT3JpZ2luID0gV1RGTW92ZShvcmlnaW4pOyB9
CisgICAgdm9pZCBzZXRGbG9vck9yaWdpbihPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+JiYgb3Jp
Z2luKSB7IG1fZmxvb3JPcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KICAgICB2b2lkIHNldEVt
dWxhdGVkUG9zaXRpb24oYm9vbCBlbXVsYXRlZCkgeyBtX2VtdWxhdGVkUG9zaXRpb24gPSBlbXVs
YXRlZDsgfQogICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiB2aWV3cygpIHsgcmV0dXJuIG1f
dmlld3M7IH0KICAgICB2b2lkIHNldFN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24oYm9vbCBz
dXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uKSB7IG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNh
dGlvbiA9IHN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb247IH0KICAgICB2b2lkIHNpbXVsYXRl
U2h1dGRvd25Db21wbGV0ZWQoKTsKKyAgICB2b2lkIHNjaGVkdWxlT25OZXh0RnJhbWUoRnVuY3Rp
b248dm9pZCgpPiYmKTsKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRS
ZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQogICAgIHZvaWQgc2h1
dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNz
aW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N1cHBvcnRz
U2h1dGRvd25Ob3RpZmljYXRpb247IH0KICAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFj
ZShQbGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsIHsgfQorICAgIFZlY3RvcjxQ
bGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9k
ZSkgY29uc3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJh
Y2smJikgZmluYWw7CiAKICAgICB2b2lkIHN0b3BUaW1lcigpOwogICAgIHZvaWQgZnJhbWVUaW1l
ckZpcmVkKCk7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+PiBtX25h
dGl2ZUJvdW5kc0dlb21ldHJ5OwotICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3Zp
ZXdlck9yaWdpbjsKLSAgICBSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9mbG9vck9yaWdp
bjsKKyAgICBPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+IG1fdmlld2VyT3JpZ2luOworICAgIE9w
dGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4gbV9mbG9vck9yaWdpbjsKICAgICBib29sIG1fZW11bGF0
ZWRQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4gbV92aWV3
czsKICAgICBib29sIG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CiAg
ICAgVGltZXIgbV9mcmFtZVRpbWVyOwotICAgIFZlY3RvcjxSZXF1ZXN0RnJhbWVDYWxsYmFjaz4g
bV9jYWxsYmFja3M7CisgICAgUmVxdWVzdEZyYW1lQ2FsbGJhY2sgbV9GcmFtZUNhbGxiYWNrOwor
ICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX3BlbmRpbmdVcGRhdGVzOwogfTsKIAogY2xh
c3MgV2ViRmFrZVhSRGV2aWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRmFrZVhSRGV2
aWNlPiB7CkBAIC0xMDYsNyArMTE1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaW11bGF0ZVZp
c2liaWxpdHlDaGFuZ2UoWFJWaXNpYmlsaXR5U3RhdGUpOwogCi0gICAgdm9pZCBzZXRCb3VuZHNH
ZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+IGJvdW5kc0Nvb3JkaW5hdGVzKTsKKyAg
ICB2b2lkIHNldEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4mJiBib3Vu
ZHNDb29yZGluYXRlcyk7CiAKICAgICB2b2lkIHNldEZsb29yT3JpZ2luKEZha2VYUlJpZ2lkVHJh
bnNmb3JtSW5pdCk7CiAKQEAgLTEyNyw3ICsxMzYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFdlYkZha2VYUkRldmljZSgpOwogCi0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPj4gcGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdpZFRyYW5z
Zm9ybUluaXQmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OlBvc2U+IHBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRUcmFu
c2Zvcm1Jbml0Jik7CiAKICAgICBTaW11bGF0ZWRYUkRldmljZSBtX2RldmljZTsKIH07CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNjNlZjUyMGFlMzkxZTcwYjYyMTg5MDgyZWU2NzQyODQ4ZDRhYTNjMC4uMjRiZGM2MmRkZTU4
YmRjNWI0MjdiM2VlNGMxOGRmMmU0OGZjNTI5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIx
LTAyLTE1ICBJbWFub2wgRmVybmFuZGV6ICA8aWZlcm5hbmRlekBpZ2FsaWEuY29tPiBhbmQgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83NDExMjkxMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYXJrIHBvc2UgcmVsYXRlZCBXZWJYUiB0ZXN0cyBhcyBwYXNzaW5nLgorCisgICAgICAg
ICogcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDItMTQgIFBlbmcgTGl1
ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gTW92ZSBVc2VHUFVQcm9j
ZXNzRm9yTWVkaWFFbmFibGVkIGZyb20gV2ViUHJlZmVyZW5jZXNJbnRlcm5hbCB0byBXZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMGE2
MGZmMTQ1ZGYxZGZlODI4N2YwYjMwOWRkNTRiMTg1MzcwMWE5Yi4uNjNhOTE5NWY0NzRkZGQwOGE5
YmY4ZDlmMjg1OTQ3YmE1ZTk4MWY1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMjEtMDItMTUgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFuZGV6
QGlnYWxpYS5jb20+IGFuZCBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBXZWJYUiBnZXRWaWV3ZXJQb3NlIGFuZCBnZXRQb3NlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyMjUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MTEyOTEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgcG9zZSBhbmQgcmVmZXJlbmNlIHNwYWNlIFdl
YlhSIHRlc3RzIGFzIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0
dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5j
ZVNwYWNlX3JlbGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFt
ZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0Vmll
d2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmll
d19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyVmlld19tYXRjaC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMS0wMi0xMiAgU2VyZ2lvIFZpbGxhciBTZW5p
biAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIEFub3RoZXIg
V1BUIHRlc3QgaW1wb3J0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJh
bWVfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk2MjNkNGY4YTE3Zjg1
ZmY4MjdjYzU4ZTg1ODMzNTA0Zjk2NjkyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3NlLmh0
dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZyYW1lLmdldFBvc2Ug
d29ya3MgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBYUkZyYW1lLmdldFBvc2Ugd29ya3Mg
Zm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBvc2Vf
Z2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjFiZTM5MDEzNzhkOTA2MDViYjI2M2Q2MWJmYmU4
YmRhZjIwZTBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBvc2VfZ2V0UG9zZS5odHRw
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQ
b3NlKHJlZlNwYWNlKSBtYXRjaGVzIGdldFBvc2Uodmlld2VyLCByZWZTcGFjZSkuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZl
cmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZGY5ZjJiYTZhNTgxOWYwNGYxMGNmNTdiYmNjOWY1NTA2OTU1ZmZhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIENyZWF0aW5nIFhSUmVmZXJlbmNlU3BhY2Ugb3JpZ2lu
IG9mZnNldCBvZmYgb2YgYHZpZXdlcmAgc3BhY2Ugd29ya3MuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VT
cGFjZV9yZWxhdGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9yZWxhdGlv
bnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWVjYzFiMmJlZjgyZjYxYWIx
YjRhYWVmOGFiMTkxMDM2NmJjZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX3JlbGF0
aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEJvdW5k
ZWQgc3BhY2UsIHZpZXdlciBzcGFjZSwgbG9jYWwgYW5kIGxvY2FsLWZsb29yIHNwYWNlIGhhdmUg
Y29ycmVjdCBwb3NlcyB3LnIudC4gZWFjaCBvdGhlcgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWQ5ZjM5MWE3NjRmNDg4YjhmN2UzMTgyY2M4NmU4MjBiMDFmMzA1NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJT
ZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcmVzb2x2ZXMg
d2l0aCBnb29kIGRhdGEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2dl
dFZpZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1l
X2dldFZpZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZTY3ZGFmZWU1
YzNjODEwYWQ5YTI5YTNlZDVjY2Q5OWNhNTcwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1
ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5l
eHQgZnJhbWUgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKK1BBU1MgWFJGcmFtZSBnZXRWaWV3
ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNl
c3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYjU2MjFhNGUxYjM2ODFiYzRkZTI0NTdkNzljYmY1YmVkMmM4ODExCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKKworUEFTUyBJZGVudGl0eSByZWZlcmVuY2Ugc3BhY2UgcHJvdmlkZXMgY29ycmVj
dCBwb3NlcyBmb3IgaW5saW5lIHNlc3Npb25zCitQQVNTIElkZW50aXR5IHJlZmVyZW5jZSBzcGFj
ZSBwcm92aWRlcyBjb3JyZWN0IHBvc2VzIGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40Y2RhYzJkZTEyYTEwYzY2OWJjYjU5ODNhYTMwMmRhNTliYjY5ZjllCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisK
K1BBU1MgWFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMKK1BBU1Mg
WFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBub24taW1tZXJzaXZlIHNlc3Npb25zCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJWaWV3X21hdGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMTNmNmJjOWU2NWVjNmYxMzQ2MTNiOWUyYjFmNDcxYmNhMzU5NDA1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitQQVNTIFhSRnJhbWUgY29udGFpbnMgdGhlIGV4cGVjdGVkIHZpZXdzCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJW
aWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0
dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTAyMjE1OGYwYjVkYWM3MzMxZmM2ZTU4N2Ew
MDkwZDNmNThiZDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSVmlldyBwcm9qZWN0aW9uIG1hdHJp
Y2VzIHVwZGF0ZSBuZWFyIGFuZCBmYXIgZGVwdGhzIG9uIHRoZSBuZXh0IGZyYW1lCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzMyZmNkMDNmYzUyMWY4
YzhkYWM5MTM3NTYxOTdjMWFjNjE3ZWNhNy4uZGRlOTgxZTYzN2VmNDQxOGNjZTU2MzU4ZDQ1YjAx
OTg3NWNhZTU4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTYzOCwyNiArNjM4LDM2IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvCiB3ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2Vf
cmVxdWVzdFNlc3Npb25fbm9fbW9kZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2Iv
MjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZpY2VfcmVx
dWVzdFNlc3Npb25fbm9uX2ltbWVyc2l2ZV9ub19nZXN0dXJlLmh0dHBzLmh0bWwgWyBQYXNzIF0K
IHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9vcHRpb25hbEZlYXR1cmVzLmh0dHBzLmh0bWwgWyBQ
YXNzIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkgd2Via2l0Lm9yZy9iLzIxNTYzNyBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFt
ZS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5pbWF0aW9u
RnJhbWVfaW52YWxpZGhhbmRsZS5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMjA5
ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2ZlYXR1
cmVzX2RldmljZVN1cHBvcnQuaHR0cHMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzIwOTg1
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVfY2FsbGJhY2tfY2FsbHMuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlv
bkZyYW1lX3RpbWVzdGFtcC5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMjA5ODU5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RS
ZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBzLmh0bWwg
WyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9n
ZXRQb3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmlld2VyX2F2
YWlsYWJpbGl0eS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5lc3MuaHR0
cHMud2luZG93Lmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNzaW9uU3Vw
cG9ydGVkX2ltbWVyc2l2ZS1hci5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLmh0
bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3
X29uZWZyYW1ldXBkYXRlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJfY29uc3Ry
dWN0b3IuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZlcl9zYW1l
T2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIvbmF2aWdhdG9yX3hyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25fc2FtZU9i
amVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy5odG1sIFsg
UGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNl
U3BhY2VfcmVsYXRpb25zaGlwcy5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fY29uc3RydWN0b3IuaHR0cHMu
aHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJp
Z2lkVHJhbnNmb3JtX2ludmVyc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX21hdHJpeC5odHRwcy5odG1s
IFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lv
bl9jYW5jZWxBbmltYXRpb25GcmFtZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZV9p
bnZhbGlkaGFuZGxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2VuZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19kZXZpY2VT
dXBwb3J0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VieHIveHJTZXNzaW9uX3ByZXZlbnRfbXVsdGlwbGVfZXhjbHVzaXZlLmh0dHBzLmh0bWwg
WyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsgUGFzcyBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJh
bWVfZ2V0Vmlld2VyUG9zZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfdGltZXN0
YW1wLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJf
cmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9yZW5kZXJfc3RhdGVfdmVydGljYWxfZm92X2ltbWVyc2l2ZS5odHRw
cy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3Jl
bmRlcl9zdGF0ZV91cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZW5kLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGh0
dHAvd3B0L3dlYnhyL3hyU2Vzc2lvbl9lbmRfZGV2aWNlX3JlcG9ydHNfc2h1dGRvd24uaHR0cHMu
aHRtbCBbIFBhc3MgXQogaHR0cC93cHQvd2VieHIveHJTZXNzaW9uX2VuZGVkX2J5X3N5c3RlbS5o
dHRwcy5odG1sIFsgUGFzcyBdCiBodHRwL3dwdC93ZWJ4ci94clNlc3Npb25fcmVqZWN0X211bHRp
cGxlX2VuZC5odHRwcy5odG1sIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420660</attachid>
            <date>2021-02-17 10:07:37 -0800</date>
            <delta_ts>2021-02-19 01:23:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221225-20210217190735.patch</filename>
            <type>text/plain</type>
            <size>95908</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjExYTJmM2RmMTMwN2Jj
Y2M2MzM4OTMyNTY3NmQxNzQ5YTgyYWY1MS4uYzU0ZGE5MmU5Y2E1NTkzNjdjZTMwNDVlZDVmYzFm
NjVhZDBiZDk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAyMS0wMi0xNSAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4gYW5kIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdl
dFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQxMTI5MTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBJbXBy
b3ZlIFBsYXRmb3JtWFI6OkZyYW1lRGF0YSBzdHJ1Y3QuCisgICAgICAgIC0gSW1wbGVtZW50IFdl
YlhSRnJhbWUgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0UG9zZS4KKyAgICAgICAgLSBJbXBsZW1lbnQg
V2ViWFJSZWZlcmVuY2VTcGFjZSBvZmZzZXQsIG9yaWdpbiBhbmQgZWZmZWN0aXZlIHRyYW5mb3Jt
cy4KKyAgICAgICAgLSBJbXBsZW1lbnQgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UgbmF0aXZl
T3JpZ2luLgorICAgICAgICAtIEFwcGx5IGZyYW1lIHVwZGF0ZXMgaW4gV2ViWFJTZXNzaW9uLgor
ICAgICAgICAtIEltcGxlbWVudCB2aWV3cyBmb3IgT3BlblhSIGFuZCBEdW1teUlubGluZURldmlj
ZSBpbmxpbmUgc2Vzc2lvbnMuCisgICAgICAgIC0gUXVlcnkgYW5kIGNvbXBsZXRlIGFsbCB0aGUg
bmV3IEZyYW1lRGF0YSBpbiB0aGUgT3BlblhSIHBvcnQuCisgICAgICAgIC0gQ29tcGxldGUgdGhl
IFdlYkZha2VYUkRldmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorCisg
ICAgICAgIFRlc3RlZCBieSB0aGUgV2ViWFIgV1BUIHRlc3RzCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVtZW50IG5hdGl2ZU9y
aWdpbmEgYW5kIGdldE9mZnNldFJlZmVyZW5jZVNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Ym91
bmRzR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSRnJhbWUuY3BwOiBJbXBsZW1lbnQgV2ViWFIgZ2V0Vmlld2VyUG9zZSBhbmQgZ2V0
UG9zZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkZyYW1lOjpXZWJYUkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
RnJhbWU6Om11c3RQb3Nlc0JlTGltaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1l
Ojpwb3B1bGF0ZVBvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Z2V0Vmlld2Vy
UG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpnZXRQb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlv
bi4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSRnJhbWU6OnNldEZyYW1lRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmlkbDogYWRkIE1heVRocm93RXhjZXB0aW9uLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuY3BwOiBBZGQgV2ViWFJSaWdpZFRyYW5zZm9ybSBjb25zdHJ1Y3Rv
ciBwYXJhbWV0ZXIuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJQb3NlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJQb3NlOjpXZWJY
UlBvc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlBvc2U6OmlzVmlld2VyUG9zZSBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuaWRsOiBSZW1vdmUgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQor
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcDogSW1wbGVt
ZW50IG9mZnNldCwgb3JpZ2luIGFuZCBlZmZlY3RpdmUgdHJhbmZvcm1zLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJlbmNlU3BhY2U6OmZsb29yT3JpZ2luVHJhbnNmb3Jt
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlJlZmVy
ZW5jZVNwYWNlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuaWRsOiBBZGQgU2tpcFZUYWJsZVZhbGlkYXRpb24uCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHA6IEFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9yIGZy
YW1lLiBBZGQgYWN0aXZlIHZpZXdzIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Np
b246OldlYlhSU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OnJlcXVl
c3RSZWZlcmVuY2VTcGFjZSk6IFVzZSBXZWFrUHRyIGluc3RlYWQgUmVmIGZvciBXZWJYUlNlc3Np
b24uCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246Om9uRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTZXNzaW9uOjpwb3Nlc0NhbkJlUmVwb3J0ZWQgY29uc3QpOiBhZGQKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlNwYWNlLmNwcDogQWRkIG5hdGl2ZU9yaWdpbiBhbmQgZWZmZWN0aXZlT3Jp
Z2luIG1lbWJlciBmdW5jdGlvbnMuIEFkZCBzcGVjaWFsaXplIHR5cGUgdHJhaXRzLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6V2ViWFJTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlNwYWNlOjplZmZlY3RpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJTcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6c2Vzc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNlOjppc1JlZmVyZW5jZVNwYWNlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzQm91bmRlZFJlZmVyZW5jZVNw
YWNlIGNvbnN0KToKKworICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwOiBJ
bXBsZW1lbnQgdmlld3MgZm9yIER1bW15SW5saW5lRGV2aWNlLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjp2aWV3cyBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oOgorCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUlZpZXcuY3BwOiBQYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm0gaW4gdGhlIGNv
bnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJWaWV3OjpXZWJYUlZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJWaWV3OjpzZXRQcm9qZWN0aW9uTWF0cml4KTogVXNlIHN0ZDo6YXJyYXkgdG8gbWF0Y2ggZGV2
aWNlIGRhdGEuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSVmlldzo6cHJvamVjdGlvbk1hdHJpeCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlZpZXc6OnRyYW5zZm9ybSBjb25zdCk6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSVmlld2VyUG9zZS5jcHA6IEFkZCB2aWV3cyBzZXR0ZXIuIEFkZCBzcGVjaWFs
aXplIHR5cGUgdHJhaXRzLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJWaWV3ZXJQb3NlOjpzZXRWaWV3cyk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSVmlld2VyUG9zZS5pZGw6IFJlbW92ZSBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LiBBZGQgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9YUkV5ZS5oOiBSZXVzZSBQbGF0Zm9ybVhSIGVudW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDogQWRkIHByb2plY3Rp
b24gbWF0cml4IHV0aWxpdHkgZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9QbGF0Zm9ybVhSLmg6IEltcHJvdmUgRnJhbWVEYXRhLgorCisgICAgICAgICogcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwOiBRdWVyeSBhbmQgY29tcGxldGUgYWxs
IHRoZSBuZXcgRnJhbWVEYXRhLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpj
cmVhdGVSZWZlcmVuY2VTcGFjZSk6IGFkZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChQbGF0
Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbik6IFF1ZXJ5IHJlc29s
dXRpb24gZGF0YSBmcm9tIE9wZW5YUi4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmlj
ZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKTogSW5pdGlhbGl6ZSBsb2NhbCBhbmQg
dmlldyBYclNwYWNlcy4KKyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6aW5pdGlh
bGl6ZVJlZmVyZW5jZVNwYWNlKTogTGF6aWx5IGluaXRpYWxpemUgc3RhZ2UgWHJTcGFjZS4KKyAg
ICAgICAgKFBsYXRmb3JtWFI6OlhyUG9zZWZUb1Bvc2UpOiBhZGQgaGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoUGxhdGZvcm1YUjo6eHJWaWV3VG9Qb3NlKTogYWRkIGhlbHBlciBmdW5jdGlvbi4K
KyAgICAgICAgKFBsYXRmb3JtWFI6Ok9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKTogQ29tcGxl
dGUgYWxsIHRoZSBuZXcgZnJhbWUgRGF0YQorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2
aWNlOjp2aWV3cyBjb25zdCk6IEltcGxlbWVudCB2aWV3IGRhdGEgZm9yIE9wZW5YUgorICAgICAg
ICAqIHBsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmg6CisKKyAgICAgICAgKiB0
ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHA6IENvbXBsZXRlIHRoZSByZXF1aXJlZCBpbXBsZW1l
bnRhdGlvbiBmb3IgV2ViWFIgV1BUIHRlc3RzLgorICAgICAgICAoV2ViQ29yZTo6RmFrZVhSVmll
dzo6c2V0UHJvamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGYWtlWFJWaWV3OjpzZXRGaWVs
ZE9mVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6ZnJhbWVUaW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpyZXF1ZXN0RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Vmlld3MpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhclZpZXdlck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21ldHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Rmxvb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViRmFrZVhSRGV2aWNlOjpjbGVhckZsb29yT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmlldyk6CisgICAgICAgICogdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaDoKKwogMjAyMS0wMi0xNyAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIEltcHJvdmUgcGVyY2VudGFnZSBoZWlnaHQgaW4gc2hvdWxkQ29tcHV0ZUxvZ2lj
YWxXaWR0aEZyb21Bc3BlY3RSYXRpbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAppbmRleCBkNDRlZDYy
YmRjZDU2ZmJlODI3OTQwMWUzMDYwMzg4ZDczZjQ5MWZkLi42ZTc1MGY3MjRmMTU5YmQ2OGFhMGQ5
MzI1MjM2OWJmNjFiMjAwODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcApAQCAtMjksNiArMjks
OSBAQAogI2lmIEVOQUJMRShXRUJYUikKIAogI2luY2x1ZGUgIkRPTVBvaW50UmVhZE9ubHkuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIK
KyNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywyMSArNDAsNTAgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKTsKIAogUmVmPFdl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJl
ZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCB0eXBlKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoZG9j
dW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpLCB0
eXBlKSk7CiB9CiAKLVdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpXZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lv
biwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKLSAgICA6IFdlYlhSUmVmZXJlbmNlU3BhY2Uo
ZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHR5cGUpCisKK1JlZjxXZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFu
c2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZN
b3ZlKHNlc3Npb24pLCBXVEZNb3ZlKG9mZnNldCksIHR5cGUpKTsKK30KKworCitXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZTo6V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKKyAgICA6IFdlYlhSUmVm
ZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUob2Zmc2V0KSwg
dHlwZSkKIHsKIH0KIAogV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6On5XZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZSgpID0gZGVmYXVsdDsKIAorVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0Cit7CisgICAgLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhycmVmZXJlbmNlc3BhY2V0
eXBlLWJvdW5kZWQtZmxvb3IuCisgICAgLy8gQm91bmRlZCBmbG9vciBzcGFjZSBzaG91bGQgYmUg
YXQgdGhlIHNhbWUgaGVpZ2h0IGFzIGxvY2FsIGZsb29yIHNwYWNlLgorICAgIHJldHVybiBmbG9v
ck9yaWdpblRyYW5zZm9ybSgpOworfQorCiBjb25zdCBWZWN0b3I8UmVmPERPTVBvaW50UmVhZE9u
bHk+PiYgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OmJvdW5kc0dlb21ldHJ5KCkgY29uc3QK
IHsKKyAgICAvLyBGSVhNRTogZ2V0IGRhdGEgZnJvbSBkZXZpY2UKICAgICByZXR1cm4gbV9ib3Vu
ZHNHZW9tZXRyeTsKIH0KIAorUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRl
ZFJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lk
VHJhbnNmb3JtJiBvZmZzZXRUcmFuc2Zvcm0pCit7CisgICAgYXV0byogZG9jdW1lbnQgPSBkb3du
Y2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoIWRvY3Vt
ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnJlZmVyZW5jZXNwYWNlLWdldG9mZnNldHJlZmVy
ZW5jZXNwYWNlCisgICAgLy8gU2V0IG9mZnNldFNwYWNl4oCZcyBvcmlnaW4gb2Zmc2V0IHRvIHRo
ZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgYmFzZeKAmXMgb3JpZ2luIG9mZnNldCBieSBvcmlnaW5P
ZmZzZXQgaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIGJhc2UuCisgICAgYXV0byBvZmZzZXQgPSBX
ZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUobV9vcmlnaW5PZmZzZXQtPnJhd1RyYW5zZm9ybSgp
ICogb2Zmc2V0VHJhbnNmb3JtLnJhd1RyYW5zZm9ybSgpKTsKKworICAgIC8vIEZJWE1FOiBzZXQg
b2Zmc2V0U3BhY2XigJlzIGJvdW5kc0dlb21ldHJ5IHRvIGJhc2XigJlzIGJvdW5kc0dlb21ldHJ5
LCB3aXRoIGVhY2ggcG9pbnQgbXVsdGlwbGllZCBieSB0aGUgaW52ZXJzZSBvZiBvcmlnaW5PZmZz
ZXQuCisgICAgcmV0dXJuIGNyZWF0ZSgqZG9jdW1lbnQsIG1fc2Vzc2lvbi5jb3B5UmVmKCksIFdU
Rk1vdmUob2Zmc2V0KSwgbV90eXBlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCmluZGV4IDcxYTlmOTcwYTcz
MDFiZDRmMDRlNGMwYmJlZTgxZWFlZWEzZjQ0ZDcuLjcxNDg1MjAxYjdkN2E5NTA2YjlkZmIzZjlh
ZGU0NzRhNWJiMTk1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKQEAgLTI1LDMyICsyNSwzOSBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2lmIEVOQUJMRShXRUJYUikKKwogI2luY2x1ZGUgIldlYlhSUmVm
ZXJlbmNlU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2lmIEVOQUJMRShXRUJYUikKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01Qb2ludFJlYWRPbmx5OwogCi1jbGFzcyBX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSA6IHB1YmxpYyBXZWJYUlJlZmVyZW5jZVNwYWNlIHsK
K2NsYXNzIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlIGZpbmFsOiBwdWJsaWMgV2ViWFJSZWZl
cmVuY2VTcGFjZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgWFJSZWZlcmVu
Y2VTcGFjZVR5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+
IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFJlZjxXZWJYUlJpZ2lkVHJh
bnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICB2aXJ0dWFsIH5XZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZSgpOwogCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZl
T3JpZ2luKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVmVjdG9yPFJlZjxET01Qb2ludFJlYWRP
bmx5Pj4mIGJvdW5kc0dlb21ldHJ5KCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNl
U3BhY2U+IGdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0m
KSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1
bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAgICBX
ZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYs
IFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisKKyAg
ICBib29sIGlzQm91bmRlZFJlZmVyZW5jZVNwYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgVmVjdG9yPFJlZjxET01Qb2ludFJlYWRPbmx5Pj4gbV9ib3VuZHNHZW9tZXRy
eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XRUJYUlNQQUNFKFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLCBpc0JvdW5kZWRSZWZlcmVu
Y2VTcGFjZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKaW5kZXggZjI3ODc2MWIwYTdiN2QyOWQxNzk0MjIz
NTBhMmFhMTk4YTIzYmRlYy4uZTA1ZTYxM2JlYzhkZmEyMDZiZjA1ZDEwYWE5Mzc3MjIxN2ZiMTli
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCkBAIC0y
OCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJXZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5oIgorI2luY2x1ZGUgIldlYlhSUmVmZXJlbmNlU3BhY2UuaCIKICNp
bmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJYUlZpZXdlclBvc2UuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzYsMjcgKzM4LDIwNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUkZyYW1l
KTsKIAotUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6OmNyZWF0ZShSZWY8V2ViWFJTZXNzaW9u
PiYmIHNlc3Npb24pCitSZWY8V2ViWFJGcmFtZT4gV2ViWFJGcmFtZTo6Y3JlYXRlKFJlZjxXZWJY
UlNlc3Npb24+JiYgc2Vzc2lvbiwgSXNBbmltYXRpb25GcmFtZSBpc0FuaW1hdGlvbkZyYW1lKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUoV1RGTW92ZShzZXNzaW9uKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSRnJhbWUoV1RGTW92ZShzZXNzaW9uKSwg
aXNBbmltYXRpb25GcmFtZSkpOwogfQogCi1XZWJYUkZyYW1lOjpXZWJYUkZyYW1lKFJlZjxXZWJY
UlNlc3Npb24+JiYgc2Vzc2lvbikKLSAgICA6IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQor
V2ViWFJGcmFtZTo6V2ViWFJGcmFtZShSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIElzQW5p
bWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKKyAgICA6IG1faXNBbmltYXRpb25GcmFtZShp
c0FuaW1hdGlvbkZyYW1lID09IElzQW5pbWF0aW9uRnJhbWU6OlllcykKKyAgICAsIG1fc2Vzc2lv
bihXVEZNb3ZlKHNlc3Npb24pKQogewogfQogCiBXZWJYUkZyYW1lOjp+V2ViWFJGcmFtZSgpID0g
ZGVmYXVsdDsKIAorYm9vbCBXZWJYUkZyYW1lOjppc091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJTcGFj
ZSYpIGNvbnN0Cit7CisgICAgaWYgKCFpczxXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZT4oc3Bh
Y2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogcmV0dXJuIHRydWUg
d2hlbmV2ZXIgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGJvdW5kZWQgZ2VvbWV0cnkgb2YKKyAgICAv
LyB8c3BhY2V8IHRvIHRoZSBuYXRpdmUgb3JpZ2luIG9mIHxvdGhlcnwgc3BhY2UgaXMgZ3JlYXRl
ciB0aGFuIDFtCisgICAgLy8gKHN1Z2dlc3RlZCBieSBzcGVjcykuCisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgV2ViWFJGcmFtZTo6aXNMb2NhbFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdl
YlhSU3BhY2UmIHNwYWNlKSBjb25zdAoreworICAgIGlmICghaXM8V2ViWFJSZWZlcmVuY2VTcGFj
ZT4oc3BhY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHR5cGUgPSBkb3du
Y2FzdDxXZWJYUlJlZmVyZW5jZVNwYWNlPihzcGFjZSkudHlwZSgpOworICAgIGlmICh0eXBlID09
IFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbCB8fCB0eXBlID09IFhSUmVmZXJlbmNlU3BhY2VU
eXBlOjpMb2NhbEZsb29yKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcG9zZXMt
bXVzdC1iZS1saW1pdGVkCitib29sIFdlYlhSRnJhbWU6Om11c3RQb3Nlc0JlTGltaXRlZChjb25z
dCBXZWJYUlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlKSBjb25zdAor
eworICAgIGlmIChpc091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5kZWRSZWZlcmVuY2VTcGFjZShz
cGFjZSwgYmFzZVNwYWNlKQorICAgICAgICB8fCBpc091dHNpZGVOYXRpdmVCb3VuZHNPZkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZShiYXNlU3BhY2UsIHNwYWNlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKLVJlZlB0cjxXZWJYUlZpZXdlclBvc2U+IFdlYlhSRnJhbWU6OmdldFZpZXdlclBvc2UoY29u
c3QgV2ViWFJSZWZlcmVuY2VTcGFjZSYpCisgICAgaWYgKGlzTG9jYWxSZWZlcmVuY2VTcGFjZShz
cGFjZSkgfHwgaXNMb2NhbFJlZmVyZW5jZVNwYWNlKGJhc2VTcGFjZSkpIHsKKyAgICAgICAgLy8g
RklYTUU6IElmIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5hdGl2ZSBvcmlnaW5zIG9mIHNwYWNlcyBp
cyBncmVhdGVyCisgICAgICAgIC8vIHRoYW4gMTVtIChzdWdnZXN0ZWQgYnkgc3BlY3MpIHJldHVy
biB0cnVlLgorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RydWN0IFdlYlhSRnJh
bWU6OlBvcHVsYXRlZFBvc2UgeworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsK
KyAgICBib29sIGVtdWxhdGVkUG9zaXRpb24geyBmYWxzZSB9OworfTsKKworLy8gaHR0cHM6Ly9p
bW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jcG9wdWxhdGUtdGhlLXBvc2UKK0V4Y2VwdGlv
bk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpwb3B1
bGF0ZVBvc2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJYUlNwYWNlJiBzcGFj
ZSwgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlKQogewotICAgIHJldHVybiB7IH07CisgICAg
Ly8gMS4gSWYgZnJhbWXigJlzIGFjdGl2ZSBib29sZWFuIGlzIGZhbHNlLCB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCFtX2FjdGl2ZSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAv
LyAyLiBMZXQgc2Vzc2lvbiBiZSBmcmFtZeKAmXMgc2Vzc2lvbiBvYmplY3QuCisgICAgLy8gMy4g
SWYgc3BhY2XigJlzIHNlc3Npb24gZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICgmc3BhY2Uuc2Vz
c2lvbigpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyA0LiBJZiBiYXNlU3BhY2XigJlzIHNlc3Npb24g
ZG9lcyBub3QgZXF1YWwgc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICgmYmFzZVNwYWNlLnNlc3Npb24oKSAhPSBtX3Nlc3Np
b24ucHRyKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OworCisgICAgLy8gNS4gQ2hlY2sgaWYgcG9zZXMgbWF5IGJlIHJlcG9ydGVkIGFuZCwgaWYgbm90
LCB0aHJvdyBhIFNlY3VyaXR5RXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICgh
bV9zZXNzaW9uLT5wb3Nlc0NhbkJlUmVwb3J0ZWQoZG9jdW1lbnQpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9OworCisgICAgLy8gNi4gTGV0IGxpbWl0IGJlIHRo
ZSByZXN1bHQgb2Ygd2hldGhlciBwb3NlcyBtdXN0IGJlIGxpbWl0ZWQgYmV0d2VlbiBzcGFjZSBh
bmQgYmFzZVNwYWNlLgorICAgIC8vIDcuIExldCB0cmFuc2Zvcm0gYmUgcG9zZeKAmXMgdHJhbnNm
b3JtLgorICAgIC8vIDguIFF1ZXJ5IHRoZSBYUiBkZXZpY2UncyB0cmFja2luZyBzeXN0ZW0gZm9y
IHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZlIHRvIGJhc2VTcGFjZSBhdCB0aGUgZnJhbWXigJlzIHRp
bWUuCisKKyAgICBpZiAoIW1fZGF0YS5pc1RyYWNraW5nVmFsaWQpIHsKKyAgICAgICAgLy8gRklY
TUU6IGNoZWNrIGlmIHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZlIHRvIGJhc2VTcGFjZSBoYXMgYmVl
biBkZXRlcm1pbmVkIGluIHRoZSBwYXN0LgorICAgICAgICAvLyBBbnl3YXkgdGhpcyBlbXVsYXRp
b24gaXMgdXN1YWxseSBwcm92aWRlZCBieSB0aGUgc3lzdGVtIGluIHRoZSBwb3NlIChlLmcuIE9w
ZW5YUikKKyAgICAgICAgLy8gc28gd2Ugc2hvdWxkbid0IGhpdCB0aGlzIHBhdGggaW4gbW9zdCBY
UlBsYXRmb3JtIHBvcnRzLgorICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKyAgICB9
CisKKyAgICBhdXRvIGJhc2VUcmFuc2Zvcm0gPSBiYXNlU3BhY2UuZWZmZWN0aXZlT3JpZ2luKCk7
CisgICAgaWYgKCFiYXNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICByZXR1cm4g
eyBXVEY6Om51bGxvcHQgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gICpiYXNlVHJhbnNmb3Jt
LmludmVyc2UoKSAqIHNwYWNlLmVmZmVjdGl2ZU9yaWdpbigpOworICAgIGNvbnN0IGJvb2wgZW11
bGF0ZWRQb3NpdGlvbiA9IG1fZGF0YS5pc1Bvc2l0aW9uRW11bGF0ZWQgfHwgIW1fZGF0YS5pc1Bv
c2l0aW9uVmFsaWQ7CisKKyAgICBib29sIGxpbWl0ID0gbXVzdFBvc2VzQmVMaW1pdGVkKHNwYWNl
LCBiYXNlU3BhY2UpOworICAgIGlmIChsaW1pdCkgeworICAgICAgICAvLyBGSVhNRTogYXBwbHkg
cG9zZSBsaW1pdHMgbG9naWMKKyAgICAgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1
Yi5pby93ZWJ4ci8jcG9zZXMtbXVzdC1iZS1saW1pdGVkCisgICAgfQorCisgICAgcmV0dXJuIHsg
UG9wdWxhdGVkUG9zZSB7IHRyYW5zZm9ybSwgZW11bGF0ZWRQb3NpdGlvbiB9IH07Cit9CisKKy8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cmZyYW1lLWdldHZp
ZXdlcnBvc2UKK0V4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+PiBXZWJYUkZyYW1l
OjpnZXRWaWV3ZXJQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgV2ViWFJSZWZl
cmVuY2VTcGFjZSYgcmVmZXJlbmNlU3BhY2UpCit7CisgICAgLy8gMS4gTGV0IGZyYW1lIGJlIHRo
aXMuCisgICAgLy8gMi4gTGV0IHNlc3Npb24gYmUgZnJhbWXigJlzIHNlc3Npb24gb2JqZWN0Lgor
ICAgIC8vIDMuIElmIGZyYW1l4oCZcyBhbmltYXRpb25GcmFtZSBib29sZWFuIGlzIGZhbHNlLCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYg
KCFtX2lzQW5pbWF0aW9uRnJhbWUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciB9OworCisgICAgLy8gNC4gTGV0IHBvc2UgYmUgYSBuZXcgWFJWaWV3ZXJQb3Nl
IG9iamVjdCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Ygc2Vzc2lvbi4KKyAgICAvLyA1LiBQb3B1
bGF0ZSB0aGUgcG9zZSBvZiBzZXNzaW9u4oCZcyB2aWV3ZXIgcmVmZXJlbmNlIHNwYWNlIGluIHJl
ZmVyZW5jZVNwYWNlIGF0IHRoZSB0aW1lIHJlcHJlc2VudGVkIGJ5IGZyYW1lIGludG8gcG9zZS4K
KyAgICBhdXRvIHBvcHVsYXRlUG9zZVJlc3VsdCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgbV9z
ZXNzaW9uLT52aWV3ZXJSZWZlcmVuY2VTcGFjZSgpLCByZWZlcmVuY2VTcGFjZSk7CisgICAgaWYg
KHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHBvcHVs
YXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAvLyA2LiBJZiBwb3NlIGlz
IG51bGwgcmV0dXJuIG51bGwuCisgICAgYXV0byBwb3B1bGF0ZVZhbHVlID0gcG9wdWxhdGVQb3Nl
UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmICghcG9wdWxhdGVWYWx1ZS5oYXNW
YWx1ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlZlB0cjxXZWJYUlZpZXdl
clBvc2U+IHBvc2UgPSBXZWJYUlZpZXdlclBvc2U6OmNyZWF0ZShXZWJYUlJpZ2lkVHJhbnNmb3Jt
OjpjcmVhdGUocG9wdWxhdGVWYWx1ZS0+dHJhbnNmb3JtKSwgcG9wdWxhdGVWYWx1ZS0+ZW11bGF0
ZWRQb3NpdGlvbik7CisKKyAgICAvLyA3LiBMZXQgeHJ2aWV3cyBiZSBhbiBlbXB0eSBsaXN0Lgor
ICAgIFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4geHJWaWV3czsKKyAgICAvLyA4LiBGb3IgZWFjaCBh
Y3RpdmUgdmlldyB2aWV3IGluIHRoZSBsaXN0IG9mIHZpZXdzIG9uIHNlc3Npb24sIHBlcmZvcm0g
dGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICBmb3IgKGF1dG8mIHZpZXcgOiBtX3Nlc3Npb24tPnZp
ZXdzKCkpIHsKKyAgICAgICAgYXV0byBpbmRleCA9IHhyVmlld3Muc2l6ZSgpOworICAgICAgICBp
ZiAoIXZpZXcuYWN0aXZlIHx8IG1fZGF0YS52aWV3cy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAvLyA4LjEgTGV0IHhydmlldyBiZSBhIG5ldyBYUlZp
ZXcgb2JqZWN0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBzZXNzaW9uLgorICAgICAgICAvLyA4
LjIgSW5pdGlhbGl6ZSB4cnZpZXfigJlzIHVuZGVybHlpbmcgdmlldyB0byB2aWV3LgorICAgICAg
ICAvLyA4LjMgSW5pdGlhbGl6ZSB4cnZpZXfigJlzIGV5ZSB0byB2aWV34oCZcyBleWUuCisgICAg
ICAgIC8vIDguNCBJbml0aWFsaXplIHhydmlld+KAmXMgZnJhbWUgdGltZSB0byBmcmFtZeKAmXMg
dGltZS4KKyAgICAgICAgLy8gOC41IEluaXRpYWxpemUgeHJ2aWV34oCZcyBzZXNzaW9uIHRvIHNl
c3Npb24uCisgICAgICAgIC8vIDguNi4gTGV0IG9mZnNldCBiZSBhbiBuZXcgWFJSaWdpZFRyYW5z
Zm9ybSBvYmplY3QgZXF1YWwgdG8gdGhlIHZpZXcgb2Zmc2V0IG9mIHZpZXcgaW4gdGhlIHJlbGV2
YW50IHJlYWxtIG9mIHNlc3Npb24uCisgICAgICAgIC8vIDguNy4gU2V0IHhydmlld+KAmXMgdHJh
bnNmb3JtIHByb3BlcnR5IHRvIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgdGhlIFhSVmlld2Vy
UG9zZSdzIHRyYW5zZm9ybSBieSB0aGUgb2Zmc2V0IHRyYW5zZm9ybSBpbiB0aGUgcmVsZXZhbnQg
cmVhbG0gb2Ygc2Vzc2lvbgorICAgICAgICBhdXRvIG9mZnNldCA9IG1hdHJpeEZyb21Qb3NlKG1f
ZGF0YS52aWV3c1tpbmRleF0ub2Zmc2V0KTsKKyAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSBXZWJY
UlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUocG9zZS0+dHJhbnNmb3JtKCkucmF3VHJhbnNmb3JtKCkg
KiBvZmZzZXQpOworCisgICAgICAgIC8vIFNldCBwcm9qZWN0aW9uIG1hdHJpeCBmb3IgZWFjaCB2
aWV3CisgICAgICAgIHN0ZDo6YXJyYXk8ZmxvYXQsIDE2PiBwcm9qZWN0aW9uID0gc3dpdGNoT24o
bV9kYXRhLnZpZXdzW2luZGV4XS5wcm9qZWN0aW9uLCBbJl0oY29uc3QgUGxhdGZvcm1YUjo6RGV2
aWNlOjpGcmFtZURhdGE6OkZvdiYgZm92KSB7CisgICAgICAgICAgICBkb3VibGUgbmVhciA9IG1f
c2Vzc2lvbi0+cmVuZGVyU3RhdGUoKS5kZXB0aE5lYXIoKTsKKyAgICAgICAgICAgIGRvdWJsZSBm
YXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuZGVwdGhGYXIoKTsKKyAgICAgICAgICAgIHJl
dHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVByb2plY3Rpb24oZm92LnVwLCBmb3YuZG93
biwgZm92LmxlZnQsIGZvdi5yaWdodCwgbmVhciwgZmFyKS50b0NvbHVtbk1ham9yRmxvYXRBcnJh
eSgpOworICAgICAgICB9LCBbJl0oY29uc3Qgc3RkOjphcnJheTxmbG9hdCwgMTY+JiBtYXRyaXgp
IHsKKyAgICAgICAgICAgIHJldHVybiBtYXRyaXg7CisgICAgICAgIH0sIFsmXShzdGQ6Om51bGxw
dHJfdCYpIHsKKyAgICAgICAgICAgIC8vIFVzZSBhc3BlY3QgcHJvamVjdGlvbiBmb3IgaW5saW5l
IHNlc3Npb25zCisgICAgICAgICAgICBkb3VibGUgZm92ID0gIG1fc2Vzc2lvbi0+cmVuZGVyU3Rh
dGUoKS5pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkudmFsdWVPcihwaU92ZXJUd29Eb3VibGUp
OworICAgICAgICAgICAgZmxvYXQgYXNwZWN0ID0gMTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIg
PSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuYmFzZUxheWVyKCk7CisgICAgICAgICAgICBpZiAo
bGF5ZXIpCisgICAgICAgICAgICAgICAgYXNwZWN0ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXll
ci0+ZnJhbWVidWZmZXJXaWR0aCgpKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4obGF5ZXItPmZyYW1l
YnVmZmVySGVpZ2h0KCkpOworICAgICAgICAgICAgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24tPnJl
bmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7CisgICAgICAgICAgICBkb3VibGUgZmFyID0gbV9zZXNz
aW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRoRmFyKCk7CisgICAgICAgICAgICByZXR1cm4gVHJhbnNm
b3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGZvdiwgYXNwZWN0LCBuZWFyLCBmYXIpLnRv
Q29sdW1uTWFqb3JGbG9hdEFycmF5KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8geHJW
aWV3ID0gV2ViWFJWaWV3OjpjcmVhdGUodmlldy5leWUsIFdURk1vdmUodHJhbnNmb3JtKSwgRmxv
YXQzMkFycmF5OjpjcmVhdGUocHJvamVjdGlvbi5kYXRhKCksIHByb2plY3Rpb24uc2l6ZSgpKSk7
CisKKyAgICAgICAgLy8gIDguOC4gQXBwZW5kIHhydmlldyB0byB4cnZpZXdzCisgICAgICAgIHhy
Vmlld3MuYXBwZW5kKFdURk1vdmUoeHJWaWV3KSk7CisgICAgfQorCisgICAgLy8gOS4gU2V0IHBv
c2XigJlzIHZpZXdzIHRvIHhydmlld3MKKyAgICBwb3NlLT5zZXRWaWV3cyhXVEZNb3ZlKHhyVmll
d3MpKTsKKworICAgIC8vIDEwLiBSZXR1cm4gcG9zZS4KKyAgICByZXR1cm4gcG9zZTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSUG9zZT4+IFdlYlhSRnJhbWU6OmdldFBvc2UoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBXZWJYUlNwYWNlJiBzcGFjZSwgY29uc3QgV2ViWFJT
cGFjZSYgYmFzZVNwYWNlKQoreworICAgIC8vIDEuIExldCBmcmFtZSBiZSB0aGlzLgorICAgIC8v
IDIuIExldCBwb3NlIGJlIGEgbmV3IFhSUG9zZSBvYmplY3QgaW4gdGhlIHJlbGV2YW50IHJlYWxt
IG9mIGZyYW1lLgorICAgIC8vIDMuIFBvcHVsYXRlIHRoZSBwb3NlIG9mIHNwYWNlIGluIGJhc2VT
cGFjZSBhdCB0aGUgdGltZSByZXByZXNlbnRlZCBieSBmcmFtZSBpbnRvIHBvc2UuCisKKyAgICBh
dXRvIHBvcHVsYXRlUG9zZVJlc3VsdCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgc3BhY2UsIGJh
c2VTcGFjZSk7CisgICAgaWYgKHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAg
ICBhdXRvIHBvcHVsYXRlVmFsdWUgPSBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCk7CisgICAgaWYgKCFwb3B1bGF0ZVZhbHVlLmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgLy8gNC4gUmV0dXJuIHBvc2UuCisgICAgcmV0dXJuIFJlZlB0cjxX
ZWJYUlBvc2U+KFdlYlhSUG9zZTo6Y3JlYXRlKFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShw
b3B1bGF0ZVZhbHVlLT50cmFuc2Zvcm0pLCBwb3B1bGF0ZVZhbHVlLT5lbXVsYXRlZFBvc2l0aW9u
KSk7CiB9CiAKLVJlZlB0cjxXZWJYUlBvc2U+IFdlYlhSRnJhbWU6OmdldFBvc2UoY29uc3QgV2Vi
WFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKQorVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJG
cmFtZTo6bWF0cml4RnJvbVBvc2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OlBvc2UmIHBvc2UpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtYXRyaXg7CisgICAgbWF0cml4LnRyYW5zbGF0ZTNkKHBvc2UucG9zaXRpb24ueCgpLCBwb3Nl
LnBvc2l0aW9uLnkoKSwgcG9zZS5wb3NpdGlvbi56KCkpOworICAgIG1hdHJpeC5tdWx0aXBseShU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVF1YXRlcm5pb24ocG9zZS5vcmllbnRhdGlvbi54LCBw
b3NlLm9yaWVudGF0aW9uLnksIHBvc2Uub3JpZW50YXRpb24ueiwgcG9zZS5vcmllbnRhdGlvbi53
KSk7CisgICAgcmV0dXJuIG1hdHJpeDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAppbmRleCAyYTI2YWQ4NmEyYzMw
ZGE4YzIzZGZiNmM3YmJiOTAzODJkMTJlMDVkLi5kM2I5Njc2NTVhY2JiMmZlMzg4NmRjN2I1ZmUy
MmE4MTE2NTc4ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
aApAQCAtMjgsNiArMjgsOCBAQAogI2lmIEVOQUJMRShXRUJYUikKIAogI2luY2x1ZGUgIkRPTUhp
Z2hSZXNUaW1lU3RhbXAuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtWFIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNSw2ICszNyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBXZWJYUlBvc2U7CiBj
bGFzcyBXZWJYUlJlZmVyZW5jZVNwYWNlOwogY2xhc3MgV2ViWFJTZXNzaW9uOwpAQCAtNDQsMjMg
KzQ3LDM3IEBAIGNsYXNzIFdlYlhSVmlld2VyUG9zZTsKIGNsYXNzIFdlYlhSRnJhbWUgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJYUkZyYW1lPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChX
ZWJYUkZyYW1lKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShS
ZWY8V2ViWFJTZXNzaW9uPiYmKTsKKyAgICBlbnVtIGNsYXNzIElzQW5pbWF0aW9uRnJhbWUgOiBi
b29sIHsgTm8sIFllcyB9OworICAgIHN0YXRpYyBSZWY8V2ViWFJGcmFtZT4gY3JlYXRlKFJlZjxX
ZWJYUlNlc3Npb24+JiYsIElzQW5pbWF0aW9uRnJhbWUpOwogICAgIH5XZWJYUkZyYW1lKCk7CiAK
ICAgICBjb25zdCBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Np
b24uZ2V0KCk7IH0KIAotICAgIFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+IGdldFZpZXdlclBvc2Uo
Y29uc3QgV2ViWFJSZWZlcmVuY2VTcGFjZSYpOwotICAgIFJlZlB0cjxXZWJYUlBvc2U+IGdldFBv
c2UoY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKKyAgICBFeGNlcHRpb25P
cjxSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPj4gZ2V0Vmlld2VyUG9zZShjb25zdCBEb2N1bWVudCYs
IGNvbnN0IFdlYlhSUmVmZXJlbmNlU3BhY2UmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2Vi
WFJQb3NlPj4gZ2V0UG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFdlYlhSU3BhY2UmLCBjb25z
dCBXZWJYUlNwYWNlJik7CiAKICAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJlc1RpbWVTdGFtcCB0
aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KKyAgICB2b2lkIHNldEZyYW1lRGF0YShQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YSYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQor
CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBhY3RpdmUpIHsgbV9hY3RpdmUgPSBhY3RpdmU7IH0K
ICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KIAorICAgIHN0
YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXhGcm9tUG9zZShjb25zdCBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZSYpOworCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdl
YlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAgV2ViWFJGcmFtZShSZWY8V2ViWFJT
ZXNzaW9uPiYmLCBJc0FuaW1hdGlvbkZyYW1lKTsKKworICAgIGJvb2wgaXNPdXRzaWRlTmF0aXZl
Qm91bmRzT2ZCb3VuZGVkUmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdl
YlhSU3BhY2UmKSBjb25zdDsKKyAgICBib29sIGlzTG9jYWxSZWZlcmVuY2VTcGFjZShjb25zdCBX
ZWJYUlNwYWNlJikgY29uc3Q7CisgICAgYm9vbCBtdXN0UG9zZXNCZUxpbWl0ZWQoY29uc3QgV2Vi
WFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKSBjb25zdDsKKworICAgIHN0cnVjdCBQb3B1bGF0
ZWRQb3NlOworICAgIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFBvcHVsYXRlZFBvc2U+PiBwb3B1bGF0
ZVBvc2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFj
ZSYpOwogCiAgICAgYm9vbCBtX2FjdGl2ZSB7IGZhbHNlIH07Ci0gICAgRE9NSGlnaFJlc1RpbWVT
dGFtcCBtX3RpbWU7CisgICAgYm9vbCBtX2lzQW5pbWF0aW9uRnJhbWUgeyBmYWxzZSB9OworICAg
IERPTUhpZ2hSZXNUaW1lU3RhbXAgbV90aW1lIHsgMCB9OworICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhIG1fZGF0YTsKICAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbAppbmRleCAy
MWZjZjNjZmU0ZDljNzVmZDdmNDY4ZTQ5N2RiOGU4MDA3YjhhZGYyLi5kMzQwMjY1YjIyZDg4OTIz
ZWUyZGMyNWE3N2RkYjgzNzlkYTU0MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSRnJhbWUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJGcmFtZS5pZGwKQEAgLTMzLDYgKzMzLDYgQEAKIF0gaW50ZXJmYWNlIFdlYlhSRnJh
bWUgewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgV2ViWFJTZXNzaW9uIHNl
c3Npb247CiAKLSAgICBXZWJYUlZpZXdlclBvc2U/IGdldFZpZXdlclBvc2UoV2ViWFJSZWZlcmVu
Y2VTcGFjZSByZWZlcmVuY2VTcGFjZSk7Ci0gICAgV2ViWFJQb3NlPyBnZXRQb3NlKFdlYlhSU3Bh
Y2Ugc3BhY2UsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb24s
IENhbGxXaXRoPURvY3VtZW50XSBXZWJYUlZpZXdlclBvc2U/IGdldFZpZXdlclBvc2UoV2ViWFJS
ZWZlcmVuY2VTcGFjZSByZWZlcmVuY2VTcGFjZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBD
YWxsV2l0aD1Eb2N1bWVudF0gV2ViWFJQb3NlPyBnZXRQb3NlKFdlYlhSU3BhY2Ugc3BhY2UsIFdl
YlhSU3BhY2UgYmFzZVNwYWNlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSUG9zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSUG9zZS5jcHAKaW5kZXggMWM1ZjgwYTU0NDU1Y2JlOGZjYjA3MmQ1NDdiMzE5NmE5ODg3ODY1
OC4uMzM5OWQ4YWU1MDAzZTJhZTQzYzAxZTQ2YmQwMzNiMDkxM2IyODY1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSUG9z
ZSk7CiAKLVJlZjxXZWJYUlBvc2U+IFdlYlhSUG9zZTo6Y3JlYXRlKCkKK1JlZjxXZWJYUlBvc2U+
IFdlYlhSUG9zZTo6Y3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwg
Ym9vbCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhS
UG9zZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJQb3NlKFdURk1vdmUodHJhbnNm
b3JtKSwgZW11bGF0ZWRQb3NpdGlvbikpOwogfQogCi1XZWJYUlBvc2U6OldlYlhSUG9zZSgpCi0g
ICAgOiBtX3RyYW5zZm9ybShXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKK1dlYlhSUG9z
ZTo6V2ViWFJQb3NlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBl
bXVsYXRlZFBvc2l0aW9uKQorICAgIDogbV90cmFuc2Zvcm0oV1RGTW92ZSh0cmFuc2Zvcm0pKSwg
bV9lbXVsYXRlZFBvc2l0aW9uKGVtdWxhdGVkUG9zaXRpb24pCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oCmluZGV4IDI5OTE5ZDI0YzM5NTNhYTM5YTJjNDg5
NGJjN2NjZTVjMjljMTdlNmEuLmVjNTc5MDY4MzE2NDI1ZDhlOTgyMzMxOTdiNjk5MGI0MThjYmEx
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuaApAQCAtMjYsNyAr
MjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoV0VCWFIpCi0KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC0zOCwxNCArMzcsMTYgQEAgY2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsK
IGNsYXNzIFdlYlhSUG9zZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSUG9zZT4gewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJQb3NlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFdlYlhSUG9zZT4gY3JlYXRlKCk7Ci0gICAgfldlYlhSUG9zZSgpOworICAgIHN0YXRpYyBSZWY8
V2ViWFJQb3NlPiBjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIGJvb2wgZW11bGF0
ZWRQb3NpdGlvbik7CisgICAgdmlydHVhbCB+V2ViWFJQb3NlKCk7CiAKICAgICBjb25zdCBXZWJY
UlJpZ2lkVHJhbnNmb3JtJiB0cmFuc2Zvcm0oKSBjb25zdDsKICAgICBib29sIGVtdWxhdGVkUG9z
aXRpb24oKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdlclBvc2UoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViWFJQb3NlKCk7CisgICAgV2Vi
WFJQb3NlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRpb24p
OwogCiAgICAgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOwogICAgIGJvb2wg
bV9lbXVsYXRlZFBvc2l0aW9uIHsgZmFsc2UgfTsKQEAgLTUzLDQgKzU0LDkgQEAgcHJvdGVjdGVk
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XRUJYUlBPU0UoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpICAgICAgICAgICAgICAg
ICAgICBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBl
TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpXZWJYUlBvc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQu
cHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8v
IEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJQb3NlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmlk
bAppbmRleCA0YzRlOWRhZGM4ZWEwYWYzMTUxODY5NDE5M2I5MjQ5NjQ0Nzg4MDI2Li4yZTViMzg2
NGU1OTgyNzgyYTc5NWNlYjliZDdjNGUxOGQ2ZGUyNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlBvc2UuaWRsCkBAIC0yOCw3ICsyOCw2IEBACiAgICAgQ29uZGl0aW9u
YWw9V0VCWFIsCiAgICAgU2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPVdpbmRvdywKLSAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEludGVyZmFjZU5hbWU9WFJQb3NlCiBdIGlu
dGVyZmFjZSBXZWJYUlBvc2UgewogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUg
V2ViWFJSaWdpZFRyYW5zZm9ybSB0cmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcAppbmRleCBkNWJiMGU4MWY5MmM1
ODlhYzdmYzZiNzU3MTM2NTI1YWYwMmNhNzk2Li42YTg0ODZmZTliZWQ5YzJiNTVlMWE1OTU4YjE1
MjdkZjlhNmRhMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSUmVmZXJlbmNlU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTI5LDMyICsyOSw5OCBAQAogI2lmIEVOQUJMRShX
RUJYUikKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgor
I2luY2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJXZWJYUlNlc3Npb24u
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIERlZmF1bHRVc2VySGVpZ2h0SW5NZXRlcnMg
PSAxLjY1OworCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJSZWZlcmVuY2VTcGFj
ZSk7CiAKIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVm
ZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJS
ZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlwZSkpOworICAgIC8v
IGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyc3BhY2UtbmF0aXZlLW9y
aWdpbgorICAgIC8vIFRoZSB0cmFuc2Zvcm0gZnJvbSB0aGUgZWZmZWN0aXZlIHNwYWNlIHRvIHRo
ZSBuYXRpdmUgb3JpZ2luJ3Mgc3BhY2UgaXMKKyAgICAvLyBkZWZpbmVkIGJ5IGFuIG9yaWdpbiBv
ZmZzZXQsIHdoaWNoIGlzIGFuIFhSUmlnaWRUcmFuc2Zvcm0gaW5pdGlhbGx5IHNldAorICAgIC8v
IHRvIGFuIGlkZW50aXR5IHRyYW5zZm9ybS4KKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJY
UlJlZmVyZW5jZVNwYWNlKGRvY3VtZW50LCBXVEZNb3ZlKHNlc3Npb24pLCBXZWJYUlJpZ2lkVHJh
bnNmb3JtOjpjcmVhdGUoKSwgdHlwZSkpOworfQorCitSZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4g
V2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhS
U2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvZmZzZXQsIFhS
UmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
WFJSZWZlcmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShvZmZz
ZXQpLCB0eXBlKSk7CiB9CiAKLVdlYlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3Bh
Y2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVm
ZXJlbmNlU3BhY2VUeXBlIHR5cGUpCi0gICAgOiBXZWJYUlNwYWNlKGRvY3VtZW50LCBXVEZNb3Zl
KHNlc3Npb24pKQorV2ViWFJSZWZlcmVuY2VTcGFjZTo6V2ViWFJSZWZlcmVuY2VTcGFjZShEb2N1
bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmln
aWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQorICAgIDog
V2ViWFJTcGFjZShkb2N1bWVudCwgV1RGTW92ZShvZmZzZXQpKQorICAgICwgbV9zZXNzaW9uKFdU
Rk1vdmUoc2Vzc2lvbikpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KIAogV2ViWFJSZWZlcmVu
Y2VTcGFjZTo6fldlYlhSUmVmZXJlbmNlU3BhY2UoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxXZWJY
UlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5jZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VT
cGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJikKKworVHJhbnNmb3JtYXRpb25NYXRyaXgg
V2ViWFJSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QKK3sKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eTsKKworICAgIC8vIFdlIGFzc3VtZSB0aGF0IHBvc2VzIGdv
dCBmcm9tIHRoZSBkZXZpY2VzIGFyZSBpbiBsb2NhbCBzcGFjZS4KKyAgICAvLyBUaGlzIHdpbGwg
cmVxdWlyZSBtb3JlIGNvbXBsZXggbG9naWMgaWYgd2UgYWRkIHBvcnRzIHdpdGggZGlmZmVyZW50
IGRlZmF1bHQgY29vcmRpbmF0ZXMuCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFhS
UmVmZXJlbmNlU3BhY2VUeXBlOjpWaWV3ZXI6IHsKKyAgICAgICAgLy8gUmV0dXJuIHRoZSBjdXJy
ZW50IHBvc2UuIENvbnRlbnQgcmVuZGVyZWQgaW4gdmlld2VyIHBvc2Ugd2lsbCBzdGF5IGluIGZp
eGVkIHBvaW50IG9uIEhNRHMuCisgICAgICAgIGF1dG8mIGRhdGEgPSBtX3Nlc3Npb24tPmZyYW1l
RGF0YSgpOworICAgICAgICByZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoZGF0YS5v
cmlnaW4pOworICAgIH0KKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBlOjpMb2NhbDoKKyAg
ICAgICAgLy8gRGF0YSBmcm9tIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBpbiBsb2NhbCwgdXNlIHRo
ZSBpZGVudGl0eSBtYXRyaXguCisgICAgICAgIHJldHVybiBpZGVudGl0eTsKKyAgICBjYXNlIFhS
UmVmZXJlbmNlU3BhY2VUeXBlOjpVbmJvdW5kZWQ6CisgICAgICAgIC8vIExvY2FsIGFuZCB1bmJv
dW5kZWQgdXNlIHRoZSBzYW1lIGRldmljZSBzcGFjZSwgdXNlIHRoZSBpZGVudGl0eSBtYXRyaXgu
CisgICAgICAgIHJldHVybiBpZGVudGl0eTsKKyAgICBjYXNlIFhSUmVmZXJlbmNlU3BhY2VUeXBl
OjpMb2NhbEZsb29yOiB7CisgICAgICAgIC8vIFVzZSB0aGUgZmxvb3IgdHJhbnNmb3JtIHByb3Zp
ZGVkIGJ5IHRoZSBkZXZpY2Ugb3IgZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGhlaWdodC4KKyAgICAg
ICAgcmV0dXJuIGZsb29yT3JpZ2luVHJhbnNmb3JtKCk7CisgICAgfQorICAgIGNhc2UgWFJSZWZl
cmVuY2VTcGFjZVR5cGU6OkJvdW5kZWRGbG9vcjoKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBC
b3VuZGVkRmxvb3IgaXMgaGFuZGxlZCBieSBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSBzdWJj
bGFzcworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAg
IHJldHVybiBpZGVudGl0eTsKK30KKworUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhS
UmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRU
cmFuc2Zvcm0mIG9mZnNldFRyYW5zZm9ybSkKIHsKLSAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKKyAgICBhdXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIEFTU0VSVChpczxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSksIG1fc2Vzc2lvbi5jb3B5UmVmKCksIG1fdHlwZSk7CisKKyAgICAvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVuY2VzcGFjZS1n
ZXRvZmZzZXRyZWZlcmVuY2VzcGFjZQorICAgIC8vIFNldCBvZmZzZXRTcGFjZeKAmXMgb3JpZ2lu
IG9mZnNldCB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIGJhc2XigJlzIG9yaWdpbiBvZmZz
ZXQgYnkgb3JpZ2luT2Zmc2V0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBiYXNlLgorICAgIGF1
dG8gb2Zmc2V0ID0gV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKG1fb3JpZ2luT2Zmc2V0LT5y
YXdUcmFuc2Zvcm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7CisKKyAgICBy
ZXR1cm4gY3JlYXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLmNvcHlSZWYoKSwgV1RGTW92ZShvZmZz
ZXQpLCBtX3R5cGUpOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVyZW5jZVNw
YWNlOjpmbG9vck9yaWdpblRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgYXV0byYgZGF0YSA9IG1f
c2Vzc2lvbi0+ZnJhbWVEYXRhKCk7CisgICAgaWYgKCFkYXRhLmZsb29yVHJhbnNmb3JtKSB7Cisg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRlZmF1dFRyYW5zZm9ybTsKKyAgICAgICAgZGVm
YXV0VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAuMCwgLURlZmF1bHRVc2VySGVpZ2h0SW5NZXRlcnMs
IDAuMCk7CisgICAgICAgIHJldHVybiBkZWZhdXRUcmFuc2Zvcm07CisgICAgfQorCisgICAgLy8g
aHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhycmVmZXJlbmNlc3Bh
Y2V0eXBlLWxvY2FsLWZsb29yCisgICAgLy8gR2V0IGZsb29yIGVzdGltYXRpb24gZnJvbSB0aGUg
ZGV2aWNlCisgICAgLy8gRklYTUU6IFJvdW5kIHRvIG5lYXJlc3QgMWNtIHRvIHByZXZlbnQgZmlu
Z2VycHJpbnRpbmcKKyAgICByZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoKmRhdGEu
Zmxvb3JUcmFuc2Zvcm0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCmluZGV4IGEy
YzgwNTFmNTljMjI3ZDg3Nzc5NWMyYmI4ZjZlNzM2M2RlOGYzZTMuLmQ1MDIyOWI5MjUzMjZmZjhl
NzM5Y2M1OGU4MzhlMzhkZmEzYjk5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCkBAIC0zNywyMSArMzcsMzkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKIGNsYXNzIFdlYlhSU2Vz
c2lvbjsKIAotY2xhc3MgV2ViWFJSZWZlcmVuY2VTcGFjZSA6IHB1YmxpYyBXZWJYUlNwYWNlIHsK
K2NsYXNzIFdlYlhSUmVmZXJlbmNlU3BhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlJlZmVy
ZW5jZVNwYWNlPiwgcHVibGljIFdlYlhSU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoV2ViWFJSZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJYUlJl
ZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJl
ZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBj
cmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgdmlydHVhbCB+V2ViWFJSZWZl
cmVuY2VTcGFjZSgpOwogCi0gICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IGdldE9mZnNl
dFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKTsKKyAgICB1c2luZyBS
ZWZDb3VudGVkPFdlYlhSUmVmZXJlbmNlU3BhY2U+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRl
ZDxXZWJYUlJlZmVyZW5jZVNwYWNlPjo6ZGVyZWY7CisKKyAgICBXZWJYUlNlc3Npb24mIHNlc3Np
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25z
dCBXZWJYUlJpZ2lkVHJhbnNmb3JtJik7CisgICAgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViWFJSZWZlcmVu
Y2VTcGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFhSUmVmZXJlbmNlU3BhY2VU
eXBlKTsKKyAgICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lv
bj4mJiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsK
KworICAgIGJvb2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsb29yT3JpZ2luVHJhbnNmb3JtKCkgY29u
c3Q7CiAKKyAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgWFJSZWZlcmVuY2VT
cGFjZVR5cGUgbV90eXBlOworCitwcml2YXRlOgorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBm
aW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJl
ZigpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0VCWFJTUEFDRShXZWJYUlJlZmVyZW5jZVNwYWNlLCBpc1JlZmVyZW5jZVNwYWNlKCkp
CisKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbAppbmRleCAyODM1MDdmNDQ1YTUyZmUy
ZTE3MTk2NmY1MDczYmMxM2I0OWZjNTNiLi44MWU0NGQzNGRhMTY3YjhmZTZkYjIzNGMyNDBjOTM4
NTYzNTI1OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
UmVmZXJlbmNlU3BhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJSZWZlcmVuY2VTcGFjZS5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBFeHBvc2VkPVdpbmRv
dywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmpl
Y3QsCisgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgSW50ZXJmYWNlTmFtZT1YUlJlZmVy
ZW5jZVNwYWNlCiBdIGludGVyZmFjZSBXZWJYUlJlZmVyZW5jZVNwYWNlIDogV2ViWFJTcGFjZSB7
CiAgICAgW05ld09iamVjdF0gV2ViWFJSZWZlcmVuY2VTcGFjZSBnZXRPZmZzZXRSZWZlcmVuY2VT
cGFjZShXZWJYUlJpZ2lkVHJhbnNmb3JtIG9yaWdpbk9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggYmQ2YzUwMWNiN2VjNWE3MWNi
N2E3MDdiMTk5OWZkOWJhOTI4OGIyYy4uMzFmYTI5MDI3ZjljNjZjYTdiNzIyNmFiZjZkMzBkZDRj
N2M1MDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
LmNwcApAQCAtMjgsMTEgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU1dlYlhS
UmVmZXJlbmNlU3BhY2UuaCIKICNpbmNsdWRlICJXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5o
IgogI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUlN5c3RlbS5oIgorI2lu
Y2x1ZGUgIldlYlhSVmlldy5oIgogI2luY2x1ZGUgIlhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCIK
ICNpbmNsdWRlICJYUlJlbmRlclN0YXRlSW5pdC5oIgogI2luY2x1ZGUgIlhSU2Vzc2lvbkV2ZW50
LmgiCkBAIC01NSw3ICs1Nyw5IEBAIFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50
JiBkb2N1bWVudCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX21v
ZGUobW9kZSkKICAgICAsIG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCiAgICAgLCBtX2Fj
dGl2ZVJlbmRlclN0YXRlKFdlYlhSUmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKKyAgICAsIG1f
dmlld2VyUmVmZXJlbmNlU3BhY2UobmV3IFdlYlhSVmlld2VyU3BhY2UoZG9jdW1lbnQsICp0aGlz
KSkKICAgICAsIG1fdGltZU9yaWdpbihNb25vdG9uaWNUaW1lOjpub3coKSkKKyAgICAsIG1fdmll
d3MoZGV2aWNlLnZpZXdzKG1vZGUpKQogewogICAgIG1fZGV2aWNlLT5pbml0aWFsaXplVHJhY2tp
bmdBbmRSZW5kZXJpbmcobW9kZSk7CiAgICAgbV9kZXZpY2UtPnNldFRyYWNraW5nQW5kUmVuZGVy
aW5nQ2xpZW50KG1ha2VXZWFrUHRyKCp0aGlzKSk7CkBAIC00NzgsMTMgKzQ4MiwxNSBAQCB2b2lk
IFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZy
YW1lRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUXVldWUgYSB0YXNrIHRvIHBlcmZv
cm0gdGhlIGZvbGxvd2luZyBzdGVwcy4KLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUo
KnRoaXMsIFRhc2tTb3VyY2U6OldlYlhSLCBbdGhpcywgZnJhbWVEYXRhID0gV1RGTW92ZShmcmFt
ZURhdGEpXSgpIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6OldlYlhSLCBbdGhpcywgZnJhbWVEYXRhID0gV1RGTW92ZShmcmFtZURhdGEpXSgpIG11
dGFibGUgewogICAgICAgICBpZiAobV9lbmRlZCkKICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBtX2ZyYW1lRGF0YSA9IGZyYW1lRGF0YTsKICAgICAgICAgLy8gIDEuTGV0IG5vdyBiZSB0
aGUgY3VycmVudCBoaWdoIHJlc29sdXRpb24gdGltZS4KICAgICAgICAgYXV0byBub3cgPSAoTW9u
b3RvbmljVGltZTo6bm93KCkgLSBtX3RpbWVPcmlnaW4pLm1pbGxpc2Vjb25kcygpOwogCi0gICAg
ICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigqdGhpcykpOworICAg
ICAgICBhdXRvIGZyYW1lID0gV2ViWFJGcmFtZTo6Y3JlYXRlKG1ha2VSZWYoKnRoaXMpLCBXZWJY
UkZyYW1lOjpJc0FuaW1hdGlvbkZyYW1lOjpZZXMpOwogICAgICAgICAvLyAgMi5MZXQgZnJhbWUg
YmUgc2Vzc2lvbuKAmXMgYW5pbWF0aW9uIGZyYW1lLgogICAgICAgICAvLyAgMy5TZXQgZnJhbWXi
gJlzIHRpbWUgdG8gZnJhbWVUaW1lLgogICAgICAgICBmcmFtZS0+c2V0VGltZShzdGF0aWNfY2Fz
dDxET01IaWdoUmVzVGltZVN0YW1wPihmcmFtZURhdGEucHJlZGljdGVkRGlzcGxheVRpbWUpKTsK
QEAgLTUwOCw3ICs1MTQsNyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZyYW1lRGF0YSkKICAgICAgICAgICAgIGZyYW1lLT5zZXRB
Y3RpdmUodHJ1ZSk7CiAKICAgICAgICAgICAgIC8vIDYuNC5BcHBseSBmcmFtZSB1cGRhdGVzIGZv
ciBmcmFtZS4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCisgICAgICAgICAgICBm
cmFtZS0+c2V0RnJhbWVEYXRhKFdURk1vdmUoZnJhbWVEYXRhKSk7CiAKICAgICAgICAgICAgIC8v
IDYuNS5Gb3IgZWFjaCBlbnRyeSBpbiBzZXNzaW9u4oCZcyBsaXN0IG9mIGN1cnJlbnRseSBydW5u
aW5nIGFuaW1hdGlvbiBmcmFtZSBjYWxsYmFja3MsIGluIG9yZGVyOgogICAgICAgICAgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykgewpAQCAtNTM3LDYgKzU0MywyNSBAQCB2b2lk
IFdlYlhSU2Vzc2lvbjo6b25GcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYmIGZy
YW1lRGF0YSkKICAgICB9KTsKIH0KIAorLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5p
by93ZWJ4ci8jcG9zZXMtbWF5LWJlLXJlcG9ydGVkCitib29sIFdlYlhSU2Vzc2lvbjo6cG9zZXND
YW5CZVJlcG9ydGVkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKK3sKKyAgICAvLyAx
LiBJZiBzZXNzaW9u4oCZcyByZWxldmFudCBnbG9iYWwgb2JqZWN0IGlzIG5vdCB0aGUgY3VycmVu
dCBnbG9iYWwgb2JqZWN0LCByZXR1cm4gZmFsc2UuCisgICAgYXV0byogc2Vzc2lvbkRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYg
KCFzZXNzaW9uRG9jdW1lbnQgfHwgc2Vzc2lvbkRvY3VtZW50LT5kb21XaW5kb3coKSAhPSBkb2N1
bWVudC5kb21XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gMi4gSWYg
c2Vzc2lvbidzIHZpc2liaWxpdHlTdGF0ZSBpbiBub3QgInZpc2libGUiLCByZXR1cm4gZmFsc2Uu
CisgICAgaWYgKG1fdmlzaWJpbGl0eVN0YXRlICE9IFhSVmlzaWJpbGl0eVN0YXRlOjpWaXNpYmxl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyA1LiBEZXRlcm1pbmUgaWYgdGhlIHBv
c2UgZGF0YSBjYW4gYmUgcmV0dXJuZWQgYXMgZm9sbG93czoKKyAgICAvLyBUaGUgcHJvY2VkdXJl
IGluIHRoZSBzcGVjcyB0cmllcyB0byBlbnN1cmUgdGhhdCB3ZSBhcHBseSBtZWFzdXJlcyB0bwor
ICAgIC8vIHByZXZlbnQgZmluZ2VycHJpbnRpbnQgaW4gcG9zZSBkYXRhIGFuZCByZXR1cm4gZmFs
c2UgaW4gY2FzZSB3ZSBkb24ndC4KKyAgICAvLyBXZSdyZSBnb2luZyB0byBhcHBseSB0aGVtIHNv
IGxldCdzIGp1c3QgcmV0dXJuIHRydWUuCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IGQ4MzYzYTVjOTMxY2Y1MGY3YjZl
MzE5YWVlZGIzZThhMjMzNGZlZTUuLmRmMzNhYzZlNGQxYjVkNmExYjU5MmMwMTE3MjMwNDI1YmY4
MWIzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApA
QCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJY
UklucHV0U291cmNlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJYUlJlbmRlclN0YXRlLmgiCi0jaW5j
bHVkZSAiV2ViWFJTcGFjZS5oIgogI2luY2x1ZGUgIlhSRW52aXJvbm1lbnRCbGVuZE1vZGUuaCIK
ICNpbmNsdWRlICJYUkludGVyYWN0aW9uTW9kZS5oIgogI2luY2x1ZGUgIlhSUmVmZXJlbmNlU3Bh
Y2VUeXBlLmgiCkBAIC00OCw4ICs0Nyw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2s7Ci1jbGFzcyBXZWJYUlJlZmVyZW5jZVNwYWNlOwogY2xh
c3MgV2ViWFJTeXN0ZW07CitjbGFzcyBXZWJYUlZpZXc7CitjbGFzcyBXZWJYUlZpZXdlclNwYWNl
Owogc3RydWN0IFhSUmVuZGVyU3RhdGVJbml0OwogCiBjbGFzcyBXZWJYUlNlc3Npb24gZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFBsYXRmb3JtWFI6OlRy
YWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50IHsKQEAgLTkwLDYgKzkwLDExIEBAIHB1YmxpYzoKIAog
ICAgIFhSU2Vzc2lvbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogCisgICAg
Y29uc3QgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+JiB2aWV3cygpIGNvbnN0
IHsgcmV0dXJuIG1fdmlld3M7IH0KKyAgICBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YSYgZnJhbWVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZURhdGE7IH0KKyAgICBjb25z
dCBXZWJYUlZpZXdlclNwYWNlJiB2aWV3ZXJSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IHsgcmV0dXJu
ICptX3ZpZXdlclJlZmVyZW5jZVNwYWNlOyB9CisgICAgYm9vbCBwb3Nlc0NhbkJlUmVwb3J0ZWQo
Y29uc3QgRG9jdW1lbnQmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJYUlNlc3Npb24oRG9j
dW1lbnQmLCBXZWJYUlN5c3RlbSYsIFhSU2Vzc2lvbk1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYp
OwogCkBAIC0xMjgsMTEgKzEzMywxNSBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8UGxhdGZvcm1Y
Ujo6RGV2aWNlPiBtX2RldmljZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9hY3Rp
dmVSZW5kZXJTdGF0ZTsKICAgICBSZWZQdHI8V2ViWFJSZW5kZXJTdGF0ZT4gbV9wZW5kaW5nUmVu
ZGVyU3RhdGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlhSVmlld2VyU3BhY2U+IG1fdmlld2Vy
UmVmZXJlbmNlU3BhY2U7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPcmlnaW47CiAKICAgICB1
bnNpZ25lZCBtX25leHRDYWxsYmFja0lkIHsgMSB9OwogICAgIFZlY3RvcjxSZWY8WFJGcmFtZVJl
cXVlc3RDYWxsYmFjaz4+IG1fY2FsbGJhY2tzOwogCisgICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRl
dmljZTo6Vmlld0RhdGE+IG1fdmlld3M7CisgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGEgbV9mcmFtZURhdGE7CisKICAgICBkb3VibGUgbV9taW5pbXVtSW5saW5lRk9WIHsgMC4wIH07
CiAgICAgZG91YmxlIG1fbWF4aW11bUlubGluZUZPViB7IHBpRmxvYXQgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5jcHAKaW5kZXggNTI0MjU0ZmE0Njc3Yjhk
YjE1MjM1NTA2MjhkM2E3OWU2OTIyNjkxNC4uZmE4ODFkNGJiYjRmNTUxYmQ2YTMyODI5MmIwMjI5
ZWExN2Q5NDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2Uu
Y3BwCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJE
T01Qb2ludFJlYWRPbmx5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJXZWJY
UlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMzYsMTQgKzM4LDM4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSU3BhY2UpOwogCi1X
ZWJYUlNwYWNlOjpXZWJYUlNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lv
bj4mJiBzZXNzaW9uKQorV2ViWFJTcGFjZTo6V2ViWFJTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIG9mZnNldCkKICAgICA6IENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyKCZkb2N1bWVudCkKLSAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24p
KQorICAgICwgbV9vcmlnaW5PZmZzZXQoV1RGTW92ZShvZmZzZXQpKQogewogfQogCiBXZWJYUlNw
YWNlOjp+V2ViWFJTcGFjZSgpID0gZGVmYXVsdDsKIAorVHJhbnNmb3JtYXRpb25NYXRyaXggV2Vi
WFJTcGFjZTo6ZWZmZWN0aXZlT3JpZ2luKCkgY29uc3QKK3sKKyAgICAvLyBodHRwczovL2ltbWVy
c2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4cnNwYWNlLWVmZmVjdGl2ZS1vcmlnaW4KKyAgICAv
LyBUaGUgZWZmZWN0aXZlIG9yaWdpbiBjYW4gYmUgb2J0YWluZWQgYnkgbXVsdGlwbHlpbmcgb3Jp
Z2luIG9mZnNldCBhbmQgdGhlIG5hdGl2ZSBvcmlnaW4uCisgICAgcmV0dXJuIG1fb3JpZ2luT2Zm
c2V0LT5yYXdUcmFuc2Zvcm0oKSAqIG5hdGl2ZU9yaWdpbigpOworfQorCisKK1dURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXZWJYUlZpZXdlclNwYWNlKTsKKworV2ViWFJWaWV3ZXJTcGFjZTo6
V2ViWFJWaWV3ZXJTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lv
bikKKyAgICA6IFdlYlhSU3BhY2UoZG9jdW1lbnQsIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0
ZSgpKQorICAgICwgbV9zZXNzaW9uKHNlc3Npb24pCit7Cit9CisKK1dlYlhSVmlld2VyU3BhY2U6
On5XZWJYUlZpZXdlclNwYWNlKCkgPSBkZWZhdWx0OworCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBX
ZWJYUlZpZXdlclNwYWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBXZWJY
UkZyYW1lOjptYXRyaXhGcm9tUG9zZShtX3Nlc3Npb24uZnJhbWVEYXRhKCkub3JpZ2luKTsKK30K
KworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oCmluZGV4IDdmMWM0ZTk3NDcz
OWE3MGNjNGIwYzBiMWNlYmYxOGU1ZmI4NDk5MGQuLmI0OTY4NjgyMDViYTFlNzA5ODYxMTk4Yzdl
NjJiYjM3ZTIwOTI1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFj
ZS5oCkBAIC0yOSwzNyArMjksNjUgQEAKIAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OworY2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIAotY2xh
c3MgV2ViWFJTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSU3BhY2U+LCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
IHsKK2NsYXNzIFdlYlhSU3BhY2UgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdlYlhSU3BhY2UpOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlhSU3BhY2UoKTsK
IAotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJTcGFjZT46OnJlZjsKLSAgICB1c2luZyBSZWZD
b3VudGVkPFdlYlhSU3BhY2U+OjpkZXJlZjsKKyAgICB2aXJ0dWFsIFdlYlhSU2Vzc2lvbiYgc2Vz
c2lvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2
ZU9yaWdpbigpIGNvbnN0ID0gMDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBlZmZlY3RpdmVP
cmlnaW4oKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc1JlZmVyZW5jZVNwYWNlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNCb3VuZGVkUmVmZXJlbmNl
U3BhY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViWFJT
cGFjZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYpOworICAgIFdlYlhSU3BhY2UoRG9j
dW1lbnQmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJik7CiAKICAgICAvLyBFdmVudFRhcmdl
dAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247
CisgICAgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+IG1fb3JpZ2luT2Zmc2V0OwogCiBwcml2YXRl
OgogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXZWJYUlNwYWNlRXZlbnRUYXJn
ZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsg
cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7
IH0KK307CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyc2Vz
c2lvbi12aWV3ZXItcmVmZXJlbmNlLXNwYWNlCisvLyBUaGlzIGlzIGEgaGVscGVyIGNsYXNzIHRv
IGltcGxlbWVudCB0aGUgdmlld2VyIHNwYWNlIG93bmVkIGJ5IGEgV2ViWFJTZXNzaW9uLgorLy8g
SXQgYXZvaWRzIGEgY2lyY3VsYXIgcmVmZXJlbmNlIGJldHdlZW4gdGhlIHNlc3Npb24gYW5kIHRo
ZSByZWZlcmVuY2Ugc3BhY2UuCitjbGFzcyBXZWJYUlZpZXdlclNwYWNlIDogcHVibGljIFdlYlhS
U3BhY2UgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJWaWV3ZXJTcGFjZSk7Citw
dWJsaWM6CisgICAgV2ViWFJWaWV3ZXJTcGFjZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYpOwor
ICAgIHZpcnR1YWwgfldlYlhSVmlld2VyU3BhY2UoKTsKKworcHJpdmF0ZToKKyAgICBXZWJYUlNl
c3Npb24mIHNlc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb247IH0KKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCBmaW5hbDsKKworICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKworICAgIFdlYlhSU2Vzc2lvbiYgbV9zZXNzaW9uOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VC
WFJTUEFDRShUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19CRUdJTihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBp
c1R5cGUoY29uc3QgV2ViQ29yZTo6V2ViWFJTcGFjZSYgY29udGV4dCkgeyByZXR1cm4gY29udGV4
dC5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lz
dGVtLmNwcAppbmRleCA4NTA2MmZkNTNkNmYwZDJhZDg5NWVmOGQzYmQxZTA5OWFhMGIzZDhjLi5h
MjZjNjI2NThjMDc1YTYxYTZjYzhmYmZiNzI5YWNiMTVlODk5YWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtNTIxLDEyICs1MjEsMjEgQEAg
dm9pZCBXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OnJlcXVlc3RGcmFtZShQbGF0Zm9y
bVhSOjpEZXZpY2U6OlJlcXVlc3RGcmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByYWYg
PSBJbmxpbmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazo6Y3JlYXRlKCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
ewotICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YSBkYXRhOworICAgICAgICBkYXRhLmlzVHJhY2tpbmdWYWxpZCA9IHRydWU7CisgICAg
ICAgIGRhdGEuaXNQb3NpdGlvblZhbGlkID0gdHJ1ZTsKKyAgICAgICAgZGF0YS52aWV3cy5hcHBl
bmQoeyB9KTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShkYXRhKSk7CiAgICAgfSk7CiAKICAg
ICBkb2N1bWVudC0+cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJhZik7CiB9CiAKK1ZlY3RvcjxQbGF0
Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiBXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6
OnZpZXdzKFhSU2Vzc2lvbk1vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyAuYWN0aXZlID0g
dHJ1ZSwgUGxhdGZvcm1YUjo6RXllOjpOb25lIH0gfTsKK30KKwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJT
eXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAppbmRl
eCAxZGU4Yjc1Yjc5NTA2N2YzMWEwOWJjYzY3MDcwY2RiMThjNmYyYWU3Li4xMDI0ZDBmNWE0ZjNj
MWY2YjQxYWRmN2Y5NmJkODNjYzM4NGFkMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUlN5c3RlbS5oCkBAIC0xMTEsOSArMTExLDEwIEBAIHByaXZhdGU6CiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCBpbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZv
cm1YUjo6U2Vzc2lvbk1vZGUpIGZpbmFsIHsgfQogICAgICAgICB2b2lkIHNodXREb3duVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBpbml0aWFsaXplUmVmZXJl
bmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbCB7IH07CisgICAg
ICAgIHZvaWQgaW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNw
YWNlVHlwZSkgZmluYWwgeyB9CiAKICAgICAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1Y
Ujo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICAgICAgVmVjdG9y
PERldmljZTo6Vmlld0RhdGE+IHZpZXdzKFhSU2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAg
IH07CiAgICAgRHVtbXlJbmxpbmVEZXZpY2UgbV9kZWZhdWx0SW5saW5lRGV2aWNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKaW5kZXggMWE5OGNiMTQ1MDQ1
OWZmMjY1NjM4ZjU4ZGY0OGJiNGZjY2ZmMzBiZS4uNDNkMTBiODdmZjZjY2JiNzUwMTAwMTU5MzFj
YjBmY2Y3YTRiMGI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3
LmNwcApAQCAtMzYsMjMgKzM2LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSVmlldyk7CiAKLVJlZjxXZWJYUlZpZXc+IFdlYlhSVmll
dzo6Y3JlYXRlKCkKK1JlZjxXZWJYUlZpZXc+IFdlYlhSVmlldzo6Y3JlYXRlKFhSRXllIGV5ZSwg
UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBSZWY8RmxvYXQzMkFycmF5PiYm
IHByb2plY3Rpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJWaWV3KTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlZpZXcoZXllLCBXVEZNb3ZlKHRyYW5zZm9ybSks
IFdURk1vdmUocHJvamVjdGlvbikpKTsKIH0KIAotV2ViWFJWaWV3OjpXZWJYUlZpZXcoKQotICAg
IDogbV9leWUoWFJFeWU6Ok5vbmUpCitXZWJYUlZpZXc6OldlYlhSVmlldyhYUkV5ZSBleWUsIFJl
ZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgUmVmPEZsb2F0MzJBcnJheT4mJiBw
cm9qZWN0aW9uKQorICAgIDogbV9leWUoZXllKQorICAgICwgbV90cmFuc2Zvcm0oV1RGTW92ZSh0
cmFuc2Zvcm0pKQorICAgICwgbV9wcm9qZWN0aW9uKHByb2plY3Rpb24pCiB7CiB9CiAKIFdlYlhS
Vmlldzo6fldlYlhSVmlldygpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJYUlZpZXc6OnNldFByb2pl
Y3Rpb25NYXRyaXgoY29uc3QgVmVjdG9yPGZsb2F0PiYgbWF0cml4KQotewotICAgIG1fcHJvamVj
dGlvbk1hdHJpeCA9IEZsb2F0MzJBcnJheTo6Y3JlYXRlKG1hdHJpeC5kYXRhKCksIG1hdHJpeC5z
aXplKCkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuaAppbmRleCAzOWEw
OWNlMTBiYWFhMmMyNzk3Yzg3NTU3MzcxYzJiZjc4OGFjNGU1Li40YjY2MDY5MTE4MjY4ZDRhYjNm
ODU3NjU4NWE3OGM5MDIwMzBiYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJWaWV3LmgKQEAgLTM3LDI4ICszNywyNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFdlYlhSRnJhbWU7CiBjbGFzcyBXZWJYUlJpZ2lkVHJhbnNmb3JtOwogCiBjbGFzcyBXZWJY
UlZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlZpZXc+IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0VYUE9SVChXZWJYUlZpZXcsIFdFQkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFdlYlhSVmlldz4gY3JlYXRlKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxXZWJYUlZpZXc+IGNyZWF0ZShYUkV5ZSwgUmVmPFdlYlhS
UmlnaWRUcmFuc2Zvcm0+JiYsIFJlZjxGbG9hdDMyQXJyYXk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIH5XZWJYUlZpZXcoKTsKIAogICAgIFhSRXllIGV5ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXll
OyB9Ci0gICAgY29uc3QgRmxvYXQzMkFycmF5JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3QgeyBy
ZXR1cm4gKm1fcHJvamVjdGlvbk1hdHJpeDsgfQotICAgIGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zv
cm0mIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuICptX3RyYW5zZm9ybTsgfQotCi0gICAgdm9p
ZCBzZXRFeWUoWFJFeWUgZXllKSB7IG1fZXllID0gZXllOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRQcm9qZWN0aW9uTWF0cml4KGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLSAgICB2b2lk
IHNldFRyYW5zZm9ybShSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB2aWV3T2Zmc2V0KSB7
IG1fdHJhbnNmb3JtID0gV1RGTW92ZSh2aWV3T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZsb2F0MzJB
cnJheSYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbi5nZXQo
KTsgfQorICAgIGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mIHRyYW5zZm9ybSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhbnNmb3JtLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJWaWV3KCk7
CisgICAgV2ViWFJWaWV3KFhSRXllLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgUmVmPEZs
b2F0MzJBcnJheT4mJik7CiAKICAgICBYUkV5ZSBtX2V5ZTsKLSAgICBSZWZQdHI8RmxvYXQzMkFy
cmF5PiBtX3Byb2plY3Rpb25NYXRyaXg7Ci0gICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
IG1fdHJhbnNmb3JtOworICAgIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsK
KyAgICBSZWY8RmxvYXQzMkFycmF5PiBtX3Byb2plY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Vmlld2VyUG9zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2Vy
UG9zZS5jcHAKaW5kZXggNjA2M2M5NWYzNjQzYWRhYjBhMjgxZGE4OGIzY2JhZTY1YTc5N2IwOS4u
ZTQ5ZTZjNzg3NGFkMzIzZjVmNTg1OTMzNGMyNzdiYjNiYWUyZjFhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcApAQCAtMjUsMTcgKzI1
LDI0IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJYUlZpZXdlclBvc2Uu
aCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiAjaWYgRU5BQkxFKFdFQlhS
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJYUlZpZXdlclBvc2U+IFdlYlhSVmll
d2VyUG9zZTo6Y3JlYXRlKCkKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlZpZXdl
clBvc2UpOworCitSZWY8V2ViWFJWaWV3ZXJQb3NlPiBXZWJYUlZpZXdlclBvc2U6OmNyZWF0ZShS
ZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0ZWRQb3NpdGlv
bikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlZpZXdlclBvc2UoV1RGTW92ZSh0
cmFuc2Zvcm0pLCBlbXVsYXRlZFBvc2l0aW9uKSk7Cit9CisKK1dlYlhSVmlld2VyUG9zZTo6V2Vi
WFJWaWV3ZXJQb3NlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBl
bXVsYXRlZFBvc2l0aW9uKQorICAgIDogV2ViWFJQb3NlKFdURk1vdmUodHJhbnNmb3JtKSwgZW11
bGF0ZWRQb3NpdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlZpZXdlclBv
c2UpOwogfQogCi1XZWJYUlZpZXdlclBvc2U6OldlYlhSVmlld2VyUG9zZSgpID0gZGVmYXVsdDsK
IFdlYlhSVmlld2VyUG9zZTo6fldlYlhSVmlld2VyUG9zZSgpID0gZGVmYXVsdDsKIAogY29uc3Qg
VmVjdG9yPFJlZjxXZWJYUlZpZXc+PiYgV2ViWFJWaWV3ZXJQb3NlOjp2aWV3cygpIGNvbnN0CkBA
IC00Myw2ICs1MCwxMSBAQCBjb25zdCBWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiBXZWJYUlZpZXdl
clBvc2U6OnZpZXdzKCkgY29uc3QKICAgICByZXR1cm4gbV92aWV3czsKIH0KIAordm9pZCBXZWJY
UlZpZXdlclBvc2U6OnNldFZpZXdzKFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4mJiB2aWV3cykKK3sK
KyAgICBtX3ZpZXdzID0gV1RGTW92ZSh2aWV3cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSVmlld2VyUG9zZS5oCmluZGV4IGE0ZWQyNWIxMGMyNTMxOWE2ZTkyMTg1Mjgw
NjRlNTFjOGQ0ZDhmMjAuLmU5ZjBhMzlkODViN2VhY2U3MDEzY2ExODQyOWQyYjNjYmI4MGRjYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3Nl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaApA
QCAtMzcsMTggKzM3LDI0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYlhSVmll
d2VyUG9zZSA6IHB1YmxpYyBXZWJYUlBvc2UgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
V2ViWFJWaWV3ZXJQb3NlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSVmlld2VyUG9z
ZT4gY3JlYXRlKCk7Ci0gICAgfldlYlhSVmlld2VyUG9zZSgpOworICAgIHN0YXRpYyBSZWY8V2Vi
WFJWaWV3ZXJQb3NlPiBjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIGJvb2wgZW11
bGF0ZWRQb3NpdGlvbik7CisgICAgdmlydHVhbCB+V2ViWFJWaWV3ZXJQb3NlKCk7CiAKICAgICBj
b25zdCBWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiB2aWV3cygpIGNvbnN0OworICAgIHZvaWQgc2V0
Vmlld3MoVmVjdG9yPFJlZjxXZWJYUlZpZXc+PiYmKTsKIAogcHJpdmF0ZToKLSAgICBXZWJYUlZp
ZXdlclBvc2UoKTsKKyAgICBXZWJYUlZpZXdlclBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
JiYsIGJvb2wgZW11bGF0ZWRQb3NpdGlvbik7CisKKyAgICBib29sIGlzVmlld2VyUG9zZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4g
bV92aWV3czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XRUJYUlBPU0UoV2ViWFJWaWV3ZXJQb3NlLCBpc1ZpZXdlclBvc2UoKSkKKwogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJWaWV3ZXJQb3NlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJWaWV3ZXJQb3NlLmlkbAppbmRleCBkMWJlYjJjMDg2Zjg5YmZhZmRmNWUwYmYxZjk1YzBm
NDhjNjA3NjEzLi42YTc2ZGU4NDM1NDlmYmYwNjNkMGJhNWQ0MTEzYTAxNTI5NTBiMmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaWRsCkBA
IC0yOCw3ICsyOCw4IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCWFIsCiAgICAgU2VjdXJlQ29udGV4
dCwKICAgICBFeHBvc2VkPVdpbmRvdywKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAor
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwK
ICAgICBJbnRlcmZhY2VOYW1lPVhSVmlld2VyUG9zZQogXSBpbnRlcmZhY2UgV2ViWFJWaWV3ZXJQ
b3NlIDogV2ViWFJQb3NlIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIEZy
b3plbkFycmF5PFdlYlhSVmlldz4gdmlld3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1hSRXllLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1hSRXll
LmgKaW5kZXggZWExZWE3ZTFlN2Q4MjI2MzI1ZjYwYzgyNmZmZmJjMGI5YmE0ZDY2Zi4uZjlhMzQz
YmRhNDQ3NDk3ZjZkZGE1NDQ5OTA4ZTRkOTlkOWZjOTdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9YUkV5ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvWFJFeWUuaApAQCAtMjcsMTMgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAK
KyNpbmNsdWRlICJQbGF0Zm9ybVhSLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBj
bGFzcyBYUkV5ZSB7Ci0gICAgTm9uZSwKLSAgICBMZWZ0LAotICAgIFJpZ2h0LAotfTsKK3VzaW5n
IFhSRXllID0gUGxhdGZvcm1YUjo6RXllOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtYXRpb25NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggYTdlNGUwMTQyYzRhMzRh
NWVhZGQ3OTczZjRkYjQ3MjU4NTNkZjBjMS4uYjJlYzE0NTg0YjU2YzA2Yzg2ODhhNzU4NmI5NDBh
MjY4MjFkODA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAg
LTU4NCwxNSArNTg0LDE1IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHQpCiAvLyBGSVhNRTogT25jZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwODU2IGlzIGFkZHJlc3NlZCB3ZSBjYW4g
cmV1c2UgdGhpcyBmdW5jdGlvbiBpbiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjb21wb3NlNCgp
LgogVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21RdWF0ZXJu
aW9uKGRvdWJsZSBxeCwgZG91YmxlIHF5LCBkb3VibGUgcXosIGRvdWJsZSBxdykKIHsKLSAgICBj
b25zdCBkb3VibGUgeHggPSBxeCAqIHF4OwotICAgIGNvbnN0IGRvdWJsZSB5eSA9IHF5ICogcXk7
Ci0gICAgY29uc3QgZG91YmxlIHp6ID0gcXogKiBxejsKLSAgICBjb25zdCBkb3VibGUgeHogPSBx
eCAqIHF6OwotICAgIGNvbnN0IGRvdWJsZSB4eSA9IHF4ICogcXk7IAotICAgIGNvbnN0IGRvdWJs
ZSB5eiA9IHF5ICogcXo7Ci0gICAgY29uc3QgZG91YmxlIHh3ID0gcXcgKiBxeDsKLSAgICBjb25z
dCBkb3VibGUgeXcgPSBxdyAqIHF5OwotICAgIGNvbnN0IGRvdWJsZSB6dyA9IHF3ICogcXo7Cisg
ICAgZG91YmxlIHh4ID0gcXggKiBxeDsKKyAgICBkb3VibGUgeXkgPSBxeSAqIHF5OworICAgIGRv
dWJsZSB6eiA9IHF6ICogcXo7CisgICAgZG91YmxlIHh6ID0gcXggKiBxejsKKyAgICBkb3VibGUg
eHkgPSBxeCAqIHF5OyAKKyAgICBkb3VibGUgeXogPSBxeSAqIHF6OworICAgIGRvdWJsZSB4dyA9
IHF3ICogcXg7CisgICAgZG91YmxlIHl3ID0gcXcgKiBxeTsKKyAgICBkb3VibGUgencgPSBxdyAq
IHF6OwogCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KDEgLSAyICogKHl5ICsgenop
LCAyICogKHh5ICsgencpLCAyICogKHh6IC0geXcpLCAwLAogICAgICAgICAyICogKHh5IC0gencp
LCAxIC0gMiAqICh4eCArIHp6KSwgMiAqICh5eiArIHh3KSwgMCwKQEAgLTYwMCw2ICs2MDAsMzQg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21RdWF0ZXJu
aW9uKGRvdWJsZSBxeCwgZG91YmxlIHF5LAogICAgICAgICAwLCAwLCAwLCAxKTsKIH0KIAorCitU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVByb2plY3Rpb24o
ZG91YmxlIGZvdlVwLCBkb3VibGUgZm92RG93biwgZG91YmxlIGZvdkxlZnQsIGRvdWJsZSBmb3ZS
aWdodCwgZG91YmxlIGRlcHRoTmVhciwgZG91YmxlIGRlcHRoRmFyKQoreworICAgIGRvdWJsZSB1
cFRhbiA9IHRhbihmb3ZVcCk7CisgICAgZG91YmxlIGRvd25UYW4gPSB0YW4oZm92RG93bik7Cisg
ICAgZG91YmxlIGxlZnRUYW4gPSB0YW4oZm92TGVmdCk7CisgICAgZG91YmxlIHJpZ2h0VGFuID0g
dGFuKGZvdlJpZ2h0KTsKKyAgICBkb3VibGUgeFNjYWxlID0gMi4wIC8gKGxlZnRUYW4gKyByaWdo
dFRhbik7CisgICAgZG91YmxlIHlTY2FsZSA9IDIuMCAvICh1cFRhbiArIGRvd25UYW4pOworICAg
IGRvdWJsZSBpbnZEZXB0aCA9IDEuMCAvIChkZXB0aE5lYXIgLSBkZXB0aEZhcik7CisKKyAgICBy
ZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoeFNjYWxlLCAwLjBmLCAwLjBmLCAwLjBmLAorICAg
ICAgICAwLjBmLCB5U2NhbGUsIDAuMGYsIDAuMGYsCisgICAgICAgIChsZWZ0VGFuIC0gcmlnaHRU
YW4pICogeFNjYWxlICogLTAuNSwgKHVwVGFuIC0gZG93blRhbikgKiB5U2NhbGUgKiAwLjUsIChk
ZXB0aE5lYXIgKyBkZXB0aEZhcikgKiBpbnZEZXB0aCwgLTEuMGYsCisgICAgICAgIDAuMGYsIDAu
MGYsICgyLjBmICogZGVwdGhGYXIgKiBkZXB0aE5lYXIpICogaW52RGVwdGgsIDAuMGYpOworfQor
CitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZnJvbVByb2plY3Rp
b24oZG91YmxlIGZvdnksIGRvdWJsZSBhc3BlY3QsIGRvdWJsZSBkZXB0aE5lYXIsIGRvdWJsZSBk
ZXB0aEZhcikKK3sKKyAgICBkb3VibGUgZiA9IDEuMGYgLyB0YW5mKGZvdnkgLyAyKTsKKyAgICBk
b3VibGUgaW52RGVwdGggPSAxLjBmIC8gKGRlcHRoTmVhciAtIGRlcHRoRmFyKTsKKworICAgIHJl
dHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeChmIC8gYXNwZWN0LCAwLjBmLCAwLjBmLCAwLjBmLAor
ICAgICAgICAwLjBmLCBmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAwLjBmLCAoZGVwdGhG
YXIgKyBkZXB0aE5lYXIpICogaW52RGVwdGgsIC0xLjBmLAorICAgICAgICAwLjBmLCAwLjBmLCAo
Mi4wZiAqIGRlcHRoRmFyICogZGVwdGhOZWFyKSAqIGludkRlcHRoLCAwLjBmKTsKK30KKwogVHJh
bnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZShkb3VibGUgcykK
IHsKICAgICByZXR1cm4gc2NhbGVOb25Vbmlmb3JtKHMsIHMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oCmluZGV4IDYwMGU3ZDBiMWNlMjZhN2MyNDIxZDU4NTYxY2M1NzRiMDRh
MTdiMjkuLjVmNzI1YWQ2NmVmNzcwOTFlOWZiMDY2MDk4YjhkYTc1OGY1YWY5MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
YXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTEyMSw2ICsxMjEsMTAgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21RdWF0ZXJuaW9uKGRvdWJs
ZSBxeCwgZG91YmxlIHF5LCBkb3VibGUgcXosIGRvdWJsZSBxdyk7CiAKKyAgICAvLyBGaWVsZCBv
ZiB2aWV3IGluIHJhZGlhbnMKKyAgICBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVBy
b2plY3Rpb24oZG91YmxlIGZvdlVwLCBkb3VibGUgZm92RG93biwgZG91YmxlIGZvdkxlZnQsIGRv
dWJsZSBmb3ZSaWdodCwgZG91YmxlIGRlcHRoTmVhciwgZG91YmxlIGRlcHRoRmFyKTsKKyAgICBz
dGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVByb2plY3Rpb24oZG91YmxlIGZvdnksIGRv
dWJsZSBhc3BlY3QsIGRvdWJsZSBkZXB0aE5lYXIsIGRvdWJsZSBkZXB0aEZhcik7CisKICAgICBz
dGF0aWMgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHk7CiAKICAgICB2b2lkIHNl
dE1hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUs
IGRvdWJsZSBmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IDQz
MjVmMzM3NWNmMzAyOGE0N2RmZmNjNmRmNTliYjc0MzgzNTAwZDUuLmUzNzIxZDg4NmVhOTlhMGRm
OTA4MmU1OGUyNTVjZDMyZDBmN2RlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC00Myw2ICs0NCwxMiBAQCBlbnVtIGNsYXNzIFJl
ZmVyZW5jZVNwYWNlVHlwZSB7CiAgICAgVW5ib3VuZGVkCiB9OwogCitlbnVtIGNsYXNzIEV5ZSB7
CisgICAgTm9uZSwKKyAgICBMZWZ0LAorICAgIFJpZ2h0LAorfTsKKwogI2lmIEVOQUJMRShXRUJY
UikKIAogY2xhc3MgVHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8VHJhY2tpbmdBbmRSZW5kZXJpbmdDbGllbnQ+IHsKQEAgLTc5LDI5ICs4Niw1MSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShSZWZlcmVu
Y2VTcGFjZVR5cGUpID0gMDsKIAogICAgIHN0cnVjdCBGcmFtZURhdGEgewotICAgICAgICBsb25n
IHByZWRpY3RlZERpc3BsYXlUaW1lOwotICAgICAgICBzdHJ1Y3QgVmlld0RhdGEgewotICAgICAg
ICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50M0QgcG9z
aXRpb247Ci0gICAgICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICAgICAgZmxv
YXQgeDsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgeTsKLSAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgejsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgdzsKLSAgICAgICAgICAgICAgICB9
IG9yaWVudGF0aW9uOwotICAgICAgICAgICAgfSBwb3NlOwotICAgICAgICAgICAgc3RydWN0IHsK
LSAgICAgICAgICAgICAgICBmbG9hdCByVXA7Ci0gICAgICAgICAgICAgICAgZmxvYXQgckRvd247
Ci0gICAgICAgICAgICAgICAgZmxvYXQgckxlZnQ7Ci0gICAgICAgICAgICAgICAgZmxvYXQgclJp
Z2h0OwotICAgICAgICAgICAgfSBmb3Y7CisgICAgICAgIHN0cnVjdCBGbG9hdFF1YXRlcm5pb24g
eworICAgICAgICAgICAgZmxvYXQgeCB7IDAuMGYgfTsKKyAgICAgICAgICAgIGZsb2F0IHkgeyAw
LjBmIH07CisgICAgICAgICAgICBmbG9hdCB6IHsgMC4wZiB9OworICAgICAgICAgICAgZmxvYXQg
dyB7IDEuMGYgfTsKKyAgICAgICAgfTsKKworICAgICAgICBzdHJ1Y3QgUG9zZSB7CisgICAgICAg
ICAgICBXZWJDb3JlOjpGbG9hdFBvaW50M0QgcG9zaXRpb247CisgICAgICAgICAgICBGbG9hdFF1
YXRlcm5pb24gb3JpZW50YXRpb247CiAgICAgICAgIH07Ci0gICAgICAgIFZlY3RvcjxWaWV3RGF0
YT4gdmlld1Bvc2VzOworCisgICAgICAgIHN0cnVjdCBGb3YgeworICAgICAgICAgICAgLy8gSW4g
cmFkaWFucworICAgICAgICAgICAgZmxvYXQgdXAgeyAwLjBmIH07CisgICAgICAgICAgICBmbG9h
dCBkb3duIHsgMC4wZiB9OworICAgICAgICAgICAgZmxvYXQgbGVmdCB7IDAuMGYgfTsKKyAgICAg
ICAgICAgIGZsb2F0IHJpZ2h0IHsgMC4wZiB9OworICAgICAgICB9OworCisgICAgICAgIHVzaW5n
IFByb2plY3Rpb24gPSBWYXJpYW50PEZvdiwgc3RkOjphcnJheTxmbG9hdCwgMTY+LCBzdGQ6Om51
bGxwdHJfdD47CisKKyAgICAgICAgc3RydWN0IFZpZXcgeworICAgICAgICAgICAgUG9zZSBvZmZz
ZXQ7CisgICAgICAgICAgICBQcm9qZWN0aW9uIHByb2plY3Rpb24gPSB7IG51bGxwdHIgfTsKKyAg
ICAgICAgfTsKKworICAgICAgICBib29sIGlzVHJhY2tpbmdWYWxpZCB7IGZhbHNlIH07CisgICAg
ICAgIGJvb2wgaXNQb3NpdGlvblZhbGlkIHsgZmFsc2UgfTsKKyAgICAgICAgYm9vbCBpc1Bvc2l0
aW9uRW11bGF0ZWQgeyBmYWxzZSB9OworICAgICAgICBsb25nIHByZWRpY3RlZERpc3BsYXlUaW1l
IHsgMCB9OworICAgICAgICBQb3NlIG9yaWdpbjsKKyAgICAgICAgT3B0aW9uYWw8UG9zZT4gZmxv
b3JUcmFuc2Zvcm07CisgICAgICAgIFZlY3RvcjxWaWV3PiB2aWV3czsKKyAgICB9OworCisgICAg
c3RydWN0IFZpZXdEYXRhIHsKKyAgICAgICAgYm9vbCBhY3RpdmUgeyBmYWxzZSB9OworICAgICAg
ICBFeWUgZXllIHsgRXllOjpOb25lIH07CiAgICAgfTsKKworICAgIHZpcnR1YWwgVmVjdG9yPFZp
ZXdEYXRhPiB2aWV3cyhTZXNzaW9uTW9kZSkgY29uc3QgPSAwOworCiAgICAgdXNpbmcgUmVxdWVz
dEZyYW1lQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKEZyYW1lRGF0YSYmKT47CiAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSA9IDA7Ci0KIHByb3Rl
Y3RlZDoKICAgICBEZXZpY2UoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcAppbmRleCBjYzRkNzIx
NTNjNmVlYWZkZjIxNjJlOTg4MmE5ZTA3NzU4YjIxZGY3Li5iOTRlODcxZjU3Yjg5N2M3ZTQ4NDlh
NDdmNGE2NGMzMzMwZDZkMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCkBAIC0yOTksNiArMjk5LDI4IEBAIERl
dmljZTo6TGlzdE9mRW5hYmxlZEZlYXR1cmVzIE9wZW5YUkRldmljZTo6ZW51bWVyYXRlUmVmZXJl
bmNlU3BhY2VzKFhyU2Vzc2lvbiYKICAgICByZXR1cm4gZW5hYmxlZEZlYXR1cmVzOwogfQogCitY
clNwYWNlIE9wZW5YUkRldmljZTo6Y3JlYXRlUmVmZXJlbmNlU3BhY2UoWHJSZWZlcmVuY2VTcGFj
ZVR5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1
ZS5ydW5Mb29wKCkpOworICAgIEFTU0VSVChtX3Nlc3Npb24gIT0gWFJfTlVMTF9IQU5ETEUpOwor
ICAgIEFTU0VSVChtX2luc3RhbmNlICE9IFhSX05VTExfSEFORExFKTsKKworICAgIFhyUG9zZWYg
aWRlbnRpdHlQb3NlIHsKKyAgICAgICAgLm9yaWVudGF0aW9uID0geyAueCA9IDAsIC55ID0gMCwg
LnogPSAwLCAudyA9IDEuMCB9LAorICAgICAgICAucG9zaXRpb24gPSB7IC54ID0gMCwgLnkgPSAw
LCAueiA9IDAgfQorICAgIH07CisKKyAgICBhdXRvIHNwYWNlQ3JlYXRlSW5mbyA9IGNyZWF0ZVN0
cnVjdHVyZTxYclJlZmVyZW5jZVNwYWNlQ3JlYXRlSW5mbywgWFJfVFlQRV9SRUZFUkVOQ0VfU1BB
Q0VfQ1JFQVRFX0lORk8+KCk7CisgICAgc3BhY2VDcmVhdGVJbmZvLnJlZmVyZW5jZVNwYWNlVHlw
ZSA9IHR5cGU7CisgICAgc3BhY2VDcmVhdGVJbmZvLnBvc2VJblJlZmVyZW5jZVNwYWNlID0gaWRl
bnRpdHlQb3NlOworCisgICAgWHJTcGFjZSBzcGFjZTsKKyAgICBhdXRvIHJlc3VsdCA9IHhyQ3Jl
YXRlUmVmZXJlbmNlU3BhY2UobV9zZXNzaW9uLCAmc3BhY2VDcmVhdGVJbmZvLCAmc3BhY2UpOwor
ICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJDcmVhdGVSZWZlcmVuY2VTcGFjZSIsIG1f
aW5zdGFuY2UsIFhSX05VTExfSEFORExFKTsKKworICAgIHJldHVybiBzcGFjZTsKK30KKwogdm9p
ZCBPcGVuWFJEZXZpY2U6OmNvbGxlY3RTdXBwb3J0ZWRTZXNzaW9uTW9kZXMoKQogewogICAgIEFT
U0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CkBAIC0zNjgs
MTUgKzM5MCw2IEBAIHZvaWQgT3BlblhSRGV2aWNlOjpjb2xsZWN0Q29uZmlndXJhdGlvblZpZXdz
KCkKICAgICB9CiB9CiAKLVdlYkNvcmU6OkludFNpemUgT3BlblhSRGV2aWNlOjpyZWNvbW1lbmRl
ZFJlc29sdXRpb24oU2Vzc2lvbk1vZGUgbW9kZSkKLXsKLSAgICBhdXRvIGNvbmZpZ1R5cGUgPSBt
b2RlID09IFNlc3Npb25Nb2RlOjpJbmxpbmUgPyBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9Q
UklNQVJZX01PTk8gOiBYUl9WSUVXX0NPTkZJR1VSQVRJT05fVFlQRV9QUklNQVJZX1NURVJFTzsK
LSAgICBhdXRvIHZpZXdzSXRlcmF0b3IgPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5maW5kKGNvbmZp
Z1R5cGUpOwotICAgIGlmICh2aWV3c0l0ZXJhdG9yICE9IG1fY29uZmlndXJhdGlvblZpZXdzLmVu
ZCgpKQotICAgICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZh
bHVlWzBdLnJlY29tbWVuZGVkSW1hZ2VSZWN0V2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdz
SXRlcmF0b3ItPnZhbHVlWzBdLnJlY29tbWVuZGVkSW1hZ2VSZWN0SGVpZ2h0KSB9OwotICAgIHJl
dHVybiBEZXZpY2U6OnJlY29tbWVuZGVkUmVzb2x1dGlvbihtb2RlKTsKLX0KLQogWHJWaWV3Q29u
ZmlndXJhdGlvblR5cGUgdG9YclZpZXdDb25maWd1cmF0aW9uVHlwZShTZXNzaW9uTW9kZSBtb2Rl
KQogewogICAgIHN3aXRjaCAobW9kZSkgewpAQCAtNDAwLDYgKzQxMywxNSBAQCBzdGF0aWMgYm9v
bCBpc1Nlc3Npb25SZWFkeShYclNlc3Npb25TdGF0ZSBzdGF0ZSkKICAgICByZXR1cm4gc3RhdGUg
Pj0gWFJfU0VTU0lPTl9TVEFURV9SRUFEWSAgJiYgc3RhdGUgPCBYUl9TRVNTSU9OX1NUQVRFX1NU
T1BQSU5HOwogfQogCitXZWJDb3JlOjpJbnRTaXplIE9wZW5YUkRldmljZTo6cmVjb21tZW5kZWRS
ZXNvbHV0aW9uKFNlc3Npb25Nb2RlIG1vZGUpCit7CisgICAgYXV0byBjb25maWdUeXBlID0gdG9Y
clZpZXdDb25maWd1cmF0aW9uVHlwZShtb2RlKTsKKyAgICBhdXRvIHZpZXdzSXRlcmF0b3IgPSBt
X2NvbmZpZ3VyYXRpb25WaWV3cy5maW5kKGNvbmZpZ1R5cGUpOworICAgIGlmICh2aWV3c0l0ZXJh
dG9yICE9IG1fY29uZmlndXJhdGlvblZpZXdzLmVuZCgpKQorICAgICAgICByZXR1cm4geyBzdGF0
aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZhbHVlWzBdLnJlY29tbWVuZGVkSW1hZ2VSZWN0
V2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdzSXRlcmF0b3ItPnZhbHVlWzBdLnJlY29tbWVu
ZGVkSW1hZ2VSZWN0SGVpZ2h0KSB9OworICAgIHJldHVybiBEZXZpY2U6OnJlY29tbWVuZGVkUmVz
b2x1dGlvbihtb2RlKTsKK30KKwogdm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVUcmFja2lu
Z0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSBtb2RlKQogewogICAgIG1fcXVldWUuZGlzcGF0Y2go
W3RoaXMsIG1vZGVdKCkgewpAQCAtNDE0LDYgKzQzNiw5IEBAIHZvaWQgT3BlblhSRGV2aWNlOjpp
bml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUgbW9kZSkKICAgICAgICAg
c2Vzc2lvbkNyZWF0ZUluZm8uc3lzdGVtSWQgPSBtX3N5c3RlbUlkOwogICAgICAgICBhdXRvIHJl
c3VsdCA9IHhyQ3JlYXRlU2Vzc2lvbihtX2luc3RhbmNlLCAmc2Vzc2lvbkNyZWF0ZUluZm8sICZt
X3Nlc3Npb24pOwogICAgICAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyRW51bWVyYXRl
SW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIiwgbV9pbnN0YW5jZSk7CisKKyAgICAgICAgbV9s
b2NhbFNwYWNlID0gY3JlYXRlUmVmZXJlbmNlU3BhY2UoWFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVf
TE9DQUwpOworICAgICAgICBtX3ZpZXdTcGFjZSA9IGNyZWF0ZVJlZmVyZW5jZVNwYWNlKFhSX1JF
RkVSRU5DRV9TUEFDRV9UWVBFX1ZJRVcpOwogICAgIH0pOwogfQogCkBAIC00NTcsNiArNDgyLDEy
IEBAIHZvaWQgT3BlblhSRGV2aWNlOjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkKICAg
ICB9KTsKIH0KIAordm9pZCBPcGVuWFJEZXZpY2U6OmluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQ
bGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUgc3BhY2VUeXBlKQoreworICAgIGlmICgoc3Bh
Y2VUeXBlID09IFJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxGbG9vciB8fCBzcGFjZVR5cGUgPT0g
UmVmZXJlbmNlU3BhY2VUeXBlOjpCb3VuZGVkRmxvb3IpICYmIG1fc3RhZ2VTcGFjZSA9PSBYUl9O
VUxMX0hBTkRMRSkKKyAgICAgICAgbV9zdGFnZVNwYWNlID0gY3JlYXRlUmVmZXJlbmNlU3BhY2Uo
WFJfUkVGRVJFTkNFX1NQQUNFX1RZUEVfU1RBR0UpOworfQorCiB2b2lkIE9wZW5YUkRldmljZTo6
d2FpdFVudGlsU3RvcHBpbmcoKQogewogICAgIEFTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09
ICZtX3F1ZXVlLnJ1bkxvb3AoKSk7CkBAIC01MjYsMTQgKzU1NywyMCBAQCB2b2lkIE9wZW5YUkRl
dmljZTo6ZW5kU2Vzc2lvbigpCiAgICAgfSk7CiB9CiAKK3N0YXRpYyBEZXZpY2U6OkZyYW1lRGF0
YTo6UG9zZSBYclBvc2VmVG9Qb3NlKFhyUG9zZWYgcG9zZSkKK3sKKyAgICBEZXZpY2U6OkZyYW1l
RGF0YTo6UG9zZSByZXN1bHQ7CisgICAgcmVzdWx0Lm9yaWVudGF0aW9uID0geyBwb3NlLm9yaWVu
dGF0aW9uLngsIHBvc2Uub3JpZW50YXRpb24ueSwgcG9zZS5vcmllbnRhdGlvbi56LCBwb3NlLm9y
aWVudGF0aW9uLncgfTsKKyAgICByZXN1bHQucG9zaXRpb24gPSB7IHBvc2UucG9zaXRpb24ueCwg
cG9zZS5wb3NpdGlvbi55LCBwb3NlLnBvc2l0aW9uLnogfTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQogCi1EZXZpY2U6OkZyYW1lRGF0YTo6Vmlld0RhdGEgeHJWaWV3VG9WaWV3RGF0YShYclZpZXcg
dmlldykKK3N0YXRpYyBEZXZpY2U6OkZyYW1lRGF0YTo6VmlldyB4clZpZXdUb1Bvc2UoWHJWaWV3
IHZpZXcpCiB7Ci0gICAgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXdEYXRhIGRhdGE7Ci0gICAgZGF0
YS5mb3YgPSB7IHZpZXcuZm92LmFuZ2xlVXAsIHZpZXcuZm92LmFuZ2xlRG93biwgdmlldy5mb3Yu
YW5nbGVMZWZ0LCB2aWV3LmZvdi5hbmdsZVJpZ2h0IH07Ci0gICAgZGF0YS5wb3NlLm9yaWVudGF0
aW9uID0geyB2aWV3LnBvc2Uub3JpZW50YXRpb24ueCwgdmlldy5wb3NlLm9yaWVudGF0aW9uLnks
IHZpZXcucG9zZS5vcmllbnRhdGlvbi56LCB2aWV3LnBvc2Uub3JpZW50YXRpb24udyB9OwotICAg
IGRhdGEucG9zZS5wb3NpdGlvbiA9IHsgdmlldy5wb3NlLnBvc2l0aW9uLngsIHZpZXcucG9zZS5w
b3NpdGlvbi55LCB2aWV3LnBvc2UucG9zaXRpb24ueiB9OwotICAgIHJldHVybiBkYXRhOworICAg
IERldmljZTo6RnJhbWVEYXRhOjpWaWV3IHBvc2U7CisgICAgcG9zZS5wcm9qZWN0aW9uID0gRGV2
aWNlOjpGcmFtZURhdGE6OkZvdiB7IHZpZXcuZm92LmFuZ2xlVXAsIHZpZXcuZm92LmFuZ2xlRG93
biwgdmlldy5mb3YuYW5nbGVMZWZ0LCB2aWV3LmZvdi5hbmdsZVJpZ2h0IH07CisgICAgcG9zZS5v
ZmZzZXQgPSBYclBvc2VmVG9Qb3NlKHZpZXcucG9zZSk7CisgICAgcmV0dXJuIHBvc2U7CiB9CiAK
IHZvaWQgT3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBj
YWxsYmFjaykKQEAgLTU2MiwxMyArNTk5LDIyIEBAIHZvaWQgT3BlblhSRGV2aWNlOjpyZXF1ZXN0
RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICAgICAgZnJhbWVEYXRh
LnByZWRpY3RlZERpc3BsYXlUaW1lID0gZnJhbWVTdGF0ZS5wcmVkaWN0ZWREaXNwbGF5VGltZTsK
IAogICAgICAgICBpZiAoaXNTZXNzaW9uQWN0aXZlKG1fc2Vzc2lvblN0YXRlKSkgeworICAgICAg
ICAgICAgLy8gUXVlcnkgaGVhZCBsb2NhdGlvbgorICAgICAgICAgICAgYXV0byBsb2NhdGlvbiA9
IGNyZWF0ZVN0cnVjdHVyZTxYclNwYWNlTG9jYXRpb24sIFhSX1RZUEVfU1BBQ0VfTE9DQVRJT04+
KCk7CisgICAgICAgICAgICB4ckxvY2F0ZVNwYWNlKG1fdmlld1NwYWNlLCBtX2xvY2FsU3BhY2Us
IGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRpbWUsICZsb2NhdGlvbik7CisgICAgICAgICAg
ICBmcmFtZURhdGEuaXNUcmFja2luZ1ZhbGlkID0gbG9jYXRpb24ubG9jYXRpb25GbGFncyAmIFhS
X1NQQUNFX0xPQ0FUSU9OX09SSUVOVEFUSU9OX1ZBTElEX0JJVDsKKyAgICAgICAgICAgIGZyYW1l
RGF0YS5pc1Bvc2l0aW9uVmFsaWQgPSBsb2NhdGlvbi5sb2NhdGlvbkZsYWdzICYgWFJfU1BBQ0Vf
TE9DQVRJT05fUE9TSVRJT05fVkFMSURfQklUOworICAgICAgICAgICAgZnJhbWVEYXRhLmlzUG9z
aXRpb25FbXVsYXRlZCA9IGxvY2F0aW9uLmxvY2F0aW9uRmxhZ3MgJiBYUl9TUEFDRV9MT0NBVElP
Tl9QT1NJVElPTl9UUkFDS0VEX0JJVDsKKworICAgICAgICAgICAgaWYgKGZyYW1lRGF0YS5pc1Ry
YWNraW5nVmFsaWQpCisgICAgICAgICAgICAgICAgZnJhbWVEYXRhLm9yaWdpbiA9IFhyUG9zZWZU
b1Bvc2UobG9jYXRpb24ucG9zZSk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIEFTU0VSVCht
X2NvbmZpZ3VyYXRpb25WaWV3cy5jb250YWlucyhtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5
cGUpKTsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGNvbmZpZ3VyYXRpb25WaWV3ID0gbV9jb25m
aWd1cmF0aW9uVmlld3MuZ2V0KG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlwZSk7CiAKICAg
ICAgICAgICAgIGF1dG8gdmlld0xvY2F0ZUluZm8gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJWaWV3TG9j
YXRlSW5mbywgWFJfVFlQRV9WSUVXX0xPQ0FURV9JTkZPPigpOwogICAgICAgICAgICAgdmlld0xv
Y2F0ZUluZm8uZGlzcGxheVRpbWUgPSBwcmVkaWN0ZWRUaW1lOwotICAgICAgICAgICAgLy8gRklY
TUU6IHVzZSB0aGUgY3VycmVudCByZWZlcmVuY2Ugc3BhY2UuCi0gICAgICAgICAgICAvLyB2aWV3
TG9jYXRlSW5mby5zcGFjZSA9IG1fbG9jYWxTcGFjZTsKKyAgICAgICAgICAgIHZpZXdMb2NhdGVJ
bmZvLnNwYWNlID0gbV9sb2NhbFNwYWNlOwogCiAgICAgICAgICAgICB1aW50MzJfdCB2aWV3Q291
bnQgPSBjb25maWd1cmF0aW9uVmlldy5zaXplKCk7CiAgICAgICAgICAgICBWZWN0b3I8WHJWaWV3
PiB2aWV3cyh2aWV3Q291bnQsIFtdIHsKQEAgLTU4Myw3ICs2MjksMTQgQEAgdm9pZCBPcGVuWFJE
ZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQogICAg
ICAgICAgICAgcmVzdWx0ID0geHJMb2NhdGVWaWV3cyhtX3Nlc3Npb24sICZ2aWV3TG9jYXRlSW5m
bywgJnZpZXdTdGF0ZSwgdmlld0NvdW50LCAmdmlld0NvdW50T3V0cHV0LCB2aWV3cy5kYXRhKCkp
OwogICAgICAgICAgICAgaWYgKCFYUl9GQUlMRUQocmVzdWx0KSkgewogICAgICAgICAgICAgICAg
IGZvciAoYXV0byYgdmlldyA6IHZpZXdzKQotICAgICAgICAgICAgICAgICAgICBmcmFtZURhdGEu
dmlld1Bvc2VzLmFwcGVuZCh4clZpZXdUb1ZpZXdEYXRhKHZpZXcpKTsKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWVEYXRhLnZpZXdzLmFwcGVuZCh4clZpZXdUb1Bvc2UodmlldykpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBRdWVyeSBmbG9vciB0cmFuc2Zvcm0KKyAgICAgICAg
ICAgIGlmIChtX3N0YWdlU3BhY2UgIT0gWFJfTlVMTF9IQU5ETEUpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGZsb29yTG9jYXRpb24gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTcGFjZUxvY2F0aW9uLCBY
Ul9UWVBFX1NQQUNFX0xPQ0FUSU9OPigpOworICAgICAgICAgICAgICAgIHhyTG9jYXRlU3BhY2Uo
bV9zdGFnZVNwYWNlLCBtX2xvY2FsU3BhY2UsIGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRp
bWUsICZmbG9vckxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBmcmFtZURhdGEuZmxvb3JUcmFu
c2Zvcm0gPSB7IFhyUG9zZWZUb1Bvc2UoZmxvb3JMb2NhdGlvbi5wb3NlKSB9OwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTYwMCw2ICs2NTMsMjEgQEAgdm9pZCBPcGVuWFJEZXZpY2U6
OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIH0pOwog
fQogCitWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gT3BlblhSRGV2aWNlOjp2aWV3cyhTZXNzaW9u
TW9kZSBtb2RlKSBjb25zdAoreworICAgIFZlY3RvcjxEZXZpY2U6OlZpZXdEYXRhPiB2aWV3czsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb25UeXBlID0gdG9YclZpZXdDb25maWd1cmF0aW9uVHlwZSht
b2RlKTsKKworICAgIGlmIChjb25maWd1cmF0aW9uVHlwZSA9PSBYUl9WSUVXX0NPTkZJR1VSQVRJ
T05fVFlQRV9QUklNQVJZX01PTk8pCisgICAgICAgIHZpZXdzLmFwcGVuZCh7IC5hY3RpdmUgPSB0
cnVlLCAuZXllID0gRXllOjpOb25lIH0pOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoY29u
ZmlndXJhdGlvblR5cGUgPT0gWFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9TVEVS
RU8pOworICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpMZWZ0IH0p
OworICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZlID0gdHJ1ZSwgRXllOjpSaWdodCB9KTsK
KyAgICB9CisgICAgcmV0dXJuIHZpZXdzOworfQorCiB9IC8vIG5hbWVzcGFjZSBQbGF0Zm9ybVhS
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpICYmIFVTRShPUEVOWFIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAppbmRleCA1
YmViZTY5NjY5MzI3ZGIyYzgxNWI1NTZhZWRkMWNhOTliNDZlMTc2Li4wMmQxOTRlNjI3MWViYTZi
MmE4NDQ4NzAyNzk1YTYwOWVhMjkwNzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKQEAgLTUxLDEyICs1MSwxMyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY29sbGVjdENvbmZpZ3VyYXRpb25WaWV3cygpOwogCiAgICAgTGlz
dE9mRW5hYmxlZEZlYXR1cmVzIGVudW1lcmF0ZVJlZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mKSBj
b25zdDsKLSAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShSZWZlcmVuY2VTcGFjZVR5
cGUpIGZpbmFsIHsgfTsKKyAgICBYclNwYWNlIGNyZWF0ZVJlZmVyZW5jZVNwYWNlKFhyUmVmZXJl
bmNlU3BhY2VUeXBlKTsKIAogICAgIFdlYkNvcmU6OkludFNpemUgcmVjb21tZW5kZWRSZXNvbHV0
aW9uKFNlc3Npb25Nb2RlKSBmaW5hbDsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5k
UmVuZGVyaW5nKFNlc3Npb25Nb2RlKSBmaW5hbDsKICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdB
bmRSZW5kZXJpbmcoKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQ
bGF0Zm9ybVhSOjpSZWZlcmVuY2VTcGFjZVR5cGUpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNT
ZXNzaW9uU2h1dGRvd25Ob3RpZmljYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCB3YWl0VW50aWxTdG9wcGluZygpOwogCkBAIC02OCw2ICs2OSw4IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5h
bDsKIAorICAgIFZlY3RvcjxWaWV3RGF0YT4gdmlld3MoU2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFs
OworCiAgICAgdXNpbmcgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzTWFwID0gSGFzaE1hcDxY
clZpZXdDb25maWd1cmF0aW9uVHlwZSwgWHJWaWV3Q29uZmlndXJhdGlvblByb3BlcnRpZXMsIElu
dEhhc2g8WHJWaWV3Q29uZmlndXJhdGlvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRz
PFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPj47CiAgICAgVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0
aWVzTWFwIG1fdmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzOwogICAgIHVzaW5nIFZpZXdDb25m
aWd1cmF0aW9uVmlld3NNYXAgPSBIYXNoTWFwPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlLCBWZWN0
b3I8WHJWaWV3Q29uZmlndXJhdGlvblZpZXc+LCBJbnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRpb25U
eXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4+
OwpAQCAtODEsNiArODQsOSBAQCBwcml2YXRlOgogICAgIFdvcmtRdWV1ZSYgbV9xdWV1ZTsKIAog
ICAgIFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlIG1fY3VycmVudFZpZXdDb25maWd1cmF0aW9uVHlw
ZTsKKyAgICBYclNwYWNlIG1fbG9jYWxTcGFjZSB7IFhSX05VTExfSEFORExFIH07CisgICAgWHJT
cGFjZSBtX3ZpZXdTcGFjZSB7IFhSX05VTExfSEFORExFIH07CisgICAgWHJTcGFjZSBtX3N0YWdl
U3BhY2UgeyBYUl9OVUxMX0hBTkRMRSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUGxhdGZvcm1Y
UgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCmluZGV4IDU0MDE4
ZGE3ZWJiNTNkZDUxOTQyZGU3NjYxNDk2NzJmZjFhYzg0NTcuLmUyOTlkNWIxMzVjNWNmYzlkZGIy
YTk1Yjk3ZDU1MzA3MjExODBlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VY
UkRldmljZS5jcHAKQEAgLTMyLDE0ICszMiwyMCBAQAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCiAjaW5jbHVkZSAiV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgRmFrZVhS
RnJhbWVUaW1lID0gMTVfbXM7CiAKLXZvaWQgRmFrZVhSVmlldzo6c2V0RmllbGRPZlZpZXcoRmFr
ZVhSVmlld0luaXQ6OkZpZWxkT2ZWaWV3SW5pdCBmb3YpCit2b2lkIEZha2VYUlZpZXc6OnNldFBy
b2plY3Rpb24oY29uc3QgVmVjdG9yPGZsb2F0PiYgcHJvamVjdGlvbikKIHsKLSAgICBtX2ZvdiA9
IGZvdjsKKyAgICBzdGQ6OmNvcHkoc3RkOjpiZWdpbihwcm9qZWN0aW9uKSwgc3RkOjplbmQocHJv
amVjdGlvbiksIHN0ZDo6YmVnaW4obV9wcm9qZWN0aW9uKSk7Cit9CisKK3ZvaWQgRmFrZVhSVmll
dzo6c2V0RmllbGRPZlZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQ6OkZpZWxkT2ZWaWV3SW5pdCYg
Zm92KQoreworICAgIG1fZm92ID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZvdiB7
IGRlZzJyYWQoZm92LnVwRGVncmVlcyksIGRlZzJyYWQoZm92LmRvd25EZWdyZWVzKSwgZGVnMnJh
ZChmb3YubGVmdERlZ3JlZXMpLCBkZWcycmFkKGZvdi5yaWdodERlZ3JlZXMpIH07CiB9CiAKIFNp
bXVsYXRlZFhSRGV2aWNlOjpTaW11bGF0ZWRYUkRldmljZSgpCkBAIC03NCwzMSArODAsNzAgQEAg
dm9pZCBTaW11bGF0ZWRYUkRldmljZTo6c3RvcFRpbWVyKCkKIAogdm9pZCBTaW11bGF0ZWRYUkRl
dmljZTo6ZnJhbWVUaW1lckZpcmVkKCkKIHsKLSAgICBhdXRvIGNhbGxiYWNrcyA9IFdURk1vdmUo
bV9jYWxsYmFja3MpOwotICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCi0gICAg
ICAgIGNhbGxiYWNrKHsgfSk7CisgICAgYXV0byB1cGRhdGVzID0gV1RGTW92ZShtX3BlbmRpbmdV
cGRhdGVzKTsKKyAgICBmb3IgKGF1dG8mIHVwZGF0ZSA6IHVwZGF0ZXMpCisgICAgICAgIHVwZGF0
ZSgpOworCisgICAgRnJhbWVEYXRhIGRhdGE7CisgICAgaWYgKG1fdmlld2VyT3JpZ2luKSB7Cisg
ICAgICAgIGRhdGEub3JpZ2luID0gKm1fdmlld2VyT3JpZ2luOworICAgICAgICBkYXRhLmlzVHJh
Y2tpbmdWYWxpZCA9IHRydWU7CisgICAgICAgIGRhdGEuaXNQb3NpdGlvblZhbGlkID0gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAobV9mbG9vck9yaWdpbikKKyAgICAgICAgZGF0YS5mbG9vclRyYW5z
Zm9ybSA9IHsgKm1fZmxvb3JPcmlnaW4gfTsKKworICAgIGZvciAoYXV0byYgZmFrZVZpZXcgOiBt
X3ZpZXdzKSB7CisgICAgICAgIEZyYW1lRGF0YTo6VmlldyB2aWV3OworICAgICAgICB2aWV3Lm9m
ZnNldCA9IGZha2VWaWV3LT5vZmZzZXQoKTsKKyAgICAgICAgaWYgKGZha2VWaWV3LT5maWVsZE9m
VmlldygpLmhhc1ZhbHVlKCkpCisgICAgICAgICAgICB2aWV3LnByb2plY3Rpb24gPSB7ICpmYWtl
Vmlldy0+ZmllbGRPZlZpZXcoKSB9OworICAgICAgICBlbHNlCisgICAgICAgICAgICB2aWV3LnBy
b2plY3Rpb24gPSB7IGZha2VWaWV3LT5wcm9qZWN0aW9uKCkgfTsKKyAgICAgICAgCisgICAgICAg
IGRhdGEudmlld3MuYXBwZW5kKHZpZXcpOworICAgIH0KKworICAgIGlmIChtX0ZyYW1lQ2FsbGJh
Y2spCisgICAgICAgIG1fRnJhbWVDYWxsYmFjayhXVEZNb3ZlKGRhdGEpKTsKIH0KIAogdm9pZCBT
aW11bGF0ZWRYUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICBtX0ZyYW1lQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKICAgICBpZiAoIW1fZnJhbWVU
aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2ZyYW1lVGltZXIuc3RhcnRPbmVTaG90KEZha2VY
UkZyYW1lVGltZSk7CiB9CiAKK1ZlY3RvcjxQbGF0Zm9ybVhSOjpEZXZpY2U6OlZpZXdEYXRhPiBT
aW11bGF0ZWRYUkRldmljZTo6dmlld3MoUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGUgbW9kZSkgY29u
c3QKK3sKKyAgICBpZiAobW9kZSA9PSBQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJzaXZl
VnIpCisgICAgICAgIHJldHVybiB7IHsgLmFjdGl2ZSA9IHRydWUsIFBsYXRmb3JtWFI6OkV5ZTo6
TGVmdCB9LCB7IC5hY3RpdmUgPSB0cnVlLCBQbGF0Zm9ybVhSOjpFeWU6OlJpZ2h0IH0gfTsKKwor
ICAgIHJldHVybiB7IHsgLmFjdGl2ZSA9IHRydWUsIFBsYXRmb3JtWFI6OkV5ZTo6Tm9uZSB9IH07
Cit9CisKK3ZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnNjaGVkdWxlT25OZXh0RnJhbWUoRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmMpCit7CisgICAgbV9wZW5kaW5nVXBkYXRlcy5hcHBlbmQoV1RGTW92
ZShmdW5jKSk7Cit9CisKIFdlYkZha2VYUkRldmljZTo6V2ViRmFrZVhSRGV2aWNlKCkgPSBkZWZh
dWx0OwogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6c2V0Vmlld3MoY29uc3QgVmVjdG9yPEZha2VY
UlZpZXdJbml0PiYgdmlld3MpCiB7Ci0gICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4mIGRldmlj
ZVZpZXdzID0gbV9kZXZpY2Uudmlld3MoKTsKLSAgICBkZXZpY2VWaWV3cy5jbGVhcigpOworICAg
IG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoW3RoaXMsIHZpZXdzXSgpIHsKKyAgICAgICAg
VmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4gZGV2aWNlVmlld3M7CiAKLSAgICAvLyBUT0RPOiBkbyBp
biBuZXh0IGFuaW1hdGlvbiBmcmFtZS4KLSAgICBmb3IgKGF1dG8mIHZpZXdJbml0IDogdmlld3Mp
IHsKLSAgICAgICAgYXV0byB2aWV3ID0gcGFyc2VWaWV3KHZpZXdJbml0KTsKLSAgICAgICAgaWYg
KCF2aWV3Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgZGV2aWNlVmlld3MuYXBwZW5kKHZp
ZXcucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiB2aWV3
SW5pdCA6IHZpZXdzKSB7CisgICAgICAgICAgICBhdXRvIHZpZXcgPSBwYXJzZVZpZXcodmlld0lu
aXQpOworICAgICAgICAgICAgaWYgKCF2aWV3Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAg
ICAgIGRldmljZVZpZXdzLmFwcGVuZCh2aWV3LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIG1fZGV2aWNlLnNldFZpZXdzKFdURk1vdmUoZGV2aWNlVmlld3MpKTsK
KyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OmRpc2Nvbm5lY3QoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKQEAgLTEwOCw0MyArMTUzLDUxIEBAIHZvaWQgV2Vi
RmFrZVhSRGV2aWNlOjpkaXNjb25uZWN0KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3ZXJPcmlnaW4oRmFrZVhSUmlnaWRU
cmFuc2Zvcm1Jbml0IG9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQogewotICAgIGF1dG8g
cmlnaWRUcmFuc2Zvcm0gPSBwYXJzZVJpZ2lkVHJhbnNmb3JtKG9yaWdpbik7Ci0gICAgaWYgKHJp
Z2lkVHJhbnNmb3JtLmhhc0V4Y2VwdGlvbigpKQorICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VSaWdp
ZFRyYW5zZm9ybShvcmlnaW4pOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9uIGZyYW1lLgot
ICAgIG1fZGV2aWNlLnNldFZpZXdlck9yaWdpbihyaWdpZFRyYW5zZm9ybS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSk7Ci0gICAgbV9kZXZpY2Uuc2V0RW11bGF0ZWRQb3NpdGlvbihlbXVsYXRlZFBvc2l0
aW9uKTsKKyAgICBhdXRvIHBvc2UgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAg
ICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzLCBwb3NlID0gV1RGTW92ZShwb3Nl
KSwgZW11bGF0ZWRQb3NpdGlvbl0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9kZXZpY2Uuc2V0Vmll
d2VyT3JpZ2luKFdURk1vdmUocG9zZSkpOworICAgICAgICBtX2RldmljZS5zZXRFbXVsYXRlZFBv
c2l0aW9uKGVtdWxhdGVkUG9zaXRpb24pOworICAgIH0pOwogfQogCiB2b2lkIFdlYkZha2VYUkRl
dmljZTo6Y2xlYXJWaWV3ZXJPcmlnaW4oKQogewotICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5p
bWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNldFZpZXdlck9yaWdpbihudWxscHRyKTsKKyAg
ICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzXSgpIHsKKyAgICAgICAgbV9kZXZp
Y2Uuc2V0Vmlld2VyT3JpZ2luKFdURjo6bnVsbG9wdCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2Vi
RmFrZVhSRGV2aWNlOjpzaW11bGF0ZVZpc2liaWxpdHlDaGFuZ2UoWFJWaXNpYmlsaXR5U3RhdGUp
CiB7CiB9CiAKLXZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRCb3VuZHNHZW9tZXRyeShWZWN0b3I8
RmFrZVhSQm91bmRzUG9pbnQ+KQordm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNldEJvdW5kc0dlb21l
dHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4mJikKIHsKIH0KIAogdm9pZCBXZWJGYWtlWFJE
ZXZpY2U6OnNldEZsb29yT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBvcmlnaW4pCiB7
Ci0gICAgYXV0byByaWdpZFRyYW5zZm9ybSA9IHBhcnNlUmlnaWRUcmFuc2Zvcm0ob3JpZ2luKTsK
LSAgICBpZiAocmlnaWRUcmFuc2Zvcm0uaGFzRXhjZXB0aW9uKCkpCisgICAgYXV0byByZXN1bHQg
PSBwYXJzZVJpZ2lkVHJhbnNmb3JtKG9yaWdpbik7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gVE9ETzogZG8gaW4gbmV4dCBhbmltYXRp
b24gZnJhbWUuCi0gICAgbV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4ocmlnaWRUcmFuc2Zvcm0ucmVs
ZWFzZVJldHVyblZhbHVlKCkpOworICAgIGF1dG8gcG9zZSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKworICAgIG1fZGV2aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoW3RoaXMsIHBvc2Ug
PSBXVEZNb3ZlKHBvc2UpXSgpIG11dGFibGUgeworICAgICAgICBtX2RldmljZS5zZXRGbG9vck9y
aWdpbihXVEZNb3ZlKHBvc2UpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6
OmNsZWFyRmxvb3JPcmlnaW4oKQogewotICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5pbWF0aW9u
IGZyYW1lLgotICAgIG1fZGV2aWNlLnNldEZsb29yT3JpZ2luKG51bGxwdHIpOworICAgIG1fZGV2
aWNlLnNjaGVkdWxlT25OZXh0RnJhbWUoW3RoaXNdKCkgeworICAgICAgICBtX2RldmljZS5zZXRG
bG9vck9yaWdpbihXVEY6Om51bGxvcHQpOworICAgIH0pOwogfQogCiB2b2lkIFdlYkZha2VYUkRl
dmljZTo6c2ltdWxhdGVSZXNldFBvc2UoKQpAQCAtMTU2LDIzICsyMDksMTYgQEAgUmVmPFdlYkZh
a2VYUklucHV0Q29udHJvbGxlcj4gV2ViRmFrZVhSRGV2aWNlOjpzaW11bGF0ZUlucHV0U291cmNl
Q29ubmVjdGlvbihGYWsKICAgICByZXR1cm4gV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpjcmVh
dGUoKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+PiBXZWJGYWtl
WFJEZXZpY2U6OnBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhSUmlnaWRUcmFuc2Zvcm1J
bml0JiBpbml0KQorRXhjZXB0aW9uT3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlBv
c2U+IFdlYkZha2VYUkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybShjb25zdCBGYWtlWFJSaWdp
ZFRyYW5zZm9ybUluaXQmIGluaXQpCiB7CiAgICAgaWYgKGluaXQucG9zaXRpb24uc2l6ZSgpICE9
IDMgfHwgaW5pdC5vcmllbnRhdGlvbi5zaXplKCkgIT0gNCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciB9OwogCi0gICAgRE9NUG9pbnRJbml0IHBvc2l0aW9uOwotICAgIHBv
c2l0aW9uLnggPSBpbml0LnBvc2l0aW9uWzBdOwotICAgIHBvc2l0aW9uLnkgPSBpbml0LnBvc2l0
aW9uWzFdOwotICAgIHBvc2l0aW9uLnogPSBpbml0LnBvc2l0aW9uWzJdOwotCi0gICAgRE9NUG9p
bnRJbml0IG9yaWVudGF0aW9uOwotICAgIG9yaWVudGF0aW9uLnggPSBpbml0Lm9yaWVudGF0aW9u
WzBdOwotICAgIG9yaWVudGF0aW9uLnkgPSBpbml0Lm9yaWVudGF0aW9uWzFdOwotICAgIG9yaWVu
dGF0aW9uLnogPSBpbml0Lm9yaWVudGF0aW9uWzJdOwotICAgIG9yaWVudGF0aW9uLncgPSBpbml0
Lm9yaWVudGF0aW9uWzNdOworICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3Nl
IHBvc2U7CisgICAgcG9zZS5wb3NpdGlvbiA9IHsgaW5pdC5wb3NpdGlvblswXSwgaW5pdC5wb3Np
dGlvblsxXSwgaW5pdC5wb3NpdGlvblsyXSB9OworICAgIHBvc2Uub3JpZW50YXRpb24gPSB7IGlu
aXQub3JpZW50YXRpb25bMF0sIGluaXQub3JpZW50YXRpb25bMV0sIGluaXQub3JpZW50YXRpb25b
Ml0sIGluaXQub3JpZW50YXRpb25bM10gfTsKIAotICAgIHJldHVybiBXZWJYUlJpZ2lkVHJhbnNm
b3JtOjpjcmVhdGUocG9zaXRpb24sIG9yaWVudGF0aW9uKTsKKyAgICByZXR1cm4gcG9zZTsKIH0K
IAogRXhjZXB0aW9uT3I8UmVmPEZha2VYUlZpZXc+PiBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlVmll
dyhjb25zdCBGYWtlWFJWaWV3SW5pdCYgaW5pdCkKQEAgLTE4MiwyMiArMjI4LDE3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxGYWtlWFJWaWV3Pj4gV2ViRmFrZVhSRGV2aWNlOjpwYXJzZVZpZXcoY29uc3Qg
RmFrZVhSVmlld0luaXQmIGluCiAKICAgICBpZiAoaW5pdC5wcm9qZWN0aW9uTWF0cml4LnNpemUo
KSAhPSAxNikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwotICAgIGZh
a2VWaWV3LT52aWV3KCktPnNldFByb2plY3Rpb25NYXRyaXgoaW5pdC5wcm9qZWN0aW9uTWF0cml4
KTsKKyAgICBmYWtlVmlldy0+c2V0UHJvamVjdGlvbihpbml0LnByb2plY3Rpb25NYXRyaXgpOwog
CiAgICAgYXV0byB2aWV3T2Zmc2V0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShpbml0LnZpZXdPZmZz
ZXQpOwogICAgIGlmICh2aWV3T2Zmc2V0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
dmlld09mZnNldC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgZmFrZVZpZXctPnZpZXcoKS0+c2V0
VHJhbnNmb3JtKHZpZXdPZmZzZXQucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIGZha2VWaWV3
LT5zZXRPZmZzZXQodmlld09mZnNldC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAKICAgICBmYWtl
Vmlldy0+c2V0UmVzb2x1dGlvbihpbml0LnJlc29sdXRpb24pOwogCiAgICAgaWYgKGluaXQuZmll
bGRPZlZpZXcpIHsKICAgICAgICAgZmFrZVZpZXctPnNldEZpZWxkT2ZWaWV3KGluaXQuZmllbGRP
ZlZpZXcudmFsdWUoKSk7Ci0gICAgICAgIC8vIFRPRE86IFNldCB2aWV34oCZcyBwcm9qZWN0aW9u
IG1hdHJpeCB0byB0aGUgcHJvamVjdGlvbiBtYXRyaXgKLSAgICAgICAgLy8gY29ycmVzcG9uZGlu
ZyB0byB0aGlzIGZpZWxkIG9mIHZpZXcsIGFuZCBkZXB0aCB2YWx1ZXMgZXF1YWwgdG8KLSAgICAg
ICAgLy8gZGVwdGhOZWFyIGFuZCBkZXB0aEZhciBvZiBhbnkgWFJTZXNzaW9uIGFzc29jaWF0ZWQg
d2l0aCB0aGUgZGV2aWNlLgotICAgICAgICAvLyBJZiB0aGVyZSBjdXJyZW50bHkgaXMgbm9uZSwg
dXNlIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiBuZWFyPTAuMSwKLSAgICAgICAgLy8gZmFyPTEwMDAu
MC4KICAgICB9CiAKICAgICByZXR1cm4gZmFrZVZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJEZXZpY2UuaAppbmRleCAzOTFiZmMzNDdlZWY5YWFhZjE3YmQyYmE4YjZiYTQzNmYw
MDA0NmQ1Li4zYTZiMGU4NTc2NTNmMzdjNGQxOGM2MTE4N2MzMTJlOWQ4MTdkYjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKQEAgLTMzLDggKzMzLDYgQEAKICNp
bmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIK
ICNpbmNsdWRlICJXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJXZWJYUlJp
Z2lkVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiV2ViWFJWaWV3LmgiCiAjaW5jbHVkZSAiWFJWaXNp
YmlsaXR5U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTQzLDIxICs0MSwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBGYWtlWFJWaWV3IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8RmFrZVhSVmlldz4gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8RmFrZVhSVmlldz4gY3JlYXRlKFhSRXllIGV5ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGYWtlWFJWaWV3KGV5ZSkpOyB9CisgICAgdXNpbmcgUG9zZSA9IFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlOworICAgIHVzaW5nIEZvdiA9IFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3Y7CiAKLSAgICBSZWZQdHI8V2ViWFJWaWV3PiB2
aWV3KCkgeyByZXR1cm4gbV92aWV3OyB9Ci0gICAgdm9pZCBzZXRSZXNvbHV0aW9uKEZha2VYUlZp
ZXdJbml0OjpEZXZpY2VSZXNvbHV0aW9uIHJlc29sdXRpb24pIHsgbV9yZXNvbHV0aW9uID0gcmVz
b2x1dGlvbjsgfQotICAgIHZvaWQgc2V0RmllbGRPZlZpZXcoRmFrZVhSVmlld0luaXQ6OkZpZWxk
T2ZWaWV3SW5pdCk7CisgICAgWFJFeWUgZXllKCkgY29uc3QgeyByZXR1cm4gbV9leWU7IH0KKyAg
ICBjb25zdCBQb3NlJiBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorICAgIGNv
bnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIDE2PiYgcHJvamVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvamVjdGlvbjsgfQorICAgIGNvbnN0IE9wdGlvbmFsPEZvdj4mIGZpZWxkT2ZWaWV3KCkgY29u
c3QgeyByZXR1cm4gbV9mb3Y7fQogCisgICAgdm9pZCBzZXRSZXNvbHV0aW9uKEZha2VYUlZpZXdJ
bml0OjpEZXZpY2VSZXNvbHV0aW9uIHJlc29sdXRpb24pIHsgbV9yZXNvbHV0aW9uID0gcmVzb2x1
dGlvbjsgfQorICAgIHZvaWQgc2V0T2Zmc2V0KFBvc2UmJiBvZmZzZXQpIHsgbV9vZmZzZXQgPSBX
VEZNb3ZlKG9mZnNldCk7IH0KKyAgICB2b2lkIHNldFByb2plY3Rpb24oY29uc3QgVmVjdG9yPGZs
b2F0PiYpOworICAgIHZvaWQgc2V0RmllbGRPZlZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQ6OkZp
ZWxkT2ZWaWV3SW5pdCYpOwogcHJpdmF0ZToKICAgICBGYWtlWFJWaWV3KFhSRXllIGV5ZSkKLSAg
ICB7Ci0gICAgICAgIG1fdmlldyA9IFdlYlhSVmlldzo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fdmll
dy0+c2V0RXllKGV5ZSk7Ci0gICAgfQorICAgICAgICA6IG1fZXllKGV5ZSkgeyB9CisKIAotICAg
IFJlZlB0cjxXZWJYUlZpZXc+IG1fdmlldzsKKyAgICBYUkV5ZSBtX2V5ZTsKICAgICBGYWtlWFJW
aWV3SW5pdDo6RGV2aWNlUmVzb2x1dGlvbiBtX3Jlc29sdXRpb247Ci0gICAgRmFrZVhSVmlld0lu
aXQ6OkZpZWxkT2ZWaWV3SW5pdCBtX2ZvdjsKKyAgICBQb3NlIG1fb2Zmc2V0OworICAgIHN0ZDo6
YXJyYXk8ZmxvYXQsIDE2PiBtX3Byb2plY3Rpb247CisgICAgT3B0aW9uYWw8Rm92PiBtX2ZvdjsK
IH07CiAKIGNsYXNzIFNpbXVsYXRlZFhSRGV2aWNlIGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6
OkRldmljZSB7CkBAIC02NSwzMSArNzAsMzUgQEAgY2xhc3MgU2ltdWxhdGVkWFJEZXZpY2UgZmlu
YWwgOiBwdWJsaWMgUGxhdGZvcm1YUjo6RGV2aWNlIHsKIHB1YmxpYzoKICAgICBTaW11bGF0ZWRY
UkRldmljZSgpOwogICAgIH5TaW11bGF0ZWRYUkRldmljZSgpOwotICAgIHZvaWQgc2V0TmF0aXZl
Qm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiBnZW9tZXRyeSkgeyBtX25h
dGl2ZUJvdW5kc0dlb21ldHJ5ID0gZ2VvbWV0cnk7IH0KLSAgICB2b2lkIHNldFZpZXdlck9yaWdp
bihSZWZQdHI8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvcmlnaW4pIHsgbV92aWV3ZXJPcmlnaW4g
PSBXVEZNb3ZlKG9yaWdpbik7IH0KLSAgICB2b2lkIHNldEZsb29yT3JpZ2luKFJlZlB0cjxXZWJY
UlJpZ2lkVHJhbnNmb3JtPiYmIG9yaWdpbikgeyBtX2Zsb29yT3JpZ2luID0gV1RGTW92ZShvcmln
aW4pOyB9CisgICAgdm9pZCBzZXRWaWV3cyhWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiYmIHZpZXdz
KSB7IG1fdmlld3MgPSBXVEZNb3ZlKHZpZXdzKTsgfQorICAgIHZvaWQgc2V0TmF0aXZlQm91bmRz
R2VvbWV0cnkoY29uc3QgVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiYgZ2VvbWV0cnkpIHsgbV9u
YXRpdmVCb3VuZHNHZW9tZXRyeSA9IGdlb21ldHJ5OyB9CisgICAgdm9pZCBzZXRWaWV3ZXJPcmln
aW4oT3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiYmIG9yaWdpbikgeyBtX3ZpZXdlck9yaWdpbiA9
IFdURk1vdmUob3JpZ2luKTsgfQorICAgIHZvaWQgc2V0Rmxvb3JPcmlnaW4oT3B0aW9uYWw8RnJh
bWVEYXRhOjpQb3NlPiYmIG9yaWdpbikgeyBtX2Zsb29yT3JpZ2luID0gV1RGTW92ZShvcmlnaW4p
OyB9CiAgICAgdm9pZCBzZXRFbXVsYXRlZFBvc2l0aW9uKGJvb2wgZW11bGF0ZWQpIHsgbV9lbXVs
YXRlZFBvc2l0aW9uID0gZW11bGF0ZWQ7IH0KICAgICBWZWN0b3I8UmVmPEZha2VYUlZpZXc+PiYg
dmlld3MoKSB7IHJldHVybiBtX3ZpZXdzOyB9CiAgICAgdm9pZCBzZXRTdXBwb3J0c1NodXRkb3du
Tm90aWZpY2F0aW9uKGJvb2wgc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbikgeyBtX3N1cHBv
cnRzU2h1dGRvd25Ob3RpZmljYXRpb24gPSBzdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9
CiAgICAgdm9pZCBzaW11bGF0ZVNodXRkb3duQ29tcGxldGVkKCk7CisgICAgdm9pZCBzY2hlZHVs
ZU9uTmV4dEZyYW1lKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiBwcml2YXRlOgogICAgIHZvaWQgaW5p
dGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5h
bCB7IH0KICAgICB2b2lkIHNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKSBmaW5hbDsKICAg
ICBib29sIHN1cHBvcnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9zdXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBpbml0
aWFsaXplUmVmZXJlbmNlU3BhY2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5h
bCB7IH0KKyAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoUGxh
dGZvcm1YUjo6U2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdEZyYW1l
KFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCBzdG9wVGltZXIoKTsK
ICAgICB2b2lkIGZyYW1lVGltZXJGaXJlZCgpOwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEZha2VY
UkJvdW5kc1BvaW50Pj4gbV9uYXRpdmVCb3VuZHNHZW9tZXRyeTsKLSAgICBSZWZQdHI8V2ViWFJS
aWdpZFRyYW5zZm9ybT4gbV92aWV3ZXJPcmlnaW47Ci0gICAgUmVmUHRyPFdlYlhSUmlnaWRUcmFu
c2Zvcm0+IG1fZmxvb3JPcmlnaW47CisgICAgT3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiBtX3Zp
ZXdlck9yaWdpbjsKKyAgICBPcHRpb25hbDxGcmFtZURhdGE6OlBvc2U+IG1fZmxvb3JPcmlnaW47
CiAgICAgYm9vbCBtX2VtdWxhdGVkUG9zaXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxSZWY8
RmFrZVhSVmlldz4+IG1fdmlld3M7CiAgICAgYm9vbCBtX3N1cHBvcnRzU2h1dGRvd25Ob3RpZmlj
YXRpb24geyBmYWxzZSB9OwogICAgIFRpbWVyIG1fZnJhbWVUaW1lcjsKLSAgICBWZWN0b3I8UmVx
dWVzdEZyYW1lQ2FsbGJhY2s+IG1fY2FsbGJhY2tzOworICAgIFJlcXVlc3RGcmFtZUNhbGxiYWNr
IG1fRnJhbWVDYWxsYmFjazsKKyAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9wZW5kaW5n
VXBkYXRlczsKIH07CiAKIGNsYXNzIFdlYkZha2VYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkZha2VYUkRldmljZT4gewpAQCAtMTA2LDcgKzExNSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2ltdWxhdGVWaXNpYmlsaXR5Q2hhbmdlKFhSVmlzaWJpbGl0eVN0YXRlKTsKIAot
ICAgIHZvaWQgc2V0Qm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiBib3Vu
ZHNDb29yZGluYXRlcyk7CisgICAgdm9pZCBzZXRCb3VuZHNHZW9tZXRyeShWZWN0b3I8RmFrZVhS
Qm91bmRzUG9pbnQ+JiYgYm91bmRzQ29vcmRpbmF0ZXMpOwogCiAgICAgdm9pZCBzZXRGbG9vck9y
aWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQpOwogCkBAIC0xMjcsNyArMTM2LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBXZWJGYWtlWFJEZXZpY2UoKTsKIAotICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4+IHBhcnNlUmlnaWRUcmFuc2Zvcm0oY29u
c3QgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlPiBwYXJzZVJpZ2lkVHJhbnNmb3JtKGNv
bnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYpOwogCiAgICAgU2ltdWxhdGVkWFJEZXZpY2Ug
bV9kZXZpY2U7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg2YTYyYTlkMDE2NjlmNmJiMDZmZDRhZWRiOGVjNTBkNThk
MmE0ZTQuLjI1OTFkYzA2ZDE2ZjVhZGE3YzhiYTdjMThiOTcyN2M1NmE4MzUxZjAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMS0wMi0xNSAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpA
aWdhbGlhLmNvbT4gYW5kIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdldFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzQxMTI5MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFyayBwb3NlIHJlbGF0ZWQgV2ViWFIgdGVzdHMgYXMg
cGFzc2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIxLTAyLTE3ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1wcm92
ZSBwZXJjZW50YWdlIGhlaWdodCBpbiBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVj
dFJhdGlvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAxOTI5MGZmOTFiNDJlNWRh
MWRiZjk2NWM0NzRjMWVjYmM0MmZhNGRiLi5iNWZmZTA3MjRkYzc1ZDM3MmI3YWRmYjQ5MTE0ODM4
OTE0YzRjYzEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAyMS0wMi0xNSAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4g
YW5kIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IFdlYlhSIGdldFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzQxMTI5MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFyayBwb3NlIGFuZCByZWZlcmVuY2Ugc3BhY2UgV2ViWFIgdGVzdHMgYXMg
cGFzc2luZy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dl
dFBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3NlX2dldFBvc2UuaHR0cHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVu
Y2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2VfcmVsYXRp
b25zaGlwcy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2RhdGFfdmFsaWQu
aHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9nZXRWaWV3ZXJQb3NlLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X2V5ZXMuaHR0cHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJWaWV3X21hdGNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFtZXVwZGF0ZS5odHRwcy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorCiAyMDIxLTAyLTE2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtzZWxlY3RvcnNdIDpmb2N1cy12aXNpYmxlIHBhcnNpbmcg
YW5kIGV4cGVyaW1lbnRhbCBmbGFnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0UG9zZS5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhy
L3hyRnJhbWVfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk2MjNkNGY4
YTE3Zjg1ZmY4MjdjYzU4ZTg1ODMzNTA0Zjk2NjkyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQ
b3NlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZyYW1lLmdl
dFBvc2Ugd29ya3MgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBYUkZyYW1lLmdldFBvc2Ug
d29ya3MgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdl
clBvc2VfZ2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3Nl
Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjFiZTM5MDEzNzhkOTA2MDViYjI2M2Q2
MWJmYmU4YmRhZjIwZTBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBvc2VfZ2V0UG9z
ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJGcmFtZSBnZXRW
aWV3ZXJQb3NlKHJlZlNwYWNlKSBtYXRjaGVzIGdldFBvc2Uodmlld2VyLCByZWZTcGFjZSkuCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZGY5ZjJiYTZhNTgxOWYwNGYxMGNmNTdiYmNjOWY1NTA2OTU1ZmZhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIENyZWF0aW5nIFhSUmVmZXJlbmNlU3BhY2Ug
b3JpZ2luIG9mZnNldCBvZmYgb2YgYHZpZXdlcmAgc3BhY2Ugd29ya3MuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZl
cmVuY2VTcGFjZV9yZWxhdGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9y
ZWxhdGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWVjYzFiMmJlZjgy
ZjYxYWIxYjRhYWVmOGFiMTkxMDM2NmJjZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNl
X3JlbGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNT
IEJvdW5kZWQgc3BhY2UsIHZpZXdlciBzcGFjZSwgbG9jYWwgYW5kIGxvY2FsLWZsb29yIHNwYWNl
IGhhdmUgY29ycmVjdCBwb3NlcyB3LnIudC4gZWFjaCBvdGhlcgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWQ5ZjM5MWE3NjRmNDg4YjhmN2UzMTgyY2M4NmU4MjBiMDFmMzA1NwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcmVz
b2x2ZXMgd2l0aCBnb29kIGRhdGEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZy
YW1lX2dldFZpZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlv
bkZyYW1lX2dldFZpZXdlclBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZTY3
ZGFmZWU1YzNjODEwYWQ5YTI5YTNlZDVjY2Q5OWNhNTcwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lv
bl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgWFJGcmFtZSBnZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24g
dGhlIG5leHQgZnJhbWUgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMKK1BBU1MgWFJGcmFtZSBn
ZXRWaWV3ZXJQb3NlIHVwZGF0ZXMgb24gdGhlIG5leHQgZnJhbWUgZm9yIGltbWVyc2l2ZSBzZXNz
aW9ucworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYjU2MjFhNGUxYjM2ODFiYzRkZTI0NTdkNzljYmY1YmVkMmM4ODExCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clNlc3Npb25fdmlld2VyX3JlZmVyZW5jZVNwYWNlLmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQgQEAKKworUEFTUyBJZGVudGl0eSByZWZlcmVuY2Ugc3BhY2UgcHJvdmlkZXMg
Y29ycmVjdCBwb3NlcyBmb3IgaW5saW5lIHNlc3Npb25zCitQQVNTIElkZW50aXR5IHJlZmVyZW5j
ZSBzcGFjZSBwcm92aWRlcyBjb3JyZWN0IHBvc2VzIGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40Y2RhYzJkZTEyYTEwYzY2OWJjYjU5ODNhYTMwMmRhNTliYjY5Zjll
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0
IEBACisKK1BBU1MgWFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBpbW1lcnNpdmUgc2Vzc2lvbnMK
K1BBU1MgWFJWaWV3LmV5ZSBpcyBjb3JyZWN0IGZvciBub24taW1tZXJzaXZlIHNlc3Npb25zCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIveHJWaWV3X21hdGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0dHBzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMTNmNmJjOWU2NWVjNmYxMzQ2MTNiOWUyYjFmNDcxYmNhMzU5
NDA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorCitQQVNTIFhSRnJhbWUgY29udGFpbnMgdGhlIGV4cGVjdGVkIHZpZXdzCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBk
YXRlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTAyMjE1OGYwYjVkYWM3MzMxZmM2
ZTU4N2EwMDkwZDNmNThiZDYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0
cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFhSVmlldyBwcm9qZWN0aW9u
IG1hdHJpY2VzIHVwZGF0ZSBuZWFyIGFuZCBmYXIgZGVwdGhzIG9uIHRoZSBuZXh0IGZyYW1lCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMWQ2MTc0MDdk
MDI4N2ExMDViMmE5NGU4ZTZlNGY3MDQ3ZDBjYjc3My4uOGI5MWIwZGZjZWQxMjk0YWQ5ODFkZGI1
MTY1ZjhkZmZiNWRhNzc1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTYzOCwyNiArNjM4LDM2IEBAIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvCiB3ZWJr
aXQub3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJE
ZXZpY2VfcmVxdWVzdFNlc3Npb25fbm9fbW9kZS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQu
b3JnL2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJEZXZp
Y2VfcmVxdWVzdFNlc3Npb25fbm9uX2ltbWVyc2l2ZV9ub19nZXN0dXJlLmh0dHBzLmh0bWwgWyBQ
YXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9vcHRpb25hbEZlYXR1cmVzLmh0dHBzLmh0
bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkgd2Via2l0Lm9yZy9iLzIxNTYzNyBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRp
b25GcmFtZS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMDk4NTkg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fY2FuY2VsQW5p
bWF0aW9uRnJhbWVfaW52YWxpZGhhbmRsZS5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X2ZlYXR1cmVzX2RldmljZVN1cHBvcnQuaHR0cHMuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9i
LzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVfY2FsbGJhY2tfY2FsbHMuaHR0cHMuaHRtbCBbIFBhc3MgXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFu
aW1hdGlvbkZyYW1lX3RpbWVzdGFtcC5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2Iv
MjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3Jl
cXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQb3NlLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJG
cmFtZV9nZXRQb3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJGcmFtZV9zZXNzaW9uX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBh
c3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fdmll
d2VyX2F2YWlsYWJpbGl0eS5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIvYXItbW9kdWxlL2lkbGhhcm5l
c3MuaHR0cHMud2luZG93Lmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUveHJEZXZpY2VfaXNTZXNz
aW9uU3VwcG9ydGVkX2ltbWVyc2l2ZS1hci5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLmh0bWwgWyBQYXNz
IF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X21hdGNoLmh0
dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8y
MDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94cldlYkdMTGF5ZXJf
Y29uc3RydWN0b3IuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXllcl9mcmFtZWJ1ZmZl
cl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIvbmF2aWdhdG9yX3hyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3Mg
XQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25f
c2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy5o
dG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVm
ZXJlbmNlU3BhY2VfcmVsYXRpb25zaGlwcy5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fY29uc3RydWN0b3Iu
aHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clJpZ2lkVHJhbnNmb3JtX2ludmVyc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJpZ2lkVHJhbnNmb3JtX21hdHJpeC5odHRw
cy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hy
U2Vzc2lvbl9jYW5jZWxBbmltYXRpb25GcmFtZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxBbmltYXRpb25G
cmFtZV9pbnZhbGlkaGFuZGxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2VuZC5odHRwcy5odG1sIFsgUGFzcyBdCitp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9mZWF0dXJlc19k
ZXZpY2VTdXBwb3J0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3ByZXZlbnRfbXVsdGlwbGVfZXhjbHVzaXZlLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJT
ZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsg
UGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxpZC5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy5odG1sIFsgUGFzcyBdCitpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVf
dGltZXN0YW1wLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RSZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsg
UGFzcyBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92
aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9yZW5kZXJfc3RhdGVfdmVydGljYWxfZm92X2ltbWVyc2l2
ZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3JlbmRlcl9zdGF0ZV91cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZW5kLmh0dHBzLmh0bWwgWyBQYXNz
IF0KIGh0dHAvd3B0L3dlYnhyL3hyU2Vzc2lvbl9lbmRfZGV2aWNlX3JlcG9ydHNfc2h1dGRvd24u
aHR0cHMuaHRtbCBbIFBhc3MgXQogaHR0cC93cHQvd2VieHIveHJTZXNzaW9uX2VuZGVkX2J5X3N5
c3RlbS5odHRwcy5odG1sIFsgUGFzcyBdCiBodHRwL3dwdC93ZWJ4ci94clNlc3Npb25fcmVqZWN0
X211bHRpcGxlX2VuZC5odHRwcy5odG1sIFsgUGFzcyBdCg==
</data>
<flag name="review"
          id="439257"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420818</attachid>
            <date>2021-02-18 02:50:17 -0800</date>
            <delta_ts>2021-02-19 01:07:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221225-20210218115015.patch</filename>
            <type>text/plain</type>
            <size>96252</size>
            <attacher name="Imanol Fernandez">ifernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjExYTJmM2RmMTMwN2Jj
Y2M2MzM4OTMyNTY3NmQxNzQ5YTgyYWY1MS4uMmRhNTNhYTY2MjEzZTVhMGI3N2U4Zjk5MzVhMmNi
YTg1ODU0Y2U4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAyMS0wMi0xNSAgSW1h
bm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNvbT4gYW5kIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYlhSIGdl
dFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQxMTI5MTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAtIEltcHJv
dmUgUGxhdGZvcm1YUjo6RnJhbWVEYXRhIHN0cnVjdC4KKyAgICAgICAgLSBJbXBsZW1lbnQgV2Vi
WFJGcmFtZSBnZXRWaWV3ZXJQb3NlIGFuZCBnZXRQb3NlLgorICAgICAgICAtIEltcGxlbWVudCBX
ZWJYUlJlZmVyZW5jZVNwYWNlIG9mZnNldCwgb3JpZ2luIGFuZCBlZmZlY3RpdmUgdHJhbmZvcm1z
LgorICAgICAgICAtIEltcGxlbWVudCBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSBuYXRpdmVP
cmlnaW4uCisgICAgICAgIC0gQXBwbHkgZnJhbWUgdXBkYXRlcyBpbiBXZWJYUlNlc3Npb24uCisg
ICAgICAgIC0gSW1wbGVtZW50IHZpZXdzIGZvciBPcGVuWFIgYW5kIER1bW15SW5saW5lRGV2aWNl
IGlubGluZSBzZXNzaW9ucy4KKyAgICAgICAgLSBRdWVyeSBhbmQgY29tcGxldGUgYWxsIHRoZSBu
ZXcgRnJhbWVEYXRhIGluIHRoZSBPcGVuWFIgcG9ydC4KKyAgICAgICAgLSBDb21wbGV0ZSB0aGUg
V2ViRmFrZVhSRGV2aWNlIGltcGxlbWVudGF0aW9uIGZvciBXZWJYUiBXUFQgdGVzdHMuCisKKyAg
ICAgICAgVGVzdGVkIGJ5IHRoZSBXZWJYUiBXUFQgdGVzdHMKKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwOiBJbXBsZW1lbnQgbmF0aXZlT3Jp
Z2luYSBhbmQgZ2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJY
UkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhS
Qm91bmRlZFJlZmVyZW5jZVNwYWNlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpib3Vu
ZHNHZW9tZXRyeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJGcmFtZS5jcHA6IEltcGxlbWVudCBXZWJYUiBnZXRWaWV3ZXJQb3NlIGFuZCBnZXRQ
b3NlLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSRnJhbWU6OldlYlhSRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJG
cmFtZTo6bXVzdFBvc2VzQmVMaW1pdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6
OnBvcHVsYXRlUG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpnZXRWaWV3ZXJQ
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmdldFBvc2UpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UpOiBhZGQgaGVscGVyIGZ1bmN0aW9u
LgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViWFJGcmFtZTo6c2V0RnJhbWVEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dl
YlhSRnJhbWUuaWRsOiBhZGQgTWF5VGhyb3dFeGNlcHRpb24uCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSUG9zZS5jcHA6IEFkZCBXZWJYUlJpZ2lkVHJhbnNmb3JtIGNvbnN0cnVjdG9y
IHBhcmFtZXRlci4gQWRkIHNwZWNpYWxpemUgdHlwZSB0cmFpdHMuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUlBvc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlBvc2U6OldlYlhS
UG9zZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSUG9zZTo6aXNWaWV3ZXJQb3NlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSUG9zZS5pZGw6IFJlbW92ZSBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuY3BwOiBJbXBsZW1l
bnQgb2Zmc2V0LCBvcmlnaW4gYW5kIGVmZmVjdGl2ZSB0cmFuZm9ybXMuCisgICAgICAgIChXZWJD
b3JlOjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJSZWZlcmVuY2VTcGFjZTo6V2ViWFJSZWZlcmVuY2VTcGFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUlJlZmVyZW5jZVNwYWNlOjpuYXRpdmVPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJSZWZlcmVuY2VTcGFjZTo6Zmxvb3JPcmlnaW5UcmFuc2Zvcm0g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSUmVmZXJl
bmNlU3BhY2U6OnR5cGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJSZWZl
cmVuY2VTcGFjZS5pZGw6IEFkZCBTa2lwVlRhYmxlVmFsaWRhdGlvbi4KKworICAgICAgICAqIE1v
ZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcDogQXBwbHkgZnJhbWUgdXBkYXRlcyBmb3IgZnJh
bWUuIEFkZCBhY3RpdmUgdmlld3MgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lv
bjo6V2ViWFJTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6cmVxdWVz
dFJlZmVyZW5jZVNwYWNlKTogVXNlIFdlYWtQdHIgaW5zdGVhZCBSZWYgZm9yIFdlYlhSU2Vzc2lv
bi4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6b25GcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlNlc3Npb246OnBvc2VzQ2FuQmVSZXBvcnRlZCBjb25zdCk6IGFkZAorICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSU3BhY2UuY3BwOiBBZGQgbmF0aXZlT3JpZ2luIGFuZCBlZmZlY3RpdmVPcmln
aW4gbWVtYmVyIGZ1bmN0aW9ucy4gQWRkIHNwZWNpYWxpemUgdHlwZSB0cmFpdHMuCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUlNwYWNlOjpXZWJYUlNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlhSU3BhY2U6OmVmZmVjdGl2ZU9yaWdpbiBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUlNwYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNwYWNlOjpzZXNzaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU3BhY2U6OmlzUmVmZXJlbmNlU3BhY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJTcGFjZTo6aXNCb3VuZGVkUmVmZXJlbmNlU3Bh
Y2UgY29uc3QpOgorCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHA6IElt
cGxlbWVudCB2aWV3cyBmb3IgRHVtbXlJbmxpbmVEZXZpY2UuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OnJlcXVlc3RGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUlN5c3RlbTo6RHVtbXlJbmxpbmVEZXZpY2U6OnZpZXdzIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmg6CisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhSVmlldy5jcHA6IFBhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybSBpbiB0aGUgY29u
c3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXc6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUlZpZXc6OldlYlhSVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJY
UlZpZXc6OnNldFByb2plY3Rpb25NYXRyaXgpOiBVc2Ugc3RkOjphcnJheSB0byBtYXRjaCBkZXZp
Y2UgZGF0YS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5oOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJWaWV3Ojpwcm9qZWN0aW9uTWF0cml4IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSVmlldzo6dHJhbnNmb3JtIGNvbnN0KToKKworICAgICAgICAqIE1vZHVsZXMv
d2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcDogQWRkIHZpZXdzIHNldHRlci4gQWRkIHNwZWNpYWxp
emUgdHlwZSB0cmFpdHMuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdlclBvc2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdlclBvc2U6OldlYlhSVmlld2VyUG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlZpZXdlclBvc2U6OnNldFZpZXdzKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
eHIvV2ViWFJWaWV3ZXJQb3NlLmlkbDogUmVtb3ZlIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUu
IEFkZCBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhy
L1hSRXllLmg6IFJldXNlIFBsYXRmb3JtWFIgZW51bS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOiBBZGQgcHJvamVjdGlv
biBtYXRyaXggdXRpbGl0eSBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6ZnJvbVByb2plY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKworICAgICAgICAqIHBsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaDogSW1wcm92ZSBGcmFtZURhdGEuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHA6IFF1ZXJ5IGFuZCBjb21wbGV0ZSBhbGwg
dGhlIG5ldyBGcmFtZURhdGEuCisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZpY2U6OmNy
ZWF0ZVJlZmVyZW5jZVNwYWNlKTogYWRkIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFBsYXRm
b3JtWFI6Ok9wZW5YUkRldmljZTo6cmVjb21tZW5kZWRSZXNvbHV0aW9uKTogUXVlcnkgcmVzb2x1
dGlvbiBkYXRhIGZyb20gT3BlblhSLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNl
Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcpOiBJbml0aWFsaXplIGxvY2FsIGFuZCB2
aWV3IFhyU3BhY2VzLgorICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjppbml0aWFs
aXplUmVmZXJlbmNlU3BhY2UpOiBMYXppbHkgaW5pdGlhbGl6ZSBzdGFnZSBYclNwYWNlLgorICAg
ICAgICAoUGxhdGZvcm1YUjo6WHJQb3NlZlRvUG9zZSk6IGFkZCBoZWxwZXIgZnVuY3Rpb24uCisg
ICAgICAgIChQbGF0Zm9ybVhSOjp4clZpZXdUb1Bvc2UpOiBhZGQgaGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoUGxhdGZvcm1YUjo6T3BlblhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUpOiBDb21wbGV0
ZSBhbGwgdGhlIG5ldyBmcmFtZSBEYXRhCisgICAgICAgIChQbGF0Zm9ybVhSOjpPcGVuWFJEZXZp
Y2U6OnZpZXdzIGNvbnN0KTogSW1wbGVtZW50IHZpZXcgZGF0YSBmb3IgT3BlblhSCisgICAgICAg
ICogcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaDoKKworICAgICAgICAqIHRl
c3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcDogQ29tcGxldGUgdGhlIHJlcXVpcmVkIGltcGxlbWVu
dGF0aW9uIGZvciBXZWJYUiBXUFQgdGVzdHMuCisgICAgICAgIChXZWJDb3JlOjpGYWtlWFJWaWV3
OjpzZXRQcm9qZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZha2VYUlZpZXc6OnNldEZpZWxk
T2ZWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXVsYXRlZFhSRGV2aWNlOjpmcmFtZVRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnJlcXVlc3RGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW11bGF0ZWRYUkRldmljZTo6dmlld3MgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltdWxhdGVkWFJEZXZpY2U6OnNjaGVkdWxlT25OZXh0RnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRWaWV3cyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OnNldFZpZXdlck9yaWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJEZXZpY2U6OmNsZWFyVmlld2VyT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkZha2VYUkRldmljZTo6c2V0Qm91bmRzR2VvbWV0cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViRmFrZVhSRGV2aWNlOjpzZXRGbG9vck9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJGYWtlWFJEZXZpY2U6OmNsZWFyRmxvb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViRmFrZVhSRGV2aWNlOjpwYXJzZVJpZ2lkVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkZha2VYUkRldmljZTo6cGFyc2VWaWV3KToKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VY
UkRldmljZS5oOgorCiAyMDIxLTAyLTE3ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgSW1wcm92ZSBwZXJjZW50YWdlIGhlaWdodCBpbiBzaG91bGRDb21wdXRlTG9naWNh
bFdpZHRoRnJvbUFzcGVjdFJhdGlvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwCmluZGV4IGQ0NGVkNjJi
ZGNkNTZmYmU4Mjc5NDAxZTMwNjAzODhkNzNmNDkxZmQuLjk0ZDg5YzJiNTMyMjJiNjQzYzFjODAy
ODlhMjQyOTY5MzNkNTE2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwCkBAIC0yOSw2ICsyOSw5
IEBACiAjaWYgRU5BQkxFKFdFQlhSKQogCiAjaW5jbHVkZSAiRE9NUG9pbnRSZWFkT25seS5oIgor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiV2ViWFJSaWdpZFRyYW5zZm9ybS5oIgor
I2luY2x1ZGUgIldlYlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDIxICs0MCw1MCBAQCBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UpOwogCiBSZWY8V2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+IFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFhSUmVm
ZXJlbmNlU3BhY2VUeXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJC
b3VuZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHR5cGUpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShkb2N1
bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCksIHR5
cGUpKTsKIH0KIAotV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OldlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9u
LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQotICAgIDogV2ViWFJSZWZlcmVuY2VTcGFjZShk
b2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgdHlwZSkKKworUmVmPFdlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlPiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZWY8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiBvZmZzZXQsIFhSUmVmZXJlbmNlU3BhY2VUeXBlIHR5cGUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoZG9jdW1lbnQsIFdURk1v
dmUoc2Vzc2lvbiksIFdURk1vdmUob2Zmc2V0KSwgdHlwZSkpOworfQorCisKK1dlYlhSQm91bmRl
ZFJlZmVyZW5jZVNwYWNlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZShEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5jZVNwYWNlVHlwZSB0eXBlKQorICAgIDogV2ViWFJSZWZl
cmVuY2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShvZmZzZXQpLCB0
eXBlKQogewogfQogCiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6fldlYlhSQm91bmRlZFJl
ZmVyZW5jZVNwYWNlKCkgPSBkZWZhdWx0OwogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZTo6bmF0aXZlT3JpZ2luKCkgY29uc3QKK3sKKyAgICAvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJyZWZlcmVuY2VzcGFjZXR5
cGUtYm91bmRlZC1mbG9vci4KKyAgICAvLyBCb3VuZGVkIGZsb29yIHNwYWNlIHNob3VsZCBiZSBh
dCB0aGUgc2FtZSBoZWlnaHQgYXMgbG9jYWwgZmxvb3Igc3BhY2UuCisgICAgcmV0dXJuIGZsb29y
T3JpZ2luVHJhbnNmb3JtKCk7Cit9CisKIGNvbnN0IFZlY3RvcjxSZWY8RE9NUG9pbnRSZWFkT25s
eT4+JiBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6Ym91bmRzR2VvbWV0cnkoKSBjb25zdAog
eworICAgIC8vIEZJWE1FOiBnZXQgZGF0YSBmcm9tIGRldmljZQogICAgIHJldHVybiBtX2JvdW5k
c0dlb21ldHJ5OwogfQogCitSZWZQdHI8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2U6OmdldE9mZnNldFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRU
cmFuc2Zvcm0mIG9mZnNldFRyYW5zZm9ybSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghZG9jdW1l
bnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUt
d2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhycmVmZXJlbmNlc3BhY2UtZ2V0b2Zmc2V0cmVmZXJl
bmNlc3BhY2UKKyAgICAvLyBTZXQgb2Zmc2V0U3BhY2XigJlzIG9yaWdpbiBvZmZzZXQgdG8gdGhl
IHJlc3VsdCBvZiBtdWx0aXBseWluZyBiYXNl4oCZcyBvcmlnaW4gb2Zmc2V0IGJ5IG9yaWdpbk9m
ZnNldCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2YgYmFzZS4KKyAgICBhdXRvIG9mZnNldCA9IFdl
YlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKSAq
IG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7CisKKyAgICAvLyBGSVhNRTogc2V0IG9m
ZnNldFNwYWNl4oCZcyBib3VuZHNHZW9tZXRyeSB0byBiYXNl4oCZcyBib3VuZHNHZW9tZXRyeSwg
d2l0aCBlYWNoIHBvaW50IG11bHRpcGxpZWQgYnkgdGhlIGludmVyc2Ugb2Ygb3JpZ2luT2Zmc2V0
LgorICAgIHJldHVybiBjcmVhdGUoKmRvY3VtZW50LCBtX3Nlc3Npb24uY29weVJlZigpLCBXVEZN
b3ZlKG9mZnNldCksIG1fdHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuaAppbmRleCA3MWE5Zjk3MGE3MzAx
YmQ0ZjA0ZTRjMGJiZWU4MWVhZWVhM2Y0NGQ3Li43MTQ4NTIwMWI3ZDdhOTUwNmI5ZGZiM2Y5YWRl
NDc0YTViYjE5NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oCkBAIC0yNSwzMiArMjUsMzkgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpZiBFTkFCTEUoV0VCWFIpCisKICNpbmNsdWRlICJXZWJYUlJlZmVy
ZW5jZVNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLSNpZiBFTkFCTEUoV0VCWFIpCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NUG9pbnRSZWFkT25seTsKIAotY2xhc3MgV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UgOiBwdWJsaWMgV2ViWFJSZWZlcmVuY2VTcGFjZSB7Citj
bGFzcyBXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSBmaW5hbDogcHVibGljIFdlYlhSUmVmZXJl
bmNlU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJCb3VuZGVkUmVmZXJl
bmNlU3BhY2UpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFhSUmVmZXJlbmNl
U3BhY2VUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlPiBj
cmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5z
Zm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgdmlydHVhbCB+V2ViWFJCb3Vu
ZGVkUmVmZXJlbmNlU3BhY2UoKTsKIAorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5hdGl2ZU9y
aWdpbigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFZlY3RvcjxSZWY8RE9NUG9pbnRSZWFkT25s
eT4+JiBib3VuZHNHZW9tZXRyeSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJYUlJlZmVyZW5jZVNw
YWNlPiBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJikg
ZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1l
bnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNwYWNlVHlwZSk7CisgICAgV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBS
ZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgWFJSZWZlcmVuY2VTcGFjZVR5cGUpOworCisgICAg
Ym9vbCBpc0JvdW5kZWRSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIFZlY3RvcjxSZWY8RE9NUG9pbnRSZWFkT25seT4+IG1fYm91bmRzR2VvbWV0cnk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0VCWFJTUEFDRShXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZSwgaXNCb3VuZGVkUmVmZXJlbmNl
U3BhY2UoKSkKKwogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IGYyNzg3NjFiMGE3YjdkMjlkMTc5NDIyMzUw
YTJhYTE5OGEyM2JkZWMuLjhlN2IzOGFmNDgwMmQ1MmFjYTY3OTNmNzk5NzgwNjhhN2Y0NzhkMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMjgs
NiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQogCisjaW5jbHVkZSAiV2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2UuaCIKKyNpbmNsdWRlICJXZWJYUlJlZmVyZW5jZVNwYWNlLmgiCiAjaW5j
bHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViWFJWaWV3ZXJQb3NlLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTM2LDI3ICszOCwyMDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJGcmFtZSk7
CiAKLVJlZjxXZWJYUkZyYW1lPiBXZWJYUkZyYW1lOjpjcmVhdGUoUmVmPFdlYlhSU2Vzc2lvbj4m
JiBzZXNzaW9uKQorUmVmPFdlYlhSRnJhbWU+IFdlYlhSRnJhbWU6OmNyZWF0ZShSZWY8V2ViWFJT
ZXNzaW9uPiYmIHNlc3Npb24sIElzQW5pbWF0aW9uRnJhbWUgaXNBbmltYXRpb25GcmFtZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkZyYW1lKFdURk1vdmUoc2Vzc2lvbikpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkZyYW1lKFdURk1vdmUoc2Vzc2lvbiksIGlz
QW5pbWF0aW9uRnJhbWUpKTsKIH0KIAotV2ViWFJGcmFtZTo6V2ViWFJGcmFtZShSZWY8V2ViWFJT
ZXNzaW9uPiYmIHNlc3Npb24pCi0gICAgOiBtX3Nlc3Npb24oV1RGTW92ZShzZXNzaW9uKSkKK1dl
YlhSRnJhbWU6OldlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBJc0FuaW1h
dGlvbkZyYW1lIGlzQW5pbWF0aW9uRnJhbWUpCisgICAgOiBtX2lzQW5pbWF0aW9uRnJhbWUoaXNB
bmltYXRpb25GcmFtZSA9PSBJc0FuaW1hdGlvbkZyYW1lOjpZZXMpCisgICAgLCBtX3Nlc3Npb24o
V1RGTW92ZShzZXNzaW9uKSkKIHsKIH0KIAogV2ViWFJGcmFtZTo6fldlYlhSRnJhbWUoKSA9IGRl
ZmF1bHQ7CiAKK2Jvb2wgV2ViWFJGcmFtZTo6aXNPdXRzaWRlTmF0aXZlQm91bmRzT2ZCb3VuZGVk
UmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFjZSYgc3BhY2UsIGNvbnN0IFdlYlhSU3BhY2Um
KSBjb25zdAoreworICAgIGlmICghaXM8V2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U+KHNwYWNl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IHJldHVybiB0cnVlIHdo
ZW5ldmVyIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBib3VuZGVkIGdlb21ldHJ5IG9mCisgICAgLy8g
fHNwYWNlfCB0byB0aGUgbmF0aXZlIG9yaWdpbiBvZiB8b3RoZXJ8IHNwYWNlIGlzIGdyZWF0ZXIg
dGhhbiAxbQorICAgIC8vIChzdWdnZXN0ZWQgYnkgc3BlY3MpLgorCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIFdlYlhSRnJhbWU6OmlzTG9jYWxSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJY
UlNwYWNlJiBzcGFjZSkgY29uc3QKK3sKKyAgICBpZiAoIWlzPFdlYlhSUmVmZXJlbmNlU3BhY2U+
KHNwYWNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byB0eXBlID0gZG93bmNh
c3Q8V2ViWFJSZWZlcmVuY2VTcGFjZT4oc3BhY2UpLnR5cGUoKTsKKyAgICBpZiAodHlwZSA9PSBY
UlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWwgfHwgdHlwZSA9PSBYUlJlZmVyZW5jZVNwYWNlVHlw
ZTo6TG9jYWxGbG9vcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKKy8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3Bvc2VzLW11
c3QtYmUtbGltaXRlZAorYm9vbCBXZWJYUkZyYW1lOjptdXN0UG9zZXNCZUxpbWl0ZWQoY29uc3Qg
V2ViWFJTcGFjZSYgc3BhY2UsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSkgY29uc3QKK3sK
KyAgICBpZiAoaXNPdXRzaWRlTmF0aXZlQm91bmRzT2ZCb3VuZGVkUmVmZXJlbmNlU3BhY2Uoc3Bh
Y2UsIGJhc2VTcGFjZSkKKyAgICAgICAgfHwgaXNPdXRzaWRlTmF0aXZlQm91bmRzT2ZCb3VuZGVk
UmVmZXJlbmNlU3BhY2UoYmFzZVNwYWNlLCBzcGFjZSkpCisgICAgICAgIHJldHVybiB0cnVlOwog
Ci1SZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBXZWJYUkZyYW1lOjpnZXRWaWV3ZXJQb3NlKGNvbnN0
IFdlYlhSUmVmZXJlbmNlU3BhY2UmKQorICAgIGlmIChpc0xvY2FsUmVmZXJlbmNlU3BhY2Uoc3Bh
Y2UpIHx8IGlzTG9jYWxSZWZlcmVuY2VTcGFjZShiYXNlU3BhY2UpKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGUgZGlzdGFuY2UgYmV0d2VlbiBuYXRpdmUgb3JpZ2lucyBvZiBzcGFjZXMgaXMg
Z3JlYXRlcgorICAgICAgICAvLyB0aGFuIDE1bSAoc3VnZ2VzdGVkIGJ5IHNwZWNzKSByZXR1cm4g
dHJ1ZS4KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0cnVjdCBXZWJYUkZyYW1l
OjpQb3B1bGF0ZWRQb3NlIHsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Cisg
ICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uIHsgZmFsc2UgfTsKK307CisKKy8vIGh0dHBzOi8vaW1t
ZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3BvcHVsYXRlLXRoZS1wb3NlCitFeGNlcHRpb25P
cjxPcHRpb25hbDxXZWJYUkZyYW1lOjpQb3B1bGF0ZWRQb3NlPj4gV2ViWFJGcmFtZTo6cG9wdWxh
dGVQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgV2ViWFJTcGFjZSYgc3BhY2Us
IGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSkKIHsKLSAgICByZXR1cm4geyB9OworICAgIC8v
IDEuIElmIGZyYW1l4oCZcyBhY3RpdmUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9hY3RpdmUpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgLy8g
Mi4gTGV0IHNlc3Npb24gYmUgZnJhbWXigJlzIHNlc3Npb24gb2JqZWN0LgorICAgIC8vIDMuIElm
IHNwYWNl4oCZcyBzZXNzaW9uIGRvZXMgbm90IGVxdWFsIHNlc3Npb24sIHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoJnNwYWNlLnNlc3Np
b24oKSAhPSBtX3Nlc3Npb24ucHRyKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworCisgICAgLy8gNC4gSWYgYmFzZVNwYWNl4oCZcyBzZXNzaW9uIGRv
ZXMgbm90IGVxdWFsIHNlc3Npb24sIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoJmJhc2VTcGFjZS5zZXNzaW9uKCkgIT0gbV9zZXNzaW9u
LnB0cigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIC8vIDUuIENoZWNrIGlmIHBvc2VzIG1heSBiZSByZXBvcnRlZCBhbmQsIGlmIG5vdCwg
dGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1f
c2Vzc2lvbi0+cG9zZXNDYW5CZVJlcG9ydGVkKGRvY3VtZW50KSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfTsKKworICAgIC8vIDYuIExldCBsaW1pdCBiZSB0aGUg
cmVzdWx0IG9mIHdoZXRoZXIgcG9zZXMgbXVzdCBiZSBsaW1pdGVkIGJldHdlZW4gc3BhY2UgYW5k
IGJhc2VTcGFjZS4KKyAgICAvLyA3LiBMZXQgdHJhbnNmb3JtIGJlIHBvc2XigJlzIHRyYW5zZm9y
bS4KKyAgICAvLyA4LiBRdWVyeSB0aGUgWFIgZGV2aWNlJ3MgdHJhY2tpbmcgc3lzdGVtIGZvciBz
cGFjZeKAmXMgcG9zZSByZWxhdGl2ZSB0byBiYXNlU3BhY2UgYXQgdGhlIGZyYW1l4oCZcyB0aW1l
LgorCisgICAgaWYgKCFtX2RhdGEuaXNUcmFja2luZ1ZhbGlkKSB7CisgICAgICAgIC8vIEZJWE1F
OiBjaGVjayBpZiBzcGFjZeKAmXMgcG9zZSByZWxhdGl2ZSB0byBiYXNlU3BhY2UgaGFzIGJlZW4g
ZGV0ZXJtaW5lZCBpbiB0aGUgcGFzdC4KKyAgICAgICAgLy8gQW55d2F5IHRoaXMgZW11bGF0aW9u
IGlzIHVzdWFsbHkgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbSBpbiB0aGUgcG9zZSAoZS5nLiBPcGVu
WFIpCisgICAgICAgIC8vIHNvIHdlIHNob3VsZG4ndCBoaXQgdGhpcyBwYXRoIGluIG1vc3QgWFJQ
bGF0Zm9ybSBwb3J0cy4KKyAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0IH07CisgICAgfQor
CisgICAgYXV0byBiYXNlVHJhbnNmb3JtID0gYmFzZVNwYWNlLmVmZmVjdGl2ZU9yaWdpbigpOwor
ICAgIGlmICghYmFzZVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKKyAgICAgICAgcmV0dXJuIHsg
V1RGOjpudWxsb3B0IH07CisKKyAgICBhdXRvIHRyYW5zZm9ybSA9ICAqYmFzZVRyYW5zZm9ybS5p
bnZlcnNlKCkgKiBzcGFjZS5lZmZlY3RpdmVPcmlnaW4oKTsKKyAgICBib29sIGVtdWxhdGVkUG9z
aXRpb24gPSBtX2RhdGEuaXNQb3NpdGlvbkVtdWxhdGVkIHx8ICFtX2RhdGEuaXNQb3NpdGlvblZh
bGlkOworCisgICAgYm9vbCBsaW1pdCA9IG11c3RQb3Nlc0JlTGltaXRlZChzcGFjZSwgYmFzZVNw
YWNlKTsKKyAgICBpZiAobGltaXQpIHsKKyAgICAgICAgLy8gRklYTUU6IGFwcGx5IHBvc2UgbGlt
aXRzIGxvZ2ljCisgICAgICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2Vi
eHIvI3Bvc2VzLW11c3QtYmUtbGltaXRlZAorICAgIH0KKworICAgIHJldHVybiB7IFBvcHVsYXRl
ZFBvc2UgeyB0cmFuc2Zvcm0sIGVtdWxhdGVkUG9zaXRpb24gfSB9OworfQorCisvLyBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJmcmFtZS1nZXR2aWV3ZXJwb3Nl
CitFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0Vmll
d2VyUG9zZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFdlYlhSUmVmZXJlbmNlU3Bh
Y2UmIHJlZmVyZW5jZVNwYWNlKQoreworICAgIC8vIDEuIExldCBmcmFtZSBiZSB0aGlzLgorICAg
IC8vIDIuIExldCBzZXNzaW9uIGJlIGZyYW1l4oCZcyBzZXNzaW9uIG9iamVjdC4KKyAgICAvLyAz
LiBJZiBmcmFtZeKAmXMgYW5pbWF0aW9uRnJhbWUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4g
SW52YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9pc0Fu
aW1hdGlvbkZyYW1lKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKKworICAgIC8vIDQuIExldCBwb3NlIGJlIGEgbmV3IFhSVmlld2VyUG9zZSBvYmplY3Qg
aW4gdGhlIHJlbGV2YW50IHJlYWxtIG9mIHNlc3Npb24uCisgICAgLy8gNS4gUG9wdWxhdGUgdGhl
IHBvc2Ugb2Ygc2Vzc2lvbuKAmXMgdmlld2VyIHJlZmVyZW5jZSBzcGFjZSBpbiByZWZlcmVuY2VT
cGFjZSBhdCB0aGUgdGltZSByZXByZXNlbnRlZCBieSBmcmFtZSBpbnRvIHBvc2UuCisgICAgYXV0
byBwb3B1bGF0ZVBvc2VSZXN1bHQgPSBwb3B1bGF0ZVBvc2UoZG9jdW1lbnQsIG1fc2Vzc2lvbi0+
dmlld2VyUmVmZXJlbmNlU3BhY2UoKSwgcmVmZXJlbmNlU3BhY2UpOworICAgIGlmIChwb3B1bGF0
ZVBvc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBwb3B1bGF0ZVBvc2VS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgLy8gNi4gSWYgcG9zZSBpcyBudWxsIHJl
dHVybiBudWxsLgorICAgIGF1dG8gcG9wdWxhdGVWYWx1ZSA9IHBvcHVsYXRlUG9zZVJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIXBvcHVsYXRlVmFsdWUuaGFzVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBw
b3NlID0gV2ViWFJWaWV3ZXJQb3NlOjpjcmVhdGUoV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRl
KHBvcHVsYXRlVmFsdWUtPnRyYW5zZm9ybSksIHBvcHVsYXRlVmFsdWUtPmVtdWxhdGVkUG9zaXRp
b24pOworCisgICAgLy8gNy4gTGV0IHhydmlld3MgYmUgYW4gZW1wdHkgbGlzdC4KKyAgICBWZWN0
b3I8UmVmPFdlYlhSVmlldz4+IHhyVmlld3M7CisgICAgLy8gOC4gRm9yIGVhY2ggYWN0aXZlIHZp
ZXcgdmlldyBpbiB0aGUgbGlzdCBvZiB2aWV3cyBvbiBzZXNzaW9uLCBwZXJmb3JtIHRoZSBmb2xs
b3dpbmcgc3RlcHM6CisgICAgZm9yIChhdXRvJiB2aWV3IDogbV9zZXNzaW9uLT52aWV3cygpKSB7
CisgICAgICAgIGF1dG8gaW5kZXggPSB4clZpZXdzLnNpemUoKTsKKyAgICAgICAgaWYgKCF2aWV3
LmFjdGl2ZSB8fCBtX2RhdGEudmlld3Muc2l6ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgLy8gOC4xIExldCB4cnZpZXcgYmUgYSBuZXcgWFJWaWV3IG9iamVj
dCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2Ygc2Vzc2lvbi4KKyAgICAgICAgLy8gOC4yIEluaXRp
YWxpemUgeHJ2aWV34oCZcyB1bmRlcmx5aW5nIHZpZXcgdG8gdmlldy4KKyAgICAgICAgLy8gOC4z
IEluaXRpYWxpemUgeHJ2aWV34oCZcyBleWUgdG8gdmlld+KAmXMgZXllLgorICAgICAgICAvLyA4
LjQgSW5pdGlhbGl6ZSB4cnZpZXfigJlzIGZyYW1lIHRpbWUgdG8gZnJhbWXigJlzIHRpbWUuCisg
ICAgICAgIC8vIDguNSBJbml0aWFsaXplIHhydmlld+KAmXMgc2Vzc2lvbiB0byBzZXNzaW9uLgor
ICAgICAgICAvLyA4LjYuIExldCBvZmZzZXQgYmUgYW4gbmV3IFhSUmlnaWRUcmFuc2Zvcm0gb2Jq
ZWN0IGVxdWFsIHRvIHRoZSB2aWV3IG9mZnNldCBvZiB2aWV3IGluIHRoZSByZWxldmFudCByZWFs
bSBvZiBzZXNzaW9uLgorICAgICAgICAvLyA4LjcuIFNldCB4cnZpZXfigJlzIHRyYW5zZm9ybSBw
cm9wZXJ0eSB0byB0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIHRoZSBYUlZpZXdlclBvc2UncyB0
cmFuc2Zvcm0gYnkgdGhlIG9mZnNldCB0cmFuc2Zvcm0gaW4gdGhlIHJlbGV2YW50IHJlYWxtIG9m
IHNlc3Npb24KKyAgICAgICAgYXV0byBvZmZzZXQgPSBtYXRyaXhGcm9tUG9zZShtX2RhdGEudmll
d3NbaW5kZXhdLm9mZnNldCk7CisgICAgICAgIGF1dG8gdHJhbnNmb3JtID0gV2ViWFJSaWdpZFRy
YW5zZm9ybTo6Y3JlYXRlKHBvc2UtPnRyYW5zZm9ybSgpLnJhd1RyYW5zZm9ybSgpICogb2Zmc2V0
KTsKKworICAgICAgICAvLyBTZXQgcHJvamVjdGlvbiBtYXRyaXggZm9yIGVhY2ggdmlldworICAg
ICAgICBzdGQ6OmFycmF5PGZsb2F0LCAxNj4gcHJvamVjdGlvbiA9IHN3aXRjaE9uKG1fZGF0YS52
aWV3c1tpbmRleF0ucHJvamVjdGlvbiwgWyZdKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpGb3YmIGZvdikgeworICAgICAgICAgICAgZG91YmxlIG5lYXIgPSBtX3Nlc3Npb24t
PnJlbmRlclN0YXRlKCkuZGVwdGhOZWFyKCk7CisgICAgICAgICAgICBkb3VibGUgZmFyID0gbV9z
ZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmRlcHRoRmFyKCk7CisgICAgICAgICAgICByZXR1cm4gVHJh
bnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0aW9uKGZvdi51cCwgZm92LmRvd24sIGZvdi5s
ZWZ0LCBmb3YucmlnaHQsIG5lYXIsIGZhcikudG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKKyAg
ICAgICAgfSwgWyZdKGNvbnN0IHN0ZDo6YXJyYXk8ZmxvYXQsIDE2PiYgbWF0cml4KSB7CisgICAg
ICAgICAgICByZXR1cm4gbWF0cml4OworICAgICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7
CisgICAgICAgICAgICAvLyBVc2UgYXNwZWN0IHByb2plY3Rpb24gZm9yIGlubGluZSBzZXNzaW9u
cworICAgICAgICAgICAgZG91YmxlIGZvdiA9ICBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuaW5s
aW5lVmVydGljYWxGaWVsZE9mVmlldygpLnZhbHVlT3IocGlPdmVyVHdvRG91YmxlKTsKKyAgICAg
ICAgICAgIGZsb2F0IGFzcGVjdCA9IDE7CisgICAgICAgICAgICBhdXRvIGxheWVyID0gbV9zZXNz
aW9uLT5yZW5kZXJTdGF0ZSgpLmJhc2VMYXllcigpOworICAgICAgICAgICAgaWYgKGxheWVyKQor
ICAgICAgICAgICAgICAgIGFzcGVjdCA9IHN0YXRpY19jYXN0PGRvdWJsZT4obGF5ZXItPmZyYW1l
YnVmZmVyV2lkdGgoKSkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGxheWVyLT5mcmFtZWJ1ZmZlckhl
aWdodCgpKTsKKyAgICAgICAgICAgIGRvdWJsZSBuZWFyID0gbV9zZXNzaW9uLT5yZW5kZXJTdGF0
ZSgpLmRlcHRoTmVhcigpOworICAgICAgICAgICAgZG91YmxlIGZhciA9IG1fc2Vzc2lvbi0+cmVu
ZGVyU3RhdGUoKS5kZXB0aEZhcigpOworICAgICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9u
TWF0cml4Ojpmcm9tUHJvamVjdGlvbihmb3YsIGFzcGVjdCwgbmVhciwgZmFyKS50b0NvbHVtbk1h
am9yRmxvYXRBcnJheSgpOworICAgICAgICB9KTsKKworICAgICAgICBhdXRvIHhyVmlldyA9IFdl
YlhSVmlldzo6Y3JlYXRlKHZpZXcuZXllLCBXVEZNb3ZlKHRyYW5zZm9ybSksIEZsb2F0MzJBcnJh
eTo6Y3JlYXRlKHByb2plY3Rpb24uZGF0YSgpLCBwcm9qZWN0aW9uLnNpemUoKSkpOworCisgICAg
ICAgIC8vICA4LjguIEFwcGVuZCB4cnZpZXcgdG8geHJ2aWV3cworICAgICAgICB4clZpZXdzLmFw
cGVuZChXVEZNb3ZlKHhyVmlldykpOworICAgIH0KKworICAgIC8vIDkuIFNldCBwb3Nl4oCZcyB2
aWV3cyB0byB4cnZpZXdzCisgICAgcG9zZS0+c2V0Vmlld3MoV1RGTW92ZSh4clZpZXdzKSk7CisK
KyAgICAvLyAxMC4gUmV0dXJuIHBvc2UuCisgICAgcmV0dXJuIHBvc2U7Cit9CisKK0V4Y2VwdGlv
bk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBXZWJYUkZyYW1lOjpnZXRQb3NlKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgV2ViWFJTcGFjZSYgc3BhY2UsIGNvbnN0IFdlYlhSU3BhY2UmIGJh
c2VTcGFjZSkKK3sKKyAgICAvLyAxLiBMZXQgZnJhbWUgYmUgdGhpcy4KKyAgICAvLyAyLiBMZXQg
cG9zZSBiZSBhIG5ldyBYUlBvc2Ugb2JqZWN0IGluIHRoZSByZWxldmFudCByZWFsbSBvZiBmcmFt
ZS4KKyAgICAvLyAzLiBQb3B1bGF0ZSB0aGUgcG9zZSBvZiBzcGFjZSBpbiBiYXNlU3BhY2UgYXQg
dGhlIHRpbWUgcmVwcmVzZW50ZWQgYnkgZnJhbWUgaW50byBwb3NlLgorCisgICAgYXV0byBwb3B1
bGF0ZVBvc2VSZXN1bHQgPSBwb3B1bGF0ZVBvc2UoZG9jdW1lbnQsIHNwYWNlLCBiYXNlU3BhY2Up
OworICAgIGlmIChwb3B1bGF0ZVBvc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBw
b3B1bGF0ZVZhbHVlID0gcG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwor
ICAgIGlmICghcG9wdWxhdGVWYWx1ZS5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIC8vIDQuIFJldHVybiBwb3NlLgorICAgIHJldHVybiBSZWZQdHI8V2ViWFJQb3Nl
PihXZWJYUlBvc2U6OmNyZWF0ZShXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUocG9wdWxhdGVW
YWx1ZS0+dHJhbnNmb3JtKSwgcG9wdWxhdGVWYWx1ZS0+ZW11bGF0ZWRQb3NpdGlvbikpOwogfQog
Ci1SZWZQdHI8V2ViWFJQb3NlPiBXZWJYUkZyYW1lOjpnZXRQb3NlKGNvbnN0IFdlYlhSU3BhY2Um
LCBjb25zdCBXZWJYUlNwYWNlJikKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSRnJhbWU6Om1h
dHJpeEZyb21Qb3NlKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQb3NlJiBw
b3NlKQogewotICAgIHJldHVybiB7IH07CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4
OworICAgIG1hdHJpeC50cmFuc2xhdGUzZChwb3NlLnBvc2l0aW9uLngoKSwgcG9zZS5wb3NpdGlv
bi55KCksIHBvc2UucG9zaXRpb24ueigpKTsKKyAgICBtYXRyaXgubXVsdGlwbHkoVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmZyb21RdWF0ZXJuaW9uKHBvc2Uub3JpZW50YXRpb24ueCwgcG9zZS5vcmll
bnRhdGlvbi55LCBwb3NlLm9yaWVudGF0aW9uLnosIHBvc2Uub3JpZW50YXRpb24udykpOworICAg
IHJldHVybiBtYXRyaXg7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKaW5kZXggMmEyNmFkODZhMmMzMGRhOGMyM2Rm
YjZjN2JiYjkwMzgyZDEyZTA1ZC4uZDNiOTY3NjU1YWNiYjJmZTM4ODZkYzdiNWZlMjJhODExNjU3
OGQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTI4
LDYgKzI4LDggQEAKICNpZiBFTkFCTEUoV0VCWFIpCiAKICNpbmNsdWRlICJET01IaWdoUmVzVGlt
ZVN0YW1wLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVhS
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzUsNiArMzcsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgV2ViWFJQb3NlOwogY2xhc3MgV2Vi
WFJSZWZlcmVuY2VTcGFjZTsKIGNsYXNzIFdlYlhSU2Vzc2lvbjsKQEAgLTQ0LDIzICs0NywzNyBA
QCBjbGFzcyBXZWJYUlZpZXdlclBvc2U7CiBjbGFzcyBXZWJYUkZyYW1lIDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViWFJGcmFtZT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJGcmFt
ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUkZyYW1lPiBjcmVhdGUoUmVmPFdlYlhS
U2Vzc2lvbj4mJik7CisgICAgZW51bSBjbGFzcyBJc0FuaW1hdGlvbkZyYW1lIDogYm9vbCB7IE5v
LCBZZXMgfTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSRnJhbWU+IGNyZWF0ZShSZWY8V2ViWFJTZXNz
aW9uPiYmLCBJc0FuaW1hdGlvbkZyYW1lKTsKICAgICB+V2ViWFJGcmFtZSgpOwogCiAgICAgY29u
c3QgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgp
OyB9CiAKLSAgICBSZWZQdHI8V2ViWFJWaWV3ZXJQb3NlPiBnZXRWaWV3ZXJQb3NlKGNvbnN0IFdl
YlhSUmVmZXJlbmNlU3BhY2UmKTsKLSAgICBSZWZQdHI8V2ViWFJQb3NlPiBnZXRQb3NlKGNvbnN0
IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CisgICAgRXhjZXB0aW9uT3I8UmVmUHRy
PFdlYlhSVmlld2VyUG9zZT4+IGdldFZpZXdlclBvc2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBX
ZWJYUlJlZmVyZW5jZVNwYWNlJik7CisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSUG9zZT4+
IGdldFBvc2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJT
cGFjZSYpOwogCiAgICAgdm9pZCBzZXRUaW1lKERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZSkgeyBt
X3RpbWUgPSB0aW1lOyB9CisgICAgdm9pZCBzZXRGcmFtZURhdGEoUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGEmJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KKwogICAgIHZv
aWQgc2V0QWN0aXZlKGJvb2wgYWN0aXZlKSB7IG1fYWN0aXZlID0gYWN0aXZlOyB9CiAgICAgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CiAKKyAgICBzdGF0aWMgVHJh
bnNmb3JtYXRpb25NYXRyaXggbWF0cml4RnJvbVBvc2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGE6OlBvc2UmKTsKKwogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJYUkZyYW1l
KFJlZjxXZWJYUlNlc3Npb24+JiYpOworICAgIFdlYlhSRnJhbWUoUmVmPFdlYlhSU2Vzc2lvbj4m
JiwgSXNBbmltYXRpb25GcmFtZSk7CisKKyAgICBib29sIGlzT3V0c2lkZU5hdGl2ZUJvdW5kc09m
Qm91bmRlZFJlZmVyZW5jZVNwYWNlKGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNl
JikgY29uc3Q7CisgICAgYm9vbCBpc0xvY2FsUmVmZXJlbmNlU3BhY2UoY29uc3QgV2ViWFJTcGFj
ZSYpIGNvbnN0OworICAgIGJvb2wgbXVzdFBvc2VzQmVMaW1pdGVkKGNvbnN0IFdlYlhSU3BhY2Um
LCBjb25zdCBXZWJYUlNwYWNlJikgY29uc3Q7CisKKyAgICBzdHJ1Y3QgUG9wdWxhdGVkUG9zZTsK
KyAgICBFeGNlcHRpb25PcjxPcHRpb25hbDxQb3B1bGF0ZWRQb3NlPj4gcG9wdWxhdGVQb3NlKGNv
bnN0IERvY3VtZW50JiwgY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAog
ICAgIGJvb2wgbV9hY3RpdmUgeyBmYWxzZSB9OwotICAgIERPTUhpZ2hSZXNUaW1lU3RhbXAgbV90
aW1lOworICAgIGJvb2wgbV9pc0FuaW1hdGlvbkZyYW1lIHsgZmFsc2UgfTsKKyAgICBET01IaWdo
UmVzVGltZVN0YW1wIG1fdGltZSB7IDAgfTsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YSBtX2RhdGE7CiAgICAgUmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5pZGwKaW5kZXggMjFmY2YzY2Zl
NGQ5Yzc1ZmQ3ZjQ2OGU0OTdkYjhlODAwN2I4YWRmMi4uZDM0MDI2NWIyMmQ4ODkyM2VlMmRjMjVh
NzdkZGI4Mzc5ZGE1NDBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
RnJhbWUuaWRsCkBAIC0zMyw2ICszMyw2IEBACiBdIGludGVyZmFjZSBXZWJYUkZyYW1lIHsKICAg
ICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSU2Vzc2lvbiBzZXNzaW9uOwog
Ci0gICAgV2ViWFJWaWV3ZXJQb3NlPyBnZXRWaWV3ZXJQb3NlKFdlYlhSUmVmZXJlbmNlU3BhY2Ug
cmVmZXJlbmNlU3BhY2UpOwotICAgIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNwYWNlIHNwYWNl
LCBXZWJYUlNwYWNlIGJhc2VTcGFjZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBDYWxsV2l0
aD1Eb2N1bWVudF0gV2ViWFJWaWV3ZXJQb3NlPyBnZXRWaWV3ZXJQb3NlKFdlYlhSUmVmZXJlbmNl
U3BhY2UgcmVmZXJlbmNlU3BhY2UpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgQ2FsbFdpdGg9
RG9jdW1lbnRdIFdlYlhSUG9zZT8gZ2V0UG9zZShXZWJYUlNwYWNlIHNwYWNlLCBXZWJYUlNwYWNl
IGJhc2VTcGFjZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlBvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlBvc2Uu
Y3BwCmluZGV4IDFjNWY4MGE1NDQ1NWNiZThmY2IwNzJkNTQ3YjMxOTZhOTg4Nzg2NTguLjMzOTlk
OGFlNTAwM2UyYWU0M2MwMWU0NmJkMDMzYjA5MTNiMjg2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlBvc2UpOwogCi1S
ZWY8V2ViWFJQb3NlPiBXZWJYUlBvc2U6OmNyZWF0ZSgpCitSZWY8V2ViWFJQb3NlPiBXZWJYUlBv
c2U6OmNyZWF0ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11
bGF0ZWRQb3NpdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlBvc2UpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVt
dWxhdGVkUG9zaXRpb24pKTsKIH0KIAotV2ViWFJQb3NlOjpXZWJYUlBvc2UoKQotICAgIDogbV90
cmFuc2Zvcm0oV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCitXZWJYUlBvc2U6OldlYlhS
UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0ZWRQ
b3NpdGlvbikKKyAgICA6IG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSksIG1fZW11bGF0
ZWRQb3NpdGlvbihlbXVsYXRlZFBvc2l0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlBvc2UuaAppbmRleCAyOTkxOWQyNGMzOTUzYWEzOWEyYzQ4OTRiYzdjY2U1
YzI5YzE3ZTZhLi5lYzU3OTA2ODMxNjQyNWQ4ZTk4MjMzMTk3YjY5OTBiNDE4Y2JhMWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJQb3NlLmgKQEAgLTI2LDcgKzI2LDYgQEAK
ICNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKFdFQlhSKQotCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtMzgsMTQgKzM3LDE2IEBAIGNsYXNzIFdlYlhSUmlnaWRUcmFuc2Zvcm07CiBjbGFzcyBX
ZWJYUlBvc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlBvc2U+IHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFdlYlhSUG9zZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlBv
c2U+IGNyZWF0ZSgpOwotICAgIH5XZWJYUlBvc2UoKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhSUG9z
ZT4gY3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRp
b24pOworICAgIHZpcnR1YWwgfldlYlhSUG9zZSgpOwogCiAgICAgY29uc3QgV2ViWFJSaWdpZFRy
YW5zZm9ybSYgdHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKCkg
Y29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3ZXJQb3NlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKwogcHJvdGVjdGVkOgotICAgIFdlYlhSUG9zZSgpOworICAgIFdlYlhSUG9zZShS
ZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKIAogICAg
IFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKICAgICBib29sIG1fZW11bGF0
ZWRQb3NpdGlvbiB7IGZhbHNlIH07CkBAIC01Myw0ICs1NCw5IEBAIHByb3RlY3RlZDoKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VC
WFJQT1NFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSAgICAgICAgICAgICAgICAgICAgXAor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpUb1ZhbHVlVHlwZU5hbWUpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6V2ViWFJQb3NlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LnByZWRpY2F0
ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUo
V0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9z
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUG9zZS5pZGwKaW5kZXgg
NGM0ZTlkYWRjOGVhMGFmMzE1MTg2OTQxOTNiOTI0OTY0NDc4ODAyNi4uMmU1YjM4NjRlNTk4Mjc4
MmE3OTVjZWI5YmQ3YzRlMThkNmRlMjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlBvc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJQb3NlLmlkbApAQCAtMjgsNyArMjgsNiBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhS
LAogICAgIFNlY3VyZUNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3csCi0gICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSwKICAgICBJbnRlcmZhY2VOYW1lPVhSUG9zZQogXSBpbnRlcmZhY2Ug
V2ViWFJQb3NlIHsKICAgICBbU2FtZU9iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSUmln
aWRUcmFuc2Zvcm0gdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggZDViYjBlODFmOTJjNTg5YWM3ZmM2
Yjc1NzEzNjUyNWFmMDJjYTc5Ni4uOTUyMGU1ZTdiMGUzZjJkZDIzODRiMDA1M2NlODM4NDY0NzJm
YzFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlZmVy
ZW5jZVNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVm
ZXJlbmNlU3BhY2UuY3BwCkBAIC0yOSwzMiArMjksOTggQEAKICNpZiBFTkFCTEUoV0VCWFIpCiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKKyNpbmNsdWRl
ICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgY29uc3RleHByIGRvdWJsZSBEZWZhdWx0VXNlckhlaWdodEluTWV0ZXJzID0gMS42NTsK
KwogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSUmVmZXJlbmNlU3BhY2UpOwogCiBS
ZWY8V2ViWFJSZWZlcmVuY2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNw
YWNlVHlwZSB0eXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVmZXJlbmNl
U3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIHR5cGUpKTsKKyAgICAvLyBodHRwczov
L2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4cnNwYWNlLW5hdGl2ZS1vcmlnaW4KKyAg
ICAvLyBUaGUgdHJhbnNmb3JtIGZyb20gdGhlIGVmZmVjdGl2ZSBzcGFjZSB0byB0aGUgbmF0aXZl
IG9yaWdpbidzIHNwYWNlIGlzCisgICAgLy8gZGVmaW5lZCBieSBhbiBvcmlnaW4gb2Zmc2V0LCB3
aGljaCBpcyBhbiBYUlJpZ2lkVHJhbnNmb3JtIGluaXRpYWxseSBzZXQKKyAgICAvLyB0byBhbiBp
ZGVudGl0eSB0cmFuc2Zvcm0uCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZWZlcmVu
Y2VTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9uKSwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6
Y3JlYXRlKCksIHR5cGUpKTsKK30KKworUmVmPFdlYlhSUmVmZXJlbmNlU3BhY2U+IFdlYlhSUmVm
ZXJlbmNlU3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxXZWJYUlNlc3Npb24+
JiYgc2Vzc2lvbiwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0LCBYUlJlZmVyZW5j
ZVNwYWNlVHlwZSB0eXBlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVmZXJl
bmNlU3BhY2UoZG9jdW1lbnQsIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUob2Zmc2V0KSwgdHlw
ZSkpOwogfQogCi1XZWJYUlJlZmVyZW5jZVNwYWNlOjpXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmPFdlYlhSU2Vzc2lvbj4mJiBzZXNzaW9uLCBYUlJlZmVyZW5jZVNw
YWNlVHlwZSB0eXBlKQotICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwgV1RGTW92ZShzZXNzaW9u
KSkKK1dlYlhSUmVmZXJlbmNlU3BhY2U6OldlYlhSUmVmZXJlbmNlU3BhY2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8V2ViWFJTZXNzaW9uPiYmIHNlc3Npb24sIFJlZjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiYmIG9mZnNldCwgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSkKKyAgICA6IFdlYlhSU3Bh
Y2UoZG9jdW1lbnQsIFdURk1vdmUob2Zmc2V0KSkKKyAgICAsIG1fc2Vzc2lvbihXVEZNb3ZlKHNl
c3Npb24pKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CiAKIFdlYlhSUmVmZXJlbmNlU3BhY2U6
On5XZWJYUlJlZmVyZW5jZVNwYWNlKCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8V2ViWFJSZWZlcmVu
Y2VTcGFjZT4gV2ViWFJSZWZlcmVuY2VTcGFjZTo6Z2V0T2Zmc2V0UmVmZXJlbmNlU3BhY2UoY29u
c3QgV2ViWFJSaWdpZFRyYW5zZm9ybSYpCisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSUmVm
ZXJlbmNlU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggaWRlbnRpdHk7CisKKyAgICAvLyBXZSBhc3N1bWUgdGhhdCBwb3NlcyBnb3QgZnJvbSB0
aGUgZGV2aWNlcyBhcmUgaW4gbG9jYWwgc3BhY2UuCisgICAgLy8gVGhpcyB3aWxsIHJlcXVpcmUg
bW9yZSBjb21wbGV4IGxvZ2ljIGlmIHdlIGFkZCBwb3J0cyB3aXRoIGRpZmZlcmVudCBkZWZhdWx0
IGNvb3JkaW5hdGVzLgorICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBYUlJlZmVyZW5j
ZVNwYWNlVHlwZTo6Vmlld2VyOiB7CisgICAgICAgIC8vIFJldHVybiB0aGUgY3VycmVudCBwb3Nl
LiBDb250ZW50IHJlbmRlcmVkIGluIHZpZXdlciBwb3NlIHdpbGwgc3RheSBpbiBmaXhlZCBwb2lu
dCBvbiBITURzLgorICAgICAgICBhdXRvJiBkYXRhID0gbV9zZXNzaW9uLT5mcmFtZURhdGEoKTsK
KyAgICAgICAgcmV0dXJuIFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKGRhdGEub3JpZ2luKTsK
KyAgICB9CisgICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWw6CisgICAgICAgIC8v
IERhdGEgZnJvbSB0aGUgZGV2aWNlIGlzIGFscmVhZHkgaW4gbG9jYWwsIHVzZSB0aGUgaWRlbnRp
dHkgbWF0cml4LgorICAgICAgICByZXR1cm4gaWRlbnRpdHk7CisgICAgY2FzZSBYUlJlZmVyZW5j
ZVNwYWNlVHlwZTo6VW5ib3VuZGVkOgorICAgICAgICAvLyBMb2NhbCBhbmQgdW5ib3VuZGVkIHVz
ZSB0aGUgc2FtZSBkZXZpY2Ugc3BhY2UsIHVzZSB0aGUgaWRlbnRpdHkgbWF0cml4LgorICAgICAg
ICByZXR1cm4gaWRlbnRpdHk7CisgICAgY2FzZSBYUlJlZmVyZW5jZVNwYWNlVHlwZTo6TG9jYWxG
bG9vcjogeworICAgICAgICAvLyBVc2UgdGhlIGZsb29yIHRyYW5zZm9ybSBwcm92aWRlZCBieSB0
aGUgZGV2aWNlIG9yIGZhbGxiYWNrIHRvIGEgZGVmYXVsdCBoZWlnaHQuCisgICAgICAgIHJldHVy
biBmbG9vck9yaWdpblRyYW5zZm9ybSgpOworICAgIH0KKyAgICBjYXNlIFhSUmVmZXJlbmNlU3Bh
Y2VUeXBlOjpCb3VuZGVkRmxvb3I6CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gQm91bmRlZEZs
b29yIGlzIGhhbmRsZWQgYnkgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2Ugc3ViY2xhc3MKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
aWRlbnRpdHk7Cit9CisKK1JlZlB0cjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBXZWJYUlJlZmVyZW5j
ZVNwYWNlOjpnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3Jt
JiBvZmZzZXRUcmFuc2Zvcm0pCiB7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
CisgICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBBU1NFUlQoaXM8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOwotICAg
IHJldHVybiBjcmVhdGUoZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpLCBtX3Nlc3Npb24uY29weVJlZigpLCBtX3R5cGUpOworCisgICAgLy8gaHR0cHM6Ly9pbW1l
cnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhycmVmZXJlbmNlc3BhY2UtZ2V0b2Zmc2V0
cmVmZXJlbmNlc3BhY2UKKyAgICAvLyBTZXQgb2Zmc2V0U3BhY2XigJlzIG9yaWdpbiBvZmZzZXQg
dG8gdGhlIHJlc3VsdCBvZiBtdWx0aXBseWluZyBiYXNl4oCZcyBvcmlnaW4gb2Zmc2V0IGJ5IG9y
aWdpbk9mZnNldCBpbiB0aGUgcmVsZXZhbnQgcmVhbG0gb2YgYmFzZS4KKyAgICBhdXRvIG9mZnNl
dCA9IFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZShvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zv
cm0oKSAqIG9mZnNldFRyYW5zZm9ybS5yYXdUcmFuc2Zvcm0oKSk7CisKKyAgICByZXR1cm4gY3Jl
YXRlKCpkb2N1bWVudCwgbV9zZXNzaW9uLmNvcHlSZWYoKSwgV1RGTW92ZShvZmZzZXQpLCBtX3R5
cGUpOworfQorCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUlJlZmVyZW5jZVNwYWNlOjpmbG9v
ck9yaWdpblRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgYXV0byYgZGF0YSA9IG1fc2Vzc2lvbi0+
ZnJhbWVEYXRhKCk7CisgICAgaWYgKCFkYXRhLmZsb29yVHJhbnNmb3JtKSB7CisgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGRlZmF1dFRyYW5zZm9ybTsKKyAgICAgICAgZGVmYXV0VHJhbnNm
b3JtLnRyYW5zbGF0ZTNkKDAuMCwgLURlZmF1bHRVc2VySGVpZ2h0SW5NZXRlcnMsIDAuMCk7Cisg
ICAgICAgIHJldHVybiBkZWZhdXRUcmFuc2Zvcm07CisgICAgfQorCisgICAgLy8gaHR0cHM6Ly9p
bW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jZG9tLXhycmVmZXJlbmNlc3BhY2V0eXBlLWxv
Y2FsLWZsb29yCisgICAgLy8gR2V0IGZsb29yIGVzdGltYXRpb24gZnJvbSB0aGUgZGV2aWNlCisg
ICAgLy8gRklYTUU6IFJvdW5kIHRvIG5lYXJlc3QgMWNtIHRvIHByZXZlbnQgZmluZ2VycHJpbnRp
bmcKKyAgICByZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoKmRhdGEuZmxvb3JUcmFu
c2Zvcm0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVuY2VTcGFjZS5oCmluZGV4IGEyYzgwNTFmNTlj
MjI3ZDg3Nzc5NWMyYmI4ZjZlNzM2M2RlOGYzZTMuLmQ1MDIyOWI5MjUzMjZmZjhlNzM5Y2M1OGU4
MzhlMzhkZmEzYjk5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJSZWZlcmVuY2VTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJSZWZlcmVuY2VTcGFjZS5oCkBAIC0zNywyMSArMzcsMzkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKIGNsYXNzIFdlYlhSU2Vzc2lvbjsKIAot
Y2xhc3MgV2ViWFJSZWZlcmVuY2VTcGFjZSA6IHB1YmxpYyBXZWJYUlNwYWNlIHsKK2NsYXNzIFdl
YlhSUmVmZXJlbmNlU3BhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUlJlZmVyZW5jZVNwYWNl
PiwgcHVibGljIFdlYlhSU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJS
ZWZlcmVuY2VTcGFjZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNw
YWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBYUlJlZmVyZW5jZVNw
YWNlVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJYUlJlZmVyZW5jZVNwYWNlPiBjcmVhdGUoRG9j
dW1lbnQmLCBSZWY8V2ViWFJTZXNzaW9uPiYmLCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwg
WFJSZWZlcmVuY2VTcGFjZVR5cGUpOwogCiAgICAgdmlydHVhbCB+V2ViWFJSZWZlcmVuY2VTcGFj
ZSgpOwogCi0gICAgUmVmUHRyPFdlYlhSUmVmZXJlbmNlU3BhY2U+IGdldE9mZnNldFJlZmVyZW5j
ZVNwYWNlKGNvbnN0IFdlYlhSUmlnaWRUcmFuc2Zvcm0mKTsKKyAgICB1c2luZyBSZWZDb3VudGVk
PFdlYlhSUmVmZXJlbmNlU3BhY2U+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUlJl
ZmVyZW5jZVNwYWNlPjo6ZGVyZWY7CisKKyAgICBXZWJYUlNlc3Npb24mIHNlc3Npb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBuYXRpdmVPcmlnaW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJYUlJlZmVyZW5jZVNwYWNlPiBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShjb25zdCBXZWJYUlJp
Z2lkVHJhbnNmb3JtJik7CisgICAgWFJSZWZlcmVuY2VTcGFjZVR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViWFJSZWZlcmVuY2VTcGFjZShE
b2N1bWVudCYsIFJlZjxXZWJYUlNlc3Npb24+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKyAg
ICBXZWJYUlJlZmVyZW5jZVNwYWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJiwgUmVm
PFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFhSUmVmZXJlbmNlU3BhY2VUeXBlKTsKKworICAgIGJv
b2wgaXNSZWZlcmVuY2VTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsb29yT3JpZ2luVHJhbnNmb3JtKCkgY29uc3Q7CiAKKyAg
ICBSZWY8V2ViWFJTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgWFJSZWZlcmVuY2VTcGFjZVR5cGUg
bV90eXBlOworCitwcml2YXRlOgorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJl
ZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0VC
WFJTUEFDRShXZWJYUlJlZmVyZW5jZVNwYWNlLCBpc1JlZmVyZW5jZVNwYWNlKCkpCisKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSUmVmZXJlbmNlU3BhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlJlZmVyZW5jZVNwYWNlLmlkbAppbmRleCAyODM1MDdmNDQ1YTUyZmUyZTE3MTk2NmY1
MDczYmMxM2I0OWZjNTNiLi44MWU0NGQzNGRhMTY3YjhmZTZkYjIzNGMyNDBjOTM4NTYzNTI1OTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVmZXJlbmNl
U3BhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZWZlcmVu
Y2VTcGFjZS5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCisgICAg
U2tpcFZUYWJsZVZhbGlkYXRpb24sCiAgICAgSW50ZXJmYWNlTmFtZT1YUlJlZmVyZW5jZVNwYWNl
CiBdIGludGVyZmFjZSBXZWJYUlJlZmVyZW5jZVNwYWNlIDogV2ViWFJTcGFjZSB7CiAgICAgW05l
d09iamVjdF0gV2ViWFJSZWZlcmVuY2VTcGFjZSBnZXRPZmZzZXRSZWZlcmVuY2VTcGFjZShXZWJY
UlJpZ2lkVHJhbnNmb3JtIG9yaWdpbk9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggYmQ2YzUwMWNiN2VjNWE3MWNiN2E3MDdiMTk5
OWZkOWJhOTI4OGIyYy4uZTViNGNmZGY1N2M1YmQ4Y2IzYTg1ZDU5ZmI3ZDJjYjAwNjhiYzI3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcApAQCAt
MjgsMTEgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU1dlYlhSUmVmZXJlbmNl
U3BhY2UuaCIKICNpbmNsdWRlICJXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5oIgogI2luY2x1
ZGUgIldlYlhSRnJhbWUuaCIKICNpbmNsdWRlICJXZWJYUlN5c3RlbS5oIgorI2luY2x1ZGUgIldl
YlhSVmlldy5oIgogI2luY2x1ZGUgIlhSRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCIKICNpbmNsdWRl
ICJYUlJlbmRlclN0YXRlSW5pdC5oIgogI2luY2x1ZGUgIlhSU2Vzc2lvbkV2ZW50LmgiCkBAIC01
NSw3ICs1Nyw5IEBAIFdlYlhSU2Vzc2lvbjo6V2ViWFJTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgV2ViWFJTeXN0ZW0mIHN5c3RlbSwgWFJTZXNzaW9uTW9kCiAgICAgLCBtX21vZGUobW9kZSkK
ICAgICAsIG1fZGV2aWNlKG1ha2VXZWFrUHRyKGRldmljZSkpCiAgICAgLCBtX2FjdGl2ZVJlbmRl
clN0YXRlKFdlYlhSUmVuZGVyU3RhdGU6OmNyZWF0ZShtb2RlKSkKKyAgICAsIG1fdmlld2VyUmVm
ZXJlbmNlU3BhY2UobWFrZVVuaXF1ZTxXZWJYUlZpZXdlclNwYWNlPihkb2N1bWVudCwgKnRoaXMp
KQogICAgICwgbV90aW1lT3JpZ2luKE1vbm90b25pY1RpbWU6Om5vdygpKQorICAgICwgbV92aWV3
cyhkZXZpY2Uudmlld3MobW9kZSkpCiB7CiAgICAgbV9kZXZpY2UtPmluaXRpYWxpemVUcmFja2lu
Z0FuZFJlbmRlcmluZyhtb2RlKTsKICAgICBtX2RldmljZS0+c2V0VHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQobWFrZVdlYWtQdHIoKnRoaXMpKTsKQEAgLTQ3OCwxMyArNDgyLDE1IEBAIHZvaWQg
V2ViWFJTZXNzaW9uOjpvbkZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYgZnJh
bWVEYXRhKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gcGVyZm9y
bSB0aGUgZm9sbG93aW5nIHN0ZXBzLgotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6V2ViWFIsIFt0aGlzLCBmcmFtZURhdGEgPSBXVEZNb3ZlKGZyYW1l
RGF0YSldKCkgeworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6V2ViWFIsIFt0aGlzLCBmcmFtZURhdGEgPSBXVEZNb3ZlKGZyYW1lRGF0YSldKCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChtX2VuZGVkKQogICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIG1fZnJhbWVEYXRhID0gZnJhbWVEYXRhOwogICAgICAgICAvLyAgMS5MZXQgbm93IGJlIHRo
ZSBjdXJyZW50IGhpZ2ggcmVzb2x1dGlvbiB0aW1lLgogICAgICAgICBhdXRvIG5vdyA9IChNb25v
dG9uaWNUaW1lOjpub3coKSAtIG1fdGltZU9yaWdpbikubWlsbGlzZWNvbmRzKCk7CiAKLSAgICAg
ICAgYXV0byBmcmFtZSA9IFdlYlhSRnJhbWU6OmNyZWF0ZShtYWtlUmVmKCp0aGlzKSk7CisgICAg
ICAgIGF1dG8gZnJhbWUgPSBXZWJYUkZyYW1lOjpjcmVhdGUobWFrZVJlZigqdGhpcyksIFdlYlhS
RnJhbWU6OklzQW5pbWF0aW9uRnJhbWU6Olllcyk7CiAgICAgICAgIC8vICAyLkxldCBmcmFtZSBi
ZSBzZXNzaW9u4oCZcyBhbmltYXRpb24gZnJhbWUuCiAgICAgICAgIC8vICAzLlNldCBmcmFtZeKA
mXMgdGltZSB0byBmcmFtZVRpbWUuCiAgICAgICAgIGZyYW1lLT5zZXRUaW1lKHN0YXRpY19jYXN0
PERPTUhpZ2hSZXNUaW1lU3RhbXA+KGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSkpOwpA
QCAtNTA4LDcgKzUxNCw3IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpvbkZyYW1lKFBsYXRmb3JtWFI6
OkRldmljZTo6RnJhbWVEYXRhJiYgZnJhbWVEYXRhKQogICAgICAgICAgICAgZnJhbWUtPnNldEFj
dGl2ZSh0cnVlKTsKIAogICAgICAgICAgICAgLy8gNi40LkFwcGx5IGZyYW1lIHVwZGF0ZXMgZm9y
IGZyYW1lLgotICAgICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudC4KKyAgICAgICAgICAgIGZy
YW1lLT5zZXRGcmFtZURhdGEoV1RGTW92ZShmcmFtZURhdGEpKTsKIAogICAgICAgICAgICAgLy8g
Ni41LkZvciBlYWNoIGVudHJ5IGluIHNlc3Npb27igJlzIGxpc3Qgb2YgY3VycmVudGx5IHJ1bm5p
bmcgYW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrcywgaW4gb3JkZXI6CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKSB7CkBAIC01MzcsNiArNTQzLDI1IEBAIHZvaWQg
V2ViWFJTZXNzaW9uOjpvbkZyYW1lKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiYgZnJh
bWVEYXRhKQogICAgIH0pOwogfQogCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlv
L3dlYnhyLyNwb3Nlcy1tYXktYmUtcmVwb3J0ZWQKK2Jvb2wgV2ViWFJTZXNzaW9uOjpwb3Nlc0Nh
bkJlUmVwb3J0ZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAoreworICAgIC8vIDEu
IElmIHNlc3Npb27igJlzIHJlbGV2YW50IGdsb2JhbCBvYmplY3QgaXMgbm90IHRoZSBjdXJyZW50
IGdsb2JhbCBvYmplY3QsIHJldHVybiBmYWxzZS4KKyAgICBhdXRvKiBzZXNzaW9uRG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAo
IXNlc3Npb25Eb2N1bWVudCB8fCBzZXNzaW9uRG9jdW1lbnQtPmRvbVdpbmRvdygpICE9IGRvY3Vt
ZW50LmRvbVdpbmRvdygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyAyLiBJZiBz
ZXNzaW9uJ3MgdmlzaWJpbGl0eVN0YXRlIGluIG5vdCAidmlzaWJsZSIsIHJldHVybiBmYWxzZS4K
KyAgICBpZiAobV92aXNpYmlsaXR5U3RhdGUgIT0gWFJWaXNpYmlsaXR5U3RhdGU6OlZpc2libGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIDUuIERldGVybWluZSBpZiB0aGUgcG9z
ZSBkYXRhIGNhbiBiZSByZXR1cm5lZCBhcyBmb2xsb3dzOgorICAgIC8vIFRoZSBwcm9jZWR1cmUg
aW4gdGhlIHNwZWNzIHRyaWVzIHRvIGVuc3VyZSB0aGF0IHdlIGFwcGx5IG1lYXN1cmVzIHRvCisg
ICAgLy8gcHJldmVudCBmaW5nZXJwcmludGludCBpbiBwb3NlIGRhdGEgYW5kIHJldHVybiBmYWxz
ZSBpbiBjYXNlIHdlIGRvbid0LgorICAgIC8vIFdlJ3JlIGdvaW5nIHRvIGFwcGx5IHRoZW0gc28g
bGV0J3MganVzdCByZXR1cm4gdHJ1ZS4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKaW5kZXggZDgzNjNhNWM5MzFjZjUwZjdiNmUz
MTlhZWVkYjNlOGEyMzM0ZmVlNS4uZGYzM2FjNmU0ZDFiNWQ2YTFiNTkyYzAxMTcyMzA0MjViZjgx
YjM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBA
IC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlhS
SW5wdXRTb3VyY2VBcnJheS5oIgogI2luY2x1ZGUgIldlYlhSUmVuZGVyU3RhdGUuaCIKLSNpbmNs
dWRlICJXZWJYUlNwYWNlLmgiCiAjaW5jbHVkZSAiWFJFbnZpcm9ubWVudEJsZW5kTW9kZS5oIgog
I2luY2x1ZGUgIlhSSW50ZXJhY3Rpb25Nb2RlLmgiCiAjaW5jbHVkZSAiWFJSZWZlcmVuY2VTcGFj
ZVR5cGUuaCIKQEAgLTQ4LDggKzQ3LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
WFJGcmFtZVJlcXVlc3RDYWxsYmFjazsKLWNsYXNzIFdlYlhSUmVmZXJlbmNlU3BhY2U7CiBjbGFz
cyBXZWJYUlN5c3RlbTsKK2NsYXNzIFdlYlhSVmlldzsKK2NsYXNzIFdlYlhSVmlld2VyU3BhY2U7
CiBzdHJ1Y3QgWFJSZW5kZXJTdGF0ZUluaXQ7CiAKIGNsYXNzIFdlYlhSU2Vzc2lvbiBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSU2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgUGxhdGZvcm1YUjo6VHJh
Y2tpbmdBbmRSZW5kZXJpbmdDbGllbnQgewpAQCAtOTAsNiArOTAsMTEgQEAgcHVibGljOgogCiAg
ICAgWFJTZXNzaW9uTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAKKyAgICBj
b25zdCBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4mIHZpZXdzKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3czsgfQorICAgIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhJiBmcmFtZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lRGF0YTsgfQorICAgIGNvbnN0
IFdlYlhSVmlld2VyU3BhY2UmIHZpZXdlclJlZmVyZW5jZVNwYWNlKCkgY29uc3QgeyByZXR1cm4g
Km1fdmlld2VyUmVmZXJlbmNlU3BhY2U7IH0KKyAgICBib29sIHBvc2VzQ2FuQmVSZXBvcnRlZChj
b25zdCBEb2N1bWVudCYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYlhSU2Vzc2lvbihEb2N1
bWVudCYsIFdlYlhSU3lzdGVtJiwgWFJTZXNzaW9uTW9kZSwgUGxhdGZvcm1YUjo6RGV2aWNlJik7
CiAKQEAgLTEyOCwxMSArMTMzLDE1IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxQbGF0Zm9ybVhS
OjpEZXZpY2U+IG1fZGV2aWNlOwogICAgIFJlZlB0cjxXZWJYUlJlbmRlclN0YXRlPiBtX2FjdGl2
ZVJlbmRlclN0YXRlOwogICAgIFJlZlB0cjxXZWJYUlJlbmRlclN0YXRlPiBtX3BlbmRpbmdSZW5k
ZXJTdGF0ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViWFJWaWV3ZXJTcGFjZT4gbV92aWV3ZXJS
ZWZlcmVuY2VTcGFjZTsKICAgICBNb25vdG9uaWNUaW1lIG1fdGltZU9yaWdpbjsKIAogICAgIHVu
c2lnbmVkIG1fbmV4dENhbGxiYWNrSWQgeyAxIH07CiAgICAgVmVjdG9yPFJlZjxYUkZyYW1lUmVx
dWVzdENhbGxiYWNrPj4gbV9jYWxsYmFja3M7CiAKKyAgICBWZWN0b3I8UGxhdGZvcm1YUjo6RGV2
aWNlOjpWaWV3RGF0YT4gbV92aWV3czsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YSBtX2ZyYW1lRGF0YTsKKwogICAgIGRvdWJsZSBtX21pbmltdW1JbmxpbmVGT1YgeyAwLjAgfTsK
ICAgICBkb3VibGUgbV9tYXhpbXVtSW5saW5lRk9WIHsgcGlGbG9hdCB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3BhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmNwcAppbmRleCA1MjQyNTRmYTQ2NzdiOGRi
MTUyMzU1MDYyOGQzYTc5ZTY5MjI2OTE0Li5mYTg4MWQ0YmJiNGY1NTFiZDZhMzI4MjkyYjAyMjll
YTE3ZDk0OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5j
cHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKIAorI2luY2x1ZGUgIkRP
TVBvaW50UmVhZE9ubHkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIldlYlhS
UmlnaWRUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC0zNiwxNCArMzgsMzggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJTcGFjZSk7CiAKLVdl
YlhSU3BhY2U6OldlYlhSU3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8V2ViWFJTZXNzaW9u
PiYmIHNlc3Npb24pCitXZWJYUlNwYWNlOjpXZWJYUlNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwg
UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb2Zmc2V0KQogICAgIDogQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIoJmRvY3VtZW50KQotICAgICwgbV9zZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikp
CisgICAgLCBtX29yaWdpbk9mZnNldChXVEZNb3ZlKG9mZnNldCkpCiB7CiB9CiAKIFdlYlhSU3Bh
Y2U6On5XZWJYUlNwYWNlKCkgPSBkZWZhdWx0OwogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJY
UlNwYWNlOjplZmZlY3RpdmVPcmlnaW4oKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vaW1tZXJz
aXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3hyc3BhY2UtZWZmZWN0aXZlLW9yaWdpbgorICAgIC8v
IFRoZSBlZmZlY3RpdmUgb3JpZ2luIGNhbiBiZSBvYnRhaW5lZCBieSBtdWx0aXBseWluZyBvcmln
aW4gb2Zmc2V0IGFuZCB0aGUgbmF0aXZlIG9yaWdpbi4KKyAgICByZXR1cm4gbV9vcmlnaW5PZmZz
ZXQtPnJhd1RyYW5zZm9ybSgpICogbmF0aXZlT3JpZ2luKCk7Cit9CisKKworV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFdlYlhSVmlld2VyU3BhY2UpOworCitXZWJYUlZpZXdlclNwYWNlOjpX
ZWJYUlZpZXdlclNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9u
KQorICAgIDogV2ViWFJTcGFjZShkb2N1bWVudCwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRl
KCkpCisgICAgLCBtX3Nlc3Npb24oc2Vzc2lvbikKK3sKK30KKworV2ViWFJWaWV3ZXJTcGFjZTo6
fldlYlhSVmlld2VyU3BhY2UoKSA9IGRlZmF1bHQ7CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFdl
YlhSVmlld2VyU3BhY2U6Om5hdGl2ZU9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlhS
RnJhbWU6Om1hdHJpeEZyb21Qb3NlKG1fc2Vzc2lvbi5mcmFtZURhdGEoKS5vcmlnaW4pOworfQor
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTcGFjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNlLmgKaW5kZXggN2YxYzRlOTc0NzM5
YTcwY2M0YjBjMGIxY2ViZjE4ZTVmYjg0OTkwZC4uNGE5ZGJlZmRkM2I1NDdmOGEwNjIzZDI2NTY0
OWQ2ZjkwYmI5YmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNwYWNl
LmgKQEAgLTI5LDM3ICsyOSw2NyBAQAogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CitjbGFzcyBXZWJYUlJpZ2lkVHJhbnNmb3JtOwogY2xhc3MgV2ViWFJTZXNzaW9uOwogCi1jbGFz
cyBXZWJYUlNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJTcGFjZT4sIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIg
eworY2xhc3MgV2ViWFJTcGFjZSA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoV2ViWFJTcGFjZSk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViWFJTcGFjZSgpOwog
Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUlNwYWNlPjo6cmVmOwotICAgIHVzaW5nIFJlZkNv
dW50ZWQ8V2ViWFJTcGFjZT46OmRlcmVmOworICAgIHZpcnR1YWwgV2ViWFJTZXNzaW9uJiBzZXNz
aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZl
T3JpZ2luKCkgY29uc3QgPSAwOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGVmZmVjdGl2ZU9y
aWdpbigpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzUmVmZXJlbmNlU3BhY2UoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0JvdW5kZWRSZWZlcmVuY2VT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJYUlNw
YWNlKERvY3VtZW50JiwgUmVmPFdlYlhSU2Vzc2lvbj4mJik7CisgICAgV2ViWFJTcGFjZShEb2N1
bWVudCYsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmKTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0
Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICBjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiBvcmln
aW5PZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbk9mZnNldC5nZXQoKTsgfQogCi0gICAg
UmVmPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7IH0KIAogcHJpdmF0ZToKICAgICAvLyBFdmVudFRhcmdldAotICAgIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
V2ViWFJTcGFjZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXZWJYUlNwYWNlRXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOyB9CisKKyAgICBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV9vcmlnaW5P
ZmZzZXQ7Cit9OworCisvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyN4
cnNlc3Npb24tdmlld2VyLXJlZmVyZW5jZS1zcGFjZQorLy8gVGhpcyBpcyBhIGhlbHBlciBjbGFz
cyB0byBpbXBsZW1lbnQgdGhlIHZpZXdlciBzcGFjZSBvd25lZCBieSBhIFdlYlhSU2Vzc2lvbi4K
Ky8vIEl0IGF2b2lkcyBhIGNpcmN1bGFyIHJlZmVyZW5jZSBiZXR3ZWVuIHRoZSBzZXNzaW9uIGFu
ZCB0aGUgcmVmZXJlbmNlIHNwYWNlLgorY2xhc3MgV2ViWFJWaWV3ZXJTcGFjZSA6IHB1YmxpYyBX
ZWJYUlNwYWNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSVmlld2VyU3BhY2Up
OworcHVibGljOgorICAgIFdlYlhSVmlld2VyU3BhY2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24m
KTsKKyAgICB2aXJ0dWFsIH5XZWJYUlZpZXdlclNwYWNlKCk7CisKK3ByaXZhdGU6CisgICAgV2Vi
WFJTZXNzaW9uJiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uOyB9Cisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICBXZWJYUlNlc3Npb24mIG1fc2Vzc2lvbjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dFQlhSU1BBQ0UoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldlYlhSU3BhY2UmIGNvbnRleHQpIHsgcmV0dXJuIGNv
bnRleHQucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlN5c3RlbS5jcHAKaW5kZXggODUwNjJmZDUzZDZmMGQyYWQ4OTVlZjhkM2JkMWUwOTlhYTBiM2Q4
Yy4uYTI2YzYyNjU4YzA3NWE2MWE2Y2M4ZmJmYjcyOWFjYjE1ZTg5OWFjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTUyMSwxMiArNTIxLDIx
IEBAIHZvaWQgV2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUGxh
dGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
cmFmID0gSW5saW5lUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s6OmNyZWF0ZSgqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgUGxhdGZvcm1YUjo6RGV2aWNl
OjpGcmFtZURhdGEgZGF0YTsKKyAgICAgICAgZGF0YS5pc1RyYWNraW5nVmFsaWQgPSB0cnVlOwor
ICAgICAgICBkYXRhLmlzUG9zaXRpb25WYWxpZCA9IHRydWU7CisgICAgICAgIGRhdGEudmlld3Mu
YXBwZW5kKHsgfSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZGF0YSkpOwogICAgIH0pOwog
CiAgICAgZG9jdW1lbnQtPnJlcXVlc3RBbmltYXRpb25GcmFtZShyYWYpOwogfQogCitWZWN0b3I8
UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0YT4gV2ViWFJTeXN0ZW06OkR1bW15SW5saW5lRGV2
aWNlOjp2aWV3cyhYUlNlc3Npb25Nb2RlKSBjb25zdAoreworICAgIHJldHVybiB7IHsgLmFjdGl2
ZSA9IHRydWUsIFBsYXRmb3JtWFI6OkV5ZTo6Tm9uZSB9IH07Cit9CisKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgK
aW5kZXggMWRlOGI3NWI3OTUwNjdmMzFhMDliY2M2NzA3MGNkYjE4YzZmMmFlNy4uMTAyNGQwZjVh
NGYzYzFmNmI0MWFkZjdmOTZiZDgzY2MzODRhZDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uaApAQCAtMTExLDkgKzExMSwxMCBAQCBwcml2YXRlOgogICAg
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBs
YXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBmaW5hbCB7IH0KICAgICAgICAgdm9pZCBzaHV0RG93blRy
YWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWwgeyB9Ci0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZVJl
ZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkgZmluYWwgeyB9Owor
ICAgICAgICB2b2lkIGluaXRpYWxpemVSZWZlcmVuY2VTcGFjZShQbGF0Zm9ybVhSOjpSZWZlcmVu
Y2VTcGFjZVR5cGUpIGZpbmFsIHsgfQogCiAgICAgICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRm
b3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CisgICAgICAgIFZl
Y3RvcjxEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhYUlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsK
ICAgICB9OwogICAgIER1bW15SW5saW5lRGV2aWNlIG1fZGVmYXVsdElubGluZURldmljZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCmluZGV4IDFhOThjYjE0
NTA0NTlmZjI2NTYzOGY1OGRmNDhiYjRmY2NmZjMwYmUuLjQzZDEwYjg3ZmY2Y2NiYjc1MDEwMDE1
OTMxY2IwZmNmN2E0YjBiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Vmlldy5jcHAKQEAgLTM2LDIzICszNiwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJYUlZpZXcpOwogCi1SZWY8V2ViWFJWaWV3PiBXZWJY
UlZpZXc6OmNyZWF0ZSgpCitSZWY8V2ViWFJWaWV3PiBXZWJYUlZpZXc6OmNyZWF0ZShYUkV5ZSBl
eWUsIFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgUmVmPEZsb2F0MzJBcnJh
eT4mJiBwcm9qZWN0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSVmlldyk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJWaWV3KGV5ZSwgV1RGTW92ZSh0cmFuc2Zv
cm0pLCBXVEZNb3ZlKHByb2plY3Rpb24pKSk7CiB9CiAKLVdlYlhSVmlldzo6V2ViWFJWaWV3KCkK
LSAgICA6IG1fZXllKFhSRXllOjpOb25lKQorV2ViWFJWaWV3OjpXZWJYUlZpZXcoWFJFeWUgZXll
LCBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIFJlZjxGbG9hdDMyQXJyYXk+
JiYgcHJvamVjdGlvbikKKyAgICA6IG1fZXllKGV5ZSkKKyAgICAsIG1fdHJhbnNmb3JtKFdURk1v
dmUodHJhbnNmb3JtKSkKKyAgICAsIG1fcHJvamVjdGlvbihwcm9qZWN0aW9uKQogewogfQogCiBX
ZWJYUlZpZXc6On5XZWJYUlZpZXcoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViWFJWaWV3OjpzZXRQ
cm9qZWN0aW9uTWF0cml4KGNvbnN0IFZlY3RvcjxmbG9hdD4mIG1hdHJpeCkKLXsKLSAgICBtX3By
b2plY3Rpb25NYXRyaXggPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZShtYXRyaXguZGF0YSgpLCBtYXRy
aXguc2l6ZSgpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmgKaW5kZXgg
MzlhMDljZTEwYmFhYTJjMjc5N2M4NzU1NzM3MWMyYmY3ODhhYzRlNS4uNGI2NjA2OTExODI2OGQ0
YWIzZjg1NzY1ODVhNzhjOTAyMDMwYmJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSVmlldy5oCkBAIC0zNywyOCArMzcsMjUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBXZWJYUkZyYW1lOwogY2xhc3MgV2ViWFJSaWdpZFRyYW5zZm9ybTsKIAogY2xhc3Mg
V2ViWFJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJWaWV3PiB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9FWFBPUlQoV2ViWFJWaWV3LCBXRUJDT1JFX0VYUE9SVCk7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxXZWJYUlZpZXc+IGNyZWF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8V2ViWFJWaWV3PiBjcmVhdGUoWFJFeWUsIFJlZjxX
ZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBSZWY8RmxvYXQzMkFycmF5PiYmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB+V2ViWFJWaWV3KCk7CiAKICAgICBYUkV5ZSBleWUoKSBjb25zdCB7IHJldHVybiBt
X2V5ZTsgfQotICAgIGNvbnN0IEZsb2F0MzJBcnJheSYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0
IHsgcmV0dXJuICptX3Byb2plY3Rpb25NYXRyaXg7IH0KLSAgICBjb25zdCBXZWJYUlJpZ2lkVHJh
bnNmb3JtJiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiAqbV90cmFuc2Zvcm07IH0KLQotICAg
IHZvaWQgc2V0RXllKFhSRXllIGV5ZSkgeyBtX2V5ZSA9IGV5ZTsgfQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0UHJvamVjdGlvbk1hdHJpeChjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7Ci0gICAg
dm9pZCBzZXRUcmFuc2Zvcm0oUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdmlld09mZnNl
dCkgeyBtX3RyYW5zZm9ybSA9IFdURk1vdmUodmlld09mZnNldCk7IH0KKyAgICBjb25zdCBGbG9h
dDMyQXJyYXkmIHByb2plY3Rpb25NYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX3Byb2plY3Rpb24u
Z2V0KCk7IH0KKyAgICBjb25zdCBXZWJYUlJpZ2lkVHJhbnNmb3JtJiB0cmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3RyYW5zZm9ybS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFdlYlhSVmll
dygpOworICAgIFdlYlhSVmlldyhYUkV5ZSwgUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYsIFJl
ZjxGbG9hdDMyQXJyYXk+JiYpOwogCiAgICAgWFJFeWUgbV9leWU7Ci0gICAgUmVmUHRyPEZsb2F0
MzJBcnJheT4gbV9wcm9qZWN0aW9uTWF0cml4OwotICAgIFJlZlB0cjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiBtX3RyYW5zZm9ybTsKKyAgICBSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4gbV90cmFuc2Zv
cm07CisgICAgUmVmPEZsb2F0MzJBcnJheT4gbV9wcm9qZWN0aW9uOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlZpZXdlclBvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZp
ZXdlclBvc2UuY3BwCmluZGV4IDYwNjNjOTVmMzY0M2FkYWIwYTI4MWRhODhiM2NiYWU2NWE3OTdi
MDkuLmU0OWU2Yzc4NzRhZDMyM2Y1ZjU4NTkzMzRjMjc3YmIzYmFlMmYxYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5jcHAKQEAgLTI1LDE3
ICsyNSwyNCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViWFJWaWV3ZXJQ
b3NlLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogI2lmIEVOQUJMRShX
RUJYUikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViWFJWaWV3ZXJQb3NlPiBXZWJY
UlZpZXdlclBvc2U6OmNyZWF0ZSgpCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJW
aWV3ZXJQb3NlKTsKKworUmVmPFdlYlhSVmlld2VyUG9zZT4gV2ViWFJWaWV3ZXJQb3NlOjpjcmVh
dGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9z
aXRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJWaWV3ZXJQb3NlKFdURk1v
dmUodHJhbnNmb3JtKSwgZW11bGF0ZWRQb3NpdGlvbikpOworfQorCitXZWJYUlZpZXdlclBvc2U6
OldlYlhSVmlld2VyUG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJv
b2wgZW11bGF0ZWRQb3NpdGlvbikKKyAgICA6IFdlYlhSUG9zZShXVEZNb3ZlKHRyYW5zZm9ybSks
IGVtdWxhdGVkUG9zaXRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJWaWV3
ZXJQb3NlKTsKIH0KIAotV2ViWFJWaWV3ZXJQb3NlOjpXZWJYUlZpZXdlclBvc2UoKSA9IGRlZmF1
bHQ7CiBXZWJYUlZpZXdlclBvc2U6On5XZWJYUlZpZXdlclBvc2UoKSA9IGRlZmF1bHQ7CiAKIGNv
bnN0IFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4mIFdlYlhSVmlld2VyUG9zZTo6dmlld3MoKSBjb25z
dApAQCAtNDMsNiArNTAsMTEgQEAgY29uc3QgVmVjdG9yPFJlZjxXZWJYUlZpZXc+PiYgV2ViWFJW
aWV3ZXJQb3NlOjp2aWV3cygpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmlld3M7CiB9CiAKK3ZvaWQg
V2ViWFJWaWV3ZXJQb3NlOjpzZXRWaWV3cyhWZWN0b3I8UmVmPFdlYlhSVmlldz4+JiYgdmlld3Mp
Cit7CisgICAgbV92aWV3cyA9IFdURk1vdmUodmlld3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2UuaAppbmRleCBhNGVkMjViMTBjMjUzMTlhNmU5MjE4
NTI4MDY0ZTUxYzhkNGQ4ZjIwLi5lOWYwYTM5ZDg1YjdlYWNlNzAxM2NhMTg0MjlkMmIzY2JiODBk
Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlld2Vy
UG9zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3Nl
LmgKQEAgLTM3LDE4ICszNywyNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJY
UlZpZXdlclBvc2UgOiBwdWJsaWMgV2ViWFJQb3NlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFdlYlhSVmlld2VyUG9zZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUlZpZXdl
clBvc2U+IGNyZWF0ZSgpOwotICAgIH5XZWJYUlZpZXdlclBvc2UoKTsKKyAgICBzdGF0aWMgUmVm
PFdlYlhSVmlld2VyUG9zZT4gY3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29s
IGVtdWxhdGVkUG9zaXRpb24pOworICAgIHZpcnR1YWwgfldlYlhSVmlld2VyUG9zZSgpOwogCiAg
ICAgY29uc3QgVmVjdG9yPFJlZjxXZWJYUlZpZXc+PiYgdmlld3MoKSBjb25zdDsKKyAgICB2b2lk
IHNldFZpZXdzKFZlY3RvcjxSZWY8V2ViWFJWaWV3Pj4mJik7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
WFJWaWV3ZXJQb3NlKCk7CisgICAgV2ViWFJWaWV3ZXJQb3NlKFJlZjxXZWJYUlJpZ2lkVHJhbnNm
b3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRpb24pOworCisgICAgYm9vbCBpc1ZpZXdlclBvc2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBWZWN0b3I8UmVmPFdlYlhSVmll
dz4+IG1fdmlld3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0VCWFJQT1NFKFdlYlhSVmlld2VyUG9zZSwgaXNWaWV3ZXJQb3NlKCkpCisK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSVmlld2VyUG9zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSVmlld2VyUG9zZS5pZGwKaW5kZXggZDFiZWIyYzA4NmY4OWJmYWZkZjVlMGJmMWY5
NWMwZjQ4YzYwNzYxMy4uNmE3NmRlODQzNTQ5ZmJmMDYzZDBiYTVkNDExM2EwMTUyOTUwYjJlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXdlclBvc2Uu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3ZXJQb3NlLmlk
bApAQCAtMjgsNyArMjgsOCBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSLAogICAgIFNlY3VyZUNv
bnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3csCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmpl
Y3QsCiAgICAgSW50ZXJmYWNlTmFtZT1YUlZpZXdlclBvc2UKIF0gaW50ZXJmYWNlIFdlYlhSVmll
d2VyUG9zZSA6IFdlYlhSUG9zZSB7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBGcm96ZW5BcnJheTxXZWJYUlZpZXc+IHZpZXdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9YUkV5ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9Y
UkV5ZS5oCmluZGV4IGVhMWVhN2UxZTdkODIyNjMyNWY2MGM4MjZmZmZiYzBiOWJhNGQ2NmYuLmY5
YTM0M2JkYTQ0NzQ5N2Y2ZGRhNTQ0OTkwOGU0ZDk5ZDlmYzk3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvWFJFeWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1hSRXllLmgKQEAgLTI3LDEzICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKFdFQlhS
KQogCisjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgWFJFeWUgewotICAgIE5vbmUsCi0gICAgTGVmdCwKLSAgICBSaWdodCwKLX07Cit1
c2luZyBYUkV5ZSA9IFBsYXRmb3JtWFI6OkV5ZTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IGE3ZTRlMDE0MmM0
YTM0YTVlYWRkNzk3M2Y0ZGI0NzI1ODUzZGYwYzEuLmIyZWMxNDU4NGI1NmMwNmM4Njg4YTc1ODZi
OTQwYTI2ODIxZDgwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3Bw
CkBAIC01ODQsMTUgKzU4NCwxNSBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6VHJhbnNmb3JtYXRp
b25NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0KQogLy8gRklYTUU6IE9uY2UgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg1NiBpcyBhZGRyZXNzZWQgd2Ug
Y2FuIHJldXNlIHRoaXMgZnVuY3Rpb24gaW4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY29tcG9z
ZTQoKS4KIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpmcm9tUXVh
dGVybmlvbihkb3VibGUgcXgsIGRvdWJsZSBxeSwgZG91YmxlIHF6LCBkb3VibGUgcXcpCiB7Ci0g
ICAgY29uc3QgZG91YmxlIHh4ID0gcXggKiBxeDsKLSAgICBjb25zdCBkb3VibGUgeXkgPSBxeSAq
IHF5OwotICAgIGNvbnN0IGRvdWJsZSB6eiA9IHF6ICogcXo7Ci0gICAgY29uc3QgZG91YmxlIHh6
ID0gcXggKiBxejsKLSAgICBjb25zdCBkb3VibGUgeHkgPSBxeCAqIHF5OyAKLSAgICBjb25zdCBk
b3VibGUgeXogPSBxeSAqIHF6OwotICAgIGNvbnN0IGRvdWJsZSB4dyA9IHF3ICogcXg7Ci0gICAg
Y29uc3QgZG91YmxlIHl3ID0gcXcgKiBxeTsKLSAgICBjb25zdCBkb3VibGUgencgPSBxdyAqIHF6
OworICAgIGRvdWJsZSB4eCA9IHF4ICogcXg7CisgICAgZG91YmxlIHl5ID0gcXkgKiBxeTsKKyAg
ICBkb3VibGUgenogPSBxeiAqIHF6OworICAgIGRvdWJsZSB4eiA9IHF4ICogcXo7CisgICAgZG91
YmxlIHh5ID0gcXggKiBxeTsgCisgICAgZG91YmxlIHl6ID0gcXkgKiBxejsKKyAgICBkb3VibGUg
eHcgPSBxdyAqIHF4OworICAgIGRvdWJsZSB5dyA9IHF3ICogcXk7CisgICAgZG91YmxlIHp3ID0g
cXcgKiBxejsKIAogICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxIC0gMiAqICh5eSAr
IHp6KSwgMiAqICh4eSArIHp3KSwgMiAqICh4eiAtIHl3KSwgMCwKICAgICAgICAgMiAqICh4eSAt
IHp3KSwgMSAtIDIgKiAoeHggKyB6eiksIDIgKiAoeXogKyB4dyksIDAsCkBAIC02MDAsNiArNjAw
LDM0IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpmcm9tUXVh
dGVybmlvbihkb3VibGUgcXgsIGRvdWJsZSBxeSwKICAgICAgICAgMCwgMCwgMCwgMSk7CiB9CiAK
KworVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9qZWN0
aW9uKGRvdWJsZSBmb3ZVcCwgZG91YmxlIGZvdkRvd24sIGRvdWJsZSBmb3ZMZWZ0LCBkb3VibGUg
Zm92UmlnaHQsIGRvdWJsZSBkZXB0aE5lYXIsIGRvdWJsZSBkZXB0aEZhcikKK3sKKyAgICBkb3Vi
bGUgdXBUYW4gPSB0YW4oZm92VXApOworICAgIGRvdWJsZSBkb3duVGFuID0gdGFuKGZvdkRvd24p
OworICAgIGRvdWJsZSBsZWZ0VGFuID0gdGFuKGZvdkxlZnQpOworICAgIGRvdWJsZSByaWdodFRh
biA9IHRhbihmb3ZSaWdodCk7CisgICAgZG91YmxlIHhTY2FsZSA9IDIuMCAvIChsZWZ0VGFuICsg
cmlnaHRUYW4pOworICAgIGRvdWJsZSB5U2NhbGUgPSAyLjAgLyAodXBUYW4gKyBkb3duVGFuKTsK
KyAgICBkb3VibGUgaW52RGVwdGggPSAxLjAgLyAoZGVwdGhOZWFyIC0gZGVwdGhGYXIpOworCisg
ICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KHhTY2FsZSwgMC4wZiwgMC4wZiwgMC4wZiwK
KyAgICAgICAgMC4wZiwgeVNjYWxlLCAwLjBmLCAwLjBmLAorICAgICAgICAobGVmdFRhbiAtIHJp
Z2h0VGFuKSAqIHhTY2FsZSAqIC0wLjUsICh1cFRhbiAtIGRvd25UYW4pICogeVNjYWxlICogMC41
LCAoZGVwdGhOZWFyICsgZGVwdGhGYXIpICogaW52RGVwdGgsIC0xLjBmLAorICAgICAgICAwLjBm
LCAwLjBmLCAoMi4wZiAqIGRlcHRoRmFyICogZGVwdGhOZWFyKSAqIGludkRlcHRoLCAwLjBmKTsK
K30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRpb25NYXRyaXg6OmZyb21Qcm9q
ZWN0aW9uKGRvdWJsZSBmb3Z5LCBkb3VibGUgYXNwZWN0LCBkb3VibGUgZGVwdGhOZWFyLCBkb3Vi
bGUgZGVwdGhGYXIpCit7CisgICAgZG91YmxlIGYgPSAxLjBmIC8gdGFuZihmb3Z5IC8gMik7Cisg
ICAgZG91YmxlIGludkRlcHRoID0gMS4wZiAvIChkZXB0aE5lYXIgLSBkZXB0aEZhcik7CisKKyAg
ICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoZiAvIGFzcGVjdCwgMC4wZiwgMC4wZiwgMC4w
ZiwKKyAgICAgICAgMC4wZiwgZiwgMC4wZiwgMC4wZiwKKyAgICAgICAgMC4wZiwgMC4wZiwgKGRl
cHRoRmFyICsgZGVwdGhOZWFyKSAqIGludkRlcHRoLCAtMS4wZiwKKyAgICAgICAgMC4wZiwgMC4w
ZiwgKDIuMGYgKiBkZXB0aEZhciAqIGRlcHRoTmVhcikgKiBpbnZEZXB0aCwgMC4wZik7Cit9CisK
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2NhbGUoZG91Ymxl
IHMpCiB7CiAgICAgcmV0dXJuIHNjYWxlTm9uVW5pZm9ybShzLCBzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtYXRpb25NYXRyaXguaAppbmRleCA2MDBlN2QwYjFjZTI2YTdjMjQyMWQ1ODU2MWNjNTc0
YjA0YTE3YjI5Li41ZjcyNWFkNjZlZjc3MDkxZTlmYjA2NjA5OGI4ZGE3NThmNWFmOTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCkBAIC0xMjEsNiArMTIxLDEwIEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tUXVhdGVybmlvbihk
b3VibGUgcXgsIGRvdWJsZSBxeSwgZG91YmxlIHF6LCBkb3VibGUgcXcpOwogCisgICAgLy8gRmll
bGQgb2YgdmlldyBpbiByYWRpYW5zCisgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZy
b21Qcm9qZWN0aW9uKGRvdWJsZSBmb3ZVcCwgZG91YmxlIGZvdkRvd24sIGRvdWJsZSBmb3ZMZWZ0
LCBkb3VibGUgZm92UmlnaHQsIGRvdWJsZSBkZXB0aE5lYXIsIGRvdWJsZSBkZXB0aEZhcik7Cisg
ICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21Qcm9qZWN0aW9uKGRvdWJsZSBmb3Z5
LCBkb3VibGUgYXNwZWN0LCBkb3VibGUgZGVwdGhOZWFyLCBkb3VibGUgZGVwdGhGYXIpOworCiAg
ICAgc3RhdGljIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5OwogCiAgICAgdm9p
ZCBzZXRNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJs
ZSBlLCBkb3VibGUgZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1Bs
YXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRl
eCA0MzI1ZjMzNzVjZjMwMjhhNDdkZmZjYzZkZjU5YmI3NDM4MzUwMGQ1Li5lMzcyMWQ4ODZlYTk5
YTBkZjkwODJlNThlMjU1Y2QzMmQwZjdkZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
UGxhdGZvcm1YUi5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNDMsNiArNDQsMTIgQEAgZW51bSBjbGFz
cyBSZWZlcmVuY2VTcGFjZVR5cGUgewogICAgIFVuYm91bmRlZAogfTsKIAorZW51bSBjbGFzcyBF
eWUgeworICAgIE5vbmUsCisgICAgTGVmdCwKKyAgICBSaWdodCwKK307CisKICNpZiBFTkFCTEUo
V0VCWFIpCiAKIGNsYXNzIFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50IDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50PiB7CkBAIC03OSwyOSArODYsNTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUmVm
ZXJlbmNlU3BhY2VUeXBlKSA9IDA7CiAKICAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKLSAgICAgICAg
bG9uZyBwcmVkaWN0ZWREaXNwbGF5VGltZTsKLSAgICAgICAgc3RydWN0IFZpZXdEYXRhIHsKLSAg
ICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludDNE
IHBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAg
IGZsb2F0IHg7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHk7Ci0gICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHo7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHc7Ci0gICAgICAgICAgICAg
ICAgfSBvcmllbnRhdGlvbjsKLSAgICAgICAgICAgIH0gcG9zZTsKLSAgICAgICAgICAgIHN0cnVj
dCB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgclVwOwotICAgICAgICAgICAgICAgIGZsb2F0IHJE
b3duOwotICAgICAgICAgICAgICAgIGZsb2F0IHJMZWZ0OwotICAgICAgICAgICAgICAgIGZsb2F0
IHJSaWdodDsKLSAgICAgICAgICAgIH0gZm92OworICAgICAgICBzdHJ1Y3QgRmxvYXRRdWF0ZXJu
aW9uIHsKKyAgICAgICAgICAgIGZsb2F0IHggeyAwLjBmIH07CisgICAgICAgICAgICBmbG9hdCB5
IHsgMC4wZiB9OworICAgICAgICAgICAgZmxvYXQgeiB7IDAuMGYgfTsKKyAgICAgICAgICAgIGZs
b2F0IHcgeyAxLjBmIH07CisgICAgICAgIH07CisKKyAgICAgICAgc3RydWN0IFBvc2UgeworICAg
ICAgICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludDNEIHBvc2l0aW9uOworICAgICAgICAgICAgRmxv
YXRRdWF0ZXJuaW9uIG9yaWVudGF0aW9uOwogICAgICAgICB9OwotICAgICAgICBWZWN0b3I8Vmll
d0RhdGE+IHZpZXdQb3NlczsKKworICAgICAgICBzdHJ1Y3QgRm92IHsKKyAgICAgICAgICAgIC8v
IEluIHJhZGlhbnMKKyAgICAgICAgICAgIGZsb2F0IHVwIHsgMC4wZiB9OworICAgICAgICAgICAg
ZmxvYXQgZG93biB7IDAuMGYgfTsKKyAgICAgICAgICAgIGZsb2F0IGxlZnQgeyAwLjBmIH07Cisg
ICAgICAgICAgICBmbG9hdCByaWdodCB7IDAuMGYgfTsKKyAgICAgICAgfTsKKworICAgICAgICB1
c2luZyBQcm9qZWN0aW9uID0gVmFyaWFudDxGb3YsIHN0ZDo6YXJyYXk8ZmxvYXQsIDE2Piwgc3Rk
OjpudWxscHRyX3Q+OworCisgICAgICAgIHN0cnVjdCBWaWV3IHsKKyAgICAgICAgICAgIFBvc2Ug
b2Zmc2V0OworICAgICAgICAgICAgUHJvamVjdGlvbiBwcm9qZWN0aW9uID0geyBudWxscHRyIH07
CisgICAgICAgIH07CisKKyAgICAgICAgYm9vbCBpc1RyYWNraW5nVmFsaWQgeyBmYWxzZSB9Owor
ICAgICAgICBib29sIGlzUG9zaXRpb25WYWxpZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgaXNQ
b3NpdGlvbkVtdWxhdGVkIHsgZmFsc2UgfTsKKyAgICAgICAgbG9uZyBwcmVkaWN0ZWREaXNwbGF5
VGltZSB7IDAgfTsKKyAgICAgICAgUG9zZSBvcmlnaW47CisgICAgICAgIE9wdGlvbmFsPFBvc2U+
IGZsb29yVHJhbnNmb3JtOworICAgICAgICBWZWN0b3I8Vmlldz4gdmlld3M7CisgICAgfTsKKwor
ICAgIHN0cnVjdCBWaWV3RGF0YSB7CisgICAgICAgIGJvb2wgYWN0aXZlIHsgZmFsc2UgfTsKKyAg
ICAgICAgRXllIGV5ZSB7IEV5ZTo6Tm9uZSB9OwogICAgIH07CisKKyAgICB2aXJ0dWFsIFZlY3Rv
cjxWaWV3RGF0YT4gdmlld3MoU2Vzc2lvbk1vZGUpIGNvbnN0ID0gMDsKKwogICAgIHVzaW5nIFJl
cXVlc3RGcmFtZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChGcmFtZURhdGEmJik+OwogICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgPSAwOwotCiBw
cm90ZWN0ZWQ6CiAgICAgRGV2aWNlKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5jcHAKaW5kZXggY2M0
ZDcyMTUzYzZlZWFmZGYyMTYyZTk4ODJhOWUwNzc1OGIyMWRmNy4uYjk0ZTg3MWY1N2I4OTdjN2U0
ODQ5YTQ3ZjRhNjRjMzMzMGQ2ZDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmNwcApAQCAtMjk5LDYgKzI5OSwyOCBA
QCBEZXZpY2U6Okxpc3RPZkVuYWJsZWRGZWF0dXJlcyBPcGVuWFJEZXZpY2U6OmVudW1lcmF0ZVJl
ZmVyZW5jZVNwYWNlcyhYclNlc3Npb24mCiAgICAgcmV0dXJuIGVuYWJsZWRGZWF0dXJlczsKIH0K
IAorWHJTcGFjZSBPcGVuWFJEZXZpY2U6OmNyZWF0ZVJlZmVyZW5jZVNwYWNlKFhyUmVmZXJlbmNl
U3BhY2VUeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKCZSdW5Mb29wOjpjdXJyZW50KCkgPT0gJm1f
cXVldWUucnVuTG9vcCgpKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uICE9IFhSX05VTExfSEFORExF
KTsKKyAgICBBU1NFUlQobV9pbnN0YW5jZSAhPSBYUl9OVUxMX0hBTkRMRSk7CisKKyAgICBYclBv
c2VmIGlkZW50aXR5UG9zZSB7CisgICAgICAgIC5vcmllbnRhdGlvbiA9IHsgLnggPSAwLCAueSA9
IDAsIC56ID0gMCwgLncgPSAxLjAgfSwKKyAgICAgICAgLnBvc2l0aW9uID0geyAueCA9IDAsIC55
ID0gMCwgLnogPSAwIH0KKyAgICB9OworCisgICAgYXV0byBzcGFjZUNyZWF0ZUluZm8gPSBjcmVh
dGVTdHJ1Y3R1cmU8WHJSZWZlcmVuY2VTcGFjZUNyZWF0ZUluZm8sIFhSX1RZUEVfUkVGRVJFTkNF
X1NQQUNFX0NSRUFURV9JTkZPPigpOworICAgIHNwYWNlQ3JlYXRlSW5mby5yZWZlcmVuY2VTcGFj
ZVR5cGUgPSB0eXBlOworICAgIHNwYWNlQ3JlYXRlSW5mby5wb3NlSW5SZWZlcmVuY2VTcGFjZSA9
IGlkZW50aXR5UG9zZTsKKworICAgIFhyU3BhY2Ugc3BhY2U7CisgICAgYXV0byByZXN1bHQgPSB4
ckNyZWF0ZVJlZmVyZW5jZVNwYWNlKG1fc2Vzc2lvbiwgJnNwYWNlQ3JlYXRlSW5mbywgJnNwYWNl
KTsKKyAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyQ3JlYXRlUmVmZXJlbmNlU3BhY2Ui
LCBtX2luc3RhbmNlLCBYUl9OVUxMX0hBTkRMRSk7CisKKyAgICByZXR1cm4gc3BhY2U7Cit9CisK
IHZvaWQgT3BlblhSRGV2aWNlOjpjb2xsZWN0U3VwcG9ydGVkU2Vzc2lvbk1vZGVzKCkKIHsKICAg
ICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQoKSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOwpAQCAt
MzY4LDE1ICszOTAsNiBAQCB2b2lkIE9wZW5YUkRldmljZTo6Y29sbGVjdENvbmZpZ3VyYXRpb25W
aWV3cygpCiAgICAgfQogfQogCi1XZWJDb3JlOjpJbnRTaXplIE9wZW5YUkRldmljZTo6cmVjb21t
ZW5kZWRSZXNvbHV0aW9uKFNlc3Npb25Nb2RlIG1vZGUpCi17Ci0gICAgYXV0byBjb25maWdUeXBl
ID0gbW9kZSA9PSBTZXNzaW9uTW9kZTo6SW5saW5lID8gWFJfVklFV19DT05GSUdVUkFUSU9OX1RZ
UEVfUFJJTUFSWV9NT05PIDogWFJfVklFV19DT05GSUdVUkFUSU9OX1RZUEVfUFJJTUFSWV9TVEVS
RU87Ci0gICAgYXV0byB2aWV3c0l0ZXJhdG9yID0gbV9jb25maWd1cmF0aW9uVmlld3MuZmluZChj
b25maWdUeXBlKTsKLSAgICBpZiAodmlld3NJdGVyYXRvciAhPSBtX2NvbmZpZ3VyYXRpb25WaWV3
cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50Pih2aWV3c0l0ZXJhdG9y
LT52YWx1ZVswXS5yZWNvbW1lbmRlZEltYWdlUmVjdFdpZHRoKSwgc3RhdGljX2Nhc3Q8aW50Pih2
aWV3c0l0ZXJhdG9yLT52YWx1ZVswXS5yZWNvbW1lbmRlZEltYWdlUmVjdEhlaWdodCkgfTsKLSAg
ICByZXR1cm4gRGV2aWNlOjpyZWNvbW1lbmRlZFJlc29sdXRpb24obW9kZSk7Ci19Ci0KIFhyVmll
d0NvbmZpZ3VyYXRpb25UeXBlIHRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUoU2Vzc2lvbk1vZGUg
bW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsKQEAgLTQwMCw2ICs0MTMsMTUgQEAgc3RhdGlj
IGJvb2wgaXNTZXNzaW9uUmVhZHkoWHJTZXNzaW9uU3RhdGUgc3RhdGUpCiAgICAgcmV0dXJuIHN0
YXRlID49IFhSX1NFU1NJT05fU1RBVEVfUkVBRFkgICYmIHN0YXRlIDwgWFJfU0VTU0lPTl9TVEFU
RV9TVE9QUElORzsKIH0KIAorV2ViQ29yZTo6SW50U2l6ZSBPcGVuWFJEZXZpY2U6OnJlY29tbWVu
ZGVkUmVzb2x1dGlvbihTZXNzaW9uTW9kZSBtb2RlKQoreworICAgIGF1dG8gY29uZmlnVHlwZSA9
IHRvWHJWaWV3Q29uZmlndXJhdGlvblR5cGUobW9kZSk7CisgICAgYXV0byB2aWV3c0l0ZXJhdG9y
ID0gbV9jb25maWd1cmF0aW9uVmlld3MuZmluZChjb25maWdUeXBlKTsKKyAgICBpZiAodmlld3NJ
dGVyYXRvciAhPSBtX2NvbmZpZ3VyYXRpb25WaWV3cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsg
c3RhdGljX2Nhc3Q8aW50Pih2aWV3c0l0ZXJhdG9yLT52YWx1ZVswXS5yZWNvbW1lbmRlZEltYWdl
UmVjdFdpZHRoKSwgc3RhdGljX2Nhc3Q8aW50Pih2aWV3c0l0ZXJhdG9yLT52YWx1ZVswXS5yZWNv
bW1lbmRlZEltYWdlUmVjdEhlaWdodCkgfTsKKyAgICByZXR1cm4gRGV2aWNlOjpyZWNvbW1lbmRl
ZFJlc29sdXRpb24obW9kZSk7Cit9CisKIHZvaWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXplVHJh
Y2tpbmdBbmRSZW5kZXJpbmcoU2Vzc2lvbk1vZGUgbW9kZSkKIHsKICAgICBtX3F1ZXVlLmRpc3Bh
dGNoKFt0aGlzLCBtb2RlXSgpIHsKQEAgLTQxNCw2ICs0MzYsOSBAQCB2b2lkIE9wZW5YUkRldmlj
ZTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFNlc3Npb25Nb2RlIG1vZGUpCiAgICAg
ICAgIHNlc3Npb25DcmVhdGVJbmZvLnN5c3RlbUlkID0gbV9zeXN0ZW1JZDsKICAgICAgICAgYXV0
byByZXN1bHQgPSB4ckNyZWF0ZVNlc3Npb24obV9pbnN0YW5jZSwgJnNlc3Npb25DcmVhdGVJbmZv
LCAmbV9zZXNzaW9uKTsKICAgICAgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4ckVudW1l
cmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyIsIG1faW5zdGFuY2UpOworCisgICAgICAg
IG1fbG9jYWxTcGFjZSA9IGNyZWF0ZVJlZmVyZW5jZVNwYWNlKFhSX1JFRkVSRU5DRV9TUEFDRV9U
WVBFX0xPQ0FMKTsKKyAgICAgICAgbV92aWV3U3BhY2UgPSBjcmVhdGVSZWZlcmVuY2VTcGFjZShY
Ul9SRUZFUkVOQ0VfU1BBQ0VfVFlQRV9WSUVXKTsKICAgICB9KTsKIH0KIApAQCAtNDU3LDYgKzQ4
MiwxMiBAQCB2b2lkIE9wZW5YUkRldmljZTo6c2h1dERvd25UcmFja2luZ0FuZFJlbmRlcmluZygp
CiAgICAgfSk7CiB9CiAKK3ZvaWQgT3BlblhSRGV2aWNlOjppbml0aWFsaXplUmVmZXJlbmNlU3Bh
Y2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlIHNwYWNlVHlwZSkKK3sKKyAgICBpZiAo
KHNwYWNlVHlwZSA9PSBSZWZlcmVuY2VTcGFjZVR5cGU6OkxvY2FsRmxvb3IgfHwgc3BhY2VUeXBl
ID09IFJlZmVyZW5jZVNwYWNlVHlwZTo6Qm91bmRlZEZsb29yKSAmJiBtX3N0YWdlU3BhY2UgPT0g
WFJfTlVMTF9IQU5ETEUpCisgICAgICAgIG1fc3RhZ2VTcGFjZSA9IGNyZWF0ZVJlZmVyZW5jZVNw
YWNlKFhSX1JFRkVSRU5DRV9TUEFDRV9UWVBFX1NUQUdFKTsKK30KKwogdm9pZCBPcGVuWFJEZXZp
Y2U6OndhaXRVbnRpbFN0b3BwaW5nKCkKIHsKICAgICBBU1NFUlQoJlJ1bkxvb3A6OmN1cnJlbnQo
KSA9PSAmbV9xdWV1ZS5ydW5Mb29wKCkpOwpAQCAtNTI2LDE0ICs1NTcsMjAgQEAgdm9pZCBPcGVu
WFJEZXZpY2U6OmVuZFNlc3Npb24oKQogICAgIH0pOwogfQogCitzdGF0aWMgRGV2aWNlOjpGcmFt
ZURhdGE6OlBvc2UgWHJQb3NlZlRvUG9zZShYclBvc2VmIHBvc2UpCit7CisgICAgRGV2aWNlOjpG
cmFtZURhdGE6OlBvc2UgcmVzdWx0OworICAgIHJlc3VsdC5vcmllbnRhdGlvbiA9IHsgcG9zZS5v
cmllbnRhdGlvbi54LCBwb3NlLm9yaWVudGF0aW9uLnksIHBvc2Uub3JpZW50YXRpb24ueiwgcG9z
ZS5vcmllbnRhdGlvbi53IH07CisgICAgcmVzdWx0LnBvc2l0aW9uID0geyBwb3NlLnBvc2l0aW9u
LngsIHBvc2UucG9zaXRpb24ueSwgcG9zZS5wb3NpdGlvbi56IH07CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KIAotRGV2aWNlOjpGcmFtZURhdGE6OlZpZXdEYXRhIHhyVmlld1RvVmlld0RhdGEoWHJW
aWV3IHZpZXcpCitzdGF0aWMgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXcgeHJWaWV3VG9Qb3NlKFhy
VmlldyB2aWV3KQogewotICAgIERldmljZTo6RnJhbWVEYXRhOjpWaWV3RGF0YSBkYXRhOwotICAg
IGRhdGEuZm92ID0geyB2aWV3LmZvdi5hbmdsZVVwLCB2aWV3LmZvdi5hbmdsZURvd24sIHZpZXcu
Zm92LmFuZ2xlTGVmdCwgdmlldy5mb3YuYW5nbGVSaWdodCB9OwotICAgIGRhdGEucG9zZS5vcmll
bnRhdGlvbiA9IHsgdmlldy5wb3NlLm9yaWVudGF0aW9uLngsIHZpZXcucG9zZS5vcmllbnRhdGlv
bi55LCB2aWV3LnBvc2Uub3JpZW50YXRpb24ueiwgdmlldy5wb3NlLm9yaWVudGF0aW9uLncgfTsK
LSAgICBkYXRhLnBvc2UucG9zaXRpb24gPSB7IHZpZXcucG9zZS5wb3NpdGlvbi54LCB2aWV3LnBv
c2UucG9zaXRpb24ueSwgdmlldy5wb3NlLnBvc2l0aW9uLnogfTsKLSAgICByZXR1cm4gZGF0YTsK
KyAgICBEZXZpY2U6OkZyYW1lRGF0YTo6VmlldyBwb3NlOworICAgIHBvc2UucHJvamVjdGlvbiA9
IERldmljZTo6RnJhbWVEYXRhOjpGb3YgeyB2aWV3LmZvdi5hbmdsZVVwLCB2aWV3LmZvdi5hbmds
ZURvd24sIHZpZXcuZm92LmFuZ2xlTGVmdCwgdmlldy5mb3YuYW5nbGVSaWdodCB9OworICAgIHBv
c2Uub2Zmc2V0ID0gWHJQb3NlZlRvUG9zZSh2aWV3LnBvc2UpOworICAgIHJldHVybiBwb3NlOwog
fQogCiB2b2lkIE9wZW5YUkRldmljZTo6cmVxdWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNr
JiYgY2FsbGJhY2spCkBAIC01NjIsMTMgKzU5OSwyMiBAQCB2b2lkIE9wZW5YUkRldmljZTo6cmVx
dWVzdEZyYW1lKFJlcXVlc3RGcmFtZUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgIGZyYW1l
RGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSA9IGZyYW1lU3RhdGUucHJlZGljdGVkRGlzcGxheVRp
bWU7CiAKICAgICAgICAgaWYgKGlzU2Vzc2lvbkFjdGl2ZShtX3Nlc3Npb25TdGF0ZSkpIHsKKyAg
ICAgICAgICAgIC8vIFF1ZXJ5IGhlYWQgbG9jYXRpb24KKyAgICAgICAgICAgIGF1dG8gbG9jYXRp
b24gPSBjcmVhdGVTdHJ1Y3R1cmU8WHJTcGFjZUxvY2F0aW9uLCBYUl9UWVBFX1NQQUNFX0xPQ0FU
SU9OPigpOworICAgICAgICAgICAgeHJMb2NhdGVTcGFjZShtX3ZpZXdTcGFjZSwgbV9sb2NhbFNw
YWNlLCBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3BsYXlUaW1lLCAmbG9jYXRpb24pOworICAgICAg
ICAgICAgZnJhbWVEYXRhLmlzVHJhY2tpbmdWYWxpZCA9IGxvY2F0aW9uLmxvY2F0aW9uRmxhZ3Mg
JiBYUl9TUEFDRV9MT0NBVElPTl9PUklFTlRBVElPTl9WQUxJRF9CSVQ7CisgICAgICAgICAgICBm
cmFtZURhdGEuaXNQb3NpdGlvblZhbGlkID0gbG9jYXRpb24ubG9jYXRpb25GbGFncyAmIFhSX1NQ
QUNFX0xPQ0FUSU9OX1BPU0lUSU9OX1ZBTElEX0JJVDsKKyAgICAgICAgICAgIGZyYW1lRGF0YS5p
c1Bvc2l0aW9uRW11bGF0ZWQgPSBsb2NhdGlvbi5sb2NhdGlvbkZsYWdzICYgWFJfU1BBQ0VfTE9D
QVRJT05fUE9TSVRJT05fVFJBQ0tFRF9CSVQ7CisKKyAgICAgICAgICAgIGlmIChmcmFtZURhdGEu
aXNUcmFja2luZ1ZhbGlkKQorICAgICAgICAgICAgICAgIGZyYW1lRGF0YS5vcmlnaW4gPSBYclBv
c2VmVG9Qb3NlKGxvY2F0aW9uLnBvc2UpOworICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NF
UlQobV9jb25maWd1cmF0aW9uVmlld3MuY29udGFpbnMobV9jdXJyZW50Vmlld0NvbmZpZ3VyYXRp
b25UeXBlKSk7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBjb25maWd1cmF0aW9uVmlldyA9IG1f
Y29uZmlndXJhdGlvblZpZXdzLmdldChtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlvblR5cGUpOwog
CiAgICAgICAgICAgICBhdXRvIHZpZXdMb2NhdGVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhyVmll
d0xvY2F0ZUluZm8sIFhSX1RZUEVfVklFV19MT0NBVEVfSU5GTz4oKTsKICAgICAgICAgICAgIHZp
ZXdMb2NhdGVJbmZvLmRpc3BsYXlUaW1lID0gcHJlZGljdGVkVGltZTsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiB1c2UgdGhlIGN1cnJlbnQgcmVmZXJlbmNlIHNwYWNlLgotICAgICAgICAgICAgLy8g
dmlld0xvY2F0ZUluZm8uc3BhY2UgPSBtX2xvY2FsU3BhY2U7CisgICAgICAgICAgICB2aWV3TG9j
YXRlSW5mby5zcGFjZSA9IG1fbG9jYWxTcGFjZTsKIAogICAgICAgICAgICAgdWludDMyX3Qgdmll
d0NvdW50ID0gY29uZmlndXJhdGlvblZpZXcuc2l6ZSgpOwogICAgICAgICAgICAgVmVjdG9yPFhy
Vmlldz4gdmlld3Modmlld0NvdW50LCBbXSB7CkBAIC01ODMsNyArNjI5LDE0IEBAIHZvaWQgT3Bl
blhSRGV2aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykK
ICAgICAgICAgICAgIHJlc3VsdCA9IHhyTG9jYXRlVmlld3MobV9zZXNzaW9uLCAmdmlld0xvY2F0
ZUluZm8sICZ2aWV3U3RhdGUsIHZpZXdDb3VudCwgJnZpZXdDb3VudE91dHB1dCwgdmlld3MuZGF0
YSgpKTsKICAgICAgICAgICAgIGlmICghWFJfRkFJTEVEKHJlc3VsdCkpIHsKICAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHZpZXcgOiB2aWV3cykKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVE
YXRhLnZpZXdQb3Nlcy5hcHBlbmQoeHJWaWV3VG9WaWV3RGF0YSh2aWV3KSk7CisgICAgICAgICAg
ICAgICAgICAgIGZyYW1lRGF0YS52aWV3cy5hcHBlbmQoeHJWaWV3VG9Qb3NlKHZpZXcpKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUXVlcnkgZmxvb3IgdHJhbnNmb3JtCisgICAg
ICAgICAgICBpZiAobV9zdGFnZVNwYWNlICE9IFhSX05VTExfSEFORExFKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBmbG9vckxvY2F0aW9uID0gY3JlYXRlU3RydWN0dXJlPFhyU3BhY2VMb2NhdGlv
biwgWFJfVFlQRV9TUEFDRV9MT0NBVElPTj4oKTsKKyAgICAgICAgICAgICAgICB4ckxvY2F0ZVNw
YWNlKG1fc3RhZ2VTcGFjZSwgbV9sb2NhbFNwYWNlLCBmcmFtZVN0YXRlLnByZWRpY3RlZERpc3Bs
YXlUaW1lLCAmZmxvb3JMb2NhdGlvbik7CisgICAgICAgICAgICAgICAgZnJhbWVEYXRhLmZsb29y
VHJhbnNmb3JtID0geyBYclBvc2VmVG9Qb3NlKGZsb29yTG9jYXRpb24ucG9zZSkgfTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCkBAIC02MDAsNiArNjUzLDIxIEBAIHZvaWQgT3BlblhSRGV2
aWNlOjpyZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB9
KTsKIH0KIAorVmVjdG9yPERldmljZTo6Vmlld0RhdGE+IE9wZW5YUkRldmljZTo6dmlld3MoU2Vz
c2lvbk1vZGUgbW9kZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmll
d3M7CisgICAgYXV0byBjb25maWd1cmF0aW9uVHlwZSA9IHRvWHJWaWV3Q29uZmlndXJhdGlvblR5
cGUobW9kZSk7CisKKyAgICBpZiAoY29uZmlndXJhdGlvblR5cGUgPT0gWFJfVklFV19DT05GSUdV
UkFUSU9OX1RZUEVfUFJJTUFSWV9NT05PKQorICAgICAgICB2aWV3cy5hcHBlbmQoeyAuYWN0aXZl
ID0gdHJ1ZSwgLmV5ZSA9IEV5ZTo6Tm9uZSB9KTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJU
KGNvbmZpZ3VyYXRpb25UeXBlID09IFhSX1ZJRVdfQ09ORklHVVJBVElPTl9UWVBFX1BSSU1BUllf
U1RFUkVPKTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6TGVm
dCB9KTsKKyAgICAgICAgdmlld3MuYXBwZW5kKHsgLmFjdGl2ZSA9IHRydWUsIEV5ZTo6UmlnaHQg
fSk7CisgICAgfQorICAgIHJldHVybiB2aWV3czsKK30KKwogfSAvLyBuYW1lc3BhY2UgUGxhdGZv
cm1YUgogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKSAmJiBVU0UoT1BFTlhSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9QbGF0Zm9ybVhST3BlblhSLmgKaW5k
ZXggNWJlYmU2OTY2OTMyN2RiMmM4MTViNTU2YWVkZDFjYTk5YjQ2ZTE3Ni4uMDJkMTk0ZTYyNzFl
YmE2YjJhODQ0ODcwMjc5NWE2MDllYTI5MDczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvb3BlbnhyL1BsYXRmb3JtWFJPcGVuWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvUGxhdGZvcm1YUk9wZW5YUi5oCkBAIC01MSwxMiArNTEsMTMg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RDb25maWd1cmF0aW9uVmlld3MoKTsKIAogICAg
IExpc3RPZkVuYWJsZWRGZWF0dXJlcyBlbnVtZXJhdGVSZWZlcmVuY2VTcGFjZXMoWHJTZXNzaW9u
JikgY29uc3Q7Ci0gICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3BhY2UoUmVmZXJlbmNlU3Bh
Y2VUeXBlKSBmaW5hbCB7IH07CisgICAgWHJTcGFjZSBjcmVhdGVSZWZlcmVuY2VTcGFjZShYclJl
ZmVyZW5jZVNwYWNlVHlwZSk7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHJlY29tbWVuZGVkUmVz
b2x1dGlvbihTZXNzaW9uTW9kZSkgZmluYWw7CiAKICAgICB2b2lkIGluaXRpYWxpemVUcmFja2lu
Z0FuZFJlbmRlcmluZyhTZXNzaW9uTW9kZSkgZmluYWw7CiAgICAgdm9pZCBzaHV0RG93blRyYWNr
aW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7CisgICAgdm9pZCBpbml0aWFsaXplUmVmZXJlbmNlU3Bh
Y2UoUGxhdGZvcm1YUjo6UmVmZXJlbmNlU3BhY2VUeXBlKSBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzU2Vzc2lvblNodXRkb3duTm90aWZpY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZvaWQgd2FpdFVudGlsU3RvcHBpbmcoKTsKIApAQCAtNjgsNiArNjksOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUmVxdWVzdEZyYW1lQ2FsbGJhY2smJikg
ZmluYWw7CiAKKyAgICBWZWN0b3I8Vmlld0RhdGE+IHZpZXdzKFNlc3Npb25Nb2RlKSBjb25zdCBm
aW5hbDsKKwogICAgIHVzaW5nIFZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllc01hcCA9IEhhc2hN
YXA8WHJWaWV3Q29uZmlndXJhdGlvblR5cGUsIFhyVmlld0NvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVz
LCBJbnRIYXNoPFhyVmlld0NvbmZpZ3VyYXRpb25UeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxYclZpZXdDb25maWd1cmF0aW9uVHlwZT4+OwogICAgIFZpZXdDb25maWd1cmF0aW9uUHJv
cGVydGllc01hcCBtX3ZpZXdDb25maWd1cmF0aW9uUHJvcGVydGllczsKICAgICB1c2luZyBWaWV3
Q29uZmlndXJhdGlvblZpZXdzTWFwID0gSGFzaE1hcDxYclZpZXdDb25maWd1cmF0aW9uVHlwZSwg
VmVjdG9yPFhyVmlld0NvbmZpZ3VyYXRpb25WaWV3PiwgSW50SGFzaDxYclZpZXdDb25maWd1cmF0
aW9uVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8WHJWaWV3Q29uZmlndXJhdGlvblR5
cGU+PjsKQEAgLTgxLDYgKzg0LDkgQEAgcHJpdmF0ZToKICAgICBXb3JrUXVldWUmIG1fcXVldWU7
CiAKICAgICBYclZpZXdDb25maWd1cmF0aW9uVHlwZSBtX2N1cnJlbnRWaWV3Q29uZmlndXJhdGlv
blR5cGU7CisgICAgWHJTcGFjZSBtX2xvY2FsU3BhY2UgeyBYUl9OVUxMX0hBTkRMRSB9OworICAg
IFhyU3BhY2UgbV92aWV3U3BhY2UgeyBYUl9OVUxMX0hBTkRMRSB9OworICAgIFhyU3BhY2UgbV9z
dGFnZVNwYWNlIHsgWFJfTlVMTF9IQU5ETEUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFBsYXRm
b3JtWFIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAppbmRleCA1
NDAxOGRhN2ViYjUzZGQ1MTk0MmRlNzY2MTQ5NjcyZmYxYWM4NDU3Li5lMjk5ZDViMTM1YzVjZmM5
ZGRiMmE5NWI5N2Q1NTMwNzIxMTgwZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUkRldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuY3BwCkBAIC0zMiwxNCArMzIsMjAgQEAKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIldlYkZha2VYUklucHV0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIEZh
a2VYUkZyYW1lVGltZSA9IDE1X21zOwogCi12b2lkIEZha2VYUlZpZXc6OnNldEZpZWxkT2ZWaWV3
KEZha2VYUlZpZXdJbml0OjpGaWVsZE9mVmlld0luaXQgZm92KQordm9pZCBGYWtlWFJWaWV3Ojpz
ZXRQcm9qZWN0aW9uKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHByb2plY3Rpb24pCiB7Ci0gICAgbV9m
b3YgPSBmb3Y7CisgICAgc3RkOjpjb3B5KHN0ZDo6YmVnaW4ocHJvamVjdGlvbiksIHN0ZDo6ZW5k
KHByb2plY3Rpb24pLCBzdGQ6OmJlZ2luKG1fcHJvamVjdGlvbikpOworfQorCit2b2lkIEZha2VY
UlZpZXc6OnNldEZpZWxkT2ZWaWV3KGNvbnN0IEZha2VYUlZpZXdJbml0OjpGaWVsZE9mVmlld0lu
aXQmIGZvdikKK3sKKyAgICBtX2ZvdiA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpG
b3YgeyBkZWcycmFkKGZvdi51cERlZ3JlZXMpLCBkZWcycmFkKGZvdi5kb3duRGVncmVlcyksIGRl
ZzJyYWQoZm92LmxlZnREZWdyZWVzKSwgZGVnMnJhZChmb3YucmlnaHREZWdyZWVzKSB9OwogfQog
CiBTaW11bGF0ZWRYUkRldmljZTo6U2ltdWxhdGVkWFJEZXZpY2UoKQpAQCAtNzQsMzEgKzgwLDcw
IEBAIHZvaWQgU2ltdWxhdGVkWFJEZXZpY2U6OnN0b3BUaW1lcigpCiAKIHZvaWQgU2ltdWxhdGVk
WFJEZXZpY2U6OmZyYW1lVGltZXJGaXJlZCgpCiB7Ci0gICAgYXV0byBjYWxsYmFja3MgPSBXVEZN
b3ZlKG1fY2FsbGJhY2tzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQot
ICAgICAgICBjYWxsYmFjayh7IH0pOworICAgIGF1dG8gdXBkYXRlcyA9IFdURk1vdmUobV9wZW5k
aW5nVXBkYXRlcyk7CisgICAgZm9yIChhdXRvJiB1cGRhdGUgOiB1cGRhdGVzKQorICAgICAgICB1
cGRhdGUoKTsKKworICAgIEZyYW1lRGF0YSBkYXRhOworICAgIGlmIChtX3ZpZXdlck9yaWdpbikg
eworICAgICAgICBkYXRhLm9yaWdpbiA9ICptX3ZpZXdlck9yaWdpbjsKKyAgICAgICAgZGF0YS5p
c1RyYWNraW5nVmFsaWQgPSB0cnVlOworICAgICAgICBkYXRhLmlzUG9zaXRpb25WYWxpZCA9IHRy
dWU7CisgICAgfQorCisgICAgaWYgKG1fZmxvb3JPcmlnaW4pCisgICAgICAgIGRhdGEuZmxvb3JU
cmFuc2Zvcm0gPSB7ICptX2Zsb29yT3JpZ2luIH07CisKKyAgICBmb3IgKGF1dG8mIGZha2VWaWV3
IDogbV92aWV3cykgeworICAgICAgICBGcmFtZURhdGE6OlZpZXcgdmlldzsKKyAgICAgICAgdmll
dy5vZmZzZXQgPSBmYWtlVmlldy0+b2Zmc2V0KCk7CisgICAgICAgIGlmIChmYWtlVmlldy0+Zmll
bGRPZlZpZXcoKS5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgdmlldy5wcm9qZWN0aW9uID0geyAq
ZmFrZVZpZXctPmZpZWxkT2ZWaWV3KCkgfTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmll
dy5wcm9qZWN0aW9uID0geyBmYWtlVmlldy0+cHJvamVjdGlvbigpIH07CisgICAgICAgIAorICAg
ICAgICBkYXRhLnZpZXdzLmFwcGVuZCh2aWV3KTsKKyAgICB9CisKKyAgICBpZiAobV9GcmFtZUNh
bGxiYWNrKQorICAgICAgICBtX0ZyYW1lQ2FsbGJhY2soV1RGTW92ZShkYXRhKSk7CiB9CiAKIHZv
aWQgU2ltdWxhdGVkWFJEZXZpY2U6OnJlcXVlc3RGcmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYm
IGNhbGxiYWNrKQogewotICAgIG1fY2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgbV9GcmFtZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAgICAgaWYgKCFtX2Zy
YW1lVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9mcmFtZVRpbWVyLnN0YXJ0T25lU2hvdChG
YWtlWFJGcmFtZVRpbWUpOwogfQogCitWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpWaWV3RGF0
YT4gU2ltdWxhdGVkWFJEZXZpY2U6OnZpZXdzKFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlIG1vZGUp
IGNvbnN0Cit7CisgICAgaWYgKG1vZGUgPT0gUGxhdGZvcm1YUjo6U2Vzc2lvbk1vZGU6OkltbWVy
c2l2ZVZyKQorICAgICAgICByZXR1cm4geyB7IC5hY3RpdmUgPSB0cnVlLCBQbGF0Zm9ybVhSOjpF
eWU6OkxlZnQgfSwgeyAuYWN0aXZlID0gdHJ1ZSwgUGxhdGZvcm1YUjo6RXllOjpSaWdodCB9IH07
CisKKyAgICByZXR1cm4geyB7IC5hY3RpdmUgPSB0cnVlLCBQbGF0Zm9ybVhSOjpFeWU6Ok5vbmUg
fSB9OworfQorCit2b2lkIFNpbXVsYXRlZFhSRGV2aWNlOjpzY2hlZHVsZU9uTmV4dEZyYW1lKEZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jKQoreworICAgIG1fcGVuZGluZ1VwZGF0ZXMuYXBwZW5kKFdU
Rk1vdmUoZnVuYykpOworfQorCiBXZWJGYWtlWFJEZXZpY2U6OldlYkZha2VYUkRldmljZSgpID0g
ZGVmYXVsdDsKIAogdm9pZCBXZWJGYWtlWFJEZXZpY2U6OnNldFZpZXdzKGNvbnN0IFZlY3RvcjxG
YWtlWFJWaWV3SW5pdD4mIHZpZXdzKQogewotICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+JiBk
ZXZpY2VWaWV3cyA9IG1fZGV2aWNlLnZpZXdzKCk7Ci0gICAgZGV2aWNlVmlld3MuY2xlYXIoKTsK
KyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzLCB2aWV3c10oKSB7CisgICAg
ICAgIFZlY3RvcjxSZWY8RmFrZVhSVmlldz4+IGRldmljZVZpZXdzOwogCi0gICAgLy8gVE9ETzog
ZG8gaW4gbmV4dCBhbmltYXRpb24gZnJhbWUuCi0gICAgZm9yIChhdXRvJiB2aWV3SW5pdCA6IHZp
ZXdzKSB7Ci0gICAgICAgIGF1dG8gdmlldyA9IHBhcnNlVmlldyh2aWV3SW5pdCk7Ci0gICAgICAg
IGlmICghdmlldy5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIGRldmljZVZpZXdzLmFwcGVu
ZCh2aWV3LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKLSAgICB9CisgICAgICAgIGZvciAoYXV0byYg
dmlld0luaXQgOiB2aWV3cykgeworICAgICAgICAgICAgYXV0byB2aWV3ID0gcGFyc2VWaWV3KHZp
ZXdJbml0KTsKKyAgICAgICAgICAgIGlmICghdmlldy5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
ICAgICAgICBkZXZpY2VWaWV3cy5hcHBlbmQodmlldy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBtX2RldmljZS5zZXRWaWV3cyhXVEZNb3ZlKGRldmljZVZpZXdz
KSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2aWNlOjpkaXNjb25uZWN0KERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCkBAIC0xMDgsNDMgKzE1Myw1MSBAQCB2b2lk
IFdlYkZha2VYUkRldmljZTo6ZGlzY29ubmVjdChET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKQogCiB2b2lkIFdlYkZha2VYUkRldmljZTo6c2V0Vmlld2VyT3JpZ2luKEZha2VYUlJp
Z2lkVHJhbnNmb3JtSW5pdCBvcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKIHsKLSAgICBh
dXRvIHJpZ2lkVHJhbnNmb3JtID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOwotICAgIGlm
IChyaWdpZFRyYW5zZm9ybS5oYXNFeGNlcHRpb24oKSkKKyAgICBhdXRvIHJlc3VsdCA9IHBhcnNl
UmlnaWRUcmFuc2Zvcm0ob3JpZ2luKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBUT0RPOiBkbyBpbiBuZXh0IGFuaW1hdGlvbiBmcmFt
ZS4KLSAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmlnaW4ocmlnaWRUcmFuc2Zvcm0ucmVsZWFzZVJl
dHVyblZhbHVlKCkpOwotICAgIG1fZGV2aWNlLnNldEVtdWxhdGVkUG9zaXRpb24oZW11bGF0ZWRQ
b3NpdGlvbik7CisgICAgYXV0byBwb3NlID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwor
CisgICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRGcmFtZShbdGhpcywgcG9zZSA9IFdURk1vdmUo
cG9zZSksIGVtdWxhdGVkUG9zaXRpb25dKCkgbXV0YWJsZSB7CisgICAgICAgIG1fZGV2aWNlLnNl
dFZpZXdlck9yaWdpbihXVEZNb3ZlKHBvc2UpKTsKKyAgICAgICAgbV9kZXZpY2Uuc2V0RW11bGF0
ZWRQb3NpdGlvbihlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtl
WFJEZXZpY2U6OmNsZWFyVmlld2VyT3JpZ2luKCkKIHsKLSAgICAvLyBUT0RPOiBkbyBpbiBuZXh0
IGFuaW1hdGlvbiBmcmFtZS4KLSAgICBtX2RldmljZS5zZXRWaWV3ZXJPcmlnaW4obnVsbHB0cik7
CisgICAgbV9kZXZpY2Uuc2NoZWR1bGVPbk5leHRGcmFtZShbdGhpc10oKSB7CisgICAgICAgIG1f
ZGV2aWNlLnNldFZpZXdlck9yaWdpbihXVEY6Om51bGxvcHQpOworICAgIH0pOwogfQogCiB2b2lk
IFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVWaXNpYmlsaXR5Q2hhbmdlKFhSVmlzaWJpbGl0eVN0
YXRlKQogewogfQogCi12b2lkIFdlYkZha2VYUkRldmljZTo6c2V0Qm91bmRzR2VvbWV0cnkoVmVj
dG9yPEZha2VYUkJvdW5kc1BvaW50PikKK3ZvaWQgV2ViRmFrZVhSRGV2aWNlOjpzZXRCb3VuZHNH
ZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+JiYpCiB7CiB9CiAKIHZvaWQgV2ViRmFr
ZVhSRGV2aWNlOjpzZXRGbG9vck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgb3JpZ2lu
KQogewotICAgIGF1dG8gcmlnaWRUcmFuc2Zvcm0gPSBwYXJzZVJpZ2lkVHJhbnNmb3JtKG9yaWdp
bik7Ci0gICAgaWYgKHJpZ2lkVHJhbnNmb3JtLmhhc0V4Y2VwdGlvbigpKQorICAgIGF1dG8gcmVz
dWx0ID0gcGFyc2VSaWdpZFRyYW5zZm9ybShvcmlnaW4pOworICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFRPRE86IGRvIGluIG5leHQgYW5p
bWF0aW9uIGZyYW1lLgotICAgIG1fZGV2aWNlLnNldEZsb29yT3JpZ2luKHJpZ2lkVHJhbnNmb3Jt
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBhdXRvIHBvc2UgPSByZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCk7CisKKyAgICBtX2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzLCBw
b3NlID0gV1RGTW92ZShwb3NlKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9kZXZpY2Uuc2V0Rmxv
b3JPcmlnaW4oV1RGTW92ZShwb3NlKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViRmFrZVhSRGV2
aWNlOjpjbGVhckZsb29yT3JpZ2luKCkKIHsKLSAgICAvLyBUT0RPOiBkbyBpbiBuZXh0IGFuaW1h
dGlvbiBmcmFtZS4KLSAgICBtX2RldmljZS5zZXRGbG9vck9yaWdpbihudWxscHRyKTsKKyAgICBt
X2RldmljZS5zY2hlZHVsZU9uTmV4dEZyYW1lKFt0aGlzXSgpIHsKKyAgICAgICAgbV9kZXZpY2Uu
c2V0Rmxvb3JPcmlnaW4oV1RGOjpudWxsb3B0KTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJGYWtl
WFJEZXZpY2U6OnNpbXVsYXRlUmVzZXRQb3NlKCkKQEAgLTE1NiwyMyArMjA5LDE2IEBAIFJlZjxX
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IFdlYkZha2VYUkRldmljZTo6c2ltdWxhdGVJbnB1dFNv
dXJjZUNvbm5lY3Rpb24oRmFrCiAgICAgcmV0dXJuIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6
Y3JlYXRlKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPj4gV2Vi
RmFrZVhSRGV2aWNlOjpwYXJzZVJpZ2lkVHJhbnNmb3JtKGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNm
b3JtSW5pdCYgaW5pdCkKK0V4Y2VwdGlvbk9yPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpQb3NlPiBXZWJGYWtlWFJEZXZpY2U6OnBhcnNlUmlnaWRUcmFuc2Zvcm0oY29uc3QgRmFrZVhS
UmlnaWRUcmFuc2Zvcm1Jbml0JiBpbml0KQogewogICAgIGlmIChpbml0LnBvc2l0aW9uLnNpemUo
KSAhPSAzIHx8IGluaXQub3JpZW50YXRpb24uc2l6ZSgpICE9IDQpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIAotICAgIERPTVBvaW50SW5pdCBwb3NpdGlvbjsKLSAg
ICBwb3NpdGlvbi54ID0gaW5pdC5wb3NpdGlvblswXTsKLSAgICBwb3NpdGlvbi55ID0gaW5pdC5w
b3NpdGlvblsxXTsKLSAgICBwb3NpdGlvbi56ID0gaW5pdC5wb3NpdGlvblsyXTsKLQotICAgIERP
TVBvaW50SW5pdCBvcmllbnRhdGlvbjsKLSAgICBvcmllbnRhdGlvbi54ID0gaW5pdC5vcmllbnRh
dGlvblswXTsKLSAgICBvcmllbnRhdGlvbi55ID0gaW5pdC5vcmllbnRhdGlvblsxXTsKLSAgICBv
cmllbnRhdGlvbi56ID0gaW5pdC5vcmllbnRhdGlvblsyXTsKLSAgICBvcmllbnRhdGlvbi53ID0g
aW5pdC5vcmllbnRhdGlvblszXTsKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
UG9zZSBwb3NlOworICAgIHBvc2UucG9zaXRpb24gPSB7IGluaXQucG9zaXRpb25bMF0sIGluaXQu
cG9zaXRpb25bMV0sIGluaXQucG9zaXRpb25bMl0gfTsKKyAgICBwb3NlLm9yaWVudGF0aW9uID0g
eyBpbml0Lm9yaWVudGF0aW9uWzBdLCBpbml0Lm9yaWVudGF0aW9uWzFdLCBpbml0Lm9yaWVudGF0
aW9uWzJdLCBpbml0Lm9yaWVudGF0aW9uWzNdIH07CiAKLSAgICByZXR1cm4gV2ViWFJSaWdpZFRy
YW5zZm9ybTo6Y3JlYXRlKHBvc2l0aW9uLCBvcmllbnRhdGlvbik7CisgICAgcmV0dXJuIHBvc2U7
CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxGYWtlWFJWaWV3Pj4gV2ViRmFrZVhSRGV2aWNlOjpwYXJz
ZVZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQmIGluaXQpCkBAIC0xODIsMjIgKzIyOCwxNyBAQCBF
eGNlcHRpb25PcjxSZWY8RmFrZVhSVmlldz4+IFdlYkZha2VYUkRldmljZTo6cGFyc2VWaWV3KGNv
bnN0IEZha2VYUlZpZXdJbml0JiBpbgogCiAgICAgaWYgKGluaXQucHJvamVjdGlvbk1hdHJpeC5z
aXplKCkgIT0gMTYpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKLSAg
ICBmYWtlVmlldy0+dmlldygpLT5zZXRQcm9qZWN0aW9uTWF0cml4KGluaXQucHJvamVjdGlvbk1h
dHJpeCk7CisgICAgZmFrZVZpZXctPnNldFByb2plY3Rpb24oaW5pdC5wcm9qZWN0aW9uTWF0cml4
KTsKIAogICAgIGF1dG8gdmlld09mZnNldCA9IHBhcnNlUmlnaWRUcmFuc2Zvcm0oaW5pdC52aWV3
T2Zmc2V0KTsKICAgICBpZiAodmlld09mZnNldC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIHZpZXdPZmZzZXQucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIGZha2VWaWV3LT52aWV3KCkt
PnNldFRyYW5zZm9ybSh2aWV3T2Zmc2V0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBmYWtl
Vmlldy0+c2V0T2Zmc2V0KHZpZXdPZmZzZXQucmVsZWFzZVJldHVyblZhbHVlKCkpOwogCiAgICAg
ZmFrZVZpZXctPnNldFJlc29sdXRpb24oaW5pdC5yZXNvbHV0aW9uKTsKIAogICAgIGlmIChpbml0
LmZpZWxkT2ZWaWV3KSB7CiAgICAgICAgIGZha2VWaWV3LT5zZXRGaWVsZE9mVmlldyhpbml0LmZp
ZWxkT2ZWaWV3LnZhbHVlKCkpOwotICAgICAgICAvLyBUT0RPOiBTZXQgdmlld+KAmXMgcHJvamVj
dGlvbiBtYXRyaXggdG8gdGhlIHByb2plY3Rpb24gbWF0cml4Ci0gICAgICAgIC8vIGNvcnJlc3Bv
bmRpbmcgdG8gdGhpcyBmaWVsZCBvZiB2aWV3LCBhbmQgZGVwdGggdmFsdWVzIGVxdWFsIHRvCi0g
ICAgICAgIC8vIGRlcHRoTmVhciBhbmQgZGVwdGhGYXIgb2YgYW55IFhSU2Vzc2lvbiBhc3NvY2lh
dGVkIHdpdGggdGhlIGRldmljZS4KLSAgICAgICAgLy8gSWYgdGhlcmUgY3VycmVudGx5IGlzIG5v
bmUsIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgbmVhcj0wLjEsCi0gICAgICAgIC8vIGZhcj0x
MDAwLjAuCiAgICAgfQogCiAgICAgcmV0dXJuIGZha2VWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmgKaW5kZXggMzkxYmZjMzQ3ZWVmOWFhYWYxN2JkMmJhOGI2YmE0
MzZmMDAwNDZkNS4uM2E2YjBlODU3NjUzZjM3YzRkMThjNjExODdjMzEyZTlkODE3ZGI3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCkBAIC0zMyw4ICszMyw2IEBA
CiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVhS
LmgiCiAjaW5jbHVkZSAiV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiV2Vi
WFJSaWdpZFRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIldlYlhSVmlldy5oIgogI2luY2x1ZGUgIlhS
VmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC00MywyMSArNDEsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgRmFrZVhSVmlldyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZha2VYUlZpZXc+IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZha2VYUlZpZXc+IGNyZWF0ZShYUkV5ZSBleWUpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmFrZVhSVmlldyhleWUpKTsgfQorICAgIHVzaW5nIFBvc2Ug
PSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZTsKKyAgICB1c2luZyBGb3YgPSBQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92OwogCi0gICAgUmVmUHRyPFdlYlhSVmll
dz4gdmlldygpIHsgcmV0dXJuIG1fdmlldzsgfQotICAgIHZvaWQgc2V0UmVzb2x1dGlvbihGYWtl
WFJWaWV3SW5pdDo6RGV2aWNlUmVzb2x1dGlvbiByZXNvbHV0aW9uKSB7IG1fcmVzb2x1dGlvbiA9
IHJlc29sdXRpb247IH0KLSAgICB2b2lkIHNldEZpZWxkT2ZWaWV3KEZha2VYUlZpZXdJbml0OjpG
aWVsZE9mVmlld0luaXQpOworICAgIFhSRXllIGV5ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXllOyB9
CisgICAgY29uc3QgUG9zZSYgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAg
ICBjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCAxNj4mIHByb2plY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3Byb2plY3Rpb247IH0KKyAgICBjb25zdCBPcHRpb25hbDxGb3Y+JiBmaWVsZE9mVmlldygp
IGNvbnN0IHsgcmV0dXJuIG1fZm92O30KIAorICAgIHZvaWQgc2V0UmVzb2x1dGlvbihGYWtlWFJW
aWV3SW5pdDo6RGV2aWNlUmVzb2x1dGlvbiByZXNvbHV0aW9uKSB7IG1fcmVzb2x1dGlvbiA9IHJl
c29sdXRpb247IH0KKyAgICB2b2lkIHNldE9mZnNldChQb3NlJiYgb2Zmc2V0KSB7IG1fb2Zmc2V0
ID0gV1RGTW92ZShvZmZzZXQpOyB9CisgICAgdm9pZCBzZXRQcm9qZWN0aW9uKGNvbnN0IFZlY3Rv
cjxmbG9hdD4mKTsKKyAgICB2b2lkIHNldEZpZWxkT2ZWaWV3KGNvbnN0IEZha2VYUlZpZXdJbml0
OjpGaWVsZE9mVmlld0luaXQmKTsKIHByaXZhdGU6CiAgICAgRmFrZVhSVmlldyhYUkV5ZSBleWUp
Ci0gICAgewotICAgICAgICBtX3ZpZXcgPSBXZWJYUlZpZXc6OmNyZWF0ZSgpOwotICAgICAgICBt
X3ZpZXctPnNldEV5ZShleWUpOwotICAgIH0KKyAgICAgICAgOiBtX2V5ZShleWUpIHsgfQorCiAK
LSAgICBSZWZQdHI8V2ViWFJWaWV3PiBtX3ZpZXc7CisgICAgWFJFeWUgbV9leWU7CiAgICAgRmFr
ZVhSVmlld0luaXQ6OkRldmljZVJlc29sdXRpb24gbV9yZXNvbHV0aW9uOwotICAgIEZha2VYUlZp
ZXdJbml0OjpGaWVsZE9mVmlld0luaXQgbV9mb3Y7CisgICAgUG9zZSBtX29mZnNldDsKKyAgICBz
dGQ6OmFycmF5PGZsb2F0LCAxNj4gbV9wcm9qZWN0aW9uOworICAgIE9wdGlvbmFsPEZvdj4gbV9m
b3Y7CiB9OwogCiBjbGFzcyBTaW11bGF0ZWRYUkRldmljZSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9y
bVhSOjpEZXZpY2UgewpAQCAtNjUsMzEgKzcwLDM1IEBAIGNsYXNzIFNpbXVsYXRlZFhSRGV2aWNl
IGZpbmFsIDogcHVibGljIFBsYXRmb3JtWFI6OkRldmljZSB7CiBwdWJsaWM6CiAgICAgU2ltdWxh
dGVkWFJEZXZpY2UoKTsKICAgICB+U2ltdWxhdGVkWFJEZXZpY2UoKTsKLSAgICB2b2lkIHNldE5h
dGl2ZUJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4gZ2VvbWV0cnkpIHsg
bV9uYXRpdmVCb3VuZHNHZW9tZXRyeSA9IGdlb21ldHJ5OyB9Ci0gICAgdm9pZCBzZXRWaWV3ZXJP
cmlnaW4oUmVmUHRyPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgb3JpZ2luKSB7IG1fdmlld2VyT3Jp
Z2luID0gV1RGTW92ZShvcmlnaW4pOyB9Ci0gICAgdm9pZCBzZXRGbG9vck9yaWdpbihSZWZQdHI8
V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiBvcmlnaW4pIHsgbV9mbG9vck9yaWdpbiA9IFdURk1vdmUo
b3JpZ2luKTsgfQorICAgIHZvaWQgc2V0Vmlld3MoVmVjdG9yPFJlZjxGYWtlWFJWaWV3Pj4mJiB2
aWV3cykgeyBtX3ZpZXdzID0gV1RGTW92ZSh2aWV3cyk7IH0KKyAgICB2b2lkIHNldE5hdGl2ZUJv
dW5kc0dlb21ldHJ5KGNvbnN0IFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4mIGdlb21ldHJ5KSB7
IG1fbmF0aXZlQm91bmRzR2VvbWV0cnkgPSBnZW9tZXRyeTsgfQorICAgIHZvaWQgc2V0Vmlld2Vy
T3JpZ2luKE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4mJiBvcmlnaW4pIHsgbV92aWV3ZXJPcmln
aW4gPSBXVEZNb3ZlKG9yaWdpbik7IH0KKyAgICB2b2lkIHNldEZsb29yT3JpZ2luKE9wdGlvbmFs
PEZyYW1lRGF0YTo6UG9zZT4mJiBvcmlnaW4pIHsgbV9mbG9vck9yaWdpbiA9IFdURk1vdmUob3Jp
Z2luKTsgfQogICAgIHZvaWQgc2V0RW11bGF0ZWRQb3NpdGlvbihib29sIGVtdWxhdGVkKSB7IG1f
ZW11bGF0ZWRQb3NpdGlvbiA9IGVtdWxhdGVkOyB9CiAgICAgVmVjdG9yPFJlZjxGYWtlWFJWaWV3
Pj4mIHZpZXdzKCkgeyByZXR1cm4gbV92aWV3czsgfQogICAgIHZvaWQgc2V0U3VwcG9ydHNTaHV0
ZG93bk5vdGlmaWNhdGlvbihib29sIHN1cHBvcnRzU2h1dGRvd25Ob3RpZmljYXRpb24pIHsgbV9z
dXBwb3J0c1NodXRkb3duTm90aWZpY2F0aW9uID0gc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlv
bjsgfQogICAgIHZvaWQgc2ltdWxhdGVTaHV0ZG93bkNvbXBsZXRlZCgpOworICAgIHZvaWQgc2No
ZWR1bGVPbk5leHRGcmFtZShGdW5jdGlvbjx2b2lkKCk+JiYpOwogcHJpdmF0ZToKICAgICB2b2lk
IGluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSkg
ZmluYWwgeyB9CiAgICAgdm9pZCBzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25TaHV0ZG93bk5vdGlmaWNhdGlvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fc3VwcG9ydHNTaHV0ZG93bk5vdGlmaWNhdGlvbjsgfQogICAgIHZvaWQg
aW5pdGlhbGl6ZVJlZmVyZW5jZVNwYWNlKFBsYXRmb3JtWFI6OlJlZmVyZW5jZVNwYWNlVHlwZSkg
ZmluYWwgeyB9CisgICAgVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6Vmlld0RhdGE+IHZpZXdz
KFBsYXRmb3JtWFI6OlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHJlcXVlc3RG
cmFtZShSZXF1ZXN0RnJhbWVDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgc3RvcFRpbWVy
KCk7CiAgICAgdm9pZCBmcmFtZVRpbWVyRmlyZWQoKTsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxG
YWtlWFJCb3VuZHNQb2ludD4+IG1fbmF0aXZlQm91bmRzR2VvbWV0cnk7Ci0gICAgUmVmUHRyPFdl
YlhSUmlnaWRUcmFuc2Zvcm0+IG1fdmlld2VyT3JpZ2luOwotICAgIFJlZlB0cjxXZWJYUlJpZ2lk
VHJhbnNmb3JtPiBtX2Zsb29yT3JpZ2luOworICAgIE9wdGlvbmFsPEZyYW1lRGF0YTo6UG9zZT4g
bV92aWV3ZXJPcmlnaW47CisgICAgT3B0aW9uYWw8RnJhbWVEYXRhOjpQb3NlPiBtX2Zsb29yT3Jp
Z2luOwogICAgIGJvb2wgbV9lbXVsYXRlZFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
UmVmPEZha2VYUlZpZXc+PiBtX3ZpZXdzOwogICAgIGJvb2wgbV9zdXBwb3J0c1NodXRkb3duTm90
aWZpY2F0aW9uIHsgZmFsc2UgfTsKICAgICBUaW1lciBtX2ZyYW1lVGltZXI7Ci0gICAgVmVjdG9y
PFJlcXVlc3RGcmFtZUNhbGxiYWNrPiBtX2NhbGxiYWNrczsKKyAgICBSZXF1ZXN0RnJhbWVDYWxs
YmFjayBtX0ZyYW1lQ2FsbGJhY2s7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fcGVu
ZGluZ1VwZGF0ZXM7CiB9OwogCiBjbGFzcyBXZWJGYWtlWFJEZXZpY2UgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJGYWtlWFJEZXZpY2U+IHsKQEAgLTEwNiw3ICsxMTUsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNpbXVsYXRlVmlzaWJpbGl0eUNoYW5nZShYUlZpc2liaWxpdHlTdGF0ZSk7
CiAKLSAgICB2b2lkIHNldEJvdW5kc0dlb21ldHJ5KFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4g
Ym91bmRzQ29vcmRpbmF0ZXMpOworICAgIHZvaWQgc2V0Qm91bmRzR2VvbWV0cnkoVmVjdG9yPEZh
a2VYUkJvdW5kc1BvaW50PiYmIGJvdW5kc0Nvb3JkaW5hdGVzKTsKIAogICAgIHZvaWQgc2V0Rmxv
b3JPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0KTsKIApAQCAtMTI3LDcgKzEzNiw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViRmFrZVhSRGV2aWNlKCk7CiAKLSAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8UmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+PiBwYXJzZVJpZ2lkVHJhbnNmb3Jt
KGNvbnN0IEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCYpOworICAgIHN0YXRpYyBFeGNlcHRpb25P
cjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gcGFyc2VSaWdpZFRyYW5zZm9y
bShjb25zdCBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQmKTsKIAogICAgIFNpbXVsYXRlZFhSRGV2
aWNlIG1fZGV2aWNlOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NmE2MmE5ZDAxNjY5ZjZiYjA2ZmQ0YWVkYjhlYzUw
ZDU4ZDJhNGU0Li43NjRkNzUwYThjNjYwNWVmODA2NjY1ZDg5N2IzMjQzMGRjMThjMjYyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDItMTUgIEltYW5vbCBGZXJuYW5kZXogIDxpZmVybmFu
ZGV6QGlnYWxpYS5jb20+IGFuZCBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWJYUiBnZXRWaWV3ZXJQb3NlIGFuZCBnZXRQb3Nl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyMjUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0MTEyOTEwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgTWFyayBwb3NlIHJlbGF0ZWQgV2ViWFIgdGVzdHMg
YXMgcGFzc2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDIxLTAyLTE3ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1w
cm92ZSBwZXJjZW50YWdlIGhlaWdodCBpbiBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFz
cGVjdFJhdGlvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAxOTI5MGZmOTFiNDJl
NWRhMWRiZjk2NWM0NzRjMWVjYmM0MmZhNGRiLi4zODc0ZTkyZjI4NWVjMWU5MjYzNTZjNzg2MGQ0
M2ZlZjA1MmNmODQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NCBAQAorMjAyMS0wMi0xNSAgSW1hbm9sIEZlcm5hbmRleiAgPGlmZXJuYW5kZXpAaWdhbGlhLmNv
bT4gYW5kIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IFdlYlhSIGdldFZpZXdlclBvc2UgYW5kIGdldFBvc2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIyNQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzQxMTI5MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxl
dC4KKworICAgICAgICBNYXJrIHBvc2UgYW5kIHJlZmVyZW5jZSBzcGFjZSBXZWJYUiB0ZXN0cyBh
cyBwYXNzaW5nLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVf
Z2V0UG9zZS5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dldFZpZXdlclBvc2VfZ2V0UG9zZS5odHRwcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVy
ZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9yZWxh
dGlvbnNoaXBzLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVfZGF0YV92YWxp
ZC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2dldFZpZXdlclBvc2UuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJTZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfZXllcy5odHRw
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X29uZWZyYW1ldXBkYXRlLmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisKIDIwMjEtMDItMTYgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdv
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW3NlbGVjdG9yc10gOmZvY3VzLXZpc2libGUgcGFyc2lu
ZyBhbmQgZXhwZXJpbWVudGFsIGZsYWcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
eHIveHJGcmFtZV9nZXRQb3NlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTYyM2Q0
ZjhhMTdmODVmZjgyN2NjNThlODU4MzM1MDRmOTY2OTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX2dl
dFBvc2UuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFhSRnJhbWUu
Z2V0UG9zZSB3b3JrcyBmb3IgaW1tZXJzaXZlIHNlc3Npb25zCitQQVNTIFhSRnJhbWUuZ2V0UG9z
ZSB3b3JrcyBmb3Igbm9uLWltbWVyc2l2ZSBzZXNzaW9ucworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmll
d2VyUG9zZV9nZXRQb3NlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3NlX2dldFBv
c2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MWJlMzkwMTM3OGQ5MDYwNWJiMjYz
ZDYxYmZiZThiZGFmMjBlMGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfZ2V0Vmlld2VyUG9zZV9nZXRQ
b3NlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBYUkZyYW1lIGdl
dFZpZXdlclBvc2UocmVmU3BhY2UpIG1hdGNoZXMgZ2V0UG9zZSh2aWV3ZXIsIHJlZlNwYWNlKS4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clJlZmVyZW5jZVNwYWNlX29yaWdpbk9mZnNldF92aWV3ZXIuaHR0cHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZkZjlmMmJhNmE1ODE5ZjA0ZjEwY2Y1N2JiY2M5ZjU1MDY5NTVmZmEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyUmVmZXJlbmNlU3BhY2Vfb3JpZ2luT2Zmc2V0X3ZpZXdlci5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgQ3JlYXRpbmcgWFJSZWZlcmVuY2VTcGFj
ZSBvcmlnaW4gb2Zmc2V0IG9mZiBvZiBgdmlld2VyYCBzcGFjZSB3b3Jrcy4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJl
ZmVyZW5jZVNwYWNlX3JlbGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clJlZmVyZW5jZVNwYWNl
X3JlbGF0aW9uc2hpcHMuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZWNjMWIyYmVm
ODJmNjFhYjFiNGFhZWY4YWIxOTEwMzY2YmNkZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmVmZXJlbmNlU3Bh
Y2VfcmVsYXRpb25zaGlwcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BB
U1MgQm91bmRlZCBzcGFjZSwgdmlld2VyIHNwYWNlLCBsb2NhbCBhbmQgbG9jYWwtZmxvb3Igc3Bh
Y2UgaGF2ZSBjb3JyZWN0IHBvc2VzIHcuci50LiBlYWNoIG90aGVyCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZDlmMzkxYTc2NGY0ODhiOGY3ZTMxODJjYzg2ZTgyMGIwMWYzMDU3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2RhdGFfdmFsaWQuaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFJlcXVlc3RBbmltYXRpb25GcmFtZSBy
ZXNvbHZlcyB3aXRoIGdvb2QgZGF0YQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0QW5pbWF0
aW9uRnJhbWVfZ2V0Vmlld2VyUG9zZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJl
NjdkYWZlZTVjM2M4MTBhZDlhMjlhM2VkNWNjZDk5Y2E1NzBhNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNz
aW9uX3JlcXVlc3RBbmltYXRpb25GcmFtZV9nZXRWaWV3ZXJQb3NlLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBYUkZyYW1lIGdldFZpZXdlclBvc2UgdXBkYXRlcyBv
biB0aGUgbmV4dCBmcmFtZSBmb3Igbm9uLWltbWVyc2l2ZSBzZXNzaW9ucworUEFTUyBYUkZyYW1l
IGdldFZpZXdlclBvc2UgdXBkYXRlcyBvbiB0aGUgbmV4dCBmcmFtZSBmb3IgaW1tZXJzaXZlIHNl
c3Npb25zCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNiNTYyMWE0ZTFiMzY4MWJjNGRlMjQ1N2Q3OWNiZjViZWQyYzg4MTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyU2Vzc2lvbl92aWV3ZXJfcmVmZXJlbmNlU3BhY2UuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIElkZW50aXR5IHJlZmVyZW5jZSBzcGFjZSBwcm92aWRl
cyBjb3JyZWN0IHBvc2VzIGZvciBpbmxpbmUgc2Vzc2lvbnMKK1BBU1MgSWRlbnRpdHkgcmVmZXJl
bmNlIHNwYWNlIHByb3ZpZGVzIGNvcnJlY3QgcG9zZXMgZm9yIGltbWVyc2l2ZSBzZXNzaW9ucwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X2V5ZXMuaHR0cHMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRjZGFjMmRlMTJhMTBjNjY5YmNiNTk4M2FhMzAyZGE1OWJiNjlm
OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnhyL3hyVmlld19leWVzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKKworUEFTUyBYUlZpZXcuZXllIGlzIGNvcnJlY3QgZm9yIGltbWVyc2l2ZSBzZXNzaW9u
cworUEFTUyBYUlZpZXcuZXllIGlzIGNvcnJlY3QgZm9yIG5vbi1pbW1lcnNpdmUgc2Vzc2lvbnMK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2guaHR0cHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExM2Y2YmM5ZTY1ZWM2ZjEzNDYxM2I5ZTJiMWY0NzFiY2Ez
NTk0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19tYXRjaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACisKK1BBU1MgWFJGcmFtZSBjb250YWlucyB0aGUgZXhwZWN0ZWQgdmlld3MKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJ4ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfb25lZnJhbWV1
cGRhdGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMDIyMTU4ZjBiNWRhYzczMzFm
YzZlNTg3YTAwOTBkM2Y1OGJkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyVmlld19vbmVmcmFtZXVwZGF0ZS5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgWFJWaWV3IHByb2plY3Rp
b24gbWF0cmljZXMgdXBkYXRlIG5lYXIgYW5kIGZhciBkZXB0aHMgb24gdGhlIG5leHQgZnJhbWUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxZDYxNzQw
N2QwMjg3YTEwNWIyYTk0ZThlNmU0ZjcwNDdkMGNiNzczLi44YjkxYjBkZmNlZDEyOTRhZDk4MWRk
YjUxNjVmOGRmZmI1ZGE3NzU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNjM4LDI2ICs2MzgsMzYgQEAgd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW8KIHdl
YmtpdC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
ckRldmljZV9yZXF1ZXN0U2Vzc2lvbl9ub19tb2RlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtp
dC5vcmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94ckRl
dmljZV9yZXF1ZXN0U2Vzc2lvbl9ub25faW1tZXJzaXZlX25vX2dlc3R1cmUuaHR0cHMuaHRtbCBb
IFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnhyL3hyRGV2aWNlX3JlcXVlc3RTZXNzaW9uX29wdGlvbmFsRmVhdHVyZXMuaHR0cHMu
aHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzIwOTg1OSB3ZWJraXQub3JnL2IvMjE1NjM3IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1h
dGlvbkZyYW1lLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIwOTg1
OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9jYW5jZWxB
bmltYXRpb25GcmFtZV9pbnZhbGlkaGFuZGxlLmh0dHBzLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5v
cmcvYi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Np
b25fZmVhdHVyZXNfZGV2aWNlU3VwcG9ydC5odHRwcy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3Jn
L2IvMjA5ODU5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9jYWxsYmFja19jYWxscy5odHRwcy5odG1sIFsgUGFzcyBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVfdGltZXN0YW1wLmh0dHBzLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcv
Yi8yMDk4NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25f
cmVxdWVzdFJlZmVyZW5jZVNwYWNlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJGcmFtZV9nZXRWaWV3ZXJQb3NlX2dldFBvc2UuaHR0
cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
ckZyYW1lX2dldFBvc2UuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94ckZyYW1lX3Nlc3Npb25fc2FtZU9iamVjdC5odHRwcy5odG1sIFsg
UGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl92
aWV3ZXJfYXZhaWxhYmlsaXR5Lmh0dHBzLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8yMDk4
NTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci9hci1tb2R1bGUvaWRsaGFy
bmVzcy5odHRwcy53aW5kb3cuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzIwOTg1OSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL2FyLW1vZHVsZS94ckRldmljZV9pc1Nl
c3Npb25TdXBwb3J0ZWRfaW1tZXJzaXZlLWFyLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJWaWV3X2V5ZXMuaHR0cHMuaHRtbCBbIFBh
c3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clZpZXdfbWF0Y2gu
aHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4
ci94clZpZXdfb25lZnJhbWV1cGRhdGUuaHR0cHMuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9i
LzIwOTg1OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyV2ViR0xMYXll
cl9jb25zdHJ1Y3Rvci5odHRwcy5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMjA5ODU5IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJXZWJHTExheWVyX2ZyYW1lYnVm
ZmVyX3NhbWVPYmplY3QuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci9uYXZpZ2F0b3JfeHJfc2FtZU9iamVjdC5odHRwcy5odG1sIFsgUGFz
cyBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyRnJhbWVfc2Vzc2lv
bl9zYW1lT2JqZWN0Lmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2VieHIveHJSZWZlcmVuY2VTcGFjZV9vcmlnaW5PZmZzZXRfdmlld2VyLmh0dHBz
Lmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJS
ZWZlcmVuY2VTcGFjZV9yZWxhdGlvbnNoaXBzLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJSaWdpZFRyYW5zZm9ybV9jb25zdHJ1Y3Rv
ci5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnhyL3hyUmlnaWRUcmFuc2Zvcm1faW52ZXJzZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyUmlnaWRUcmFuc2Zvcm1fbWF0cml4Lmh0
dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIv
eHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlvbkZyYW1lLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2NhbmNlbEFuaW1hdGlv
bkZyYW1lX2ludmFsaWRoYW5kbGUuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fZW5kLmh0dHBzLmh0bWwgWyBQYXNzIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX2ZlYXR1cmVz
X2RldmljZVN1cHBvcnQuaHR0cHMuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcHJldmVudF9tdWx0aXBsZV9leGNsdXNpdmUuaHR0
cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ci94
clNlc3Npb25fcmVxdWVzdEFuaW1hdGlvbkZyYW1lX2NhbGxiYWNrX2NhbGxzLmh0dHBzLmh0bWwg
WyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3JlcXVlc3RBbmltYXRpb25GcmFtZV9kYXRhX3ZhbGlkLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmlt
YXRpb25GcmFtZV9nZXRWaWV3ZXJQb3NlLmh0dHBzLmh0bWwgWyBQYXNzIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9uX3JlcXVlc3RBbmltYXRpb25GcmFt
ZV90aW1lc3RhbXAuaHR0cHMuaHRtbCBbIFBhc3MgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJ4ci94clNlc3Npb25fcmVxdWVzdFJlZmVyZW5jZVNwYWNlLmh0dHBzLmh0bWwg
WyBQYXNzIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VieHIveHJTZXNzaW9u
X3ZpZXdlcl9yZWZlcmVuY2VTcGFjZS5odHRwcy5odG1sIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3JlbmRlcl9zdGF0ZV92ZXJ0aWNhbF9mb3ZfaW1tZXJz
aXZlLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VieHIvcmVuZGVyX3N0YXRlX3VwZGF0ZS5odHRwcy5odG1sIFsgUGFzcyBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyL3hyU2Vzc2lvbl9lbmQuaHR0cHMuaHRtbCBbIFBh
c3MgXQogaHR0cC93cHQvd2VieHIveHJTZXNzaW9uX2VuZF9kZXZpY2VfcmVwb3J0c19zaHV0ZG93
bi5odHRwcy5odG1sIFsgUGFzcyBdCiBodHRwL3dwdC93ZWJ4ci94clNlc3Npb25fZW5kZWRfYnlf
c3lzdGVtLmh0dHBzLmh0bWwgWyBQYXNzIF0KIGh0dHAvd3B0L3dlYnhyL3hyU2Vzc2lvbl9yZWpl
Y3RfbXVsdGlwbGVfZW5kLmh0dHBzLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>