<?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>110450</bug_id>
          
          <creation_ts>2013-02-21 03:01:50 -0800</creation_ts>
          <short_desc>[EFL][Qt][WK2] Don&apos;t use delegates scrolling and fixed visible content rect.</short_desc>
          <delta_ts>2017-03-11 10:39:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>110298</dependson>
          <blocked>110066</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>abecsi</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>luiz</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>menard</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>838272</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-21 03:01:50 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838274</commentid>
    <comment_count>1</comment_count>
      <attachid>189494</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-21 03:05:13 -0800</bug_when>
    <thetext>Created attachment 189494
WIP: share to show the direction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838275</commentid>
    <comment_count>2</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-21 03:06:57 -0800</bug_when>
    <thetext>changelog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838277</commentid>
    <comment_count>3</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-21 03:08:19 -0800</bug_when>
    <thetext>To clarify the objective, I copy and paste words from Bug 110066

Kenneth raised a question that we still need to use ScrollView::m_fixedVisibleContentRect.

Currently, we used fixedVisibleContentRect to make WebCore know actual scroll position and viewport size that PageViewportController deals with.
After Bug 105978 and Bug 107424, ScrollView can trace actual viewport size of PageViewportController. So if we make ScrollView know actual scroll position, we can remove fixedVisibleContentRect as well as delegates scrolling.

This huge changes have benefits as follow:
1. We share more code with other ports
2. It would be an intermediate step to go with scrolling coordinator (AFAIK cmarcelo and MPozdnyakov are investigating)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838278</commentid>
    <comment_count>4</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-21 03:08:48 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; changelog?

I&apos;ll write. I&apos;m working in progress :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838279</commentid>
    <comment_count>5</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-21 03:09:27 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; changelog?
&gt; 
&gt; I&apos;ll write. I&apos;m working in progress :)

np :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838283</commentid>
    <comment_count>6</comment_count>
      <attachid>189494</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-21 03:16:24 -0800</bug_when>
    <thetext>Comment on attachment 189494
WIP: share to show the direction

OK, I see this is getting somewhere!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838305</commentid>
    <comment_count>7</comment_count>
      <attachid>189494</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-21 03:51:49 -0800</bug_when>
    <thetext>Comment on attachment 189494
WIP: share to show the direction

Attachment 189494 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16651967

New failing tests:
compositing/iframes/become-composited-nested-iframes.html
compositing/iframes/invisible-nested-iframe-show.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839208</commentid>
    <comment_count>8</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-21 21:36:00 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; np :)

(In reply to comment #6)
&gt; (From update of attachment 189494 [details])
&gt; OK, I see this is getting somewhere!

hehe. give me time :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842696</commentid>
    <comment_count>9</comment_count>
      <attachid>190442</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-26 22:13:30 -0800</bug_when>
    <thetext>Created attachment 190442
WIP by 80%. I&apos;ll separate this big changes into several bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844129</commentid>
    <comment_count>10</comment_count>
      <attachid>190442</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2013-02-28 08:49:09 -0800</bug_when>
    <thetext>Comment on attachment 190442
WIP by 80%. I&apos;ll separate this big changes into several bugs.

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

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:187
&gt; +QTransform QQuickWebPage::transformFromItemToWebView() const
&gt; +{
&gt; +    return transformFromWebViewToItem().inverted();
&gt; +}
&gt; +
&gt; +QTransform QQuickWebPage::transformFromWebViewToItem() const
&gt; +{
&gt; +    qreal xPos = x();
&gt; +    qreal yPos = y();
&gt; +
&gt; +    return QTransform(d-&gt;contentsScale, 0, 0, 0, d-&gt;contentsScale, 0, xPos, yPos, 1);
&gt; +}

I suspect this breaks event transformation if the WebView has other items anchored to the content qquickwebpage.
Why is this change needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846217</commentid>
    <comment_count>11</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-03-04 01:20:41 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 190442 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190442&amp;action=review
&gt; I suspect this breaks event transformation if the WebView has other items anchored to the content qquickwebpage.
&gt; Why is this change needed?

Thank you for noting. This part was separated in Bug 109033.

In Bug 109033, I change as follows :
QPointF scrollPosition = transformFromItem().map(QPointF());
node-&gt;setScrollPosition(scrollPosition);

Could you check if I correct? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846218</commentid>
    <comment_count>12</comment_count>
      <attachid>191171</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-03-04 01:22:45 -0800</bug_when>
    <thetext>Created attachment 191171
WIP by 95%. I&apos;ll separate this big changes into several bugs. 

WIP by 95%. I&apos;ll separate this big changes into several bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846220</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 01:24:58 -0800</bug_when>
    <thetext>Attachment 191171 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/platform/efl-wk2/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt&apos;, u&apos;LayoutTests/platform/efl-wk2/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt&apos;, u&apos;LayoutTests/platform/qt-5.0-wk2/compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt&apos;, u&apos;LayoutTests/platform/qt-5.0-wk2/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp&apos;, u&apos;Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h&apos;, u&apos;Source/WebCore/rendering/RenderLayerCompositor.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/NativeWebTouchEvent.h&apos;, u&apos;Source/WebKit2/Shared/NativeWebWheelEvent.h&apos;, u&apos;Source/WebKit2/Shared/efl/NativeWebMouseEventEfl.cpp&apos;, u&apos;Source/WebKit2/Shared/efl/NativeWebTouchEventEfl.cpp&apos;, u&apos;Source/WebKit2/Shared/efl/NativeWebWheelEventEfl.cpp&apos;, u&apos;Source/WebKit2/Shared/efl/WebEventFactory.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/qquickwebpage_p.h&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p_p.h&apos;, u&apos;Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/DrawingAreaProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h&apos;, u&apos;Source/WebKit2/UIProcess/PageClient.h&apos;, u&apos;Source/WebKit2/UIProcess/PageViewportController.cpp&apos;, u&apos;Source/WebKit2/UIProcess/PageViewportController.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.messages.in&apos;, u&apos;Source/WebKit2/UIProcess/efl/PageViewportControllerClientEfl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebView.h&apos;, u&apos;Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp&apos;, u&apos;Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.h&apos;, u&apos;Source/WebKit2/UIProcess/qt/QtPageClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/qt/QtPageClient.h&apos;, u&apos;Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp&apos;, u&apos;Source/WebKit2/UIProcess/qt/QtWebPageSGNode.cpp&apos;, u&apos;Source/WebKit2/UIProcess/qt/QtWebPageSGNode.h&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.messages.in&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.messages.in&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:227:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 54 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846234</commentid>
    <comment_count>14</comment_count>
      <attachid>191171</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-04 01:56:15 -0800</bug_when>
    <thetext>Comment on attachment 191171
WIP by 95%. I&apos;ll separate this big changes into several bugs. 

Attachment 191171 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16916184</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846250</commentid>
    <comment_count>15</comment_count>
      <attachid>191171</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-04 02:14:00 -0800</bug_when>
    <thetext>Comment on attachment 191171
WIP by 95%. I&apos;ll separate this big changes into several bugs. 

Attachment 191171 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16898780</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846289</commentid>
    <comment_count>16</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2013-03-04 03:10:39 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (From update of attachment 190442 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190442&amp;action=review
&gt; &gt; I suspect this breaks event transformation if the WebView has other items anchored to the content qquickwebpage.
&gt; &gt; Why is this change needed?
&gt; 
&gt; Thank you for noting. This part was separated in Bug 109033.
&gt; 
&gt; In Bug 109033, I change as follows :
&gt; QPointF scrollPosition = transformFromItem().map(QPointF());
&gt; node-&gt;setScrollPosition(scrollPosition);
&gt; 
&gt; Could you check if I correct? :)
Thanks, I think that should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847444</commentid>
    <comment_count>17</comment_count>
      <attachid>191171</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 01:43:53 -0800</bug_when>
    <thetext>Comment on attachment 191171
WIP by 95%. I&apos;ll separate this big changes into several bugs. 

Attachment 191171 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17025064

New failing tests:
compositing/iframes/nested-composited-iframe.html
compositing/iframes/overlapped-nested-iframes.html
platform/chromium/virtual/softwarecompositing/rtl/rtl-iframe-fixed.html
platform/chromium/virtual/softwarecompositing/framesets/composited-frame-alignment.html
compositing/framesets/composited-frame-alignment.html
compositing/iframes/invisible-nested-iframe-show.html
platform/chromium/virtual/softwarecompositing/iframes/invisible-nested-iframe-show.html
platform/chromium/virtual/softwarecompositing/iframes/overlapped-nested-iframes.html
platform/chromium/virtual/softwarecompositing/rtl/rtl-iframe-absolute.html
platform/chromium/virtual/softwarecompositing/iframes/become-composited-nested-iframes.html
platform/chromium/virtual/softwarecompositing/iframes/nested-composited-iframe.html
compositing/iframes/become-composited-nested-iframes.html
platform/chromium/virtual/softwarecompositing/rtl/rtl-iframe-relative.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286413</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-11 10:39:29 -0800</bug_when>
    <thetext>Closing this bug because the EFL port has been removed from trunk.

If you feel this bug applies to a different upstream WebKit port and was closed in error, please either update the title and reopen the bug, or leave a comment to request this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189494</attachid>
            <date>2013-02-21 03:05:13 -0800</date>
            <delta_ts>2013-02-26 22:13:25 -0800</delta_ts>
            <desc>WIP: share to show the direction</desc>
            <filename>bug-110450-20130221200028.patch</filename>
            <type>text/plain</type>
            <size>23894</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggNmQ2NjVkYWMwODQ4OTQxMmIyNzE4NDlhZDRhNGViMTc5NTIyZmQxMi4uYmVhNDcwODQ2YmQx
NzRlYTAzZTA0ODM1ODA0OGMyNjE0ZWQ0NGY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtMTE3MSw4ICsxMTcxLDggQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93
U3VidHJlZSkKIAogICAgICAgICAgICAgICAgICAgICBtX2ZpcnN0TGF5b3V0ID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZmlyc3RMYXlvdXRDYWxsYmFja1BlbmRpbmcgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBpZiAodXNlRml4ZWRMYXlvdXQoKSAmJiAhZml4ZWRMYXlvdXRT
aXplKCkuaXNFbXB0eSgpICYmIGRlbGVnYXRlc1Njcm9sbGluZygpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9sYXN0Vmlld3BvcnRTaXplID0gZml4ZWRMYXlvdXRTaXplKCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh1c2VGaXhlZExheW91dCgpICYmICFmaXhlZExheW91dFNpemUoKS5p
c0VtcHR5KCkgJiYgIWNhbkhhdmVTY3JvbGxiYXJzKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2xhc3RWaWV3cG9ydFNpemUgPSB2aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdFZpZXdw
b3J0U2l6ZSA9IHZpc2libGVDb250ZW50UmVjdChJbmNsdWRlU2Nyb2xsYmFycykuc2l6ZSgpOwog
ICAgICAgICAgICAgICAgICAgICBtX2xhc3Rab29tRmFjdG9yID0gcm9vdC0+c3R5bGUoKS0+em9v
bSgpOwpAQCAtMzg2NSw3ICszODY1LDcgQEAgYm9vbCBGcmFtZVZpZXc6OndoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKIAotICAgIGlmIChkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkgeworICAgIGlmIChkZWxl
Z2F0ZXNTY3JvbGxpbmcoKSB8fCAhY2FuSGF2ZVNjcm9sbGJhcnMoKSkgewogICAgICAgICBJbnRT
aXplIG9mZnNldCA9IHNjcm9sbE9mZnNldCgpOwogICAgICAgICBJbnRTaXplIG5ld09mZnNldCA9
IEludFNpemUob2Zmc2V0LndpZHRoKCkgLSB3aGVlbEV2ZW50LmRlbHRhWCgpLCBvZmZzZXQuaGVp
Z2h0KCkgLSB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBuZXdP
ZmZzZXQpIHsKQEAgLTM4NzYsMTAgKzM4NzYsNiBAQCBib29sIEZyYW1lVmlldzo6d2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIC8vIFdlIGRvbid0IGFsbG93IG1vdXNlIHdoZWVsaW5nIHRvIGhh
cHBlbiBpbiBhIFNjcm9sbFZpZXcgdGhhdCBoYXMgaGFkIGl0cyBzY3JvbGxiYXJzIGV4cGxpY2l0
bHkgZGlzYWJsZWQuCi0gICAgaWYgKCFjYW5IYXZlU2Nyb2xsYmFycygpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KICNpZiAhUExBVEZPUk0oV1gpCiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggOGM0NmI0ZWIyMWNhZWZiNjllODZmMTQ5
MjlmNzAzZGYzZDM0NGMxNy4uMWUyZGEyMzE2MzY1MWVhNGNhZmRiNWNjMTdiNDM5ODEyNGJlNjc5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKQEAgLTIxNDQsNyArMjE0NCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpuZWVkc0NvbnRlbnRzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciogbGF5CiBi
b29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNTY3JvbGxMYXllcihSb290TGF5ZXJB
dHRhY2htZW50IGF0dGFjaG1lbnQpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBhcHBsaWVzIHdoZW4g
dGhlIGFwcGxpY2F0aW9uIFVJIGhhbmRsZXMgc2Nyb2xsaW5nLCBpbiB3aGljaCBjYXNlIFJlbmRl
ckxheWVyQ29tcG9zaXRvciBkb2Vzbid0IG5lZWQgdG8gbWFuYWdlIGl0LgotICAgIGlmIChtX3Jl
bmRlclZpZXctPmZyYW1lVmlldygpLT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICBpZiAoIW1f
cmVuZGVyVmlldy0+ZnJhbWVWaWV3KCktPmNhbkhhdmVTY3JvbGxiYXJzKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIG91ciBvd24gc2Nyb2xsaW5n
IGlmIHdlJ3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHAKaW5kZXggNzk3M2Y5ODljY2FiYzFmOTQxZjZkMTAxMmM5OWZhNDllMDk0ZGQ5
Yy4uNmJjOTdkOTNhOWRjZDBlZjkwYTM4MjgyMWViNTBjMGRhZTk4YmRiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC05OTgs
MTAgKzk5OCwxMCBAQCB2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjp1cGRhdGVW
aWV3cG9ydFNpemUoKQogICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5n
ZVZpZXdwb3J0U2l6ZShGbG9hdFNpemUocS0+d2lkdGgoKSwgcS0+aGVpZ2h0KCkpKTsKIH0KIAot
dm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6cGFnZURpZFJlcXVlc3RTY3JvbGwo
Y29uc3QgUVBvaW50JiBwb3MpCit2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpw
YWdlRGlkU2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9zKQogewogICAgIGlmIChtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXIpCi0gICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZURpZFJl
cXVlc3RTY3JvbGwocG9zKTsKKyAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdl
RGlkU2Nyb2xsKHBvcyk7CiB9CiAKIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OlFRdWlja1dl
YlZpZXdFeHBlcmltZW50YWwoUVF1aWNrV2ViVmlldyAqd2ViVmlldywgUVF1aWNrV2ViVmlld1By
aXZhdGUqIHdlYlZpZXdQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IDhhZDUzZTMyNmIzNjhlYmZmMTg2NGRk
MjRmYWYwZDE2NzgwYjY1YTUuLjk3YzM1YTA2ZjhiNmMwMjQ2OGRjOWI0YjExYTc4MzExN2RjM2E3
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXdfcF9wLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFnZUNsaWVu
dC4KICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBRUG9pbnQmIHBv
cykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRTY3JvbGwoY29uc3QgUVBvaW50JiBwb3Mp
IHsgfQogICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7CiAgICAgdm9pZCBkaWRSZWxhdW5jaFBy
b2Nlc3MoKTsKICAgICBQYXNzT3duUHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRl
RHJhd2luZ0FyZWFQcm94eSgpOwpAQCAtMjMxLDcgKzIzMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciogdmlld3BvcnRDb250cm9sbGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLmRhdGEoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWdl
RGlkUmVxdWVzdFNjcm9sbChjb25zdCBRUG9pbnQmIHBvcyk7CisgICAgdmlydHVhbCB2b2lkIHBh
Z2VEaWRTY3JvbGwoY29uc3QgUVBvaW50JiBwb3MpOwogCiBwcml2YXRlOgogICAgIFFTY29wZWRQ
b2ludGVyPFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcj4gbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcv
cXJhd3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJh
d3dlYnZpZXcuY3BwCmluZGV4IDRhYTM1MzM3N2YxNDI3YzUxNmU5NWU5YmI3YmFiYjY2ODQ1YTky
ZDcuLjQ1MzViZGNlNGVjZTQxNGNhMTM1N2I1Y2ZmNGFjZWNjNWQ0YzQ2MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKQEAg
LTIwMiw3ICsyMDIsNyBAQCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHk+
IFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y3JlYXRlQ29sb3JDaG9vc2VyUAogfQogI2VuZGlmCiAKLXZv
aWQgUVJhd1dlYlZpZXdQcml2YXRlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9zKQordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OnBhZ2VEaWRTY3JvbGwo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvcykKIHsKICAgICBtX2NsaWVudC0+dmlld1JlcXVl
c3RlZFNjcm9sbChwb3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oCmluZGV4IDAyOTk1NmU3N2YyNjAwZTIyMTE2ZGNk
NzAxNjY2Njk2MDc4OGE5MDMuLmUyZGMyMzFmYzc5MmFiZWM4YzJiNGFmYTMzNjFmYWVhNzdmN2Nj
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3
ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3Fy
YXd3ZWJ2aWV3X3BfcC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBQYXNzT3duUHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQ
cm94eSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3MpOworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkU2Nyb2xsKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3MpOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBkMDhjYzkxZjY0NGQ5
YTlmOGJiODczZWI0ZmU4MzFiOTk4M2Y4YzYyLi4xNTkwOWUwNzExMTQ1NDA4YThhMDQ3YTFiOWFl
N2Q1NDg0ZTU3M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTEx
NSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpID0gMDsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJh
bWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBjb3ZlcmVkUmVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlv
blZpZXdwb3J0UmVhZHkoKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRleCAwZjZiZDIyMzBlZWZlNDRl
NTNiZmNkMzYwMmQ2OTFiMTM1NDI3NzI3Li44NDVhZTdlN2RlMDc4NjFjM2MyYmZhNWVmNGU5ZTFi
MGFmMzMyNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBQYWdlVmlld3BvcnRD
b250cm9sbGVyOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQogICAgIG1fd2ViUGFnZVBy
b3h5LT5jb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCk7CiB9CiAKLXZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIGNzc1Bv
c2l0aW9uKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlRGlkU2Nyb2xsKGNvbnN0
IEludFBvaW50JiBjc3NQb3NpdGlvbikKIHsKICAgICAvLyBJZ25vcmUgdGhlIHJlcXVlc3QgaWYg
c3VzcGVuZGVkLiBDYW4gb25seSBoYXBwZW4gZHVlIHRvIGRlbGF5IGluIGV2ZW50IGRlbGl2ZXJ5
LgogICAgIGlmIChtX2hhc1N1c3BlbmRlZENvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaAppbmRleCAzNWQ0YjUzM2QyMDcwMmVi
MjlhMmMyMmQ3MzQyOTBiZDI0YmJkNjAzLi5jZTM1NzQ4ZTc2MDJkNTQ3Y2U5YTRiZTg3MmFhMmM3
ZGYwY2FmN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3Bv
cnRDb250cm9sbGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2hh
bmdlVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYp
OwogICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVu
dHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CiAgICAgdm9pZCBw
YWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKLSAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjc3NQb3NpdGlvbik7CisgICAgdm9pZCBwYWdl
RGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjc3NQb3NpdGlvbik7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBzeW5jVmlzaWJsZUNvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQgJnRyYWplY3RvcnlWZWN0b3IgPSBXZWJDb3JlOjpGbG9hdFBvaW50Ojp6ZXJvKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlM2U3MzUzYzdmYmU4
YWNlZTE3ZDM4YmRjMjkxNTQ0MmVhMjEyNzQzLi5iNWYwM2FkMDUzOTZjMzU2MWVhZjc0Y2Q3ZWQ0
MjIwNzVlMmE2NzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMjY3MywxMSArMjY3Myw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmCiB9CiAKICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLXZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkUmVx
dWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9pbnQpCi17Ci0gICAgbV9wYWdlQ2xpZW50LT5w
YWdlRGlkUmVxdWVzdFNjcm9sbChwb2ludCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdl
VHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQogewogICAgIG1fcGFnZUNsaWVudC0+cGFnZVRyYW5z
aXRpb25WaWV3cG9ydFJlYWR5KCk7CkBAIC0yNjk1LDEyICsyNjkwLDE1IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgVmlld3BvcnRBdHRyaWJ1
dGVzJiBhdHRyKQogICAgIG1fcGFnZUNsaWVudC0+ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVz
KGF0dHIpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cGFnZURpZFNjcm9sbCgpCit2b2lkIFdl
YlBhZ2VQcm94eTo6cGFnZURpZFNjcm9sbChjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24p
CiB7CiAgICAgbV91aUNsaWVudC5wYWdlRGlkU2Nyb2xsKHRoaXMpOwogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHRJZ25vcmVkKTsKICNlbmRpZgorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQor
ICAgIG1fcGFnZUNsaWVudC0+cGFnZURpZFNjcm9sbChzY3JvbGxQb3NpdGlvbik7CisjZW5kaWYK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBjODA2YjliMGJlMDRkN2U0MjA3NmVjZWZjNzhlMTEyZTU2
ZDJiMmUyLi44N2Y0Y2Q5OGY4NjkzZDhkYWQ3MDZlZDU3NWI4MDFlMDA4MWZmZGYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MzQsNyArODM0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZp
ZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHQpOwogICAgIHZvaWQgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwg
Ym9vbCYgc2hvdWxkQ2xvc2UpOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVz
KGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwotICAgIHZvaWQgcGFnZURpZFNj
cm9sbCgpOworICAgIHZvaWQgcGFnZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAgICB2b2lkIHByaW50RnJhbWUodWludDY0X3QgZnJh
bWVJRCk7CiAgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFt
ZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50
NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1
aW50NjRfdCBleHBlY3RlZFVzYWdlLCB1aW50NjRfdCYgbmV3UXVvdGEpOwpAQCAtODU2LDcgKzg1
Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBT
dHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBTdHJpbmcmIGRpciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICAKICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xs
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdw
b3J0UmVhZHkoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGY2MWU1ZDM0MDEx
OWY3OTUyNzdjMDkwNTFhYjA2YWEyODc2YzAyOC4uOGMwOGE0ZGZlODQyNmVkYTcwNzk0NzNmZjdm
Mjk0ZmMxYTM2YTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01Niw3ICs1Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgU2NyZWVuVG9XaW5kb3coV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQp
IC0+IChXZWJDb3JlOjpJbnRQb2ludCB3aW5kb3dQb2ludCkKICAgICBXaW5kb3dUb1NjcmVlbihX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QpIC0+IChXZWJDb3JlOjpJbnRSZWN0IHNjcmVlbkZyYW1lKQog
ICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXVEY6OlN0cmluZyBtZXNzYWdlLCB1aW50
NjRfdCBmcmFtZUlEKSAtPiAoYm9vbCBzaG91bGRDbG9zZSkKLSAgICBQYWdlRGlkU2Nyb2xsKCkK
KyAgICBQYWdlRGlkU2Nyb2xsKFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKQogICAg
IFJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRp
bmdzIHBhcmFtZXRlcnMpCiAgICAgUHJpbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSAtPiAoKQog
ICAgIFJ1bk1vZGFsKCkKQEAgLTc0LDcgKzc0LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKICNlbmRpZgogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgUGFnZURpZFJl
cXVlc3RTY3JvbGwoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgUGFnZVRyYW5zaXRpb25W
aWV3cG9ydFJlYWR5KCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5kZXggZmEzOTYxNDIwN2VhYTFkMmM3ZTI4ZjY0YmM3
YTYxNTg5ZGJlMzY3OC4uNDU5NzYzYmYzMThlMDM1NjA0Njk5ZjBlMzJjYjI2NjA3MDQ3NWEyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC00MzcsMTEgKzQz
NywxMSBAQCB2b2lkIFdlYlZpZXc6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBX
ZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dAogICAgICAgICBtX2V3a1ZpZXctPnNjaGVk
dWxlVXBkYXRlRGlzcGxheSgpOwogfQogCi12b2lkIFdlYlZpZXc6OnBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKK3ZvaWQgV2ViVmlldzo6cGFnZURpZFNjcm9s
bChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgaWYgKG1fcGFnZS0+dXNlRml4ZWRM
YXlvdXQoKSkgewogICAgICAgICBBU1NFUlQobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKLSAg
ICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb3Np
dGlvbik7CisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZURpZFNjcm9sbChw
b3NpdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9ld2tWaWV3LT5zZXRQYWdlUG9zaXRp
b24oRmxvYXRQb2ludChwb3NpdGlvbikpOwogICAgICAgICBtX2V3a1ZpZXctPnNjaGVkdWxlVXBk
YXRlRGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAppbmRleCA0
NGVlOWQ3MWI3OWQ0NDQ1M2YxNjcyNDVjNmU3OWVlYTBlMDc5NzQ5Li5kYjMxYjc3NWEzOTY2OGJm
NzJmNTA5OWQ1OWZjODM2NGFiYWNjMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlZpZXcuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRvb2xUaXBD
aGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCi0gICAgdm9p
ZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIE9WRVJSSURF
OworICAgIHZvaWQgcGFnZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIE9WRVJS
SURFOwogICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29u
dGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkgT1ZFUlJJREU7
CiAgICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSBPVkVSUklERTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcAppbmRleCA4OWE0MGM5
MjMxYTE4MWI3MDE5YzFlMmZhMTJiNmI2OGIxMTZiMjYxLi5hOGM4YTE2NjI1ZWNkZmNiZTI1MTEz
MWJkZmM2Y2ZiMWI2YzU0NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRQYWdlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQ
YWdlQ2xpZW50LmNwcApAQCAtODMsOSArODMsOSBAQCB2b2lkIFF0UGFnZUNsaWVudDo6ZGlkUmVu
ZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZQog
ICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+ZGlkUmVuZGVyRnJhbWUo
KTsKIH0KIAotdm9pZCBRdFBhZ2VDbGllbnQ6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IElu
dFBvaW50JiBwb3MpCit2b2lkIFF0UGFnZUNsaWVudDo6cGFnZURpZFNjcm9sbChjb25zdCBJbnRQ
b2ludCYgcG9zKQogewotICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+
cGFnZURpZFJlcXVlc3RTY3JvbGwocG9zKTsKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0
KG1fd2ViVmlldyktPnBhZ2VEaWRTY3JvbGwocG9zKTsKIH0KIAogdm9pZCBRdFBhZ2VDbGllbnQ6
OnByb2Nlc3NEaWRDcmFzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRQYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xp
ZW50LmgKaW5kZXggYmMzZTNmMTJjMzBlY2YwN2Y3OTg1Y2ZiZjdiMDQyMmE3YTFmNTUyMS4uZDVl
M2E3OTI1MDcwZGI2MWM3YTQxNDRjZWM4MGE0OGZhYjU1ZWI0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzVmlld0ZvY3VzZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3
VmlzaWJsZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0
b3JRdE9iamVjdChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVl
c3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFn
ZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3Bv
cnRBdHRyaWJ1dGVzJik7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGQ1YjY3ZmNkMDM5N2I5MzU4YTliNTQ5NDViNDVhMDQ0
M2RjNDU1YTQuLmI5MTliYTFmOTY4MDUyMWEzNGI1NGM4NWIzYmRkNGJmZjY4OTgwZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTM5NiwyMCArMzk2LDIwIEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjppbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGJvb2wpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5wYWdl
RGlkU2Nyb2xsKCk7CisgICAgbV9wYWdlLT5wYWdlRGlkU2Nyb2xsKG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgbV9wYWdlLT5k
cmF3aW5nQXJlYSgpLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzY3JvbGwoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IElu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewotICAgIG1fcGFn
ZS0+cGFnZURpZFNjcm9sbCgpOworICAgIG1fcGFnZS0+cGFnZURpZFNjcm9sbChtX3BhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCkpOwogICAgIG1f
cGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2Nyb2xsKGludGVyc2VjdGlvbihzY3JvbGxSZWN0LCBjbGlw
UmVjdCksIHNjcm9sbERlbHRhKTsKIH0KIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQog
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBJbnRQ
b2ludCYgc2Nyb2xsT2Zmc2V0KQogewotICAgIG1fcGFnZS0+cGFnZURpZFJlcXVlc3RTY3JvbGwo
c2Nyb2xsT2Zmc2V0KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA1Zjk1MzMxMjY0MzdhMWY5MDQ1
NmRkN2M1NDU5ZDIyMGI1NjI5Y2QuLjFiNDQyMTYzNjNlMjkyNzVjYmFkYWYwNTkzZWMyMWZkZWVl
Y2ZmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMjA1LDcgKzEy
MDUsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRG
b3JOZXdQYWdlKCkKICAgICBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0ID0gaXNNYWluRnJhbWUg
JiYgd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKTsKICAgICBib29sIHNob3VsZERpc2FibGVTY3Jv
bGxpbmcgPSBpc01haW5GcmFtZSAmJiAhd2ViUGFnZS0+bWFpbkZyYW1lSXNTY3JvbGxhYmxlKCk7
CiAgICAgYm9vbCBzaG91bGRIaWRlU2Nyb2xsYmFycyA9IHNob3VsZFVzZUZpeGVkTGF5b3V0IHx8
IHNob3VsZERpc2FibGVTY3JvbGxpbmc7Ci0gICAgSW50UmVjdCBjdXJyZW50Rml4ZWRWaXNpYmxl
Q29udGVudFJlY3QgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpID8gbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPnZpZXcoKS0+Zml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKSA6IEludFJlY3QoKTsK
IAogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlID0gbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIG1fZnJh
bWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnNob3Vs
ZFVzZUN1c3RvbVJlcHJlc2VudGF0aW9uRm9yUmVzcG9uc2UocmVzcG9uc2UpOwpAQCAtMTIxNCw3
ICsxMjEzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRm9yTmV3UGFnZSgpCiAgICAgU2Nyb2xsYmFyTW9kZSBkZWZhdWx0U2Nyb2xsYmFyTW9kZSA9
IHNob3VsZEhpZGVTY3JvbGxiYXJzID8gU2Nyb2xsYmFyQWx3YXlzT2ZmIDogU2Nyb2xsYmFyQXV0
bzsKIAogICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBhZ2UtPnNpemUo
KSwgYmFja2dyb3VuZENvbG9yLCBpc1RyYW5zcGFyZW50LAotICAgICAgICBJbnRTaXplKCksIGN1
cnJlbnRGaXhlZFZpc2libGVDb250ZW50UmVjdCwgc2hvdWxkVXNlRml4ZWRMYXlvdXQsCisgICAg
ICAgIEludFNpemUoKSwgSW50UmVjdCgpLCBzaG91bGRVc2VGaXhlZExheW91dCwKICAgICAgICAg
ZGVmYXVsdFNjcm9sbGJhck1vZGUsIC8qIGxvY2sgKi8gc2hvdWxkSGlkZVNjcm9sbGJhcnMsIGRl
ZmF1bHRTY3JvbGxiYXJNb2RlLCAvKiBsb2NrICovIHNob3VsZEhpZGVTY3JvbGxiYXJzKTsKIAog
ICAgIGludCBtaW5pbXVtTGF5b3V0V2lkdGggPSB3ZWJQYWdlLT5taW5pbXVtTGF5b3V0V2lkdGgo
KTsKQEAgLTEyMjYsNyArMTIyNSw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCiAgICAgaWYgKHNob3VsZFVzZUZpeGVkTGF5b3V0KSB7Ci0gICAgICAgIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT52aWV3KCktPnNldERlbGVnYXRlc1Njcm9sbGluZyhzaG91bGRVc2VGaXhlZExh
eW91dCk7CiAgICAgICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnNldFBhaW50c0Vu
dGlyZUNvbnRlbnRzKHNob3VsZFVzZUZpeGVkTGF5b3V0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDFhZDc3ZTRhNDk3NjI5YjU0MWYzNGQ1ZGYzNDlhZDFlOTUwZDMw
MjcuLmM5YmI5ZjczZmU2ZGIzZTA5MDQxNWNiZDJiNjg3ZTE5Yzg1N2VlNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cApAQCAtNzQ2LDExICs3NDYsOCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbgogICAgIH0KIAog
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAgIGlmIChtX3dlYlBhZ2UtPnVzZUZpeGVkTGF5
b3V0KCkpIHsKLSAgICAgICAgLy8gUm91bmQgdGhlIHJlY3QgaW5zdGVhZCBvZiBlbmNsb3Npbmcg
aXQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIHNpemUgc3RheXMKLSAgICAgICAgLy8gdGhlIHNhbWUg
d2hpbGUgcGFubmluZy4gVGhpcyBjYW4gaGF2ZSBuYXN0eSBlZmZlY3RzIG9uIGxheW91dC4KLSAg
ICAgICAgbV93ZWJQYWdlLT5zZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChyb3VuZGVkSW50UmVj
dChyZWN0KSk7Ci0gICAgfQorICAgIGlmIChtX3dlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpCisg
ICAgICAgIG1fd2ViUGFnZS0+c2V0U2Nyb2xsUG9zaXRpb24ocm91bmRlZEludFJlY3QocmVjdCku
bG9jYXRpb24oKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFkODYzZGQ0ZDNlOGJiOGYwYTAzOTJiZGE1M2Q2OWRh
OTg0NDYzYzIuLjFmNDBhYjZkNzA4YzJlNzE4ZDFjNWU2NGNmMTdiYTE2YTRhYzBjNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTk5NCwx
NCArOTk0LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiB2aWV3U2l6ZSkKICNlbmRpZgogfQogCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12
b2lkIFdlYlBhZ2U6OnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIHJl
Y3QpCit2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3Np
dGlvbikKIHsKLSAgICBBU1NFUlQobV91c2VGaXhlZExheW91dCk7Ci0KLSAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT52aWV3KCktPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KHJlY3QpOworICAg
IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24p
OwogfQogCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIFdlYlBhZ2U6OnNlbmRW
aWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKCkKIHsKICAgICBBU1NFUlQobV91c2VGaXhlZExheW91
dCk7CkBAIC0xMDIzLDIxICsxMDIxLDE1IEBAIHZvaWQgV2ViUGFnZTo6c2VuZFZpZXdwb3J0QXR0
cmlidXRlc0NoYW5nZWQoKQogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJh
bWUoKS0+dmlldygpOwogCi0gICAgLy8gSWYgbm8gbGF5b3V0IHdhcyBkb25lIHlldCBzZXQgY29u
dGVudEZpeGVkT3JpZ2luIHRvICgwLDApLgotICAgIEludFBvaW50IGNvbnRlbnRGaXhlZE9yaWdp
biA9IHZpZXctPmRpZEZpcnN0TGF5b3V0KCkgPyB2aWV3LT5maXhlZFZpc2libGVDb250ZW50UmVj
dCgpLmxvY2F0aW9uKCkgOiBJbnRQb2ludCgpOwotCi0gICAgLy8gUHV0IHRoZSB3aWR0aCBhbmQg
aGVpZ2h0IHRvIHRoZSB2aWV3cG9ydCB3aWR0aCBhbmQgaGVpZ2h0LiBJbiBjc3MgdW5pdHMgaG93
ZXZlci4KLSAgICAvLyBVc2UgRmxvYXRTaXplIHRvIGF2b2lkIHRydW5jYXRlZCB2YWx1ZXMgZHVy
aW5nIHNjYWxlLgotICAgIEZsb2F0U2l6ZSBjb250ZW50Rml4ZWRTaXplID0gbV92aWV3U2l6ZTsK
LQogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAgICAgLy8gQ1NTIHZpZXdwb3J0
IGRlc2NyaXB0b3JzIG1pZ2h0IGJlIGFwcGxpZWQgdG8gYWxyZWFkeSBhZmZlY3RlZCB2aWV3cG9y
dCBzaXplCiAgICAgLy8gaWYgdGhlIHBhZ2UgZW5hYmxlcy9kaXNhYmxlcyBzdHlsZXNoZWV0cywg
c28gbmVlZCB0byBrZWVwIGluaXRpYWwgdmlld3BvcnQgc2l6ZS4KLSAgICB2aWV3LT5zZXRJbml0
aWFsVmlld3BvcnRTaXplKHJvdW5kZWRJbnRTaXplKGNvbnRlbnRGaXhlZFNpemUpKTsKKyAgICB2
aWV3LT5zZXRJbml0aWFsVmlld3BvcnRTaXplKG1fdmlld1NpemUpOwogI2VuZGlmCiAKLSAgICBj
b250ZW50Rml4ZWRTaXplLnNjYWxlKDEgLyBhdHRyLmluaXRpYWxTY2FsZSk7Ci0gICAgc2V0Rml4
ZWRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChjb250ZW50Rml4ZWRPcmlnaW4sIHJvdW5kZWRJ
bnRTaXplKGNvbnRlbnRGaXhlZFNpemUpKSk7CisgICAgLy8gSWYgbm8gbGF5b3V0IHdhcyBkb25l
IHlldCBzZXQgc2Nyb2xsUG9zaXRpb24gdG8gKDAsMCkuCisgICAgSW50UG9pbnQgc2Nyb2xsUG9z
aXRpb24gPSB2aWV3LT5kaWRGaXJzdExheW91dCgpID8gdmlldy0+c2Nyb2xsUG9zaXRpb24oKSA6
IEludFBvaW50KCk7CisgICAgc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwogCiAg
ICAgYXR0ci5pbml0aWFsU2NhbGUgPSBtX3BhZ2UtPnZpZXdwb3J0QXJndW1lbnRzKCkuem9vbTsg
Ly8gUmVzZXRzIGF1dG8gKC0xKSBpZiBubyB2YWx1ZSB3YXMgc2V0IGJ5IHVzZXIuCiAKQEAgLTEy
MzQsMTggKzEyMjYsMTEgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dChib29sIGZp
eGVkKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFj
a2luZ0NvbnRleHQoZml4ZWQpOwogI2VuZGlmCiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkgJiYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgLy8gRGVsZWdhdGVkIHNjcm9sbGlu
ZyB3aWxsIGJlIGVuYWJsZWQgd2hlbiB0aGUgRnJhbWVWaWV3IGlzIGNyZWF0ZWQgaWYgZml4ZWQg
bGF5b3V0IGlzIGVuYWJsZWQuCi0gICAgLy8gRW5zdXJlIHdlIGRvbid0IGRvIGFuaW1hdGVkIHNj
cm9sbGluZyBpbiB0aGUgV2ViUHJvY2VzcyBpbiB0aGF0IGNhc2UuCi0gICAgbV9wYWdlLT5zZXR0
aW5ncygpLT5zZXRFbmFibGVTY3JvbGxBbmltYXRvcighZml4ZWQpOwotI2VuZGlmCi0KICAgICBG
cmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAg
ICByZXR1cm47CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2aWV3LT5zZXRE
ZWxlZ2F0ZXNTY3JvbGxpbmcoZml4ZWQpOwogICAgIHZpZXctPnNldFBhaW50c0VudGlyZUNvbnRl
bnRzKGZpeGVkKTsKICNlbmRpZgogICAgIHZpZXctPnNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKTsK
QEAgLTE0MTQsMTkgKzEzOTksMTIgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2Nh
bGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3UKICAgICByZXR1
cm4gc25hcHNob3QucmVsZWFzZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnBhZ2VEaWRTY3JvbGwo
KQordm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3Np
dGlvbikKIHsKICAgICBtX3VpQ2xpZW50LnBhZ2VEaWRTY3JvbGwodGhpcyk7CiAKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlBhZ2VEaWRTY3JvbGwoKSk7Ci19Ci0KLSNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKLXZvaWQgV2ViUGFnZTo6cGFnZURpZFJlcXVlc3RTY3JvbGwo
Y29uc3QgSW50UG9pbnQmIHBvaW50KQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UGFnZURpZFJlcXVlc3RTY3JvbGwocG9pbnQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlBhZ2VEaWRTY3JvbGwoc2Nyb2xsUG9zaXRpb24pKTsKIH0KLSNlbmRpZgogCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBXZWJDb250ZXh0TWVudSogV2ViUGFnZTo6Y29udGV4
dE1lbnUoKQpAQCAtMTk3NSw3ICsxOTUzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VU
cmFuc2l0aW9uKCkKIHZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbigpCiB7
CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgaWYgKG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKS0+dmlldygpLT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICBpZiAodXNlRml4ZWRM
YXlvdXQoKSkKICAgICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgVUkgcHJvY2VzcyBzZW50IHVzIHRo
ZSB2aXNpYmxlIHJlY3QgaXQgd2FudHMgcmVuZGVyZWQuCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkpOwogICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGIzYWI5
M2JjNjZiNmU3YTZkNTI3MmU2ODE4NDAyN2QxNjFkZmM1ZDguLmU2ZDc3NDY2NzZmMmYyYmFhMTA3
ZTc4NjYwNTgyYjJkZDQ0MDE0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtMzczLDEwICszNzMsOSBAQCBwdWJsaWM6CiAKICAgICBOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIG5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcigpOwogCi0gICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CisgICAgdm9pZCBwYWdl
RGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCBzZXRTY3JvbGxQ
b3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQotICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKLSAgICB2b2lkIHNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKTsKICAgICB2b2lkIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKCk7
CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190442</attachid>
            <date>2013-02-26 22:13:30 -0800</date>
            <delta_ts>2013-03-04 01:22:45 -0800</delta_ts>
            <desc>WIP by 80%. I&apos;ll separate this big changes into several bugs.</desc>
            <filename>bug-110450-20130227150929.patch</filename>
            <type>text/plain</type>
            <size>91269</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmY0YzQyYjJmOWYzYzQz
NTg0N2IzNmZiOWQwNmYzYTE5NWU0NjRjOS4uYjAzYWMxYTBiMzdjYjhjNDU1YWU2MTdjMmViMTli
OTg0OTRjODJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxMy0wMi0yNiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbRUZMXVtR
dF1bV0syXSBEb24ndCB1c2UgZGVsZWdhdGVzIHNjcm9sbGluZyBhbmQgZml4ZWQgdmlzaWJsZSBj
b250ZW50IHJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTA0NTAKKworICAgICAgICBXSVAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHA6
CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjp1cGRhdGVQYWludE5vZGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFSYXdXZWJWaWV3
UHJpdmF0ZTo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAoUVJhd1dlYlZpZXc6OnBh
aW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaDoK
KyAgICAgICAgKFFSYXdXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0VmlzaWJsZUNvbnRl
bnRzUmVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VTR05vZGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb250ZW50
c1NHTm9kZTo6cmVuZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2Rl
Lmg6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZVNHTm9kZTo6c2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VTR05vZGU6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAg
ICAgICAgKFF0V2ViUGFnZVNHTm9kZSk6CisKKzIwMTMtMDItMjUgIEh1YW5nIERvbmdzdW5nICA8
bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW0VGTF0gRXdrVmlldyBzaG91bGQg
a2VlcCBjc3MgcG9zaXRpb24gaW5zdGVhZCBvZiBzY3JvbGwgcG9zaXRpb24gaW4gZGV2aWNlIHBp
eGVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
ODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
cmUgYXJlIGJ1Z3MgdGhhdCBzb21lIGNvZGUgZXhwZWN0IHRoYXQgRXdrVmlldzo6cGFnZVBvc2l0
aW9uKCkgcmV0dXJucyBjc3MKKyAgICAgICAgcG9zaXRpb24gd2hpbGUgb3RoZXJzIGV4cGVjdCB0
aGF0IGl0IHJldHVybnMgc2Nyb2xsIHBvc2l0aW9uIGluIGRldmljZSBwaXhlbC4KKyAgICAgICAg
SW4gYWRkaXRpb24sIHNvbWUgY29kZSBjYWxsIEV3a1ZpZXc6OnNldFBhZ2VQb3NpdGlvbigpIHdp
dGggY3NzIHBvc2l0aW9uIHdoaWxlCisgICAgICAgIG90aGVycyBjYWxsIGl0IHdpdGggc2Nyb2xs
IHBvc2l0aW9uIGluIGRldmljZSBwaXhlbC4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGFs
bCBjb2RlIHVzZSBzZXRQYWdlUG9zaXRpb24oKSBhbmQgcGFnZVBvc2l0aW9uKCkgd2l0aCBjc3MK
KyAgICAgICAgcG9zaXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpwYWludFRv
Q2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dHJhbnNmb3JtVG9TY2Vu
ZSk6CisKKzIwMTMtMDItMjUgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CisKKyAgICAgICAgW0VGTF1bV0syXSBDb252ZXJ0IGZyb20gbmF0aXZlIHZpZXcgc2l6ZSB0
byBkaXAgdmlldyBzaXplIG9ubHkgaW4gRXdrVmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDE5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERldmljZSBzY2FsZSBpcyBhIHByb3BlcnR5IG9mIHRo
ZSBwaHlzaWNhbCBkaXNwbGF5LCBzbyBvbmx5IEV3a1ZpZXcKKyAgICAgICAgc2hvdWxkIGRlYWwg
d2l0aCBjb252ZXJ0aW5nIG5hdGl2ZSB2aWV3IHNpemUgdG8gZGlwIChEZW5zaXR5IEluZGVwZW5k
ZW50IFBpeGVsKQorICAgICAgICB2aWV3IHNpemUuIEl0IGluY3JlYXNlcyByZWFkYWJpbGl0eSBi
ZWNhdXNlIHdlIGNhbiByZWdhcmQgYSB2aWV3IHNpemUgaW4KKyAgICAgICAgb3RoZXIgY2xhc3Nl
cyAoZS5nLiBXZWJWaWV3LCBQYWdlVmlld3BvcnRDb250cm9sbGVyLCBXZWJQYWdlKSBleGNlcHQg
Zm9yCisgICAgICAgIEV3a1ZpZXcgYXMgZGlwIHNpemUuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAgICAgICAgKEV3a1ZpZXc6OnNldFNpemUpOgorICAgICAg
ICAoRXdrVmlldzo6c2l6ZSk6CisgICAgICAgIChFd2tWaWV3OjpuYXRpdmVTaXplKToKKyAgICAg
ICAgKEV3a1ZpZXc6OnNjaGVkdWxlVXBkYXRlRGlzcGxheSk6CisgICAgICAgIChFd2tWaWV3Ojpj
cmVhdGVHTFN1cmZhY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDoK
KyAgICAgICAgKEV3a1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6dXBkYXRlVmlld3BvcnRTaXplKToKKworMjAxMy0wMi0y
NSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBD
b29yZGluYXRlZCBHcmFwaGljczogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IHNldHMgaXRzIG93
biBzZXR0aW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMDI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIHR1cm4gb24gc2V0dGluZ3Mgbm90IHJlbGF0ZWQgdG8gdXNlRml4ZWRMYXlvdXQgaW4g
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LgorICAgICAgICAxLiBzZXRTY3JvbGxpbmdDb29yZGlu
YXRvckVuYWJsZWQKKyAgICAgICAgMi4gc2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9z
aXRvcgorICAgICAgICAzLiBzZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3
OjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgICAgICBXZSBzaG91bGQgbWFrZSBXZWJQ
YWdlIGtub3cgbmV3IERJUCBzaXplLgorICAgICAgICAoRXdrVmlldzo6c2V0U2l6ZSk6CisgICAg
ICAgICAgICBXaGVuIHdlIHNldCBBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIHRv
IHRydWUsIG1ha2UgV2ViUGFnZQorICAgICAgICAgICAga25vdyB0aGUgRElQIHNpemUgYXMgYSB2
aWV3IHNpemUuCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6dXBkYXRlVmlld3BvcnRTaXplKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhSW1wbDo6RHJhd2luZ0Fy
ZWFJbXBsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KToKKyAgICAgICAgICAgIFdl
YlBhZ2Ugc2VuZHMgdGhlIERJUCBzaXplIHRvIFdlYiBQcm9jZXNzIGV2ZW4gd2hlbiB3ZSBkb24n
dCB1c2UgZml4ZWQgbGF5b3V0LgorICAgICAgICAgICAgSXQgaXMgYmVjYXVzZSB3ZSB3YW50IENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllciB0byBrbm93IHRoZSBjb3JyZWN0CisgICAgICAgICAgICB2
aXNpYmxlIHJlY3QgdG8gbWFuYWdlIHRpbGVzLgorCiAyMDEzLTAyLTI2ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFN0b3JhZ2VBcmVh
UHJveHk6OmdldEl0ZW0gYW5kIFN0b3JhZ2VBcmVhUHJveHk6OnNldEl0ZW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggYjU3Yjg3YzcxOWYxNDZjN2I0ZDBkNzUzMWQ4ZjAxOTdkODgyMThhMi4uZGM4
MDczZGU0OTM4MzU1MzVhYzFiYmY3YWQyZmFhNjkxOTU1NTczYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KQEAgLTc4LDcgKzc4LDYgQEAgX19aTjdXZWJDb3JlMTBSZW5kZXJWaWV3MTBjb21wb3NpdG9y
RXYKIF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzE3c2V0VXNlRml4ZWRMYXlvdXRFYgogX19aTjdX
ZWJDb3JlMTBTY3JvbGxWaWV3MThzZXRGaXhlZExheW91dFNpemVFUktOU183SW50U2l6ZUUKIF9f
Wk43V2ViQ29yZTEwU2Nyb2xsVmlldzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgotX19aTjdXZWJD
b3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYgogX19aTjdXZWJDb3JlMTBT
Y3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYgogX19aTjdXZWJDb3JlMTBTY3Jv
bGxWaWV3MjR3aW5kb3dSZXNpemVyUmVjdENoYW5nZWRFdgogX19aTjdXZWJDb3JlMTBTY3JvbGxW
aWV3OGFkZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySU5TXzZXaWRnZXRFRUUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAppbmRleCBhODRlNTZlODE0OTdmNDhmZjYxYjA3OGI1MWMzOTg1ZDA0NTEw
NTNmLi4xYzA4NjU2NTRmZGIwM2UxZjQ3NDEzZGMwOTgwOTFlOTA3MmIzNjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMTkyLDEwICsxMTkyLDEwIEBAIHZvaWQgRnJhbWVWaWV3
OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAKICAgICAgICAgICAgICAgICAgICAgbV9maXJz
dExheW91dCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBtX2ZpcnN0TGF5b3V0Q2FsbGJh
Y2tQZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVzZUZpeGVkTGF5b3V0
KCkgJiYgIWZpeGVkTGF5b3V0U2l6ZSgpLmlzRW1wdHkoKSAmJiBkZWxlZ2F0ZXNTY3JvbGxpbmco
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdFZpZXdwb3J0U2l6ZSA9IGZpeGVkTGF5
b3V0U2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGlmIChjYW5IYXZlU2Nyb2xsYmFycygpKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0
Vmlld3BvcnRTaXplID0gdmlzaWJsZUNvbnRlbnRSZWN0KEluY2x1ZGVTY3JvbGxiYXJzKS5zaXpl
KCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
bGFzdFZpZXdwb3J0U2l6ZSA9IHZpc2libGVDb250ZW50UmVjdChFeGNsdWRlU2Nyb2xsYmFycyku
c2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBtX2xhc3Rab29tRmFjdG9yID0gcm9vdC0+c3R5
bGUoKS0+em9vbSgpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgaW5pdGlhbCB2
TW9kZSB0byBBbHdheXNPbiBpZiB3ZSdyZSBhdXRvLgpAQCAtMjY0NSwxMCArMjY0NSwxMCBAQCB2
b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpCiAKICAgICBpZiAocmVuZGVy
VmlldyAmJiAhcmVuZGVyVmlldy0+cHJpbnRpbmcoKSkgewogICAgICAgICBJbnRTaXplIGN1cnJl
bnRTaXplOwotICAgICAgICBpZiAodXNlRml4ZWRMYXlvdXQoKSAmJiAhZml4ZWRMYXlvdXRTaXpl
KCkuaXNFbXB0eSgpICYmIGRlbGVnYXRlc1Njcm9sbGluZygpKQotICAgICAgICAgICAgY3VycmVu
dFNpemUgPSBmaXhlZExheW91dFNpemUoKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoY2Fu
SGF2ZVNjcm9sbGJhcnMoKSkKICAgICAgICAgICAgIGN1cnJlbnRTaXplID0gdmlzaWJsZUNvbnRl
bnRSZWN0KEluY2x1ZGVTY3JvbGxiYXJzKS5zaXplKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGN1cnJlbnRTaXplID0gdmlzaWJsZUNvbnRlbnRSZWN0KEV4Y2x1ZGVTY3JvbGxiYXJzKS5z
aXplKCk7CiAgICAgICAgIGZsb2F0IGN1cnJlbnRab29tRmFjdG9yID0gcmVuZGVyVmlldy0+c3R5
bGUoKS0+em9vbSgpOwogICAgICAgICBib29sIHJlc2l6ZWQgPSAhbV9maXJzdExheW91dCAmJiAo
Y3VycmVudFNpemUgIT0gbV9sYXN0Vmlld3BvcnRTaXplIHx8IGN1cnJlbnRab29tRmFjdG9yICE9
IG1fbGFzdFpvb21GYWN0b3IpOwogICAgICAgICBtX2xhc3RWaWV3cG9ydFNpemUgPSBjdXJyZW50
U2l6ZTsKQEAgLTM4ODYsMjEgKzM4ODYsMTUgQEAgYm9vbCBGcmFtZVZpZXc6OndoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKIAotICAgIGlmIChkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkgewotICAgICAgICBJ
bnRTaXplIG9mZnNldCA9IHNjcm9sbE9mZnNldCgpOwotICAgICAgICBJbnRTaXplIG5ld09mZnNl
dCA9IEludFNpemUob2Zmc2V0LndpZHRoKCkgLSB3aGVlbEV2ZW50LmRlbHRhWCgpLCBvZmZzZXQu
aGVpZ2h0KCkgLSB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBu
ZXdPZmZzZXQpIHsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNjcm9sbFRvKG5ld09mZnNldCk7
Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKLSAgICAgICAgICAgIGZyYW1l
KCktPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCk7Ci0gICAgICAg
IH0KKyAgICBpZiAoZGVsZWdhdGVzU2Nyb2xsaW5nKCkgfHwgIWNhbkhhdmVTY3JvbGxiYXJzKCkp
IHsKKyAgICAgICAgSW50UG9pbnQgcG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbigpOworICAgICAg
ICBJbnRQb2ludCBuZXdQb3NpdGlvbiA9IHBvc2l0aW9uIC0gSW50U2l6ZSh3aGVlbEV2ZW50LmRl
bHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICAgICAgbmV3UG9zaXRpb24gPSBhZGp1
c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKG5ld1Bvc2l0aW9uKTsKKyAgICAgICAgaWYgKHBv
c2l0aW9uICE9IG5ld1Bvc2l0aW9uKQorICAgICAgICAgICAgc2Nyb2xsVG8oSW50U2l6ZShuZXdQ
b3NpdGlvbi54KCksIG5ld1Bvc2l0aW9uLnkoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICAvLyBXZSBkb24ndCBhbGxvdyBtb3VzZSB3aGVlbGluZyB0byBoYXBwZW4gaW4g
YSBTY3JvbGxWaWV3IHRoYXQgaGFzIGhhZCBpdHMgc2Nyb2xsYmFycyBleHBsaWNpdGx5IGRpc2Fi
bGVkLgotICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCiAjaWYgIVBMQVRGT1JNKFdYKQogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDg2MjQ1MTMwNDkyZDliYjEwM2JlMGQ0MjMzMmIz
ZjYwMDUwY2ExNTguLmM3NTNmNmJkZGE1ZTZiODVhY2I1MzVkNzg5NDRmYTgyMGZkM2RkOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6fkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZSgpCiB7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0LCBUZXh0dXJl
TWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgY29uc3Qg
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgUGFp
bnRGbGFncykKIHsKICAgICBpZiAoIW1fdGV4dHVyZU1hcHBlcikgewogICAgICAgICBtX3RleHR1
cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVyOjpjcmVhdGUoVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9k
ZSk7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWlu
dFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgQVNTRVJU
KG1fdGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpID09IFRleHR1cmVNYXBwZXI6Ok9w
ZW5HTE1vZGUpOwogICAgIHN5bmNSZW1vdGVDb250ZW50KCk7CiAKLSAgICBhZGp1c3RQb3NpdGlv
bkZvckZpeGVkTGF5ZXJzKCk7CisgICAgYWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycyhzY3Jv
bGxQb3NpdGlvbik7CiAgICAgR3JhcGhpY3NMYXllciogY3VycmVudFJvb3RMYXllciA9IHJvb3RM
YXllcigpOwogICAgIGlmICghY3VycmVudFJvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwpAQCAt
MTY4LDExICsxNjgsNiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0dy
YXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcAogICAgIG1fdGV4dHVyZU1h
cHBlci0+c2V0R3JhcGhpY3NDb250ZXh0KDApOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRp
b24pCi17Ci0gICAgbV9zY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOwotfQotCiB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlVmlld3BvcnQoKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC0xODAsNyArMTc1LDcgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnVwZGF0ZVZpZXdwb3J0KCkKICAgICAgICAgbV9jbGllbnQtPnVwZGF0ZVZp
ZXdwb3J0KCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphZGp1c3RQb3Np
dGlvbkZvckZpeGVkTGF5ZXJzKCkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphZGp1
c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9u
KQogewogICAgIGlmIChtX2ZpeGVkTGF5ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTg4LDcgKzE4Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphZGp1c3RQ
b3NpdGlvbkZvckZpeGVkTGF5ZXJzKCkKICAgICAvLyBGaXhlZCBsYXllciBwb3NpdGlvbnMgYXJl
IHVwZGF0ZWQgYnkgdGhlIHdlYiBwcm9jZXNzIHdoZW4gd2UgdXBkYXRlIHRoZSB2aXNpYmxlIGNv
bnRlbnRzIHJlY3QgLyBzY3JvbGwgcG9zaXRpb24uCiAgICAgLy8gSWYgd2Ugd2FudCB0aG9zZSBs
YXllcnMgdG8gZm9sbG93IGFjY3VyYXRlbHkgdGhlIHZpZXdwb3J0IHdoZW4gd2UgbW92ZSBiZXR3
ZWVuIHRoZSB3ZWIgcHJvY2VzcyB1cGRhdGVzLCB3ZSBoYXZlIHRvIG9mZnNldAogICAgIC8vIHRo
ZW0gYnkgdGhlIGRlbHRhIGJldHdlZW4gdGhlIGN1cnJlbnQgcG9zaXRpb24gYW5kIHRoZSBwb3Np
dGlvbiBvZiB0aGUgdmlld3BvcnQgdXNlZCBmb3IgdGhlIGxhc3QgbGF5b3V0LgotICAgIEZsb2F0
U2l6ZSBkZWx0YSA9IG1fc2Nyb2xsUG9zaXRpb24gLSBtX3JlbmRlcmVkQ29udGVudHNTY3JvbGxQ
b3NpdGlvbjsKKyAgICBGbG9hdFNpemUgZGVsdGEgPSBzY3JvbGxQb3NpdGlvbiAtIG1fcmVuZGVy
ZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOwogCiAgICAgTGF5ZXJSYXdQdHJNYXA6Oml0ZXJhdG9y
IGVuZCA9IG1fZml4ZWRMYXllcnMuZW5kKCk7CiAgICAgZm9yIChMYXllclJhd1B0ck1hcDo6aXRl
cmF0b3IgaXQgPSBtX2ZpeGVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRl
eCA5YzkyMWE3NGY2YzNmMGQ4MzcxYzBiOTI5Zjc4MTJiNDg5Y2ZmNWQxLi5lZjkyZDIxZDc4MWE5
NGVkOTdjNjQxMDMzNjdmMzBjYjY1MTQ0NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC03OSw5ICs3OSw4IEBAIHB1Ymxp
YzoKICAgICB9OwogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmVDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUoKTsKLSAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIFRleHR1cmVNYXBwZXI6
OlBhaW50RmxhZ3MgPSAwKTsKKyAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7
CiAgICAgdm9pZCBwYWludFRvR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
Kik7Ci0gICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdm9pZCBjcmVhdGVDYW52YXMoQ29vcmRpbmF0ZWRM
YXllcklELCBjb25zdCBJbnRTaXplJiwgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KTsKICAg
ICB2b2lkIHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZl
cik7CkBAIC0xNDEsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0xheWVyKiByb290
TGF5ZXIoKSB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQogCiAgICAgdm9pZCBzeW5jUmVt
b3RlQ29udGVudCgpOwotICAgIHZvaWQgYWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycygpOwor
ICAgIHZvaWQgYWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycyhjb25zdCBGbG9hdFBvaW50Jik7
CiAKICAgICAvLyBSZWltcGxlbWVudGF0aW9ucyBmcm9tIEdyYXBoaWNzTGF5ZXJDbGllbnQuCiAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXll
ciosIGRvdWJsZSkgeyB9CkBAIC0yMDMsNyArMjAyLDYgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hNYXA8Q29vcmRpbmF0ZWRMYXllcklELCBHcmFwaGljc0xheWVyKj4gTGF5ZXJSYXdQdHJN
YXA7CiAgICAgTGF5ZXJSYXdQdHJNYXAgbV9maXhlZExheWVyczsKICAgICBDb29yZGluYXRlZExh
eWVySUQgbV9yb290TGF5ZXJJRDsKLSAgICBGbG9hdFBvaW50IG1fc2Nyb2xsUG9zaXRpb247CiAg
ICAgRmxvYXRQb2ludCBtX3JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsKICAgICBib29s
IG1fYW5pbWF0aW9uc0xvY2tlZDsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDNlMDcwNzc4ZjgwZDEyMWNhMTY4OTFhNGQ0MDNkOWI3MmI5NjcyNTcuLjcyMDEx
ODhkMDNiYzI5MGQ5ZWRiZDJiMTliMTAyOGEzMGViMzA3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yMjIwLDcgKzIy
MjAsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVlZHNDb250ZW50c0NvbXBvc2l0
aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheQogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcXVpcmVzU2Nyb2xsTGF5ZXIoUm9vdExheWVyQXR0YWNobWVudCBhdHRhY2htZW50KSBj
b25zdAogewogICAgIC8vIFRoaXMgYXBwbGllcyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBVSSBoYW5k
bGVzIHNjcm9sbGluZywgaW4gd2hpY2ggY2FzZSBSZW5kZXJMYXllckNvbXBvc2l0b3IgZG9lc24n
dCBuZWVkIHRvIG1hbmFnZSBpdC4KLSAgICBpZiAobV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKS0+
ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCisgICAgaWYgKCFtX3JlbmRlclZpZXctPmZyYW1lVmlldygp
LT5jYW5IYXZlU2Nyb2xsYmFycygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBX
ZSBuZWVkIHRvIGhhbmRsZSBvdXIgb3duIHNjcm9sbGluZyBpZiB3ZSdyZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCmluZGV4IGM2M2QxY2YwNzA1YmNhMWVh
NTRkMzg0ZjNmMGY1YmM4MzExYWQ2MmEuLjE3ZDBlMzJlMzA4N2RlYjFjOTFlMjI3M2U3YTNhZDI5
OGQ3ZmE3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3Vj
aEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQu
aApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgZXhwbGlj
aXQgTmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGNvbnN0IFFUcmFuc2Zv
cm0mIGZyb21JdGVtVHJhbnNmb3JtKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICBOYXRpdmVX
ZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBjb25z
dCBFdmFzX01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNv
bnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRv
dWJsZSB0aW1lc3RhbXApOworICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50
X1R5cGUsIGNvbnN0IEVpbmFfTGlzdCosIGNvbnN0IEV2YXNfTW9kaWZpZXIqLCBjb25zdCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViVmlldywgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiB0b0RldmljZVNjcmVlbiwgZG91YmxlIHRpbWVzdGFtcCk7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdl
YldoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50
LmgKaW5kZXggZmFlOWU5NmJlMmQ2ZDZiNjRhNGE1OGJjZGMwYzhjYzYwNjExNTUyNi4uNGMyYWMz
ZmY0NzY2ZTEyZjZmNGZhMzc5OGU4YmM4ZDI4MDAyNTJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICBOYXRpdmVXZWJXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKTsKICAgICBO
YXRpdmVXZWJXaGVlbEV2ZW50KEdka0V2ZW50Kik7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAg
TmF0aXZlV2ViV2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiwgY29uc3Qg
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pOworICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQo
Y29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYgdG9XZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNl
U2NyZWVuKTsKICNlbmRpZgogCiAjaWYgVVNFKEFQUEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViTW91c2VFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYk1vdXNlRXZlbnRFZmwuY3BwCmluZGV4IDBiYTQ0YmZh
MDU2NDliZTBiN2YzZTk4MDU2NTkwNjE2ZjgyNWNmODIuLjNlODFjNWEyNjdlZWEzYWJlMzJlNDIy
Y2RhOTMyMGY4NDFjMzg1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwv
TmF0aXZlV2ViTW91c2VFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcApAQCAtMzAsMjAgKzMwLDIwIEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1OYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50
KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biogZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0m
IHRvRGV2aWNlU2NyZWVuKQotICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIHRvV2ViQ29udGVudCwgdG9EZXZpY2VTY3JlZW4pKQor
TmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50
X01vdXNlX0Rvd24qIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2Vi
VmlldywgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbikKKyAg
ICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2
ZW50LCB0b1dlYlZpZXcsIHRvRGV2aWNlU2NyZWVuKSkKICAgICAsIG1fbmF0aXZlRXZlbnQoZXZl
bnQpCiB7CiB9CiAKLU5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoY29u
c3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2
aWNlU2NyZWVuKQotICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
Yk1vdXNlRXZlbnQoZXZlbnQsIHRvV2ViQ29udGVudCwgdG9EZXZpY2VTY3JlZW4pKQorTmF0aXZl
V2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNl
X1VwKiBldmVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYlZpZXcsIGNv
bnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCisgICAgOiBXZWJN
b3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCwgdG9X
ZWJWaWV3LCB0b0RldmljZVNjcmVlbikpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQogewog
fQogCi1OYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNf
RXZlbnRfTW91c2VfTW92ZSogZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYg
dG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2Ny
ZWVuKQotICAgIDogV2ViTW91c2VFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNl
RXZlbnQoZXZlbnQsIHRvV2ViQ29udGVudCwgdG9EZXZpY2VTY3JlZW4pKQorTmF0aXZlV2ViTW91
c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUq
IGV2ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViVmlldywgY29uc3Qg
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbikKKyAgICA6IFdlYk1vdXNl
RXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGV2ZW50LCB0b1dlYlZp
ZXcsIHRvRGV2aWNlU2NyZWVuKSkKICAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZs
LmNwcAppbmRleCA3Mjc5NjgzNWE2NjQ3YjAyNzJkZWYyM2VlNmMyMGIxODEzOWE5MTY1Li4xNmZj
NTJkYTM4MjZjNGY2YzMwMjFkZTY1YjQ2ZjM0YjM1MWFiNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKQEAgLTMyLDgg
KzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWluYV9M
aXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgOiBXZWJUb3Vj
aEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2ludHMs
IG1vZGlmaWVycywgdG9XZWJDb250ZW50LCB0b0RldmljZVNjcmVlbiwgdGltZXN0YW1wKSkKK05h
dGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5
cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1v
ZGlmaWVycywgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYlZpZXcsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3Rh
bXApCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hF
dmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgdG9XZWJWaWV3LCB0b0RldmljZVNjcmVlbiwg
dGltZXN0YW1wKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwv
TmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKaW5kZXggODkzZWFkOGU0ZWU0NDNkZTUzNTkxMDdi
ZmY5NTNiY2YzMzQ3NWRkMi4uZTk4N2U1M2M1YmU4ZDI2NDQwN2Q0MjUyNGNmOTZmN2M1ODEwODgz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2
ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYldoZWVs
RXZlbnRFZmwuY3BwCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1O
YXRpdmVXZWJXaGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRf
TW91c2VfV2hlZWwqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2Vi
Q29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbikK
LSAgICA6IFdlYldoZWVsRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50
KGV2ZW50LCB0b1dlYkNvbnRlbnQsIHRvRGV2aWNlU2NyZWVuKSkKK05hdGl2ZVdlYldoZWVsRXZl
bnQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXZl
bnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJWaWV3LCBjb25zdCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuKQorICAgIDogV2ViV2hlZWxFdmVu
dChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoZXZlbnQsIHRvV2ViVmlldywg
dG9EZXZpY2VTY3JlZW4pKQogICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBiOTk5MjUw
ODQzOGQ3MGYxNGYxMTM5YTk0MTM0NDAwMGFiOThjY2U0Li5mODNiYzA5NmFlNDdhOTY0NDczYWJj
NDAyZTJiYmUyZjkwNjFkY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJF
dmVudEZhY3RvcnkuY3BwCkBAIC05MSwxMiArOTEsMTIgQEAgc3RhdGljIGlubGluZSBkb3VibGUg
Y29udmVydE1pbGxpc2Vjb25kVG9TZWNvbmQodW5zaWduZWQgdGltZXN0YW1wKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcCkgLyAxMDAwOwogfQogCi1XZWJNb3VzZUV2
ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50
X01vdXNlX0Rvd24qIGV2ZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbikKK1dlYk1vdXNlRXZlbnQgV2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
RG93biogZXZlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJWaWV3LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuKQogewogICAgIEludFBvaW50IHBvcyhldmVudC0+
Y2FudmFzLngsIGV2ZW50LT5jYW52YXMueSk7CiAgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQoV2Vi
RXZlbnQ6Ok1vdXNlRG93biwKICAgICAgICAgYnV0dG9uRm9yRXZlbnQoZXZlbnQtPmJ1dHRvbiks
Ci0gICAgICAgIHRvV2ViQ29udGVudC5tYXBQb2ludChwb3MpLAorICAgICAgICB0b1dlYlZpZXcu
bWFwUG9pbnQocG9zKSwKICAgICAgICAgdG9EZXZpY2VTY3JlZW4ubWFwUG9pbnQocG9zKSwKICAg
ICAgICAgMCAvKiBkZWx0YVggKi8sCiAgICAgICAgIDAgLyogZGVsdGFZICovLApAQCAtMTA2LDEy
ICsxMDYsMTIgQEAgV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNl
RXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKgogICAgICAgICBjb252ZXJ0TWlsbGlz
ZWNvbmRUb1NlY29uZChldmVudC0+dGltZXN0YW1wKSk7CiB9CiAKLVdlYk1vdXNlRXZlbnQgV2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
VXAqIGV2ZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbikKK1dlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0
b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ZW50
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViVmlldywgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0b0RldmljZVNjcmVlbikKIHsKICAgICBJbnRQb2ludCBwb3MoZXZlbnQtPmNhbnZhcy54LCBl
dmVudC0+Y2FudmFzLnkpOwogICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50OjpNb3Vz
ZVVwLAogICAgICAgICBidXR0b25Gb3JFdmVudChldmVudC0+YnV0dG9uKSwKLSAgICAgICAgdG9X
ZWJDb250ZW50Lm1hcFBvaW50KHBvcyksCisgICAgICAgIHRvV2ViVmlldy5tYXBQb2ludChwb3Mp
LAogICAgICAgICB0b0RldmljZVNjcmVlbi5tYXBQb2ludChwb3MpLAogICAgICAgICAwIC8qIGRl
bHRhWCAqLywKICAgICAgICAgMCAvKiBkZWx0YVkgKi8sCkBAIC0xMjEsMTIgKzEyMSwxMiBAQCBX
ZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBF
dmFzX0V2ZW50X01vdXNlX1VwKiBldgogICAgICAgICBjb252ZXJ0TWlsbGlzZWNvbmRUb1NlY29u
ZChldmVudC0+dGltZXN0YW1wKSk7CiB9CiAKLVdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXZlbnQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRvRGV2aWNlU2NyZWVuKQorV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0
ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldmVudCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0b1dlYlZpZXcsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZp
Y2VTY3JlZW4pCiB7CiAgICAgSW50UG9pbnQgcG9zKGV2ZW50LT5jdXIuY2FudmFzLngsIGV2ZW50
LT5jdXIuY2FudmFzLnkpOwogICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50OjpNb3Vz
ZU1vdmUsCiAgICAgICAgIGJ1dHRvbkZvckV2ZW50KGV2ZW50LT5idXR0b25zKSwKLSAgICAgICAg
dG9XZWJDb250ZW50Lm1hcFBvaW50KHBvcyksCisgICAgICAgIHRvV2ViVmlldy5tYXBQb2ludChw
b3MpLAogICAgICAgICB0b0RldmljZVNjcmVlbi5tYXBQb2ludChwb3MpLAogICAgICAgICAwIC8q
IGRlbHRhWCAqLywKICAgICAgICAgMCAvKiBkZWx0YVkgKi8sCkBAIC0xMzYsNyArMTM2LDcgQEAg
V2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKgogICAgICAgICBjb252ZXJ0TWlsbGlzZWNvbmRUb1NlY29u
ZChldmVudC0+dGltZXN0YW1wKSk7CiB9CiAKLVdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ZW50
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0b0RldmljZVNjcmVlbikKK1dlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ZW50LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViVmlldywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b0Rl
dmljZVNjcmVlbikKIHsKICAgICBmbG9hdCBkZWx0YVggPSAwOwogICAgIGZsb2F0IGRlbHRhWSA9
IDA7CkBAIC0xNjEsNyArMTYxLDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCoKICAgICBJbnRQ
b2ludCBwb3MoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFzLnkpOwogCiAgICAgcmV0dXJu
IFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLAotICAgICAgICB0b1dlYkNvbnRlbnQubWFw
UG9pbnQocG9zKSwKKyAgICAgICAgdG9XZWJWaWV3Lm1hcFBvaW50KHBvcyksCiAgICAgICAgIHRv
RGV2aWNlU2NyZWVuLm1hcFBvaW50KHBvcyksCiAgICAgICAgIEZsb2F0U2l6ZShkZWx0YVgsIGRl
bHRhWSksCiAgICAgICAgIEZsb2F0U2l6ZSh3aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1kpLApAQCAt
MjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6OlR5cGUgdHlwZUZvclRvdWNo
RXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSkKICAgICByZXR1cm4gV2ViRXZlbnQ6Ok5v
VHlwZTsKIH0KIAotV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNo
RXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMs
IGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJs
ZSB0aW1lc3RhbXApCitXZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91
Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50
cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRvV2ViVmlldywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbiwgZG91Ymxl
IHRpbWVzdGFtcCkKIHsKICAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiB0b3VjaFBv
aW50czsKICAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZTsK
QEAgLTI1MCw3ICsyNTAsNyBAQCBXZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjbwogICAgICAgICB9CiAK
ICAgICAgICAgSW50UG9pbnQgcG9zKHBvaW50LT54LCBwb2ludC0+eSk7Ci0gICAgICAgIHRvdWNo
UG9pbnRzLmFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQtPmlkLCBzdGF0ZSwgdG9E
ZXZpY2VTY3JlZW4ubWFwUG9pbnQocG9zKSwgdG9XZWJDb250ZW50Lm1hcFBvaW50KHBvcykpKTsK
KyAgICAgICAgdG91Y2hQb2ludHMuYXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2ludC0+
aWQsIHN0YXRlLCB0b0RldmljZVNjcmVlbi5tYXBQb2ludChwb3MpLCB0b1dlYlZpZXcubWFwUG9p
bnQocG9zKSkpOwogICAgIH0KIAogICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGVGb3JUb3Vj
aEV2ZW50KHR5cGUpLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yRXZlbnQobW9kaWZpZXJzKSwg
dGltZXN0YW1wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5j
cHAKaW5kZXggOGYzNDM5YjkwMzZkMDlkZTkxMGE2MmE2NmRhMWM1NWE0M2U2OGY4NS4uY2E2MzM3
Yzk1NThjM2Q3NGM5YjJiMTY2NzMxN2NkOTkyZWU3MGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTQ1Myw2ICs0NTMsNyBAQCB2b2lkIEV3
a1ZpZXc6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKIHZvaWQgRXdrVmlldzo6c2V0
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUpCiB7CiAgICAgcGFnZSgpLT5zZXRJbnRyaW5z
aWNEZXZpY2VTY2FsZUZhY3RvcihzY2FsZSk7CisgICAgc2V0U2l6ZShuYXRpdmVTaXplKCkpOwog
fQogCiBmbG9hdCBFd2tWaWV3OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CkBAIC00NjAsMTkg
KzQ2MSwzMSBAQCBmbG9hdCBFd2tWaWV3OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAgICAg
cmV0dXJuIFdLUGFnZUdldEJhY2tpbmdTY2FsZUZhY3Rvcih3a1BhZ2UoKSk7CiB9CiAKLXZvaWQg
RXdrVmlldzo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQordm9pZCBFd2tWaWV3OjpzZXRT
aXplKGNvbnN0IEludFNpemUmIG5hdGl2ZVNpemUpCiB7Ci0gICAgbV9zaXplID0gc2l6ZTsKKyAg
ICBtX25hdGl2ZVNpemUgPSBuYXRpdmVTaXplOwogCiAgICAgRHJhd2luZ0FyZWFQcm94eSogZHJh
d2luZ0FyZWEgPSBwYWdlKCktPmRyYXdpbmdBcmVhKCk7CiAgICAgaWYgKCFkcmF3aW5nQXJlYSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZHJhd2luZ0FyZWEtPnNldFNpemUobV9zaXplLCBJbnRT
aXplKCkpOworICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKHNpemUoKSwgSW50U2l6ZSgpKTsKICAg
ICB3ZWJWaWV3KCktPnVwZGF0ZVZpZXdwb3J0U2l6ZSgpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0g
RXdrVmlldzo6dHJhbnNmb3JtVG9TY3JlZW4oKSBjb25zdAorSW50U2l6ZSBFd2tWaWV3OjpzaXpl
KCkgY29uc3QKK3sKKyAgICBMYXlvdXRTaXplIGRpcFNpemUgPSBtX25hdGl2ZVNpemU7CisgICAg
ZGlwU2l6ZS5zY2FsZSgxIC8gZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgcmV0dXJuIHJvdW5k
ZWRJbnRTaXplKGRpcFNpemUpOworfQorCitJbnRTaXplIEV3a1ZpZXc6Om5hdGl2ZVNpemUoKSBj
b25zdAoreworICAgIHJldHVybiByb3VuZGVkSW50U2l6ZShtX25hdGl2ZVNpemUpOworfQorCitB
ZmZpbmVUcmFuc2Zvcm0gRXdrVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lVG9TY3JlZW4oKSBjb25z
dAogewogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAKQEAgLTU0Miw3ICs1NTUsNyBA
QCB2b2lkIEV3a1ZpZXc6OmRpc3BsYXlUaW1lckZpcmVkKFRpbWVyPEV3a1ZpZXc+KikKIAogdm9p
ZCBFd2tWaWV3OjpzY2hlZHVsZVVwZGF0ZURpc3BsYXkoKQogewotICAgIGlmIChzaXplKCkuaXNF
bXB0eSgpKQorICAgIGlmIChtX25hdGl2ZVNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIW1fZGlzcGxheVRpbWVyLmlzQWN0aXZlKCkpCkBAIC02OTIsNyArNzA1LDcg
QEAgdm9pZCBFd2tWaWV3OjpzZXRNb3VzZUV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIEV3a1ZpZXc6OmZlZWRUb3VjaEV2ZW50KEV3a19U
b3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFz
X01vZGlmaWVyKiBtb2RpZmllcnMpCiB7Ci0gICAgcGFnZSgpLT5oYW5kbGVUb3VjaEV2ZW50KE5h
dGl2ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsIHdlYlZpZXcoKS0+dHJh
bnNmb3JtRnJvbVNjZW5lKCksIHRyYW5zZm9ybVRvU2NyZWVuKCksIGVjb3JlX3RpbWVfZ2V0KCkp
KTsKKyAgICBwYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0eXBl
LCBwb2ludHMsIG1vZGlmaWVycywgd2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmVUb1dlYlZp
ZXcoKSwgdHJhbnNmb3JtRnJvbVNjZW5lVG9TY3JlZW4oKSwgZWNvcmVfdGltZV9nZXQoKSkpOwog
fQogCiB2b2lkIEV3a1ZpZXc6OnNldFRvdWNoRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCkBA
IC03NDAsNyArNzUzLDcgQEAgYm9vbCBFd2tWaWV3OjpjcmVhdGVHTFN1cmZhY2UoKQogICAgIH07
CiAKICAgICAvLyBSZWNyZWF0ZSB0byBjdXJyZW50IHNpemU6IFJlcGxhY2VzIGlmIG5vbi1udWxs
LCBhbmQgZnJlZXMgZXhpc3Rpbmcgc3VyZmFjZSBhZnRlciAoT3duUHRyKS4KLSAgICBtX2V2YXNH
TFN1cmZhY2UgPSBFdmFzR0xTdXJmYWNlOjpjcmVhdGUobV9ldmFzR0wuZ2V0KCksICZldmFzR0xD
b25maWcsIHNpemUoKSk7CisgICAgbV9ldmFzR0xTdXJmYWNlID0gRXZhc0dMU3VyZmFjZTo6Y3Jl
YXRlKG1fZXZhc0dMLmdldCgpLCAmZXZhc0dMQ29uZmlnLCBuYXRpdmVTaXplKCkpOwogICAgIGlm
ICghbV9ldmFzR0xTdXJmYWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTc1Miw3ICs3
NjUsNyBAQCBib29sIEV3a1ZpZXc6OmNyZWF0ZUdMU3VyZmFjZSgpCiAKICAgICBFdmFzX0dMX0FQ
SSogZ2wgPSBldmFzX2dsX2FwaV9nZXQobV9ldmFzR0wuZ2V0KCkpOwogCi0gICAgY29uc3QgV0tQ
b2ludCYgYm91bmRzRW5kID0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyh3a1ZpZXcoKSwg
V0tQb2ludE1ha2Uoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOworICAgIGNvbnN0
IFdLUG9pbnQmIGJvdW5kc0VuZCA9IFdLVmlld1VzZXJWaWV3cG9ydFRvQ29udGVudHMod2tWaWV3
KCksIFdLUG9pbnRNYWtlKG5hdGl2ZVNpemUoKS53aWR0aCgpLCBuYXRpdmVTaXplKCkuaGVpZ2h0
KCkpKTsKICAgICBnbC0+Z2xWaWV3cG9ydCgwLCAwLCBib3VuZHNFbmQueCwgYm91bmRzRW5kLnkp
OwogICAgIGdsLT5nbENsZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMCk7CiAgICAgZ2wtPmdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CkBAIC0xMTYxLDIxICsxMTc0LDIxIEBAIEVpbmFfQm9v
bCBFd2tWaWV3OjpoYW5kbGVFd2tWaWV3Rm9jdXNPdXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhKQogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZVdoZWVsKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCog
d2hlZWxFdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7
Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQo
d2hlZWxFdmVudCwgc2VsZi0+d2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgc2VsZi0+
dHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlV2hlZWxFdmVu
dChOYXRpdmVXZWJXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIHNlbGYtPndlYlZpZXcoKS0+dHJhbnNm
b3JtRnJvbVNjZW5lVG9XZWJWaWV3KCksIHNlbGYtPnRyYW5zZm9ybUZyb21TY2VuZVRvU2NyZWVu
KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIEV3a1ZpZXc6OmhhbmRsZUV3
a1ZpZXdNb3VzZURvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFz
X0V2ZW50X01vdXNlX0Rvd24qIGRvd25FdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9F
d2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5h
dGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZy
b21TY2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7CisgICAgc2VsZi0+cGFnZSgp
LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50LCBzZWxmLT53
ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZVRvV2ViVmlldygpLCBzZWxmLT50cmFuc2Zvcm1G
cm9tU2NlbmVUb1NjcmVlbigpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIEVpbmFfQm9vbCBF
d2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VVcChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfVXAqIHVwRXZlbnQpCiB7CiAgICAgRXdrVmlldyog
c2VsZiA9IHRvRXdrVmlldyhzbWFydERhdGEpOwotICAgIHNlbGYtPnBhZ2UoKS0+aGFuZGxlTW91
c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHVwRXZlbnQsIHNlbGYtPndlYlZpZXcoKS0+dHJh
bnNmb3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBzZWxm
LT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCBz
ZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZVRvV2ViVmlldygpLCBzZWxmLT50cmFu
c2Zvcm1Gcm9tU2NlbmVUb1NjcmVlbigpKSk7CiAKICAgICBpZiAoSW5wdXRNZXRob2RDb250ZXh0
RWZsKiBpbnB1dE1ldGhvZENvbnRleHQgPSBzZWxmLT5pbnB1dE1ldGhvZENvbnRleHQoKSkKICAg
ICAgICAgaW5wdXRNZXRob2RDb250ZXh0LT5oYW5kbGVNb3VzZVVwRXZlbnQodXBFdmVudCk7CkBA
IC0xMTg2LDcgKzExOTksNyBAQCBFaW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNl
VXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBFdgogRWluYV9Cb29sIEV3
a1ZpZXc6OmhhbmRsZUV3a1ZpZXdNb3VzZU1vdmUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnRE
YXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX01vdmUqIG1vdmVFdmVudCkKIHsKICAgICBFd2tW
aWV3KiBzZWxmID0gdG9Fd2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5k
bGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2ZW50LCBzZWxmLT53ZWJWaWV3
KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1Ub1NjcmVlbigpKSk7Cisg
ICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92
ZUV2ZW50LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZVRvV2ViVmlldygpLCBz
ZWxmLT50cmFuc2Zvcm1Gcm9tU2NlbmVUb1NjcmVlbigpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCA3MWRh
ZDJkNTdhNzAxZTZmNTkyYzNjNjY3YzQ4MTM0NTc4MGUxNzUyLi5lNDUxMDRhMDE0YTIzMDkyZDg0
OTk0NDFmNDNjZDNhMDE2OGIxM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5oCkBAIC0xMzEsMTAgKzEzMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7
Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Cisg
ICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5hdGl2ZVNpemUpOworICAg
IFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0OworICAgIFdlYkNvcmU6OkludFNpemUgbmF0
aXZlU2l6ZSgpIGNvbnN0OwogCi0gICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bVRvU2NyZWVuKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bUZyb21TY2VuZVRvU2NyZWVuKCkgY29uc3Q7CiAKICAgICBjb25zdCBjaGFyKiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQogICAgIEV2YXNfT2JqZWN0KiBjcmVhdGVGYXZpY29uKCkgY29u
c3Q7CkBAIC0yNTUsNyArMjU2LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8RXZhc19HTD4gbV9l
dmFzR0w7CiAgICAgT3duUHRyPFdlYktpdDo6RXZhc0dMQ29udGV4dD4gbV9ldmFzR0xDb250ZXh0
OwogICAgIE93blB0cjxXZWJLaXQ6OkV2YXNHTFN1cmZhY2U+IG1fZXZhc0dMU3VyZmFjZTsKLSAg
ICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKKyAgICBXZWJDb3JlOjpMYXlvdXRTaXplIG1fbmF0
aXZlU2l6ZTsKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3VzZXJWaWV3cG9y
dFRyYW5zZm9ybTsKICAgICBib29sIG1fcGVuZGluZ1N1cmZhY2VSZXNpemU7CiAgICAgUmVmUHRy
PFdlYktpdDo6V2ViVmlldz4gbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKaW5kZXggNGYxOTZlMTM5YTIxMTAyZTRkMDU2
OWZmYjM4MzFhYmM4Y2Q4YWI5Mi4uMTY0MGY0MWM4MGJhZWQ3MjU5MDk1YTliZmZmMzFjNWQ5MmE5
NjU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnBhZ2UuY3BwCkBAIC0xMDcsNiArMTA3LDggQEAgUVNHTm9kZSogUVF1aWNrV2ViUGFnZTo6dXBk
YXRlUGFpbnROb2RlKFFTR05vZGUqIG9sZE5vZGUsIFVwZGF0ZVBhaW50Tm9kZURhdGEqKQogCiAg
ICAgbm9kZS0+c2V0Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKHNjZW5lKTsKIAorICAgIFFQb2lu
dEYgc2Nyb2xsUG9zaXRpb24gPSB0cmFuc2Zvcm1Gcm9tSXRlbSgpLm1hcChRUG9pbnRGKCkpOwor
ICAgIG5vZGUtPnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsKICAgICBub2RlLT5z
ZXRTY2FsZShkLT5jb250ZW50c1NjYWxlKTsKICAgICBub2RlLT5zZXREZXZpY2VQaXhlbFJhdGlv
KHdpbmRvdy0+ZGV2aWNlUGl4ZWxSYXRpbygpKTsKICAgICBRQ29sb3IgYmFja2dyb3VuZENvbG9y
ID0gZC0+d2ViUGFnZVByb3h5LT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpID8gUXQ6OnRy
YW5zcGFyZW50IDogUXQ6OndoaXRlOwpAQCAtMTcxLDYgKzE3MywxOSBAQCBRVHJhbnNmb3JtIFFR
dWlja1dlYlBhZ2U6OnRyYW5zZm9ybVRvSXRlbSgpIGNvbnN0CiAgICAgcmV0dXJuIFFUcmFuc2Zv
cm0oZC0+Y29udGVudHNTY2FsZSwgMCwgMCwgMCwgZC0+Y29udGVudHNTY2FsZSwgMCwgeFBvcywg
eVBvcywgMSk7CiB9CiAKK1FUcmFuc2Zvcm0gUVF1aWNrV2ViUGFnZTo6dHJhbnNmb3JtRnJvbUl0
ZW1Ub1dlYlZpZXcoKSBjb25zdAoreworICAgIHJldHVybiB0cmFuc2Zvcm1Gcm9tV2ViVmlld1Rv
SXRlbSgpLmludmVydGVkKCk7Cit9CisKK1FUcmFuc2Zvcm0gUVF1aWNrV2ViUGFnZTo6dHJhbnNm
b3JtRnJvbVdlYlZpZXdUb0l0ZW0oKSBjb25zdAoreworICAgIHFyZWFsIHhQb3MgPSB4KCk7Cisg
ICAgcXJlYWwgeVBvcyA9IHkoKTsKKworICAgIHJldHVybiBRVHJhbnNmb3JtKGQtPmNvbnRlbnRz
U2NhbGUsIDAsIDAsIDAsIGQtPmNvbnRlbnRzU2NhbGUsIDAsIHhQb3MsIHlQb3MsIDEpOworfQor
CiB2b2lkIFFRdWlja1dlYlBhZ2VQcml2YXRlOjp1cGRhdGVTaXplKCkKIHsKICAgICBRU2l6ZUYg
c2NhbGVkU2l6ZSA9IGNvbnRlbnRzU2l6ZSAqIGNvbnRlbnRzU2NhbGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaAppbmRleCAzYTExMmQ2
MmIzZTlkY2MxZDk1MzkwMzlmNWMyMTVmMWNiN2NmOWNkLi5jNzU5YmFhMDJmZDk5MTVmMzI4YTcz
NzNhODUyYTZiNmJhMWM4N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2VicGFnZV9wLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAg
UVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tSXRlbSgpIGNvbnN0OwogICAgIFFUcmFuc2Zvcm0gdHJh
bnNmb3JtVG9JdGVtKCkgY29uc3Q7CisgICAgUVRyYW5zZm9ybSB0cmFuc2Zvcm1Gcm9tSXRlbVRv
V2ViVmlldygpIGNvbnN0OworICAgIFFUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbVdlYlZpZXdUb0l0
ZW0oKSBjb25zdDsKIAogICAgIFdlYktpdDo6UXRXZWJQYWdlRXZlbnRIYW5kbGVyKiBldmVudEhh
bmRsZXIoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKaW5kZXggNzk3M2Y5ODljY2FiYzFmOTQxZjZkMTAxMmM5OWZhNDll
MDk0ZGQ5Yy4uYWJkY2UzMDg3N2MyY2I1ZTBkMjAwMWM3OTI2MDAyNWM1MTNmZjNiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBA
IC05NDUsOSArOTQ1LDYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6dXBkYXRl
Vmlld3BvcnRTaXplKCkKICAgICAgICAgLy8gd2hldGhlciBpdHMgZml4ZWQgb3Igbm90LiBXZSBz
dGlsbCBuZWVkIHRvIHRlbGwgdGhlIGRyYXdpbmcgYXJlYSB3aGljaCBwYXJ0IG9mIGl0CiAgICAg
ICAgIC8vIGhhcyB0byBiZSByZW5kZXJlZCBvbiB0aWxlcywgYW5kIGluIGRlc2t0b3AgbW9kZSBp
dCdzIGFsbCBvZiBpdC4KICAgICAgICAgZHJhd2luZ0FyZWEtPnNldFNpemUodmlld3BvcnRTaXpl
LnRvU2l6ZSgpLCBJbnRTaXplKCkpOwotICAgICAgICAvLyBUaGUgYmFja2luZyBzdG9yZSBzY2Fs
ZSBmYWN0b3Igc2hvdWxkIGFscmVhZHkgYmUgc2V0IHRvIHRoZSBkZXZpY2UgcGl4ZWwgcmF0aW8K
LSAgICAgICAgLy8gb2YgdGhlIHVuZGVybHlpbmcgd2luZG93LCB0aHVzIHdlIHNldCB0aGUgZWZm
ZWN0aXZlIHNjYWxlIHRvIDEgaGVyZS4KLSAgICAgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVD
b250ZW50c1JlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKHZpZXdwb3J0U2l6
ZSkpLCBGbG9hdFBvaW50KCkpOwogICAgIH0KIH0KIApAQCAtOTk4LDEwICs5OTUsMTAgQEAgdm9p
ZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRTaXplKCkKICAg
ICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUoRmxv
YXRTaXplKHEtPndpZHRoKCksIHEtPmhlaWdodCgpKSk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmll
d0ZsaWNrYWJsZVByaXZhdGU6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9z
KQordm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6cGFnZURpZFNjcm9sbChjb25z
dCBRUG9pbnQmIHBvcykKIHsKICAgICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9sbGVyKQotICAg
ICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvcyk7
CisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZURpZFNjcm9sbChwb3MpOwog
fQogCiBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFs
KFFRdWlja1dlYlZpZXcgKndlYlZpZXcsIFFRdWlja1dlYlZpZXdQcml2YXRlKiB3ZWJWaWV3UHJp
dmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlld19wX3AuaAppbmRleCA4YWQ1M2UzMjZiMzY4ZWJmZjE4NjRkZDI0ZmFmMGQxNjc4MGI2NWE1
Li45N2MzNWEwNmY4YjZjMDI0NjhkYzliNGIxMWE3ODMxMTdkYzNhN2FhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCkBAIC0x
MjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIC8vIFBhZ2VDbGllbnQuCiAgICAgV2ViQ29yZTo6
SW50U2l6ZSB2aWV3U2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
TmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgUVBvaW50JiBwb3MpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBwYWdlRGlkU2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9zKSB7IH0KICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaCgpOwogICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAgICAgUGFz
c093blB0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHko
KTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJLaXQ6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXIqIHZpZXdwb3J0Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlci5kYXRhKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Vmlld3BvcnRTaXplKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwo
Y29uc3QgUVBvaW50JiBwb3MpOworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkU2Nyb2xsKGNvbnN0
IFFQb2ludCYgcG9zKTsKIAogcHJpdmF0ZToKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcAppbmRl
eCA0YWEzNTMzNzdmMTQyN2M1MTZlOTVlOWJiN2JhYmI2Njg0NWE5MmQ3Li40OWE1NGZkZmFlYjQw
N2NkMzdjZjQxYjRhMTBjNTQ4OWZjMjNlNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCkBAIC0yMDIsMTAgKzIwMiwxMCBA
QCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHk+IFFSYXdXZWJWaWV3UHJp
dmF0ZTo6Y3JlYXRlQ29sb3JDaG9vc2VyUAogfQogI2VuZGlmCiAKLXZvaWQgUVJhd1dlYlZpZXdQ
cml2YXRlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9z
KQordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OnBhZ2VEaWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvcykKIHsKICAgICBtX2NsaWVudC0+dmlld1JlcXVlc3RlZFNjcm9sbChwb3Mp
OwotCisgICAgbV9wb3NpdGlvbiA9IFFQb2ludEYocG9zLngoKSwgcG9zLnkoKSk7CiB9CiB2b2lk
IFFSYXdXZWJWaWV3UHJpdmF0ZTo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKQEAgLTM0OSw3ICszNDks
NiBAQCB2b2lkIFFSYXdXZWJWaWV3OjpzZXRTaXplKGNvbnN0IFFTaXplJiBzaXplKQogICAgIGQt
Pm1fc2l6ZSA9IHNpemU7CiAKICAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShkLT5tX3NpemUsIFdl
YkNvcmU6OkludFNpemUoKSk7Ci0gICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1Jl
Y3QoV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBkLT5tX3NpemUpLCBXZWJD
b3JlOjpGbG9hdFBvaW50KCkpOwogfQogCiBXS1BhZ2VSZWYgUVJhd1dlYlZpZXc6OnBhZ2VSZWYo
KQpAQCAtMzc4LDcgKzM3Nyw3IEBAIHZvaWQgUVJhd1dlYlZpZXc6OnBhaW50KGNvbnN0IFFNYXRy
aXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFpCiAKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgcmVjdCgwLCAwLCBkLT5tX3NpemUud2lkdGgoKSwgZC0+bV9zaXplLmhl
aWdodCgpKTsKIAotICAgIHNjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zvcm0s
IG9wYWNpdHksIHRyYW5zZm9ybS5tYXBSZWN0KHJlY3QpLCBwYWludEZsYWdzKTsKKyAgICBzY2Vu
ZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQodHJhbnNmb3JtLCBvcGFjaXR5LCB0cmFuc2Zvcm0u
bWFwUmVjdChyZWN0KSwgZC0+bV9wb3NpdGlvbiwgcGFpbnRGbGFncyk7CiB9CiAKIHZvaWQgUVJh
d1dlYlZpZXc6OnNlbmRLZXlFdmVudChRS2V5RXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaAppbmRleCAw
Mjk5NTZlNzdmMjYwMGUyMjExNmRjZDcwMTY2NjY5NjA3ODhhOTAzLi5iODRhNjMwNjFiNzNjOWY1
NjU2OTlkMWU4ZjlhZWNhNjMyNjhmMDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaApAQCAtMTAxLDcgKzEwMSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJv
eHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlk
UmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFnZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKTsKICAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1
bmNoUHJvY2VzcygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOwpAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIG1fdmlzaWJsZTsKICAgICBib29sIG1fYWN0aXZlOwogICAgIFFTaXplIG1fc2l6ZTsK
KyAgICBRUG9pbnRGIG1fcG9zaXRpb247CiAKICAgICBRUmF3V2ViVmlld0NsaWVudCogbV9jbGll
bnQ7CiAgICAgV1RGOjpSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
Y3BwCmluZGV4IGM1ZjdlODc1YTZkOGJjZmRhNGI3MDM1ZTQxOTBjMmU1NTNlNzM2YmEuLjYzMjA0
Y2Y5YjY0OWFlYjUyMTY2MGFkN2UzMzhjYmU0MTM3ZTQxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTE3MywxOSArMTcz
LDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0QW5pbWF0aW9uc0xv
Y2tlZChib29sIGxvY2tlZCkKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnNldEFuaW1hdGlvbnNMb2NrZWQsIG1fc2NlbmUuZ2V0KCksIGxvY2tlZCkp
OwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVj
dG9yeVZlY3RvcikKLXsKLSAgICAvLyBJbmZvcm0gdGhlIHJlbmRlcmVyIHRvIGFkanVzdCB2aWV3
cG9ydC1maXhlZCBsYXllcnMuCi0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpzZXRTY3JvbGxQb3NpdGlvbiwgbV9zY2VuZS5nZXQoKSwgcmVjdC5sb2Nh
dGlvbigpKSk7Ci0KLSAgICBpZiAocmVjdCA9PSBtX2xhc3RTZW50VmlzaWJsZVJlY3QgJiYgdHJh
amVjdG9yeVZlY3RvciA9PSBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpTZXRWaXNpYmxlQ29udGVudHNSZWN0
KHJlY3QsIHRyYWplY3RvcnlWZWN0b3IpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFn
ZUlEKCkpOwotICAgIG1fbGFzdFNlbnRWaXNpYmxlUmVjdCA9IHJlY3Q7Ci0gICAgbV9sYXN0U2Vu
dFRyYWplY3RvcnlWZWN0b3IgPSB0cmFqZWN0b3J5VmVjdG9yOwotfQotCiB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW5kZXJOZXh0RnJhbWUoKQogewogICAgIG1fZHJhd2lu
Z0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6UmVuZGVyTmV4dEZyYW1lKCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFn
ZSgpLT5wYWdlSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuaAppbmRleCA5NDZiMzk5MjBkMjg0ODgzYTg0NGE3ZjE5NjY5MTFiMDg2OWVm
OWY1Li5hMzQ2ZDk5OGQwZmJkM2RiMDRmNGYzMmMwY2NmZjY2ODI3NjZmODY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTY1LDcg
KzY1LDYgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKICAgICB2b2lkIGRlbGV0ZUNv
bXBvc2l0aW5nTGF5ZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQ+
Jik7CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpDb29yZGluYXRl
ZExheWVySUQpOwotICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9y
KTsKICAgICB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNj
cm9sbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKICAgICB2b2lkIGNyZWF0ZVRpbGVGb3JM
YXllcihXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlN1cmZhY2VVcGRhdGVJbmZvJik7CiAg
ICAgdm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCB1
aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpT
dXJmYWNlVXBkYXRlSW5mbyYpOwpAQCAtMTA2LDggKzEwNSw2IEBAIHByb3RlY3RlZDoKIAogICAg
IERyYXdpbmdBcmVhUHJveHkqIG1fZHJhd2luZ0FyZWFQcm94eTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiBtX3NjZW5lOwotICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7Ci0gICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xh
c3RTZW50VHJhamVjdG9yeVZlY3RvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggNzc1YWQ1Njhk
YjJjYjI2MjFlYTc0ZDU1NDAyODAyNjUwY2M2NmFjYy4uMzIwNTUxZjMxMzYyMDA2NmIyNTBkODg3
YzI0ZDJlYjJkMmUyZGQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oCkBAIC03NSw3ICs3NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFJlY3Qgdmlld3BvcnRWaXNpYmxlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzUmVj
dCgpOyB9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRzUmVjdCgpIGNvbnN0
OwogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KiBjb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIC8qIHZpc2libGVDb250ZW50c1JlY3QgKi8sIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIC8qIHRyYWplY3RvcnlWZWN0b3IgKi8pIHsgfQogCiAgICAgV2Vi
UGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlUHJveHk7IH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKaW5k
ZXggZjNkZTU3Njk1NTdhNWQxODA0Mzg5YjVlOWIwMTBkZTY1MzllYzQ4MC4uZGI4MDMyYzNlYzg3
ZTMzZjAyOGRmOGRmYTEzNWYzYTRjNmU1ZDYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCkBAIC0zNjksMTQgKzM2OSw2IEBAIHZv
aWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4CiAjZW5kaWYKIH0KIAotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKLXZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQotewotICAgIGlmIChtX2Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KQotICAgICAgICBtX2Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1JlY3QsIHRy
YWplY3RvcnlWZWN0b3IpOwotfQotI2VuZGlmCi0KIHZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6
OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiB7CiAgICAgQVNTRVJUKGlzSW5BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKaW5kZXggZTVkMTY2Mzk3YjFkYWVlODhjOTZkMDliYWQx
ODZkOWJlNzI3Mjk0YS4uYjlkMWI3MjY3ZGNhYWI3N2IyZjExOTU0ZGIyMWIxZDdiMTRlOTVmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgK
QEAgLTgyLDkgKzgyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogICAgIHZvaWQgZXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7Ci0jaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgdHJhamVjdG9yeSkgT1ZFUlJJREU7Ci0jZW5kaWYKICNlbHNlCiAgICAgYm9v
bCBpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBkMDhjYzkx
ZjY0NGQ5YTlmOGJiODczZWI0ZmU4MzFiOTk4M2Y4YzYyLi4xNTkwOWUwNzExMTQ1NDA4YThhMDQ3
YTFiOWFlN2Q1NDg0ZTU3M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
QEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFu
Z2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpID0gMDsKIAogI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9s
bChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVu
ZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJh
bnNpdGlvblZpZXdwb3J0UmVhZHkoKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRleCAzMWQwYzdjMWYw
MzdmNjhlMzY4ODFlNzNiZDg3ZGEzNzY4ZjY4ZDNiLi5iOTgyMTlmN2ZhMGJmNTkwZDgyYTYwYTNh
Mzc3YzljYjYzZmExYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCkBAIC0xOTYsOCArMTk2LDYgQEAgdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyOjpkaWRSZW5kZXJGcmFtZShjb25zdCBJbnRTaXplJiBjb250ZW50c1Np
emUsIGNvbnN0IEkKICAgICAgICAgRmxvYXRQb2ludCBjdXJyZW50RGlzY3JldGVQb3MgPSByb3Vu
ZGVkSW50UG9pbnQobV9jb250ZW50c1Bvc2l0aW9uKTsKICAgICAgICAgRmxvYXRQb2ludCBwaXhl
bEFsaWduZWRQb3MgPSBwaXhlbEFsaWduZWRGbG9hdFBvaW50KGN1cnJlbnREaXNjcmV0ZVBvcyk7
CiAgICAgICAgIG1fY29udGVudHNQb3NpdGlvbiA9IGJvdW5kQ29udGVudHNQb3NpdGlvbihwaXhl
bEFsaWduZWRQb3MpOwotCi0gICAgICAgIG1fd2ViUGFnZVByb3h5LT5zY2FsZVBhZ2UobV9wYWdl
U2NhbGVGYWN0b3IsIHJvdW5kZWRJbnRQb2ludChtX2NvbnRlbnRzUG9zaXRpb24pKTsKICAgICB9
CiAKICAgICAvLyBUaGVyZSBtaWdodCBiZSByZW5kZXJlZCBmcmFtZXMgbm90IGNvdmVyaW5nIG91
ciByZXF1ZXN0ZWQgcG9zaXRpb24geWV0LCB3YWl0IGZvciBpdC4KQEAgLTIyMyw3ICsyMjEsNyBA
QCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFk
eSgpCiAgICAgbV93ZWJQYWdlUHJveHktPmNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKTsK
IH0KIAotdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChj
b25zdCBJbnRQb2ludCYgY3NzUG9zaXRpb24pCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6
OnBhZ2VEaWRTY3JvbGwoY29uc3QgSW50UG9pbnQmIGNzc1Bvc2l0aW9uKQogewogICAgIC8vIEln
bm9yZSB0aGUgcmVxdWVzdCBpZiBzdXNwZW5kZWQuIENhbiBvbmx5IGhhcHBlbiBkdWUgdG8gZGVs
YXkgaW4gZXZlbnQgZGVsaXZlcnkuCiAgICAgaWYgKG1faGFzU3VzcGVuZGVkQ29udGVudCkKQEAg
LTI1NCwyNiArMjUyLDI2IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdl
Vmlld3BvcnRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSkKICAgICBtX3dlYlBhZ2VQcm94
eS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShyb3VuZGVkSW50U2l6ZShuZXdTaXplKSwgSW50U2l6
ZSgpKTsKIH0KIAotdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50
c1Zpc2liaWxpdHkoY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGZsb2F0IHNjYWxlLCBjb25z
dCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9s
bGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3QgRmxvYXRQb2ludCYgcG9zaXRp
b24sIGZsb2F0IHNjYWxlKQogewogICAgIGlmICghbV9wZW5kaW5nUG9zaXRpb25DaGFuZ2UpCiAg
ICAgICAgIG1fY29udGVudHNQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIGlmICghbV9wZW5kaW5n
U2NhbGVDaGFuZ2UpCiAgICAgICAgIGFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKHNj
YWxlKTsKIAotICAgIHN5bmNWaXNpYmxlQ29udGVudHModHJhamVjdG9yeVZlY3Rvcik7CisgICAg
Ly8gV2UgbXVzdCBub3RpZnkgd2ViUGFnZSB3aGVuIGhlcmUgaXMgdGhlIHNvdXJjZSBvZiBzY2Fs
aW5nIGFuZCBzY3JvbGxpbmcgZXZlbnRzLgorICAgIG1fd2ViUGFnZVByb3h5LT5zY2FsZVBhZ2Uo
bV9wYWdlU2NhbGVGYWN0b3IsIHJvdW5kZWRJbnRQb2ludChtX2NvbnRlbnRzUG9zaXRpb24pKTsK
KyAgICBtX3dlYlBhZ2VQcm94eS0+c2V0U2Nyb2xsUG9zaXRpb24ocm91bmRlZEludFBvaW50KGJv
dW5kQ29udGVudHNQb3NpdGlvbihtX2NvbnRlbnRzUG9zaXRpb24pKSk7CisKKyAgICBzeW5jVmlz
aWJsZUNvbnRlbnRzKCk7CiB9CiAKLXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6c3luY1Zp
c2libGVDb250ZW50cyhjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQordm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyOjpzeW5jVmlzaWJsZUNvbnRlbnRzKCkKIHsKICAgICBEcmF3
aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgp
OwogICAgIGlmICghZHJhd2luZ0FyZWEgfHwgbV92aWV3cG9ydFNpemUuaXNFbXB0eSgpIHx8IG1f
Y29udGVudHNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0
IHZpc2libGVDb250ZW50c1JlY3QoYm91bmRDb250ZW50c1Bvc2l0aW9uKG1fY29udGVudHNQb3Np
dGlvbiksIHZpc2libGVDb250ZW50c1NpemUoKSk7Ci0gICAgdmlzaWJsZUNvbnRlbnRzUmVjdC5p
bnRlcnNlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9jb250ZW50c1NpemUpKTsK
LSAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlQ29udGVudHNS
ZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKLQogICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VWaXNpYmxl
Q29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmll
d3BvcnRDb250cm9sbGVyLmgKaW5kZXggMzVkNGI1MzNkMjA3MDJlYjI5YTJjMjJkNzM0MjkwYmQy
NGJiZDYwMy4uMTMyYzg0ZTM1MWQ3Y2YwZTMxYWZmYzM2OTVjZmE2OWYxYmU4NTc0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oCkBA
IC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWNhdGlvbnMgZnJvbSB0aGUg
dmlld3BvcnQuCiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBuZXdTaXplKTsKLSAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0
eShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IgPSBXZWJDb3JlOjpGbG9hdFBvaW50Ojp6ZXJv
KCkpOworICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmLCBmbG9hdCBzY2FsZSk7CiAKICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20g
dGhlIFdlYlByb2Nlc3MuCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CkBAIC04MiwxMCArODIs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjb3ZlcmVkUmVjdCk7CiAgICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHko
KTsKLSAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBjc3NQb3NpdGlvbik7CisgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBjc3NQb3NpdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzeW5jVmlzaWJsZUNv
bnRlbnRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQgJnRyYWplY3RvcnlWZWN0b3IgPSBXZWJD
b3JlOjpGbG9hdFBvaW50Ojp6ZXJvKCkpOworICAgIHZvaWQgc3luY1Zpc2libGVDb250ZW50cygp
OwogICAgIHZvaWQgYXBwbHlTY2FsZUFmdGVyUmVuZGVyaW5nQ29udGVudHMoZmxvYXQgc2NhbGUp
OwogICAgIHZvaWQgYXBwbHlQb3NpdGlvbkFmdGVyUmVuZGVyaW5nQ29udGVudHMoY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgcG9zKTsKICAgICBib29sIHVwZGF0ZU1pbmltdW1TY2FsZVRvRml0
KGJvb2wgdXNlckluaXRpYXRlZFVwZGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDBiYzkyN2YyZTdkZjM3ZDJjNWNjYTAxNjgxNmQzODY2OThmMjQ4
MDIuLjk4ZjI2ODYwODg0ODBiNjNjODU5ZDE2M2U4NjRiODVhYTdjYTY5Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzI5LDYgKzEzMjksMTQgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNjcm9sbEJ5KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNj
cm9sbEdyYW51bGFyaXR5IGdyYW51bGEKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpLCBtX3BhZ2VJRCk7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9z
aXRpb24pCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRp
b24pLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25J
blZpc2libGVBcmVhKCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKQEAgLTI3MjksMTEgKzI3Mzcs
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZgogfQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCi12b2lkIFdlYlBhZ2VQcm94eTo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50
UG9pbnQmIHBvaW50KQotewotICAgIG1fcGFnZUNsaWVudC0+cGFnZURpZFJlcXVlc3RTY3JvbGwo
cG9pbnQpOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJl
YWR5KCkKIHsKICAgICBtX3BhZ2VDbGllbnQtPnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgp
OwpAQCAtMjc1MSwxMiArMjc1NCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmll
d3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKICAgICBtX3Bh
Z2VDbGllbnQtPmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhhdHRyKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwoKQordm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VEaWRT
Y3JvbGwoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQogewogICAgIG1fdWlDbGllbnQu
cGFnZURpZFNjcm9sbCh0aGlzKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgZGlzbWlzc0NvcnJl
Y3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCk7CiAj
ZW5kaWYKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBtX3BhZ2VDbGllbnQtPnBh
Z2VEaWRTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgRmlsZUNob29zZXJTZXR0
aW5ncyYgc2V0dGluZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggZjBlYzdkYjg1Mzc1M2Y5YWFjYjdjMjRiYmJmMTdjY2Q5N2QxOTRhZS4uNzMyMzgxMTk3YWM4
NGNmZDA4MzMxNjdlMjM0NzMxYjA2MjUxODM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNDM2LDYgKzQzNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
dm9pZCBzY3JvbGxCeShXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdy
YW51bGFyaXR5KTsKKyAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50Jik7CiAgICAgdm9pZCBjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCk7CiAKICAg
ICBTdHJpbmcgcGFnZVRpdGxlKCkgY29uc3Q7CkBAIC04NDQsNyArODQ1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdpbmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0
LCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHQpOwogICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCYg
c2hvdWxkQ2xvc2UpOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwotICAgIHZvaWQgcGFnZURpZFNjcm9sbCgp
OworICAgIHZvaWQgcGFnZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAg
IHZvaWQgcnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkZpbGVD
aG9vc2VyU2V0dGluZ3MmKTsKICAgICB2b2lkIHByaW50RnJhbWUodWludDY0X3QgZnJhbWVJRCk7
CiAgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBj
dXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRf
dCBleHBlY3RlZFVzYWdlLCB1aW50NjRfdCYgbmV3UXVvdGEpOwpAQCAtODY2LDcgKzg2Nyw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcm
IHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBjb25zdCBTdHJpbmcmIGRpciwgY29uc3QgU3RyaW5n
JiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICAKICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDE5ZmQwNTFkMzc2ZTJmNmQ0
YjljMGYwYmViY2FiNzEwYzU3YTQ0My4uNTI1NTgzYWIyYWM1ZDRjZDI2MGUzZWNmOWJjZWU5M2Vk
N2IzNWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC01Niw3ICs1Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgU2NyZWVuVG9XaW5kb3coV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpIC0+IChX
ZWJDb3JlOjpJbnRQb2ludCB3aW5kb3dQb2ludCkKICAgICBXaW5kb3dUb1NjcmVlbihXZWJDb3Jl
OjpJbnRSZWN0IHJlY3QpIC0+IChXZWJDb3JlOjpJbnRSZWN0IHNjcmVlbkZyYW1lKQogICAgIFJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXVEY6OlN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCBm
cmFtZUlEKSAtPiAoYm9vbCBzaG91bGRDbG9zZSkKLSAgICBQYWdlRGlkU2Nyb2xsKCkKKyAgICBQ
YWdlRGlkU2Nyb2xsKFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKQogICAgIFJ1bk9w
ZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzIHBh
cmFtZXRlcnMpCiAgICAgUHJpbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSAtPiAoKQogICAgIFJ1
bk1vZGFsKCkKQEAgLTc0LDcgKzc0LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNl
bmRpZgogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgUGFnZURpZFJlcXVlc3RT
Y3JvbGwoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgUGFnZVRyYW5zaXRpb25WaWV3cG9y
dFJlYWR5KCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbC5jcHAKaW5kZXggNjljZGUwM2NmMGM3YjA3MmUwODE5NjdjMmQyYzgzZTgwZDIyOWYwZC4u
NTlmMTAxZTEwMmZkMjU4MGE5MjJkNGY0ZjYzNWM3YTlkZTllMTNkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuY3BwCkBAIC00OSwxMyArNDksNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaQogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQpCiB7CiAgICAg
bV9jb250ZW50UG9zaXRpb24gPSBjb250ZW50c1BvaW50OwotCi0gICAgRmxvYXRQb2ludCBwb3Mo
Y29udGVudHNQb2ludCk7Ci0gICAgcG9zLnNjYWxlKG1fdmlldy0+cGFnZVNjYWxlRmFjdG9yKCks
IG1fdmlldy0+cGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIHBvcy5zY2FsZShtX3ZpZXctPmRldmlj
ZVNjYWxlRmFjdG9yKCksIG1fdmlldy0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgbV92aWV3
LT5zZXRQYWdlUG9zaXRpb24ocG9zKTsKLQotICAgIG1fY29udHJvbGxlci0+ZGlkQ2hhbmdlQ29u
dGVudHNWaXNpYmlsaXR5KG1fY29udGVudFBvc2l0aW9uLCBtX3ZpZXctPnBhZ2VTY2FsZUZhY3Rv
cigpKTsKKyAgICBtX3ZpZXctPnNldFBhZ2VQb3NpdGlvbihtX2NvbnRlbnRQb3NpdGlvbik7CiB9
CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0UGFnZVNjYWxlRmFj
dG9yKGZsb2F0IG5ld1NjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5j
cHAKaW5kZXggMmEzYWE5YzgyMzZlNWZlMWExMWEzMzM0MjY4NjVjNzlhNTIyNWVlZS4uNDBlZGYy
YWE2ZDY2Zjg0MmUzN2U1MDIwYTRmYTlkYTY3OWE5Y2MzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC0xMDIsOCArMTAyLDggQEAgdm9pZCBXZWJWaWV3Ojpw
YWludFRvQ3VycmVudEdMQ29udGV4dCgpCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gY2xlYW4g
dXAgdGhpcyBjb2RlIGFzIGl0IGlzIHNwbGl0IG92ZXIgQ29vcmRHZnggYW5kIFBhZ2UuCiAgICAg
c2NlbmUtPnNldERyYXdzQmFja2dyb3VuZChtX3BhZ2UtPmRyYXdzQmFja2dyb3VuZCgpKTsKIAot
ICAgIEZsb2F0UmVjdCB2aWV3cG9ydCA9IG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtLm1hcFJlY3Qo
SW50UmVjdChJbnRQb2ludCgpLCBtX2V3a1ZpZXctPnNpemUoKSkpOwotICAgIHNjZW5lLT5wYWlu
dFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zvcm1Ub1NjZW5lKCkudG9UcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCAvKiBvcGFjaXR5ICovIDEsIHZpZXdwb3J0KTsKKyAgICBGbG9hdFJlY3Qgdmlld3Bv
cnQgPSBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybS5tYXBSZWN0KEludFJlY3QoSW50UG9pbnQoKSwg
bV9ld2tWaWV3LT5uYXRpdmVTaXplKCkpKTsKKyAgICBzY2VuZS0+cGFpbnRUb0N1cnJlbnRHTENv
bnRleHQodHJhbnNmb3JtRnJvbUNvbnRlbnRzVG9TY2VuZSgpLnRvVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgLyogb3BhY2l0eSAqLyAxLCB2aWV3cG9ydCwgbV9ld2tWaWV3LT5wYWdlUG9zaXRpb24o
KSk7CiB9CiAKIHZvaWQgV2ViVmlldzo6cGFpbnRUb0NhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNl
X3QqIHN1cmZhY2UpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJWaWV3OjpwYWludFRvQ2Fp
cm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKICAgICBjb25zdCBGbG9hdFBvaW50
JiBwYWdlUG9zaXRpb24gPSBtX2V3a1ZpZXctPnBhZ2VQb3NpdGlvbigpOwogICAgIGRvdWJsZSBl
ZmZlY3RpdmVTY2FsZSA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSAqIG1fZXdrVmlldy0+
cGFnZVNjYWxlRmFjdG9yKCk7CiAKLSAgICBjYWlyb19tYXRyaXhfdCB0cmFuc2Zvcm0gPSB7IGVm
ZmVjdGl2ZVNjYWxlLCAwLCAwLCBlZmZlY3RpdmVTY2FsZSwgLSBwYWdlUG9zaXRpb24ueCgpLCAt
IHBhZ2VQb3NpdGlvbi55KCkgfTsKKyAgICBjYWlyb19tYXRyaXhfdCB0cmFuc2Zvcm0gPSB7IGVm
ZmVjdGl2ZVNjYWxlLCAwLCAwLCBlZmZlY3RpdmVTY2FsZSwgLXBhZ2VQb3NpdGlvbi54KCkgKiBl
ZmZlY3RpdmVTY2FsZSwgLXBhZ2VQb3NpdGlvbi55KCkgKiBlZmZlY3RpdmVTY2FsZSB9OwogICAg
IGNhaXJvX3NldF9tYXRyaXgoY29udGV4dC5jcigpLCAmdHJhbnNmb3JtKTsKIAogICAgIHNjZW5l
LT5wYWludFRvR3JhcGhpY3NDb250ZXh0KCZjb250ZXh0KTsKQEAgLTE5NywxMyArMTk3LDEwIEBA
IHZvaWQgV2ViVmlldzo6ZGlkQ29tbWl0TG9hZCgpCiB2b2lkIFdlYlZpZXc6OnVwZGF0ZVZpZXdw
b3J0U2l6ZSgpCiB7CiAgICAgaWYgKG1fcGFnZS0+dXNlRml4ZWRMYXlvdXQoKSkgewotICAgICAg
ICBGbG9hdFNpemUgc2l6ZSA9IG1fZXdrVmlldy0+c2l6ZSgpOwotICAgICAgICAvLyBUaGUgdmll
d3BvcnQgY29udHJvbGxlciBleHBlY3RzIHNpemVzIGluIFVJIHVuaXRzLCBhbmQgbm90IHJhdyBk
ZXZpY2UgdW5pdHMuCi0gICAgICAgIHNpemUuc2NhbGUoMSAvIG1fcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7Ci0gICAgICAgIG1fZXdrVmlldy0+cGFnZVZpZXdwb3J0Q29udHJvbGxlcigpLT5k
aWRDaGFuZ2VWaWV3cG9ydFNpemUoc2l6ZSk7CisgICAgICAgIG1fZXdrVmlldy0+cGFnZVZpZXdw
b3J0Q29udHJvbGxlcigpLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUobV9ld2tWaWV3LT5zaXplKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChtX2V3a1ZpZXctPnBh
Z2VQb3NpdGlvbigpKSwgbV9ld2tWaWV3LT5zaXplKCkpLCBGbG9hdFBvaW50KCkpOworICAgIG1f
cGFnZS0+c2V0U2Nyb2xsUG9zaXRpb24ocm91bmRlZEludFBvaW50KG1fZXdrVmlldy0+cGFnZVBv
c2l0aW9uKCkpKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKQEAgLTIxNSwxOSArMjEyLDI0IEBAIHZvaWQgV2Vi
Vmlldzo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUp
CiAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplKHRoaXMsIHNpemUpOwogfQogCi1B
ZmZpbmVUcmFuc2Zvcm0gV2ViVmlldzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKK0FmZmlu
ZVRyYW5zZm9ybSBXZWJWaWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmVUb1dlYlZpZXcoKSBjb25zdAog
ewotICAgIHJldHVybiB0cmFuc2Zvcm1Ub1NjZW5lKCkuaW52ZXJzZSgpOworICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtOworCisgICAg
dHJhbnNmb3JtLnNjYWxlKG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgdHJhbnNm
b3JtLnNjYWxlKG1fZXdrVmlldy0+cGFnZVNjYWxlRmFjdG9yKCkpOworCisgICAgcmV0dXJuIHRy
YW5zZm9ybS50b0FmZmluZVRyYW5zZm9ybSgpLmludmVyc2UoKTsKIH0KIAotQWZmaW5lVHJhbnNm
b3JtIFdlYlZpZXc6OnRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFdl
YlZpZXc6OnRyYW5zZm9ybUZyb21Db250ZW50c1RvU2NlbmUoKSBjb25zdAogewogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtOwogCiAg
ICAgY29uc3QgRmxvYXRQb2ludCYgcGFnZVBvc2l0aW9uID0gbV9ld2tWaWV3LT5wYWdlUG9zaXRp
b24oKTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1wYWdlUG9zaXRpb24ueCgpLCAtcGFnZVBv
c2l0aW9uLnkoKSk7CiAgICAgdHJhbnNmb3JtLnNjYWxlKG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiAgICAgdHJhbnNmb3JtLnNjYWxlKG1fZXdrVmlldy0+cGFnZVNjYWxlRmFjdG9yKCkp
OworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLXBhZ2VQb3NpdGlvbi54KCksIC1wYWdlUG9zaXRp
b24ueSgpKTsKIAogICAgIHJldHVybiB0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKTsKIH0K
QEAgLTUxNCwxMCArNTE2LDEwIEBAIHZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9w
ZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0CiAgICAgbV9ld2tW
aWV3LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKIH0KIAotdm9pZCBXZWJWaWV3OjpwYWdlRGlk
UmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCit2b2lkIFdlYlZpZXc6OnBh
Z2VEaWRTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIGlmIChtX3BhZ2Ut
PnVzZUZpeGVkTGF5b3V0KCkpIHsgICAgICAgIAotICAgICAgICBtX2V3a1ZpZXctPnBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIoKS0+cGFnZURpZFJlcXVlc3RTY3JvbGwocG9zaXRpb24pOworICAgICAg
ICBtX2V3a1ZpZXctPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoKS0+cGFnZURpZFNjcm9sbChwb3Np
dGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9ld2tWaWV3LT5zZXRQYWdlUG9z
aXRpb24oRmxvYXRQb2ludChwb3NpdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlZpZXcuaAppbmRleCA0MmM4ZDEzZDBmMWQ1MGQ0OTMxNjcxZTkwZTRkZDc5MzU1ZTJlZWRlLi5h
OWI4ZWU1YjcyYjM2NjFkOTlkYjdmNDA4ODFhZTUyMWQ4NmI2YjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXcuaApAQCAtOTIsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogCiAgICAg
Ly8gRklYTUU6IFNob3VsZCBiZWNvbWUgcHJpdmF0ZSB3aGVuIFdlYiBFdmVudHMgY3JlYXRpb24g
aXMgbW92ZWQgdG8gV2ViVmlldy4KLSAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtRnJvbVNjZW5lKCkgY29uc3Q7Ci0gICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtIHRyYW5z
Zm9ybVRvU2NlbmUoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtRnJvbVNjZW5lVG9XZWJWaWV3KCkgY29uc3Q7CisgICAgV2ViQ29yZTo6QWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybUZyb21Db250ZW50c1RvU2NlbmUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZSgpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRvb2xUaXBD
aGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCi0gICAgdm9p
ZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIE9WRVJSSURF
OworICAgIHZvaWQgcGFnZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIE9WRVJS
SURFOwogICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29u
dGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkgT1ZFUlJJREU7
CiAgICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSBPVkVSUklERTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudFF0LmNwcAppbmRleCA2ZWUzOTk3ZjVhY2RiYzcyMWRmOGZhMGNmMTM1
YjVhYTM3ZDg4MzNhLi4yY2Q5NmUxYWM3ZjEwMmFlMWQ5MWY2OTNlNTk5MjgxM2NmNGY2ZDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmNwcApAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMo
KQogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnVwZGF0ZVZpZXdwb3J0Q29u
dHJvbGxlcihjb25zdCBRUG9pbnRGJiB0cmFqZWN0b3J5KQogewogICAgIEZsb2F0UG9pbnQgdmll
d3BvcnRQb3MgPSBtX3ZpZXdwb3J0SXRlbS0+bWFwVG9XZWJDb250ZW50KFFQb2ludEYoKSk7Ci0g
ICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkodmlld3BvcnRQb3Ms
IG1fcGFnZUl0ZW0tPmNvbnRlbnRzU2NhbGUoKSwgdHJhamVjdG9yeSk7CisgICAgbV9jb250cm9s
bGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkodmlld3BvcnRQb3MsIG1fcGFnZUl0ZW0t
PmNvbnRlbnRzU2NhbGUoKSk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dFF0OjpzY2FsZUNvbnRlbnQocXJlYWwgaXRlbVNjYWxlLCBjb25zdCBRUG9pbnRGJiBjZW50ZXJJ
bkNTU0Nvb3JkaW5hdGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0UGFnZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xp
ZW50LmNwcAppbmRleCA4OWE0MGM5MjMxYTE4MWI3MDE5YzFlMmZhMTJiNmI2OGIxMTZiMjYxLi5h
OGM4YTE2NjI1ZWNkZmNiZTI1MTEzMWJkZmM2Y2ZiMWI2YzU0NWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcApAQCAtODMsOSArODMsOSBAQCB2b2lk
IFF0UGFnZUNsaWVudDo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29u
dGVudHNTaXplLCBjb25zdCBXZQogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJW
aWV3KS0+ZGlkUmVuZGVyRnJhbWUoKTsKIH0KIAotdm9pZCBRdFBhZ2VDbGllbnQ6OnBhZ2VEaWRS
ZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3MpCit2b2lkIFF0UGFnZUNsaWVudDo6cGFn
ZURpZFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zKQogewotICAgIFFRdWlja1dlYlZpZXdQcml2
YXRlOjpnZXQobV93ZWJWaWV3KS0+cGFnZURpZFJlcXVlc3RTY3JvbGwocG9zKTsKKyAgICBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPnBhZ2VEaWRTY3JvbGwocG9zKTsKIH0K
IAogdm9pZCBRdFBhZ2VDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmgKaW5kZXggYmMzZTNmMTJjMzBlY2YwN2Y3OTg1Y2Zi
ZjdiMDQyMmE3YTFmNTUyMS4uZDVlM2E3OTI1MDcwZGI2MWM3YTQxNDRjZWM4MGE0OGZhYjU1ZWI0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaApAQCAtNDgs
NyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmlld0ZvY3VzZWQoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMo
Y29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CiAgICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3NEaWRDcmFzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcAppbmRleCBiODA2MTM0MzhiMzViZjk2ZGU3M2I0YTYw
NGRkYWNhMTQzMDQ5M2RhLi5hMzU5NDcxZTllYWNmYmUwYzlmMjQ1OTlmZTRhNDQ2MjhlYjE1MjE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZl
bnRIYW5kbGVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCogZXYpCiAgICAgLy8gTk9URTog
bGFzdFBvcyBmcm9tIHRoZSBldmVudCBhbHdheXMgY29tZXMgZW1wdHksIHNvIHdlIHdvcmsKICAg
ICAvLyBhcm91bmQgdGhhdCBoZXJlLgogICAgIHN0YXRpYyBRUG9pbnRGIGxhc3RQb3MgPSBRUG9p
bnRGKCk7Ci0gICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJh
bnNmb3JtRnJvbUl0ZW0oKTsKKyAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJhbnNmb3JtID0gbV93
ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbVRvV2ViVmlldygpOwogICAgIFFQb2ludEYgd2ViUGFn
ZVBvaW50ID0gZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKGV2LT5sb2NhbFBvcygpKTsKICAgICBldi0+
YWNjZXB0KCk7CiAgICAgaWYgKGxhc3RQb3MgPT0gd2ViUGFnZVBvaW50KQpAQCAtMTMxLDcgKzEz
MSw3IEBAIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChR
TW91c2VFdmVudCogZXYpCiAKIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQogewotICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1U
cmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgUVRyYW5zZm9y
bSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW1Ub1dlYlZp
ZXcoKTsKICAgICBRUG9pbnRGIHdlYlBhZ2VQb2ludCA9IGZyb21JdGVtVHJhbnNmb3JtLm1hcChl
di0+bG9jYWxQb3MoKSk7CiAKICAgICBpZiAobV9jbGlja1RpbWVyLmlzQWN0aXZlKCkKQEAgLTE1
MywxMyArMTUzLDEzIEBAIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVBy
ZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQogdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50KiBldikKIHsKICAgICBldi0+YWNjZXB0
KCk7Ci0gICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNm
b3JtRnJvbUl0ZW0oKTsKKyAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJhbnNmb3JtID0gbV93ZWJQ
YWdlLT50cmFuc2Zvcm1Gcm9tSXRlbVRvV2ViVmlldygpOwogICAgIG1fd2ViUGFnZVByb3h5LT5o
YW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsIGZyb21JdGVtVHJhbnNmb3Jt
LCAvKmV2ZW50Q2xpY2tDb3VudCovIDApKTsKIH0KIAogdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2KQogewotICAgIFFUcmFuc2Zvcm0g
ZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAg
UVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0
ZW1Ub1dlYlZpZXcoKTsKICAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRp
dmVXZWJXaGVlbEV2ZW50KGV2LCBmcm9tSXRlbVRyYW5zZm9ybSkpOwogfQogCkBAIC0xODUsNyAr
MTg1LDcgQEAgdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZUhvdmVyTW92ZUV2ZW50
KFFIb3ZlckV2ZW50KiBldikKIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFn
RW50ZXJFdmVudChRRHJhZ0VudGVyRXZlbnQqIGV2KQogewogICAgIG1fd2ViUGFnZVByb3h5LT5y
ZXNldERyYWdPcGVyYXRpb24oKTsKLSAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJhbnNmb3JtID0g
bV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbSgpOworICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1U
cmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtVG9XZWJWaWV3KCk7CiAgICAg
Ly8gRklYTUU6IFNob3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCiAgICAgRHJhZ0RhdGEgZHJh
Z0RhdGEoZXYtPm1pbWVEYXRhKCksIGZyb21JdGVtVHJhbnNmb3JtLm1hcChldi0+cG9zKCkpLCBR
Q3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVBY3Rp
b25zKCkpKTsKICAgICBtX3dlYlBhZ2VQcm94eS0+ZHJhZ0VudGVyZWQoJmRyYWdEYXRhKTsKQEAg
LTIwOCw3ICsyMDgsNyBAQCB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZ01v
dmVFdmVudChRRHJhZ01vdmVFdmVudCogZXYpCiB7CiAgICAgYm9vbCBhY2NlcHRlZCA9IGV2LT5p
c0FjY2VwdGVkKCk7CiAKLSAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJhbnNmb3JtID0gbV93ZWJQ
YWdlLT50cmFuc2Zvcm1Gcm9tSXRlbSgpOworICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zv
cm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtVG9XZWJWaWV3KCk7CiAgICAgLy8gRklY
TUU6IFNob3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEo
ZXYtPm1pbWVEYXRhKCksIGZyb21JdGVtVHJhbnNmb3JtLm1hcChldi0+cG9zKCkpLCBRQ3Vyc29y
Ojpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVBY3Rpb25zKCkp
KTsKICAgICBtX3dlYlBhZ2VQcm94eS0+ZHJhZ1VwZGF0ZWQoJmRyYWdEYXRhKTsKQEAgLTIyMiw3
ICsyMjIsNyBAQCB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZ01vdmVFdmVu
dChRRHJhZ01vdmVFdmVudCogZXYpCiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJvcEV2ZW50KFFEcm9wRXZlbnQqIGV2KQogewogICAgIGJvb2wgYWNjZXB0ZWQgPSBldi0+aXNB
Y2NlcHRlZCgpOwotICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2Ut
PnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9
IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW1Ub1dlYlZpZXcoKTsKICAgICAvLyBGSVhNRTog
U2hvdWxkIG5vdCB1c2UgUUN1cnNvcjo6cG9zKCkKICAgICBEcmFnRGF0YSBkcmFnRGF0YShldi0+
bWltZURhdGEoKSwgZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKGV2LT5wb3MoKSksIFFDdXJzb3I6OnBv
cygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CkBAIC0yNDAsNyArMjQwLDcgQEAg
dm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmFjdGl2YXRlVGFwSGlnaGxpZ2h0KGNvbnN0IFFU
b3VjaEV2ZW50OjpUb3VjaFBvaW50JgogICAgIEFTU0VSVCghcG9pbnQucG9zKCkudG9Qb2ludCgp
LmlzTnVsbCgpKTsKICAgICBBU1NFUlQoIW1faXNUYXBIaWdobGlnaHRBY3RpdmUpOwogICAgIG1f
aXNUYXBIaWdobGlnaHRBY3RpdmUgPSB0cnVlOwotICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFu
c2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgUVRyYW5zZm9ybSBm
cm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW1Ub1dlYlZpZXco
KTsKICAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlUG90ZW50aWFsQWN0aXZhdGlvbihJbnRQb2lu
dChmcm9tSXRlbVRyYW5zZm9ybS5tYXAocG9pbnQucG9zKCkpLnRvUG9pbnQoKSksIEludFNpemUo
cG9pbnQucmVjdCgpLnNpemUoKS50b1NpemUoKSkpOwogI2Vsc2UKICAgICBRX1VOVVNFRChwb2lu
dCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRs
ZVNpbmdsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JgogICAgIGRlYWN0
aXZhdGVUYXBIaWdobGlnaHQoKTsKICAgICBtX3Bvc3Rwb25lVGV4dElucHV0U3RhdGVDaGFuZ2Vk
ID0gdHJ1ZTsKIAotICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2Ut
PnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9
IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW1Ub1dlYlZpZXcoKTsKICAgICBXZWJHZXN0dXJl
RXZlbnQgZ2VzdHVyZShXZWJFdmVudDo6R2VzdHVyZVNpbmdsZVRhcCwgZnJvbUl0ZW1UcmFuc2Zv
cm0ubWFwKHBvaW50LnBvcygpKS50b1BvaW50KCksIHBvaW50LnNjcmVlblBvcygpLnRvUG9pbnQo
KSwgV2ViRXZlbnQ6Ok1vZGlmaWVycygwKSwgMCwgSW50U2l6ZShwb2ludC5yZWN0KCkuc2l6ZSgp
LnRvU2l6ZSgpKSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgbV93ZWJQYWdlUHJveHktPmhhbmRs
ZUdlc3R1cmVFdmVudChnZXN0dXJlKTsKIH0KQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFF0V2Vi
UGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlU2luZ2xlVGFwRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQ6
OlRvdWNoUG9pbnQmCiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlRG91YmxlVGFw
RXZlbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50KQogewogICAgIGRlYWN0
aXZhdGVUYXBIaWdobGlnaHQoKTsKLSAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJhbnNmb3JtID0g
bV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbSgpOworICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1U
cmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtVG9XZWJWaWV3KCk7CiAgICAg
bV93ZWJQYWdlUHJveHktPmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChmcm9tSXRlbVRyYW5zZm9y
bS5tYXAocG9pbnQucG9zKCkpLnRvUG9pbnQoKSwgSW50U2l6ZShwb2ludC5yZWN0KCkuc2l6ZSgp
LnRvU2l6ZSgpKSk7CiB9CiAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIFF0V2ViUGFnZUV2ZW50
SGFuZGxlcjo6aGFuZGxlSW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCogZXYpCiB2
b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChRVG91Y2hFdmVudCog
ZXZlbnQpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBRVHJhbnNmb3JtIGZyb21J
dGVtVHJhbnNmb3JtID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbSgpOworICAgIFFUcmFu
c2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtVG9X
ZWJWaWV3KCk7CiAgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2Vi
VG91Y2hFdmVudChldmVudCwgZnJvbUl0ZW1UcmFuc2Zvcm0pKTsKICAgICBldmVudC0+YWNjZXB0
KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVNHTm9kZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dO
b2RlLmNwcAppbmRleCAwMDJkMDA1MDdhNGRhNjJiZjRjOGQ0OWU1MzNlMzEwNGM3YTEyNjcwLi4x
MWFkZDliOGMyZDg3OGM4MzUxNDViYzdlNmUyMjJjNjM0ODI4OWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmNwcApAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbWlycm9yZWQgPSBwcm9qZWN0aW9uICYmICgqcHJvamVj
dGlvbikoMCwgMCkgKiAoKnByb2plY3Rpb24pKDEsIDEpIC0gKCpwcm9qZWN0aW9uKSgwLCAxKSAq
ICgqcHJvamVjdGlvbikoMSwgMCkgPiAwOwogCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5v
bi1yZWN0YW5ndWxhciBjbGlwcGluZ3MuCi0gICAgICAgIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZSgpLT5wYWludFRvQ3VycmVudEdMQ29udGV4dChyZW5kZXJNYXRyaXgsIGluaGVyaXRlZE9wYWNp
dHkoKSwgY2xpcFJlY3QoKSwgbWlycm9yZWQgPyBUZXh0dXJlTWFwcGVyOjpQYWludGluZ01pcnJv
cmVkIDogMCk7CisgICAgICAgIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpLT5wYWludFRvQ3Vy
cmVudEdMQ29udGV4dChyZW5kZXJNYXRyaXgsIGluaGVyaXRlZE9wYWNpdHkoKSwgY2xpcFJlY3Qo
KSwgcGFnZU5vZGUoKS0+c2Nyb2xsUG9zaXRpb24oKSwgbWlycm9yZWQgPyBUZXh0dXJlTWFwcGVy
OjpQYWludGluZ01pcnJvcmVkIDogMCk7CiAgICAgfQogCiAgICAgfkNvbnRlbnRzU0dOb2RlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VTR05vZGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VTR05vZGUuaAppbmRleCA3
N2FkODFiNmZjMjVkNmM4NjcxYWQxOTZkZDExZjQ4YTgwOWNmY2JlLi5iMTRjMzIwOGQ5NjkwOTVj
MTJlNTE5MGRiMjhlMmFmZmQ4ODAxY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVNHTm9kZS5oCkBAIC00MSw2ICs0MSw4IEBAIGNsYXNzIFF0V2ViUGFnZVNH
Tm9kZSA6IHB1YmxpYyBRU0dUcmFuc2Zvcm1Ob2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFF0
V2ViUGFnZVNHTm9kZSgpOwogICAgICAgICB2b2lkIHNldEJhY2tncm91bmQoY29uc3QgUVJlY3RG
JiwgY29uc3QgUUNvbG9yJik7CisgICAgICAgIGNvbnN0IFFQb2ludEYmIHNjcm9sbFBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQorICAgICAgICB2b2lkIHNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IFFQb2ludEYmIHNjcm9sbFBvc2l0aW9uKSB7IG1fc2Nyb2xsUG9z
aXRpb24gPSBzY3JvbGxQb3NpdGlvbjsgfQogICAgICAgICB2b2lkIHNldFNjYWxlKGZsb2F0KTsK
ICAgICAgICAgdm9pZCBzZXRDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoUGFzc1JlZlB0cjxXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+KTsKICAgICAgICAgcXJlYWwgZGV2aWNlUGl4
ZWxSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlUGl4ZWxSYXRpbzsgfQpAQCAtNDksNiAr
NTEsNyBAQCBjbGFzcyBRdFdlYlBhZ2VTR05vZGUgOiBwdWJsaWMgUVNHVHJhbnNmb3JtTm9kZSB7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgQ29udGVudHNTR05vZGUqIG1fY29udGVudHNOb2RlOwog
ICAgICAgICBRU0dTaW1wbGVSZWN0Tm9kZSogbV9iYWNrZ3JvdW5kTm9kZTsKKyAgICAgICAgUVBv
aW50RiBtX3Njcm9sbFBvc2l0aW9uOwogICAgICAgICBxcmVhbCBtX2RldmljZVBpeGVsUmF0aW87
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNjEzOTBjNjhmMzE3MTYzNzRkZTFk
ODc4YzkyY2ZhZDkxZWVlMzI1MS4uNjc0YzU3YzdiZmIzNmU0NDZiMmY0ZWM4YTUyMWRhZjQ0N2Y5
ZjUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMzk4LDIwICszOTgsMjQgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OmludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3Qg
SW50UmVjdCYgcmVjdCwgYm9vbCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3BhZ2UtPnBhZ2VEaWRTY3JvbGwoKTsKKyAgICBtX3BhZ2UtPnBhZ2VEaWRTY3JvbGwobV9wYWdl
LT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zY3JvbGxQb3NpdGlvbigpKTsKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5z
Y3JvbGwocmVjdCwgSW50U2l6ZSgpKTsKKyNlbHNlCiAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgp
LT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnNjcm9sbChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVj
dCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7Ci0gICAgbV9wYWdlLT5w
YWdlRGlkU2Nyb2xsKCk7CisgICAgbV9wYWdlLT5wYWdlRGlkU2Nyb2xsKG1fcGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgbV9wYWdl
LT5kcmF3aW5nQXJlYSgpLT5zY3JvbGwoaW50ZXJzZWN0aW9uKHNjcm9sbFJlY3QsIGNsaXBSZWN0
KSwgc2Nyb2xsRGVsdGEpOwogfQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50
JiBzY3JvbGxPZmZzZXQpCiB7Ci0gICAgbV9wYWdlLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChzY3Jv
bGxPZmZzZXQpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogI2VuZGlmCiAKQEAgLTQ1
NCw3ICs0NTgsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Y29udGVudHNTaXplQ2hhbmdlZChG
cmFtZSogZnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUpIGNvbgogICAgIG1fcGFnZS0+ZHJhd2lu
Z0FyZWEoKS0+bWFpbkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKHNpemUpOwogCiAgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOwotICAgIGlmIChmcmFtZVZpZXcgJiYgIWZy
YW1lVmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpICB7CisgICAgaWYgKGZyYW1lVmlldyAmJiBm
cmFtZVZpZXctPmNhbkhhdmVTY3JvbGxiYXJzKCkpICB7CiAgICAgICAgIGJvb2wgaGFzSG9yaXpv
bnRhbFNjcm9sbGJhciA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpOwogICAgICAg
ICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyID0gZnJhbWVWaWV3LT52ZXJ0aWNhbFNjcm9sbGJh
cigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDYxMTQ5ZmQ4NDA5
NzY3YTc4MzI4ZGVmNzI5NmQxNmYyODFhNjQ3NzMuLjY4MTFiYTA3Mjg0NjY5OTI5ZTZmYjRiOGNh
MDg0NDY1NzI4OWNmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0x
MjA2LDcgKzEyMDYsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9D
b21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBib29sIHNob3VsZFVzZUZpeGVkTGF5b3V0ID0gaXNN
YWluRnJhbWUgJiYgd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKTsKICAgICBib29sIHNob3VsZERp
c2FibGVTY3JvbGxpbmcgPSBpc01haW5GcmFtZSAmJiAhd2ViUGFnZS0+bWFpbkZyYW1lSXNTY3Jv
bGxhYmxlKCk7CiAgICAgYm9vbCBzaG91bGRIaWRlU2Nyb2xsYmFycyA9IHNob3VsZFVzZUZpeGVk
TGF5b3V0IHx8IHNob3VsZERpc2FibGVTY3JvbGxpbmc7Ci0gICAgSW50UmVjdCBjdXJyZW50Rml4
ZWRWaXNpYmxlQ29udGVudFJlY3QgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpID8gbV9m
cmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+Zml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKSA6IElu
dFJlY3QoKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlID0gbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwog
ICAgIG1fZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiA9IGlzTWFpbkZyYW1lICYmIHdlYlBh
Z2UtPnNob3VsZFVzZUN1c3RvbVJlcHJlc2VudGF0aW9uRm9yUmVzcG9uc2UocmVzcG9uc2UpOwpA
QCAtMTIxNSw3ICsxMjE0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlv
blRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgU2Nyb2xsYmFyTW9kZSBkZWZhdWx0U2Nyb2xs
YmFyTW9kZSA9IHNob3VsZEhpZGVTY3JvbGxiYXJzID8gU2Nyb2xsYmFyQWx3YXlzT2ZmIDogU2Ny
b2xsYmFyQXV0bzsKIAogICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5jcmVhdGVWaWV3KHdlYlBh
Z2UtPnNpemUoKSwgYmFja2dyb3VuZENvbG9yLCBpc1RyYW5zcGFyZW50LAotICAgICAgICBJbnRT
aXplKCksIGN1cnJlbnRGaXhlZFZpc2libGVDb250ZW50UmVjdCwgc2hvdWxkVXNlRml4ZWRMYXlv
dXQsCisgICAgICAgIEludFNpemUoKSwgSW50UmVjdCgpLCBzaG91bGRVc2VGaXhlZExheW91dCwK
ICAgICAgICAgZGVmYXVsdFNjcm9sbGJhck1vZGUsIC8qIGxvY2sgKi8gc2hvdWxkSGlkZVNjcm9s
bGJhcnMsIGRlZmF1bHRTY3JvbGxiYXJNb2RlLCAvKiBsb2NrICovIHNob3VsZEhpZGVTY3JvbGxi
YXJzKTsKIAogICAgIGludCBtaW5pbXVtTGF5b3V0V2lkdGggPSB3ZWJQYWdlLT5taW5pbXVtTGF5
b3V0V2lkdGgoKTsKQEAgLTEyMjcsNyArMTIyNiw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogCiAjaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCiAgICAgaWYgKHNob3VsZFVzZUZpeGVkTGF5b3V0KSB7Ci0gICAgICAgIG1f
ZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnNldERlbGVnYXRlc1Njcm9sbGluZyhzaG91bGRV
c2VGaXhlZExheW91dCk7CiAgICAgICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnNl
dFBhaW50c0VudGlyZUNvbnRlbnRzKHNob3VsZFVzZUZpeGVkTGF5b3V0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDY0NGUzNzhjMWMxZjVkOGYyNzdhYjJjMmI4Mzhk
NzdmZTU0MWE0MTAuLjA2MmFkYWMzZTY5NmFjMTcwZTA3ODAwNjQ0ZDkzOWE1MDc4YThhYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcApAQCAtOTMsNiArOTMsMTAgQEAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkKICAgICAsIG1fZm9yY2VS
ZXBhaW50QXN5bmNDYWxsYmFja0lEKDApCiAgICAgLCBtX2FuaW1hdGlvbnNMb2NrZWQoZmFsc2Up
CiB7CisgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRTY3JvbGxpbmdD
b29yZGluYXRvckVuYWJsZWQodHJ1ZSk7CisgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0
aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAg
IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisKICAgICAvLyBDcmVhdGUgYSByb290IGxheWVyLgogICAg
IG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMsIHRoaXMpOwogICAgIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllciogY29vcmRpbmF0ZWRSb290TGF5ZXIgPSB0b0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7CkBAIC0xODYsMTggKzE5MCw0MiBA
QCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRz
TmVlZERpc3BsYXkoKQogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCi12b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJ
blJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK3ZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0KQogewotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIEludFJlY3QgY29udGVudHNSZWN0ID0gbV93
ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCktPndpbmRvd1RvQ29udGVudHMocmVjdCk7CisgICAgbV9u
b25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoY29udGVudHNS
ZWN0KTsKICAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVyKQotICAgICAgICBtX3BhZ2VPdmVybGF5
TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICAgICAgbV9wYWdlT3Zlcmxh
eUxheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoY29udGVudHNSZWN0KTsKIAogICAgIHNjaGVk
dWxlTGF5ZXJGbHVzaCgpOwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2Ny
b2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQordm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiB7Ci0gICAgLy8gRG8gbm90
aGluZyBiZWNhdXNlIHdlIHNjcm9sbCB1c2luZyBUaWxlZEJhY2tpbmdTdG9yZS4KKyAgICAvLyBB
IHplcm8gdHJhamVjdG9yeVZlY3RvciBpbmRpY2F0ZXMgdGhhdCB0aWxlcyBhbGwgYXJvdW5kIHRo
ZSB2aWV3cG9ydCBhcmUgcmVxdWVzdGVkLgorICAgIHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQoKSktPnNldFZpc2libGVDb250ZW50UmVj
dFRyYWplY3RvcnlWZWN0b3IoRmxvYXRQb2ludChzY3JvbGxEZWx0YS53aWR0aCgpLCBzY3JvbGxE
ZWx0YS5oZWlnaHQoKSkpOworCisgICAgc2V0VmlzaWJsZUNvbnRlbnRSZWN0KG1fd2ViUGFnZS0+
bWFpbkZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKSk7CisKKyAgICBpZiAoIW1fd2Vi
UGFnZS0+dXNlRml4ZWRMYXlvdXQoKSkKKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExh
eWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQor
Cit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0KQoreworICAgIGlmICh2aXNpYmxlQ29u
dGVudFJlY3QgPT0gbV92aXNpYmxlQ29udGVudHNSZWN0KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3Zpc2libGVDb250ZW50c1JlY3QgPSB2aXNpYmxlQ29udGVudFJlY3Q7CisKKyAgICBIYXNo
U2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBt
X3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgKCppdCktPnNldE5lZWRzVmlzaWJs
ZVJlY3RBZGp1c3RtZW50KCk7CisgICAgfQorCisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9
CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQpAQCAtMjQ1
LDYgKzI3Myw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpCiAgICAgICAgIG1fcGFnZU92ZXJsYXlM
YXllci0+c2V0U2l6ZShuZXdTaXplKTsKIAogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworCisg
ICAgLy8gRklYTUU6IFdoZW4gdmlld3BvcnQgc2l6ZSBpcyBjaGFuZ2VkLCB3ZSBzaG91bGQgY2Fs
bCBzZXRWaXNpYmxlQ29udGVudFJlY3QoKSwgYnV0IGN1cnJlbnRseSBDb29yZGluYXRlZCBHcmFw
aGljcyB1c2VzIHNpemVEaWRDaGFuZ2UoKSBhcyBhIGNvbnRlbnRzIHNpemUgY2hhbmdlZCBjYWxs
YmFjay4KIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZEluc3RhbGxQYWdl
T3ZlcmxheSgpCkBAIC03MjYsMzUgKzc1NiwxNCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6c2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCBjbwog
ICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHk6OlNldExheWVyQW5pbWF0aW9ucyhsYXllcklELCBhY3RpdmVBbmltYXRpb25zKSk7CiB9CiAK
LXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikK
LXsKLSAgICAvLyBBIHplcm8gdHJhamVjdG9yeVZlY3RvciBpbmRpY2F0ZXMgdGhhdCB0aWxlcyBh
bGwgYXJvdW5kIHRoZSB2aWV3cG9ydCBhcmUgcmVxdWVzdGVkLgotICAgIHRvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQoKSktPnNldFZpc2li
bGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7Ci0KLSAgICBi
b29sIGNvbnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29udGVudHNSZWN0
OwotICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKLSAgICAgICAgbV92aXNpYmxlQ29u
dGVudHNSZWN0ID0gcmVjdDsKLQotICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7
Ci0gICAgICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIq
Pjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQo
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAgIGlm
IChtX3dlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpIHsKLSAgICAgICAgLy8gUm91bmQgdGhlIHJl
Y3QgaW5zdGVhZCBvZiBlbmNsb3NpbmcgaXQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIHNpemUgc3Rh
eXMKLSAgICAgICAgLy8gdGhlIHNhbWUgd2hpbGUgcGFubmluZy4gVGhpcyBjYW4gaGF2ZSBuYXN0
eSBlZmZlY3RzIG9uIGxheW91dC4KLSAgICAgICAgbV93ZWJQYWdlLT5zZXRGaXhlZFZpc2libGVD
b250ZW50UmVjdChyb3VuZGVkSW50UmVjdChyZWN0KSk7Ci0gICAgfQotfQotCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsK
ICAgICBtX3Jvb3RMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAg
bV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5n
ZWQoKTsKICAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVyKQogICAgICAgICBtX3BhZ2VPdmVybGF5
TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOworCisgICAgc2V0VmlzaWJs
ZUNvbnRlbnRSZWN0KG1fd2ViUGFnZS0+bWFpbkZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJl
Y3QoKSk7CiB9CiAKIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggYjYwNTI4OTA5ZjdlYjliNjcx
M2MxZTk5NmE4Y2U4NzAxOTY1MzI0ZS4uZmI3OTMwOGZlZGQ2YTc1MWU3OWU2NTJkNWJlMjlmZTA4
ZDdmNzA2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9s
bERlbHRhKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCk7CiAgICAg
dmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAg
IHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1Np
emUpOwpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9h
dFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW5k
ZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworICAgIHZvaWQgc2V0VmlzaWJs
ZUNvbnRlbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIE9WRVJSSURFOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KaW5kZXggNjY3MWIzMjdmZWM2ZTE0ZTA3NDI2NzZk
OTQ5MGIzODRmZjFmOWFhNS4uMzc3MDcxOWRkMWFlMmY4ZGM1MTdiNzEzYzllY2JkNTI1ZDU3MmY0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNiBAQAogCiAjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0IExlZ2FjeVJlY2VpdmVyIHsKLSAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNv
cmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IHRy
YWplY3RvcnlWZWN0b3J5KQogICAgIFJlbmRlck5leHRGcmFtZSgpCiAgICAgUHVyZ2VCYWNraW5n
U3RvcmVzKCkKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmlu
ZGV4IDZjNWNiMmQxMzA5MTc3NmFlMzNlMzZjMzhiODQ1MDkwNzgzOGYwYWMuLjViYjljMWZiMDFh
ZDYyZjdlNGNlZTQxMmU3MThhNDNhNGUxNmNmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC03Myw3ICs3Myw2
IEBAIERyYXdpbmdBcmVhSW1wbDo6RHJhd2luZ0FyZWFJbXBsKFdlYlBhZ2UqIHdlYlBhZ2UsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgbV9hbHdheXNVc2VDb21wb3NpdGluZyA9IHRydWU7Ci0gICAgd2ViUGFnZS0+Y29y
ZVBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0U2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVkKHRydWUp
OwogI2VuZGlmCiAKICAgICBpZiAobV9hbHdheXNVc2VDb21wb3NpdGluZykKQEAgLTEyOCw3ICsx
MjcsNyBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6c2Nyb2xsKGNvbnN0IEludFJlY3QmIHNjcm9s
bFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9sbERlbAogICAgICAgICBBU1NFUlQobV9zY3JvbGxP
ZmZzZXQuaXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKG1fZGlydHlSZWdpb24uaXNFbXB0eSgp
KTsKIAotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50
cyhzY3JvbGxSZWN0KTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zY3JvbGxOb25Db21wb3Np
dGVkQ29udGVudHMoc2Nyb2xsUmVjdCwgc2Nyb2xsRGVsdGEpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5
ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaAppbmRleCAzOWZlZjgyNGZhMjk0YTViNWZlNmExM2ExNTY3NTkzNWZlNzM1YWM5Li5k
NzJhNjVlNDQ3MWM5MTE4MWVjYTVhYTY0OWM1MzUwNWJmNWVjYWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50
c05lZWREaXNwbGF5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21wb3NpdGVkQ29u
dGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc2Nyb2xsUmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21w
b3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZm9y
Y2VSZXBhaW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50
NjRfdCAvKmNhbGxiYWNrSUQqLykgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTVhNzE5
NDU1YTI3NTQwYTAwY2JhMmRkM2UxMGZlMDNmMDBhYWM5Mi4uM2QzNTAyMmY3Y2I2ZTczYjI4MGQ4
YzIyNDljYTJjNTIxMDRiNjFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtOTk3LDEzICs5OTcsNiBAQCB2b2lkIFdlYlBhZ2U6OnNldFNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUpCiB9CiAKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKLXZvaWQgV2ViUGFnZTo6c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBBU1NFUlQobV91c2VGaXhlZExheW91dCk7Ci0K
LSAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0KHJlY3QpOwotfQotCiB2b2lkIFdlYlBhZ2U6OnNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFu
Z2VkKCkKIHsKICAgICBBU1NFUlQobV91c2VGaXhlZExheW91dCk7CkBAIC0xMDI1LDIxICsxMDE4
LDE1IEBAIHZvaWQgV2ViUGFnZTo6c2VuZFZpZXdwb3J0QXR0cmlidXRlc0NoYW5nZWQoKQogCiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwogCi0gICAg
Ly8gSWYgbm8gbGF5b3V0IHdhcyBkb25lIHlldCBzZXQgY29udGVudEZpeGVkT3JpZ2luIHRvICgw
LDApLgotICAgIEludFBvaW50IGNvbnRlbnRGaXhlZE9yaWdpbiA9IHZpZXctPmRpZEZpcnN0TGF5
b3V0KCkgPyB2aWV3LT5maXhlZFZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgOiBJbnRQ
b2ludCgpOwotCi0gICAgLy8gUHV0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHRvIHRoZSB2aWV3cG9y
dCB3aWR0aCBhbmQgaGVpZ2h0LiBJbiBjc3MgdW5pdHMgaG93ZXZlci4KLSAgICAvLyBVc2UgRmxv
YXRTaXplIHRvIGF2b2lkIHRydW5jYXRlZCB2YWx1ZXMgZHVyaW5nIHNjYWxlLgotICAgIEZsb2F0
U2l6ZSBjb250ZW50Rml4ZWRTaXplID0gbV92aWV3U2l6ZTsKLQogI2lmIEVOQUJMRShDU1NfREVW
SUNFX0FEQVBUQVRJT04pCiAgICAgLy8gQ1NTIHZpZXdwb3J0IGRlc2NyaXB0b3JzIG1pZ2h0IGJl
IGFwcGxpZWQgdG8gYWxyZWFkeSBhZmZlY3RlZCB2aWV3cG9ydCBzaXplCiAgICAgLy8gaWYgdGhl
IHBhZ2UgZW5hYmxlcy9kaXNhYmxlcyBzdHlsZXNoZWV0cywgc28gbmVlZCB0byBrZWVwIGluaXRp
YWwgdmlld3BvcnQgc2l6ZS4KLSAgICB2aWV3LT5zZXRJbml0aWFsVmlld3BvcnRTaXplKHJvdW5k
ZWRJbnRTaXplKGNvbnRlbnRGaXhlZFNpemUpKTsKKyAgICB2aWV3LT5zZXRJbml0aWFsVmlld3Bv
cnRTaXplKG1fdmlld1NpemUpOwogI2VuZGlmCiAKLSAgICBjb250ZW50Rml4ZWRTaXplLnNjYWxl
KDEgLyBhdHRyLmluaXRpYWxTY2FsZSk7Ci0gICAgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3Qo
SW50UmVjdChjb250ZW50Rml4ZWRPcmlnaW4sIHJvdW5kZWRJbnRTaXplKGNvbnRlbnRGaXhlZFNp
emUpKSk7CisgICAgLy8gSWYgbm8gbGF5b3V0IHdhcyBkb25lIHlldCBzZXQgc2Nyb2xsUG9zaXRp
b24gdG8gKDAsMCkuCisgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB2aWV3LT5kaWRGaXJz
dExheW91dCgpID8gdmlldy0+c2Nyb2xsUG9zaXRpb24oKSA6IEludFBvaW50KCk7CisgICAgc2V0
U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwogCiAgICAgYXR0ci5pbml0aWFsU2NhbGUg
PSBtX3BhZ2UtPnZpZXdwb3J0QXJndW1lbnRzKCkuem9vbTsgLy8gUmVzZXRzIGF1dG8gKC0xKSBp
ZiBubyB2YWx1ZSB3YXMgc2V0IGJ5IHVzZXIuCiAKQEAgLTEyMzQsMTQgKzEyMjEsNiBAQCB2b2lk
IFdlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkKGZpeGVkKTsKICAgICBtX3BhZ2UtPnNldHRp
bmdzKCktPnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGZpeGVkKTsKLSAg
ICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0
b3IoZml4ZWQpOwotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IoZml4ZWQpOwotI2VuZGlmCi0KLSNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkgJiYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgLy8gRGVsZWdhdGVkIHNjcm9s
bGluZyB3aWxsIGJlIGVuYWJsZWQgd2hlbiB0aGUgRnJhbWVWaWV3IGlzIGNyZWF0ZWQgaWYgZml4
ZWQgbGF5b3V0IGlzIGVuYWJsZWQuCi0gICAgLy8gRW5zdXJlIHdlIGRvbid0IGRvIGFuaW1hdGVk
IHNjcm9sbGluZyBpbiB0aGUgV2ViUHJvY2VzcyBpbiB0aGF0IGNhc2UuCi0gICAgbV9wYWdlLT5z
ZXR0aW5ncygpLT5zZXRFbmFibGVTY3JvbGxBbmltYXRvcighZml4ZWQpOwogI2VuZGlmCiAKICAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3KCk7CkBAIC0xMjQ5LDcgKzEyMjgsNiBA
QCB2b2lkIFdlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAgICAgICAgIHJl
dHVybjsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHZpZXctPnNldERlbGVn
YXRlc1Njcm9sbGluZyhmaXhlZCk7CiAgICAgdmlldy0+c2V0UGFpbnRzRW50aXJlQ29udGVudHMo
Zml4ZWQpOwogI2VuZGlmCiAgICAgdmlldy0+c2V0VXNlRml4ZWRMYXlvdXQoZml4ZWQpOwpAQCAt
MTQxOCwxOSArMTM5NiwxNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzY2FsZWRT
bmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdQogICAgIHJldHVybiBz
bmFwc2hvdC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cGFnZURpZFNjcm9sbCgpCit2
b2lkIFdlYlBhZ2U6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3Np
dGlvbikKIHsKLSAgICBtX3VpQ2xpZW50LnBhZ2VEaWRTY3JvbGwodGhpcyk7Ci0KLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlBhZ2VEaWRTY3JvbGwoKSk7CisgICAgbV9wYWdlLT5t
YWluRnJhbWUoKS0+dmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CiB9
CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLXZvaWQgV2ViUGFnZTo6cGFnZURpZFJl
cXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvaW50KQordm9pZCBXZWJQYWdlOjpwYWdlRGlk
U2Nyb2xsKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvaW50KSk7CisgICAgbV91
aUNsaWVudC5wYWdlRGlkU2Nyb2xsKHRoaXMpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpQYWdlRGlkU2Nyb2xsKHNjcm9sbFBvc2l0aW9uKSk7CiB9Ci0jZW5kaWYKIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQogV2ViQ29udGV4dE1lbnUqIFdlYlBhZ2U6OmNvbnRleHRN
ZW51KCkKQEAgLTE5NzksNyArMTk1NSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJh
bnNpdGlvbigpCiB2b2lkIFdlYlBhZ2U6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oKQogewog
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIGlmIChtX21haW5GcmFtZS0+Y29yZUZy
YW1lKCktPnZpZXcoKS0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCisgICAgaWYgKHVzZUZpeGVkTGF5
b3V0KCkpCiAgICAgICAgIC8vIFdhaXQgdW50aWwgdGhlIFVJIHByb2Nlc3Mgc2VudCB1cyB0aGUg
dmlzaWJsZSByZWN0IGl0IHdhbnRzIHJlbmRlcmVkLgogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpKTsKICAgICBlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5N2Y0NmRi
NjA3OWUyMzgxN2YzYzI0OTllNzBkOWMzYWE4MTQzMmRhLi5jNjk1YzVhYzVhYzI3NzkwZmEzYWI4
YTg0MWUxYWEzYjIyNjdhYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTM3MywxMCArMzczLDkgQEAgcHVibGljOgogCiAgICAgTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIoKTsKIAotICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOworICAgIHZvaWQgc2V0U2Ny
b2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHBhZ2VEaWRT
Y3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKLSAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jik7Ci0gICAgdm9pZCBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CiAgICAgdm9pZCBzZW5kVmlld3BvcnRBdHRyaWJ1dGVzQ2hhbmdlZCgpOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMzNhZTNkYmI4MTJkNDdjNmEzYzhlYmEwY2Y1NjQ3ZjQ5
ZTY5MGQ2Zi4uMzVjNDBiOWEwMDNiYTAzZjkyOGFkOTM2MzNlZWQwMzMxMzQxN2E0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTU1LDYgKzU1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAjZW5kaWYKIAogICAgIFNjcm9sbEJ5KHVpbnQzMl90IHNjcm9sbERpcmVjdGlvbiwgdWlu
dDMyX3Qgc2Nyb2xsR3JhbnVsYXJpdHkpCisgICAgU2V0U2Nyb2xsUG9zaXRpb24oV2ViQ29yZTo6
SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24pCiAgICAgQ2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJl
YSgpCiAKICAgICBHb0JhY2sodWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0
R3RrLmNwcAppbmRleCAwMTdjZDBhNDlhOTliYzIzMzAwNjkzNzdlNjU4MDk1ZWU4ZTUzZjAzLi41
MzViZDNhZjRmM2E0ZTQxMWNiYTVkMjE4YmQ0MTU2MGQwMDVkZjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNldE5vbkNv
bXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IEludFJlY3QmCiAgICAgc2No
ZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2Nyb2xsTm9u
Q29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QpCit2b2lkIExheWVy
VHJlZUhvc3RHdGs6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBz
Y3JvbGxSZWN0LCBjb25zdCBJbnRTaXplJikKIHsKICAgICBzZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheUluUmVjdChzY3JvbGxSZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKaW5kZXgg
MTk1NTYzNDU2NTlmOTUzNTJjMTI1MzA1MjZhYzY5MjgxNWU2OWEzNy4uYTg5ZjdjY2VmOTU3YmFi
NTg1MDMxMjJhYmRhYjM5NWNhN2Q1MDM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKQEAgLTY2LDcgKzY2
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21wb3Np
dGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
Tm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRJbnN0YWxsUGFnZU92ZXJsYXkoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkVW5pbnN0YWxs
UGFnZU92ZXJsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLmgKaW5kZXggMTMxYTM2ZTE0NGRiMjA1YTY5M2Y4
NGQ2YTk4NjkwZGJlNDg4MDVjMy4uYjkwOTI5MDRiOTVhYjIxMWZmYmQ5YzViYjA4Y2FmMzE3Zjkz
ZTg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9M
YXllclRyZWVIb3N0TWFjLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9MYXllclRyZWVIb3N0TWFjLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRO
b25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbE5vbkNvbXBv
c2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0KSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9s
bERlbHRhKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgbmV3U2l6ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRldmljZU9yUGFnZVNjYWxl
RmFjdG9yQ2hhbmdlZCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLm1tCmluZGV4IGIxY2MxZjM5
NzBiNzI0YTk2ZmNlNjQyMDkwMzJkMTg2MzRkN2RmYzYuLmQxOTMwY2FkNTUxOTE3ZWFmZTgxNzdi
NTI1MjEzZDRjMmExZDg0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMubW0KQEAgLTEzMCw3ICsxMzAsNyBA
QCB2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNw
bGF5SW5SZWN0KGNvbnN0IEludFJlY3QmCiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAK
LXZvaWQgTGF5ZXJUcmVlSG9zdE1hYzo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIHNjcm9sbFJlY3QpCit2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNjcm9sbE5vbkNv
bXBvc2l0ZWRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRTaXpl
JikKIHsKICAgICBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChzY3Jv
bGxSZWN0KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191171</attachid>
            <date>2013-03-04 01:22:45 -0800</date>
            <delta_ts>2013-03-05 01:43:53 -0800</delta_ts>
            <desc>WIP by 95%. I&apos;ll separate this big changes into several bugs. </desc>
            <filename>0001-EFL-QT-WK2-Turn-on-ApplyPageScaleFactorInCompositor-.patch</filename>
            <type>text/plain</type>
            <size>113726</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSA4MGM4NzJjZGJjYmIwZTgyNGZhMjYzNGMzYmQxZGU2NDBjNjRjMTRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgMjYgRmViIDIwMTMgMTU6Mzk6NTUgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBbRUZMXVtRVF1bV0syXSBUdXJuIG9uIEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9y
CiBhbHdheXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEwNTYK
CltFRkxdW1dLMl0gQ29udmVydCBmcm9tIG5hdGl2ZSB2aWV3IHNpemUgdG8gZGlwIHZpZXcgc2l6
ZSBvbmx5IGluIEV3a1ZpZXcuCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTAxOTcKCltFRkxdIEV3a1ZpZXcgc2hvdWxkIGtlZXAgY3NzIHBvc2l0aW9uIGluc3RlYWQg
b2Ygc2Nyb2xsIHBvc2l0aW9uIGluIGRldmljZSBwaXhlbC4KaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExMDg0NwoKW1F0XSBDb29yZGluYXRlZCBHcmFwaGljczogc2Ny
b2xsIGFuaW1hdGlvbiBtYWtlcyBmaXhlZCBlbGVtZW50IHNoYWtlLgpodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MDMzCgpSZWZhY3RvciBQYWdlVmlld3BvcnRDb250
cm9sbGVyCgpbRUZMXVtRdF1bV0syXSBEb24ndCB1c2UgZGVsZWdhdGVzIHNjcm9sbGluZyBhbmQg
Zml4ZWQgdmlzaWJsZSBjb250ZW50IHJlY3QuCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTA0NTAKCndpcAoKaW5nCgpub24gY29tcG9zaXRlZCBzaXplIGNoYW5nZQot
LS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxNyArKysrCiAuLi4vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVk
LnR4dCB8ICAgNjkgKysrKysrKysrKysrKwogLi4ucG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVk
LXNjcm9sbC1leHBlY3RlZC50eHQgfCAgIDcwICsrKysrKysrKysrKysrCiAuLi4vZml4ZWQtcG9z
aXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVjdGVkLnR4dCB8ICAgNjkgKysrKysrKysrKysr
KwogLi4ucG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLXNjcm9sbC1leHBlY3RlZC50eHQgfCAg
IDcwICsrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMjUgKysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAtCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysrLS0tCiAuLi4vY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCAgICAgICB8ICAgMTMgKy0tCiAuLi4vdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oICB8ICAgIDYgKy0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIHwgICAgMiArLQog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAy
ICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91
Y2hFdmVudC5oICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVX
ZWJXaGVlbEV2ZW50LmggICAgICAgIHwgICAgMiArLQogLi4uL1dlYktpdDIvU2hhcmVkL2VmbC9O
YXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcCAgfCAgIDEyICstLQogLi4uL1dlYktpdDIvU2hhcmVk
L2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcCAgfCAgICA0ICstCiAuLi4vV2ViS2l0Mi9T
aGFyZWQvZWZsL05hdGl2ZVdlYldoZWVsRXZlbnRFZmwuY3BwICB8ICAgIDQgKy0KIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcCAgICAgIHwgICAyMCArKy0tCiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCAgICAgICB8ICAgNDIg
KysrKystLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCAgICAg
ICAgIHwgICAgOSArLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJw
YWdlLmNwcCAgfCAgIDE1ICsrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJwYWdlX3AuaCAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAgIHwgICAgNyArLQogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3X3BfcC5oICAgfCAgICA0ICstCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAgICB8ICAgIDcgKy0KIC4uLi9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oIHwgICAgMyArLQogLi4uL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCAgICAgICAgICAgICAgfCAgIDEzIC0tLQogLi4uL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggICAgICAgICAgICAgICAgfCAgICAzIC0KIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggICAgICAgIHwgICAgMSAt
CiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwICB8ICAg
IDggLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oICAg
IHwgICAgMyAtCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oICAgICAgICAg
ICAgICB8ICAgIDIgKy0KIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9s
bGVyLmNwcCAgIHwgICA3MCArKysrKysrKy0tLS0tLQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCAgfCAgICA4ICstCiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgICAgICB8ICAgMTggKystLQogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluICB8ICAgIDMgKy0KIC4u
Li9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAgICAgICAgIHwgICAgOCAr
LQogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCAgICAgICAgICAgfCAg
IDM3ICsrKy0tLS0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oICAgICAg
ICAgICAgIHwgICAgNiArLQogLi4uL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdC5j
cHAgICAgICAgICAgfCAgIDIyICsrKy0tCiAuLi4vVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRRdC5oICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFBhZ2VDbGllbnQuY3BwICAgICAgIHwgICAgNCArLQogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0UGFnZUNsaWVudC5oICAgICAgICAgfCAgICAyICstCiAuLi4vV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcCB8ICAgMjIgKystLS0KIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VTR05vZGUuY3BwICAgIHwgICAgMiArLQogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5oICAgICAgfCAgICAzICsK
IC4uLi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgIHwgICAx
NiArLS0KIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgICAgICAg
IHwgICAgNCArLQogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgICAgICAgICAgICAg
ICAgICAgfCAgIDc5ICsrKysrKysrKy0tLS0tLQogLi4uL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmggfCAgICA2ICstCiAuLi4vQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0Lm1lc3NhZ2VzLmluICAgICAgICAgICB8ICAgIDEgLQogLi4uL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgfCAgIDEyICstLQogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCAgfCAgICA0ICstCiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgICAgICB8ICAgNDUgKysrLS0t
LS0tCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oICAgICAgICB8
ICAgIDUgKy0KIC4uLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluIHwgICAgMSArCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3Rr
LmNwcCAgICB8ICAgIDIgKy0KIC4uLi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhv
c3RHdGsuaCAgICAgIHwgICAgMiArLQogLi4uL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJU
cmVlSG9zdE1hYy5oICAgICAgfCAgICAyICstCiAuLi4vV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9M
YXllclRyZWVIb3N0TWFjLm1tICAgICB8ICAgIDIgKy0KIDYxIGZpbGVzIGNoYW5nZWQsIDcyNCBp
bnNlcnRpb25zKCspLCAzMDcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1w
b3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9jb21wb3NpdGluZy9sYXllci1jcmVhdGlv
bi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtc2Nyb2xsLWV4cGVjdGVkLnR4dAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUu
MC13azIvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZp
ZXctc2NhbGVkLXNjcm9sbC1leHBlY3RlZC50eHQKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjUzNDgxOC4uZjg0YjNhNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAzLTAzICBIdWFuZyBEb25nc3VuZyAgPGx1eHRl
bGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtFRkxdW1FUXVtXSzJdIFR1cm4gb24gQXBw
bHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IgYWx3YXlzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExMDU2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2V0IFBhZ2VTY2FsZUZhY3RvckluQ29t
cG9zaXRvciB0byB0cnVlLCBzbyBwYWdlIHNjYWxlIGRvZXMgbm90CisgICAgICAgIGFmZmVjdCBs
YXllcidzIHNpemUgYW5kIGxvY2FsIHRyYW5zZm9ybS4gRUZMIGFuZCBRdCBtYW5hZ2UgZXhwZWN0
ZWQKKyAgICAgICAgcmVzdWx0cyBvZiBmb2xsb3dpbmcgdGVzdHMgYnkgdGhlbXNlbHZlcyBiZWNh
dXNlIG9ubHkgYm90aCBwb3J0cyB0dXJuIG9uCisgICAgICAgIEFwcGx5UGFnZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwtd2syL2Nv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxl
ZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC13azIvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLXNj
cm9sbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0LTUuMC13azIv
Y29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nh
bGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQtNS4wLXdrMi9j
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2Fs
ZWQtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTMtMDMtMDMgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxNDQ1NjcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwt
d2syL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3
LXNjYWxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL2NvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAyZmUyMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvY29tcG9zaXRp
bmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDY5IEBACitOb3Qgc2NhbGVkOgorKEdyYXBoaWNzTGF5ZXIKKyAg
KGJvdW5kcyA3ODUuMDAgMTAxNi4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgKGJvdW5kcyA3ODUuMDAgMTAxNi4wMCkKKyAgICAgIChjb250ZW50c09wYXF1ZSAx
KQorICAgICAgKGNoaWxkcmVuIDIKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAo
cG9zaXRpb24gNjAwLjAwIDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAg
ICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgKQorICAgICAgICAoR3JhcGhpY3NM
YXllcgorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICAgKGNvbnRlbnRz
T3BhcXVlIDEpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKK1NjYWxlPTAuNToK
KyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNzg1LjAwIDEwMTYuMDApCisgIChjaGlsZHJlbiAx
CisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgNzg1LjAwIDEwMTYuMDApCisgICAg
ICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChjaGlsZHJlbiA0CisgICAgICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgMTAwOC4wMCkKKyAgICAgICAgICAoYm91
bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgICAp
CisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDEwMDAuMDAgMC4w
MCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICAgIChjb250ZW50c09w
YXF1ZSAxKQorICAgICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBv
c2l0aW9uIDYwMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAg
ICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICAgIChjb250ZW50c09w
YXF1ZSAxKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCitTY2FsZT0xLjU6Ciso
R3JhcGhpY3NMYXllcgorICAoYm91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAoY2hpbGRyZW4gMQor
ICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAgICAg
KGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NM
YXllcgorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICAgKGNvbnRlbnRz
T3BhcXVlIDEpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9jb21wb3NpdGluZy9sYXllci1jcmVhdGlv
bi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtc2Nyb2xsLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLXNjcm9sbC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRlZDZhNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRp
b24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2NhbGVkLXNjcm9sbC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw3MCBAQAorTm90IHNjYWxlZDoKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMg
Nzg1LjAwIDEwMTYuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAg
IChib3VuZHMgNzg1LjAwIDEwMTYuMDApCisgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAg
IChjaGlsZHJlbiAyCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9u
IDYwMC4wMCAxMDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAg
ICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgKQorICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgIChwb3NpdGlvbiAwLjAwIDEwMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAw
IDEwLjAwKQorICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgICApCisgICAgICAp
CisgICAgKQorICApCispCitTY2FsZT0wLjU6CisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDgw
MC4wMCAxMDE2LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAo
Ym91bmRzIDgwMC4wMCAxMDE2LjAwKQorICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAo
Y2hpbGRyZW4gNAorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA4
LjAwIDEwMDguMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgICAo
Y29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgKQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAg
ICAgICAgIChwb3NpdGlvbiAxMDAwLjAwIDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAx
MC4wMCkKKyAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgKQorICAgICAgICAo
R3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAg
ICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAg
ICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAx
MC4wMCkKKyAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgKQorICAgICAgKQor
ICAgICkKKyAgKQorKQorU2NhbGU9MS41OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAu
MDAgMTAxNi4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJv
dW5kcyA4MDAuMDAgMTAxNi4wMCkKKyAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgKGNo
aWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAoYm91bmRzIDEwLjAw
IDEwLjAwKQorICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgICApCisgICAgICAp
CisgICAgKQorICApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUu
MC13azIvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZp
ZXctc2NhbGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIv
Y29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctc2Nh
bGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDJm
ZTIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9j
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2Fs
ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjkgQEAKK05vdCBzY2FsZWQ6CisoR3JhcGhpY3NM
YXllcgorICAoYm91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFw
aGljc0xheWVyCisgICAgICAoYm91bmRzIDc4NS4wMCAxMDE2LjAwKQorICAgICAgKGNvbnRlbnRz
T3BhcXVlIDEpCisgICAgICAoY2hpbGRyZW4gMgorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAg
ICAgICAgIChwb3NpdGlvbiA2MDAuMDAgMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEw
LjAwKQorICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgICApCisgICAgICAgIChH
cmFwaGljc0xheWVyCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgICAo
Y29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorU2Nh
bGU9MC41OgorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA3ODUuMDAgMTAxNi4wMCkKKyAgKGNo
aWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA3ODUuMDAgMTAxNi4w
MCkKKyAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgKGNoaWxkcmVuIDQKKyAgICAgICAg
KEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gOC4wMCAxMDA4LjAwKQorICAgICAg
ICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisg
ICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gMTAw
MC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICAgKGNv
bnRlbnRzT3BhcXVlIDEpCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAg
ICAgICAocG9zaXRpb24gNjAwLjAwIDAuMDApCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4w
MCkKKyAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgKQorICAgICAgICAoR3Jh
cGhpY3NMYXllcgorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICAgKGNv
bnRlbnRzT3BhcXVlIDEpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKK1NjYWxl
PTEuNToKKyhHcmFwaGljc0xheWVyCisgIChib3VuZHMgNzg1LjAwIDEwMTYuMDApCisgIChjaGls
ZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgNzg1LjAwIDEwMTYuMDAp
CisgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChH
cmFwaGljc0xheWVyCisgICAgICAgICAgKGJvdW5kcyAxMC4wMCAxMC4wMCkKKyAgICAgICAgICAo
Y29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL2NvbXBvc2l0aW5nL2xh
eWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LXNjYWxlZC1zY3JvbGwtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9jb21wb3NpdGluZy9s
YXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtc2Nyb2xsLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGVkNmE0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9jb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1zY2FsZWQtc2Ny
b2xsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcwIEBACitOb3Qgc2NhbGVkOgorKEdyYXBoaWNz
TGF5ZXIKKyAgKGJvdW5kcyA3ODUuMDAgMTAxNi4wMCkKKyAgKGNoaWxkcmVuIDEKKyAgICAoR3Jh
cGhpY3NMYXllcgorICAgICAgKGJvdW5kcyA3ODUuMDAgMTAxNi4wMCkKKyAgICAgIChjb250ZW50
c09wYXF1ZSAxKQorICAgICAgKGNoaWxkcmVuIDIKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAg
ICAgICAgICAocG9zaXRpb24gNjAwLjAwIDEwMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAw
IDEwLjAwKQorICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgICApCisgICAgICAg
IChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDAuMDAgMTAwLjAwKQorICAgICAg
ICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisg
ICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKK1NjYWxlPTAuNToKKyhHcmFwaGljc0xh
eWVyCisgIChib3VuZHMgODAwLjAwIDEwMTYuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBo
aWNzTGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDEwMTYuMDApCisgICAgICAoY29udGVudHNP
cGFxdWUgMSkKKyAgICAgIChjaGlsZHJlbiA0CisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAg
ICAgICAgKHBvc2l0aW9uIDguMDAgMTAwOC4wMCkKKyAgICAgICAgICAoYm91bmRzIDEwLjAwIDEw
LjAwKQorICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgICApCisgICAgICAgIChH
cmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDEwMDAuMDAgMC4wMCkKKyAgICAgICAg
ICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAg
ICAgICApCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDYwMC4w
MCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICAgKGNvbnRl
bnRzT3BhcXVlIDEpCisgICAgICAgICkKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAg
ICAoYm91bmRzIDEwLjAwIDEwLjAwKQorICAgICAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAg
ICAgICApCisgICAgICApCisgICAgKQorICApCispCitTY2FsZT0xLjU6CisoR3JhcGhpY3NMYXll
cgorICAoYm91bmRzIDgwMC4wMCAxMDE2LjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCAxMDE2LjAwKQorICAgICAgKGNvbnRlbnRzT3Bh
cXVlIDEpCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAg
ICAgIChib3VuZHMgMTAuMDAgMTAuMDApCisgICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisg
ICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFjZTk5N2Uu
LmIxNDIzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMy0wMi0yNiAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbRUZMXVtRdF0g
Q29vcmRpbmF0ZWQgR3JhcGhpY3M6IHNjcm9sbCBhbmltYXRpb24gbWFrZXMgZml4ZWQgZWxlbWVu
dCBzaGFrZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwOTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKSBuZWVk
cyBhIHNjcm9sbCBwb3NpdGlvbgorICAgICAgICB0byBhZGp1c3QgdGhlIHBvc2l0aW9uIG9mIGZp
eGVkIGVsZW1lbnQuIEN1cnJlbnRseSwKKyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
IHNvbWV0aW1lcyB1c2VzIGEgc3RhbGUgc2Nyb2xsIHBvc2l0aW9uLiBDbGllbnRzCisgICAgICAg
IHRoYXQgY2FsbCBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpIGFscmVhZHkga25vdyBhIHNjcm9s
bCBwb3NpdGlvbgorICAgICAgICBiZWNhdXNlIHRoZXkgY2FuIGdlbmVyYXRlIGEgbWF0cml4LCBz
byB0aGlzIHBhdGNoIG1ha2UgY2xpZW50cyBjYWxsCisgICAgICAgIHBhaW50VG9DdXJyZW50R0xD
b250ZXh0KCkgd2l0aCBhIHNjcm9sbCBwb3NpdGlvbi4KKworICAgICAgICBUaGlzIHBhdGNoIGNh
biBvbmx5IGJlIHRlc3RlZCBtYW51YWxseSBzaW5jZSB0aGVyZSBpcyBubyBhdXRvbWF0ZWQKKyAg
ICAgICAgdGVzdGluZyBmYWNpbGl0aWVzIGZvciBpbi1tb3Rpb24gdG91Y2guCisgICAgICAgIFRl
c3Q6IE1hbnVhbFRlc3RzL2ZpeGVkLXBvc2l0aW9uLmh0bWwKKyAgICAgICAgICAgICAgTWFudWFs
VGVzdHMvbmVzdGVkLWZpeGVkLXBvc2l0aW9uLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVu
dEdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmFkanVzdFBvc2l0aW9uRm9yRml4ZWRMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoKKyAgICAg
ICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisKIDIwMTMtMDMtMDMgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgcjE0NDU2NS4g
UmV2ZXJ0ZWQgcjE0NDUzMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjM5OTE3Mi4uNjc5NjMy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc5LDcgKzc5LDYgQEAgX19aTjdXZWJDb3JlMTBS
ZW5kZXJWaWV3MTBjb21wb3NpdG9yRXYKIF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzE3c2V0VXNl
Rml4ZWRMYXlvdXRFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MThzZXRGaXhlZExheW91dFNp
emVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIwc2V0Q2FuSGF2ZVNj
cm9sbGJhcnNFYgotX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxp
bmdFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEVi
YgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjR3aW5kb3dSZXNpemVyUmVjdENoYW5nZWRFdgog
X19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3OGFkZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySU5TXzZX
aWRnZXRFRUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhODRlNTZlLi4xYzA4NjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMTkyLDEwICsxMTkyLDEwIEBAIHZv
aWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAKICAgICAgICAgICAgICAg
ICAgICAgbV9maXJzdExheW91dCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBtX2ZpcnN0
TGF5b3V0Q2FsbGJhY2tQZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHVz
ZUZpeGVkTGF5b3V0KCkgJiYgIWZpeGVkTGF5b3V0U2l6ZSgpLmlzRW1wdHkoKSAmJiBkZWxlZ2F0
ZXNTY3JvbGxpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fbGFzdFZpZXdwb3J0U2l6
ZSA9IGZpeGVkTGF5b3V0U2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGlmIChjYW5IYXZlU2Nyb2xsYmFycygpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9sYXN0Vmlld3BvcnRTaXplID0gdmlzaWJsZUNvbnRlbnRSZWN0KEluY2x1ZGVTY3Jv
bGxiYXJzKS5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fbGFzdFZpZXdwb3J0U2l6ZSA9IHZpc2libGVDb250ZW50UmVjdChFeGNsdWRl
U2Nyb2xsYmFycykuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBtX2xhc3Rab29tRmFjdG9y
ID0gcm9vdC0+c3R5bGUoKS0+em9vbSgpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIFNldCB0
aGUgaW5pdGlhbCB2TW9kZSB0byBBbHdheXNPbiBpZiB3ZSdyZSBhdXRvLgpAQCAtMjY0NSwxMCAr
MjY0NSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpCiAKICAg
ICBpZiAocmVuZGVyVmlldyAmJiAhcmVuZGVyVmlldy0+cHJpbnRpbmcoKSkgewogICAgICAgICBJ
bnRTaXplIGN1cnJlbnRTaXplOwotICAgICAgICBpZiAodXNlRml4ZWRMYXlvdXQoKSAmJiAhZml4
ZWRMYXlvdXRTaXplKCkuaXNFbXB0eSgpICYmIGRlbGVnYXRlc1Njcm9sbGluZygpKQotICAgICAg
ICAgICAgY3VycmVudFNpemUgPSBmaXhlZExheW91dFNpemUoKTsKLSAgICAgICAgZWxzZQorICAg
ICAgICBpZiAoY2FuSGF2ZVNjcm9sbGJhcnMoKSkKICAgICAgICAgICAgIGN1cnJlbnRTaXplID0g
dmlzaWJsZUNvbnRlbnRSZWN0KEluY2x1ZGVTY3JvbGxiYXJzKS5zaXplKCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGN1cnJlbnRTaXplID0gdmlzaWJsZUNvbnRlbnRSZWN0KEV4Y2x1ZGVT
Y3JvbGxiYXJzKS5zaXplKCk7CiAgICAgICAgIGZsb2F0IGN1cnJlbnRab29tRmFjdG9yID0gcmVu
ZGVyVmlldy0+c3R5bGUoKS0+em9vbSgpOwogICAgICAgICBib29sIHJlc2l6ZWQgPSAhbV9maXJz
dExheW91dCAmJiAoY3VycmVudFNpemUgIT0gbV9sYXN0Vmlld3BvcnRTaXplIHx8IGN1cnJlbnRa
b29tRmFjdG9yICE9IG1fbGFzdFpvb21GYWN0b3IpOwogICAgICAgICBtX2xhc3RWaWV3cG9ydFNp
emUgPSBjdXJyZW50U2l6ZTsKQEAgLTM4ODYsMjEgKzM4ODYsMTUgQEAgYm9vbCBGcmFtZVZpZXc6
OndoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIGlmIChkZWxlZ2F0ZXNTY3JvbGxpbmcoKSkg
ewotICAgICAgICBJbnRTaXplIG9mZnNldCA9IHNjcm9sbE9mZnNldCgpOwotICAgICAgICBJbnRT
aXplIG5ld09mZnNldCA9IEludFNpemUob2Zmc2V0LndpZHRoKCkgLSB3aGVlbEV2ZW50LmRlbHRh
WCgpLCBvZmZzZXQuaGVpZ2h0KCkgLSB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKLSAgICAgICAgaWYg
KG9mZnNldCAhPSBuZXdPZmZzZXQpIHsKLSAgICAgICAgICAgIFNjcm9sbFZpZXc6OnNjcm9sbFRv
KG5ld09mZnNldCk7Ci0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKLSAgICAg
ICAgICAgIGZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0
KCk7Ci0gICAgICAgIH0KKyAgICBpZiAoZGVsZWdhdGVzU2Nyb2xsaW5nKCkgfHwgIWNhbkhhdmVT
Y3JvbGxiYXJzKCkpIHsKKyAgICAgICAgSW50UG9pbnQgcG9zaXRpb24gPSBzY3JvbGxQb3NpdGlv
bigpOworICAgICAgICBJbnRQb2ludCBuZXdQb3NpdGlvbiA9IHBvc2l0aW9uIC0gSW50U2l6ZSh3
aGVlbEV2ZW50LmRlbHRhWCgpLCB3aGVlbEV2ZW50LmRlbHRhWSgpKTsKKyAgICAgICAgbmV3UG9z
aXRpb24gPSBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKG5ld1Bvc2l0aW9uKTsKKyAg
ICAgICAgaWYgKHBvc2l0aW9uICE9IG5ld1Bvc2l0aW9uKQorICAgICAgICAgICAgc2Nyb2xsVG8o
SW50U2l6ZShuZXdQb3NpdGlvbi54KCksIG5ld1Bvc2l0aW9uLnkoKSkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICAvLyBXZSBkb24ndCBhbGxvdyBtb3VzZSB3aGVlbGluZyB0
byBoYXBwZW4gaW4gYSBTY3JvbGxWaWV3IHRoYXQgaGFzIGhhZCBpdHMgc2Nyb2xsYmFycyBleHBs
aWNpdGx5IGRpc2FibGVkLgotICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCiAjaWYgIVBMQVRGT1JNKFdYKQogICAgIGlmIChwbGF0Zm9ybVdpZGdl
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDg2MjQ1MTMuLmM3NTNmNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6fkNv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpCiB7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFJlY3QmIGNsaXBSZWN0LCBUZXh0
dXJlTWFwcGVyOjpQYWludEZsYWdzIFBhaW50RmxhZ3MpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCwgY29u
c3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3Mg
UGFpbnRGbGFncykKIHsKICAgICBpZiAoIW1fdGV4dHVyZU1hcHBlcikgewogICAgICAgICBtX3Rl
eHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVyOjpjcmVhdGUoVGV4dHVyZU1hcHBlcjo6T3BlbkdM
TW9kZSk7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpw
YWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgQVNT
RVJUKG1fdGV4dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpID09IFRleHR1cmVNYXBwZXI6
Ok9wZW5HTE1vZGUpOwogICAgIHN5bmNSZW1vdGVDb250ZW50KCk7CiAKLSAgICBhZGp1c3RQb3Np
dGlvbkZvckZpeGVkTGF5ZXJzKCk7CisgICAgYWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycyhz
Y3JvbGxQb3NpdGlvbik7CiAgICAgR3JhcGhpY3NMYXllciogY3VycmVudFJvb3RMYXllciA9IHJv
b3RMYXllcigpOwogICAgIGlmICghY3VycmVudFJvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwpA
QCAtMTY4LDExICsxNjgsNiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRU
b0dyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcAogICAgIG1fdGV4dHVy
ZU1hcHBlci0+c2V0R3JhcGhpY3NDb250ZXh0KDApOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9z
aXRpb24pCi17Ci0gICAgbV9zY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOwotfQotCiB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlVmlld3BvcnQoKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0xODAsNyArMTc1LDcgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVZpZXdwb3J0KCkKICAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZVZpZXdwb3J0KCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphZGp1c3RQ
b3NpdGlvbkZvckZpeGVkTGF5ZXJzKCkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjph
ZGp1c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0
aW9uKQogewogICAgIGlmIChtX2ZpeGVkTGF5ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTg4LDcgKzE4Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphZGp1
c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKCkKICAgICAvLyBGaXhlZCBsYXllciBwb3NpdGlvbnMg
YXJlIHVwZGF0ZWQgYnkgdGhlIHdlYiBwcm9jZXNzIHdoZW4gd2UgdXBkYXRlIHRoZSB2aXNpYmxl
IGNvbnRlbnRzIHJlY3QgLyBzY3JvbGwgcG9zaXRpb24uCiAgICAgLy8gSWYgd2Ugd2FudCB0aG9z
ZSBsYXllcnMgdG8gZm9sbG93IGFjY3VyYXRlbHkgdGhlIHZpZXdwb3J0IHdoZW4gd2UgbW92ZSBi
ZXR3ZWVuIHRoZSB3ZWIgcHJvY2VzcyB1cGRhdGVzLCB3ZSBoYXZlIHRvIG9mZnNldAogICAgIC8v
IHRoZW0gYnkgdGhlIGRlbHRhIGJldHdlZW4gdGhlIGN1cnJlbnQgcG9zaXRpb24gYW5kIHRoZSBw
b3NpdGlvbiBvZiB0aGUgdmlld3BvcnQgdXNlZCBmb3IgdGhlIGxhc3QgbGF5b3V0LgotICAgIEZs
b2F0U2l6ZSBkZWx0YSA9IG1fc2Nyb2xsUG9zaXRpb24gLSBtX3JlbmRlcmVkQ29udGVudHNTY3Jv
bGxQb3NpdGlvbjsKKyAgICBGbG9hdFNpemUgZGVsdGEgPSBzY3JvbGxQb3NpdGlvbiAtIG1fcmVu
ZGVyZWRDb250ZW50c1Njcm9sbFBvc2l0aW9uOwogCiAgICAgTGF5ZXJSYXdQdHJNYXA6Oml0ZXJh
dG9yIGVuZCA9IG1fZml4ZWRMYXllcnMuZW5kKCk7CiAgICAgZm9yIChMYXllclJhd1B0ck1hcDo6
aXRlcmF0b3IgaXQgPSBtX2ZpeGVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApp
bmRleCA5YzkyMWE3Li5lZjkyZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC03OSw5ICs3OSw4IEBAIHB1YmxpYzoKICAg
ICB9OwogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmVDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUoKTsKLSAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIFRleHR1cmVNYXBwZXI6OlBhaW50
RmxhZ3MgPSAwKTsKKyAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9p
bnQmIHNjcm9sbFBvc2l0aW9uLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CiAgICAg
dm9pZCBwYWludFRvR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Kik7Ci0g
ICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCiAgICAgdm9pZCBjcmVhdGVDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklE
LCBjb25zdCBJbnRTaXplJiwgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KTsKICAgICB2b2lk
IHN5bmNDYW52YXMoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CkBA
IC0xNDEsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0xheWVyKiByb290TGF5ZXIo
KSB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQogCiAgICAgdm9pZCBzeW5jUmVtb3RlQ29u
dGVudCgpOwotICAgIHZvaWQgYWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycygpOworICAgIHZv
aWQgYWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycyhjb25zdCBGbG9hdFBvaW50Jik7CiAKICAg
ICAvLyBSZWltcGxlbWVudGF0aW9ucyBmcm9tIEdyYXBoaWNzTGF5ZXJDbGllbnQuCiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRv
dWJsZSkgeyB9CkBAIC0yMDMsNyArMjAyLDYgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hN
YXA8Q29vcmRpbmF0ZWRMYXllcklELCBHcmFwaGljc0xheWVyKj4gTGF5ZXJSYXdQdHJNYXA7CiAg
ICAgTGF5ZXJSYXdQdHJNYXAgbV9maXhlZExheWVyczsKICAgICBDb29yZGluYXRlZExheWVySUQg
bV9yb290TGF5ZXJJRDsKLSAgICBGbG9hdFBvaW50IG1fc2Nyb2xsUG9zaXRpb247CiAgICAgRmxv
YXRQb2ludCBtX3JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbjsKICAgICBib29sIG1fYW5p
bWF0aW9uc0xvY2tlZDsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmlu
ZGV4IDg5Y2Y4MmIuLmQzM2FkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yMjIwLDcgKzIyMjAsNyBAQCBib29sIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bmVlZHNDb250ZW50c0NvbXBvc2l0aW5nTGF5ZXIoY29uc3Qg
UmVuZGVyTGF5ZXIqIGxheQogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzU2Ny
b2xsTGF5ZXIoUm9vdExheWVyQXR0YWNobWVudCBhdHRhY2htZW50KSBjb25zdAogewogICAgIC8v
IFRoaXMgYXBwbGllcyB3aGVuIHRoZSBhcHBsaWNhdGlvbiBVSSBoYW5kbGVzIHNjcm9sbGluZywg
aW4gd2hpY2ggY2FzZSBSZW5kZXJMYXllckNvbXBvc2l0b3IgZG9lc24ndCBuZWVkIHRvIG1hbmFn
ZSBpdC4KLSAgICBpZiAobV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKS0+ZGVsZWdhdGVzU2Nyb2xs
aW5nKCkpCisgICAgaWYgKCFtX3JlbmRlclZpZXctPmZyYW1lVmlldygpLT5jYW5IYXZlU2Nyb2xs
YmFycygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBXZSBuZWVkIHRvIGhhbmRs
ZSBvdXIgb3duIHNjcm9sbGluZyBpZiB3ZSdyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0NTRkZTljLi5kZmM2
OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA1IEBACisyMDEzLTAyLTI2ICBIdWFuZyBEb25n
c3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtFRkxdW1F0XSBDb29y
ZGluYXRlZCBHcmFwaGljczogc2Nyb2xsIGFuaW1hdGlvbiBtYWtlcyBmaXhlZCBlbGVtZW50IHNo
YWtlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
MDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW1l
bmQgRUZMIGFuZCBRdCBwbGF0Zm9ybSBjb2RlIHRvIGNhbGwgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dCgpCisgICAgICAgIHdpdGggYSBzY3JvbGwgcG9z
aXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHA6CisgICAgICAgIChRUmF3V2ViVmlld1By
aXZhdGU6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpwYWlu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmg6Cisg
ICAgICAgIChRUmF3V2ViVmlld1ByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldFZpc2libGVDb250ZW50
c1JlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29udGVudHNT
R05vZGU6OnJlbmRlcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5o
OgorICAgICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VTR05vZGU6OnNjcm9sbFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UXRXZWJQYWdlU0dOb2RlOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAg
ICAgIChRdFdlYlBhZ2VTR05vZGUpOgorCisyMDEzLTAyLTI1ICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtFRkxdIEV3a1ZpZXcgc2hvdWxkIGtl
ZXAgY3NzIHBvc2l0aW9uIGluc3RlYWQgb2Ygc2Nyb2xsIHBvc2l0aW9uIGluIGRldmljZSBwaXhl
bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDg0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJl
IGFyZSBidWdzIHRoYXQgc29tZSBjb2RlIGV4cGVjdCB0aGF0IEV3a1ZpZXc6OnBhZ2VQb3NpdGlv
bigpIHJldHVybnMgY3NzCisgICAgICAgIHBvc2l0aW9uIHdoaWxlIG90aGVycyBleHBlY3QgdGhh
dCBpdCByZXR1cm5zIHNjcm9sbCBwb3NpdGlvbiBpbiBkZXZpY2UgcGl4ZWwuCisgICAgICAgIElu
IGFkZGl0aW9uLCBzb21lIGNvZGUgY2FsbCBFd2tWaWV3OjpzZXRQYWdlUG9zaXRpb24oKSB3aXRo
IGNzcyBwb3NpdGlvbiB3aGlsZQorICAgICAgICBvdGhlcnMgY2FsbCBpdCB3aXRoIHNjcm9sbCBw
b3NpdGlvbiBpbiBkZXZpY2UgcGl4ZWwuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBhbGwg
Y29kZSB1c2Ugc2V0UGFnZVBvc2l0aW9uKCkgYW5kIHBhZ2VQb3NpdGlvbigpIHdpdGggY3NzCisg
ICAgICAgIHBvc2l0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDo6c2V0Vmlld3BvcnRQb3NpdGlvbik6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6cGFpbnRUb0Nh
aXJvU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnRyYW5zZm9ybVRvU2NlbmUp
OgorCisyMDEzLTAyLTI1ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0
PgorCisgICAgICAgIFtFRkxdW1dLMl0gQ29udmVydCBmcm9tIG5hdGl2ZSB2aWV3IHNpemUgdG8g
ZGlwIHZpZXcgc2l6ZSBvbmx5IGluIEV3a1ZpZXcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEZXZpY2Ugc2NhbGUgaXMgYSBwcm9wZXJ0eSBvZiB0aGUg
cGh5c2ljYWwgZGlzcGxheSwgc28gb25seSBFd2tWaWV3CisgICAgICAgIHNob3VsZCBkZWFsIHdp
dGggY29udmVydGluZyBuYXRpdmUgdmlldyBzaXplIHRvIGRpcCAoRGVuc2l0eSBJbmRlcGVuZGVu
dCBQaXhlbCkKKyAgICAgICAgdmlldyBzaXplLiBJdCBpbmNyZWFzZXMgcmVhZGFiaWxpdHkgYmVj
YXVzZSB3ZSBjYW4gcmVnYXJkIGEgdmlldyBzaXplIGluCisgICAgICAgIG90aGVyIGNsYXNzZXMg
KGUuZy4gV2ViVmlldywgUGFnZVZpZXdwb3J0Q29udHJvbGxlciwgV2ViUGFnZSkgZXhjZXB0IGZv
cgorICAgICAgICBFd2tWaWV3IGFzIGRpcCBzaXplLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpzZXRTaXplKToKKyAgICAgICAg
KEV3a1ZpZXc6OnNpemUpOgorICAgICAgICAoRXdrVmlldzo6bmF0aXZlU2l6ZSk6CisgICAgICAg
IChFd2tWaWV3OjpzY2hlZHVsZVVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoRXdrVmlldzo6Y3Jl
YXRlR0xTdXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6Cisg
ICAgICAgIChFd2tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpwYWludFRvQ3VycmVudEdMQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXc6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6CisKKzIwMTMtMDMtMDMg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW0VG
TF1bUVRdW1dLMl0gVHVybiBvbiBBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvciBhbHdh
eXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEw
NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVu
IHR1cm5pbmcgb24gQXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IsIGxheW91dCBpcyBu
b3QKKyAgICAgICAgaW1wYWN0ZWQgYnkgYSBjaGFuZ2luZyBwYWdlIHNjYWxlLiBFRkwgYW5kIFF0
IFdLMiBhcmUgbW9iaWxlIG9yaWVudGVkLAorICAgICAgICBzbyB0dXJuaW5nIG9uIEFwcGx5UGFn
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yIGlzIG5hdHVyYWwuCisKKyAgICAgICAgQ3VycmVudGx5
LCBFRkwgYW5kIFF0IHR1cm4gb24gQXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Igd2hl
bgorICAgICAgICB1c2luZyBmaXhlZCBsYXlvdXQsIGJ1dCBBcHBseVBhZ2VTY2FsZUZhY3Rvcklu
Q29tcG9zaXRvciBpcyBub3QgcmVsYXRlZAorICAgICAgICB0byBmaXhlZCBsYXlvdXQuIFNvIHRo
aXMgcGF0Y2ggdHVybnMgb24gQXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IKKyAgICAg
ICAgYWx3YXlzLgorCisgICAgICAgIEN1cnJlbnRseSwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIHBy
b2JsZW0gdGhhdCB0aGlzIHBhdGNoIHJlc29sdmVzOgorICAgICAgICBBIHBsYXRmb3JtIFdlYlZp
ZXcgbXVzdCBkZWFscyB3aXRoIHBhZ2Ugc2NhbGUgZmFjdG9yIGRpZmZlcmVudGx5IGNhc2UgYnkK
KyAgICAgICAgY2FzZS4gSW4gZGV0YWlsLCB3aGVuIHR1cm5pbmcgb2ZmIEFwcGx5UGFnZVNjYWxl
RmFjdG9ySW5Db21wb3NpdG9yLAorICAgICAgICBXZWJWaWV3IG11c3Qgbm90IGFwcGx5IHBhZ2Ug
c2NhbGUgdG8gdHJhbnNmb3JtIG1hdHJpeCB0aGF0CisgICAgICAgIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZSB1c2VzIHRvIGRyYXcgY29udGVudHMuIEl0IG1lYW5zIHRoYXQgY3VycmVudGx5Cisg
ICAgICAgIHdlIGhhdmUgYSBvdmVyc2NhbGUgYnVnLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VXNlRml4ZWRMYXlvdXQpOgorCiAyMDEzLTAy
LTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAg
IFtFRkxdW1FUXVtXSzJdIFR1cm4gb24gQXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRv
ciBhbHdheXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91
Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaApp
bmRleCBjNjNkMWNmLi4xN2QwZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVX
ZWJUb3VjaEV2ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFFU
KQogICAgIGV4cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBj
b25zdCBRVHJhbnNmb3JtJiBmcm9tSXRlbVRyYW5zZm9ybSk7CiAjZWxpZiBQTEFURk9STShFRkwp
Ci0gICAgTmF0aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWlu
YV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2
aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEV3
a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBjb25zdCBFdmFzX01vZGlmaWVy
KiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYlZpZXcsIGNvbnN0IFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZl
V2ViV2hlZWxFdmVudC5oCmluZGV4IGZhZTllOTYuLjRjMmFjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAgICAgTmF0aXZlV2ViV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jik7CiAg
ICAgTmF0aXZlV2ViV2hlZWxFdmVudChHZGtFdmVudCopOwogI2VsaWYgUExBVEZPUk0oRUZMKQot
ICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCosIGNv
bnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuKTsKKyAgICBOYXRpdmVXZWJXaGVlbEV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm0mIHRvV2ViVmlldywgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0Rl
dmljZVNjcmVlbik7CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYk1vdXNlRXZlbnRFZmwuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJNb3VzZUV2ZW50RWZsLmNwcAppbmRleCAwYmE0
NGJmLi4zZTgxYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2
ZVdlYk1vdXNlRXZlbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0
aXZlV2ViTW91c2VFdmVudEVmbC5jcHAKQEAgLTMwLDIwICszMCwyMCBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25z
dCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm0mIHRvV2ViQ29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0Rl
dmljZVNjcmVlbikKLSAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVX
ZWJNb3VzZUV2ZW50KGV2ZW50LCB0b1dlYkNvbnRlbnQsIHRvRGV2aWNlU2NyZWVuKSkKK05hdGl2
ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3Vz
ZV9Eb3duKiBldmVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYlZpZXcs
IGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCisgICAgOiBX
ZWJNb3VzZUV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCwg
dG9XZWJWaWV3LCB0b0RldmljZVNjcmVlbikpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQog
ewogfQogCi1OYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2
YXNfRXZlbnRfTW91c2VfVXAqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0m
IHRvV2ViQ29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNj
cmVlbikKLSAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3Vz
ZUV2ZW50KGV2ZW50LCB0b1dlYkNvbnRlbnQsIHRvRGV2aWNlU2NyZWVuKSkKK05hdGl2ZVdlYk1v
dXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCog
ZXZlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJWaWV3LCBjb25zdCBX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuKQorICAgIDogV2ViTW91c2VF
dmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIHRvV2ViVmll
dywgdG9EZXZpY2VTY3JlZW4pKQogICAgICwgbV9uYXRpdmVFdmVudChldmVudCkKIHsKIH0KIAot
TmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2ZW50
X01vdXNlX01vdmUqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2Vi
Q29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbikK
LSAgICA6IFdlYk1vdXNlRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50
KGV2ZW50LCB0b1dlYkNvbnRlbnQsIHRvRGV2aWNlU2NyZWVuKSkKK05hdGl2ZVdlYk1vdXNlRXZl
bnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldmVu
dCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYlZpZXcsIGNvbnN0IFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCisgICAgOiBXZWJNb3VzZUV2ZW50
KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChldmVudCwgdG9XZWJWaWV3LCB0
b0RldmljZVNjcmVlbikpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGV2ZW50KQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAK
aW5kZXggNzI3OTY4My4uMTZmYzUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCkBAIC0zMiw4ICszMiw4IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1OYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2
ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBj
b25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2
aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKQotICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVu
dEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsIHRv
V2ViQ29udGVudCwgdG9EZXZpY2VTY3JlZW4sIHRpbWVzdGFtcCkpCitOYXRpdmVXZWJUb3VjaEV2
ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0
IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKQorICAgIDogV2Vi
VG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9p
bnRzLCBtb2RpZmllcnMsIHRvV2ViVmlldywgdG9EZXZpY2VTY3JlZW4sIHRpbWVzdGFtcCkpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hl
ZWxFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYldoZWVs
RXZlbnRFZmwuY3BwCmluZGV4IDg5M2VhZDguLmU5ODdlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxFdmVudEVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNwcApAQCAtMzAsOCAr
MzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmF0aXZlV2ViV2hlZWxFdmVudDo6TmF0
aXZlV2ViV2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldmVudCwgY29u
c3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCi0gICAgOiBXZWJXaGVlbEV2ZW50KFdl
YkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChldmVudCwgdG9XZWJDb250ZW50LCB0
b0RldmljZVNjcmVlbikpCitOYXRpdmVXZWJXaGVlbEV2ZW50OjpOYXRpdmVXZWJXaGVlbEV2ZW50
KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm0mIHRvV2ViVmlldywgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0
b0RldmljZVNjcmVlbikKKyAgICA6IFdlYldoZWVsRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJXaGVlbEV2ZW50KGV2ZW50LCB0b1dlYlZpZXcsIHRvRGV2aWNlU2NyZWVuKSkKICAgICAs
IG1fbmF0aXZlRXZlbnQoZXZlbnQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggYjk5OTI1MC4uZjgzYmMwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtOTEsMTIgKzkxLDEy
IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIGNvbnZlcnRNaWxsaXNlY29uZFRvU2Vjb25kKHVuc2ln
bmVkIHRpbWVzdGFtcCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lc3RhbXAp
IC8gMTAwMDsKIH0KIAotV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1v
dXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldmVudCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VT
Y3JlZW4pCitXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVu
dChjb25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRvV2ViVmlldywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbikKIHsK
ICAgICBJbnRQb2ludCBwb3MoZXZlbnQtPmNhbnZhcy54LCBldmVudC0+Y2FudmFzLnkpOwogICAg
IHJldHVybiBXZWJNb3VzZUV2ZW50KFdlYkV2ZW50OjpNb3VzZURvd24sCiAgICAgICAgIGJ1dHRv
bkZvckV2ZW50KGV2ZW50LT5idXR0b24pLAotICAgICAgICB0b1dlYkNvbnRlbnQubWFwUG9pbnQo
cG9zKSwKKyAgICAgICAgdG9XZWJWaWV3Lm1hcFBvaW50KHBvcyksCiAgICAgICAgIHRvRGV2aWNl
U2NyZWVuLm1hcFBvaW50KHBvcyksCiAgICAgICAgIDAgLyogZGVsdGFYICovLAogICAgICAgICAw
IC8qIGRlbHRhWSAqLywKQEAgLTEwNiwxMiArMTA2LDEyIEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZl
bnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93
bioKICAgICAgICAgY29udmVydE1pbGxpc2Vjb25kVG9TZWNvbmQoZXZlbnQtPnRpbWVzdGFtcCkp
OwogfQogCi1XZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVu
dChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1VwKiBldmVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCitX
ZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBF
dmFzX0V2ZW50X01vdXNlX1VwKiBldmVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYlZp
ZXcsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCiB7CiAgICAgSW50UG9p
bnQgcG9zKGV2ZW50LT5jYW52YXMueCwgZXZlbnQtPmNhbnZhcy55KTsKICAgICByZXR1cm4gV2Vi
TW91c2VFdmVudChXZWJFdmVudDo6TW91c2VVcCwKICAgICAgICAgYnV0dG9uRm9yRXZlbnQoZXZl
bnQtPmJ1dHRvbiksCi0gICAgICAgIHRvV2ViQ29udGVudC5tYXBQb2ludChwb3MpLAorICAgICAg
ICB0b1dlYlZpZXcubWFwUG9pbnQocG9zKSwKICAgICAgICAgdG9EZXZpY2VTY3JlZW4ubWFwUG9p
bnQocG9zKSwKICAgICAgICAgMCAvKiBkZWx0YVggKi8sCiAgICAgICAgIDAgLyogZGVsdGFZICov
LApAQCAtMTIxLDEyICsxMjEsMTIgQEAgV2ViTW91c2VFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYKICAgICAgICAg
Y29udmVydE1pbGxpc2Vjb25kVG9TZWNvbmQoZXZlbnQtPnRpbWVzdGFtcCkpOwogfQogCi1XZWJN
b3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBFdmFz
X0V2ZW50X01vdXNlX01vdmUqIGV2ZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29u
dGVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbikKK1dlYk1vdXNlRXZl
bnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRf
TW91c2VfTW92ZSogZXZlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJWaWV3LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuKQogewogICAgIEludFBvaW50IHBvcyhl
dmVudC0+Y3VyLmNhbnZhcy54LCBldmVudC0+Y3VyLmNhbnZhcy55KTsKICAgICByZXR1cm4gV2Vi
TW91c2VFdmVudChXZWJFdmVudDo6TW91c2VNb3ZlLAogICAgICAgICBidXR0b25Gb3JFdmVudChl
dmVudC0+YnV0dG9ucyksCi0gICAgICAgIHRvV2ViQ29udGVudC5tYXBQb2ludChwb3MpLAorICAg
ICAgICB0b1dlYlZpZXcubWFwUG9pbnQocG9zKSwKICAgICAgICAgdG9EZXZpY2VTY3JlZW4ubWFw
UG9pbnQocG9zKSwKICAgICAgICAgMCAvKiBkZWx0YVggKi8sCiAgICAgICAgIDAgLyogZGVsdGFZ
ICovLApAQCAtMTM2LDcgKzEzNiw3IEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfTW92ZSoKICAgICAgICAg
Y29udmVydE1pbGxpc2Vjb25kVG9TZWNvbmQoZXZlbnQtPnRpbWVzdGFtcCkpOwogfQogCi1XZWJX
aGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBFdmFz
X0V2ZW50X01vdXNlX1doZWVsKiBldmVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNv
bnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCitXZWJXaGVlbEV2
ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChjb25zdCBFdmFzX0V2ZW50
X01vdXNlX1doZWVsKiBldmVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYlZpZXcsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCiB7CiAgICAgZmxvYXQgZGVsdGFY
ID0gMDsKICAgICBmbG9hdCBkZWx0YVkgPSAwOwpAQCAtMTYxLDcgKzE2MSw3IEBAIFdlYldoZWVs
RXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfV2hlZWwqCiAgICAgSW50UG9pbnQgcG9zKGV2ZW50LT5jYW52YXMueCwgZXZlbnQt
PmNhbnZhcy55KTsKIAogICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwK
LSAgICAgICAgdG9XZWJDb250ZW50Lm1hcFBvaW50KHBvcyksCisgICAgICAgIHRvV2ViVmlldy5t
YXBQb2ludChwb3MpLAogICAgICAgICB0b0RldmljZVNjcmVlbi5tYXBQb2ludChwb3MpLAogICAg
ICAgICBGbG9hdFNpemUoZGVsdGFYLCBkZWx0YVkpLAogICAgICAgICBGbG9hdFNpemUod2hlZWxU
aWNrc1gsIHdoZWVsVGlja3NZKSwKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgaW5saW5lIFdl
YkV2ZW50OjpUeXBlIHR5cGVGb3JUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUp
CiAgICAgcmV0dXJuIFdlYkV2ZW50OjpOb1R5cGU7CiB9CiAKLVdlYlRvdWNoRXZlbnQgV2ViRXZl
bnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUs
IGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKQorV2ViVG91Y2hFdmVudCBXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlw
ZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVy
cywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYlZpZXcsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCiB7CiAgICAgVmVjdG9yPFdlYlBs
YXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludHM7CiAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaFBvaW50U3RhdGUgc3RhdGU7CkBAIC0yNTAsNyArMjUwLDcgQEAgV2ViVG91Y2hFdmVu
dCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5
cGUgdHlwZSwgY28KICAgICAgICAgfQogCiAgICAgICAgIEludFBvaW50IHBvcyhwb2ludC0+eCwg
cG9pbnQtPnkpOwotICAgICAgICB0b3VjaFBvaW50cy5hcHBlbmQoV2ViUGxhdGZvcm1Ub3VjaFBv
aW50KHBvaW50LT5pZCwgc3RhdGUsIHRvRGV2aWNlU2NyZWVuLm1hcFBvaW50KHBvcyksIHRvV2Vi
Q29udGVudC5tYXBQb2ludChwb3MpKSk7CisgICAgICAgIHRvdWNoUG9pbnRzLmFwcGVuZChXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQtPmlkLCBzdGF0ZSwgdG9EZXZpY2VTY3JlZW4ubWFwUG9p
bnQocG9zKSwgdG9XZWJWaWV3Lm1hcFBvaW50KHBvcykpKTsKICAgICB9CiAKICAgICByZXR1cm4g
V2ViVG91Y2hFdmVudCh0eXBlRm9yVG91Y2hFdmVudCh0eXBlKSwgdG91Y2hQb2ludHMsIG1vZGlm
aWVyc0ZvckV2ZW50KG1vZGlmaWVycyksIHRpbWVzdGFtcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IDE0NjBiNzAuLjlkNGRhZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC00NTUsNyAr
NDU1LDcgQEAgdm9pZCBFd2tWaWV3OjpzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZSkK
ICAgICBwYWdlKCktPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKHNjYWxlKTsKIAogICAg
IC8vIFVwZGF0ZSBpbnRlcm5hbCB2aWV3cG9ydCBzaXplIGFmdGVyIGRldmljZS1zY2FsZSBjaGFu
Z2UuCi0gICAgc2V0U2l6ZShtX3NpemUpOworICAgIHNldFNpemUobmF0aXZlU2l6ZSgpKTsKIH0K
IAogZmxvYXQgRXdrVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdApAQCAtNDYzLDIyICs0
NjMsMzIgQEAgZmxvYXQgRXdrVmlldzo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogICAgIHJl
dHVybiBXS1BhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3Iod2tQYWdlKCkpOwogfQogCi12b2lkIEV3
a1ZpZXc6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3ZvaWQgRXdrVmlldzo6c2V0U2l6
ZShjb25zdCBJbnRTaXplJiBuYXRpdmVTaXplKQogewotICAgIG1fc2l6ZSA9IHNpemU7CisgICAg
bV9uYXRpdmVTaXplID0gbmF0aXZlU2l6ZTsKIAogICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdp
bmdBcmVhID0gcGFnZSgpLT5kcmF3aW5nQXJlYSgpOwogICAgIGlmICghZHJhd2luZ0FyZWEpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBkaXBTaXplKG1fc2l6ZSk7Ci0gICAgLy8g
V2ViIFByb2Nlc3MgZXhwZWN0cyBzaXplcyBpbiBVSSB1bml0cywgYW5kIG5vdCByYXcgZGV2aWNl
IHVuaXRzLgotICAgIGRpcFNpemUuc2NhbGUoMSAvIGRldmljZVNjYWxlRmFjdG9yKCkpOwotICAg
IGRyYXdpbmdBcmVhLT5zZXRTaXplKHJvdW5kZWRJbnRTaXplKGRpcFNpemUpLCBJbnRTaXplKCkp
OworICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKHNpemUoKSwgSW50U2l6ZSgpKTsKICAgICB3ZWJW
aWV3KCktPnVwZGF0ZVZpZXdwb3J0U2l6ZSgpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gRXdrVmll
dzo6dHJhbnNmb3JtVG9TY3JlZW4oKSBjb25zdAorSW50U2l6ZSBFd2tWaWV3OjpzaXplKCkgY29u
c3QKK3sKKyAgICAvLyBXZWJQYWdlIGV4cGVjdHMgYSBzaXplIGluIFVJIHVuaXRzLCBhbmQgbm90
IHJhdyBkZXZpY2UgdW5pdHMuCisgICAgRmxvYXRTaXplIGRpcFNpemUgPSBtX25hdGl2ZVNpemU7
CisgICAgZGlwU2l6ZS5zY2FsZSgxIC8gZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgcmV0dXJu
IHJvdW5kZWRJbnRTaXplKGRpcFNpemUpOworfQorCitJbnRTaXplIEV3a1ZpZXc6Om5hdGl2ZVNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBtX25hdGl2ZVNpemU7Cit9CisKK0FmZmluZVRyYW5z
Zm9ybSBFd2tWaWV3Ojp0cmFuc2Zvcm1Gcm9tU2NlbmVUb1NjcmVlbigpIGNvbnN0CiB7CiAgICAg
QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKIApAQCAtNTQ4LDcgKzU1OCw3IEBAIHZvaWQgRXdr
Vmlldzo6ZGlzcGxheVRpbWVyRmlyZWQoVGltZXI8RXdrVmlldz4qKQogCiB2b2lkIEV3a1ZpZXc6
OnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpCiB7Ci0gICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCisg
ICAgaWYgKG1fbmF0aXZlU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9kaXNwbGF5VGltZXIuaXNBY3RpdmUoKSkKQEAgLTY5OCw3ICs3MDgsNyBAQCB2b2lkIEV3
a1ZpZXc6OnNldE1vdXNlRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKIHZvaWQgRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50
X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIq
IG1vZGlmaWVycykKIHsKLSAgICBwYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91
Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgd2ViVmlldygpLT50cmFuc2Zvcm1Gcm9t
U2NlbmUoKSwgdHJhbnNmb3JtVG9TY3JlZW4oKSwgZWNvcmVfdGltZV9nZXQoKSkpOworICAgIHBh
Z2UoKS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywg
bW9kaWZpZXJzLCB3ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZVRvV2ViVmlldygpLCB0cmFu
c2Zvcm1Gcm9tU2NlbmVUb1NjcmVlbigpLCBlY29yZV90aW1lX2dldCgpKSk7CiB9CiAKIHZvaWQg
RXdrVmlldzo6c2V0VG91Y2hFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTc0Niw3ICs3
NTYsNyBAQCBib29sIEV3a1ZpZXc6OmNyZWF0ZUdMU3VyZmFjZSgpCiAgICAgfTsKIAogICAgIC8v
IFJlY3JlYXRlIHRvIGN1cnJlbnQgc2l6ZTogUmVwbGFjZXMgaWYgbm9uLW51bGwsIGFuZCBmcmVl
cyBleGlzdGluZyBzdXJmYWNlIGFmdGVyIChPd25QdHIpLgotICAgIG1fZXZhc0dMU3VyZmFjZSA9
IEV2YXNHTFN1cmZhY2U6OmNyZWF0ZShtX2V2YXNHTC5nZXQoKSwgJmV2YXNHTENvbmZpZywgc2l6
ZSgpKTsKKyAgICBtX2V2YXNHTFN1cmZhY2UgPSBFdmFzR0xTdXJmYWNlOjpjcmVhdGUobV9ldmFz
R0wuZ2V0KCksICZldmFzR0xDb25maWcsIG5hdGl2ZVNpemUoKSk7CiAgICAgaWYgKCFtX2V2YXNH
TFN1cmZhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzU4LDcgKzc2OCw3IEBAIGJv
b2wgRXdrVmlldzo6Y3JlYXRlR0xTdXJmYWNlKCkKIAogICAgIEV2YXNfR0xfQVBJKiBnbCA9IGV2
YXNfZ2xfYXBpX2dldChtX2V2YXNHTC5nZXQoKSk7CiAKLSAgICBjb25zdCBXS1BvaW50JiBib3Vu
ZHNFbmQgPSBXS1ZpZXdVc2VyVmlld3BvcnRUb0NvbnRlbnRzKHdrVmlldygpLCBXS1BvaW50TWFr
ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CisgICAgY29uc3QgV0tQb2ludCYg
Ym91bmRzRW5kID0gV0tWaWV3VXNlclZpZXdwb3J0VG9Db250ZW50cyh3a1ZpZXcoKSwgV0tQb2lu
dE1ha2UobmF0aXZlU2l6ZSgpLndpZHRoKCksIG5hdGl2ZVNpemUoKS5oZWlnaHQoKSkpOwogICAg
IGdsLT5nbFZpZXdwb3J0KDAsIDAsIGJvdW5kc0VuZC54LCBib3VuZHNFbmQueSk7CiAgICAgZ2wt
PmdsQ2xlYXJDb2xvcigxLjAsIDEuMCwgMS4wLCAwKTsKICAgICBnbC0+Z2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUKTsKQEAgLTExNjcsMjEgKzExNzcsMjEgQEAgRWluYV9Cb29sIEV3a1ZpZXc6
OmhhbmRsZUV3a1ZpZXdGb2N1c091dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiBF
aW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNlV2hlZWwoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhLCBjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50
KQogewogICAgIEV3a1ZpZXcqIHNlbGYgPSB0b0V3a1ZpZXcoc21hcnREYXRhKTsKLSAgICBzZWxm
LT5wYWdlKCktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudCh3aGVlbEV2ZW50
LCBzZWxmLT53ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBzZWxmLT50cmFuc2Zvcm1U
b1NjcmVlbigpKSk7CisgICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdl
YldoZWVsRXZlbnQod2hlZWxFdmVudCwgc2VsZi0+d2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2Nl
bmVUb1dlYlZpZXcoKSwgc2VsZi0+dHJhbnNmb3JtRnJvbVNjZW5lVG9TY3JlZW4oKSkpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBFaW5hX0Jvb2wgRXdrVmlldzo6aGFuZGxlRXdrVmlld01vdXNl
RG93bihFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91
c2VfRG93biogZG93bkV2ZW50KQogewogICAgIEV3a1ZpZXcqIHNlbGYgPSB0b0V3a1ZpZXcoc21h
cnREYXRhKTsKLSAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91
c2VFdmVudChkb3duRXZlbnQsIHNlbGYtPndlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lKCks
IHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1v
dXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChkb3duRXZlbnQsIHNlbGYtPndlYlZpZXcoKS0+
dHJhbnNmb3JtRnJvbVNjZW5lVG9XZWJWaWV3KCksIHNlbGYtPnRyYW5zZm9ybUZyb21TY2VuZVRv
U2NyZWVuKCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogRWluYV9Cb29sIEV3a1ZpZXc6Omhh
bmRsZUV3a1ZpZXdNb3VzZVVwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9VcCogdXBFdmVudCkKIHsKICAgICBFd2tWaWV3KiBzZWxmID0gdG9F
d2tWaWV3KHNtYXJ0RGF0YSk7Ci0gICAgc2VsZi0+cGFnZSgpLT5oYW5kbGVNb3VzZUV2ZW50KE5h
dGl2ZVdlYk1vdXNlRXZlbnQodXBFdmVudCwgc2VsZi0+d2ViVmlldygpLT50cmFuc2Zvcm1Gcm9t
U2NlbmUoKSwgc2VsZi0+dHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAgIHNlbGYtPnBhZ2UoKS0+
aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHVwRXZlbnQsIHNlbGYtPndlYlZp
ZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lVG9XZWJWaWV3KCksIHNlbGYtPnRyYW5zZm9ybUZyb21T
Y2VuZVRvU2NyZWVuKCkpKTsKIAogICAgIGlmIChJbnB1dE1ldGhvZENvbnRleHRFZmwqIGlucHV0
TWV0aG9kQ29udGV4dCA9IHNlbGYtPmlucHV0TWV0aG9kQ29udGV4dCgpKQogICAgICAgICBpbnB1
dE1ldGhvZENvbnRleHQtPmhhbmRsZU1vdXNlVXBFdmVudCh1cEV2ZW50KTsKQEAgLTExOTIsNyAr
MTIwMiw3IEBAIEVpbmFfQm9vbCBFd2tWaWV3OjpoYW5kbGVFd2tWaWV3TW91c2VVcChFd2tfVmll
d19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2CiBFaW5hX0Jvb2wgRXdrVmlldzo6aGFu
ZGxlRXdrVmlld01vdXNlTW92ZShFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0
IEV2YXNfRXZlbnRfTW91c2VfTW92ZSogbW92ZUV2ZW50KQogewogICAgIEV3a1ZpZXcqIHNlbGYg
PSB0b0V3a1ZpZXcoc21hcnREYXRhKTsKLSAgICBzZWxmLT5wYWdlKCktPmhhbmRsZU1vdXNlRXZl
bnQoTmF0aXZlV2ViTW91c2VFdmVudChtb3ZlRXZlbnQsIHNlbGYtPndlYlZpZXcoKS0+dHJhbnNm
b3JtRnJvbVNjZW5lKCksIHNlbGYtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBzZWxmLT5w
YWdlKCktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChtb3ZlRXZlbnQsIHNl
bGYtPndlYlZpZXcoKS0+dHJhbnNmb3JtRnJvbVNjZW5lVG9XZWJWaWV3KCksIHNlbGYtPnRyYW5z
Zm9ybUZyb21TY2VuZVRvU2NyZWVuKCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IDcxZGFkMmQuLmE0NDJm
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTEz
MSwxMCArMTMxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZs
b2F0IHNjYWxlKTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogCi0gICAg
dm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKLSAgICBXZWJDb3JlOjpJbnRT
aXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICB2b2lkIHNldFNpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgbmF0aXZlU2l6ZSk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBz
aXplKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBuYXRpdmVTaXplKCkgY29uc3Q7CiAK
LSAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtVG9TY3JlZW4oKSBjb25zdDsK
KyAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbVNjZW5lVG9TY3JlZW4o
KSBjb25zdDsKIAogICAgIGNvbnN0IGNoYXIqIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CiAgICAgRXZhc19PYmplY3QqIGNyZWF0ZUZhdmljb24oKSBjb25zdDsKQEAgLTI1NSw3ICsyNTYs
NyBAQCBwcml2YXRlOgogICAgIE93blB0cjxFdmFzX0dMPiBtX2V2YXNHTDsKICAgICBPd25QdHI8
V2ViS2l0OjpFdmFzR0xDb250ZXh0PiBtX2V2YXNHTENvbnRleHQ7CiAgICAgT3duUHRyPFdlYktp
dDo6RXZhc0dMU3VyZmFjZT4gbV9ldmFzR0xTdXJmYWNlOwotICAgIFdlYkNvcmU6OkludFNpemUg
bV9zaXplOworICAgIFdlYkNvcmU6OkludFNpemUgbV9uYXRpdmVTaXplOwogICAgIFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtOwogICAgIGJvb2wg
bV9wZW5kaW5nU3VyZmFjZVJlc2l6ZTsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJWaWV3PiBtX3dl
YlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJw
YWdlLmNwcAppbmRleCA0ZjE5NmUxLi4xNjQwZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKQEAgLTEwNyw2ICsxMDcsOCBAQCBR
U0dOb2RlKiBRUXVpY2tXZWJQYWdlOjp1cGRhdGVQYWludE5vZGUoUVNHTm9kZSogb2xkTm9kZSwg
VXBkYXRlUGFpbnROb2RlRGF0YSopCiAKICAgICBub2RlLT5zZXRDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmUoc2NlbmUpOwogCisgICAgUVBvaW50RiBzY3JvbGxQb3NpdGlvbiA9IHRyYW5zZm9ybUZy
b21JdGVtKCkubWFwKFFQb2ludEYoKSk7CisgICAgbm9kZS0+c2V0U2Nyb2xsUG9zaXRpb24oc2Ny
b2xsUG9zaXRpb24pOwogICAgIG5vZGUtPnNldFNjYWxlKGQtPmNvbnRlbnRzU2NhbGUpOwogICAg
IG5vZGUtPnNldERldmljZVBpeGVsUmF0aW8od2luZG93LT5kZXZpY2VQaXhlbFJhdGlvKCkpOwog
ICAgIFFDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBkLT53ZWJQYWdlUHJveHktPmRyYXdzVHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKCkgPyBRdDo6dHJhbnNwYXJlbnQgOiBRdDo6d2hpdGU7CkBAIC0xNzEs
NiArMTczLDE5IEBAIFFUcmFuc2Zvcm0gUVF1aWNrV2ViUGFnZTo6dHJhbnNmb3JtVG9JdGVtKCkg
Y29uc3QKICAgICByZXR1cm4gUVRyYW5zZm9ybShkLT5jb250ZW50c1NjYWxlLCAwLCAwLCAwLCBk
LT5jb250ZW50c1NjYWxlLCAwLCB4UG9zLCB5UG9zLCAxKTsKIH0KIAorUVRyYW5zZm9ybSBRUXVp
Y2tXZWJQYWdlOjp0cmFuc2Zvcm1Gcm9tSXRlbVRvV2ViVmlldygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRyYW5zZm9ybUZyb21XZWJWaWV3VG9JdGVtKCkuaW52ZXJ0ZWQoKTsKK30KKworUVRyYW5z
Zm9ybSBRUXVpY2tXZWJQYWdlOjp0cmFuc2Zvcm1Gcm9tV2ViVmlld1RvSXRlbSgpIGNvbnN0Cit7
CisgICAgcXJlYWwgeFBvcyA9IHgoKTsKKyAgICBxcmVhbCB5UG9zID0geSgpOworCisgICAgcmV0
dXJuIFFUcmFuc2Zvcm0oZC0+Y29udGVudHNTY2FsZSwgMCwgMCwgMCwgZC0+Y29udGVudHNTY2Fs
ZSwgMCwgeFBvcywgeVBvcywgMSk7Cit9CisKIHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnVw
ZGF0ZVNpemUoKQogewogICAgIFFTaXplRiBzY2FsZWRTaXplID0gY29udGVudHNTaXplICogY29u
dGVudHNTY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2VicGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnBhZ2VfcC5oCmluZGV4IDNhMTEyZDYuLmM3NTliYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaApAQCAtNDcsNiArNDcsOCBA
QCBwdWJsaWM6CiAKICAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybUZyb21JdGVtKCkgY29uc3Q7CiAg
ICAgUVRyYW5zZm9ybSB0cmFuc2Zvcm1Ub0l0ZW0oKSBjb25zdDsKKyAgICBRVHJhbnNmb3JtIHRy
YW5zZm9ybUZyb21JdGVtVG9XZWJWaWV3KCkgY29uc3Q7CisgICAgUVRyYW5zZm9ybSB0cmFuc2Zv
cm1Gcm9tV2ViVmlld1RvSXRlbSgpIGNvbnN0OwogCiAgICAgV2ViS2l0OjpRdFdlYlBhZ2VFdmVu
dEhhbmRsZXIqIGV2ZW50SGFuZGxlcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA2NmNiODNjLi5hMmQ3ZWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
dy5jcHAKQEAgLTk0Nyw5ICs5NDcsNiBAQCB2b2lkIFFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRl
Ojp1cGRhdGVWaWV3cG9ydFNpemUoKQogICAgICAgICAvLyB3aGV0aGVyIGl0cyBmaXhlZCBvciBu
b3QuIFdlIHN0aWxsIG5lZWQgdG8gdGVsbCB0aGUgZHJhd2luZyBhcmVhIHdoaWNoIHBhcnQgb2Yg
aXQKICAgICAgICAgLy8gaGFzIHRvIGJlIHJlbmRlcmVkIG9uIHRpbGVzLCBhbmQgaW4gZGVza3Rv
cCBtb2RlIGl0J3MgYWxsIG9mIGl0LgogICAgICAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZSh2aWV3
cG9ydFNpemUudG9TaXplKCksIEludFNpemUoKSk7Ci0gICAgICAgIC8vIFRoZSBiYWNraW5nIHN0
b3JlIHNjYWxlIGZhY3RvciBzaG91bGQgYWxyZWFkeSBiZSBzZXQgdG8gdGhlIGRldmljZSBwaXhl
bCByYXRpbwotICAgICAgICAvLyBvZiB0aGUgdW5kZXJseWluZyB3aW5kb3csIHRodXMgd2Ugc2V0
IHRoZSBlZmZlY3RpdmUgc2NhbGUgdG8gMSBoZXJlLgotICAgICAgICBkcmF3aW5nQXJlYS0+c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUodmll
d3BvcnRTaXplKSksIEZsb2F0UG9pbnQoKSk7CiAgICAgfQogfQogCkBAIC0xMDAwLDEwICs5OTcs
MTAgQEAgdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRT
aXplKCkKICAgICAgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9y
dFNpemUoRmxvYXRTaXplKHEtPndpZHRoKCksIHEtPmhlaWdodCgpKSk7CiB9CiAKLXZvaWQgUVF1
aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFFQ
b2ludCYgcG9zKQordm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6cGFnZURpZFNj
cm9sbChjb25zdCBRUG9pbnQmIHBvcykKIHsKICAgICBpZiAobV9wYWdlVmlld3BvcnRDb250cm9s
bGVyKQotICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKHBvcyk7CisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZURpZFNjcm9s
bChwb3MpOwogfQogCiBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsKFFRdWlja1dlYlZpZXcgKndlYlZpZXcsIFFRdWlja1dlYlZpZXdQcml2YXRlKiB3
ZWJWaWV3UHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlld19wX3AuaAppbmRleCA4YWQ1M2UzLi45N2MzNWEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCkBAIC0x
MjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIC8vIFBhZ2VDbGllbnQuCiAgICAgV2ViQ29yZTo6
SW50U2l6ZSB2aWV3U2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
TmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgUVBvaW50JiBwb3MpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBwYWdlRGlkU2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9zKSB7IH0KICAgICB2b2lkIHBy
b2Nlc3NEaWRDcmFzaCgpOwogICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAgICAgUGFz
c093blB0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHko
KTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJLaXQ6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXIqIHZpZXdwb3J0Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlci5kYXRhKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Vmlld3BvcnRTaXplKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwo
Y29uc3QgUVBvaW50JiBwb3MpOworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkU2Nyb2xsKGNvbnN0
IFFQb2ludCYgcG9zKTsKIAogcHJpdmF0ZToKICAgICBRU2NvcGVkUG9pbnRlcjxXZWJLaXQ6OlBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcAppbmRl
eCA0YWEzNTMzLi40OWE1NGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBQYXNzUmVm
UHRyPFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHk+IFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y3Jl
YXRlQ29sb3JDaG9vc2VyUAogfQogI2VuZGlmCiAKLXZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpw
YWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKQordm9pZCBR
UmF3V2ViVmlld1ByaXZhdGU6OnBhZ2VEaWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvcykKIHsKICAgICBtX2NsaWVudC0+dmlld1JlcXVlc3RlZFNjcm9sbChwb3MpOwotCisgICAg
bV9wb3NpdGlvbiA9IFFQb2ludEYocG9zLngoKSwgcG9zLnkoKSk7CiB9CiB2b2lkIFFSYXdXZWJW
aWV3UHJpdmF0ZTo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKQEAgLTM0OSw3ICszNDksNiBAQCB2b2lk
IFFSYXdXZWJWaWV3OjpzZXRTaXplKGNvbnN0IFFTaXplJiBzaXplKQogICAgIGQtPm1fc2l6ZSA9
IHNpemU7CiAKICAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShkLT5tX3NpemUsIFdlYkNvcmU6Oklu
dFNpemUoKSk7Ci0gICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29y
ZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBkLT5tX3NpemUpLCBXZWJDb3JlOjpGbG9h
dFBvaW50KCkpOwogfQogCiBXS1BhZ2VSZWYgUVJhd1dlYlZpZXc6OnBhZ2VSZWYoKQpAQCAtMzc4
LDcgKzM3Nyw3IEBAIHZvaWQgUVJhd1dlYlZpZXc6OnBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRy
YW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFpCiAKICAgICBXZWJDb3JlOjpGbG9h
dFJlY3QgcmVjdCgwLCAwLCBkLT5tX3NpemUud2lkdGgoKSwgZC0+bV9zaXplLmhlaWdodCgpKTsK
IAotICAgIHNjZW5lLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zvcm0sIG9wYWNpdHks
IHRyYW5zZm9ybS5tYXBSZWN0KHJlY3QpLCBwYWludEZsYWdzKTsKKyAgICBzY2VuZS0+cGFpbnRU
b0N1cnJlbnRHTENvbnRleHQodHJhbnNmb3JtLCBvcGFjaXR5LCB0cmFuc2Zvcm0ubWFwUmVjdChy
ZWN0KSwgZC0+bV9wb3NpdGlvbiwgcGFpbnRGbGFncyk7CiB9CiAKIHZvaWQgUVJhd1dlYlZpZXc6
OnNlbmRLZXlFdmVudChRS2V5RXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaAppbmRleCAwMjk5NTZlLi5i
ODRhNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9x
cmF3d2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jh
dy9xcmF3d2Vidmlld19wX3AuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgUGFzc093blB0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdB
cmVhUHJveHkoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9s
bChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vz
c0RpZENyYXNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHJlY3QpOwpAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1fdmlzaWJsZTsK
ICAgICBib29sIG1fYWN0aXZlOwogICAgIFFTaXplIG1fc2l6ZTsKKyAgICBRUG9pbnRGIG1fcG9z
aXRpb247CiAKICAgICBRUmF3V2ViVmlld0NsaWVudCogbV9jbGllbnQ7CiAgICAgV1RGOjpSZWZQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGM1ZjdlODcu
LjYzMjA0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5jcHAKQEAgLTE3MywxOSArMTczLDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eTo6c2V0QW5pbWF0aW9uc0xvY2tlZChib29sIGxvY2tlZCkKICAgICBkaXNw
YXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldEFuaW1hdGlvbnNM
b2NrZWQsIG1fc2NlbmUuZ2V0KCksIGxvY2tlZCkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKLXsKLSAgICAvLyBJbmZv
cm0gdGhlIHJlbmRlcmVyIHRvIGFkanVzdCB2aWV3cG9ydC1maXhlZCBsYXllcnMuCi0gICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRTY3JvbGxQb3Np
dGlvbiwgbV9zY2VuZS5nZXQoKSwgcmVjdC5sb2NhdGlvbigpKSk7Ci0KLSAgICBpZiAocmVjdCA9
PSBtX2xhc3RTZW50VmlzaWJsZVJlY3QgJiYgdHJhamVjdG9yeVZlY3RvciA9PSBtX2xhc3RTZW50
VHJhamVjdG9yeVZlY3RvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kcmF3aW5nQXJlYVBy
b3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpTZXRWaXNpYmxlQ29udGVudHNSZWN0KHJlY3QsIHRyYWplY3RvcnlWZWN0b3IpLCBt
X2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOwotICAgIG1fbGFzdFNlbnRWaXNp
YmxlUmVjdCA9IHJlY3Q7Ci0gICAgbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3IgPSB0cmFqZWN0
b3J5VmVjdG9yOwotfQotCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW5k
ZXJOZXh0RnJhbWUoKQogewogICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6UmVuZGVyTmV4dEZy
YW1lKCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA5NDZiMzk5
Li5hMzQ2ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5LmgKQEAgLTY1LDcgKzY1LDYgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlQ29t
cG9zaXRpbmdMYXllcnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRD4m
KTsKICAgICB2b2lkIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29yZGluYXRlZExheWVySUQ+Jik7CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXll
cihXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQpOwotICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiB0cmFqZWN0b3J5VmVjdG9yKTsKICAgICB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKICAg
ICB2b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQsIHVp
bnQzMl90IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlN1
cmZhY2VVcGRhdGVJbmZvJik7CiAgICAgdm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpTdXJmYWNlVXBkYXRlSW5mbyYpOwpAQCAtMTA2LDggKzEwNSw2
IEBAIHByb3RlY3RlZDoKIAogICAgIERyYXdpbmdBcmVhUHJveHkqIG1fZHJhd2luZ0FyZWFQcm94
eTsKICAgICBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiBtX3NjZW5l
OwotICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7Ci0gICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5LmgKaW5kZXggNzc1YWQ1Ni4uMzIwNTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC03NSw3ICs3NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkludFJlY3Qgdmlld3BvcnRWaXNpYmxlUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IGNvbnRlbnRzUmVjdCgpOyB9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRz
UmVjdCgpIGNvbnN0OwogICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KiBjb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fY29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIC8qIHZpc2libGVDb250ZW50c1JlY3Qg
Ki8sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIC8qIHRyYWplY3RvcnlWZWN0b3IgKi8pIHsg
fQogCiAgICAgV2ViUGFnZVByb3h5KiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlUHJveHk7IH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
SW1wbC5jcHAKaW5kZXggZjNkZTU3Ni4uZGI4MDMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCkBAIC0zNjksMTQgKzM2OSw2IEBA
IHZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4CiAjZW5kaWYKIH0KIAotI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKLXZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZpc2libGVDb250ZW50
c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0LCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQotewotICAgIGlmIChtX2Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KQotICAgICAgICBtX2Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KHZpc2libGVDb250ZW50c1JlY3Qs
IHRyYWplY3RvcnlWZWN0b3IpOwotfQotI2VuZGlmCi0KIHZvaWQgRHJhd2luZ0FyZWFQcm94eUlt
cGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiB7CiAgICAgQVNTRVJUKGlzSW5B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKaW5kZXggZTVkMTY2My4uYjlkMWI3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKQEAgLTgy
LDkgKzgyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgdHJhamVjdG9yeSkgT1ZFUlJJREU7Ci0jZW5kaWYKICNlbHNlCiAgICAgYm9vbCBpc0lu
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBkMDhjYzkxLi4xNTkw
OWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTExNSw3ICsxMTUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpID0gMDsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQot
ICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
b3ZlcmVkUmVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0
UmVhZHkoKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRleCAzMWQwYzdjLi4zNmI0ZWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3Bw
CkBAIC0zOSw2ICszOSwxMSBAQCBib29sIGZ1enp5Q29tcGFyZShmbG9hdCBhLCBmbG9hdCBiLCBm
bG9hdCBlcHNpbG9uKQogICAgIHJldHVybiBzdGQ6OmFicyhhIC0gYikgPCBlcHNpbG9uOwogfQog
Citib29sIGZ1enp5Q29tcGFyZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBhLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiBiLCBmbG9hdCBlcHNpbG9uKQoreworICAgIHJldHVybiBmdXp6
eUNvbXBhcmUoYS54KCksIGIueCgpLCBlcHNpbG9uKSAmJiBmdXp6eUNvbXBhcmUoYS55KCksIGIu
eSgpLCBlcHNpbG9uKTsKK30KKwogUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSogcHJveHksIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fd2ViUGFnZVByb3h5KHByb3h5KQogICAgICwg
bV9jbGllbnQoY2xpZW50KQpAQCAtMTcwLDYgKzE3NSw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcjo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAK
IHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgSW50U2l6
ZSYgY29udGVudHNTaXplLCBjb25zdCBJbnRSZWN0JiBjb3ZlcmVkUmVjdCkKIHsKKyAgICAvLyBG
SVhNRTogcmVtb3ZlIG1fY2xpZW50Q29udGVudHNTaXplIGFuZCBtX2xhc3RGcmFtZUNvdmVyZWRS
ZWN0CiAgICAgaWYgKG1fY2xpZW50Q29udGVudHNTaXplICE9IGNvbnRlbnRzU2l6ZSkgewogICAg
ICAgICBtX2NsaWVudENvbnRlbnRzU2l6ZSA9IGNvbnRlbnRzU2l6ZTsKICAgICAgICAgLy8gT25s
eSB1cGRhdGUgdGhlIHZpZXdwb3J0J3MgY29udGVudHMgZGltZW5zaW9ucyBhbG9uZyB3aXRoIGl0
cyByZW5kZXIgaWYgdGhlCkBAIC0xOTIsMTIgKzE5OCwxMCBAQCB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI6OmRpZFJlbmRlckZyYW1lKGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29u
c3QgSQogICAgICAgICBtX2NsaWVudC0+c2V0UGFnZVNjYWxlRmFjdG9yKG1fcGFnZVNjYWxlRmFj
dG9yKTsKIAogICAgICAgICAvLyBUaGUgc2NhbGUgY2hhbmdlZCwgd2UgaGF2ZSB0byByZS1waXhl
bCBhbGlnbi4KLSAgICAgICAgbV9wZW5kaW5nUG9zaXRpb25DaGFuZ2UgPSB0cnVlOwogICAgICAg
ICBGbG9hdFBvaW50IGN1cnJlbnREaXNjcmV0ZVBvcyA9IHJvdW5kZWRJbnRQb2ludChtX2NvbnRl
bnRzUG9zaXRpb24pOwogICAgICAgICBGbG9hdFBvaW50IHBpeGVsQWxpZ25lZFBvcyA9IHBpeGVs
QWxpZ25lZEZsb2F0UG9pbnQoY3VycmVudERpc2NyZXRlUG9zKTsKLSAgICAgICAgbV9jb250ZW50
c1Bvc2l0aW9uID0gYm91bmRDb250ZW50c1Bvc2l0aW9uKHBpeGVsQWxpZ25lZFBvcyk7Ci0KLSAg
ICAgICAgbV93ZWJQYWdlUHJveHktPnNjYWxlUGFnZShtX3BhZ2VTY2FsZUZhY3Rvciwgcm91bmRl
ZEludFBvaW50KG1fY29udGVudHNQb3NpdGlvbikpOworICAgICAgICBpZiAoc2V0Q29udGVudHNQ
b3NpdGlvbihib3VuZENvbnRlbnRzUG9zaXRpb24ocGl4ZWxBbGlnbmVkUG9zKSkpCisgICAgICAg
ICAgICBtX3BlbmRpbmdQb3NpdGlvbkNoYW5nZSA9IHRydWU7CiAgICAgfQogCiAgICAgLy8gVGhl
cmUgbWlnaHQgYmUgcmVuZGVyZWQgZnJhbWVzIG5vdCBjb3ZlcmluZyBvdXIgcmVxdWVzdGVkIHBv
c2l0aW9uIHlldCwgd2FpdCBmb3IgaXQuCkBAIC0yMjMsNyArMjI3LDcgQEAgdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQogICAgIG1fd2Vi
UGFnZVByb3h5LT5jb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCk7CiB9CiAKLXZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQm
IGNzc1Bvc2l0aW9uKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlRGlkU2Nyb2xs
KGNvbnN0IEludFBvaW50JiBjc3NQb3NpdGlvbikKIHsKICAgICAvLyBJZ25vcmUgdGhlIHJlcXVl
c3QgaWYgc3VzcGVuZGVkLiBDYW4gb25seSBoYXBwZW4gZHVlIHRvIGRlbGF5IGluIGV2ZW50IGRl
bGl2ZXJ5LgogICAgIGlmIChtX2hhc1N1c3BlbmRlZENvbnRlbnQpCkBAIC0yMzEsMTUgKzIzNSw5
IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29u
c3QgSW50UG9pbnQmIGNzc1Bvc2l0aW9uKQogCiAgICAgRmxvYXRQb2ludCBib3VuZFBvc2l0aW9u
ID0gYm91bmRDb250ZW50c1Bvc2l0aW9uKEZsb2F0UG9pbnQoY3NzUG9zaXRpb24pKTsKICAgICBG
bG9hdFBvaW50IGFsaWduZWRQb3NpdGlvbiA9IHBpeGVsQWxpZ25lZEZsb2F0UG9pbnQoYm91bmRQ
b3NpdGlvbik7Ci0gICAgRmxvYXRSZWN0IGVuZFZpc2libGVDb250ZW50UmVjdChhbGlnbmVkUG9z
aXRpb24sIHZpc2libGVDb250ZW50c1NpemUoKSk7Ci0KLSAgICBpZiAobV9sYXN0RnJhbWVDb3Zl
cmVkUmVjdC5pbnRlcnNlY3RzKGVuZFZpc2libGVDb250ZW50UmVjdCkpCi0gICAgICAgIG1fY2xp
ZW50LT5zZXRWaWV3cG9ydFBvc2l0aW9uKGFsaWduZWRQb3NpdGlvbik7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIC8vIEtlZXAgdGhlIHVuYm91bmQgcG9zaXRpb24gaW4gY2FzZSB0aGUgY29udGVudHMg
c2l6ZSBpcyBjaGFuZ2VkIGxhdGVyIG9uLgotICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0g
cGl4ZWxBbGlnbmVkRmxvYXRQb2ludChGbG9hdFBvaW50KGNzc1Bvc2l0aW9uKSk7Ci0gICAgICAg
IGFwcGx5UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRlbnRzKHBvc2l0aW9uKTsKLSAgICB9Cisg
ICAgc2V0Q29udGVudHNQb3NpdGlvbihhbGlnbmVkUG9zaXRpb24pOworICAgIG1fY2xpZW50LT5z
ZXRWaWV3cG9ydFBvc2l0aW9uKGFsaWduZWRQb3NpdGlvbik7CisgICAgc3luY1Zpc2libGVDb250
ZW50cygpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdw
b3J0U2l6ZShjb25zdCBGbG9hdFNpemUmIG5ld1NpemUpCkBAIC0yNTQsMjYgKzI1MiwyMCBAQCB2
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZShjb25zdCBG
bG9hdFNpemUmIG5ld1NpemUpCiAgICAgbV93ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNl
dFNpemUocm91bmRlZEludFNpemUobmV3U2l6ZSksIEludFNpemUoKSk7CiB9CiAKLXZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBmbG9hdCBzY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVj
dG9yeVZlY3RvcikKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQ29udGVu
dHNWaXNpYmlsaXR5KGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBmbG9hdCBzY2FsZSkKIHsK
ICAgICBpZiAoIW1fcGVuZGluZ1Bvc2l0aW9uQ2hhbmdlKQotICAgICAgICBtX2NvbnRlbnRzUG9z
aXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgc2V0Q29udGVudHNQb3NpdGlvbihwb3NpdGlvbik7
CiAgICAgaWYgKCFtX3BlbmRpbmdTY2FsZUNoYW5nZSkKLSAgICAgICAgYXBwbHlTY2FsZUFmdGVy
UmVuZGVyaW5nQ29udGVudHMoc2NhbGUpOworICAgICAgICBzZXRQYWdlU2NhbGVGYWN0b3Ioc2Nh
bGUpOwogCi0gICAgc3luY1Zpc2libGVDb250ZW50cyh0cmFqZWN0b3J5VmVjdG9yKTsKKyAgICBz
eW5jVmlzaWJsZUNvbnRlbnRzKCk7CiB9CiAKLXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6
c3luY1Zpc2libGVDb250ZW50cyhjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQor
dm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzeW5jVmlzaWJsZUNvbnRlbnRzKCkKIHsKLSAg
ICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5n
QXJlYSgpOwotICAgIGlmICghZHJhd2luZ0FyZWEgfHwgbV92aWV3cG9ydFNpemUuaXNFbXB0eSgp
IHx8IG1fY29udGVudHNTaXplLmlzRW1wdHkoKSkKKyAgICBpZiAobV92aWV3cG9ydFNpemUuaXNF
bXB0eSgpIHx8IG1fY29udGVudHNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoYm91bmRDb250ZW50c1Bvc2l0aW9uKG1f
Y29udGVudHNQb3NpdGlvbiksIHZpc2libGVDb250ZW50c1NpemUoKSk7Ci0gICAgdmlzaWJsZUNv
bnRlbnRzUmVjdC5pbnRlcnNlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgbV9jb250
ZW50c1NpemUpKTsKLSAgICBkcmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNp
YmxlQ29udGVudHNSZWN0LCB0cmFqZWN0b3J5VmVjdG9yKTsKLQogICAgIG1fY2xpZW50LT5kaWRD
aGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKIH0KIApAQCAtMzI1LDI0ICszMTcsNDIgQEAgdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyOjpyZXN1bWVDb250ZW50KCkKIAogdm9pZCBQYWdlVmlld3Bv
cnRDb250cm9sbGVyOjphcHBseVNjYWxlQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhmbG9hdCBzY2Fs
ZSkKIHsKLSAgICBpZiAobV9wYWdlU2NhbGVGYWN0b3IgPT0gc2NhbGUpCisgICAgaWYgKCFzZXRQ
YWdlU2NhbGVGYWN0b3Ioc2NhbGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2VTY2Fs
ZUZhY3RvciA9IHNjYWxlOwogICAgIG1fcGVuZGluZ1NjYWxlQ2hhbmdlID0gdHJ1ZTsKICAgICBz
eW5jVmlzaWJsZUNvbnRlbnRzKCk7CiB9CiAKK2Jvb2wgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6
c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlKQoreworICAgIGlmIChmdXp6eUNvbXBhcmUo
c2NhbGUsIG1fcGFnZVNjYWxlRmFjdG9yLCAwLjAwMDEpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBtX3BhZ2VTY2FsZUZhY3RvciA9IHNjYWxlOworICAgIG1fd2ViUGFnZVByb3h5LT5z
Y2FsZVBhZ2UobV9wYWdlU2NhbGVGYWN0b3IsIHJvdW5kZWRJbnRQb2ludChtX2NvbnRlbnRzUG9z
aXRpb24pKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBQYWdlVmlld3BvcnRDb250cm9s
bGVyOjphcHBseVBvc2l0aW9uQWZ0ZXJSZW5kZXJpbmdDb250ZW50cyhjb25zdCBGbG9hdFBvaW50
JiBwb3MpCiB7Ci0gICAgaWYgKG1fY29udGVudHNQb3NpdGlvbiA9PSBwb3MpCisgICAgaWYgKCFz
ZXRDb250ZW50c1Bvc2l0aW9uKHBvcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGVu
dHNQb3NpdGlvbiA9IHBvczsKICAgICBtX3BlbmRpbmdQb3NpdGlvbkNoYW5nZSA9IHRydWU7CiAg
ICAgc3luY1Zpc2libGVDb250ZW50cygpOwogfQogCitib29sIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OnNldENvbnRlbnRzUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zKQor
eworICAgIGlmIChmdXp6eUNvbXBhcmUocG9zLCBtX2NvbnRlbnRzUG9zaXRpb24sIDAuMDAwMSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fY29udGVudHNQb3NpdGlvbiA9IHBvczsK
KyAgICBtX3dlYlBhZ2VQcm94eS0+c2V0U2Nyb2xsUG9zaXRpb24ocm91bmRlZEludFBvaW50KG1f
Y29udGVudHNQb3NpdGlvbikpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXI6OnVwZGF0ZU1pbmltdW1TY2FsZVRvRml0KGJvb2wgdXNlckluaXRpYXRl
ZFVwZGF0ZSkKIHsKICAgICBpZiAobV92aWV3cG9ydFNpemUuaXNFbXB0eSgpIHx8IG1fY29udGVu
dHNTaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlVmlld3BvcnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlci5oCmluZGV4IDM1ZDRiNTMuLjdmY2IzNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaApAQCAtNzQsNyAr
NzQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20gdGhlIHZpZXdwb3J0
LgogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbmV3U2l6ZSk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiB0cmFqZWN0b3J5VmVjdG9yID0gV2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygpKTsKKyAg
ICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiwgZmxvYXQgc2NhbGUpOwogCiAgICAgLy8gTm90aWZpY2F0aW9ucyBmcm9tIHRoZSBXZWJQ
cm9jZXNzLgogICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwpAQCAtODIsMTMgKzgyLDE1IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhjb25zdCBXZWJDb3Jl
OjpWaWV3cG9ydEF0dHJpYnV0ZXMmKTsKICAgICB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292
ZXJlZFJlY3QpOwogICAgIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Ci0gICAg
dm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY3NzUG9z
aXRpb24pOworICAgIHZvaWQgcGFnZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y3NzUG9zaXRpb24pOwogCiBwcml2YXRlOgotICAgIHZvaWQgc3luY1Zpc2libGVDb250ZW50cyhj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50ICZ0cmFqZWN0b3J5VmVjdG9yID0gV2ViQ29yZTo6Rmxv
YXRQb2ludDo6emVybygpKTsKKyAgICB2b2lkIHN5bmNWaXNpYmxlQ29udGVudHMoKTsKICAgICB2
b2lkIGFwcGx5U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0IHNjYWxlKTsKICAgICB2
b2lkIGFwcGx5UG9zaXRpb25BZnRlclJlbmRlcmluZ0NvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIHBvcyk7CiAgICAgYm9vbCB1cGRhdGVNaW5pbXVtU2NhbGVUb0ZpdChib29sIHVz
ZXJJbml0aWF0ZWRVcGRhdGUpOworICAgIGJvb2wgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0KTsK
KyAgICBib29sIHNldENvbnRlbnRzUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OwogCiAgICAgV2ViUGFnZVByb3h5KiBjb25zdCBtX3dlYlBhZ2VQcm94eTsKICAgICBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2NjMDIxYi4uN2NmM2YyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzNDQsNiArMTM0NCwxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2Nyb2xsQnkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHkgZ3JhbnVsYQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2Nyb2xsQnkoZGlyZWN0aW9uLCBncmFudWxhcml0eSksIG1fcGFnZUlEKTsKIH0KIAordm9p
ZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3NpdGlv
bikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiks
IG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlz
aWJsZUFyZWEoKQogewogICAgIGlmICghaXNWYWxpZCgpKQpAQCAtMjc1OCwxMSArMjc2Niw2IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmCiB9CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKLXZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpCi17Ci0gICAgbV9wYWdlQ2xpZW50LT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb2lu
dCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHko
KQogewogICAgIG1fcGFnZUNsaWVudC0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CkBA
IC0yNzgwLDEyICsyNzgzLDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3cG9y
dFByb3BlcnRpZXMoY29uc3QgVmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQogICAgIG1fcGFnZUNs
aWVudC0+ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGF0dHIpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cGFnZURpZFNjcm9sbCgpCit2b2lkIFdlYlBhZ2VQcm94eTo6cGFnZURpZFNjcm9s
bChjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7CiAgICAgbV91aUNsaWVudC5wYWdl
RGlkU2Nyb2xsKHRoaXMpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBkaXNtaXNzQ29ycmVjdGlv
blBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHRJZ25vcmVkKTsKICNlbmRp
ZgorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIG1fcGFnZUNsaWVudC0+cGFnZURp
ZFNjcm9sbChzY3JvbGxQb3NpdGlvbik7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdz
JiBzZXR0aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBk
ODUzMWUyLi42YmJhNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC00MzksNiArNDM5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNjcm9sbEJ5
KFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwor
ICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAg
ICB2b2lkIGNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKTsKIAogICAgIFN0cmluZyBwYWdl
VGl0bGUoKSBjb25zdDsKQEAgLTg1NCw3ICs4NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lu
ZG93VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld1JlY3QsIFdlYkNvcmU6Oklu
dFJlY3QmIHJlc3VsdCk7CiAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlELCBib29sJiBzaG91bGRDbG9zZSk7
CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dGVzJik7Ci0gICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CisgICAgdm9pZCBw
YWdlRGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBydW5PcGVu
UGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5n
cyYpOwogICAgIHZvaWQgcHJpbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGV4
Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5V
c2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNh
Z2UsIHVpbnQ2NF90JiBuZXdRdW90YSk7CkBAIC04NzYsNyArODc3LDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBT
dHJpbmcmIGxhbmcsIGNvbnN0IFN0cmluZyYgZGlyLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmlu
ZywgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogICAgIAogI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQotICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKICAgICB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oUVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2NGM1N2VkLi41MGRiZDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTU2LDcg
KzU2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTY3JlZW5Ub1dpbmRvdyhX
ZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCkgLT4gKFdlYkNvcmU6OkludFBvaW50IHdpbmRv
d1BvaW50KQogICAgIFdpbmRvd1RvU2NyZWVuKFdlYkNvcmU6OkludFJlY3QgcmVjdCkgLT4gKFdl
YkNvcmU6OkludFJlY3Qgc2NyZWVuRnJhbWUpCiAgICAgUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKFdURjo6U3RyaW5nIG1lc3NhZ2UsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChib29sIHNob3Vs
ZENsb3NlKQotICAgIFBhZ2VEaWRTY3JvbGwoKQorICAgIFBhZ2VEaWRTY3JvbGwoV2ViQ29yZTo6
SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24pCiAgICAgUnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MgcGFyYW1ldGVycykKICAgICBQcmludEZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQpIC0+ICgpCiAgICAgUnVuTW9kYWwoKQpAQCAtNzQsNyArNzQs
NiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKLSAgICBQYWdlRGlkUmVxdWVzdFNjcm9sbChXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCkKICAgICBQYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQogI2VuZGlmCiAjaWYg
UExBVEZPUk0oUVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAppbmRleCA2OWNkZTAz
Li41OWYxMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKQEAgLTQ5LDEzICs0
OSw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlQ29u
dGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OnNldFZpZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgY29udGVudHNQb2ludCkKIHsKICAgICBtX2NvbnRlbnRQb3NpdGlvbiA9IGNvbnRlbnRzUG9p
bnQ7Ci0KLSAgICBGbG9hdFBvaW50IHBvcyhjb250ZW50c1BvaW50KTsKLSAgICBwb3Muc2NhbGUo
bV92aWV3LT5wYWdlU2NhbGVGYWN0b3IoKSwgbV92aWV3LT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0g
ICAgcG9zLnNjYWxlKG1fdmlldy0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgbV92aWV3LT5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKLSAgICBtX3ZpZXctPnNldFBhZ2VQb3NpdGlvbihwb3MpOwotCi0gICAg
bV9jb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkobV9jb250ZW50UG9zaXRp
b24sIG1fdmlldy0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIG1fdmlldy0+c2V0UGFnZVBvc2l0
aW9uKG1fY29udGVudFBvc2l0aW9uKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgbmV3U2NhbGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAppbmRleCA1ODQ2ZTIxLi5lZTQyNjM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTEwMiw4ICsxMDIsOCBA
QCB2b2lkIFdlYlZpZXc6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KCkKICAgICAvLyBGSVhNRTog
V2UgbmVlZCB0byBjbGVhbiB1cCB0aGlzIGNvZGUgYXMgaXQgaXMgc3BsaXQgb3ZlciBDb29yZEdm
eCBhbmQgUGFnZS4KICAgICBzY2VuZS0+c2V0RHJhd3NCYWNrZ3JvdW5kKG1fcGFnZS0+ZHJhd3NC
YWNrZ3JvdW5kKCkpOwogCi0gICAgRmxvYXRSZWN0IHZpZXdwb3J0ID0gbV91c2VyVmlld3BvcnRU
cmFuc2Zvcm0ubWFwUmVjdChJbnRSZWN0KEludFBvaW50KCksIG1fZXdrVmlldy0+c2l6ZSgpKSk7
Ci0gICAgc2NlbmUtPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHRyYW5zZm9ybVRvU2NlbmUoKS50
b1RyYW5zZm9ybWF0aW9uTWF0cml4KCksIC8qIG9wYWNpdHkgKi8gMSwgdmlld3BvcnQpOworICAg
IEZsb2F0UmVjdCB2aWV3cG9ydCA9IG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtLm1hcFJlY3QoSW50
UmVjdChJbnRQb2ludCgpLCBtX2V3a1ZpZXctPm5hdGl2ZVNpemUoKSkpOworICAgIHNjZW5lLT5w
YWludFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zvcm1Gcm9tQ29udGVudHNUb1NjZW5lKCkudG9U
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCAvKiBvcGFjaXR5ICovIDEsIHZpZXdwb3J0LCBtX2V3a1Zp
ZXctPnBhZ2VQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpwYWludFRvQ2Fpcm9TdXJm
YWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFdl
YlZpZXc6OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBhZ2VQb3NpdGlvbiA9IG1fZXdrVmlldy0+cGFnZVBvc2l0aW9u
KCk7CiAgICAgZG91YmxlIGVmZmVjdGl2ZVNjYWxlID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpICogbV9ld2tWaWV3LT5wYWdlU2NhbGVGYWN0b3IoKTsKIAotICAgIGNhaXJvX21hdHJpeF90
IHRyYW5zZm9ybSA9IHsgZWZmZWN0aXZlU2NhbGUsIDAsIDAsIGVmZmVjdGl2ZVNjYWxlLCAtIHBh
Z2VQb3NpdGlvbi54KCksIC0gcGFnZVBvc2l0aW9uLnkoKSB9OworICAgIGNhaXJvX21hdHJpeF90
IHRyYW5zZm9ybSA9IHsgZWZmZWN0aXZlU2NhbGUsIDAsIDAsIGVmZmVjdGl2ZVNjYWxlLCAtcGFn
ZVBvc2l0aW9uLngoKSAqIGVmZmVjdGl2ZVNjYWxlLCAtcGFnZVBvc2l0aW9uLnkoKSAqIGVmZmVj
dGl2ZVNjYWxlIH07CiAgICAgY2Fpcm9fc2V0X21hdHJpeChjb250ZXh0LmNyKCksICZ0cmFuc2Zv
cm0pOwogCiAgICAgc2NlbmUtPnBhaW50VG9HcmFwaGljc0NvbnRleHQoJmNvbnRleHQpOwpAQCAt
MTk2LDE0ICsxOTYsMTEgQEAgdm9pZCBXZWJWaWV3OjpkaWRDb21taXRMb2FkKCkKIAogdm9pZCBX
ZWJWaWV3Ojp1cGRhdGVWaWV3cG9ydFNpemUoKQogewotICAgIEZsb2F0U2l6ZSBzaXplID0gbV9l
d2tWaWV3LT5zaXplKCk7Ci0gICAgLy8gVGhlIHZpZXdwb3J0IGNvbnRyb2xsZXIgZXhwZWN0cyBz
aXplcyBpbiBVSSB1bml0cywgYW5kIG5vdCByYXcgZGV2aWNlIHVuaXRzLgotICAgIHNpemUuc2Nh
bGUoMSAvIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgaWYgKG1fcGFnZS0+dXNl
Rml4ZWRMYXlvdXQoKSkgewotICAgICAgICBtX2V3a1ZpZXctPnBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIoKS0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHNpemUpOworICAgICAgICBtX2V3a1ZpZXctPnBh
Z2VWaWV3cG9ydENvbnRyb2xsZXIoKS0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKG1fZXdrVmlldy0+
c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3BhZ2UtPmRyYXdpbmdBcmVh
KCktPnNldFZpc2libGVDb250ZW50c1JlY3QoRmxvYXRSZWN0KG1fZXdrVmlldy0+cGFnZVBvc2l0
aW9uKCksIHNpemUpLCBGbG9hdFBvaW50KCkpOworICAgIG1fcGFnZS0+c2V0U2Nyb2xsUG9zaXRp
b24ocm91bmRlZEludFBvaW50KG1fZXdrVmlldy0+cGFnZVBvc2l0aW9uKCkpKTsKIH0KIAogdm9p
ZCBXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSkKQEAgLTIxNSwxOSArMjEyLDI0IEBAIHZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlQ29udGVu
dHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCiAgICAgbV9jbGllbnQuZGlkQ2hh
bmdlQ29udGVudHNTaXplKHRoaXMsIHNpemUpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gV2ViVmll
dzo6dHJhbnNmb3JtRnJvbVNjZW5lKCkgY29uc3QKK0FmZmluZVRyYW5zZm9ybSBXZWJWaWV3Ojp0
cmFuc2Zvcm1Gcm9tU2NlbmVUb1dlYlZpZXcoKSBjb25zdAogewotICAgIHJldHVybiB0cmFuc2Zv
cm1Ub1NjZW5lKCkuaW52ZXJzZSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bSA9IG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtOworCisgICAgdHJhbnNmb3JtLnNjYWxlKG1fcGFn
ZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKG1fZXdrVmlldy0+
cGFnZVNjYWxlRmFjdG9yKCkpOworCisgICAgcmV0dXJuIHRyYW5zZm9ybS50b0FmZmluZVRyYW5z
Zm9ybSgpLmludmVyc2UoKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9y
bVRvU2NlbmUoKSBjb25zdAorQWZmaW5lVHJhbnNmb3JtIFdlYlZpZXc6OnRyYW5zZm9ybUZyb21D
b250ZW50c1RvU2NlbmUoKSBjb25zdAogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5z
Zm9ybSA9IG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtOwogCiAgICAgY29uc3QgRmxvYXRQb2ludCYg
cGFnZVBvc2l0aW9uID0gbV9ld2tWaWV3LT5wYWdlUG9zaXRpb24oKTsKLSAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlKC1wYWdlUG9zaXRpb24ueCgpLCAtcGFnZVBvc2l0aW9uLnkoKSk7CiAgICAgdHJh
bnNmb3JtLnNjYWxlKG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgdHJhbnNmb3Jt
LnNjYWxlKG1fZXdrVmlldy0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUoLXBhZ2VQb3NpdGlvbi54KCksIC1wYWdlUG9zaXRpb24ueSgpKTsKIAogICAgIHJldHVy
biB0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKTsKIH0KQEAgLTI1Niw2ICsyNTgsNyBAQCBQ
YXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IFdlYlZpZXc6OmNyZWF0ZURyYXdpbmdBcmVhUHJv
eHkoKQogdm9pZCBXZWJWaWV3OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGFyZWEpCiB7CiAgICAgbV9jbGllbnQudmlld05lZWRzRGlzcGxheSh0aGlzLCBhcmVh
KTsKKyAgICBtX2V3a1ZpZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOwogfQogCiB2b2lkIFdl
YlZpZXc6OmRpc3BsYXlWaWV3KCkKQEAgLTUxNCwxMCArNTE3LDEwIEBAIHZvaWQgV2ViVmlldzo6
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmli
dXRlcyYgYXR0CiAgICAgbV9ld2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKIH0KIAot
dm9pZCBXZWJWaWV3OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRp
b24pCit2b2lkIFdlYlZpZXc6OnBhZ2VEaWRTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9u
KQogewogICAgIGlmIChtX3BhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpIHsgICAgICAgIAotICAgICAg
ICBtX2V3a1ZpZXctPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoKS0+cGFnZURpZFJlcXVlc3RTY3Jv
bGwocG9zaXRpb24pOworICAgICAgICBtX2V3a1ZpZXctPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXIo
KS0+cGFnZURpZFNjcm9sbChwb3NpdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
bV9ld2tWaWV3LT5zZXRQYWdlUG9zaXRpb24oRmxvYXRQb2ludChwb3NpdGlvbikpOwpAQCAtNTI2
LDExICs1MjksOSBAQCB2b2lkIFdlYlZpZXc6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IElu
dFBvaW50JiBwb3NpdGlvbikKIAogdm9pZCBXZWJWaWV3OjpkaWRSZW5kZXJGcmFtZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNv
dmVyZWRSZWN0KQogewotICAgIGlmIChtX3BhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpIHsKLSAgICAg
ICAgbV9ld2tWaWV3LT5wYWdlVmlld3BvcnRDb250cm9sbGVyKCktPmRpZFJlbmRlckZyYW1lKGNv
bnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOworICAgIGlmICghbV9wYWdlLT51c2VGaXhlZExheW91
dCgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZXdrVmlldy0+c2NoZWR1bGVVcGRh
dGVEaXNwbGF5KCk7CisgICAgbV9ld2tWaWV3LT5wYWdlVmlld3BvcnRDb250cm9sbGVyKCktPmRp
ZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOwogfQogCiB2b2lkIFdlYlZp
ZXc6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViVmlldy5oCmluZGV4IDQyYzhkMTMuLmE5YjhlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5oCkBAIC05Miw4ICs5Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKICAgICAvLyBG
SVhNRTogU2hvdWxkIGJlY29tZSBwcml2YXRlIHdoZW4gV2ViIEV2ZW50cyBjcmVhdGlvbiBpcyBt
b3ZlZCB0byBXZWJWaWV3LgotICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1G
cm9tU2NlbmUoKSBjb25zdDsKLSAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
VG9TY2VuZSgpIGNvbnN0OworICAgIFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1G
cm9tU2NlbmVUb1dlYlZpZXcoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0g
dHJhbnNmb3JtRnJvbUNvbnRlbnRzVG9TY2VuZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KCk7CkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdG9vbFRpcENoYW5n
ZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKLSAgICB2b2lkIHBh
Z2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgT1ZFUlJJREU7Cisg
ICAgdm9pZCBwYWdlRGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgT1ZFUlJJREU7
CiAgICAgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50
c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KSBPVkVSUklERTsKICAg
ICB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpIE9WRVJSSURFOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50UXQuY3BwCmluZGV4IGQ3ZTFjZDEuLjg0YTMyMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50UXQuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8UXRRdWljay9xcXVp
Y2tpdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Zsb2F0U2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ3LDYgKzQ4LDcgQEAgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudFF0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQoUVF1aWNrV2Vi
VmlldyogdmkKICAgICAsIG1fem9vbU91dFNjYWxlKDApCiAgICAgLCBtX2lzVXNlckludGVyYWN0
aW5nKGZhbHNlKQogICAgICwgbV9pZ25vcmVWaWV3cG9ydENoYW5nZXMoZmFsc2UpCisgICAgLCBt
X2lzVmlld3BvcnRQb3NpdGlvblN5Y2hyb25pemluZ1dpdGhQYWdlVmlld3BvcnRDb250cm9sbGVy
KGZhbHNlKQogewogICAgIG1fc2NhbGVBbmltYXRpb24tPnNldER1cmF0aW9uKGtTY2FsZUFuaW1h
dGlvbkR1cmF0aW9uTWlsbGlzKTsKICAgICBtX3NjYWxlQW5pbWF0aW9uLT5zZXRFYXNpbmdDdXJ2
ZShRRWFzaW5nQ3VydmU6Ok91dEN1YmljKTsKQEAgLTEyMiw4ICsxMjQsNiBAQCB2b2lkIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6YW5pbWF0ZUNvbnRlbnRSZWN0VmlzaWJsZShjb25z
dCBRUmVjdEYmIGNvbgogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmZsaWNr
TW92ZVN0YXJ0ZWQoKQogewogICAgIG1fY29udHJvbGxlci0+c3VzcGVuZENvbnRlbnQoKTsKLQot
ICAgIG1fbGFzdFNjcm9sbFBvc2l0aW9uID0gbV92aWV3cG9ydEl0ZW0tPmNvbnRlbnRQb3MoKTsK
IH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmZsaWNrTW92ZUVuZGVk
KCkKQEAgLTEzOSwxMSArMTM5LDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
UXQ6OnBhZ2VJdGVtUG9zaXRpb25DaGFuZ2VkKCkKICAgICBpZiAobV9pZ25vcmVWaWV3cG9ydENo
YW5nZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFFQb2ludEYgbmV3UG9zaXRpb24gPSBtX3Zp
ZXdwb3J0SXRlbS0+Y29udGVudFBvcygpOwotCi0gICAgdXBkYXRlVmlld3BvcnRDb250cm9sbGVy
KG1fbGFzdFNjcm9sbFBvc2l0aW9uIC0gbmV3UG9zaXRpb24pOwotCi0gICAgbV9sYXN0U2Nyb2xs
UG9zaXRpb24gPSBuZXdQb3NpdGlvbjsKKyAgICB1cGRhdGVWaWV3cG9ydENvbnRyb2xsZXIoKTsK
IH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNjYWxlQW5pbWF0aW9u
U3RhdGVDaGFuZ2VkKFFBYnN0cmFjdEFuaW1hdGlvbjo6U3RhdGUgbmV3U3RhdGUsIFFBYnN0cmFj
dEFuaW1hdGlvbjo6U3RhdGUgLypvbGRTdGF0ZSovKQpAQCAtMzE3LDEyICszMTMsMTUgQEAgUVJl
Y3RGIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6bmVhcmVzdFZhbGlkVmlzaWJsZUNv
bnRlbnRzUmVjdCgpIGNvbnN0CiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6
c2V0Vmlld3BvcnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBjb250ZW50c1BvaW50KQogewog
ICAgIFFQb2ludEYgbmV3UG9zaXRpb24oKG1fcGFnZUl0ZW0tPnBvc2l0aW9uKCkgKyBRUG9pbnRG
KGNvbnRlbnRzUG9pbnQpKSAqIG1fcGFnZUl0ZW0tPmNvbnRlbnRzU2NhbGUoKSk7Ci0gICAgLy8g
VGhlIGNvbnRlbnRYIGFuZCBjb250ZW50WSBwcm9wZXJ0eSBjaGFuZ2VzIHRyaWdnZXIgYSB2aXNp
YmxlIHJlY3QgdXBkYXRlLgorICAgIC8vIFByZXZlbnQgYSB2aXNpYmxlIHJlY3QgdXBkYXRlIGR1
ZSB0byB0aGUgY29udGVudFggYW5kIGNvbnRlbnRZIHByb3BlcnR5IGNoYW5nZXMsIGJlY2F1c2Ug
dGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gUGFnZVZpZXdwb3J0Q29udHJvbGxlciBzeW5jaHJv
bml6ZXMgdGhlIHZpZXdwb3J0IHBvc2l0aW9uIGluc3RlYWQgb2YgdXNlciBpbnRlcmFjdGlvbi4K
KyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHJvdGVjdG9yKG1faXNWaWV3cG9ydFBvc2l0aW9u
U3ljaHJvbml6aW5nV2l0aFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIsIHRydWUpOwogICAgIG1fdmll
d3BvcnRJdGVtLT5zZXRDb250ZW50UG9zKG5ld1Bvc2l0aW9uKTsKIH0KIAogdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBsb2NhbFNj
YWxlKQogeworICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiBzZXRWaWV3cG9ydFBvc2l0aW9uKCku
CisgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHByb3RlY3RvcihtX2lzVmlld3BvcnRQb3NpdGlv
blN5Y2hyb25pemluZ1dpdGhQYWdlVmlld3BvcnRDb250cm9sbGVyLCB0cnVlKTsKICAgICBzY2Fs
ZUNvbnRlbnQobG9jYWxTY2FsZSk7CiB9CiAKQEAgLTUwMSwxMCArNTAwLDEzIEBAIHZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMo
KQogICAgIGVtaXQgbV92aWV3cG9ydEl0ZW0tPmV4cGVyaW1lbnRhbCgpLT50ZXN0KCktPnZpZXdw
b3J0Q2hhbmdlZCgpOwogfQogCi12b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6
dXBkYXRlVmlld3BvcnRDb250cm9sbGVyKGNvbnN0IFFQb2ludEYmIHRyYWplY3RvcnkpCit2b2lk
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6dXBkYXRlVmlld3BvcnRDb250cm9sbGVy
KCkKIHsKKyAgICAvLyBTZWUgdGhlIGNvbW1lbnQgaW4gc2V0Vmlld3BvcnRQb3NpdGlvbigpLgor
ICAgIGlmIChtX2lzVmlld3BvcnRQb3NpdGlvblN5Y2hyb25pemluZ1dpdGhQYWdlVmlld3BvcnRD
b250cm9sbGVyKQorICAgICAgICByZXR1cm47CiAgICAgRmxvYXRQb2ludCB2aWV3cG9ydFBvcyA9
IG1fdmlld3BvcnRJdGVtLT5tYXBUb1dlYkNvbnRlbnQoUVBvaW50RigpKTsKLSAgICBtX2NvbnRy
b2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eSh2aWV3cG9ydFBvcywgbV9wYWdlSXRl
bS0+Y29udGVudHNTY2FsZSgpLCB0cmFqZWN0b3J5KTsKKyAgICBtX2NvbnRyb2xsZXItPmRpZENo
YW5nZUNvbnRlbnRzVmlzaWJpbGl0eSh2aWV3cG9ydFBvcywgbV9wYWdlSXRlbS0+Y29udGVudHNT
Y2FsZSgpKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNjYWxl
Q29udGVudChxcmVhbCBpdGVtU2NhbGUsIGNvbnN0IFFQb2ludEYmIGNlbnRlckluQ1NTQ29vcmRp
bmF0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmgKaW5kZXggZjg1ZTliZC4uZTg2Njc5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50UXQuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAg
UVJlY3RGIG5lYXJlc3RWYWxpZFZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKIAogICAgIHZv
aWQgc2V0Q29udGVudHNSZWN0VG9OZWFyZXN0VmFsaWRCb3VuZHMoKTsKLSAgICB2b2lkIHVwZGF0
ZVZpZXdwb3J0Q29udHJvbGxlcihjb25zdCBRUG9pbnRGJiB0cmFqZWN0b3J5ID0gUVBvaW50Rigp
KTsKKyAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0Q29udHJvbGxlcigpOwogICAgIHZvaWQgc2V0Q29u
dGVudFJlY3RWaXNpYmxlUG9zaXRpb25BdFNjYWxlKGNvbnN0IFFQb2ludEYmIGxvY2F0aW9uLCBx
cmVhbCBpdGVtU2NhbGUpOwogICAgIHZvaWQgYW5pbWF0ZUNvbnRlbnRSZWN0VmlzaWJsZShjb25z
dCBRUmVjdEYmIGNvbnRlbnRSZWN0KTsKICAgICB2b2lkIHNjYWxlQ29udGVudChxcmVhbCBpdGVt
U2NhbGUsIGNvbnN0IFFQb2ludEYmIGNlbnRlckluQ1NTQ29vcmRpbmF0ZXMgPSBRUG9pbnRGKCkp
OwpAQCAtMTMyLDEzICsxMzIsMTMgQEAgcHJpdmF0ZToKIAogICAgIFNjYWxlQW5pbWF0aW9uKiBt
X3NjYWxlQW5pbWF0aW9uOwogICAgIFFQb2ludEYgbV9sYXN0UGluY2hDZW50ZXJJblZpZXdwb3J0
Q29vcmRpbmF0ZXM7Ci0gICAgUVBvaW50RiBtX2xhc3RTY3JvbGxQb3NpdGlvbjsKICAgICBxcmVh
bCBtX3BpbmNoU3RhcnRTY2FsZTsKICAgICBxcmVhbCBtX2xhc3RDb21taXR0ZWRTY2FsZTsKICAg
ICBxcmVhbCBtX3pvb21PdXRTY2FsZTsKICAgICBRTGlzdDxTY2FsZVN0YWNrSXRlbT4gbV9zY2Fs
ZVN0YWNrOwogICAgIGJvb2wgbV9pc1VzZXJJbnRlcmFjdGluZzsKICAgICBib29sIG1faWdub3Jl
Vmlld3BvcnRDaGFuZ2VzOworICAgIGJvb2wgbV9pc1ZpZXdwb3J0UG9zaXRpb25TeWNocm9uaXpp
bmdXaXRoUGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcAppbmRleCA4
OWE0MGM5Li5hOGM4YTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRQYWdlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdl
Q2xpZW50LmNwcApAQCAtODMsOSArODMsOSBAQCB2b2lkIFF0UGFnZUNsaWVudDo6ZGlkUmVuZGVy
RnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZQogICAg
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+ZGlkUmVuZGVyRnJhbWUoKTsK
IH0KIAotdm9pZCBRdFBhZ2VDbGllbnQ6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBv
aW50JiBwb3MpCit2b2lkIFF0UGFnZUNsaWVudDo6cGFnZURpZFNjcm9sbChjb25zdCBJbnRQb2lu
dCYgcG9zKQogewotICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+cGFn
ZURpZFJlcXVlc3RTY3JvbGwocG9zKTsKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1f
d2ViVmlldyktPnBhZ2VEaWRTY3JvbGwocG9zKTsKIH0KIAogdm9pZCBRdFBhZ2VDbGllbnQ6OnBy
b2Nlc3NEaWRDcmFzaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRQYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50
LmgKaW5kZXggYmMzZTNmMS4uZDVlM2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFBhZ2VDbGllbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzVmlld0ZvY3VzZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChj
b25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250
ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVz
Jik7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcAppbmRleCBi
ODA2MTM0Li5hMzU5NDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlRXZlbnRIYW5kbGVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUXRX
ZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCogZXYp
CiAgICAgLy8gTk9URTogbGFzdFBvcyBmcm9tIHRoZSBldmVudCBhbHdheXMgY29tZXMgZW1wdHks
IHNvIHdlIHdvcmsKICAgICAvLyBhcm91bmQgdGhhdCBoZXJlLgogICAgIHN0YXRpYyBRUG9pbnRG
IGxhc3RQb3MgPSBRUG9pbnRGKCk7Ci0gICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9
IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW0oKTsKKyAgICBRVHJhbnNmb3JtIGZyb21JdGVt
VHJhbnNmb3JtID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbVRvV2ViVmlldygpOwogICAg
IFFQb2ludEYgd2ViUGFnZVBvaW50ID0gZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKGV2LT5sb2NhbFBv
cygpKTsKICAgICBldi0+YWNjZXB0KCk7CiAgICAgaWYgKGxhc3RQb3MgPT0gd2ViUGFnZVBvaW50
KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZU1vdmVFdmVudChRTW91c2VFdmVudCogZXYpCiAKIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQogewotICAgIFFUcmFu
c2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7
CisgICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3Jt
RnJvbUl0ZW1Ub1dlYlZpZXcoKTsKICAgICBRUG9pbnRGIHdlYlBhZ2VQb2ludCA9IGZyb21JdGVt
VHJhbnNmb3JtLm1hcChldi0+bG9jYWxQb3MoKSk7CiAKICAgICBpZiAobV9jbGlja1RpbWVyLmlz
QWN0aXZlKCkKQEAgLTE1MywxMyArMTUzLDEzIEBAIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQogdm9pZCBRdFdlYlBhZ2VF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KFFNb3VzZUV2ZW50KiBldikKIHsK
ICAgICBldi0+YWNjZXB0KCk7Ci0gICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1f
d2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW0oKTsKKyAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJh
bnNmb3JtID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbVRvV2ViVmlldygpOwogICAgIG1f
d2ViUGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsIGZy
b21JdGVtVHJhbnNmb3JtLCAvKmV2ZW50Q2xpY2tDb3VudCovIDApKTsKIH0KIAogdm9pZCBRdFdl
YlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2KQogewot
ICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZy
b21JdGVtKCk7CisgICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+
dHJhbnNmb3JtRnJvbUl0ZW1Ub1dlYlZpZXcoKTsKICAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxl
V2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2LCBmcm9tSXRlbVRyYW5zZm9ybSkpOwog
fQogCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmhhbmRs
ZUhvdmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50KiBldikKIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5k
bGVyOjpoYW5kbGVEcmFnRW50ZXJFdmVudChRRHJhZ0VudGVyRXZlbnQqIGV2KQogewogICAgIG1f
d2ViUGFnZVByb3h5LT5yZXNldERyYWdPcGVyYXRpb24oKTsKLSAgICBRVHJhbnNmb3JtIGZyb21J
dGVtVHJhbnNmb3JtID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbSgpOworICAgIFFUcmFu
c2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtVG9X
ZWJWaWV3KCk7CiAgICAgLy8gRklYTUU6IFNob3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCiAg
ICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIGZyb21JdGVtVHJhbnNmb3JtLm1h
cChldi0+cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihl
di0+cG9zc2libGVBY3Rpb25zKCkpKTsKICAgICBtX3dlYlBhZ2VQcm94eS0+ZHJhZ0VudGVyZWQo
JmRyYWdEYXRhKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxl
cjo6aGFuZGxlRHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCogZXYpCiB7CiAgICAgYm9vbCBh
Y2NlcHRlZCA9IGV2LT5pc0FjY2VwdGVkKCk7CiAKLSAgICBRVHJhbnNmb3JtIGZyb21JdGVtVHJh
bnNmb3JtID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbSgpOworICAgIFFUcmFuc2Zvcm0g
ZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtVG9XZWJWaWV3
KCk7CiAgICAgLy8gRklYTUU6IFNob3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCiAgICAgRHJh
Z0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIGZyb21JdGVtVHJhbnNmb3JtLm1hcChldi0+
cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9z
c2libGVBY3Rpb25zKCkpKTsKICAgICBtX3dlYlBhZ2VQcm94eS0+ZHJhZ1VwZGF0ZWQoJmRyYWdE
YXRhKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFu
ZGxlRHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCogZXYpCiB2b2lkIFF0V2ViUGFnZUV2ZW50
SGFuZGxlcjo6aGFuZGxlRHJvcEV2ZW50KFFEcm9wRXZlbnQqIGV2KQogewogICAgIGJvb2wgYWNj
ZXB0ZWQgPSBldi0+aXNBY2NlcHRlZCgpOwotICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zv
cm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgUVRyYW5zZm9ybSBmcm9t
SXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW1Ub1dlYlZpZXcoKTsK
ICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNvcjo6cG9zKCkKICAgICBEcmFnRGF0
YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKGV2LT5wb3Mo
KSksIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGV2LT5wb3NzaWJs
ZUFjdGlvbnMoKSkpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CkBAIC0y
NDAsNyArMjQwLDcgQEAgdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmFjdGl2YXRlVGFwSGln
aGxpZ2h0KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50JgogICAgIEFTU0VSVCghcG9pbnQu
cG9zKCkudG9Qb2ludCgpLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoIW1faXNUYXBIaWdobGlnaHRB
Y3RpdmUpOwogICAgIG1faXNUYXBIaWdobGlnaHRBY3RpdmUgPSB0cnVlOwotICAgIFFUcmFuc2Zv
cm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7Cisg
ICAgUVRyYW5zZm9ybSBmcm9tSXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJv
bUl0ZW1Ub1dlYlZpZXcoKTsKICAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlUG90ZW50aWFsQWN0
aXZhdGlvbihJbnRQb2ludChmcm9tSXRlbVRyYW5zZm9ybS5tYXAocG9pbnQucG9zKCkpLnRvUG9p
bnQoKSksIEludFNpemUocG9pbnQucmVjdCgpLnNpemUoKS50b1NpemUoKSkpOwogI2Vsc2UKICAg
ICBRX1VOVVNFRChwb2ludCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBRdFdlYlBhZ2VFdmVu
dEhhbmRsZXI6OmhhbmRsZVNpbmdsZVRhcEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50OjpUb3VjaFBv
aW50JgogICAgIGRlYWN0aXZhdGVUYXBIaWdobGlnaHQoKTsKICAgICBtX3Bvc3Rwb25lVGV4dElu
cHV0U3RhdGVDaGFuZ2VkID0gdHJ1ZTsKIAotICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zv
cm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtKCk7CisgICAgUVRyYW5zZm9ybSBmcm9t
SXRlbVRyYW5zZm9ybSA9IG1fd2ViUGFnZS0+dHJhbnNmb3JtRnJvbUl0ZW1Ub1dlYlZpZXcoKTsK
ICAgICBXZWJHZXN0dXJlRXZlbnQgZ2VzdHVyZShXZWJFdmVudDo6R2VzdHVyZVNpbmdsZVRhcCwg
ZnJvbUl0ZW1UcmFuc2Zvcm0ubWFwKHBvaW50LnBvcygpKS50b1BvaW50KCksIHBvaW50LnNjcmVl
blBvcygpLnRvUG9pbnQoKSwgV2ViRXZlbnQ6Ok1vZGlmaWVycygwKSwgMCwgSW50U2l6ZShwb2lu
dC5yZWN0KCkuc2l6ZSgpLnRvU2l6ZSgpKSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgbV93ZWJQ
YWdlUHJveHktPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlKTsKIH0KQEAgLTI3Miw3ICsyNzIs
NyBAQCB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlU2luZ2xlVGFwRXZlbnQoY29u
c3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmCiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6
aGFuZGxlRG91YmxlVGFwRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50
KQogewogICAgIGRlYWN0aXZhdGVUYXBIaWdobGlnaHQoKTsKLSAgICBRVHJhbnNmb3JtIGZyb21J
dGVtVHJhbnNmb3JtID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRlbSgpOworICAgIFFUcmFu
c2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5zZm9ybUZyb21JdGVtVG9X
ZWJWaWV3KCk7CiAgICAgbV93ZWJQYWdlUHJveHktPmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChm
cm9tSXRlbVRyYW5zZm9ybS5tYXAocG9pbnQucG9zKCkpLnRvUG9pbnQoKSwgSW50U2l6ZShwb2lu
dC5yZWN0KCkuc2l6ZSgpLnRvU2l6ZSgpKSk7CiB9CiAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lk
IFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlSW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRo
b2RFdmVudCogZXYpCiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVu
dChRVG91Y2hFdmVudCogZXZlbnQpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBR
VHJhbnNmb3JtIGZyb21JdGVtVHJhbnNmb3JtID0gbV93ZWJQYWdlLT50cmFuc2Zvcm1Gcm9tSXRl
bSgpOworICAgIFFUcmFuc2Zvcm0gZnJvbUl0ZW1UcmFuc2Zvcm0gPSBtX3dlYlBhZ2UtPnRyYW5z
Zm9ybUZyb21JdGVtVG9XZWJWaWV3KCk7CiAgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNo
RXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudChldmVudCwgZnJvbUl0ZW1UcmFuc2Zvcm0pKTsKICAg
ICBldmVudC0+YWNjZXB0KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlU0dOb2RlLmNwcAppbmRleCAwMDJkMDA1Li4xMWFkZDliOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgICAgICBib29sIG1pcnJvcmVkID0gcHJvamVjdGlvbiAmJiAo
KnByb2plY3Rpb24pKDAsIDApICogKCpwcm9qZWN0aW9uKSgxLCAxKSAtICgqcHJvamVjdGlvbiko
MCwgMSkgKiAoKnByb2plY3Rpb24pKDEsIDApID4gMDsKIAogICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBub24tcmVjdGFuZ3VsYXIgY2xpcHBpbmdzLgotICAgICAgICBjb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUoKS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQocmVuZGVyTWF0cml4LCBpbmhlcml0
ZWRPcGFjaXR5KCksIGNsaXBSZWN0KCksIG1pcnJvcmVkID8gVGV4dHVyZU1hcHBlcjo6UGFpbnRp
bmdNaXJyb3JlZCA6IDApOworICAgICAgICBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKS0+cGFp
bnRUb0N1cnJlbnRHTENvbnRleHQocmVuZGVyTWF0cml4LCBpbmhlcml0ZWRPcGFjaXR5KCksIGNs
aXBSZWN0KCksIHBhZ2VOb2RlKCktPnNjcm9sbFBvc2l0aW9uKCksIG1pcnJvcmVkID8gVGV4dHVy
ZU1hcHBlcjo6UGFpbnRpbmdNaXJyb3JlZCA6IDApOwogICAgIH0KIAogICAgIH5Db250ZW50c1NH
Tm9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
U0dOb2RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlU0dOb2RlLmgK
aW5kZXggNzdhZDgxYi4uYjE0YzMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZVNHTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VTR05vZGUuaApAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBRdFdlYlBhZ2VTR05v
ZGUgOiBwdWJsaWMgUVNHVHJhbnNmb3JtTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBRdFdl
YlBhZ2VTR05vZGUoKTsKICAgICAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kKGNvbnN0IFFSZWN0RiYs
IGNvbnN0IFFDb2xvciYpOworICAgICAgICBjb25zdCBRUG9pbnRGJiBzY3JvbGxQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KKyAgICAgICAgdm9pZCBzZXRTY3Jv
bGxQb3NpdGlvbihjb25zdCBRUG9pbnRGJiBzY3JvbGxQb3NpdGlvbikgeyBtX3Njcm9sbFBvc2l0
aW9uID0gc2Nyb2xsUG9zaXRpb247IH0KICAgICAgICAgdm9pZCBzZXRTY2FsZShmbG9hdCk7CiAg
ICAgICAgIHZvaWQgc2V0Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPik7CiAgICAgICAgIHFyZWFsIGRldmljZVBpeGVs
UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2RldmljZVBpeGVsUmF0aW87IH0KQEAgLTQ5LDYgKzUx
LDcgQEAgY2xhc3MgUXRXZWJQYWdlU0dOb2RlIDogcHVibGljIFFTR1RyYW5zZm9ybU5vZGUgewog
ICAgIHByaXZhdGU6CiAgICAgICAgIENvbnRlbnRzU0dOb2RlKiBtX2NvbnRlbnRzTm9kZTsKICAg
ICAgICAgUVNHU2ltcGxlUmVjdE5vZGUqIG1fYmFja2dyb3VuZE5vZGU7CisgICAgICAgIFFQb2lu
dEYgbV9zY3JvbGxQb3NpdGlvbjsKICAgICAgICAgcXJlYWwgbV9kZXZpY2VQaXhlbFJhdGlvOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDQ2OTdjMDYuLmU1ZmNiM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTM5OCwyMCArMzk4LDI0IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjppbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGJvb2wpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wYWdlLT5wYWdl
RGlkU2Nyb2xsKCk7CisgICAgbV9wYWdlLT5wYWdlRGlkU2Nyb2xsKG1fcGFnZS0+Y29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKSk7CisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2Nyb2xsKHJlY3Qs
IEludFNpemUoKSk7CisjZWxzZQogICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KHJlY3QpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpz
Y3JvbGwoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHNjcm9sbFJl
Y3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewotICAgIG1fcGFnZS0+cGFnZURpZFNjcm9s
bCgpOworICAgIG1fcGFnZS0+cGFnZURpZFNjcm9sbChtX3BhZ2UtPmNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLT52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCkpOwogICAgIG1fcGFnZS0+ZHJhd2luZ0Fy
ZWEoKS0+c2Nyb2xsKGludGVyc2VjdGlvbihzY3JvbGxSZWN0LCBjbGlwUmVjdCksIHNjcm9sbERl
bHRhKTsKIH0KIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBJbnRQb2ludCYgc2Nyb2xsT2Zm
c2V0KQogewotICAgIG1fcGFnZS0+cGFnZURpZFJlcXVlc3RTY3JvbGwoc2Nyb2xsT2Zmc2V0KTsK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KICNlbmRpZgogCkBAIC00NDUsMTYgKzQ0OSwx
NCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Y29udGVudHNTaXplQ2hhbmdlZChGcmFtZSogZnJh
bWUsIGNvbnN0IEludFNpemUmIHNpemUpIGNvbgogICAgICAgICByZXR1cm47CiAKICNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKG1fcGFnZS0+dXNlRml4ZWRMYXlvdXQoKSkK
LSAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVIb3N0KCktPnNpemVEaWRD
aGFuZ2Uoc2l6ZSk7Ci0KKyAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUhvc3Qo
KS0+Y29udGVudHNTaXplRGlkQ2hhbmdlKHNpemUpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSkpOwogI2VuZGlmCiAK
ICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPm1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChz
aXplKTsKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKLSAgICBp
ZiAoZnJhbWVWaWV3ICYmICFmcmFtZVZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpKSAgeworICAg
IGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5jYW5IYXZlU2Nyb2xsYmFycygpKSAgewogICAg
ICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBmcmFtZVZpZXctPmhvcml6b250YWxT
Y3JvbGxiYXIoKTsKICAgICAgICAgYm9vbCBoYXNWZXJ0aWNhbFNjcm9sbGJhciA9IGZyYW1lVmll
dy0+dmVydGljYWxTY3JvbGxiYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCBhODNkZTFkLi4zYTc3ODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMTIwNyw3ICsxMjA3LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBzaG91bGRVc2VGaXhlZExh
eW91dCA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCk7CiAgICAgYm9v
bCBzaG91bGREaXNhYmxlU2Nyb2xsaW5nID0gaXNNYWluRnJhbWUgJiYgIXdlYlBhZ2UtPm1haW5G
cmFtZUlzU2Nyb2xsYWJsZSgpOwogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSBzaG91
bGRVc2VGaXhlZExheW91dCB8fCBzaG91bGREaXNhYmxlU2Nyb2xsaW5nOwotICAgIEludFJlY3Qg
Y3VycmVudEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZp
ZXcoKSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPmZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0KCkgOiBJbnRSZWN0KCk7CiAKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVz
cG9uc2UoKTsKICAgICBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24gPSBpc01haW5GcmFt
ZSAmJiB3ZWJQYWdlLT5zaG91bGRVc2VDdXN0b21SZXByZXNlbnRhdGlvbkZvclJlc3BvbnNlKHJl
c3BvbnNlKTsKQEAgLTEyMTYsNyArMTIxNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIFNjcm9sbGJhck1vZGUgZGVm
YXVsdFNjcm9sbGJhck1vZGUgPSBzaG91bGRIaWRlU2Nyb2xsYmFycyA/IFNjcm9sbGJhckFsd2F5
c09mZiA6IFNjcm9sbGJhckF1dG87CiAKICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRl
Vmlldyh3ZWJQYWdlLT5zaXplKCksIGJhY2tncm91bmRDb2xvciwgaXNUcmFuc3BhcmVudCwKLSAg
ICAgICAgSW50U2l6ZSgpLCBjdXJyZW50Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QsIHNob3VsZFVz
ZUZpeGVkTGF5b3V0LAorICAgICAgICBJbnRTaXplKCksIEludFJlY3QoKSwgc2hvdWxkVXNlRml4
ZWRMYXlvdXQsCiAgICAgICAgIGRlZmF1bHRTY3JvbGxiYXJNb2RlLCAvKiBsb2NrICovIHNob3Vs
ZEhpZGVTY3JvbGxiYXJzLCBkZWZhdWx0U2Nyb2xsYmFyTW9kZSwgLyogbG9jayAqLyBzaG91bGRI
aWRlU2Nyb2xsYmFycyk7CiAKICAgICBpbnQgbWluaW11bUxheW91dFdpZHRoID0gd2ViUGFnZS0+
bWluaW11bUxheW91dFdpZHRoKCk7CkBAIC0xMjI4LDcgKzEyMjcsNiBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKIAogI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIGlmIChzaG91bGRVc2VGaXhlZExheW91dCkgewot
ICAgICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5zZXREZWxlZ2F0ZXNTY3JvbGxp
bmcoc2hvdWxkVXNlRml4ZWRMYXlvdXQpOwogICAgICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
dmlldygpLT5zZXRQYWludHNFbnRpcmVDb250ZW50cyhzaG91bGRVc2VGaXhlZExheW91dCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA3YWNlZjMwLi5kODU5YWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAKQEAgLTk1LDYgKzk1LDcgQEAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkKIHsKICAgICBtX3dlYlBh
Z2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnNldFNjcm9sbGluZ0Nvb3JkaW5hdG9yRW5hYmxl
ZCh0cnVlKTsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnNldEFwcGx5
RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0
cnVlKTsKIAogICAgIC8vIENyZWF0ZSBhIHJvb3QgbGF5ZXIuCiAgICAgbV9yb290TGF5ZXIgPSBH
cmFwaGljc0xheWVyOjpjcmVhdGUodGhpcywgdGhpcyk7CkBAIC0xODksMTggKzE5MCw0MyBAQCB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXkoKQogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCi12b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJl
Y3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIEludFJlY3QgY29udGVudHNSZWN0ID0gbV93ZWJQ
YWdlLT5tYWluRnJhbWVWaWV3KCktPndpbmRvd1RvQ29udGVudHMocmVjdCk7CisgICAgbV9ub25D
b21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoY29udGVudHNSZWN0
KTsKICAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVyKQotICAgICAgICBtX3BhZ2VPdmVybGF5TGF5
ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICAgICAgbV9wYWdlT3ZlcmxheUxh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoY29udGVudHNSZWN0KTsKIAogICAgIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpOwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2Nyb2xs
Tm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQordm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCiB7Ci0gICAgLy8gRG8gbm90aGlu
ZyBiZWNhdXNlIHdlIHNjcm9sbCB1c2luZyBUaWxlZEJhY2tpbmdTdG9yZS4KKyAgICAvLyBBIHpl
cm8gdHJhamVjdG9yeVZlY3RvciBpbmRpY2F0ZXMgdGhhdCB0aWxlcyBhbGwgYXJvdW5kIHRoZSB2
aWV3cG9ydCBhcmUgcmVxdWVzdGVkLgorICAgIHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQoKSktPnNldFZpc2libGVDb250ZW50UmVjdFRy
YWplY3RvcnlWZWN0b3IoRmxvYXRQb2ludChzY3JvbGxEZWx0YS53aWR0aCgpLCBzY3JvbGxEZWx0
YS5oZWlnaHQoKSkpOworCisgICAgc2V0VmlzaWJsZUNvbnRlbnRSZWN0KG1fd2ViUGFnZS0+bWFp
bkZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKSk7CisKKyAgICBpZiAoIW1fd2ViUGFn
ZS0+dXNlRml4ZWRMYXlvdXQoKSkKKyAgICAgICAgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXkoKTsKKworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdmlzaWJsZUNvbnRlbnRSZWN0KQoreworICAgIGlmICh2aXNpYmxlQ29udGVudFJlY3QgPT0g
bV92aXNpYmxlQ29udGVudHNSZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3VsZFN5
bmNGcmFtZSA9IHRydWU7CisgICAgbV92aXNpYmxlQ29udGVudHNSZWN0ID0gdmlzaWJsZUNvbnRl
bnRSZWN0OworCisgICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIq
Pjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoSGFz
aFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBt
X3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICgq
aXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOworICAgIH0KKworICAgIHNjaGVk
dWxlTGF5ZXJGbHVzaCgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9y
Y2VSZXBhaW50KCkKQEAgLTIyNCwxMSArMjUwLDI1IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0Ojpmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKQordm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3sKKyAgICBp
ZiAoIW1fd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKSkKKyAgICAgICAgbm9uQ29tcG9zaXRlZENv
bnRlbnRzU2l6ZURpZENoYW5nZShuZXdTaXplKTsKKyAgICBzZXRWaXNpYmxlQ29udGVudFJlY3Qo
bV93ZWJQYWdlLT5tYWluRnJhbWVWaWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpKTsKK30KKwor
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbnRlbnRzU2l6ZURpZENoYW5nZShjb25z
dCBJbnRTaXplJiBuZXdTaXplKQoreworICAgIGlmIChtX3dlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0
KCkpCisgICAgICAgIG5vbkNvbXBvc2l0ZWRDb250ZW50c1NpemVEaWRDaGFuZ2UobmV3U2l6ZSk7
Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpub25Db21wb3NpdGVkQ29udGVu
dHNTaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiB7CiAgICAgaWYgKG1fcm9v
dExheWVyLT5zaXplKCkgPT0gbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgbV9zaG91
bGRTeW5jRnJhbWUgPSB0cnVlOwogICAgIG1fcm9vdExheWVyLT5zZXRTaXplKG5ld1NpemUpOwog
CiAgICAgLy8gSWYgdGhlIG5ld1NpemUgZXhwb3NlcyBuZXcgYXJlYXMgb2YgdGhlIG5vbi1jb21w
b3NpdGVkIGNvbnRlbnQgYSBzZXROZWVkc0Rpc3BsYXkgaXMgbmVlZGVkCkBAIC03MjksMzUgKzc2
OSwxNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TGF5ZXJBbmltYXRpb25z
KENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklELCBjbwogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldExheWVyQW5pbWF0aW9ucyhs
YXllcklELCBhY3RpdmVBbmltYXRpb25zKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKLXsKLSAgICAvLyBBIHplcm8gdHJhamVj
dG9yeVZlY3RvciBpbmRpY2F0ZXMgdGhhdCB0aWxlcyBhbGwgYXJvdW5kIHRoZSB2aWV3cG9ydCBh
cmUgcmVxdWVzdGVkLgotICAgIHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRMYXllci5nZXQoKSktPnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlW
ZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7Ci0KLSAgICBib29sIGNvbnRlbnRzUmVjdERpZENoYW5n
ZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29udGVudHNSZWN0OwotICAgIGlmIChjb250ZW50c1JlY3RE
aWRDaGFuZ2UpIHsKLSAgICAgICAgbV92aXNpYmxlQ29udGVudHNSZWN0ID0gcmVjdDsKLQotICAg
ICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRv
ciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lz
dGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAoKml0
KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotICAgIGlmIChtX3dlYlBhZ2UtPnVzZUZpeGVkTGF5
b3V0KCkpIHsKLSAgICAgICAgLy8gUm91bmQgdGhlIHJlY3QgaW5zdGVhZCBvZiBlbmNsb3Npbmcg
aXQgdG8gbWFrZSBzdXJlIHRoYXQgaXRzIHNpemUgc3RheXMKLSAgICAgICAgLy8gdGhlIHNhbWUg
d2hpbGUgcGFubmluZy4gVGhpcyBjYW4gaGF2ZSBuYXN0eSBlZmZlY3RzIG9uIGxheW91dC4KLSAg
ICAgICAgbV93ZWJQYWdlLT5zZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChyb3VuZGVkSW50UmVj
dChyZWN0KSk7Ci0gICAgfQotfQotCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV2
aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKIHsKKyAgICBtX3Nob3VsZFN5bmNGcmFtZSA9
IHRydWU7CiAgICAgbV9yb290TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
OwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCk7CiAgICAgaWYgKG1fcGFnZU92ZXJsYXlMYXllcikKICAgICAgICAgbV9wYWdl
T3ZlcmxheUxheWVyLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKworICAgIHNl
dFZpc2libGVDb250ZW50UmVjdChtX3dlYlBhZ2UtPm1haW5GcmFtZVZpZXcoKS0+dmlzaWJsZUNv
bnRlbnRSZWN0KCkpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCiBHcmFwaGljc0xh
eWVyRmFjdG9yeSogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpncmFwaGljc0xheWVyRmFjdG9y
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oCmluZGV4IGI2MDUyODkuLjNjZjQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC02NiwxMCArNjYs
MTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50
c05lZWREaXNwbGF5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0
ZWRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTm9u
Q29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZm9yY2VSZXBhaW50KCk7CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5j
KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpOworICAgIHZpcnR1YWwgdm9pZCBjb250ZW50
c1NpemVEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCB2b2lkIGRpZEluc3RhbGxQYWdlT3ZlcmxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRVbmluc3RhbGxQYWdlT3ZlcmxheSgpOwpAQCAtODksNyArOTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVy
Z2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OworICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVy
RmFjdG9yeSgpIE9WRVJSSURFOwogCkBAIC0xNTUsNiArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN5bmNEaXNwbGF5U3RhdGUoKTsKICAgICB2b2lkIGxvY2tBbmltYXRpb25zKCk7CiAgICAg
dm9pZCB1bmxvY2tBbmltYXRpb25zKCk7CisgICAgdm9pZCBub25Db21wb3NpdGVkQ29udGVudHNT
aXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIAogICAgIHZvaWQgbGF5ZXJG
bHVzaFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Piop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KaW5kZXggNjY3MWIzMi4uMzc3MDcxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNiBAQAogCiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
IExlZ2FjeVJlY2VpdmVyIHsKLSAgICBTZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkZs
b2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IHRyYWplY3Rv
cnlWZWN0b3J5KQogICAgIFJlbmRlck5leHRGcmFtZSgpCiAgICAgUHVyZ2VCYWNraW5nU3RvcmVz
KCkKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IGU5
YjZkZWEuLjA4NzY2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBEcmF3
aW5nQXJlYUltcGw6OnNjcm9sbChjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRT
aXplJiBzY3JvbGxEZWwKICAgICAgICAgQVNTRVJUKG1fc2Nyb2xsT2Zmc2V0LmlzRW1wdHkoKSk7
CiAgICAgICAgIEFTU0VSVChtX2RpcnR5UmVnaW9uLmlzRW1wdHkoKSk7CiAKLSAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoc2Nyb2xsUmVjdCk7Cisg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNjcm9s
bFJlY3QsIHNjcm9sbERlbHRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzkyLDEz
ICszOTIsOSBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6dXBkYXRlQmFja2luZ1N0b3JlU3RhdGUo
dWludDY0X3Qgc3RhdGVJRCwgYm9vbCByZXNwb25kSW1tZQogICAgICAgICBtX3dlYlBhZ2UtPmxh
eW91dElmTmVlZGVkKCk7CiAgICAgICAgIG1fd2ViUGFnZS0+c2Nyb2xsTWFpbkZyYW1lSWZOb3RB
dE1heFNjcm9sbFBvc2l0aW9uKHNjcm9sbE9mZnNldCk7CiAKLSAgICAgICAgaWYgKG1fbGF5ZXJU
cmVlSG9zdCkgewotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICAgICAgICAgIC8v
IENvb3JkaW5hdGVkIEdyYXBoaWNzIHNldHMgdGhlIHNpemUgb2YgdGhlIHJvb3QgbGF5ZXIgdG8g
Y29udGVudHMgc2l6ZS4KLSAgICAgICAgICAgIGlmICghbV93ZWJQYWdlLT51c2VGaXhlZExheW91
dCgpKQotI2VuZGlmCi0gICAgICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zaXplRGlkQ2hh
bmdlKG1fd2ViUGFnZS0+c2l6ZSgpKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIGlmIChtX2xh
eWVyVHJlZUhvc3QpCisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNpemVEaWRDaGFuZ2Uo
bV93ZWJQYWdlLT5zaXplKCkpOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2RpcnR5UmVn
aW9uID0gbV93ZWJQYWdlLT5ib3VuZHMoKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQo
c2l6ZSA9PSBtX3dlYlBhZ2UtPnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCAzOWZlZjgyLi4yM2JmNjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgK
QEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBv
c2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXROb25D
b21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xs
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFp
bnRBc3luYyh1aW50NjRfdCAvKmNhbGxiYWNrSUQqLykgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXpl
KSA9IDA7CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgeyB9CiAKICNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCi0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3Qo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQgLyogc2NhbGUgKi8sIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplRGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
TmV4dEZyYW1lKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
ZDQwOGU5NC4uNmQyYmZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtOTk5LDEzICs5OTksNiBAQCB2b2lkIFdlYlBhZ2U6OnNldFNpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUpCiB9CiAKICNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKLXZvaWQgV2ViUGFnZTo6c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBBU1NFUlQobV91c2VGaXhlZExheW91dCk7Ci0KLSAg
ICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0
KHJlY3QpOwotfQotCiB2b2lkIFdlYlBhZ2U6OnNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2Vk
KCkKIHsKICAgICBBU1NFUlQobV91c2VGaXhlZExheW91dCk7CkBAIC0xMDI3LDIxICsxMDIwLDE1
IEBAIHZvaWQgV2ViUGFnZTo6c2VuZFZpZXdwb3J0QXR0cmlidXRlc0NoYW5nZWQoKQogCiAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwogCi0gICAgLy8g
SWYgbm8gbGF5b3V0IHdhcyBkb25lIHlldCBzZXQgY29udGVudEZpeGVkT3JpZ2luIHRvICgwLDAp
LgotICAgIEludFBvaW50IGNvbnRlbnRGaXhlZE9yaWdpbiA9IHZpZXctPmRpZEZpcnN0TGF5b3V0
KCkgPyB2aWV3LT5maXhlZFZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgOiBJbnRQb2lu
dCgpOwotCi0gICAgLy8gUHV0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHRvIHRoZSB2aWV3cG9ydCB3
aWR0aCBhbmQgaGVpZ2h0LiBJbiBjc3MgdW5pdHMgaG93ZXZlci4KLSAgICAvLyBVc2UgRmxvYXRT
aXplIHRvIGF2b2lkIHRydW5jYXRlZCB2YWx1ZXMgZHVyaW5nIHNjYWxlLgotICAgIEZsb2F0U2l6
ZSBjb250ZW50Rml4ZWRTaXplID0gbV92aWV3U2l6ZTsKLQogI2lmIEVOQUJMRShDU1NfREVWSUNF
X0FEQVBUQVRJT04pCiAgICAgLy8gQ1NTIHZpZXdwb3J0IGRlc2NyaXB0b3JzIG1pZ2h0IGJlIGFw
cGxpZWQgdG8gYWxyZWFkeSBhZmZlY3RlZCB2aWV3cG9ydCBzaXplCiAgICAgLy8gaWYgdGhlIHBh
Z2UgZW5hYmxlcy9kaXNhYmxlcyBzdHlsZXNoZWV0cywgc28gbmVlZCB0byBrZWVwIGluaXRpYWwg
dmlld3BvcnQgc2l6ZS4KLSAgICB2aWV3LT5zZXRJbml0aWFsVmlld3BvcnRTaXplKHJvdW5kZWRJ
bnRTaXplKGNvbnRlbnRGaXhlZFNpemUpKTsKKyAgICB2aWV3LT5zZXRJbml0aWFsVmlld3BvcnRT
aXplKG1fdmlld1NpemUpOwogI2VuZGlmCiAKLSAgICBjb250ZW50Rml4ZWRTaXplLnNjYWxlKDEg
LyBhdHRyLmluaXRpYWxTY2FsZSk7Ci0gICAgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoSW50
UmVjdChjb250ZW50Rml4ZWRPcmlnaW4sIHJvdW5kZWRJbnRTaXplKGNvbnRlbnRGaXhlZFNpemUp
KSk7CisgICAgLy8gSWYgbm8gbGF5b3V0IHdhcyBkb25lIHlldCBzZXQgc2Nyb2xsUG9zaXRpb24g
dG8gKDAsMCkuCisgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSB2aWV3LT5kaWRGaXJzdExh
eW91dCgpID8gdmlldy0+c2Nyb2xsUG9zaXRpb24oKSA6IEludFBvaW50KCk7CisgICAgc2V0U2Ny
b2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwogCiAgICAgYXR0ci5pbml0aWFsU2NhbGUgPSBt
X3BhZ2UtPnZpZXdwb3J0QXJndW1lbnRzKCkuem9vbTsgLy8gUmVzZXRzIGF1dG8gKC0xKSBpZiBu
byB2YWx1ZSB3YXMgc2V0IGJ5IHVzZXIuCiAKQEAgLTEyMzYsMTMgKzEyMjMsNiBAQCB2b2lkIFdl
YlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkKGZpeGVkKTsKICAgICBtX3BhZ2UtPnNldHRpbmdz
KCktPnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGZpeGVkKTsKLSAgICBt
X3BhZ2UtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKGZp
eGVkKTsKLSNlbmRpZgotCi0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpICYmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQotICAgIC8vIERlbGVnYXRlZCBzY3JvbGxpbmcgd2lsbCBiZSBlbmFi
bGVkIHdoZW4gdGhlIEZyYW1lVmlldyBpcyBjcmVhdGVkIGlmIGZpeGVkIGxheW91dCBpcyBlbmFi
bGVkLgotICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBkbyBhbmltYXRlZCBzY3JvbGxpbmcgaW4gdGhl
IFdlYlByb2Nlc3MgaW4gdGhhdCBjYXNlLgotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0RW5h
YmxlU2Nyb2xsQW5pbWF0b3IoIWZpeGVkKTsKICNlbmRpZgogCiAgICAgRnJhbWVWaWV3KiB2aWV3
ID0gbWFpbkZyYW1lVmlldygpOwpAQCAtMTI1MCw3ICsxMjMwLDYgQEAgdm9pZCBXZWJQYWdlOjpz
ZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2aWV3LT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcoZml4
ZWQpOwogICAgIHZpZXctPnNldFBhaW50c0VudGlyZUNvbnRlbnRzKGZpeGVkKTsKICNlbmRpZgog
ICAgIHZpZXctPnNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKTsKQEAgLTE0MTksMTkgKzEzOTgsMTcg
QEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9u
cyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3UKICAgICByZXR1cm4gc25hcHNob3QucmVsZWFzZSgp
OwogfQogCi12b2lkIFdlYlBhZ2U6OnBhZ2VEaWRTY3JvbGwoKQordm9pZCBXZWJQYWdlOjpzZXRT
Y3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7Ci0gICAgbV91
aUNsaWVudC5wYWdlRGlkU2Nyb2xsKHRoaXMpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpQYWdlRGlkU2Nyb2xsKCkpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXco
KS0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwogfQogCi0jaWYgVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCi12b2lkIFdlYlBhZ2U6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0
IEludFBvaW50JiBwb2ludCkKK3ZvaWQgV2ViUGFnZTo6cGFnZURpZFNjcm9sbChjb25zdCBJbnRQ
b2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpQYWdlRGlkUmVxdWVzdFNjcm9sbChwb2ludCkpOworICAgIG1fdWlDbGllbnQucGFnZURpZFNj
cm9sbCh0aGlzKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UGFnZURpZFNj
cm9sbChzY3JvbGxQb3NpdGlvbikpOwogfQotI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKIFdlYkNvbnRleHRNZW51KiBXZWJQYWdlOjpjb250ZXh0TWVudSgpCkBAIC0xOTgwLDcg
KzE5NTcsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFN0YXJ0UGFnZVRyYW5zaXRpb24oKQogdm9pZCBX
ZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKCkKIHsKICNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKLSAgICBpZiAobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPmRl
bGVnYXRlc1Njcm9sbGluZygpKQorICAgIGlmICh1c2VGaXhlZExheW91dCgpKQogICAgICAgICAv
LyBXYWl0IHVudGlsIHRoZSBVSSBwcm9jZXNzIHNlbnQgdXMgdGhlIHZpc2libGUgcmVjdCBpdCB3
YW50cyByZW5kZXJlZC4KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdl
VHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggM2UxNWY1Zi4uYjA2ZjYyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNzksMTAgKzM3
OSw5IEBAIHB1YmxpYzoKIAogICAgIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ciogbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCk7CiAKLSAgICB2b2lkIHBh
Z2VEaWRTY3JvbGwoKTsKKyAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50Jik7CisgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jik7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdm9pZCBwYWdlRGlkUmVx
dWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwotICAgIHZvaWQgc2V0Rml4ZWRW
aXNpYmxlQ29udGVudFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgc2Vu
ZFZpZXdwb3J0QXR0cmlidXRlc0NoYW5nZWQoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDA3
NzVkZWQuLjg1MGMyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01Nyw2ICs1Nyw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBTY3JvbGxCeSh1aW50MzJf
dCBzY3JvbGxEaXJlY3Rpb24sIHVpbnQzMl90IHNjcm9sbEdyYW51bGFyaXR5KQorICAgIFNldFNj
cm9sbFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKQogICAgIENlbnRl
clNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKQogCiAgICAgR29CYWNrKHVpbnQ2NF90IGJhY2tGb3J3
YXJkSXRlbUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKaW5kZXggMDE3Y2QwYS4uNTM1YmQzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xh
eWVyVHJlZUhvc3RHdGsuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0
R3RrOjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBJbnRS
ZWN0JgogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RH
dGs6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBzY3JvbGxSZWN0
KQordm9pZCBMYXllclRyZWVIb3N0R3RrOjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29u
c3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYpCiB7CiAgICAgc2V0Tm9uQ29t
cG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3Qoc2Nyb2xsUmVjdCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RH
dGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5oCmluZGV4IDE5NTU2MzQuLmE4OWY3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCkBAIC02Niw3
ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENv
bnRlbnRzTmVlZERpc3BsYXkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29t
cG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHNj
cm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkSW5zdGFsbFBhZ2VPdmVybGF5KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFVuaW5z
dGFsbFBhZ2VPdmVybGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5oCmluZGV4IDEzMWEzNmUuLmI5MDkyOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJU
cmVlSG9zdE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
TGF5ZXJUcmVlSG9zdE1hYy5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29t
cG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVk
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0
YSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5l
d1NpemUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3Rv
ckNoYW5nZWQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5tbQppbmRleCBiMWNjMWYzLi5kMTkz
MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xh
eWVyVHJlZUhvc3RNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9MYXllclRyZWVIb3N0TWFjLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBMYXllclRy
ZWVIb3N0TWFjOjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25z
dCBJbnRSZWN0JgogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCi12b2lkIExheWVyVHJl
ZUhvc3RNYWM6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBzY3Jv
bGxSZWN0KQordm9pZCBMYXllclRyZWVIb3N0TWFjOjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVu
dHMoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYpCiB7CiAgICAgc2V0
Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3Qoc2Nyb2xsUmVjdCk7CiB9Ci0t
IAoxLjcuOS41Cgo=
</data>
<flag name="commit-queue"
          id="212073"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>