<?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>186364</bug_id>
          
          <creation_ts>2018-06-06 15:37:13 -0700</creation_ts>
          <short_desc>[WinCairo] Enable coordinated graphics</short_desc>
          <delta_ts>2021-11-01 19:23:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211883</see_also>
          <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>186371</dependson>
    
    <dependson>186374</dependson>
    
    <dependson>186444</dependson>
    
    <dependson>195270</dependson>
    
    <dependson>196190</dependson>
    
    <dependson>221067</dependson>
          <blocked>194904</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>basuke</cc>
    
    <cc>cgarcia</cc>
    
    <cc>fujii</cc>
    
    <cc>magomez</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1430594</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-06-06 15:37:13 -0700</bug_when>
    <thetext>WinCairo should use USE(COORDINATED_GRAPHICS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478205</commentid>
    <comment_count>1</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-11-13 16:31:57 -0800</bug_when>
    <thetext>I have a WIP branch https://github.com/unicodon/webkit/tree/win-cg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507218</commentid>
    <comment_count>2</comment_count>
      <attachid>362273</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-18 02:10:43 -0800</bug_when>
    <thetext>Created attachment 362273
WIP patch

* Rebased onto ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1507630</commentid>
    <comment_count>3</comment_count>
      <attachid>362377</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-19 01:40:13 -0800</bug_when>
    <thetext>Created attachment 362377
WIP patch

* Fix crash of shutting down
* Fix crash of reentering AC mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508478</commentid>
    <comment_count>4</comment_count>
      <attachid>362600</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-21 02:25:38 -0800</bug_when>
    <thetext>Created attachment 362600
WIP patch

* Call SetProcessDPIAware in web process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508479</commentid>
    <comment_count>5</comment_count>
      <attachid>362601</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-21 02:29:29 -0800</bug_when>
    <thetext>Created attachment 362601
WIP patch

* Use AcceleratedSurfaceWin::window instead of setNativeSurfaceHandleForCompositing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508480</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-21 02:30:58 -0800</bug_when>
    <thetext>ToDo

* Sometimes animation does&apos;t start. https://webkit.org/blog-files/3d-transforms/morphing-cubes.html
* Crashes occasionally.
* Nothing is drawn after some web surfing. Needs to restart.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509994</commentid>
    <comment_count>7</comment_count>
      <attachid>362971</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-26 01:47:26 -0800</bug_when>
    <thetext>Created attachment 362971
WIP patch

* Added ThreadedCompositor::pauseCompositing to stop CompositingRunLoop when exit AC mode.
* Implement CompositingRunLoop with WorkQueue

ToDo:

* Sometimes animation does&apos;t start. https://webkit.org/blog-files/3d-transforms/morphing-cubes.html
* Crashes or freezes occasionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510001</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-26 02:29:21 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #7)
&gt; * Sometimes animation does&apos;t start.
&gt; https://webkit.org/blog-files/3d-transforms/morphing-cubes.html

I confirmed this issue happens in GTK port, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510347</commentid>
    <comment_count>9</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-02-26 20:41:58 -0800</bug_when>
    <thetext>The crash occured in eglMakeCurrent.
It seems that the previous context was already destructed.

&gt; libGLESv2.dll!gl::ResourceMap&lt;gl::Framebuffer&gt;::assign(unsigned int handle, gl::Framebuffer * resource) Line 169	C++
&gt; libGLESv2.dll!gl::FramebufferManager::setDefaultFramebuffer(gl::Framebuffer * framebuffer) Line 443	C++
&gt; libGLESv2.dll!gl::Context::releaseSurface(const egl::Display * display) Line 574	C++
&gt; libGLESv2.dll!egl::MakeCurrent(void * dpy, void * draw, void * read, void * ctx) Line 518	C++
&gt; libEGL.dll!eglMakeCurrent(void * dpy, void * draw, void * read, void * ctx) Line 93	C++
&gt; WebKit2.dll!WebCore::GLContextEGL::makeContextCurrent() Line 424	C++
&gt; WebKit2.dll!WebKit::ThreadedCompositor::createGLContext() Line 94	C++
&gt; WebKit2.dll!WebKit::ThreadedCompositor::{ctor}::__l2::&lt;lambda&gt;() Line 77	C++
&gt; WebKit2.dll!WTF::Function&lt;void __cdecl(void)&gt;::CallableWrapper&lt;void &lt;lambda&gt;(void) &gt;::call() Line 102	C++
&gt; WebKit2.dll!WTF::Function&lt;void __cdecl(void)&gt;::operator()() Line 58	C++
&gt; WebKit2.dll!WebKit::CompositingRunLoop::performTaskSync::__l2::&lt;lambda&gt;() Line 126	C++
&gt; WebKit2.dll!WTF::Function&lt;void __cdecl(void)&gt;::CallableWrapper&lt;void &lt;lambda&gt;(void) &gt;::call() Line 102	C++
&gt; WTF.dll!WTF::Function&lt;void __cdecl(void)&gt;::operator()() Line 58	C++
&gt; WTF.dll!WTF::WorkQueue::performWorkOnRegisteredWorkThread() Line 62	C++
&gt; WTF.dll!WTF::WorkQueue::workThreadCallback(void * context) Line 44	C++
&gt; [External Code]	

Windows port WorkQueue is using CreateTimerQueueTimer with WT_EXECUTEINTIMERTHREAD.
So, WorkQueue jobs are dispatched in random timer threads.

There are two possible solutions.
1. Execute all CompositingRunLoop jobs in a single thread
2. Clear current context by invoking eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT) every time the end of jobs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512011</commentid>
    <comment_count>10</comment_count>
      <attachid>363475</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-03 18:53:25 -0800</bug_when>
    <thetext>Created attachment 363475
WIP patch

* Rebased onto ToT
* Morphing Power Cubes animation works better than before
* No crash in eglMakeCurrent

ToDo:
* Nothing is drawn after some web surfing. Needs to restart.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512061</commentid>
    <comment_count>11</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-03 22:34:30 -0800</bug_when>
    <thetext>Remaining Issues:

* ~CompositingRunLoop() calls RunLoop::stop. Windows port&apos;s RunLoop::stop terminates the current thread&apos;s RunLoop, and WebProcess exits.
* After respawning WebProcess, WebPage has 0x0 size. Nothing drawn.
* It seems ThreadedCompositor::pauseCompositing, which is added by me, doesn&apos;t work as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512435</commentid>
    <comment_count>12</comment_count>
      <attachid>363575</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-04 17:52:10 -0800</bug_when>
    <thetext>Created attachment 363575
WIP patch

* Rebased onto ToT. It works nicely.

Remaining Issues:

* After respawning WebProcess, WebPage has 0x0 size. Nothing drawn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512576</commentid>
    <comment_count>13</comment_count>
      <attachid>363575</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-05 02:03:22 -0800</bug_when>
    <thetext>Comment on attachment 363575
WIP patch

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

&gt; Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:70
&gt;      // Make sure the RunLoop is stopped after the CompositingRunLoop, because m_updateTimer has a reference.

You should remove this comment too.

&gt; Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:72
&gt; -    RunLoop::main().dispatch([runLoop = makeRef(*m_runLoop)] {
&gt; -        runLoop-&gt;stop();
&gt; -        runLoop-&gt;dispatch([] {
&gt; -            RunLoop::current().stop();
&gt; -        });
&gt; +    m_runLoop-&gt;dispatch([] {
&gt; +        RunLoop::current().stop();

Please, file a new bug report for this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512590</commentid>
    <comment_count>14</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-05 02:53:28 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #13)
&gt; Please, file a new bug report for this change.

Thank you for the comment. Will do. However, I should fix Windows port&apos;s RunLoop::stop issue before it. I found there is Yusuke&apos;s WIP patch in Bug 181151.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513013</commentid>
    <comment_count>15</comment_count>
      <attachid>363736</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-06 01:30:04 -0800</bug_when>
    <thetext>Created attachment 363736
WIP patch

* Almost all WebAnimation tests were timing out. Added dummy DisplayRefreshMonitorWin to fix them.

Remaining Issues:

* After respawning WebProcess, WebPage has 0x0 size. Nothing drawn.
* Some tests are failing due to an assertion failure in Nicosia::Scene::accessState
  ASSERTION FAILED: state.id == m_nicosia.state.id
* Needs to check other new test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1514727</commentid>
    <comment_count>16</comment_count>
      <attachid>364241</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-11 02:23:47 -0700</bug_when>
    <thetext>Created attachment 364241
WIP patch

* Rebased onto ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515925</commentid>
    <comment_count>17</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-13 02:55:56 -0700</bug_when>
    <thetext>* Some compositing LayoutTests are randomly failing with &quot;ASSERTION FAILED: state.id == m_nicosia.state.id&quot;
* Some compositing LayoutTests are randomly timing out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520767</commentid>
    <comment_count>18</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-24 18:50:42 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #17)
&gt; * Some compositing LayoutTests are randomly failing with &quot;ASSERTION FAILED:
&gt; state.id == m_nicosia.state.id&quot;

Filed it in Bug 196190.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520833</commentid>
    <comment_count>19</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-25 03:48:32 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #17)
&gt; * Some compositing LayoutTests are randomly timing out

ref tests and pixel tests are randomly timing out because output pixel images aren&apos;t generated. Nothing drawn in WKTR WebView in such cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521222</commentid>
    <comment_count>20</comment_count>
      <attachid>365947</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-25 23:00:03 -0700</bug_when>
    <thetext>Created attachment 365947
Synchronous RunLoop::TimerBase::stop patch

This patch makes RunLoop::TimerBase::stop synchronous as well as GTK port.
RunLoop::TimerBase::stop blocks while the timer callback is being called back.
Unfortunately, this patch doesn&apos;t address the timing out issue.
I don&apos;t know why GTK port does&apos;n have the timing out issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521228</commentid>
    <comment_count>21</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-25 23:59:37 -0700</bug_when>
    <thetext>It&apos;s just a simple bug. It is blocked in TestInvocation::dumpResults.
WKPageForceRepaint doesn&apos;t work as expected becasue ThreadedCompositor::forceRepaint is not implemented yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521231</commentid>
    <comment_count>22</comment_count>
      <attachid>365949</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-26 00:14:05 -0700</bug_when>
    <thetext>Created attachment 365949
WIP patch

* Fixed ThreadedCompositor::forceRepaint for the timing out issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521242</commentid>
    <comment_count>23</comment_count>
      <attachid>365949</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-03-26 02:50:10 -0700</bug_when>
    <thetext>Comment on attachment 365949
WIP patch

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

&gt; Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:191
&gt; -#if PLATFORM(GTK)
&gt; +#if !PLATFORM(WPE)

This is exactly what I was going to suggest you to do :-)

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:960
&gt; -#if PLATFORM(GTK) &amp;&amp; USE(TEXTURE_MAPPER_GL)
&gt; +#if PLATFORM(WIN) &amp;&amp; USE(TEXTURE_MAPPER_GL)

Why do you remove GTK?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1640
&gt; -#if PLATFORM(GTK) &amp;&amp; USE(TEXTURE_MAPPER_GL)
&gt; +#if PLATFORM(WIN) &amp;&amp; USE(TEXTURE_MAPPER_GL)

Ditto.

&gt; Source/WebKit/WebProcess/WebPage/win/AcceleratedSurfaceWin.cpp:56
&gt; +void AcceleratedSurfaceWin::initialize()
&gt; +{
&gt; +}
&gt; +
&gt; +void AcceleratedSurfaceWin::finalize()
&gt; +{
&gt; +}

These are not pure virtual, you don&apos;t need to override them.

&gt; Source/WebKit/WebProcess/WebPage/win/AcceleratedSurfaceWin.cpp:70
&gt; +void AcceleratedSurfaceWin::willRenderFrame()
&gt; +{
&gt; +}

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521244</commentid>
    <comment_count>24</comment_count>
      <attachid>365949</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-26 02:59:19 -0700</bug_when>
    <thetext>Comment on attachment 365949
WIP patch

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

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:960
&gt;&gt; +#if PLATFORM(WIN) &amp;&amp; USE(TEXTURE_MAPPER_GL)
&gt; 
&gt; Why do you remove GTK?

m_nativeWindowHandle is simply an unused member variable in GTK port.

&gt;&gt; Source/WebKit/WebProcess/WebPage/win/AcceleratedSurfaceWin.cpp:56
&gt;&gt; +}
&gt; 
&gt; These are not pure virtual, you don&apos;t need to override them.

Good point. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535509</commentid>
    <comment_count>25</comment_count>
      <attachid>369688</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-12 19:58:39 -0700</bug_when>
    <thetext>Created attachment 369688
WIP patch

* Rebased onto ToT
* Addressed review feedbacks
* A new assertion failure has been introduced, which occurs at WebProcess termination.

setDefaultFramebuffer(8196): 	! Assert failed in setDefaultFramebuffer(8196): mCurrentSurface == nullptrException thrown at 0x00007FFE6A1B40C4 (libGLESv2.dll) in WebKitWebProcess.exe: 0xC000001D: Illegal Instruction.
Unhandled exception at 0x00007FFE6A1B40C4 (libGLESv2.dll) in WebKitWebProcess.exe: 0xC000001D: Illegal Instruction.

&gt; libGLESv2.dll!gl::LogMessage::~LogMessage() Line 171	C++
&gt; libGLESv2.dll!gl::Context::setDefaultFramebuffer(egl::Surface * surface) Line 8198	C++
&gt; libGLESv2.dll!gl::Context::makeCurrent(egl::Display * display, egl::Surface * surface) Line 608	C++
&gt; libGLESv2.dll!egl::Display::makeCurrent(const egl::Thread * thread, egl::Surface * drawSurface, egl::Surface * readSurface, gl::Context * context) Line 945	C++
&gt; libGLESv2.dll!egl::Display::destroyContext(const egl::Thread * thread, gl::Context * context) Line 1018	C++
&gt; libGLESv2.dll!egl::Display::terminate(const egl::Thread * thread) Line 600	C++
&gt; libGLESv2.dll!EGL_Terminate(void * dpy) Line 111	C++
&gt; libEGL.dll!eglTerminate(void * dpy) Line 209	C++
&gt; WebKit2.dll!WebCore::PlatformDisplay::terminateEGLDisplay() Line 235	C++
&gt; WebKit2.dll!WebCore::PlatformDisplay::shutDownEglDisplays() Line 241	C++
&gt; [External Code]	
&gt; WebKit2.dll!WebKit::callExit(IPC::Connection *) Line 168	C++
&gt; WebKit2.dll!IPC::Connection::connectionDidClose() Line 841	C++
&gt; WebKit2.dll!IPC::Connection::readEventHandler() Line 156	C++
&gt; WebKit2.dll!IPC::Connection::invokeReadEventHandler::&lt;unnamed-tag&gt;::operator()() Line 235	C++
&gt; WebKit2.dll!WTF::Detail::CallableWrapper&lt;`lambda at ..\..\Source\WebKit\Platform\IPC\win\ConnectionWin.cpp:233:33&apos;,void&gt;::call() Line 52	C++
&gt; WTF.dll!WTF::Function&lt;void ()&gt;::operator()() Line 79	C++
&gt; WTF.dll!WTF::WorkQueue::performWorkOnRegisteredWorkThread() Line 61	C++
&gt; WTF.dll!WTF::WorkQueue::workThreadCallback(void * context) Line 44	C++
&gt; [External Code]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535556</commentid>
    <comment_count>26</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-13 00:50:57 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #25)
&gt; * A new assertion failure has been introduced, which occurs at WebProcess
&gt; termination.

This issue?
https://bugs.chromium.org/p/angleproject/issues/detail?id=3414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535959</commentid>
    <comment_count>27</comment_count>
      <attachid>369820</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-13 21:55:50 -0700</bug_when>
    <thetext>Created attachment 369820
WIP patch

(In reply to Fujii Hironori from comment #26)
&gt; (In reply to Fujii Hironori from comment #25)
&gt; &gt; * A new assertion failure has been introduced, which occurs at WebProcess
&gt; &gt; termination.
&gt; 
&gt; This issue?
&gt; https://bugs.chromium.org/p/angleproject/issues/detail?id=3414

Not relevant.

This is a similar issue with comment 9.
It seems that ANGLE need to unbind the context explicitly by doing eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT).

* Added GLContextEGL::unmakeContextCurrent

I&apos;m going to file a new bug ticket for the part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535964</commentid>
    <comment_count>28</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-13 23:45:53 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #27)
&gt; It seems that ANGLE need to unbind the context explicitly by doing
&gt; eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT).
&gt; 
&gt; * Added GLContextEGL::unmakeContextCurrent

Oh, no. It turns out this patch doesn&apos;t solve the problem. It just reduces the probability.
It is inevitable WebKit::callExit is called during the rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535977</commentid>
    <comment_count>29</comment_count>
      <attachid>369827</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-14 01:28:10 -0700</bug_when>
    <thetext>Created attachment 369827
WIP patch

* Quick ANGLE hack to avoid the assertion failure (Needs to consult upstream ANGLE.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536371</commentid>
    <comment_count>30</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-15 00:36:50 -0700</bug_when>
    <thetext>EGL eglTerminate spec says:

&gt; If contexts or surfaces created with respect to dpy are current (see section 3.7.3) to any thread, then they are not actually destroyed while they remain current.

https://www.khronos.org/registry/EGL/specs/eglspec.1.4.pdf

This seems ANGLE bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536372</commentid>
    <comment_count>31</comment_count>
      <attachid>369934</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-15 00:38:39 -0700</bug_when>
    <thetext>Created attachment 369934
WIP patch

* Removed the ANGLE hack
* Do not register an atexit handler to cleanup EGL display for Windows
* Condition out an assertion in ~PlatformDisplay for Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536449</commentid>
    <comment_count>32</comment_count>
      <attachid>369934</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2019-05-15 09:27:55 -0700</bug_when>
    <thetext>Comment on attachment 369934
WIP patch

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

Looks good. In the final patch you should do if (ENABLE_WEBKIT) around the USE and ENABLE flags until we completely turn off legacy

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:969
&gt; +#if PLATFORM(WIN) &amp;&amp; USE(TEXTURE_MAPPER_GL)

Good catch that this was dead code in GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536477</commentid>
    <comment_count>33</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2019-05-15 10:24:01 -0700</bug_when>
    <thetext>I see Web Inspector crashing at startup with this patch. We&apos;re doing some work with remote inspector on WinCairo so we can still land this but its something to note. WebGL demos seemed to work fine but it was reporting 30 fps as the framerate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536696</commentid>
    <comment_count>34</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-15 18:53:12 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #32)
&gt; Looks good. In the final patch you should do if (ENABLE_WEBKIT) around the
&gt; USE and ENABLE flags until we completely turn off legacy

I plan to take more aggressive approach.
I&apos;m going to disable AC in WinCairo WK1 and remove GraphicsLayerTextureMapper.

If someone want to use AC in WK1 in the future and aims to maintain, s/he should port CoordinatedGraphicsLayer to WinCairo WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536697</commentid>
    <comment_count>35</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-15 18:57:35 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #33)
&gt; I see Web Inspector crashing at startup with this patch. 

Thanks for testing, but I don&apos;t see any crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536698</commentid>
    <comment_count>36</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-15 19:00:24 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #33)
&gt; WebGL demos seemed to work fine but it was reporting 30
&gt; fps as the framerate.

I don&apos;t know the reason, but my DisplayRefreshMonitorWin implementation is supper sloppy at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537524</commentid>
    <comment_count>37</comment_count>
      <attachid>370239</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-19 22:59:39 -0700</bug_when>
    <thetext>Created attachment 370239
WIP patch

* Rebased onto ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540255</commentid>
    <comment_count>38</comment_count>
      <attachid>370924</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-05-29 23:04:59 -0700</bug_when>
    <thetext>Created attachment 370924
WIP patch

* Rebased onto ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621552</commentid>
    <comment_count>39</comment_count>
      <attachid>391378</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-02-20 21:10:23 -0800</bug_when>
    <thetext>Created attachment 391378
WIP patch

* Rebased onto ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621555</commentid>
    <comment_count>40</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-02-20 21:18:57 -0800</bug_when>
    <thetext>Crashed in ANGLE while visiting https://webkit.org/. But, this crash isn&apos;t reproducible.

&gt; libGLESv2.dll!rx::Framebuffer11::markAttachmentsDirty(const gl::Context * context=0x000001804a86d5c0) Line 68	C++
&gt; libGLESv2.dll!rx::StateManager11::updateState(const gl::Context * context=0x000001804a86d5c0, gl::PrimitiveMode mode=TriangleFan, int firstVertex=0, int vertexOrIndexCount=4, gl::DrawElementsType indexTypeOrInvalid=InvalidEnum, const void * indices=0x0000000000000000, int instanceCount=0, int baseVertex=0) Line 2178	C++
&gt; libGLESv2.dll!rx::Context11::drawArrays(const gl::Context * context=0x000001804a86d5c0, gl::PrimitiveMode mode=TriangleFan, int first=0, int count=4) Line 271	C++
&gt; libGLESv2.dll!gl::Context::drawArrays(gl::PrimitiveMode mode=TriangleFan, int first=0, int count=4) Line 112	C++
&gt; libGLESv2.dll!gl::DrawArrays(unsigned int mode=6, int first=0, int count=4) Line 929	C++
&gt; libGLESv2.dll!glDrawArrays(unsigned int mode=6, int first=0, int count=4) Line 261	C++
&gt; WebKit2.dll!WebCore::TextureMapperGL::drawUnitRect(WebCore::TextureMapperShaderProgram &amp; program={...}, unsigned int drawingMode=6) Line 738	C++
&gt; WebKit2.dll!WebCore::TextureMapperGL::draw(const WebCore::FloatRect &amp; rect={...}, const WebCore::TransformationMatrix &amp; modelViewMatrix={...}, WebCore::TextureMapperShaderProgram &amp; program={...}, unsigned int drawingMode=6, int flags=128) Line 766	C++
&gt; WebKit2.dll!WebCore::TextureMapperGL::drawTexturedQuadWithProgram(WebCore::TextureMapperShaderProgram &amp; program={...}, const WTF::Vector&lt;std::pair&lt;unsigned int,unsigned int&gt;,0,WTF::CrashOnOverflow,16,WTF::FastMalloc&gt; &amp; texturesAndSamplers={...}, int flags=128, const WebCore::IntSize &amp; size={...}, const WebCore::FloatRect &amp; rect={...}, const WebCore::TransformationMatrix &amp; modelViewMatrix={...}, float opacity=1.00000000) Line 802	C++
&gt; WebKit2.dll!WebCore::TextureMapperGL::drawTexturedQuadWithProgram(WebCore::TextureMapperShaderProgram &amp; program={...}, unsigned int texture=10, int flags=128, const WebCore::IntSize &amp; size={...}, const WebCore::FloatRect &amp; rect={...}, const WebCore::TransformationMatrix &amp; modelViewMatrix={...}, float opacity=1.00000000) Line 813	C++
&gt; WebKit2.dll!WebCore::TextureMapperGL::drawTexture(unsigned int texture=10, int flags=128, const WebCore::IntSize &amp; textureSize={...}, const WebCore::FloatRect &amp; targetRect={...}, const WebCore::TransformationMatrix &amp; modelViewMatrix={...}, float opacity=1.00000000, unsigned int exposedEdges=0) Line 505	C++
&gt; WebKit2.dll!WebCore::TextureMapperGL::drawTexture(const WebCore::BitmapTexture &amp; texture={...}, const WebCore::FloatRect &amp; targetRect={...}, const WebCore::TransformationMatrix &amp; matrix={...}, float opacity=1.00000000, unsigned int exposedEdges=0) Line 464	C++
&gt; WebKit2.dll!WebCore::TextureMapperTile::paint(WebCore::TextureMapper &amp; textureMapper={...}, const WebCore::TransformationMatrix &amp; transform={...}, float opacity=1.00000000, const unsigned int exposedEdges=0) Line 73	C++
&gt; WebKit2.dll!WebCore::CoordinatedBackingStore::paintTilesToTextureMapper(WTF::Vector&lt;WebCore::TextureMapperTile *,0,WTF::CrashOnOverflow,16,WTF::FastMalloc&gt; &amp; tiles={...}, WebCore::TextureMapper &amp; textureMapper={...}, const WebCore::TransformationMatrix &amp; transform={...}, float opacity=1.00000000, const WebCore::FloatRect &amp; rect={...}) Line 95	C++
&gt; WebKit2.dll!WebCore::CoordinatedBackingStore::paintToTextureMapper(WebCore::TextureMapper &amp; textureMapper={...}, const WebCore::FloatRect &amp; targetRect={...}, const WebCore::TransformationMatrix &amp; transform={...}, float opacity=1.00000000) Line 138	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelf(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 173	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 209	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 271	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 471	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 230	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 271	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 471	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 230	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 271	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 471	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 230	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 271	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 471	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 230	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 271	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 471	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 230	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 271	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 471	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildren(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 230	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 271	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paintRecursive(const WebCore::TextureMapperPaintOptions &amp; options={...}) Line 471	C++
&gt; WebKit2.dll!WebCore::TextureMapperLayer::paint() Line 138	C++
&gt; WebKit2.dll!WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext(const WebCore::TransformationMatrix &amp; matrix={...}, const WebCore::FloatRect &amp; clipRect={...}, unsigned int PaintFlags=0) Line 80	C++
&gt; WebKit2.dll!WebKit::ThreadedCompositor::renderLayerTree() Line 227	C++
&gt; WebKit2.dll!`WebKit::ThreadedCompositor::ThreadedCompositor&apos;::`1&apos;::&lt;lambda_1_&gt;::operator()() Line 56	C++
&gt; WebKit2.dll!WTF::Detail::CallableWrapper&lt;`WebKit::ThreadedCompositor::ThreadedCompositor&apos;::`1&apos;::&lt;lambda_1_&gt;,void&gt;::call() Line 52	C++
&gt; WebKit2.dll!WTF::Function&lt;void __cdecl(void)&gt;::operator()() Line 85	C++
&gt; WebKit2.dll!WebKit::CompositingRunLoop::updateTimerFired() Line 189	C++
&gt; WebKit2.dll!WTF::RunLoop::Timer&lt;WebKit::CompositingRunLoop&gt;::fired() Line 168	C++
&gt; WTF.dll!WTF::RunLoop::TimerBase::timerFired() Line 153	C++
&gt; WTF.dll!WTF::RunLoop::wndProc(HWND__ * hWnd=0x00000000004a050a, unsigned int message=275, unsigned __int64 wParam=1650515590360, __int64 lParam=0) Line 60	C++
&gt; WTF.dll!WTF::RunLoop::RunLoopWndProc(HWND__ * hWnd=0x00000000004a050a, unsigned int message=275, unsigned __int64 wParam=1650515590360, __int64 lParam=0) Line 39	C++
&gt; [External Code]	
&gt; WTF.dll!WTF::RunLoop::run() Line 74	C++
&gt; WebKit2.dll!`WebKit::createRunLoop&apos;::`2&apos;::&lt;lambda_1&gt;::operator()() Line 50	C++
&gt; WebKit2.dll!WTF::Detail::CallableWrapper&lt;`WebKit::createRunLoop&apos;::`2&apos;::&lt;lambda_1&gt;,void&gt;::call() Line 52	C++
&gt; WTF.dll!WTF::Function&lt;void __cdecl(void)&gt;::operator()() Line 85	C++
&gt; WTF.dll!WTF::Thread::entryPoint(WTF::Thread::NewThreadContext * newThreadContext=0x000001804a5e0c00) Line 149	C++
&gt; WTF.dll!WTF::wtfThreadEntryPoint(void * data=0x000001804a5e0c00) Line 153	C++
&gt; [External Code]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621562</commentid>
    <comment_count>41</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-02-20 22:30:18 -0800</bug_when>
    <thetext>* It&apos;s easy to crash in glDrawArrays of ANGLE by visiting web sites or opening Layers tab of web inspector
* video play back performs badly
  I guess unimplemented DisplayRefreshMonitorWin is the cause
* Resising WebView window shows visual glitches
  Once streching the current content to the new window size, then repainted with the corrent new window size
* animation hiccup happens by reloading https://webkit.org/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621563</commentid>
    <comment_count>42</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-02-20 22:36:12 -0800</bug_when>
    <thetext>* WebInspector Element hilight starts working, but it hilights the different node mouse cursor is pointing in high DPI
  I think this is a high DPI issue (Bug 196339)
  Suprisingly, 100% DPI still has another wrong position issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644244</commentid>
    <comment_count>43</comment_count>
      <attachid>397177</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-22 00:45:01 -0700</bug_when>
    <thetext>Created attachment 397177
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646848</commentid>
    <comment_count>44</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-28 22:40:25 -0700</bug_when>
    <thetext>One more issue.

* ANGEL crashes by openning AC-mode pages (for example, https://webkit.org/) in two windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649981</commentid>
    <comment_count>45</comment_count>
      <attachid>391378</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-05-07 00:01:29 -0700</bug_when>
    <thetext>Comment on attachment 391378
WIP patch

Unfortunately, it turned out that ANGLE DirectX backend doesn&apos;t support multithreading.

  2464 - Vulkan: Support running GL commands from multiple threads simultaneously - angleproject
  https://bugs.chromium.org/p/angleproject/issues/detail?id=2464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722802</commentid>
    <comment_count>46</comment_count>
      <attachid>418496</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-01-26 18:34:16 -0800</bug_when>
    <thetext>Created attachment 418496
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725000</commentid>
    <comment_count>47</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-02-02 20:57:45 -0800</bug_when>
    <thetext>ANGLE D3D11 renderer supports multithreading.

https://chromium.googlesource.com/angle/angle/+/192a0147c3fe465650b3a3ef45ea61c02b2de5a1
https://chromium.googlesource.com/angle/angle/+/e7ca0aa289b0d9a9df8f4099d7630c652c570a0e

A build flag ANGLE_FORCE_CONTEXT_CHECK_EVERY_CALL needs to be defined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725329</commentid>
    <comment_count>48</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-02-03 13:36:41 -0800</bug_when>
    <thetext>Which thread to run WebGL context?

1. Running WebGL context in the main thread
   Needs to transfer the WebGL output texture from the main thread to the compositor threads. Coordinated Graphics is using multiple textures.
2. Running WebGL context in the compositor thread(s)
   Needs to transfer WebGL commands from the main thread to the compositor thread(s).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726542</commentid>
    <comment_count>49</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-02-07 23:24:32 -0800</bug_when>
    <thetext>I&apos;m facing problems of Coordinated Graphics

* Doesn&apos;t support compositing in GPU process at the moment
* Its architecture has been significantly changed since Multi-Process Coordinated Graphics was removed
* Doesn&apos;t outperform GraphicsLayerTextureMapper (I don&apos;t know why)
* Which thread to run WebGL context? (Comment 48)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779628</commentid>
    <comment_count>50</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-07-26 16:53:42 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #49)
&gt; * Doesn&apos;t support compositing in GPU process at the moment
&gt; * Its architecture has been significantly changed since Multi-Process
&gt; Coordinated Graphics was removed

Filed : Bug 228308 – [WinCairo] New GraphicsLayer for GPU process mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811008</commentid>
    <comment_count>51</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-11-01 19:23:43 -0700</bug_when>
    <thetext>Won&apos;t fix.

Bug 228308 – [WinCairo] New GraphicsLayer for GPU process mode
Bug 232555 – [WinCairo] Enable gpu_process_canvas_rendering and gpu_process_webgl by default</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362273</attachid>
            <date>2019-02-18 02:10:43 -0800</date>
            <delta_ts>2019-02-19 01:40:13 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364.patch</filename>
            <type>text/plain</type>
            <size>32995</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgKaW5kZXggYjM4NDQyNzVhNjUuLjUxNjg0YjIwOGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aApAQCAtMzgsNiArMzgsNyBAQAogCiAjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjZW5k
aWYKQEAgLTc2LDYgKzc3LDggQEAgcHVibGljOgogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0
Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQogI2VsaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wJiBy
dW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQorI2VsaWYgVVNFKFdJTkRPV1Nf
RVZFTlRfTE9PUCkKKyAgICBIQU5ETEUgdGltZXJRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZXJRdWV1ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWly
by5jbWFrZQppbmRleCA0MzRiYzQzOTMyZi4uNTQyZGYzODY5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMTEsNiArMTEsMTUgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwor
ICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNw
cAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5j
cHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAor
ICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKyAg
ICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuY3BwCisKKyAgICBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdl
bmVyaWMuY3BwCisKICAgICBwYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtNTksNSArNjgsOCBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBXZWJDb3JlX0ZPUldBUkRJ
TkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8KKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwKICkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDBhNTMzNWEzY2Y4Li4wNWI2Zjg0NjNhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNCw2ICsyNCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9T
T1VSQ0VTCiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3Bw
CiAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU5vbmUuY3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcApA
QCAtMTY0LDYgKzE2NiwxMyBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKIAogICAg
ICAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAogCisgICAgICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAKKworICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAorICAgICAgICBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmNwcAorCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1NpbXBsZVZpZXdwb3J0
Q29udHJvbGxlci5jcHAKKwogICAgICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwCiAKICAgICAgICAgU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5j
cHAKQEAgLTE3Myw2ICsxODIsOCBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKICAg
ICAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCiAgICAgICAgIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cAorCisgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
LmNwcAogICAgICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggYTVmMTVmMDFh
NTAuLmFlODAyZDdlMjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVw
ZGF0ZVNjZW5lU3RhdGUoKQogCiAgICAgLy8gU3RvcmUgbGF5ZXIgYW5kIGltcGwgcmVmZXJlbmNl
cyBhbG9uZyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHVwZGF0ZQogICAgIC8vIGZvciBlYWNoIHR5
cGUgb2YgcG9zc2libGUgbGF5ZXIgYmFja2luZy4KLSAgICBzdHJ1Y3QgeworICAgIHN0cnVjdCBM
YXllcnNCeUJhY2tpbmcgewogICAgICAgICBzdHJ1Y3QgQmFja2luZ1N0b3JlIHsKICAgICAgICAg
ICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VGV4dHVyZU1hcHBlckxheWVyPiBsYXllcjsKICAg
ICAgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Tmljb3NpYTo6QmFja2luZ1N0b3JlVGV4
dHVyZU1hcHBlckltcGw+IGJhY2tpbmdTdG9yZTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgc3RkOjpyZWYobGF5ZXIpLCBzdGQ6OnJlZihpbXBsLnByb3h5
KCkpLCBsYXllclN0YXRlLmRlbHRhLmNvbnRlbnRMYXllckNoYW5nZWQgfSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxheWVyU3RhdGUuaW1hZ2VCYWNraW5nKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgaW1wbCA9IGltYWdlQmFja2luZ0ltcGwoKmxh
eWVyU3RhdGUuaW1hZ2VCYWNraW5nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXll
cnNCeUJhY2tpbmcuaW1hZ2VCYWNraW5nLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsYXllcnNCeUJhY2tpbmcuaW1hZ2VCYWNraW5nLmFwcGVuZDxMYXllcnNCeUJhY2tpbmc6
OkltYWdlQmFja2luZz4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RkOjpy
ZWYobGF5ZXIpLCBzdGQ6OnJlZihpbXBsKSwgaW1wbC50YWtlVXBkYXRlKCkgfSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXll
ci5zZXRDb250ZW50c0xheWVyKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdS
dW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXggYmRjNWVlNWE5MmYu
LmU4ZjJmMjUzNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKQEAgLTU2LDEwICs1NiwxOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGdldE9yQ3JlYXRlV29ya1F1ZXVlRm9yQ29udGV4dChjb250ZXh0KS5kaXNwYXRjaChX
VEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQogCisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwg
VVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wJiBydW5Mb29wKHZvaWQqIGNvbnRl
eHQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2V0T3JDcmVhdGVXb3JrUXVldWVGb3JDb250ZXh0
KGNvbnRleHQpLnJ1bkxvb3AoKTsKICAgICB9CisjZW5kaWYKKworI2lmIFVTRShXSU5ET1dTX0VW
RU5UX0xPT1ApCisgICAgSEFORExFIHRpbWVyUXVldWUodm9pZCogY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBnZXRPckNyZWF0ZVdvcmtRdWV1ZUZvckNvbnRleHQoY29udGV4dCkudGlt
ZXJRdWV1ZSgpOworICAgIH0KKyNlbmRpZgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKHZvaWQqIGNv
bnRleHQpCiAgICAgewpAQCAtMTA2LDcgKzExNSwxMiBAQCBwcml2YXRlOgogfTsKIAogQ29tcG9z
aXRpbmdSdW5Mb29wOjpDb21wb3NpdGluZ1J1bkxvb3AoRnVuY3Rpb248dm9pZCAoKT4mJiB1cGRh
dGVGdW5jdGlvbikKKyNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVO
VF9MT09QKQogICAgIDogbV91cGRhdGVUaW1lcihXb3JrUXVldWVQb29sOjpzaW5nbGV0b24oKS5y
dW5Mb29wKHRoaXMpLCB0aGlzLCAmQ29tcG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVUaW1lckZpcmVk
KQorI2VsaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKKyAgICA6IG1fdGltZXJRdWV1ZShXb3Jr
UXVldWVQb29sOjpzaW5nbGV0b24oKS50aW1lclF1ZXVlKHRoaXMpKQorICAgICwgbV91cGRhdGVU
aW1lcihJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyNlbmRpZgogICAgICwgbV91cGRhdGVGdW5jdGlv
bihXVEZNb3ZlKHVwZGF0ZUZ1bmN0aW9uKSkKIHsKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQpA
QCAtMTQyLDYgKzE1NiwzNiBAQCB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6cGVyZm9ybVRhc2tT
eW5jKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgbV9kaXNwYXRjaFN5bmNDb25k
aXRpb24ud2FpdChtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11dGV4KTsKIH0KIAorI2lmIFVTRShX
SU5ET1dTX0VWRU5UX0xPT1ApCitWT0lEIENBTExCQUNLIENvbXBvc2l0aW5nUnVuTG9vcDo6dXBk
YXRlVGltZXJDYWxsYmFjayhQVk9JRCBscFBhcmFtLCBCT09MRUFOIFRpbWVyT3JXYWl0RmlyZWQp
Cit7CisgICAgc3RhdGljX2Nhc3Q8Q29tcG9zaXRpbmdSdW5Mb29wKj4obHBQYXJhbSktPm1fdXBk
YXRlVGltZXIgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICBzdGF0aWNfY2FzdDxDb21wb3Np
dGluZ1J1bkxvb3AqPihscFBhcmFtKS0+dXBkYXRlVGltZXJGaXJlZCgpOworfQorI2VuZGlmCisK
K3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzdGFydFVwZGF0ZVRpbWVyKCkKK3sKKyNpZiBVU0Uo
R0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQorICAgIG1fdXBkYXRl
VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisjZWxpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQor
ICAgIGlmIChtX3VwZGF0ZVRpbWVyID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICA6
OkNyZWF0ZVRpbWVyUXVldWVUaW1lcigmbV91cGRhdGVUaW1lciwgbV90aW1lclF1ZXVlLCB1cGRh
dGVUaW1lckNhbGxiYWNrLCB0aGlzLCAwLCAwLCBXVF9FWEVDVVRFSU5USU1FUlRIUkVBRCk7Cisj
ZW5kaWYKK30KKwordm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnN0b3BVcGRhdGVUaW1lcigpCit7
CisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKKyAg
ICBtX3VwZGF0ZVRpbWVyLnN0b3AoKTsKKyNlbGlmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisg
ICAgaWYgKG1fdXBkYXRlVGltZXIgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAg
OjpEZWxldGVUaW1lclF1ZXVlVGltZXIobV90aW1lclF1ZXVlLCBtX3VwZGF0ZVRpbWVyLCBOVUxM
KTsKKyAgICAgICAgbV91cGRhdGVUaW1lciA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIH0K
KyNlbmRpZgorfQorCiB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVVcGRhdGUoKQog
ewogICAgIExvY2tIb2xkZXIgc3RhdGVMb2NrZXIobV9zdGF0ZS5sb2NrKTsKQEAgLTE2MSw3ICsy
MDUsNyBAQCB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c2NoZWR1bGVVcGRhdGUoTG9ja0hvbGRl
ciYgc3RhdGVMb2NrZXIpCiAgICAgc3dpdGNoIChtX3N0YXRlLnVwZGF0ZSkgewogICAgIGNhc2Ug
VXBkYXRlU3RhdGU6OklkbGU6CiAgICAgICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6
OlNjaGVkdWxlZDsKLSAgICAgICAgbV91cGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKKyAg
ICAgICAgc3RhcnRVcGRhdGVUaW1lcigpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBVcGRh
dGVTdGF0ZTo6U2NoZWR1bGVkOgogICAgICAgICByZXR1cm47CkBAIC0xNzcsNyArMjIxLDcgQEAg
dm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnN0b3BVcGRhdGVzKCkKICAgICAvLyBTdG9wIGV2ZXJ5
dGhpbmcuCiAKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOwotICAgIG1fdXBk
YXRlVGltZXIuc3RvcCgpOworICAgIHN0b3BVcGRhdGVUaW1lcigpOwogICAgIG1fc3RhdGUuY29t
cG9zaXRpb24gPSBDb21wb3NpdGlvblN0YXRlOjpJZGxlOwogICAgIG1fc3RhdGUudXBkYXRlID0g
VXBkYXRlU3RhdGU6OklkbGU7CiAgICAgbV9zdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CkBA
IC0yMDQsNyArMjQ4LDcgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OmNvbXBvc2l0aW9uQ29t
cGxldGVkKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogICAgICAgICBpZiAobV9zdGF0ZS5wZW5k
aW5nVXBkYXRlKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTsK
ICAgICAgICAgICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6OlNjaGVkdWxlZDsKLSAg
ICAgICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisgICAgICAgICAgICBz
dGFydFVwZGF0ZVRpbWVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MjM2LDcgKzI4MCw3IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVDb21wbGV0ZWQo
TG9ja0hvbGRlciYgc3RhdGVMb2NrZXIpCiAgICAgICAgIGlmIChtX3N0YXRlLnBlbmRpbmdVcGRh
dGUpIHsKICAgICAgICAgICAgIG1fc3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlOwogICAgICAg
ICAgICAgbV9zdGF0ZS51cGRhdGUgPSBVcGRhdGVTdGF0ZTo6U2NoZWR1bGVkOwotICAgICAgICAg
ICAgbV91cGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKKyAgICAgICAgICAgIHN0YXJ0VXBk
YXRlVGltZXIoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCmluZGV4
IDQyYzUyZjZiZTgyLi5mYzEwY2M1ODhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5M
b29wLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKQEAgLTY5LDkgKzY5LDE4IEBAIHBy
aXZhdGU6CiAgICAgICAgIFBlbmRpbmdDb21wbGV0aW9uLAogICAgIH07CiAKKyAgICB2b2lkIHN0
YXJ0VXBkYXRlVGltZXIoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGVUaW1lcigpOworCiAgICAgdm9p
ZCB1cGRhdGVUaW1lckZpcmVkKCk7CiAKKyNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0Uo
R0VORVJJQ19FVkVOVF9MT09QKQogICAgIFJ1bkxvb3A6OlRpbWVyPENvbXBvc2l0aW5nUnVuTG9v
cD4gbV91cGRhdGVUaW1lcjsKKyNlbGlmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisgICAgSEFO
RExFIG1fdGltZXJRdWV1ZTsKKyAgICBIQU5ETEUgbV91cGRhdGVUaW1lcjsKKyAgICBzdGF0aWMg
Vk9JRCBDQUxMQkFDSyB1cGRhdGVUaW1lckNhbGxiYWNrKFBWT0lEIGxwUGFyYW0sIEJPT0xFQU4g
VGltZXJPcldhaXRGaXJlZCk7CisjZW5kaWYKICAgICBGdW5jdGlvbjx2b2lkICgpPiBtX3VwZGF0
ZUZ1bmN0aW9uOwogICAgIExvY2sgbV9kaXNwYXRjaFN5bmNDb25kaXRpb25NdXRleDsKICAgICBD
b25kaXRpb24gbV9kaXNwYXRjaFN5bmNDb25kaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCAzOWFm
OWIzNzk4Yi4uYThmMzZkOTk5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5OjpkaWRVcGRhdGVCYWNraW5nU3RvcmVT
dGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvCiAgICAgZWxzZSB7CiAgICAgICAgIG1faGFzUmVjZWl2
ZWRGaXJzdFVwZGF0ZSA9IHRydWU7CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBM
QVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RLKSAm
JiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykgfHwg
UExBVEZPUk0oV0lOKSkKICAgICAgICAgaWYgKG1fcGVuZGluZ05hdGl2ZVN1cmZhY2VIYW5kbGVG
b3JDb21wb3NpdGluZykgewogICAgICAgICAgICAgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNv
bXBvc2l0aW5nKG1fcGVuZGluZ05hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyk7CiAg
ICAgICAgICAgICBtX3BlbmRpbmdOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcgPSAw
OwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5Ojp1
cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyCiAgICAgbV93ZWJQ
YWdlUHJveHkudXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4
dCk7CiB9CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYg
UExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEp
ICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykgfHwgUExBVEZPUk0oV0lOKSkK
IHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5OjpzZXROYXRpdmVTdXJmYWNlSGFuZGxl
Rm9yQ29tcG9zaXRpbmcodWludDY0X3QgaGFuZGxlKQogewogICAgIGlmICghbV9oYXNSZWNlaXZl
ZEZpcnN0VXBkYXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BY2Nl
bGVyYXRlZERyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FjY2Vs
ZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGMzOGE5YmIxMmJjLi40N2I4YjQzMTI2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYVByb3h5LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gYWx3YXlzVXNlQ29tcG9zaXRp
bmcoKSB8fCAhbV9sYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKTsgfQogICAgIHZvaWQgdmlzaWJp
bGl0eURpZENoYW5nZSgpOwogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9S
TShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lO
RE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgKFBMQVRGT1JNKEdUSykgJiYgUExB
VEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpIHx8IFBMQVRG
T1JNKFdJTikpCiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmco
dWludDY0X3QpOwogICAgIHZvaWQgZGVzdHJveU5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3Np
dGluZygpOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBGb3Ig
YSBuZXcgRHJhd2luZyBBcmVhIGRvbid0IGRyYXcgYW55dGhpbmcgdW50aWwgdGhlIFdlYlByb2Nl
c3MgaGFzIHNlbnQgb3ZlciB0aGUgZmlyc3QgY29udGVudC4KICAgICBib29sIG1faGFzUmVjZWl2
ZWRGaXJzdFVwZGF0ZSB7IGZhbHNlIH07CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
IFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RL
KSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykg
fHwgUExBVEZPUk0oV0lOKSkKICAgICB1aW50NjRfdCBtX3BlbmRpbmdOYXRpdmVTdXJmYWNlSGFu
ZGxlRm9yQ29tcG9zaXRpbmcgeyAwIH07CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHAKaW5kZXggMGY5ZjlkNGVmZDUuLjVkMTNmNjhjMWRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yMzMsOCArMjMzLDEwIEBAIFdl
YlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uLCBIV05EIHBhCiAgICAgbV9wYWdlID0gcHJvY2Vzc1Bvb2wtPmNyZWF0ZVdl
YlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgIG1f
cGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIAotICAgIGlmIChtX3BhZ2UtPmRyYXdpbmdBcmVh
KCkpCi0gICAgICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShJbnRTaXplKHJlY3Qu
cmlnaHQgLSByZWN0LmxlZnQsIHJlY3QuYm90dG9tIC0gcmVjdC50b3ApKTsKKyAgICBpZiAoQWNj
ZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PEFjY2Vs
ZXJhdGVkRHJhd2luZ0FyZWFQcm94eSo+KG1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkpIHsKKyAgICAg
ICAgZHJhd2luZ0FyZWEtPnNldFNpemUoSW50U2l6ZShyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LCBy
ZWN0LmJvdHRvbSAtIHJlY3QudG9wKSk7CisgICAgICAgIGRyYXdpbmdBcmVhLT5zZXROYXRpdmVT
dXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoKHVpbnQ2NF90KW1fd2luZG93KTsKKyAgICB9CiAK
ICAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZSB0b29sdGlwIHdpbmRvdyBoZXJlIG1hdGNo
ZXMgV2ViS2l0IHdpbiwgYnV0IHNlZW1zIGxpa2Ugc29tZXRoaW5nCiAgICAgLy8gd2UgY291bGQg
ZG8gb24gZGVtYW5kIHRvIHNhdmUgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAppbmRl
eCBlZGZlNDZiMjE4ZS4uYTZmZTcwMDZjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuY3BwCkBAIC0z
NzEsNyArMzcxLDcgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdpbmdBcmVhOjplbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKEdyYXBoaWNzTGF5ZXIqIGdyYXAKICAgICAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cGF1c2VSZW5kZXJpbmcoKTsKICAgICB9CiAKLSNpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElS
RUNURURfWENPTVBPU0lURV9XSU5ET1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAo
UExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9T
SVRFX1dJTkRPVykgfHwgUExBVEZPUk0oV0lOKSkKICAgICBpZiAobV9uYXRpdmVTdXJmYWNlSGFu
ZGxlRm9yQ29tcG9zaXRpbmcpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKG1fbmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0
aW5nKTsKICNlbmRpZgpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYTo6ZGlzY2FyZFByZXZpb3VzTGF5ZXJUcmVlSG9zdCgpCiAgICAgbV9wcmV2aW91c0xheWVy
VHJlZUhvc3QgPSBudWxscHRyOwogfQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQ
TEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgKFBMQVRGT1JNKEdUSykg
JiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpIHx8
IFBMQVRGT1JNKFdJTikpCiB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWE6OnNldE5hdGl2ZVN1
cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCBoYW5kbGUpCiB7CiAgICAgbV9uYXRp
dmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcgPSBoYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgK
aW5kZXggMDkyN2Q0NGQwMDQuLjRlZmFkYTgyZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYS5oCkBAIC02
NCw3ICs2NCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpEaXNw
bGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQ
bGF0Zm9ybURpc3BsYXlJRCk7CiAjZW5kaWYKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVykKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIChQTEFURk9STShH
VEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KSB8fCBQTEFURk9STShXSU4pKQogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNv
bXBvc2l0aW5nKHVpbnQ2NF90KSBvdmVycmlkZTsKICAgICB2b2lkIGRlc3Ryb3lOYXRpdmVTdXJm
YWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpIG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNl
LmNwcAppbmRleCBlNTc5YTVkZjNhMC4uYTgwNmRmNzhiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcApAQCAt
NDEsNiArNDEsMTAgQEAKICNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXUEUuaCIKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTU3LDYgKzYxLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+
IEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsCiAjaWYgUExBVEZP
Uk0oV1BFKQogICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkg
PT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXUEUpCiAgICAgICAgIHJldHVybiBBY2NlbGVyYXRl
ZFN1cmZhY2VXUEU6OmNyZWF0ZSh3ZWJQYWdlLCBjbGllbnQpOworI2VuZGlmCisjaWYgUExBVEZP
Uk0oV0lOKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkg
PT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXaW5kb3dzKQorICAgICAgICByZXR1cm4gQWNjZWxl
cmF0ZWRTdXJmYWNlV2luOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50KTsKICNlbmRpZgogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA4MjNiN2ZhMmFj
Ny4uYWQzNTI4ODNiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0yMjMsNyArMjIz
LDcgQEAgdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlkQ2hhbmdlVmll
d3BvcnRBdHRyaWJ1dGVzKFZpZXdwb3J0QXR0cmkKICAgICAgICAgZGlkQ2hhbmdlVmlld3BvcnQo
KTsKIH0KIAotI2lmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElS
RUNURURfWENPTVBPU0lURV9XSU5ET1cpCisjaWYgKFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0o
WDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpKSB8fCBQTEFURk9STShX
SU4pCiB2b2lkIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXROYXRpdmVTdXJm
YWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QgaGFuZGxlKQogewogICAgIG1fbGF5ZXJU
cmVlQ29udGV4dC5jb250ZXh0SUQgPSBoYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXgg
Yjc4NDY4MTY3OWIuLjFjOTA1MDI0MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC02OCw3
ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldElzRGlzY2FyZGFibGUoYm9vbCkgb3Zl
cnJpZGU7CiAKLSNpZiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgICFVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyNpZiAoUExBVEZPUk0oR1RLKSAmJiBQTEFURk9S
TShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykpIHx8IFBMQVRGT1JN
KFdJTikKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50
NjRfdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggN2VlMjI4Y2UxOGEuLmZlYzQ2MDFjNjY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTE1
Niw3ICsxNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0FyZWFUeXBlIG1fdHlwZTsKICAg
ICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBM
QVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lU
RV9XSU5ET1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RLKSAm
JiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykgfHwg
UExBVEZPUk0oV0lOKSkKICAgICB1aW50NjRfdCBtX25hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21w
b3NpdGluZyB7IDAgfTsKICNlbmRpZgogCkBAIC0xODIsNyArMTgyLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJ
RCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlmCiAKLSNpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElS
RUNURURfWENPTVBPU0lURV9XSU5ET1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAo
UExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9T
SVRFX1dJTkRPVykgfHwgUExBVEZPUk0oV0lOKSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmF0aXZl
U3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpID0gMDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCAwMjMzMDQwNTE0Mi4uNjRhNTAzZTQ2ODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLm1lc3NhZ2VzLmluCkBAIC00MCw4ICs0MCw4IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVh
IHsKICAgICBBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAjZW5kaWYKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0o
R1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIChQTEFURk9STShHVEspICYmIFBMQVRG
T1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKSB8fCBQTEFURk9S
TShXSU4pKQogICAgIFNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRf
dCBoYW5kbGUpCi0gICAgRGVzdHJveU5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZygp
IC0+IChib29sIGhhbmRsZWQpCisgICAgRGVzdHJveU5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21w
b3NpdGluZygpIC0+IChib29sIGhhbmRsZWQpIExlZ2FjeVN5bmMKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDg1
ZGQ0NThlMDE4Li5jOTI2MjNiNjlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldElzRGlzY2FyZGFibGUoYm9vbCkgeyB9OwogI2VuZGlmCiAKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykKKyNpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpICYmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpCiAgICAgdmlydHVh
bCB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkgeyB9
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVlMDYwYmEwYjdiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5j
cHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRT
dXJmYWNlV2luLmgiCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8ZWdsLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlXaW4uaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJh
dGVkU3VyZmFjZVdpbj4gQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpjcmVhdGUoV2ViUGFnZSYgd2Vi
UGFnZSwgQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
bGVyYXRlZFN1cmZhY2VXaW4+KG5ldyBBY2NlbGVyYXRlZFN1cmZhY2VXaW4od2ViUGFnZSwgY2xp
ZW50KSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdpbjo6QWNjZWxlcmF0ZWRTdXJmYWNlV2lu
KFdlYlBhZ2UmIHdlYlBhZ2UsIENsaWVudCYgY2xpZW50KQorICAgIDogQWNjZWxlcmF0ZWRTdXJm
YWNlKHdlYlBhZ2UsIGNsaWVudCkKK3sKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp+QWNj
ZWxlcmF0ZWRTdXJmYWNlV2luKCkKK3sKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46
OmluaXRpYWxpemUoKQoreworfQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6ZmluYWxp
emUoKQoreworfQorCit1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OndpbmRvdygpIGNv
bnN0Cit7CisgICAgLy8gRUdMTmF0aXZlV2luZG93VHlwZSBjaGFuZ2VzIGRlcGVuZGluZyBvbiB0
aGUgRUdMIGltcGxlbWVudGF0aW9uOiByZWludGVycHJldF9jYXN0IHdvcmtzCisgICAgLy8gZm9y
IHBvaW50ZXJzIChvbmx5IGlmIHRoZXkgYXJlIDY0LWJpdCB3aWRlIGFuZCBub3QgZm9yIG90aGVy
IGNhc2VzKSwgYW5kIHN0YXRpY19jYXN0IGZvcgorICAgIC8vIG51bWVyaWMgdHlwZXMgKGFuZCB3
aGVuIG5lZWRlZCB0aGV5IGdldCBleHRlbmRlZCB0byA2NC1iaXQpIGJ1dCBub3QgZm9yIHBvaW50
ZXJzLiBVc2luZworICAgIC8vIGEgcGxhaW4gQyBjYXN0IGV4cHJlc3Npb24gaW4gdGhpcyBvbmUg
aW5zdGFuY2Ugd29ya3MgaW4gYWxsIGNhc2VzLgorICAgIC8vICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKEVHTE5hdGl2ZVdpbmRvd1R5cGUpIDw9IHNpemVvZih1aW50NjRfdCksICJFR0xOYXRpdmVX
aW5kb3dUeXBlIG11c3Qgbm90IGJlIGxvbmdlciB0aGFuIDY0IGJpdHMuIik7CisgICAgcmV0dXJu
IDA7Cit9CisKK3VpbnQ2NF90IEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6c3VyZmFjZUlEKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpOworfQorCitib29sIEFjY2VsZXJh
dGVkU3VyZmFjZVdpbjo6aG9zdFJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlm
ICghQWNjZWxlcmF0ZWRTdXJmYWNlOjpob3N0UmVzaXplKHNpemUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VX
aW46OndpbGxSZW5kZXJGcmFtZSgpCit7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
OjpkaWRSZW5kZXJGcmFtZSgpCit7CisgICAgLy8gRklYTUU6IGZyYW1lQ29tcGxldGUoKSBzaG91
bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGZyYW1lIHdhcyBhY3R1YWxseSByZW5kZXJlZCBpbiB0aGUg
c2NyZWVuLgorICAgIG1fY2xpZW50LmZyYW1lQ29tcGxldGUoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjkwNjE2ZTgyMGJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXSU4pCisKKyNpbmNsdWRlICJBY2Nl
bGVyYXRlZFN1cmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7
CisKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZVdpbiBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRl
ZFN1cmZhY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZVdp
bik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPiBjcmVhdGUoV2ViUGFnZSYsIENsaWVudCYp
OworICAgIH5BY2NlbGVyYXRlZFN1cmZhY2VXaW4oKTsKKworICAgIHVpbnQ2NF90IHdpbmRvdygp
IGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaG9zdFJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmFsaXplKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsUmVuZGVyRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlbmRlckZyYW1lKCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgQWNjZWxlcmF0ZWRT
dXJmYWNlV2luKFdlYlBhZ2UmLCBDbGllbnQmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQuY3BwCmluZGV4IGE1MmIxMjBhYmIyLi5hMDlmYzA0YWRiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcApAQCAtMjUsNyArMjUs
NyBAQAogCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIKIAotI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKQEAgLTQx
NCw0ICs0MTQsNCBAQCBmbG9hdCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZGV2aWNl
U2NhbGVGYWN0b3IoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlZpZXcuZGV2aWNlU2NhbGVGYWN0
b3IoKTsKIH0KIAotI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbmRpZiAvLyBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCA2YmIzMzRkNDQxZC4u
MzM3NGQ2YWE0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQu
aApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dF9oCiAjZGVmaW5lIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKIAotI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+CkBAIC05OSw2ICs5OSw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKCk7CiB9OwogCi0jZW5kaWYgLy8gVEVYVFVS
RV9NQVBQRVJfR0wKKyNlbmRpZiAvLyBURVhUVVJFX01BUFBFUl9HTCAmJiAhVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogCiAjZW5kaWYgLy8gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzZmY4MWNmMjA4OS4uODc5NzVj
NTNhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xOTcsNyArMTk3LDcg
QEAKICNpZiBVU0UoQ0EpCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUNGTGF5ZXJUcmVlSG9zdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+Ci0jZWxpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIK
ICNlbmRpZgogCkBAIC05MjEsNyArOTIxLDcgQEAgdm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5UmVn
aW9uKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nKCkpIHsKICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVk
c0Rpc3BsYXlJblJlY3QoZGlydHlSZWN0KTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0Tm9uQ29tcG9z
aXRlZENvbnRlbnRzTmVlZERpc3BsYXkoZGlydHlSZWN0KTsKICNlbmRpZgogICAgICAgICByZXR1
cm47CkBAIC05OTMsNyArOTkzLDcgQEAgdm9pZCBXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3RvcmUo
RnJhbWVWaWV3KiBmcmFtZVZpZXcsIGludCBsb2dpY2FsRHgsIGludCBsb2dpY2EKICAgICAgICAg
Ly8gYW55IG5ld2x5LWV4cG9zZWQgdGlsZXMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzUyNzE0Pgog
I2lmIFVTRShDQSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVj
dChzY3JvbGxWaWV3UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAg
ICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNjcm9sbE5vbkNvbXBvc2l0ZWRD
b250ZW50cyhzY3JvbGxWaWV3UmVjdCwgSW50U2l6ZShkeCwgZHkpKTsKICNlbmRpZgogICAgICAg
ICByZXR1cm47CkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIFdlYlZpZXc6OnNpemVDaGFuZ2Vk
KGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXRTaXpl
KG5ld1NpemUpOwogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAg
ICAgfQotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0KQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LT5yZXNpemVSb290TGF5ZXIobmV3U2l6ZSk7CiAjZW5kaWYKQEAgLTU0ODAsNyArNTQ4
MCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICBociA9IHByZWZzUHJpdmF0ZS0+YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAg
ICAgICByZXR1cm4gaHI7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGF0aWMg
Ym9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlID0gQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKICAgICBlbmFi
bGVkID0gZW5hYmxlZCAmJiBhY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlOwogI2VsaWYg
VVNFKERJUkVDVDJEKQpAQCAtNjQ4Nyw3ICs2NDg3LDcgQEAgYm9vbCBXZWJWaWV3OjpwYWludENv
bXBvc2l0ZWRDb250ZW50VG9IREMoSERDIGRldmljZUNvbnRleHQpCiAKICNpZiBVU0UoQ0EpCiAg
ICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3coKTsKLSNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYg
IVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LT5mbHVzaEFuZFJlbmRlckxheWVycygpOwogI2VuZGlmCiAKQEAgLTcxNDksNyArNzE0
OSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5
ZXIpCiAgICAgZWxzZQogICAgICAgICBtX2JhY2tpbmdMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4o
KTsKIAotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldFJvb3RDb21wb3NpdGluZ0xheWVyKGxheWVyKTsKQEAg
LTcxNjIsNyArNzE2Miw3IEBAIHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXll
ckNoYW5nZXNTb29uKCkKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNT
b29uKCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKCFtX2FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbigpOwpA
QCAtNzIyMyw3ICs3MjIzLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nKGJvb2wgYWNjZWxlcmF0ZWQpCiAgICAgICAgIG1fYmFja2luZ0xheWVyID0gbnVsbHB0cjsK
ICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBmYWxzZTsKICAgICB9Ci0jZWxp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
ICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKGFjY2VsZXJhdGVkICYmICFtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dD4oKnRoaXMpOwogICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gYWNjZWxlcmF0
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggYzNlYjA4YzQyODguLmViYjIzZGFk
NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNz
IFdlYkJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViSW5zcGVjdG9y
OwogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50OwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiBjbGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDsKICNlbmRpZgogY2xhc3MgV2Vi
Vmlld0dyb3VwOwpAQCAtNzA2LDcgKzcwNiw3IEBAIHByb3RlY3RlZDoKICNpZiBVU0UoQ0EpCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0PiBtX2xheWVyVHJlZUhvc3Q7CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fYmFja2luZ0xheWVyOwotI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dD4gbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDsKICNl
bmRpZgogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKaW5kZXggNGFkMmM0YjQyM2EuLjg5M2VjYmU5ZTQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKQEAgLTI3LDggKzI3LDE0IEBAIFNFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9DRiBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9D
VVJMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSIE9OKQog
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSX0dMIE9OKQorU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTIE9OKQorU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEIE9OKQorU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX05JQ09TSUEgT04pCitTRVRfQU5EX0VYUE9TRV9UT19C
VUlMRChVU0VfUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SIE9OKQogU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX01FRElBX0ZPVU5EQVRJT04gT04pCiAKK1NFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgT04pCisKIHNldChFTkFCTEVf
R1JBUEhJQ1NfQ09OVEVYVF8zRCBPTikKIHNldChFTkFCTEVfV0VCS0lUIE9OKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362377</attachid>
            <date>2019-02-19 01:40:13 -0800</date>
            <delta_ts>2019-02-21 02:25:38 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364-2.patch</filename>
            <type>text/plain</type>
            <size>34521</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgKaW5kZXggYjM4NDQyNzVhNjUuLjUxNjg0YjIwOGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aApAQCAtMzgsNiArMzgsNyBAQAogCiAjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjZW5k
aWYKQEAgLTc2LDYgKzc3LDggQEAgcHVibGljOgogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0
Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQogI2VsaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wJiBy
dW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQorI2VsaWYgVVNFKFdJTkRPV1Nf
RVZFTlRfTE9PUCkKKyAgICBIQU5ETEUgdGltZXJRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZXJRdWV1ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWly
by5jbWFrZQppbmRleCA0MzRiYzQzOTMyZi4uNTQyZGYzODY5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMTEsNiArMTEsMTUgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwor
ICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNw
cAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5j
cHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAor
ICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKyAg
ICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuY3BwCisKKyAgICBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdl
bmVyaWMuY3BwCisKICAgICBwYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtNTksNSArNjgsOCBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBXZWJDb3JlX0ZPUldBUkRJ
TkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8KKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwKICkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
Y3BwCmluZGV4IGQyM2M2MDc5MmVhLi44ZTE0YjNhOWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC0yMTEsNyAr
MjExLDcgQEAgdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkKIAog
ICAgIGVnbERpc3BsYXlzKCkuYWRkKHRoaXMpOwogCi0jaWYgIVBMQVRGT1JNKFdJTikKKyNpZiAx
IC8vICFQTEFURk9STShXSU4pCiAgICAgc3RhdGljIGJvb2wgZWdsQXRleGl0SGFuZGxlckluaXRp
YWxpemVkID0gZmFsc2U7CiAgICAgaWYgKCFlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQpIHsK
ICAgICAgICAgLy8gRUdMIHJlZ2lzdGVycyBhdGV4aXQgaGFuZGxlcnMgdG8gY2xlYW51cCBpdHMg
Z2xvYmFsIGRpc3BsYXkgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDBhNTMzNWEz
Y2Y4Li5jMTUxYWEzZTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNCw2ICsyNCw4
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9X
S0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCiAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUuY3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGls
aWFyeVByb2Nlc3NNYWluV2luLmNwcApAQCAtMTY0LDYgKzE2NiwxMiBAQCBpZiAoJHtXVEZfUExB
VEZPUk1fV0lOX0NBSVJPfSkKIAogICAgICAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNh
aXJvLmNwcAogCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisgICAg
ICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKworICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIuY3BwCisKICAgICAgICAgU2hhcmVkL2Nh
aXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCiAgICAgICAgIFNoYXJlZC9jdXJsL1dlYkNv
cmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0xNzMsNiArMTgxLDggQEAgaWYgKCR7V1RGX1BM
QVRGT1JNX1dJTl9DQUlST30pCiAgICAgICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVD
YWlyby5jcHAKIAogICAgICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKworICAgICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKICAgICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCmluZGV4IGE1ZjE1ZjAxYTUwLi5hZTgwMmQ3ZTI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2VuZVN0YXRlKCkKIAogICAgIC8vIFN0b3JlIGxh
eWVyIGFuZCBpbXBsIHJlZmVyZW5jZXMgYWxvbmcgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB1cGRh
dGUKICAgICAvLyBmb3IgZWFjaCB0eXBlIG9mIHBvc3NpYmxlIGxheWVyIGJhY2tpbmcuCi0gICAg
c3RydWN0IHsKKyAgICBzdHJ1Y3QgTGF5ZXJzQnlCYWNraW5nIHsKICAgICAgICAgc3RydWN0IEJh
Y2tpbmdTdG9yZSB7CiAgICAgICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRleHR1cmVN
YXBwZXJMYXllcj4gbGF5ZXI7CiAgICAgICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5p
Y29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsPiBiYWNraW5nU3RvcmU7CkBAIC0z
NjQsNyArMzY0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5l
U3RhdGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVy
KSwgc3RkOjpyZWYoaW1wbC5wcm94eSgpKSwgbGF5ZXJTdGF0ZS5kZWx0YS5jb250ZW50TGF5ZXJD
aGFuZ2VkIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXllclN0YXRl
LmltYWdlQmFja2luZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGltcGwg
PSBpbWFnZUJhY2tpbmdJbXBsKCpsYXllclN0YXRlLmltYWdlQmFja2luZyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5h
cHBlbmQ8TGF5ZXJzQnlCYWNraW5nOjpJbWFnZUJhY2tpbmc+KAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbCksIGltcGwudGFr
ZVVwZGF0ZSgpIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNMYXllcihudWxscHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3Au
Y3BwCmluZGV4IGJkYzVlZTVhOTJmLi5lOGYyZjI1MzRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9z
aXRpbmdSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC01Niwx
MCArNTYsMTkgQEAgcHVibGljOgogICAgICAgICBnZXRPckNyZWF0ZVdvcmtRdWV1ZUZvckNvbnRl
eHQoY29udGV4dCkuZGlzcGF0Y2goV1RGTW92ZShmdW5jdGlvbikpOwogICAgIH0KIAorI2lmIFVT
RShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgUnVuTG9v
cCYgcnVuTG9vcCh2b2lkKiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGdldE9yQ3Jl
YXRlV29ya1F1ZXVlRm9yQ29udGV4dChjb250ZXh0KS5ydW5Mb29wKCk7CiAgICAgfQorI2VuZGlm
CisKKyNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorICAgIEhBTkRMRSB0aW1lclF1ZXVlKHZv
aWQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0T3JDcmVhdGVXb3JrUXVldWVG
b3JDb250ZXh0KGNvbnRleHQpLnRpbWVyUXVldWUoKTsKKyAgICB9CisjZW5kaWYKIAogICAgIHZv
aWQgaW52YWxpZGF0ZSh2b2lkKiBjb250ZXh0KQogICAgIHsKQEAgLTEwNiw3ICsxMTUsMTIgQEAg
cHJpdmF0ZToKIH07CiAKIENvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgdXBkYXRlRnVuY3Rpb24pCisjaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICA6IG1fdXBkYXRlVGltZXIoV29ya1F1
ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVuTG9vcCh0aGlzKSwgdGhpcywgJkNvbXBvc2l0aW5nUnVu
TG9vcDo6dXBkYXRlVGltZXJGaXJlZCkKKyNlbGlmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisg
ICAgOiBtX3RpbWVyUXVldWUoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkudGltZXJRdWV1ZSh0
aGlzKSkKKyAgICAsIG1fdXBkYXRlVGltZXIoSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisjZW5kaWYK
ICAgICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGTW92ZSh1cGRhdGVGdW5jdGlvbikpCiB7CiAjaWYg
VVNFKEdMSUJfRVZFTlRfTE9PUCkKQEAgLTE0Miw2ICsxNTYsMzYgQEAgdm9pZCBDb21wb3NpdGlu
Z1J1bkxvb3A6OnBlcmZvcm1UYXNrU3luYyhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQog
ICAgIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uLndhaXQobV9kaXNwYXRjaFN5bmNDb25kaXRpb25N
dXRleCk7CiB9CiAKKyNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorVk9JRCBDQUxMQkFDSyBD
b21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyQ2FsbGJhY2soUFZPSUQgbHBQYXJhbSwgQk9P
TEVBTiBUaW1lck9yV2FpdEZpcmVkKQoreworICAgIHN0YXRpY19jYXN0PENvbXBvc2l0aW5nUnVu
TG9vcCo+KGxwUGFyYW0pLT5tX3VwZGF0ZVRpbWVyID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cisg
ICAgc3RhdGljX2Nhc3Q8Q29tcG9zaXRpbmdSdW5Mb29wKj4obHBQYXJhbSktPnVwZGF0ZVRpbWVy
RmlyZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RhcnRVcGRh
dGVUaW1lcigpCit7CisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZF
TlRfTE9PUCkKKyAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworI2VsaWYgVVNF
KFdJTkRPV1NfRVZFTlRfTE9PUCkKKyAgICBpZiAobV91cGRhdGVUaW1lciA9PSBJTlZBTElEX0hB
TkRMRV9WQUxVRSkKKyAgICAgICAgOjpDcmVhdGVUaW1lclF1ZXVlVGltZXIoJm1fdXBkYXRlVGlt
ZXIsIG1fdGltZXJRdWV1ZSwgdXBkYXRlVGltZXJDYWxsYmFjaywgdGhpcywgMCwgMCwgV1RfRVhF
Q1VURUlOVElNRVJUSFJFQUQpOworI2VuZGlmCit9CisKK3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29w
OjpzdG9wVXBkYXRlVGltZXIoKQoreworI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShH
RU5FUklDX0VWRU5UX0xPT1ApCisgICAgbV91cGRhdGVUaW1lci5zdG9wKCk7CisjZWxpZiBVU0Uo
V0lORE9XU19FVkVOVF9MT09QKQorICAgIGlmIChtX3VwZGF0ZVRpbWVyICE9IElOVkFMSURfSEFO
RExFX1ZBTFVFKSB7CisgICAgICAgIDo6RGVsZXRlVGltZXJRdWV1ZVRpbWVyKG1fdGltZXJRdWV1
ZSwgbV91cGRhdGVUaW1lciwgTlVMTCk7CisgICAgICAgIG1fdXBkYXRlVGltZXIgPSBJTlZBTElE
X0hBTkRMRV9WQUxVRTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBDb21wb3NpdGluZ1J1bkxv
b3A6OnNjaGVkdWxlVXBkYXRlKCkKIHsKICAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fc3Rh
dGUubG9jayk7CkBAIC0xNjEsNyArMjA1LDcgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnNj
aGVkdWxlVXBkYXRlKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogICAgIHN3aXRjaCAobV9zdGF0
ZS51cGRhdGUpIHsKICAgICBjYXNlIFVwZGF0ZVN0YXRlOjpJZGxlOgogICAgICAgICBtX3N0YXRl
LnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpTY2hlZHVsZWQ7Ci0gICAgICAgIG1fdXBkYXRlVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7CisgICAgICAgIHN0YXJ0VXBkYXRlVGltZXIoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgVXBkYXRlU3RhdGU6OlNjaGVkdWxlZDoKICAgICAgICAgcmV0dXJu
OwpAQCAtMTc3LDcgKzIyMSw3IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRl
cygpCiAgICAgLy8gU3RvcCBldmVyeXRoaW5nLgogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
dGF0ZS5sb2NrKTsKLSAgICBtX3VwZGF0ZVRpbWVyLnN0b3AoKTsKKyAgICBzdG9wVXBkYXRlVGlt
ZXIoKTsKICAgICBtX3N0YXRlLmNvbXBvc2l0aW9uID0gQ29tcG9zaXRpb25TdGF0ZTo6SWRsZTsK
ICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpJZGxlOwogICAgIG1fc3RhdGUucGVu
ZGluZ1VwZGF0ZSA9IGZhbHNlOwpAQCAtMjA0LDcgKzI0OCw3IEBAIHZvaWQgQ29tcG9zaXRpbmdS
dW5Mb29wOjpjb21wb3NpdGlvbkNvbXBsZXRlZChMb2NrSG9sZGVyJiBzdGF0ZUxvY2tlcikKICAg
ICAgICAgaWYgKG1fc3RhdGUucGVuZGluZ1VwZGF0ZSkgewogICAgICAgICAgICAgbV9zdGF0ZS5w
ZW5kaW5nVXBkYXRlID0gZmFsc2U7CiAgICAgICAgICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0
ZVN0YXRlOjpTY2hlZHVsZWQ7Ci0gICAgICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hv
dCgwX3MpOworICAgICAgICAgICAgc3RhcnRVcGRhdGVUaW1lcigpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTIzNiw3ICsyODAsNyBAQCB2b2lkIENvbXBvc2l0aW5nUnVu
TG9vcDo6dXBkYXRlQ29tcGxldGVkKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogICAgICAgICBp
ZiAobV9zdGF0ZS5wZW5kaW5nVXBkYXRlKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnBlbmRpbmdV
cGRhdGUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6
OlNjaGVkdWxlZDsKLSAgICAgICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7
CisgICAgICAgICAgICBzdGFydFVwZGF0ZVRpbWVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21w
b3NpdGluZ1J1bkxvb3AuaAppbmRleCA0MmM1MmY2YmU4Mi4uZmMxMGNjNTg4ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5o
CkBAIC02OSw5ICs2OSwxOCBAQCBwcml2YXRlOgogICAgICAgICBQZW5kaW5nQ29tcGxldGlvbiwK
ICAgICB9OwogCisgICAgdm9pZCBzdGFydFVwZGF0ZVRpbWVyKCk7CisgICAgdm9pZCBzdG9wVXBk
YXRlVGltZXIoKTsKKwogICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwogCisjaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wOjpU
aW1lcjxDb21wb3NpdGluZ1J1bkxvb3A+IG1fdXBkYXRlVGltZXI7CisjZWxpZiBVU0UoV0lORE9X
U19FVkVOVF9MT09QKQorICAgIEhBTkRMRSBtX3RpbWVyUXVldWU7CisgICAgSEFORExFIG1fdXBk
YXRlVGltZXI7CisgICAgc3RhdGljIFZPSUQgQ0FMTEJBQ0sgdXBkYXRlVGltZXJDYWxsYmFjayhQ
Vk9JRCBscFBhcmFtLCBCT09MRUFOIFRpbWVyT3JXYWl0RmlyZWQpOworI2VuZGlmCiAgICAgRnVu
Y3Rpb248dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKICAgICBMb2NrIG1fZGlzcGF0Y2hTeW5j
Q29uZGl0aW9uTXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eS5jcHAKaW5kZXggMzlhZjliMzc5OGIuLmE4ZjM2ZDk5OTdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5j
cHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6
ZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0bwogICAgIGVsc2Ug
ewogICAgICAgICBtX2hhc1JlY2VpdmVkRmlyc3RVcGRhdGUgPSB0cnVlOwogCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkgJiYgKFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpIHx8IFBMQVRGT1JNKFdJTikpCiAgICAgICAgIGlmIChtX3BlbmRp
bmdOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpIHsKICAgICAgICAgICAgIHNldE5h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhtX3BlbmRpbmdOYXRpdmVTdXJmYWNlSGFu
ZGxlRm9yQ29tcG9zaXRpbmcpOwogICAgICAgICAgICAgbV9wZW5kaW5nTmF0aXZlU3VyZmFjZUhh
bmRsZUZvckNvbXBvc2l0aW5nID0gMDsKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEFjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eTo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29u
c3QgTGF5ZXJUcgogICAgIG1fd2ViUGFnZVByb3h5LnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKGxheWVyVHJlZUNvbnRleHQpOwogfQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgKFBMQVRGT1JN
KEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpIHx8IFBMQVRGT1JNKFdJTikpCiB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6
c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90IGhhbmRsZSkKIHsK
ICAgICBpZiAoIW1faGFzUmVjZWl2ZWRGaXJzdFVwZGF0ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuaAppbmRleCBjMzhh
OWJiMTJiYy4uNDdiOGI0MzEyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIGFsd2F5c1VzZUNvbXBvc2l0aW5nKCkgfHwgIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5
KCk7IH0KICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKIAotI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
IChQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01Q
T1NJVEVfV0lORE9XKSB8fCBQTEFURk9STShXSU4pKQogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFj
ZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KTsKICAgICB2b2lkIGRlc3Ryb3lOYXRpdmVT
dXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoKTsKICNlbmRpZgpAQCAtODksNyArODksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgLy8gRm9yIGEgbmV3IERyYXdpbmcgQXJlYSBkb24ndCBkcmF3IGFueXRo
aW5nIHVudGlsIHRoZSBXZWJQcm9jZXNzIGhhcyBzZW50IG92ZXIgdGhlIGZpcnN0IGNvbnRlbnQu
CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVkRmlyc3RVcGRhdGUgeyBmYWxzZSB9OwogCi0jaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYg
IVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgKFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNU
RURfWENPTVBPU0lURV9XSU5ET1cpIHx8IFBMQVRGT1JNKFdJTikpCiAgICAgdWludDY0X3QgbV9w
ZW5kaW5nTmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nIHsgMCB9OwogI2VuZGlmCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IDBmOWY5ZDRlZmQ1
Li41ZDEzZjY4YzFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApA
QCAtMjMzLDggKzIzMywxMCBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgIG1fcGFnZSA9
IHByb2Nlc3NQb29sLT5jcmVhdGVXZWJQYWdlKCptX3BhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24pKTsKICAgICBtX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSAgICBp
ZiAobV9wYWdlLT5kcmF3aW5nQXJlYSgpKQotICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCkt
PnNldFNpemUoSW50U2l6ZShyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LCByZWN0LmJvdHRvbSAtIHJl
Y3QudG9wKSk7CisgICAgaWYgKEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0Fy
ZWEgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkqPihtX3BhZ2UtPmRy
YXdpbmdBcmVhKCkpKSB7CisgICAgICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKEludFNpemUocmVj
dC5yaWdodCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCkpOworICAgICAgICBk
cmF3aW5nQXJlYS0+c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKCh1aW50NjRf
dCltX3dpbmRvdyk7CisgICAgfQogCiAgICAgLy8gRklYTUU6IEluaXRpYWxpemluZyB0aGUgdG9v
bHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1dCBzZWVtcyBsaWtlIHNvbWV0
aGluZwogICAgIC8vIHdlIGNvdWxkIGRvIG9uIGRlbWFuZCB0byBzYXZlIHJlc291cmNlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJh
d2luZ0FyZWEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5jcHAKaW5kZXggZWRmZTQ2YjIxOGUuLjM4ODZkMGI4NjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmNwcApAQCAtMzY5LDEyICszNjksMTMgQEAgdm9pZCBBY2NlbGVyYXRlZERy
YXdpbmdBcmVhOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKEdyYXBoaWNzTGF5ZXIq
IGdyYXAKIAogICAgICAgICBpZiAobV9pc1BhaW50aW5nU3VzcGVuZGVkKQogICAgICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5wYXVzZVJlbmRlcmluZygpOwotICAgIH0KIAotI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0Uo
UkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9uYXRpdmVTdXJmYWNlSGFu
ZGxlRm9yQ29tcG9zaXRpbmcpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKG1fbmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0
aW5nKTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIChQTEFURk9STShHVEspICYmIFBM
QVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKSB8fCBQTEFU
Rk9STShXSU4pKQorICAgICAgICBpZiAobV9uYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRp
bmcpCisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVG
b3JDb21wb3NpdGluZyhtX25hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyk7CiAjZW5k
aWYKKyAgICB9CisKICAgICBpZiAoIW1faW5VcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSkKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXll
ckZsdXNoKHRydWUpOwogCkBAIC00MjMsNyArNDI0LDcgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdp
bmdBcmVhOjpkaXNjYXJkUHJldmlvdXNMYXllclRyZWVIb3N0KCkKICAgICBtX3ByZXZpb3VzTGF5
ZXJUcmVlSG9zdCA9IG51bGxwdHI7CiB9CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
IFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RL
KSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykg
fHwgUExBVEZPUk0oV0lOKSkKIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6c2V0TmF0aXZl
U3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90IGhhbmRsZSkKIHsKICAgICBtX25h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyA9IGhhbmRsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aAppbmRleCAwOTI3ZDQ0ZDAwNC4uNTlhZjNjODk3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKQEAg
LTYxLDEwICs2MSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5n
TGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJl
c2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1E
aXNwbGF5SUQpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0o
R1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykgfHwgUExBVEZPUk0oV0lOKSkKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JD
b21wb3NpdGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXN0cm95TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFj
ZS5jcHAKaW5kZXggZTU3OWE1ZGYzYTAuLmE4MDZkZjc4YjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAg
LTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV1BFLmgiCiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4u
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC01Nyw2ICs2MSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNl
PiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLAogI2lmIFBMQVRG
T1JNKFdQRSkKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgp
ID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V1BFKQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0
ZWRTdXJmYWNlV1BFOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50KTsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKFdJTikKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgp
ID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2luZG93cykKKyAgICAgICAgcmV0dXJuIEFjY2Vs
ZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggODIzYjdmYTJh
YzcuLmFkMzUyODgzYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMjIzLDcgKzIy
Myw3IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZENoYW5nZVZp
ZXdwb3J0QXR0cmlidXRlcyhWaWV3cG9ydEF0dHJpCiAgICAgICAgIGRpZENoYW5nZVZpZXdwb3J0
KCk7CiB9CiAKLSNpZiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJ
UkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2lmIChQTEFURk9STShHVEspICYmIFBMQVRGT1JN
KFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKSkgfHwgUExBVEZPUk0o
V0lOKQogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90IGhhbmRsZSkKIHsKICAgICBtX2xheWVy
VHJlZUNvbnRleHQuY29udGV4dElEID0gaGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IGI3ODQ2ODE2NzliLi4xYzkwNTAyNDFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNjgs
NyArNjgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRJc0Rpc2NhcmRhYmxlKGJvb2wpIG92
ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICAhVVNFKFJF
RElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisjaWYgKFBMQVRGT1JNKEdUSykgJiYgUExBVEZP
Uk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpKSB8fCBQTEFURk9S
TShXSU4pCiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWlu
dDY0X3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDdlZTIyOGNlMThhLi5mZWM0NjAxYzY2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0x
NTYsNyArMTU2LDcgQEAgcHJvdGVjdGVkOgogICAgIERyYXdpbmdBcmVhVHlwZSBtX3R5cGU7CiAg
ICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQ
TEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgKFBMQVRGT1JNKEdUSykg
JiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpIHx8
IFBMQVRGT1JNKFdJTikpCiAgICAgdWludDY0X3QgbV9uYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcgeyAwIH07CiAjZW5kaWYKIApAQCAtMTgyLDcgKzE4Miw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNr
SUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRpZgogCi0jaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJ
UkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYg
KFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpIHx8IFBMQVRGT1JNKFdJTikpCiAgICAgdmlydHVhbCB2b2lkIHNldE5hdGl2
ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZXN0cm95TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSA9IDA7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggMDIzMzA0MDUxNDIuLjY0YTUwM2U0Njg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbgpAQCAtNDAsOCArNDAsOCBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJl
YSB7CiAgICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogI2VuZGlmCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JN
KEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RLKSAmJiBQTEFU
Rk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykgfHwgUExBVEZP
Uk0oV0lOKSkKICAgICBTZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0
X3QgaGFuZGxlKQotICAgIERlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmco
KSAtPiAoYm9vbCBoYW5kbGVkKQorICAgIERlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcoKSAtPiAoYm9vbCBoYW5kbGVkKSBMZWdhY3lTeW5jCiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA4
NWRkNDU4ZTAxOC4uYzkyNjIzYjY5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRJc0Rpc2NhcmRhYmxlKGJvb2wpIHsgfTsKICNlbmRpZgogCi0jaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspCisjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQogICAgIHZpcnR1
YWwgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QpIHsg
fTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMmIyMjdhODU0NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4u
Y3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVk
U3VyZmFjZVdpbi5oIgorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPGVnbC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5V2luLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVy
YXRlZFN1cmZhY2VXaW4+IEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKFdlYlBhZ2UmIHdl
YlBhZ2UsIENsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZWxlcmF0ZWRTdXJmYWNlV2luPihuZXcgQWNjZWxlcmF0ZWRTdXJmYWNlV2luKHdlYlBhZ2UsIGNs
aWVudCkpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VXaW46OkFjY2VsZXJhdGVkU3VyZmFjZVdp
bihXZWJQYWdlJiB3ZWJQYWdlLCBDbGllbnQmIGNsaWVudCkKKyAgICA6IEFjY2VsZXJhdGVkU3Vy
ZmFjZSh3ZWJQYWdlLCBjbGllbnQpCit7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdpbjo6fkFj
Y2VsZXJhdGVkU3VyZmFjZVdpbigpCit7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
Ojppbml0aWFsaXplKCkKK3sKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmZpbmFs
aXplKCkKK3sKK30KKwordWludDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp3aW5kb3coKSBj
b25zdAoreworICAgIC8vIEVHTE5hdGl2ZVdpbmRvd1R5cGUgY2hhbmdlcyBkZXBlbmRpbmcgb24g
dGhlIEVHTCBpbXBsZW1lbnRhdGlvbjogcmVpbnRlcnByZXRfY2FzdCB3b3JrcworICAgIC8vIGZv
ciBwb2ludGVycyAob25seSBpZiB0aGV5IGFyZSA2NC1iaXQgd2lkZSBhbmQgbm90IGZvciBvdGhl
ciBjYXNlcyksIGFuZCBzdGF0aWNfY2FzdCBmb3IKKyAgICAvLyBudW1lcmljIHR5cGVzIChhbmQg
d2hlbiBuZWVkZWQgdGhleSBnZXQgZXh0ZW5kZWQgdG8gNjQtYml0KSBidXQgbm90IGZvciBwb2lu
dGVycy4gVXNpbmcKKyAgICAvLyBhIHBsYWluIEMgY2FzdCBleHByZXNzaW9uIGluIHRoaXMgb25l
IGluc3RhbmNlIHdvcmtzIGluIGFsbCBjYXNlcy4KKyAgICAvLyAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihFR0xOYXRpdmVXaW5kb3dUeXBlKSA8PSBzaXplb2YodWludDY0X3QpLCAiRUdMTmF0aXZl
V2luZG93VHlwZSBtdXN0IG5vdCBiZSBsb25nZXIgdGhhbiA2NCBiaXRzLiIpOworICAgIHJldHVy
biAwOworfQorCit1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OnN1cmZhY2VJRCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsKK30KKwordm9pZCBBY2NlbGVy
YXRlZFN1cmZhY2VXaW46OndpbGxSZW5kZXJGcmFtZSgpCit7Cit9CisKK3ZvaWQgQWNjZWxlcmF0
ZWRTdXJmYWNlV2luOjpkaWRSZW5kZXJGcmFtZSgpCit7CisgICAgLy8gRklYTUU6IGZyYW1lQ29t
cGxldGUoKSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGZyYW1lIHdhcyBhY3R1YWxseSByZW5k
ZXJlZCBpbiB0aGUgc2NyZWVuLgorICAgIG1fY2xpZW50LmZyYW1lQ29tcGxldGUoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNmMWZkN2U5M2YzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFj
ZVdpbi5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXSU4pCisKKyNp
bmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2U7CisKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZVdpbiBmaW5hbCA6IHB1Ymxp
YyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJh
dGVkU3VyZmFjZVdpbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPiBjcmVhdGUoV2ViUGFn
ZSYsIENsaWVudCYpOworICAgIH5BY2NlbGVyYXRlZFN1cmZhY2VXaW4oKTsKKworICAgIHVpbnQ2
NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNv
bnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBmaW5hbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFJlbmRlckZyYW1lKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZW5kZXJGcmFtZSgpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAg
IEFjY2VsZXJhdGVkU3VyZmFjZVdpbihXZWJQYWdlJiwgQ2xpZW50Jik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCBhNTJiMTIwYWJiMi4uYTA5ZmMw
NGFkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiV2ViVmll
dy5oIgogCkBAIC00MTQsNCArNDE0LDQgQEAgZmxvYXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJWaWV3LmRl
dmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CisjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXgg
NmJiMzM0ZDQ0MWQuLjMzNzRkNmFhNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHRfaAogI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9o
CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgpAQCAtOTksNiArOTksNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcigpOwogfTsKIAotI2Vu
ZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMCisjZW5kaWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wgJiYg
IVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2VuZGlmIC8vIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2ZmODFj
ZjIwODkuLjg3OTc1YzUzYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAt
MTk3LDcgKzE5Nyw3IEBACiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVy
VHJlZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgotI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LmgiCiAjZW5kaWYKIApAQCAtOTIxLDcgKzkyMSw3IEBAIHZvaWQgV2ViVmlldzo6
YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgaWYgKGlzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdM
YXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQt
PnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGRpcnR5UmVjdCk7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTkzLDcgKzk5Myw3IEBAIHZvaWQgV2ViVmlldzo6c2Nyb2xs
QmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBpbnQgbG9naWNhbER4LCBpbnQgbG9n
aWNhCiAgICAgICAgIC8vIGFueSBuZXdseS1leHBvc2VkIHRpbGVzLiA8aHR0cDovL3dlYmtpdC5v
cmcvYi81MjcxND4KICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVk
c0Rpc3BsYXlJblJlY3Qoc2Nyb2xsVmlld1JlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zY3JvbGxO
b25Db21wb3NpdGVkQ29udGVudHMoc2Nyb2xsVmlld1JlY3QsIEludFNpemUoZHgsIGR5KSk7CiAj
ZW5kaWYKICAgICAgICAgcmV0dXJuOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBXZWJWaWV3
OjpzaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICBtX2JhY2tpbmdM
YXllci0+c2V0U2l6ZShuZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRz
RGlzcGxheSgpOwogICAgIH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBp
ZiAobV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlmCkBA
IC01NDgwLDcgKzU0ODAsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaHIgPSBwcmVmc1ByaXZh
dGUtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJ
TEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgc3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSA9IEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxl
KCk7CiAgICAgZW5hYmxlZCA9IGVuYWJsZWQgJiYgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWls
YWJsZTsKICNlbGlmIFVTRShESVJFQ1QyRCkKQEAgLTY0ODcsNyArNjQ4Nyw3IEBAIGJvb2wgV2Vi
Vmlldzo6cGFpbnRDb21wb3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZpY2VDb250ZXh0KQogCiAj
aWYgVVNFKENBKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2Vz
Tm93KCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICNlbmRpZgogCkBA
IC03MTQ5LDcgKzcxNDksNyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKEdyYXBo
aWNzTGF5ZXIqIGxheWVyKQogICAgIGVsc2UKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnJlbW92
ZUFsbENoaWxkcmVuKCk7CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBp
ZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29tcG9zaXRpbmdMYXll
cihsYXllcik7CkBAIC03MTYyLDcgKzcxNjIsNyBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGlu
Z0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNz
TGF5ZXJDaGFuZ2VzU29vbigpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAg
IGlmICghbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNoUGVuZGluZ0xheWVyQ2hh
bmdlc1Nvb24oKTsKQEAgLTcyMjMsNyArNzIyMyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogICAgICAgICBtX2JhY2tpbmdMYXll
ciA9IG51bGxwdHI7CiAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gZmFsc2U7
CiAgICAgfQotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChhY2NlbGVy
YXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZyA9IGFjY2VsZXJhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCmluZGV4IGMzZWIwOGM0
Mjg4Li5lYmIyM2RhZDc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNjgsNyAr
NjgsNyBAQCBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKLSNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogY2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5k
aWYKIGNsYXNzIFdlYlZpZXdHcm91cDsKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcm90ZWN0ZWQ6CiAj
aWYgVVNFKENBKQogICAgIFJlZlB0cjxXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXll
clRyZWVIb3N0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2JhY2tpbmdM
YXllcjsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ7CiAjZW5kaWYKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291
cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXggNjg0N2I0ODQxMzIuLjEyYjM4NGYwMjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFIE9GRikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCiAK
IGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQorICAgIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPTikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NP
TF9NQU5BR0VSIFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEgUFVCTElDIE9GRikKICAgICBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNXaW5DYWlyby5jbWFrZQppbmRleCA0YWQyYzRiNDIzYS4uMGM1NWY1N2IzZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpAQCAtMjQsNyArMjQsMTEgQEAgZW5kaWYgKCkKIAog
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9f
QlVJTEQoVVNFX0NGIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVE
X0dSQVBISUNTIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04p
CitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTklDT1NJQSBPTikKK1NFVF9BTkRfRVhQT1NF
X1RPX0JVSUxEKFVTRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IgT04p
CiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgT04pCiBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVJfR0wgT04pCiBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfTUVESUFfRk9VTkRBVElPTiBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362600</attachid>
            <date>2019-02-21 02:25:38 -0800</date>
            <delta_ts>2019-02-21 02:29:29 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364-3.patch</filename>
            <type>text/plain</type>
            <size>29376</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgKaW5kZXggYjM4NDQyNzVhNjUuLjUxNjg0YjIwOGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aApAQCAtMzgsNiArMzgsNyBAQAogCiAjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjZW5k
aWYKQEAgLTc2LDYgKzc3LDggQEAgcHVibGljOgogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0
Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQogI2VsaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wJiBy
dW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQorI2VsaWYgVVNFKFdJTkRPV1Nf
RVZFTlRfTE9PUCkKKyAgICBIQU5ETEUgdGltZXJRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZXJRdWV1ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWly
by5jbWFrZQppbmRleCA0MzRiYzQzOTMyZi4uNTQyZGYzODY5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMTEsNiArMTEsMTUgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwor
ICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNw
cAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5j
cHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAor
ICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKyAg
ICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuY3BwCisKKyAgICBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdl
bmVyaWMuY3BwCisKICAgICBwYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtNTksNSArNjgsOCBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBXZWJDb3JlX0ZPUldBUkRJ
TkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8KKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwKICkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
Y3BwCmluZGV4IGQyM2M2MDc5MmVhLi44ZTE0YjNhOWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC0yMTEsNyAr
MjExLDcgQEAgdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkKIAog
ICAgIGVnbERpc3BsYXlzKCkuYWRkKHRoaXMpOwogCi0jaWYgIVBMQVRGT1JNKFdJTikKKyNpZiAx
IC8vICFQTEFURk9STShXSU4pCiAgICAgc3RhdGljIGJvb2wgZWdsQXRleGl0SGFuZGxlckluaXRp
YWxpemVkID0gZmFsc2U7CiAgICAgaWYgKCFlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQpIHsK
ICAgICAgICAgLy8gRUdMIHJlZ2lzdGVycyBhdGV4aXQgaGFuZGxlcnMgdG8gY2xlYW51cCBpdHMg
Z2xvYmFsIGRpc3BsYXkgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDBhNTMzNWEz
Y2Y4Li5jMTUxYWEzZTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNCw2ICsyNCw4
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9X
S0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCiAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUuY3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGls
aWFyeVByb2Nlc3NNYWluV2luLmNwcApAQCAtMTY0LDYgKzE2NiwxMiBAQCBpZiAoJHtXVEZfUExB
VEZPUk1fV0lOX0NBSVJPfSkKIAogICAgICAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNh
aXJvLmNwcAogCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisgICAg
ICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKworICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIuY3BwCisKICAgICAgICAgU2hhcmVkL2Nh
aXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCiAgICAgICAgIFNoYXJlZC9jdXJsL1dlYkNv
cmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0xNzMsNiArMTgxLDggQEAgaWYgKCR7V1RGX1BM
QVRGT1JNX1dJTl9DQUlST30pCiAgICAgICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVD
YWlyby5jcHAKIAogICAgICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKworICAgICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKICAgICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCmluZGV4IGE1ZjE1ZjAxYTUwLi5hZTgwMmQ3ZTI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2VuZVN0YXRlKCkKIAogICAgIC8vIFN0b3JlIGxh
eWVyIGFuZCBpbXBsIHJlZmVyZW5jZXMgYWxvbmcgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB1cGRh
dGUKICAgICAvLyBmb3IgZWFjaCB0eXBlIG9mIHBvc3NpYmxlIGxheWVyIGJhY2tpbmcuCi0gICAg
c3RydWN0IHsKKyAgICBzdHJ1Y3QgTGF5ZXJzQnlCYWNraW5nIHsKICAgICAgICAgc3RydWN0IEJh
Y2tpbmdTdG9yZSB7CiAgICAgICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRleHR1cmVN
YXBwZXJMYXllcj4gbGF5ZXI7CiAgICAgICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5p
Y29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsPiBiYWNraW5nU3RvcmU7CkBAIC0z
NjQsNyArMzY0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5l
U3RhdGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVy
KSwgc3RkOjpyZWYoaW1wbC5wcm94eSgpKSwgbGF5ZXJTdGF0ZS5kZWx0YS5jb250ZW50TGF5ZXJD
aGFuZ2VkIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXllclN0YXRl
LmltYWdlQmFja2luZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGltcGwg
PSBpbWFnZUJhY2tpbmdJbXBsKCpsYXllclN0YXRlLmltYWdlQmFja2luZyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5h
cHBlbmQ8TGF5ZXJzQnlCYWNraW5nOjpJbWFnZUJhY2tpbmc+KAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbCksIGltcGwudGFr
ZVVwZGF0ZSgpIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNMYXllcihudWxscHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3Au
Y3BwCmluZGV4IGJkYzVlZTVhOTJmLi5lOGYyZjI1MzRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9z
aXRpbmdSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC01Niwx
MCArNTYsMTkgQEAgcHVibGljOgogICAgICAgICBnZXRPckNyZWF0ZVdvcmtRdWV1ZUZvckNvbnRl
eHQoY29udGV4dCkuZGlzcGF0Y2goV1RGTW92ZShmdW5jdGlvbikpOwogICAgIH0KIAorI2lmIFVT
RShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgUnVuTG9v
cCYgcnVuTG9vcCh2b2lkKiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGdldE9yQ3Jl
YXRlV29ya1F1ZXVlRm9yQ29udGV4dChjb250ZXh0KS5ydW5Mb29wKCk7CiAgICAgfQorI2VuZGlm
CisKKyNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorICAgIEhBTkRMRSB0aW1lclF1ZXVlKHZv
aWQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0T3JDcmVhdGVXb3JrUXVldWVG
b3JDb250ZXh0KGNvbnRleHQpLnRpbWVyUXVldWUoKTsKKyAgICB9CisjZW5kaWYKIAogICAgIHZv
aWQgaW52YWxpZGF0ZSh2b2lkKiBjb250ZXh0KQogICAgIHsKQEAgLTEwNiw3ICsxMTUsMTIgQEAg
cHJpdmF0ZToKIH07CiAKIENvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgdXBkYXRlRnVuY3Rpb24pCisjaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICA6IG1fdXBkYXRlVGltZXIoV29ya1F1
ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVuTG9vcCh0aGlzKSwgdGhpcywgJkNvbXBvc2l0aW5nUnVu
TG9vcDo6dXBkYXRlVGltZXJGaXJlZCkKKyNlbGlmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisg
ICAgOiBtX3RpbWVyUXVldWUoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkudGltZXJRdWV1ZSh0
aGlzKSkKKyAgICAsIG1fdXBkYXRlVGltZXIoSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisjZW5kaWYK
ICAgICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGTW92ZSh1cGRhdGVGdW5jdGlvbikpCiB7CiAjaWYg
VVNFKEdMSUJfRVZFTlRfTE9PUCkKQEAgLTE0Miw2ICsxNTYsMzYgQEAgdm9pZCBDb21wb3NpdGlu
Z1J1bkxvb3A6OnBlcmZvcm1UYXNrU3luYyhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQog
ICAgIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uLndhaXQobV9kaXNwYXRjaFN5bmNDb25kaXRpb25N
dXRleCk7CiB9CiAKKyNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorVk9JRCBDQUxMQkFDSyBD
b21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyQ2FsbGJhY2soUFZPSUQgbHBQYXJhbSwgQk9P
TEVBTiBUaW1lck9yV2FpdEZpcmVkKQoreworICAgIHN0YXRpY19jYXN0PENvbXBvc2l0aW5nUnVu
TG9vcCo+KGxwUGFyYW0pLT5tX3VwZGF0ZVRpbWVyID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cisg
ICAgc3RhdGljX2Nhc3Q8Q29tcG9zaXRpbmdSdW5Mb29wKj4obHBQYXJhbSktPnVwZGF0ZVRpbWVy
RmlyZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RhcnRVcGRh
dGVUaW1lcigpCit7CisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZF
TlRfTE9PUCkKKyAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworI2VsaWYgVVNF
KFdJTkRPV1NfRVZFTlRfTE9PUCkKKyAgICBpZiAobV91cGRhdGVUaW1lciA9PSBJTlZBTElEX0hB
TkRMRV9WQUxVRSkKKyAgICAgICAgOjpDcmVhdGVUaW1lclF1ZXVlVGltZXIoJm1fdXBkYXRlVGlt
ZXIsIG1fdGltZXJRdWV1ZSwgdXBkYXRlVGltZXJDYWxsYmFjaywgdGhpcywgMCwgMCwgV1RfRVhF
Q1VURUlOVElNRVJUSFJFQUQpOworI2VuZGlmCit9CisKK3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29w
OjpzdG9wVXBkYXRlVGltZXIoKQoreworI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShH
RU5FUklDX0VWRU5UX0xPT1ApCisgICAgbV91cGRhdGVUaW1lci5zdG9wKCk7CisjZWxpZiBVU0Uo
V0lORE9XU19FVkVOVF9MT09QKQorICAgIGlmIChtX3VwZGF0ZVRpbWVyICE9IElOVkFMSURfSEFO
RExFX1ZBTFVFKSB7CisgICAgICAgIDo6RGVsZXRlVGltZXJRdWV1ZVRpbWVyKG1fdGltZXJRdWV1
ZSwgbV91cGRhdGVUaW1lciwgTlVMTCk7CisgICAgICAgIG1fdXBkYXRlVGltZXIgPSBJTlZBTElE
X0hBTkRMRV9WQUxVRTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBDb21wb3NpdGluZ1J1bkxv
b3A6OnNjaGVkdWxlVXBkYXRlKCkKIHsKICAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fc3Rh
dGUubG9jayk7CkBAIC0xNjEsNyArMjA1LDcgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnNj
aGVkdWxlVXBkYXRlKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogICAgIHN3aXRjaCAobV9zdGF0
ZS51cGRhdGUpIHsKICAgICBjYXNlIFVwZGF0ZVN0YXRlOjpJZGxlOgogICAgICAgICBtX3N0YXRl
LnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpTY2hlZHVsZWQ7Ci0gICAgICAgIG1fdXBkYXRlVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7CisgICAgICAgIHN0YXJ0VXBkYXRlVGltZXIoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgVXBkYXRlU3RhdGU6OlNjaGVkdWxlZDoKICAgICAgICAgcmV0dXJu
OwpAQCAtMTc3LDcgKzIyMSw3IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRl
cygpCiAgICAgLy8gU3RvcCBldmVyeXRoaW5nLgogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
dGF0ZS5sb2NrKTsKLSAgICBtX3VwZGF0ZVRpbWVyLnN0b3AoKTsKKyAgICBzdG9wVXBkYXRlVGlt
ZXIoKTsKICAgICBtX3N0YXRlLmNvbXBvc2l0aW9uID0gQ29tcG9zaXRpb25TdGF0ZTo6SWRsZTsK
ICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpJZGxlOwogICAgIG1fc3RhdGUucGVu
ZGluZ1VwZGF0ZSA9IGZhbHNlOwpAQCAtMjA0LDcgKzI0OCw3IEBAIHZvaWQgQ29tcG9zaXRpbmdS
dW5Mb29wOjpjb21wb3NpdGlvbkNvbXBsZXRlZChMb2NrSG9sZGVyJiBzdGF0ZUxvY2tlcikKICAg
ICAgICAgaWYgKG1fc3RhdGUucGVuZGluZ1VwZGF0ZSkgewogICAgICAgICAgICAgbV9zdGF0ZS5w
ZW5kaW5nVXBkYXRlID0gZmFsc2U7CiAgICAgICAgICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0
ZVN0YXRlOjpTY2hlZHVsZWQ7Ci0gICAgICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hv
dCgwX3MpOworICAgICAgICAgICAgc3RhcnRVcGRhdGVUaW1lcigpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTIzNiw3ICsyODAsNyBAQCB2b2lkIENvbXBvc2l0aW5nUnVu
TG9vcDo6dXBkYXRlQ29tcGxldGVkKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogICAgICAgICBp
ZiAobV9zdGF0ZS5wZW5kaW5nVXBkYXRlKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnBlbmRpbmdV
cGRhdGUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6
OlNjaGVkdWxlZDsKLSAgICAgICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7
CisgICAgICAgICAgICBzdGFydFVwZGF0ZVRpbWVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21w
b3NpdGluZ1J1bkxvb3AuaAppbmRleCA0MmM1MmY2YmU4Mi4uZmMxMGNjNTg4ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5o
CkBAIC02OSw5ICs2OSwxOCBAQCBwcml2YXRlOgogICAgICAgICBQZW5kaW5nQ29tcGxldGlvbiwK
ICAgICB9OwogCisgICAgdm9pZCBzdGFydFVwZGF0ZVRpbWVyKCk7CisgICAgdm9pZCBzdG9wVXBk
YXRlVGltZXIoKTsKKwogICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwogCisjaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wOjpU
aW1lcjxDb21wb3NpdGluZ1J1bkxvb3A+IG1fdXBkYXRlVGltZXI7CisjZWxpZiBVU0UoV0lORE9X
U19FVkVOVF9MT09QKQorICAgIEhBTkRMRSBtX3RpbWVyUXVldWU7CisgICAgSEFORExFIG1fdXBk
YXRlVGltZXI7CisgICAgc3RhdGljIFZPSUQgQ0FMTEJBQ0sgdXBkYXRlVGltZXJDYWxsYmFjayhQ
Vk9JRCBscFBhcmFtLCBCT09MRUFOIFRpbWVyT3JXYWl0RmlyZWQpOworI2VuZGlmCiAgICAgRnVu
Y3Rpb248dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKICAgICBMb2NrIG1fZGlzcGF0Y2hTeW5j
Q29uZGl0aW9uTXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJl
YVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWFQcm94eS5jcHAKaW5kZXggMzlhZjliMzc5OGIuLmE4ZjM2ZDk5OTdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5j
cHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6
ZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0bwogICAgIGVsc2Ug
ewogICAgICAgICBtX2hhc1JlY2VpdmVkRmlyc3RVcGRhdGUgPSB0cnVlOwogCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVT
RShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkgJiYgKFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURf
WENPTVBPU0lURV9XSU5ET1cpIHx8IFBMQVRGT1JNKFdJTikpCiAgICAgICAgIGlmIChtX3BlbmRp
bmdOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcpIHsKICAgICAgICAgICAgIHNldE5h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyhtX3BlbmRpbmdOYXRpdmVTdXJmYWNlSGFu
ZGxlRm9yQ29tcG9zaXRpbmcpOwogICAgICAgICAgICAgbV9wZW5kaW5nTmF0aXZlU3VyZmFjZUhh
bmRsZUZvckNvbXBvc2l0aW5nID0gMDsKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEFjY2VsZXJh
dGVkRHJhd2luZ0FyZWFQcm94eTo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29u
c3QgTGF5ZXJUcgogICAgIG1fd2ViUGFnZVByb3h5LnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKGxheWVyVHJlZUNvbnRleHQpOwogfQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgKFBMQVRGT1JN
KEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpIHx8IFBMQVRGT1JNKFdJTikpCiB2b2lkIEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eTo6
c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90IGhhbmRsZSkKIHsK
ICAgICBpZiAoIW1faGFzUmVjZWl2ZWRGaXJzdFVwZGF0ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQWNjZWxlcmF0ZWREcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkuaAppbmRleCBjMzhh
OWJiMTJiYy4uNDdiOGI0MzEyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIGFsd2F5c1VzZUNvbXBvc2l0aW5nKCkgfHwgIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5
KCk7IH0KICAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKIAotI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
IChQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01Q
T1NJVEVfV0lORE9XKSB8fCBQTEFURk9STShXSU4pKQogICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFj
ZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KTsKICAgICB2b2lkIGRlc3Ryb3lOYXRpdmVT
dXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoKTsKICNlbmRpZgpAQCAtODksNyArODksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgLy8gRm9yIGEgbmV3IERyYXdpbmcgQXJlYSBkb24ndCBkcmF3IGFueXRo
aW5nIHVudGlsIHRoZSBXZWJQcm9jZXNzIGhhcyBzZW50IG92ZXIgdGhlIGZpcnN0IGNvbnRlbnQu
CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVkRmlyc3RVcGRhdGUgeyBmYWxzZSB9OwogCi0jaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYg
IVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgKFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNU
RURfWENPTVBPU0lURV9XSU5ET1cpIHx8IFBMQVRGT1JNKFdJTikpCiAgICAgdWludDY0X3QgbV9w
ZW5kaW5nTmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nIHsgMCB9OwogI2VuZGlmCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IDBmOWY5ZDRlZmQ1
Li41ZDEzZjY4YzFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApA
QCAtMjMzLDggKzIzMywxMCBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgIG1fcGFnZSA9
IHByb2Nlc3NQb29sLT5jcmVhdGVXZWJQYWdlKCptX3BhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24pKTsKICAgICBtX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7CiAKLSAgICBp
ZiAobV9wYWdlLT5kcmF3aW5nQXJlYSgpKQotICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCkt
PnNldFNpemUoSW50U2l6ZShyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LCByZWN0LmJvdHRvbSAtIHJl
Y3QudG9wKSk7CisgICAgaWYgKEFjY2VsZXJhdGVkRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0Fy
ZWEgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZERyYXdpbmdBcmVhUHJveHkqPihtX3BhZ2UtPmRy
YXdpbmdBcmVhKCkpKSB7CisgICAgICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKEludFNpemUocmVj
dC5yaWdodCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCkpOworICAgICAgICBk
cmF3aW5nQXJlYS0+c2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKCh1aW50NjRf
dCltX3dpbmRvdyk7CisgICAgfQogCiAgICAgLy8gRklYTUU6IEluaXRpYWxpemluZyB0aGUgdG9v
bHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1dCBzZWVtcyBsaWtlIHNvbWV0
aGluZwogICAgIC8vIHdlIGNvdWxkIGRvIG9uIGRlbWFuZCB0byBzYXZlIHJlc291cmNlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJh
d2luZ0FyZWEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5jcHAKaW5kZXggZWRmZTQ2YjIxOGUuLjM4ODZkMGI4NjExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdB
cmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZERyYXdpbmdBcmVhLmNwcApAQCAtMzY5LDEyICszNjksMTMgQEAgdm9pZCBBY2NlbGVyYXRlZERy
YXdpbmdBcmVhOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKEdyYXBoaWNzTGF5ZXIq
IGdyYXAKIAogICAgICAgICBpZiAobV9pc1BhaW50aW5nU3VzcGVuZGVkKQogICAgICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5wYXVzZVJlbmRlcmluZygpOwotICAgIH0KIAotI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0Uo
UkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICBpZiAobV9uYXRpdmVTdXJmYWNlSGFu
ZGxlRm9yQ29tcG9zaXRpbmcpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKG1fbmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0
aW5nKTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIChQTEFURk9STShHVEspICYmIFBM
QVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKSB8fCBQTEFU
Rk9STShXSU4pKQorICAgICAgICBpZiAobV9uYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRp
bmcpCisgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVG
b3JDb21wb3NpdGluZyhtX25hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyk7CiAjZW5k
aWYKKyAgICB9CisKICAgICBpZiAoIW1faW5VcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSkKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXll
ckZsdXNoKHRydWUpOwogCkBAIC00MjMsNyArNDI0LDcgQEAgdm9pZCBBY2NlbGVyYXRlZERyYXdp
bmdBcmVhOjpkaXNjYXJkUHJldmlvdXNMYXllclRyZWVIb3N0KCkKICAgICBtX3ByZXZpb3VzTGF5
ZXJUcmVlSG9zdCA9IG51bGxwdHI7CiB9CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
IFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RL
KSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykg
fHwgUExBVEZPUk0oV0lOKSkKIHZvaWQgQWNjZWxlcmF0ZWREcmF3aW5nQXJlYTo6c2V0TmF0aXZl
U3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90IGhhbmRsZSkKIHsKICAgICBtX25h
dGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyA9IGhhbmRsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEu
aAppbmRleCAwOTI3ZDQ0ZDAwNC4uNTlhZjNjODk3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKQEAg
LTYxLDEwICs2MSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5n
TGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJl
c2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1E
aXNwbGF5SUQpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENP
TVBPU0lURV9XSU5ET1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0o
R1RLKSAmJiBQTEFURk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRP
VykgfHwgUExBVEZPUk0oV0lOKSkKICAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JD
b21wb3NpdGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXN0cm95TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFj
ZS5jcHAKaW5kZXggZTU3OWE1ZGYzYTAuLmE4MDZkZjc4YjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAg
LTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV1BFLmgiCiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4u
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC01Nyw2ICs2MSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNl
PiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLAogI2lmIFBMQVRG
T1JNKFdQRSkKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgp
ID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V1BFKQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0
ZWRTdXJmYWNlV1BFOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50KTsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKFdJTikKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgp
ID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2luZG93cykKKyAgICAgICAgcmV0dXJuIEFjY2Vs
ZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggODIzYjdmYTJh
YzcuLmFkMzUyODgzYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMjIzLDcgKzIy
Myw3IEBAIHZvaWQgVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZENoYW5nZVZp
ZXdwb3J0QXR0cmlidXRlcyhWaWV3cG9ydEF0dHJpCiAgICAgICAgIGRpZENoYW5nZVZpZXdwb3J0
KCk7CiB9CiAKLSNpZiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJ
UkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2lmIChQTEFURk9STShHVEspICYmIFBMQVRGT1JN
KFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKSkgfHwgUExBVEZPUk0o
V0lOKQogdm9pZCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90IGhhbmRsZSkKIHsKICAgICBtX2xheWVy
VHJlZUNvbnRleHQuY29udGV4dElEID0gaGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IGI3ODQ2ODE2NzliLi4xYzkwNTAyNDFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtNjgs
NyArNjgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRJc0Rpc2NhcmRhYmxlKGJvb2wpIG92
ZXJyaWRlOwogCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBQTEFURk9STShYMTEpICYmICAhVVNFKFJF
RElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCisjaWYgKFBMQVRGT1JNKEdUSykgJiYgUExBVEZP
Uk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpKSB8fCBQTEFURk9S
TShXSU4pCiAgICAgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWlu
dDY0X3QpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDdlZTIyOGNlMThhLi5mZWM0NjAxYzY2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0x
NTYsNyArMTU2LDcgQEAgcHJvdGVjdGVkOgogICAgIERyYXdpbmdBcmVhVHlwZSBtX3R5cGU7CiAg
ICAgV2ViUGFnZSYgbV93ZWJQYWdlOwogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQ
TEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJ
VEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgKFBMQVRGT1JNKEdUSykg
JiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpIHx8
IFBMQVRGT1JNKFdJTikpCiAgICAgdWludDY0X3QgbV9uYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcgeyAwIH07CiAjZW5kaWYKIApAQCAtMTgyLDcgKzE4Miw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNr
SUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRpZgogCi0jaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJ
UkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYg
KFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBP
U0lURV9XSU5ET1cpIHx8IFBMQVRGT1JNKFdJTikpCiAgICAgdmlydHVhbCB2b2lkIHNldE5hdGl2
ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZXN0cm95TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKGJvb2wmKSA9IDA7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggMDIzMzA0MDUxNDIuLjY0YTUwM2U0Njg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbgpAQCAtNDAsOCArNDAsOCBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJl
YSB7CiAgICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogI2VuZGlmCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JN
KEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5E
T1cpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RLKSAmJiBQTEFU
Rk9STShYMTEpICYmICFVU0UoUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykgfHwgUExBVEZP
Uk0oV0lOKSkKICAgICBTZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0
X3QgaGFuZGxlKQotICAgIERlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmco
KSAtPiAoYm9vbCBoYW5kbGVkKQorICAgIERlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29t
cG9zaXRpbmcoKSAtPiAoYm9vbCBoYW5kbGVkKSBMZWdhY3lTeW5jCiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA4
NWRkNDU4ZTAxOC4uYzkyNjIzYjY5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRJc0Rpc2NhcmRhYmxlKGJvb2wpIHsgfTsKICNlbmRpZgogCi0jaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspCisjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQogICAgIHZpcnR1
YWwgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QpIHsg
fTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dl
YlByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJv
Y2Vzc01haW5XaW4uY3BwCmluZGV4IGZjMzdiZmFjOWFlLi4wMjdiYzZjODJkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc01haW4gZmluYWwgOiBwdWJsaWMgQXV4aWxp
YXJ5UHJvY2Vzc01haW5CYXNlIHsKIHB1YmxpYzoKICAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6
ZSgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBTZXRQcm9jZXNzRFBJQXdhcmUoKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LmNwcAppbmRleCBhNTJiMTIwYWJiMi4uYTA5ZmMwNGFkYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCkBAIC00MTQs
NCArNDE0LDQgQEAgZmxvYXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJWaWV3LmRldmljZVNjYWxlRmFjdG9y
KCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZW5kaWYgLy8gVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXggNmJiMzM0ZDQ0MWQuLjMz
NzRkNmFhNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgK
QEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRf
aAogI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCiAKLSNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgpAQCAtOTksNiArOTksNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcigpOwogfTsKIAotI2VuZGlmIC8vIFRFWFRVUkVf
TUFQUEVSX0dMCisjZW5kaWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wgJiYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKIAogI2VuZGlmIC8vIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2ZmODFjZjIwODkuLjg3OTc1YzUz
YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
CiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVyVHJlZUhvc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgotI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAj
ZW5kaWYKIApAQCAtOTIxLDcgKzkyMSw3IEBAIHZvaWQgV2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lv
bihjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZygpKSB7CiAjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisj
ZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldE5vbkNvbXBvc2l0
ZWRDb250ZW50c05lZWREaXNwbGF5KGRpcnR5UmVjdCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJu
OwpAQCAtOTkzLDcgKzk5Myw3IEBAIHZvaWQgV2ViVmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKEZy
YW1lVmlldyogZnJhbWVWaWV3LCBpbnQgbG9naWNhbER4LCBpbnQgbG9naWNhCiAgICAgICAgIC8v
IGFueSBuZXdseS1leHBvc2VkIHRpbGVzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi81MjcxND4KICNp
ZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3Qo
c2Nyb2xsVmlld1JlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAg
ICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zY3JvbGxOb25Db21wb3NpdGVkQ29u
dGVudHMoc2Nyb2xsVmlld1JlY3QsIEludFNpemUoZHgsIGR5KSk7CiAjZW5kaWYKICAgICAgICAg
cmV0dXJuOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBXZWJWaWV3OjpzaXplQ2hhbmdlZChj
b25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0U2l6ZShu
ZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAg
IH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAobV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlmCkBAIC01NDgwLDcgKzU0ODAs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAg
ICAgcmV0dXJuIGhyOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RhdGljIGJv
b2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSA9IEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCk7CiAgICAgZW5hYmxl
ZCA9IGVuYWJsZWQgJiYgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZTsKICNlbGlmIFVT
RShESVJFQ1QyRCkKQEAgLTY0ODcsNyArNjQ4Nyw3IEBAIGJvb2wgV2ViVmlldzo6cGFpbnRDb21w
b3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZpY2VDb250ZXh0KQogCiAjaWYgVVNFKENBKQogICAg
IG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCk7Ci0jZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICNlbmRpZgogCkBAIC03MTQ5LDcgKzcxNDks
NyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogICAgIGVsc2UKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7
CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihsYXllcik7CkBAIC03
MTYyLDcgKzcxNjIsNyBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJD
aGFuZ2VzU29vbigpCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29v
bigpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsKQEAg
LTcyMjMsNyArNzIyMyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Zyhib29sIGFjY2VsZXJhdGVkKQogICAgICAgICBtX2JhY2tpbmdMYXllciA9IG51bGxwdHI7CiAg
ICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gZmFsc2U7CiAgICAgfQotI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJhdGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCmluZGV4IGMzZWIwOGM0Mjg4Li5lYmIyM2RhZDc2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBX
ZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsK
IGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
Y2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKIGNsYXNzIFdlYlZp
ZXdHcm91cDsKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgVVNFKENBKQogICAg
IFJlZlB0cjxXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwogICAg
IFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2JhY2tpbmdMYXllcjsKLSNlbGlmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ+IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5k
aWYKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXaW4uY21ha2UKaW5kZXggNjg0N2I0ODQxMzIuLjEyYjM4NGYwMjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dp
bi5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCiAKIGlmICgke1dURl9QTEFU
Rk9STV9XSU5fQ0FJUk99KQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIFBVQkxJ
QyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FD
WV9FTkNSWVBURURfTUVESUEgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5j
bWFrZQppbmRleCA0YWQyYzRiNDIzYS4uMGM1NWY1N2IzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5D
YWlyby5jbWFrZQpAQCAtMjQsNyArMjQsMTEgQEAgZW5kaWYgKCkKIAogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NGIE9O
KQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTIE9OKQor
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVE
IE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCitTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfTklDT1NJQSBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9S
RVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IgT04pCiBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChVU0VfVEVYVFVSRV9NQVBQRVJfR0wgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
TUVESUFfRk9VTkRBVElPTiBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362601</attachid>
            <date>2019-02-21 02:29:29 -0800</date>
            <delta_ts>2019-02-26 02:21:59 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364-4.patch</filename>
            <type>text/plain</type>
            <size>28563</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgKaW5kZXggYjM4NDQyNzVhNjUuLjUxNjg0YjIwOGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aApAQCAtMzgsNiArMzgsNyBAQAogCiAjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjZW5k
aWYKQEAgLTc2LDYgKzc3LDggQEAgcHVibGljOgogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0
Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQogI2VsaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wJiBy
dW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQorI2VsaWYgVVNFKFdJTkRPV1Nf
RVZFTlRfTE9PUCkKKyAgICBIQU5ETEUgdGltZXJRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZXJRdWV1ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWly
by5jbWFrZQppbmRleCA0MzRiYzQzOTMyZi4uNTQyZGYzODY5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMTEsNiArMTEsMTUgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwor
ICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNw
cAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5j
cHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAor
ICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKyAg
ICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuY3BwCisKKyAgICBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdl
bmVyaWMuY3BwCisKICAgICBwYWdlL3dpbi9GcmFtZUNhaXJvV2luLmNwcAogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtNTksNSArNjgsOCBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBXZWJDb3JlX0ZPUldBUkRJ
TkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHBsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8KKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwKICkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXku
Y3BwCmluZGV4IGQyM2M2MDc5MmVhLi44ZTE0YjNhOWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC0yMTEsNyAr
MjExLDcgQEAgdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkKIAog
ICAgIGVnbERpc3BsYXlzKCkuYWRkKHRoaXMpOwogCi0jaWYgIVBMQVRGT1JNKFdJTikKKyNpZiAx
IC8vICFQTEFURk9STShXSU4pCiAgICAgc3RhdGljIGJvb2wgZWdsQXRleGl0SGFuZGxlckluaXRp
YWxpemVkID0gZmFsc2U7CiAgICAgaWYgKCFlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQpIHsK
ICAgICAgICAgLy8gRUdMIHJlZ2lzdGVycyBhdGV4aXQgaGFuZGxlcnMgdG8gY2xlYW51cCBpdHMg
Z2xvYmFsIGRpc3BsYXkgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDBhNTMzNWEz
Y2Y4Li5jMTUxYWEzZTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNCw2ICsyNCw4
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9X
S0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCiAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUuY3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGls
aWFyeVByb2Nlc3NNYWluV2luLmNwcApAQCAtMTY0LDYgKzE2NiwxMiBAQCBpZiAoJHtXVEZfUExB
VEZPUk1fV0lOX0NBSVJPfSkKIAogICAgICAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNh
aXJvLmNwcAogCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisgICAg
ICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKworICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIuY3BwCisKICAgICAgICAgU2hhcmVkL2Nh
aXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCiAgICAgICAgIFNoYXJlZC9jdXJsL1dlYkNv
cmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0xNzMsNiArMTgxLDggQEAgaWYgKCR7V1RGX1BM
QVRGT1JNX1dJTl9DQUlST30pCiAgICAgICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVD
YWlyby5jcHAKIAogICAgICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKworICAgICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKICAgICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCmluZGV4IGE1ZjE1ZjAxYTUwLi5hZTgwMmQ3ZTI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2VuZVN0YXRlKCkKIAogICAgIC8vIFN0b3JlIGxh
eWVyIGFuZCBpbXBsIHJlZmVyZW5jZXMgYWxvbmcgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB1cGRh
dGUKICAgICAvLyBmb3IgZWFjaCB0eXBlIG9mIHBvc3NpYmxlIGxheWVyIGJhY2tpbmcuCi0gICAg
c3RydWN0IHsKKyAgICBzdHJ1Y3QgTGF5ZXJzQnlCYWNraW5nIHsKICAgICAgICAgc3RydWN0IEJh
Y2tpbmdTdG9yZSB7CiAgICAgICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRleHR1cmVN
YXBwZXJMYXllcj4gbGF5ZXI7CiAgICAgICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5p
Y29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsPiBiYWNraW5nU3RvcmU7CkBAIC0z
NjQsNyArMzY0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5l
U3RhdGUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVy
KSwgc3RkOjpyZWYoaW1wbC5wcm94eSgpKSwgbGF5ZXJTdGF0ZS5kZWx0YS5jb250ZW50TGF5ZXJD
aGFuZ2VkIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXllclN0YXRl
LmltYWdlQmFja2luZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGltcGwg
PSBpbWFnZUJhY2tpbmdJbXBsKCpsYXllclN0YXRlLmltYWdlQmFja2luZyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5h
cHBlbmQ8TGF5ZXJzQnlCYWNraW5nOjpJbWFnZUJhY2tpbmc+KAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbCksIGltcGwudGFr
ZVVwZGF0ZSgpIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0Q29udGVudHNMYXllcihudWxscHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3Au
Y3BwCmluZGV4IGJkYzVlZTVhOTJmLi5lOGYyZjI1MzRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9z
aXRpbmdSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCkBAIC01Niwx
MCArNTYsMTkgQEAgcHVibGljOgogICAgICAgICBnZXRPckNyZWF0ZVdvcmtRdWV1ZUZvckNvbnRl
eHQoY29udGV4dCkuZGlzcGF0Y2goV1RGTW92ZShmdW5jdGlvbikpOwogICAgIH0KIAorI2lmIFVT
RShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgUnVuTG9v
cCYgcnVuTG9vcCh2b2lkKiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGdldE9yQ3Jl
YXRlV29ya1F1ZXVlRm9yQ29udGV4dChjb250ZXh0KS5ydW5Mb29wKCk7CiAgICAgfQorI2VuZGlm
CisKKyNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorICAgIEhBTkRMRSB0aW1lclF1ZXVlKHZv
aWQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0T3JDcmVhdGVXb3JrUXVldWVG
b3JDb250ZXh0KGNvbnRleHQpLnRpbWVyUXVldWUoKTsKKyAgICB9CisjZW5kaWYKIAogICAgIHZv
aWQgaW52YWxpZGF0ZSh2b2lkKiBjb250ZXh0KQogICAgIHsKQEAgLTEwNiw3ICsxMTUsMTIgQEAg
cHJpdmF0ZToKIH07CiAKIENvbXBvc2l0aW5nUnVuTG9vcDo6Q29tcG9zaXRpbmdSdW5Mb29wKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgdXBkYXRlRnVuY3Rpb24pCisjaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICA6IG1fdXBkYXRlVGltZXIoV29ya1F1
ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVuTG9vcCh0aGlzKSwgdGhpcywgJkNvbXBvc2l0aW5nUnVu
TG9vcDo6dXBkYXRlVGltZXJGaXJlZCkKKyNlbGlmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisg
ICAgOiBtX3RpbWVyUXVldWUoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkudGltZXJRdWV1ZSh0
aGlzKSkKKyAgICAsIG1fdXBkYXRlVGltZXIoSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisjZW5kaWYK
ICAgICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGTW92ZSh1cGRhdGVGdW5jdGlvbikpCiB7CiAjaWYg
VVNFKEdMSUJfRVZFTlRfTE9PUCkKQEAgLTE0Miw2ICsxNTYsMzYgQEAgdm9pZCBDb21wb3NpdGlu
Z1J1bkxvb3A6OnBlcmZvcm1UYXNrU3luYyhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQog
ICAgIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uLndhaXQobV9kaXNwYXRjaFN5bmNDb25kaXRpb25N
dXRleCk7CiB9CiAKKyNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorVk9JRCBDQUxMQkFDSyBD
b21wb3NpdGluZ1J1bkxvb3A6OnVwZGF0ZVRpbWVyQ2FsbGJhY2soUFZPSUQgbHBQYXJhbSwgQk9P
TEVBTiBUaW1lck9yV2FpdEZpcmVkKQoreworICAgIHN0YXRpY19jYXN0PENvbXBvc2l0aW5nUnVu
TG9vcCo+KGxwUGFyYW0pLT5tX3VwZGF0ZVRpbWVyID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cisg
ICAgc3RhdGljX2Nhc3Q8Q29tcG9zaXRpbmdSdW5Mb29wKj4obHBQYXJhbSktPnVwZGF0ZVRpbWVy
RmlyZWQoKTsKK30KKyNlbmRpZgorCit2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6c3RhcnRVcGRh
dGVUaW1lcigpCit7CisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZF
TlRfTE9PUCkKKyAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworI2VsaWYgVVNF
KFdJTkRPV1NfRVZFTlRfTE9PUCkKKyAgICBpZiAobV91cGRhdGVUaW1lciA9PSBJTlZBTElEX0hB
TkRMRV9WQUxVRSkKKyAgICAgICAgOjpDcmVhdGVUaW1lclF1ZXVlVGltZXIoJm1fdXBkYXRlVGlt
ZXIsIG1fdGltZXJRdWV1ZSwgdXBkYXRlVGltZXJDYWxsYmFjaywgdGhpcywgMCwgMCwgV1RfRVhF
Q1VURUlOVElNRVJUSFJFQUQpOworI2VuZGlmCit9CisKK3ZvaWQgQ29tcG9zaXRpbmdSdW5Mb29w
OjpzdG9wVXBkYXRlVGltZXIoKQoreworI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShH
RU5FUklDX0VWRU5UX0xPT1ApCisgICAgbV91cGRhdGVUaW1lci5zdG9wKCk7CisjZWxpZiBVU0Uo
V0lORE9XU19FVkVOVF9MT09QKQorICAgIGlmIChtX3VwZGF0ZVRpbWVyICE9IElOVkFMSURfSEFO
RExFX1ZBTFVFKSB7CisgICAgICAgIDo6RGVsZXRlVGltZXJRdWV1ZVRpbWVyKG1fdGltZXJRdWV1
ZSwgbV91cGRhdGVUaW1lciwgTlVMTCk7CisgICAgICAgIG1fdXBkYXRlVGltZXIgPSBJTlZBTElE
X0hBTkRMRV9WQUxVRTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBDb21wb3NpdGluZ1J1bkxv
b3A6OnNjaGVkdWxlVXBkYXRlKCkKIHsKICAgICBMb2NrSG9sZGVyIHN0YXRlTG9ja2VyKG1fc3Rh
dGUubG9jayk7CkBAIC0xNjEsNyArMjA1LDcgQEAgdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnNj
aGVkdWxlVXBkYXRlKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogICAgIHN3aXRjaCAobV9zdGF0
ZS51cGRhdGUpIHsKICAgICBjYXNlIFVwZGF0ZVN0YXRlOjpJZGxlOgogICAgICAgICBtX3N0YXRl
LnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpTY2hlZHVsZWQ7Ci0gICAgICAgIG1fdXBkYXRlVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7CisgICAgICAgIHN0YXJ0VXBkYXRlVGltZXIoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgVXBkYXRlU3RhdGU6OlNjaGVkdWxlZDoKICAgICAgICAgcmV0dXJu
OwpAQCAtMTc3LDcgKzIyMSw3IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzdG9wVXBkYXRl
cygpCiAgICAgLy8gU3RvcCBldmVyeXRoaW5nLgogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
dGF0ZS5sb2NrKTsKLSAgICBtX3VwZGF0ZVRpbWVyLnN0b3AoKTsKKyAgICBzdG9wVXBkYXRlVGlt
ZXIoKTsKICAgICBtX3N0YXRlLmNvbXBvc2l0aW9uID0gQ29tcG9zaXRpb25TdGF0ZTo6SWRsZTsK
ICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0ZVN0YXRlOjpJZGxlOwogICAgIG1fc3RhdGUucGVu
ZGluZ1VwZGF0ZSA9IGZhbHNlOwpAQCAtMjA0LDcgKzI0OCw3IEBAIHZvaWQgQ29tcG9zaXRpbmdS
dW5Mb29wOjpjb21wb3NpdGlvbkNvbXBsZXRlZChMb2NrSG9sZGVyJiBzdGF0ZUxvY2tlcikKICAg
ICAgICAgaWYgKG1fc3RhdGUucGVuZGluZ1VwZGF0ZSkgewogICAgICAgICAgICAgbV9zdGF0ZS5w
ZW5kaW5nVXBkYXRlID0gZmFsc2U7CiAgICAgICAgICAgICBtX3N0YXRlLnVwZGF0ZSA9IFVwZGF0
ZVN0YXRlOjpTY2hlZHVsZWQ7Ci0gICAgICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0YXJ0T25lU2hv
dCgwX3MpOworICAgICAgICAgICAgc3RhcnRVcGRhdGVUaW1lcigpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTIzNiw3ICsyODAsNyBAQCB2b2lkIENvbXBvc2l0aW5nUnVu
TG9vcDo6dXBkYXRlQ29tcGxldGVkKExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogICAgICAgICBp
ZiAobV9zdGF0ZS5wZW5kaW5nVXBkYXRlKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnBlbmRpbmdV
cGRhdGUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6
OlNjaGVkdWxlZDsKLSAgICAgICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7
CisgICAgICAgICAgICBzdGFydFVwZGF0ZVRpbWVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21w
b3NpdGluZ1J1bkxvb3AuaAppbmRleCA0MmM1MmY2YmU4Mi4uZmMxMGNjNTg4ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5o
CkBAIC02OSw5ICs2OSwxOCBAQCBwcml2YXRlOgogICAgICAgICBQZW5kaW5nQ29tcGxldGlvbiwK
ICAgICB9OwogCisgICAgdm9pZCBzdGFydFVwZGF0ZVRpbWVyKCk7CisgICAgdm9pZCBzdG9wVXBk
YXRlVGltZXIoKTsKKwogICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwogCisjaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wOjpU
aW1lcjxDb21wb3NpdGluZ1J1bkxvb3A+IG1fdXBkYXRlVGltZXI7CisjZWxpZiBVU0UoV0lORE9X
U19FVkVOVF9MT09QKQorICAgIEhBTkRMRSBtX3RpbWVyUXVldWU7CisgICAgSEFORExFIG1fdXBk
YXRlVGltZXI7CisgICAgc3RhdGljIFZPSUQgQ0FMTEJBQ0sgdXBkYXRlVGltZXJDYWxsYmFjayhQ
Vk9JRCBscFBhcmFtLCBCT09MRUFOIFRpbWVyT3JXYWl0RmlyZWQpOworI2VuZGlmCiAgICAgRnVu
Y3Rpb248dm9pZCAoKT4gbV91cGRhdGVGdW5jdGlvbjsKICAgICBMb2NrIG1fZGlzcGF0Y2hTeW5j
Q29uZGl0aW9uTXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBhMjQ5YTY2ODIxYi4uZjljNTE2MTI4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xMDAsNiArMTAwLDkg
QEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogI2VuZGlmCiAjaWYgUExBVEZPUk0oV1BFKQogICAgIGVuY29kZXIgPDwg
aG9zdEZpbGVEZXNjcmlwdG9yOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGVuY29k
ZXIgPDwgbmF0aXZlV2luZG93SGFuZGxlOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBhcHBsZU1h
aWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsTGluZXND
bGFtcEVuYWJsZWQ7CkBAIC0yODMsNiArMjg2LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJ
TikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxl
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMjFjYWUyZTQ4ODEuLmI2ZTdlMjEz
NTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCkBAIC0xNTgsNiArMTU4LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMgewogI2VuZGlmCiAjaWYgUExBVEZPUk0oV1BFKQogICAgIElQQzo6QXR0YWNobWVudCBob3N0
RmlsZURlc2NyaXB0b3I7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgdWludDY0X3Qg
bmF0aXZlV2luZG93SGFuZGxlOwogI2VuZGlmCiAgICAgYm9vbCBhcHBsZU1haWxQYWdpbmF0aW9u
UXVpcmtFbmFibGVkOwogICAgIGJvb2wgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiMDhhMWJmNjY2OS4uMDJk
NjY2YWQwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
Njk1MCw2ICs2OTUwLDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5
OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVy
cy5ob3N0RmlsZURlc2NyaXB0b3IgPSBwYWdlQ2xpZW50KCkuaG9zdEZpbGVEZXNjcmlwdG9yKCk7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRv
d0hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHZpZXdXaWRnZXQoKSk7CisjZW5k
aWYKKwogICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hl
bWUpCiAgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMuc2V0KGl0ZXJhdG9yLmtl
eSwgaXRlcmF0b3IudmFsdWUtPmlkZW50aWZpZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAppbmRl
eCAwOTI3ZDQ0ZDAwNC4uNGMzYTI5N2I1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmgKQEAgLTYxLDcg
KzYxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1
c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FX0RJU1BMQVlfTU9OSVRPUikKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5
UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXlJRCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
cj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlE
KSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFU
Rk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVf
V0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Fj
Y2VsZXJhdGVkU3VyZmFjZS5jcHAKaW5kZXggZTU3OWE1ZGYzYTAuLmE4MDZkZjc4YjVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
U3VyZmFjZS5jcHAKQEAgLTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJm
YWNlV1BFLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJBY2NlbGVy
YXRlZFN1cmZhY2VXaW4uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC01Nyw2ICs2MSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZWxlcmF0ZWRTdXJmYWNlPiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQ
YWdlLAogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V1BFKQogICAgICAgICBy
ZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV1BFOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50KTsKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2luZG93cykKKyAgICAg
ICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7
CiAjZW5kaWYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDg1ZDgyYThlNjQuLjgzZTljNmVhYmM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzY4
LDYgKzM2OCwxMCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
PigqdGhpcykpCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKICAg
ICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQorI2VuZGlmCisjaWYgUExBVEZPUk0o
V0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgLy8gT3VyIHZpZXcncyB3aW5kb3cg
aW4gdGhlIFVJIHByb2Nlc3MuCisgICAgLCBtX25hdGl2ZVdpbmRvd0hhbmRsZShwYXJhbWV0ZXJz
Lm5hdGl2ZVdpbmRvd0hhbmRsZSkKICNlbmRpZgogICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVy
RmlyZWQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWRkMmJmN2Q0YjUuLjQ2NzAxMmM2YzlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05NDcsNyArOTQ3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNo
RXZlbnQmLCBib29sJiBoYW5kbGVkKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCiAgICAgdWludDY0X3QgbmF0aXZlV2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV9u
YXRpdmVXaW5kb3dIYW5kbGU7IH0KICNlbmRpZgogCkBAIC0xNTk4LDcgKzE1OTgsNyBAQCBwcml2
YXRlOgogICAgIEdSZWZQdHI8V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fYWNjZXNzaWJp
bGl0eU9iamVjdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAg
ICAgLy8gT3VyIHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgdWludDY0X3Qg
bV9uYXRpdmVXaW5kb3dIYW5kbGUgeyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdp
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhlNTEwYzdlZjE0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgiCisKKyNpbmNsdWRlICJXZWJQYWdl
LmgiCisjaW5jbHVkZSA8ZWdsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlX
aW4uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
c3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4gQWNjZWxlcmF0ZWRTdXJmYWNl
V2luOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwgQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXaW4+KG5ldyBBY2NlbGVyYXRl
ZFN1cmZhY2VXaW4od2ViUGFnZSwgY2xpZW50KSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdp
bjo6QWNjZWxlcmF0ZWRTdXJmYWNlV2luKFdlYlBhZ2UmIHdlYlBhZ2UsIENsaWVudCYgY2xpZW50
KQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2UsIGNsaWVudCkKK3sKK30KKworQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luOjp+QWNjZWxlcmF0ZWRTdXJmYWNlV2luKCkKK3sKK30KKwordm9p
ZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmluaXRpYWxpemUoKQoreworfQorCit2b2lkIEFjY2Vs
ZXJhdGVkU3VyZmFjZVdpbjo6ZmluYWxpemUoKQoreworfQorCit1aW50NjRfdCBBY2NlbGVyYXRl
ZFN1cmZhY2VXaW46OndpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5uYXRp
dmVXaW5kb3dIYW5kbGUoKTsKK30KKwordWludDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpz
dXJmYWNlSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7Cit9CisK
K3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp3aWxsUmVuZGVyRnJhbWUoKQoreworfQorCit2
b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6ZGlkUmVuZGVyRnJhbWUoKQoreworICAgIC8vIEZJ
WE1FOiBmcmFtZUNvbXBsZXRlKCkgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBmcmFtZSB3YXMg
YWN0dWFsbHkgcmVuZGVyZWQgaW4gdGhlIHNjcmVlbi4KKyAgICBtX2NsaWVudC5mcmFtZUNvbXBs
ZXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZjFmZDdlOTNmMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2Nl
bGVyYXRlZFN1cmZhY2VXaW4uaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZP
Uk0oV0lOKQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2VXaW4g
ZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRTdXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBY2NlbGVyYXRlZFN1cmZhY2VXaW4pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4g
Y3JlYXRlKFdlYlBhZ2UmLCBDbGllbnQmKTsKKyAgICB+QWNjZWxlcmF0ZWRTdXJmYWNlV2luKCk7
CisKKyAgICB1aW50NjRfdCB3aW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICB1aW50NjRfdCBz
dXJmYWNlSUQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJy
aWRlOworICAgIHZvaWQgZmluYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxSZW5kZXJG
cmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoKSBvdmVycmlkZTsKKwor
cHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZFN1cmZhY2VXaW4oV2ViUGFnZSYsIENsaWVudCYpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3Bw
CmluZGV4IGZjMzdiZmFjOWFlLi4wMjdiYzZjODJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAg
Y2xhc3MgV2ViUHJvY2Vzc01haW4gZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc01haW5C
YXNlIHsKIHB1YmxpYzoKICAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIG92ZXJyaWRlCiAg
ICAgeworICAgICAgICBTZXRQcm9jZXNzRFBJQXdhcmUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNw
cAppbmRleCBhNTJiMTIwYWJiMi4uYTA5ZmMwNGFkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUg
IkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCkBAIC00MTQsNCArNDE0LDQgQEAgZmxv
YXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmRldmljZVNjYWxlRmFjdG9yKCkgY29u
c3QKICAgICByZXR1cm4gbV93ZWJWaWV3LmRldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLSNlbmRp
ZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXggNmJiMzM0ZDQ0MWQuLjMzNzRkNmFhNGI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDcg
QEAKICNpZm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAogI2RlZmluZSBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dM
Q29udGV4dC5oPgpAQCAtOTksNiArOTksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcigpOwogfTsKIAotI2VuZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMCisjZW5k
aWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAog
I2VuZGlmIC8vIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKaW5kZXggM2ZmODFjZjIwODkuLjg3OTc1YzUzYTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBACiAjaWYgVVNFKENBKQog
I2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVyVHJlZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtQ0FMYXllci5oPgotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2lu
Y2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAjZW5kaWYKIApAQCAtOTIx
LDcgKzkyMSw3IEBAIHZvaWQgV2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAjaWYg
VVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRp
cnR5UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIG1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWRE
aXNwbGF5KGRpcnR5UmVjdCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwpAQCAtOTkzLDcgKzk5
Myw3IEBAIHZvaWQgV2ViVmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVW
aWV3LCBpbnQgbG9naWNhbER4LCBpbnQgbG9naWNhCiAgICAgICAgIC8vIGFueSBuZXdseS1leHBv
c2VkIHRpbGVzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi81MjcxND4KICNpZiBVU0UoQ0EpCiAgICAg
ICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3Qoc2Nyb2xsVmlld1JlY3Qp
OwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LT5zY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoc2Nyb2xsVmll
d1JlY3QsIEludFNpemUoZHgsIGR5KSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwpAQCAtMTA3
MSw3ICsxMDcxLDcgQEAgdm9pZCBXZWJWaWV3OjpzaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBu
ZXdTaXplKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKICAgICAg
ICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0KLSNlbGlmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAobV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplUm9v
dExheWVyKG5ld1NpemUpOwogI2VuZGlmCkBAIC01NDgwLDcgKzU0ODAsNyBAQCBIUkVTVUxUIFdl
YlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFi
bGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwot
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
ICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0F2YWlsYWJsZSA9IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCk7CiAgICAgZW5hYmxlZCA9IGVuYWJsZWQgJiYg
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZTsKICNlbGlmIFVTRShESVJFQ1QyRCkKQEAg
LTY0ODcsNyArNjQ4Nyw3IEBAIGJvb2wgV2ViVmlldzo6cGFpbnRDb21wb3NpdGVkQ29udGVudFRv
SERDKEhEQyBkZXZpY2VDb250ZXh0KQogCiAjaWYgVVNFKENBKQogICAgIG1fbGF5ZXJUcmVlSG9z
dC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRS
ZW5kZXJMYXllcnMoKTsKICNlbmRpZgogCkBAIC03MTQ5LDcgKzcxNDksNyBAQCB2b2lkIFdlYlZp
ZXc6OnNldFJvb3RDaGlsZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIGVsc2UKICAg
ICAgICAgbV9iYWNraW5nTGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSNlbGlmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihsYXllcik7CkBAIC03MTYyLDcgKzcxNjIsNyBA
QCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCiAg
ICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIHJldHVybjsKICAgICBtX2xheWVyVHJl
ZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwotI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsKQEAgLTcyMjMsNyArNzIyMyw3
IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJh
dGVkKQogICAgICAgICBtX2JhY2tpbmdMYXllciA9IG51bGxwdHI7CiAgICAgICAgIG1faXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nID0gZmFsc2U7CiAgICAgfQotI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKICAg
ICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJhdGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5oCmluZGV4IGMzZWIwOGM0Mjg4Li5lYmIyM2RhZDc2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3Bl
Y3RvckNsaWVudDsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogY2xhc3MgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKIGNsYXNzIFdlYlZpZXdHcm91cDsKQEAgLTcw
Niw3ICs3MDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgVVNFKENBKQogICAgIFJlZlB0cjxXZWJDb3Jl
OjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpHcmFwaGljc0xheWVyPiBtX2JhY2tpbmdMYXllcjsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ+IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKICAgICBib29sIG1f
aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5k
ZXggNjg0N2I0ODQxMzIuLjEyYjM4NGYwMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtNzcs
NiArNzcsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0NS
WVBUTyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKFVTRV9T
WVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCiAKIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99
KQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19TQ1JP
TExJTkcgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIFBVQkxJQyBPRkYpCiAgICAgV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVE
SUEgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfSU5UTCBQVUJMSUMgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNh
aXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQppbmRleCA0YWQy
YzRiNDIzYS4uMGM1NWY1N2IzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2lu
Q2Fpcm8uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpAQCAt
MjQsNyArMjQsMTEgQEAgZW5kaWYgKCkKIAogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NB
SVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NGIE9OKQorU0VUX0FORF9FWFBP
U0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTIE9OKQorU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEIE9OKQogU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
TklDT1NJQSBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9SRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRV9ESVNQTEFZX01PTklUT1IgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
VEVYVFVSRV9NQVBQRVIgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9N
QVBQRVJfR0wgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTUVESUFfRk9VTkRBVElP
TiBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362971</attachid>
            <date>2019-02-26 01:47:26 -0800</date>
            <delta_ts>2019-03-03 20:33:36 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364-5.patch</filename>
            <type>text/plain</type>
            <size>30930</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGIwNTY1YTA5Yzg4Li5kMzE3
ZDUwZDZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSw2ICsx
MSwxNSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAogbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKKworICAgIHBhZ2Uvc2Nyb2xsaW5n
L2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKKwogICAgIHBhZ2Uvd2luL0ZyYW1l
Q2Fpcm9XaW4uY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC01
Niw1ICs2NSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJJRVMKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgcGxh
dGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlybworICAg
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZAogICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybAogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggZDIzYzYwNzkyZWEuLjhlMTRiM2E5
YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bURpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtRGlzcGxheS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFBsYXRmb3JtRGlzcGxheTo6
aW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogCiAgICAgZWdsRGlzcGxheXMoKS5hZGQodGhpcyk7CiAK
LSNpZiAhUExBVEZPUk0oV0lOKQorI2lmIDEgLy8gIVBMQVRGT1JNKFdJTikKICAgICBzdGF0aWMg
Ym9vbCBlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBpZiAoIWVnbEF0
ZXhpdEhhbmRsZXJJbml0aWFsaXplZCkgewogICAgICAgICAvLyBFR0wgcmVnaXN0ZXJzIGF0ZXhp
dCBoYW5kbGVycyB0byBjbGVhbnVwIGl0cyBnbG9iYWwgZGlzcGxheSBsaXN0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1XaW4uY21ha2UKaW5kZXggMGE1MzM1YTNjZjguLmMxNTFhYTNlODFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1XaW4uY21ha2UKQEAgLTI0LDYgKzI0LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMK
IAogICAgIFNoYXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKIAorICAg
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAK
KwogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlTm9uZS5j
cHAKIAogICAgIFNoYXJlZC93aW4vQXV4aWxpYXJ5UHJvY2Vzc01haW5XaW4uY3BwCkBAIC0xNjQs
NiArMTY2LDEyIEBAIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogCiAgICAgICAgIFNo
YXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKKyAgICAgICAgU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAK
KyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5jcHAKKyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorCisg
ICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1NpbXBsZVZpZXdwb3J0Q29udHJvbGxl
ci5jcHAKKwogICAgICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAK
ICAgICAgICAgU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKQEAgLTE3
Myw2ICsxODEsOCBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKICAgICAgICAgVUlQ
cm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCiAgICAgICAgIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorCisgICAg
ICAgIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNwcAogICAg
ICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggYTVmMTVmMDFhNTAuLmFlODAy
ZDdlMjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0y
MzIsNyArMjMyLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5l
U3RhdGUoKQogCiAgICAgLy8gU3RvcmUgbGF5ZXIgYW5kIGltcGwgcmVmZXJlbmNlcyBhbG9uZyB3
aXRoIHRoZSBjb3JyZXNwb25kaW5nIHVwZGF0ZQogICAgIC8vIGZvciBlYWNoIHR5cGUgb2YgcG9z
c2libGUgbGF5ZXIgYmFja2luZy4KLSAgICBzdHJ1Y3QgeworICAgIHN0cnVjdCBMYXllcnNCeUJh
Y2tpbmcgewogICAgICAgICBzdHJ1Y3QgQmFja2luZ1N0b3JlIHsKICAgICAgICAgICAgIHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8VGV4dHVyZU1hcHBlckxheWVyPiBsYXllcjsKICAgICAgICAgICAg
IHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Tmljb3NpYTo6QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBl
ckltcGw+IGJhY2tpbmdTdG9yZTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsgc3RkOjpyZWYobGF5ZXIpLCBzdGQ6OnJlZihpbXBsLnByb3h5KCkpLCBsYXll
clN0YXRlLmRlbHRhLmNvbnRlbnRMYXllckNoYW5nZWQgfSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGxheWVyU3RhdGUuaW1hZ2VCYWNraW5nKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byYgaW1wbCA9IGltYWdlQmFja2luZ0ltcGwoKmxheWVyU3RhdGUu
aW1hZ2VCYWNraW5nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnNCeUJhY2tp
bmcuaW1hZ2VCYWNraW5nLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXll
cnNCeUJhY2tpbmcuaW1hZ2VCYWNraW5nLmFwcGVuZDxMYXllcnNCeUJhY2tpbmc6OkltYWdlQmFj
a2luZz4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RkOjpyZWYobGF5ZXIp
LCBzdGQ6OnJlZihpbXBsKSwgaW1wbC50YWtlVXBkYXRlKCkgfSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5zZXRDb250
ZW50c0xheWVyKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKaW5kZXggYmRjNWVlNWE5MmYuLmVkYjM3MTFi
MmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBv
c2l0aW5nUnVuTG9vcC5jcHAKQEAgLTMxLDExICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KLQotI2lmIFVTRShHTElCX0VW
RU5UX0xPT1ApCi0jaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+Ci0j
ZW5kaWYKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNTYsMTEgKzUyLDYgQEAgcHVibGljOgogICAgICAgICBnZXRPckNyZWF0ZVdvcmtRdWV1ZUZv
ckNvbnRleHQoY29udGV4dCkuZGlzcGF0Y2goV1RGTW92ZShmdW5jdGlvbikpOwogICAgIH0KIAot
ICAgIFJ1bkxvb3AmIHJ1bkxvb3Aodm9pZCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBnZXRPckNyZWF0ZVdvcmtRdWV1ZUZvckNvbnRleHQoY29udGV4dCkucnVuTG9vcCgpOwotICAg
IH0KLQogICAgIHZvaWQgaW52YWxpZGF0ZSh2b2lkKiBjb250ZXh0KQogICAgIHsKICAgICAgICAg
YXV0byB3b3JrUXVldWUgPSBtX3dvcmtRdWV1ZU1hcC50YWtlKGNvbnRleHQpOwpAQCAtNzIsMTMg
KzYzLDYgQEAgcHVibGljOgogICAgICAgICAgICAgbV90aHJlYWRDb3VudC0tOwogICAgIH0KIAot
cHJpdmF0ZToKLSAgICBXb3JrUXVldWVQb29sKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGEgc2FuZSBkZWZhdWx0IGxpbWl0LCBidXQgaXQgc2hvdWxkIGJlIGNvbmZpZ3VyYWJs
ZSBzb21laG93LgotICAgICAgICBtX3RocmVhZENvdW50TGltaXQgPSAxOwotICAgIH0KLQogICAg
IFdvcmtRdWV1ZSYgZ2V0T3JDcmVhdGVXb3JrUXVldWVGb3JDb250ZXh0KHZvaWQqIGNvbnRleHQp
CiAgICAgewogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fd29ya1F1ZXVlTWFwLmFkZChjb250
ZXh0LCBudWxscHRyKTsKQEAgLTk5LDYgKzgzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKK3ByaXZhdGU6CisgICAgV29y
a1F1ZXVlUG9vbCgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHNhbmUgZGVm
YXVsdCBsaW1pdCwgYnV0IGl0IHNob3VsZCBiZSBjb25maWd1cmFibGUgc29tZWhvdy4KKyAgICAg
ICAgbV90aHJlYWRDb3VudExpbWl0ID0gMTsKKyAgICB9CisKICAgICBIYXNoTWFwPHZvaWQqLCBS
ZWZQdHI8V29ya1F1ZXVlPj4gbV93b3JrUXVldWVNYXA7CiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4g
bV9zaGFyZWRXb3JrUXVldWU7CiAgICAgdW5zaWduZWQgbV90aHJlYWRDb3VudCB7IDAgfTsKQEAg
LTEwNiwxMyArOTcsOSBAQCBwcml2YXRlOgogfTsKIAogQ29tcG9zaXRpbmdSdW5Mb29wOjpDb21w
b3NpdGluZ1J1bkxvb3AoRnVuY3Rpb248dm9pZCAoKT4mJiB1cGRhdGVGdW5jdGlvbikKLSAgICA6
IG1fdXBkYXRlVGltZXIoV29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKCkucnVuTG9vcCh0aGlzKSwg
dGhpcywgJkNvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCkKKyAgICA6IG1fd29y
a1F1ZXVlKFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigpLmdldE9yQ3JlYXRlV29ya1F1ZXVlRm9y
Q29udGV4dCh0aGlzKSkKICAgICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGTW92ZSh1cGRhdGVGdW5j
dGlvbikpCiB7Ci0jaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKLSAgICBtX3VwZGF0ZVRpbWVyLnNl
dFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVU
aW1lcik7Ci0gICAgbV91cGRhdGVUaW1lci5zZXROYW1lKCJbV2ViS2l0XSBDb21wb3NpdGluZ1J1
bkxvb3AiKTsKLSNlbmRpZgogfQogCiBDb21wb3NpdGluZ1J1bkxvb3A6On5Db21wb3NpdGluZ1J1
bkxvb3AoKQpAQCAtMTYxLDcgKzE0OCw3IEBAIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpzY2hl
ZHVsZVVwZGF0ZShMb2NrSG9sZGVyJiBzdGF0ZUxvY2tlcikKICAgICBzd2l0Y2ggKG1fc3RhdGUu
dXBkYXRlKSB7CiAgICAgY2FzZSBVcGRhdGVTdGF0ZTo6SWRsZToKICAgICAgICAgbV9zdGF0ZS51
cGRhdGUgPSBVcGRhdGVTdGF0ZTo6U2NoZWR1bGVkOwotICAgICAgICBtX3VwZGF0ZVRpbWVyLnN0
YXJ0T25lU2hvdCgwX3MpOworICAgICAgICBtX3dvcmtRdWV1ZS5kaXNwYXRjaChbJl0geyB1cGRh
dGVUaW1lckZpcmVkKCk7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBVcGRhdGVTdGF0
ZTo6U2NoZWR1bGVkOgogICAgICAgICByZXR1cm47CkBAIC0xNzcsNyArMTY0LDYgQEAgdm9pZCBD
b21wb3NpdGluZ1J1bkxvb3A6OnN0b3BVcGRhdGVzKCkKICAgICAvLyBTdG9wIGV2ZXJ5dGhpbmcu
CiAKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOwotICAgIG1fdXBkYXRlVGlt
ZXIuc3RvcCgpOwogICAgIG1fc3RhdGUuY29tcG9zaXRpb24gPSBDb21wb3NpdGlvblN0YXRlOjpJ
ZGxlOwogICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6OklkbGU7CiAgICAgbV9zdGF0
ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7CkBAIC0yMDQsNyArMTkwLDcgQEAgdm9pZCBDb21wb3Np
dGluZ1J1bkxvb3A6OmNvbXBvc2l0aW9uQ29tcGxldGVkKExvY2tIb2xkZXImIHN0YXRlTG9ja2Vy
KQogICAgICAgICBpZiAobV9zdGF0ZS5wZW5kaW5nVXBkYXRlKSB7CiAgICAgICAgICAgICBtX3N0
YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fc3RhdGUudXBkYXRlID0g
VXBkYXRlU3RhdGU6OlNjaGVkdWxlZDsKLSAgICAgICAgICAgIG1fdXBkYXRlVGltZXIuc3RhcnRP
bmVTaG90KDBfcyk7CisgICAgICAgICAgICBtX3dvcmtRdWV1ZS5kaXNwYXRjaChbJl0geyB1cGRh
dGVUaW1lckZpcmVkKCk7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTIzNiw3ICsyMjIsNyBAQCB2b2lkIENvbXBvc2l0aW5nUnVuTG9vcDo6dXBkYXRlQ29tcGxldGVk
KExvY2tIb2xkZXImIHN0YXRlTG9ja2VyKQogICAgICAgICBpZiAobV9zdGF0ZS5wZW5kaW5nVXBk
YXRlKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTsKICAgICAg
ICAgICAgIG1fc3RhdGUudXBkYXRlID0gVXBkYXRlU3RhdGU6OlNjaGVkdWxlZDsKLSAgICAgICAg
ICAgIG1fdXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisgICAgICAgICAgICBtX3dvcmtR
dWV1ZS5kaXNwYXRjaChbJl0geyB1cGRhdGVUaW1lckZpcmVkKCk7IH0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI1Miw2ICsyMzgsOCBAQCB2b2lkIENvbXBvc2l0aW5n
UnVuTG9vcDo6dXBkYXRlVGltZXJGaXJlZCgpCiAgICAgewogICAgICAgICAvLyBCb3RoIGNvbXBv
c2l0aW9uIGFuZCBzY2VuZSB1cGRhdGUgYXJlIG5vdyBpbiBwcm9ncmVzcy4KICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAgICAgICAgaWYgKG1fc3RhdGUudXBkYXRl
ID09IFVwZGF0ZVN0YXRlOjpJZGxlKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3N0
YXRlLmNvbXBvc2l0aW9uID0gQ29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzczsKICAgICAgICAg
bV9zdGF0ZS51cGRhdGUgPSBVcGRhdGVTdGF0ZTo6SW5Qcm9ncmVzczsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5oCmlu
ZGV4IDQyYzUyZjZiZTgyLi5jMDZjNWFhMDNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdS
dW5Mb29wLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmgKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlVGltZXJGaXJlZCgpOwog
Ci0gICAgUnVuTG9vcDo6VGltZXI8Q29tcG9zaXRpbmdSdW5Mb29wPiBtX3VwZGF0ZVRpbWVyOwor
ICAgIFdvcmtRdWV1ZSYgbV93b3JrUXVldWU7CiAgICAgRnVuY3Rpb248dm9pZCAoKT4gbV91cGRh
dGVGdW5jdGlvbjsKICAgICBMb2NrIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uTXV0ZXg7CiAgICAg
Q29uZGl0aW9uIG1fZGlzcGF0Y2hTeW5jQ29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggNzUyMmY4
NGVhOGYuLmYyZWI4NGY1NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTM0MSw1ICszNDEsMTMgQEAgdm9p
ZCBUaHJlYWRlZENvbXBvc2l0b3I6OmZyYW1lQ29tcGxldGUoKQogICAgIHNjZW5lVXBkYXRlRmlu
aXNoZWQoKTsKIH0KIAorI2lmIFBMQVRGT1JNKFdJTikKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9y
OjpwYXVzZUNvbXBvc2l0aW5nKCkKK3sKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c3RvcFVw
ZGF0ZXMoKTsKK30KKyNlbmRpZgorCisKIH0KICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5oCmluZGV4IDZkNzA1Mzg1MGRhLi5kYzRjZGQ3MjVhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3Np
dG9yLmgKQEAgLTc4LDYgKzc4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yY2VSZXBhaW50
KCk7CiAKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCBwYXVzZUNvbXBvc2l0aW5nKCk7Cisj
ZW5kaWYKKwogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1Ip
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gZGlzcGxheVJlZnJl
c2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKICAgICB2b2lkIGhhbmRsZURp
c3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA0OTgzZThlY2E2Ny4uYzQ5ODVh
MDY1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCkBAIC0xMDEsNiArMTAxLDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2VuZGlmCiAjaWYg
UExBVEZPUk0oV1BFKQogICAgIGVuY29kZXIgPDwgaG9zdEZpbGVEZXNjcmlwdG9yOworI2VuZGlm
CisjaWYgUExBVEZPUk0oV0lOKQorICAgIGVuY29kZXIgPDwgbmF0aXZlV2luZG93SGFuZGxlOwog
I2VuZGlmCiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwog
ICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CkBAIC0yODksNiArMjky
LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyNlbmRpZgorCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFwcGxl
TWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKaW5kZXggNGZlM2IxMDMwOGQuLjRkZjU0NzU0ODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xNTksNiArMTU5LDkgQEAg
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAjaWYgUExBVEZPUk0o
V1BFKQogICAgIElQQzo6QXR0YWNobWVudCBob3N0RmlsZURlc2NyaXB0b3I7CisjZW5kaWYKKyNp
ZiBQTEFURk9STShXSU4pCisgICAgdWludDY0X3QgbmF0aXZlV2luZG93SGFuZGxlOwogI2VuZGlm
CiAgICAgYm9vbCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAgIGJvb2wgYXBw
bGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCBiNGNlMDhiOTZmMC4uZGYzMTcwZDRmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjk0OCw2ICs2OTQ4LDEwIEBAIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5ob3N0RmlsZURlc2NyaXB0b3IgPSBwYWdl
Q2xpZW50KCkuaG9zdEZpbGVEZXNjcmlwdG9yKCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJ
TikKKyAgICBwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3Q+KHZpZXdXaWRnZXQoKSk7CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYgaXRlcmF0
b3IgOiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWUpCiAgICAgICAgIHBhcmFtZXRlcnMudXJs
U2NoZW1lSGFuZGxlcnMuc2V0KGl0ZXJhdG9yLmtleSwgaXRlcmF0b3IudmFsdWUtPmlkZW50aWZp
ZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Fj
Y2VsZXJhdGVkRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkRHJhd2luZ0FyZWEuaAppbmRleCAwOTI3ZDQ0ZDAwNC4uNGMzYTI5N2I1MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2Nl
bGVyYXRlZERyYXdpbmdBcmVhLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwog
CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKLSAgICB2
aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3Bs
YXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25p
dG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFURk9STShHVEspICYmIFBMQVRGT1JNKFgxMSkg
JiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKaW5kZXgg
ZTU3OWE1ZGYzYTAuLmE4MDZkZjc4YjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTQxLDYgKzQxLDEw
IEBACiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV1BFLmgiCiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFdJTikKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01Nyw2
ICs2MSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBBY2NlbGVyYXRl
ZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLAogI2lmIFBMQVRGT1JNKFdQRSkKICAg
ICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3Jt
RGlzcGxheTo6VHlwZTo6V1BFKQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV1BF
OjpjcmVhdGUod2ViUGFnZSwgY2xpZW50KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAg
ICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3Jt
RGlzcGxheTo6VHlwZTo6V2luZG93cykKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFj
ZVdpbjo6Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CiAjZW5kaWYKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggODIzYjdmYTJhYzcuLmJkZGY3ZTIw
OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMTk1LDYgKzE5NSwxMyBAQCB2b2lk
IFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlQmFja2dyb3VuZFRyYW5zcGFy
ZW5jeUNoYW5nZWQoKQogICAgIG1fY29tcG9zaXRvci0+c2V0RHJhd3NCYWNrZ3JvdW5kKG1fd2Vi
UGFnZS5kcmF3c0JhY2tncm91bmQoKSk7CiB9CiAKKyNpZiBQTEFURk9STShXSU4pCit2b2lkIFRo
cmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYXVzZVJlbmRlcmluZygpCit7CisgICAg
bV9jb21wb3NpdG9yLT5wYXVzZUNvbXBvc2l0aW5nKCk7Cit9CisjZW5kaWYKKwogdm9pZCBUaHJl
YWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXpl
JiBzaXplKQogewogICAgIGlmIChtX2lzRGlzY2FyZGFibGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRD
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aAppbmRleCBiNzg0NjgxNjc5Yi4uM2YzMjM2N2U4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgK
QEAgLTU4LDYgKzU4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNpemVEaWRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFy
ZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCBwYXVz
ZVJlbmRlcmluZygpIG92ZXJyaWRlOworI2VuZGlmCiAKICAgICB2b2lkIGNvbnRlbnRzU2l6ZUNo
YW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hh
bmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggNTc1YjBhMTc0M2YuLjdhZGIzMmI3NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzY5LDYgKzM2OSwxMCBAQCBXZWJQYWdlOjpXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1
ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChu
dWxscHRyKQorI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCisgICAgLy8gT3VyIHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgLCBt
X25hdGl2ZVdpbmRvd0hhbmRsZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkKICNlbmRp
ZgogICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
V2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
OWU4N2MxOTllM2UuLmVjZmRkZTUzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC05NDgsNyArOTQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlz
cGF0Y2hUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVkKTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYg
UExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdWludDY0X3QgbmF0
aXZlV2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV9uYXRpdmVXaW5kb3dIYW5kbGU7IH0KICNlbmRp
ZgogCkBAIC0xNTk5LDcgKzE1OTksNyBAQCBwcml2YXRlOgogICAgIEdSZWZQdHI8V2ViUGFnZUFj
Y2Vzc2liaWxpdHlPYmplY3Q+IG1fYWNjZXNzaWJpbGl0eU9iamVjdDsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgUExBVEZPUk0oV0lO
KSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgLy8gT3VyIHZpZXcncyB3aW5kb3cgaW4g
dGhlIFVJIHByb2Nlc3MuCiAgICAgdWludDY0X3QgbV9uYXRpdmVXaW5kb3dIYW5kbGUgeyAwIH07
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dp
bi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjhlNTEwYzdlZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAK
QEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJm
YWNlV2luLmgiCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8ZWdsLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXlXaW4uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVk
U3VyZmFjZVdpbj4gQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFn
ZSwgQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVy
YXRlZFN1cmZhY2VXaW4+KG5ldyBBY2NlbGVyYXRlZFN1cmZhY2VXaW4od2ViUGFnZSwgY2xpZW50
KSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdpbjo6QWNjZWxlcmF0ZWRTdXJmYWNlV2luKFdl
YlBhZ2UmIHdlYlBhZ2UsIENsaWVudCYgY2xpZW50KQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNl
KHdlYlBhZ2UsIGNsaWVudCkKK3sKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp+QWNjZWxl
cmF0ZWRTdXJmYWNlV2luKCkKK3sKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46Omlu
aXRpYWxpemUoKQoreworfQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6ZmluYWxpemUo
KQoreworfQorCit1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OndpbmRvdygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKK30KKwordWlu
dDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpzdXJmYWNlSUQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
Ojp3aWxsUmVuZGVyRnJhbWUoKQoreworfQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6
ZGlkUmVuZGVyRnJhbWUoKQoreworICAgIC8vIEZJWE1FOiBmcmFtZUNvbXBsZXRlKCkgc2hvdWxk
IGJlIGNhbGxlZCB3aGVuIHRoZSBmcmFtZSB3YXMgYWN0dWFsbHkgcmVuZGVyZWQgaW4gdGhlIHNj
cmVlbi4KKyAgICBtX2NsaWVudC5mcmFtZUNvbXBsZXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5jZjFmZDdlOTNmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uaApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oV0lOKQorCisjaW5jbHVkZSAiQWNjZWxl
cmF0ZWRTdXJmYWNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOwor
CitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2VXaW4gZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRT
dXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZFN1cmZhY2VXaW4p
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4gY3JlYXRlKFdlYlBhZ2UmLCBDbGllbnQmKTsK
KyAgICB+QWNjZWxlcmF0ZWRTdXJmYWNlV2luKCk7CisKKyAgICB1aW50NjRfdCB3aW5kb3coKSBj
b25zdCBvdmVycmlkZTsKKyAgICB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCBvdmVycmlkZTsK
KworICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHdpbGxSZW5kZXJGcmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVuZGVyRnJhbWUoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZFN1
cmZhY2VXaW4oV2ViUGFnZSYsIENsaWVudCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCmluZGV4IGZjMzdiZmFjOWFlLi4wMjdiYzZj
ODJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
TWFpbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
TWFpbldpbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc01haW4gZmluYWwg
OiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc01haW5CYXNlIHsKIHB1YmxpYzoKICAgICBib29sIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBTZXRQcm9jZXNzRFBJ
QXdhcmUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCBhNTJiMTIwYWJiMi4uYTA5ZmMw
NGFkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiV2ViVmll
dy5oIgogCkBAIC00MTQsNCArNDE0LDQgQEAgZmxvYXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJWaWV3LmRl
dmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CisjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXgg
NmJiMzM0ZDQ0MWQuLjMzNzRkNmFhNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHRfaAogI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9o
CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgpAQCAtOTksNiArOTksNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcigpOwogfTsKIAotI2Vu
ZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMCisjZW5kaWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wgJiYg
IVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2VuZGlmIC8vIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2ZmODFj
ZjIwODkuLjg3OTc1YzUzYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAt
MTk3LDcgKzE5Nyw3IEBACiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVy
VHJlZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgotI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LmgiCiAjZW5kaWYKIApAQCAtOTIxLDcgKzkyMSw3IEBAIHZvaWQgV2ViVmlldzo6
YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgaWYgKGlzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdM
YXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQt
PnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGRpcnR5UmVjdCk7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTkzLDcgKzk5Myw3IEBAIHZvaWQgV2ViVmlldzo6c2Nyb2xs
QmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBpbnQgbG9naWNhbER4LCBpbnQgbG9n
aWNhCiAgICAgICAgIC8vIGFueSBuZXdseS1leHBvc2VkIHRpbGVzLiA8aHR0cDovL3dlYmtpdC5v
cmcvYi81MjcxND4KICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVk
c0Rpc3BsYXlJblJlY3Qoc2Nyb2xsVmlld1JlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zY3JvbGxO
b25Db21wb3NpdGVkQ29udGVudHMoc2Nyb2xsVmlld1JlY3QsIEludFNpemUoZHgsIGR5KSk7CiAj
ZW5kaWYKICAgICAgICAgcmV0dXJuOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBXZWJWaWV3
OjpzaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICBtX2JhY2tpbmdM
YXllci0+c2V0U2l6ZShuZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRz
RGlzcGxheSgpOwogICAgIH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBp
ZiAobV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlmCkBA
IC01NDgwLDcgKzU0ODAsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaHIgPSBwcmVmc1ByaXZh
dGUtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJ
TEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgc3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSA9IEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxl
KCk7CiAgICAgZW5hYmxlZCA9IGVuYWJsZWQgJiYgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWls
YWJsZTsKICNlbGlmIFVTRShESVJFQ1QyRCkKQEAgLTY0ODcsNyArNjQ4Nyw3IEBAIGJvb2wgV2Vi
Vmlldzo6cGFpbnRDb21wb3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZpY2VDb250ZXh0KQogCiAj
aWYgVVNFKENBKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2Vz
Tm93KCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICNlbmRpZgogCkBA
IC03MTQ5LDcgKzcxNDksNyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKEdyYXBo
aWNzTGF5ZXIqIGxheWVyKQogICAgIGVsc2UKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnJlbW92
ZUFsbENoaWxkcmVuKCk7CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBp
ZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29tcG9zaXRpbmdMYXll
cihsYXllcik7CkBAIC03MTYyLDcgKzcxNjIsNyBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGlu
Z0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNz
TGF5ZXJDaGFuZ2VzU29vbigpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAg
IGlmICghbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNoUGVuZGluZ0xheWVyQ2hh
bmdlc1Nvb24oKTsKQEAgLTcyMjMsNyArNzIyMyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogICAgICAgICBtX2JhY2tpbmdMYXll
ciA9IG51bGxwdHI7CiAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gZmFsc2U7
CiAgICAgfQotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChhY2NlbGVy
YXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZyA9IGFjY2VsZXJhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCmluZGV4IGMzZWIwOGM0
Mjg4Li5lYmIyM2RhZDc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNjgsNyAr
NjgsNyBAQCBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKLSNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogY2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5k
aWYKIGNsYXNzIFdlYlZpZXdHcm91cDsKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcm90ZWN0ZWQ6CiAj
aWYgVVNFKENBKQogICAgIFJlZlB0cjxXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXll
clRyZWVIb3N0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2JhY2tpbmdM
YXllcjsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ7CiAjZW5kaWYKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291
cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXggNjg0N2I0ODQxMzIuLjEyYjM4NGYwMjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFIE9GRikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCiAK
IGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQorICAgIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPTikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NP
TF9NQU5BR0VSIFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEgUFVCTElDIE9GRikKICAgICBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNXaW5DYWlyby5jbWFrZQppbmRleCA0YWQyYzRiNDIzYS4uMGM1NWY1N2IzZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpAQCAtMjQsNyArMjQsMTEgQEAgZW5kaWYgKCkKIAog
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9f
QlVJTEQoVVNFX0NGIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVE
X0dSQVBISUNTIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04p
CitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTklDT1NJQSBPTikKK1NFVF9BTkRfRVhQT1NF
X1RPX0JVSUxEKFVTRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IgT04p
CiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgT04pCiBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVJfR0wgT04pCiBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfTUVESUFfRk9VTkRBVElPTiBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363475</attachid>
            <date>2019-03-03 18:53:25 -0800</date>
            <delta_ts>2019-03-04 17:52:10 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364-6.patch</filename>
            <type>text/plain</type>
            <size>28057</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGIwNTY1YTA5Yzg4Li5kMzE3
ZDUwZDZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSw2ICsx
MSwxNSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAogbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKKworICAgIHBhZ2Uvc2Nyb2xsaW5n
L2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKKwogICAgIHBhZ2Uvd2luL0ZyYW1l
Q2Fpcm9XaW4uY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC01
Niw1ICs2NSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJJRVMKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgcGxh
dGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlybworICAg
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZAogICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybAogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCmluZGV4
IDhmMDgwZTEyNjZlLi4zNTg2ZmE5MjgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUu
aApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIExheW91dFBvaW50IHBhcmVudFRvTG9j
YWxQb2ludChMYXlvdXRQb2ludCkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0UG9pbnQgbG9jYWxU
b0NvbnRlbnRzUG9pbnQoTGF5b3V0UG9pbnQpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3JvbGxQb3NpdGlvbihPcHRpb25h
bDxGbG9hdFJlY3Q+KSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVu
dFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPEZsb2F0UmVjdD4pIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1Rl
eHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGMx
MGNmZjY4MzcyLi42ZWE0YzJhOGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC05MiwxMCAr
OTIsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBhZGp1c3RlZFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxQb3NpdGlvbkNsYW1wID0gU2Nyb2xs
UG9zaXRpb25DbGFtcDo6VG9Db250ZW50RWRnZXMpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lk
IGN1cnJlbnRTY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgdXBkYXRlVmlld3BvcnRGb3JDdXJyZW50U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8
RmxvYXRSZWN0PiA9IHsgfSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9y
Q3VycmVudFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPEZsb2F0UmVjdD4gPSB7IH0pIHsgfQogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMo
KSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVwb3NpdGlvblJlbGF0ZWRM
YXllcnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvc2l0aW9uUmVsYXRlZExheWVycygpIHsgfQogCiAg
ICAgY29uc3QgRmxvYXRTaXplJiByZWFjaGFibGVDb250ZW50c1NpemUoKSBjb25zdCB7IHJldHVy
biBtX3JlYWNoYWJsZUNvbnRlbnRzU2l6ZTsgfQogICAgIGNvbnN0IExheW91dFJlY3QmIHBhcmVu
dFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJlbGF0aXZl
U2Nyb2xsYWJsZVJlY3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4IGQyM2M2MDc5MmVhLi5iMGZkMmYwZDhkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURp
c3BsYXkuY3BwCkBAIC0yMTEsNyArMjExLDYgQEAgdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRp
YWxpemVFR0xEaXNwbGF5KCkKIAogICAgIGVnbERpc3BsYXlzKCkuYWRkKHRoaXMpOwogCi0jaWYg
IVBMQVRGT1JNKFdJTikKICAgICBzdGF0aWMgYm9vbCBlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6
ZWQgPSBmYWxzZTsKICAgICBpZiAoIWVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXplZCkgewogICAg
ICAgICAvLyBFR0wgcmVnaXN0ZXJzIGF0ZXhpdCBoYW5kbGVycyB0byBjbGVhbnVwIGl0cyBnbG9i
YWwgZGlzcGxheSBsaXN0LgpAQCAtMjI1LDcgKzIyNCw2IEBAIHZvaWQgUGxhdGZvcm1EaXNwbGF5
Ojppbml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAgICAgIGVnbEF0ZXhpdEhhbmRsZXJJbml0aWFs
aXplZCA9IHRydWU7CiAgICAgICAgIHN0ZDo6YXRleGl0KHNodXREb3duRWdsRGlzcGxheXMpOwog
ICAgIH0KLSNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtRGlzcGxheTo6dGVybWluYXRlRUdMRGlz
cGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA0Y2I4MDRkMGVmMC4uYjQ5OGE3OTA3
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMjQsNiArMjQsOCBAQCBsaXN0KEFQUEVO
RCBXZWJLaXRfU09VUkNFUwogCiAgICAgU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUlu
Zm9DdXJsLmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcAorCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGVOb25lLmNwcAogCiAgICAgU2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFp
bldpbi5jcHAKQEAgLTE2Miw2ICsxNjQsMTIgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlS
T30pCiAKICAgICAgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKIAorICAg
ICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9z
aXRpbmdSdW5Mb29wLmNwcAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorICAgICAgICBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwCisKKyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvU2ltcGxl
Vmlld3BvcnRDb250cm9sbGVyLmNwcAorCiAgICAgICAgIFNoYXJlZC9jYWlyby9TaGFyZWFibGVC
aXRtYXBDYWlyby5jcHAKIAogICAgICAgICBTaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDdXJsLmNwcApAQCAtMTcxLDYgKzE3OSw4IEBAIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJ
Uk99KQogICAgICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAg
ICAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwCisKKyAgICAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1
cmZhY2VXaW4uY3BwCiAgICAgKQogCiAgICAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElS
RUNUT1JJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCA1
NWQ4MWQzZWEwNy4uZTgzYzhlY2FiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAKICAgICAvLyBTdG9yZSBsYXllciBhbmQgaW1wbCBy
ZWZlcmVuY2VzIGFsb25nIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdXBkYXRlCiAgICAgLy8gZm9y
IGVhY2ggdHlwZSBvZiBwb3NzaWJsZSBsYXllciBiYWNraW5nLgotICAgIHN0cnVjdCB7CisgICAg
c3RydWN0IExheWVyc0J5QmFja2luZyB7CiAgICAgICAgIHN0cnVjdCBCYWNraW5nU3RvcmUgewog
ICAgICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUZXh0dXJlTWFwcGVyTGF5ZXI+IGxh
eWVyOwogICAgICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOaWNvc2lhOjpCYWNraW5n
U3RvcmVUZXh0dXJlTWFwcGVySW1wbD4gYmFja2luZ1N0b3JlOwpAQCAtMzUyLDcgKzM1Miw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2VuZVN0YXRlKCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6OnJlZihsYXllciksIHN0ZDo6cmVmKGlt
cGwucHJveHkoKSksIGxheWVyU3RhdGUuZGVsdGEuY29udGVudExheWVyQ2hhbmdlZCB9KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBpbXBsID0gaW1hZ2VCYWNraW5n
SW1wbCgqbGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxheWVyc0J5QmFja2luZy5pbWFnZUJhY2tpbmcuYXBwZW5kKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxheWVyc0J5QmFja2luZy5pbWFnZUJhY2tpbmcuYXBwZW5kPExheWVyc0J5
QmFja2luZzo6SW1hZ2VCYWNraW5nPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyBzdGQ6OnJlZihsYXllciksIHN0ZDo6cmVmKGltcGwpLCBpbXBsLnRha2VVcGRhdGUoKSB9KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxheWVyLnNldENvbnRlbnRzTGF5ZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRleCBjMWU2
YjdiMmNjNy4uYzM3NzU2MTk0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtMzMwLDUgKzMzMCwxMyBAQCB2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6ZnJhbWVDb21wbGV0ZSgpCiAgICAgc2NlbmVVcGRhdGVG
aW5pc2hlZCgpOwogfQogCisjaWYgUExBVEZPUk0oV0lOKQordm9pZCBUaHJlYWRlZENvbXBvc2l0
b3I6OnBhdXNlQ29tcG9zaXRpbmcoKQoreworICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5zdG9w
VXBkYXRlcygpOworfQorI2VuZGlmCisKKwogfQogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmgKaW5kZXggNzRkMTY4NGNiZWYuLjI0YThlMWUzNWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaApA
QCAtNzcsNiArNzcsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoKTsKIAor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkIHBhdXNlQ29tcG9zaXRpbmcoKTsKKyNlbmRpZgor
CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICBS
ZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBkaXNwbGF5UmVmcmVzaE1vbml0
b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpOwogICAgIHZvaWQgaGFuZGxlRGlzcGxheVJl
ZnJlc2hNb25pdG9yVXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGRiMWIzODEwZGRjLi5lNTdjNjgzMWM5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKQEAgLTEwMCw2ICsxMDAsOSBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKICNpZiBQTEFURk9S
TShXUEUpCiAgICAgZW5jb2RlciA8PCBob3N0RmlsZURlc2NyaXB0b3I7CisjZW5kaWYKKyNpZiBQ
TEFURk9STShXSU4pCisgICAgZW5jb2RlciA8PCBuYXRpdmVXaW5kb3dIYW5kbGU7CiAjZW5kaWYK
ICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgZW5j
b2RlciA8PCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKQEAgLTI4Nyw2ICsyOTAsMTEgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNl
bmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5uYXRpdmVXaW5kb3dIYW5kbGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
I2VuZGlmCisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXBwbGVNYWlsUGFn
aW5hdGlvblF1aXJrRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRl
eCA5NzZjODg2ZjQzMy4uOTFlZGFjN2MzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE1OCw2ICsxNTgsOSBAQCBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICNpZiBQTEFURk9STShXUEUpCiAg
ICAgSVBDOjpBdHRhY2htZW50IGhvc3RGaWxlRGVzY3JpcHRvcjsKKyNlbmRpZgorI2lmIFBMQVRG
T1JNKFdJTikKKyAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGU7CiAjZW5kaWYKICAgICBi
b29sIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgYm9vbCBhcHBsZU1haWxM
aW5lc0NsYW1wRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGY4ZWM1NjAxZjc1Li4zMTY4YTM3ZGNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC02OTczLDYgKzY5NzMsMTAgQEAgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJv
eHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLmhvc3RGaWxlRGVzY3JpcHRvciA9IHBhZ2VDbGllbnQo
KS5ob3N0RmlsZURlc2NyaXB0b3IoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorICAg
IHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRf
dD4odmlld1dpZGdldCgpKTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1f
dXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVI
YW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1ZS0+aWRlbnRpZmllcigpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWREcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxl
cmF0ZWREcmF3aW5nQXJlYS5oCmluZGV4IDQzMzcxNzBhNzhjLi4wNzg3ZTZmZDQ3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWREcmF3aW5n
QXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
RHJhd2luZ0FyZWEuaApAQCAtNjAsNyArNjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzY2hl
ZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaEltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKICNpZiBV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQotICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJl
c2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2Vi
Q29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKEdUSykgJiYgUExBVEZPUk0oWDExKSAmJiAhVVNF
KFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAppbmRleCBlNTc5YTVk
ZjNhMC4uYTgwNmRmNzhiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcApAQCAtNDEsNiArNDEsMTAgQEAKICNp
bmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXUEUuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
V0lOKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU3LDYgKzYxLDEw
IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IEFjY2VsZXJhdGVkU3VyZmFj
ZTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsCiAjaWYgUExBVEZPUk0oV1BFKQogICAgIGlmIChQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5
OjpUeXBlOjpXUEUpCiAgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VXUEU6OmNyZWF0
ZSh3ZWJQYWdlLCBjbGllbnQpOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmIChQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5
OjpUeXBlOjpXaW5kb3dzKQorICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpj
cmVhdGUod2ViUGFnZSwgY2xpZW50KTsKICNlbmRpZgogICAgIHJldHVybiBudWxscHRyOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYWEyYTAzMzFj
MWMuLmRiMDE5MmQwNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9z
dC5jcHAKQEAgLTI0OCw2ICsyNDgsOSBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFu
Z2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHZvaWQgTGF5ZXJUcmVlSG9zdDo6cGF1c2VSZW5kZXJp
bmcoKQogewogICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOworI2lmIFBMQVRGT1JNKFdJTikKKyAg
ICBtX2NvbXBvc2l0b3ItPnBhdXNlQ29tcG9zaXRpbmcoKTsKKyNlbmRpZgogfQogCiB2b2lkIExh
eWVyVHJlZUhvc3Q6OnJlc3VtZVJlbmRlcmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlSG9zdC5oCmluZGV4IDhmMjQ2OGY5NjFkLi4zOGYzYjdmYWJkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKQEAgLTEzNyw3ICsxMzcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LmRpZERlc3Ryb3lHTENvbnRleHQoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUpCisgICAgICAgIHZvaWQgcmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIG92
ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QubV9zdXJm
YWNlKQogICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5tX3N1cmZhY2UtPmNsaWVudFJl
c2l6ZShzaXplKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9s
YXllclRyZWVIb3N0LnJlcXVlc3REaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgaGFuZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGJv
b2wgaGFzQmVlblJlc2NoZWR1bGVkKQorICAgICAgICB2b2lkIGhhbmRsZURpc3BsYXlSZWZyZXNo
TW9uaXRvclVwZGF0ZShib29sIGhhc0JlZW5SZXNjaGVkdWxlZCkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LmhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRv
clVwZGF0ZShoYXNCZWVuUmVzY2hlZHVsZWQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg5Njg3NjBmOWU0Li5mYzQ1MmFl
NjU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTM3MCw2ICszNzAsMTAgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV92aWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcj4oKnRoaXMpKQogI2VsaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShH
VEspCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlPYmplY3QobnVsbHB0cikKKyNlbmRpZgorI2lmIFBM
QVRGT1JNKFdJTikgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIC8vIE91ciB2aWV3J3Mg
d2luZG93IGluIHRoZSBVSSBwcm9jZXNzLgorICAgICwgbV9uYXRpdmVXaW5kb3dIYW5kbGUocGFy
YW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUpCiAjZW5kaWYKICAgICAsIG1fc2V0Q2FuU3RhcnRN
ZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENhblN0YXJ0TWVk
aWFUaW1lckZpcmVkKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGZjOWY5ZjVhMzhjLi44YzViYmNiOTJm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTQ3
LDcgKzk0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoVG91Y2hFdmVudChjb25zdCBX
ZWJUb3VjaEV2ZW50JiwgYm9vbCYgaGFuZGxlZCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdU
SykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQogICAgIHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZSgpIHsgcmV0
dXJuIG1fbmF0aXZlV2luZG93SGFuZGxlOyB9CiAjZW5kaWYKIApAQCAtMTU5OCw3ICsxNTk4LDcg
QEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPFdlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX2Fj
Y2Vzc2liaWxpdHlPYmplY3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQogICAgIC8vIE91ciB2aWV3J3Mgd2luZG93IGluIHRoZSBVSSBwcm9jZXNzLgogICAgIHVp
bnQ2NF90IG1fbmF0aXZlV2luZG93SGFuZGxlIHsgMCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1
cmZhY2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44ZTUx
MGM3ZWYxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIgorCisjaW5jbHVkZSAi
V2ViUGFnZS5oIgorI2luY2x1ZGUgPGVnbC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1E
aXNwbGF5V2luLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXaW4+IEFjY2VsZXJhdGVk
U3VyZmFjZVdpbjo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsIENsaWVudCYgY2xpZW50KQorewor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPihuZXcgQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luKHdlYlBhZ2UsIGNsaWVudCkpOworfQorCitBY2NlbGVyYXRlZFN1
cmZhY2VXaW46OkFjY2VsZXJhdGVkU3VyZmFjZVdpbihXZWJQYWdlJiB3ZWJQYWdlLCBDbGllbnQm
IGNsaWVudCkKKyAgICA6IEFjY2VsZXJhdGVkU3VyZmFjZSh3ZWJQYWdlLCBjbGllbnQpCit7Cit9
CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdpbjo6fkFjY2VsZXJhdGVkU3VyZmFjZVdpbigpCit7Cit9
CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjppbml0aWFsaXplKCkKK3sKK30KKwordm9p
ZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmZpbmFsaXplKCkKK3sKK30KKwordWludDY0X3QgQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luOjp3aW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBh
Z2UubmF0aXZlV2luZG93SGFuZGxlKCk7Cit9CisKK3VpbnQ2NF90IEFjY2VsZXJhdGVkU3VyZmFj
ZVdpbjo6c3VyZmFjZUlEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgp
OworfQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6d2lsbFJlbmRlckZyYW1lKCkKK3sK
K30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmRpZFJlbmRlckZyYW1lKCkKK3sKKyAg
ICAvLyBGSVhNRTogZnJhbWVDb21wbGV0ZSgpIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZnJh
bWUgd2FzIGFjdHVhbGx5IHJlbmRlcmVkIGluIHRoZSBzY3JlZW4uCisgICAgbV9jbGllbnQuZnJh
bWVDb21wbGV0ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZh
Y2VXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2YxZmQ3ZTkz
ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IFBMQVRGT1JNKFdJTikKKworI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgQWNjZWxlcmF0ZWRTdXJm
YWNlV2luIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkU3VyZmFjZSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlV2luKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZh
Y2VXaW4+IGNyZWF0ZShXZWJQYWdlJiwgQ2xpZW50Jik7CisgICAgfkFjY2VsZXJhdGVkU3VyZmFj
ZVdpbigpOworCisgICAgdWludDY0X3Qgd2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdWlu
dDY0X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGluaXRpYWxpemUo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxs
UmVuZGVyRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlbmRlckZyYW1lKCkgb3ZlcnJp
ZGU7CisKK3ByaXZhdGU6CisgICAgQWNjZWxlcmF0ZWRTdXJmYWNlV2luKFdlYlBhZ2UmLCBDbGll
bnQmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0o
V0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
TWFpbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWlu
V2luLmNwcAppbmRleCBmYzM3YmZhYzlhZS4uMDI3YmM2YzgyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCkBAIC0zNiw2ICsz
Niw3IEBAIGNsYXNzIFdlYlByb2Nlc3NNYWluIGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nl
c3NNYWluQmFzZSB7CiBwdWJsaWM6CiAgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVy
cmlkZQogICAgIHsKKyAgICAgICAgU2V0UHJvY2Vzc0RQSUF3YXJlKCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC5jcHAKaW5kZXggYTUyYjEyMGFiYjIuLmEwOWZjMDRhZGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgogCi0jaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgIldlYlZpZXcuaCIKIApAQCAtNDE0LDQgKzQxNCw0
IEBAIGZsb2F0IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpkZXZpY2VTY2FsZUZhY3Rv
cigpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViVmlldy5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQog
Ci0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VuZGlmIC8vIFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCmluZGV4IDZiYjMzNGQ0NDFkLi4zMzc0ZDZhYTRi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKICNkZWZp
bmUgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAogCi0jaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HTENvbnRleHQuaD4KQEAgLTk5LDYgKzk5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IoKTsKIH07CiAKLSNlbmRpZiAvLyBURVhUVVJFX01BUFBFUl9H
TAorI2VuZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAKICNlbmRpZiAvLyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDNmZjgxY2YyMDg5Li44Nzk3NWM1M2E1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQAogI2lmIFVT
RShDQSkKICNpbmNsdWRlIDxXZWJDb3JlL0NBQ0ZMYXllclRyZWVIb3N0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgogI2VuZGlmCiAK
QEAgLTkyMSw3ICs5MjEsNyBAQCB2b2lkIFdlYlZpZXc6OmFkZFRvRGlydHlSZWdpb24oY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQogICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkg
ewogI2lmIFVTRShDQSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheUlu
UmVjdChkaXJ0eVJlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAg
ICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheShkaXJ0eVJlY3QpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKQEAgLTk5
Myw3ICs5OTMsNyBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpZXcq
IGZyYW1lVmlldywgaW50IGxvZ2ljYWxEeCwgaW50IGxvZ2ljYQogICAgICAgICAvLyBhbnkgbmV3
bHktZXhwb3NlZCB0aWxlcy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI3MTQ+CiAjaWYgVVNFKENB
KQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZp
ZXdSZWN0KTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAgICAgbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNj
cm9sbFZpZXdSZWN0LCBJbnRTaXplKGR4LCBkeSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsK
QEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgV2ViVmlldzo6c2l6ZUNoYW5nZWQoY29uc3QgSW50
U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldFNpemUobmV3U2l6ZSk7
CiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9Ci0jZWxp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
ICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKG1fYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJl
c2l6ZVJvb3RMYXllcihuZXdTaXplKTsKICNlbmRpZgpAQCAtNTQ4MCw3ICs1NDgwLDcgQEAgSFJF
U1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uKQogICAgIGhyID0gcHJlZnNQcml2YXRlLT5hY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVy
biBocjsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHN0YXRpYyBib29sIGFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUgPSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpOwogICAgIGVuYWJsZWQgPSBlbmFi
bGVkICYmIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGU7CiAjZWxpZiBVU0UoRElSRUNU
MkQpCkBAIC02NDg3LDcgKzY0ODcsNyBAQCBib29sIFdlYlZpZXc6OnBhaW50Q29tcG9zaXRlZENv
bnRlbnRUb0hEQyhIREMgZGV2aWNlQ29udGV4dCkKIAogI2lmIFVTRShDQSkKICAgICBtX2xheWVy
VHJlZUhvc3QtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc05vdygpOwotI2VsaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZs
dXNoQW5kUmVuZGVyTGF5ZXJzKCk7CiAjZW5kaWYKIApAQCAtNzE0OSw3ICs3MTQ5LDcgQEAgdm9p
ZCBXZWJWaWV3OjpzZXRSb290Q2hpbGRMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICBl
bHNlCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCi0jZWxp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
ICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKCFtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC0+c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIobGF5ZXIpOwpAQCAtNzE2Miw3ICs3
MTYyLDcgQEAgdm9pZCBXZWJWaWV3OjpmbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nv
b24oKQogICAgIGlmICghbV9sYXllclRyZWVIb3N0KQogICAgICAgICByZXR1cm47CiAgICAgbV9s
YXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKTsKLSNl
bGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1fYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29uKCk7CkBAIC03MjIzLDcg
KzcyMjMsNyBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBh
Y2NlbGVyYXRlZCkKICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBudWxscHRyOwogICAgICAgICBt
X2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwogICAgIH0KLSNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoYWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhp
cyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCBjM2ViMDhjNDI4OC4uZWJiMjNkYWQ3NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgV2ViQmFja0Zv
cndhcmRMaXN0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBX
ZWJJbnNwZWN0b3JDbGllbnQ7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIGNsYXNzIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiBjbGFzcyBXZWJWaWV3R3JvdXA7
CkBAIC03MDYsNyArNzA2LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShDQSkKICAgICBSZWZQdHI8
V2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKICAgICBSZWZQdHI8
V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9iYWNraW5nTGF5ZXI7Ci0jZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0PiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiAgICAg
Ym9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNt
YWtlCmluZGV4IDAxN2IyNmQ5YjAxLi41MTZhNmI2NmMzYyAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UK
QEAgLTc3LDYgKzc3LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X1dFQl9DUllQVE8gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShVU0VfU1lTVEVNX01BTExPQyBQUklWQVRFIE9OKQogCiBpZiAoJHtXVEZfUExBVEZPUk1fV0lO
X0NBSVJPfSkKKyAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVNZ
TkNfU0NST0xMSU5HIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0xFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUiBQVUJMSUMgT0ZGKQog
ICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfRU5DUllQ
VEVEX01FRElBIFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0lOVEwgUFVCTElDIE9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNXaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKaW5k
ZXggNGFkMmM0YjQyM2EuLjBjNTVmNTdiM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21h
a2UKQEAgLTI0LDcgKzI0LDExIEBAIGVuZGlmICgpCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFVTRV9DQUlSTyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DRiBPTikKK1NFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElDUyBPTikKK1NFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCBPTikKIFNF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DVVJMIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX05JQ09TSUEgT04pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX1RFWFRVUkVfTUFQUEVSIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RF
WFRVUkVfTUFQUEVSX0dMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX01FRElBX0ZP
VU5EQVRJT04gT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363575</attachid>
            <date>2019-03-04 17:52:10 -0800</date>
            <delta_ts>2019-03-06 01:30:04 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364-8.patch</filename>
            <type>text/plain</type>
            <size>26190</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGIwNTY1YTA5Yzg4Li5kMzE3
ZDUwZDZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSw2ICsx
MSwxNSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAogbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKKworICAgIHBhZ2Uvc2Nyb2xsaW5n
L2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKKwogICAgIHBhZ2Uvd2luL0ZyYW1l
Q2Fpcm9XaW4uY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC01
Niw1ICs2NSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJJRVMKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfRk9SV0FSRElOR19IRUFERVJTX0RJUkVDVE9SSUVTCiAgICAgcGxh
dGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlybworICAg
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZAogICAgIHBs
YXRmb3JtL25ldHdvcmsvY3VybAogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCmluZGV4
IDhmMDgwZTEyNjZlLi4zNTg2ZmE5MjgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUu
aApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIExheW91dFBvaW50IHBhcmVudFRvTG9j
YWxQb2ludChMYXlvdXRQb2ludCkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0UG9pbnQgbG9jYWxU
b0NvbnRlbnRzUG9pbnQoTGF5b3V0UG9pbnQpIGNvbnN0IGZpbmFsOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3JvbGxQb3NpdGlvbihPcHRpb25h
bDxGbG9hdFJlY3Q+KSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVu
dFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPEZsb2F0UmVjdD4pIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1Rl
eHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGMx
MGNmZjY4MzcyLi42ZWE0YzJhOGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC05MiwxMCAr
OTIsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBhZGp1c3RlZFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBTY3JvbGxQb3NpdGlvbkNsYW1wID0gU2Nyb2xs
UG9zaXRpb25DbGFtcDo6VG9Db250ZW50RWRnZXMpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lk
IGN1cnJlbnRTY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgdXBkYXRlVmlld3BvcnRGb3JDdXJyZW50U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8
RmxvYXRSZWN0PiA9IHsgfSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9y
Q3VycmVudFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPEZsb2F0UmVjdD4gPSB7IH0pIHsgfQogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMo
KSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVwb3NpdGlvblJlbGF0ZWRM
YXllcnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvc2l0aW9uUmVsYXRlZExheWVycygpIHsgfQogCiAg
ICAgY29uc3QgRmxvYXRTaXplJiByZWFjaGFibGVDb250ZW50c1NpemUoKSBjb25zdCB7IHJldHVy
biBtX3JlYWNoYWJsZUNvbnRlbnRzU2l6ZTsgfQogICAgIGNvbnN0IExheW91dFJlY3QmIHBhcmVu
dFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJlbGF0aXZl
U2Nyb2xsYWJsZVJlY3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4IGQyM2M2MDc5MmVhLi5iMGZkMmYwZDhkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURp
c3BsYXkuY3BwCkBAIC0yMTEsNyArMjExLDYgQEAgdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRp
YWxpemVFR0xEaXNwbGF5KCkKIAogICAgIGVnbERpc3BsYXlzKCkuYWRkKHRoaXMpOwogCi0jaWYg
IVBMQVRGT1JNKFdJTikKICAgICBzdGF0aWMgYm9vbCBlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6
ZWQgPSBmYWxzZTsKICAgICBpZiAoIWVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXplZCkgewogICAg
ICAgICAvLyBFR0wgcmVnaXN0ZXJzIGF0ZXhpdCBoYW5kbGVycyB0byBjbGVhbnVwIGl0cyBnbG9i
YWwgZGlzcGxheSBsaXN0LgpAQCAtMjI1LDcgKzIyNCw2IEBAIHZvaWQgUGxhdGZvcm1EaXNwbGF5
Ojppbml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAgICAgIGVnbEF0ZXhpdEhhbmRsZXJJbml0aWFs
aXplZCA9IHRydWU7CiAgICAgICAgIHN0ZDo6YXRleGl0KHNodXREb3duRWdsRGlzcGxheXMpOwog
ICAgIH0KLSNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtRGlzcGxheTo6dGVybWluYXRlRUdMRGlz
cGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA3ZWQ0NjcxODEzZC4uMjBiYjg1ZmQ1
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMjQsNiArMjQsOCBAQCBsaXN0KEFQUEVO
RCBXZWJLaXRfU09VUkNFUwogCiAgICAgU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUlu
Zm9DdXJsLmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcAorCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGVOb25lLmNwcAogCiAgICAgU2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFp
bldpbi5jcHAKQEAgLTE2Miw2ICsxNjQsMTIgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlS
T30pCiAKICAgICAgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKIAorICAg
ICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9z
aXRpbmdSdW5Mb29wLmNwcAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorICAgICAgICBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwCisKKyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvU2ltcGxl
Vmlld3BvcnRDb250cm9sbGVyLmNwcAorCiAgICAgICAgIFNoYXJlZC9jYWlyby9TaGFyZWFibGVC
aXRtYXBDYWlyby5jcHAKIAogICAgICAgICBTaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDdXJsLmNwcApAQCAtMTcxLDYgKzE3OSw4IEBAIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJ
Uk99KQogICAgICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAg
ICAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwCisKKyAgICAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1
cmZhY2VXaW4uY3BwCiAgICAgKQogCiAgICAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElS
RUNUT1JJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCA1
NWQ4MWQzZWEwNy4uZTgzYzhlY2FiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAKICAgICAvLyBTdG9yZSBsYXllciBhbmQgaW1wbCBy
ZWZlcmVuY2VzIGFsb25nIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdXBkYXRlCiAgICAgLy8gZm9y
IGVhY2ggdHlwZSBvZiBwb3NzaWJsZSBsYXllciBiYWNraW5nLgotICAgIHN0cnVjdCB7CisgICAg
c3RydWN0IExheWVyc0J5QmFja2luZyB7CiAgICAgICAgIHN0cnVjdCBCYWNraW5nU3RvcmUgewog
ICAgICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUZXh0dXJlTWFwcGVyTGF5ZXI+IGxh
eWVyOwogICAgICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOaWNvc2lhOjpCYWNraW5n
U3RvcmVUZXh0dXJlTWFwcGVySW1wbD4gYmFja2luZ1N0b3JlOwpAQCAtMzUyLDcgKzM1Miw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2VuZVN0YXRlKCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6OnJlZihsYXllciksIHN0ZDo6cmVmKGlt
cGwucHJveHkoKSksIGxheWVyU3RhdGUuZGVsdGEuY29udGVudExheWVyQ2hhbmdlZCB9KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBpbXBsID0gaW1hZ2VCYWNraW5n
SW1wbCgqbGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxheWVyc0J5QmFja2luZy5pbWFnZUJhY2tpbmcuYXBwZW5kKAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxheWVyc0J5QmFja2luZy5pbWFnZUJhY2tpbmcuYXBwZW5kPExheWVyc0J5
QmFja2luZzo6SW1hZ2VCYWNraW5nPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyBzdGQ6OnJlZihsYXllciksIHN0ZDo6cmVmKGltcGwpLCBpbXBsLnRha2VVcGRhdGUoKSB9KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxheWVyLnNldENvbnRlbnRzTGF5ZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21w
b3NpdGluZ1J1bkxvb3AuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAppbmRleCBiODgy
ZTBiMWQ2My4uOTg4OGIzMDkzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcApAQCAtNjgsMTEgKzY4LDggQEAgQ29t
cG9zaXRpbmdSdW5Mb29wOjp+Q29tcG9zaXRpbmdSdW5Mb29wKCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgUnVuTG9vcCBpcyBzdG9wcGVk
IGFmdGVyIHRoZSBDb21wb3NpdGluZ1J1bkxvb3AsIGJlY2F1c2UgbV91cGRhdGVUaW1lciBoYXMg
YSByZWZlcmVuY2UuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtydW5Mb29wID0gbWFr
ZVJlZigqbV9ydW5Mb29wKV0gewotICAgICAgICBydW5Mb29wLT5zdG9wKCk7Ci0gICAgICAgIHJ1
bkxvb3AtPmRpc3BhdGNoKFtdIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9w
KCk7Ci0gICAgICAgIH0pOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goW10geworICAgICAgICBS
dW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGRiMWIzODEw
ZGRjLi5lNTdjNjgzMWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEwMCw2ICsxMDAsOSBAQCB2b2lkIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAj
ZW5kaWYKICNpZiBQTEFURk9STShXUEUpCiAgICAgZW5jb2RlciA8PCBob3N0RmlsZURlc2NyaXB0
b3I7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgZW5jb2RlciA8PCBuYXRpdmVXaW5k
b3dIYW5kbGU7CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbFBhZ2luYXRpb25RdWly
a0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKQEAg
LTI4Nyw2ICsyOTAsMTEgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaAppbmRleCA5NzZjODg2ZjQzMy4uOTFlZGFjN2MzMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE1OCw2
ICsxNTgsOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICNp
ZiBQTEFURk9STShXUEUpCiAgICAgSVBDOjpBdHRhY2htZW50IGhvc3RGaWxlRGVzY3JpcHRvcjsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dIYW5k
bGU7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAg
ICAgYm9vbCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDFmMzljMTRhZWFlLi45Yzg5NzI1ZjkxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02OTcyLDYgKzY5NzIsMTAg
QEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1l
dGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLmhvc3RGaWxlRGVzY3Jp
cHRvciA9IHBhZ2VDbGllbnQoKS5ob3N0RmlsZURlc2NyaXB0b3IoKTsKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oV0lOKQorICAgIHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdD4odmlld1dpZGdldCgpKTsKKyNlbmRpZgorCiAgICAgZm9yIChh
dXRvJiBpdGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKICAgICAgICAgcGFy
YW1ldGVycy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1
ZS0+aWRlbnRpZmllcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKaW5kZXggZTU3OWE1ZGYzYTAuLmE4MDZk
Zjc4YjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2Nl
bGVyYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSAiQWNj
ZWxlcmF0ZWRTdXJmYWNlV1BFLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNs
dWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01Nyw2ICs2MSwxMCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShX
ZWJQYWdlJiB3ZWJQYWdlLAogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBpZiAoUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V1BF
KQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV1BFOjpjcmVhdGUod2ViUGFnZSwg
Y2xpZW50KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2lu
ZG93cykKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKHdlYlBh
Z2UsIGNsaWVudCk7CiAjZW5kaWYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKaW5kZXggOGYyNDY4Zjk2MWQuLjM4ZjNiN2ZhYmQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaApAQCAtMTM3LDcgKzEz
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QuZGlkRGVzdHJveUdM
Q29udGV4dCgpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2l6ZSkKKyAgICAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fbGF5ZXJU
cmVlSG9zdC5tX3N1cmZhY2UpCiAgICAgICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0Lm1fc3Vy
ZmFjZS0+Y2xpZW50UmVzaXplKHNpemUpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QucmVxdWVzdERpc3BsYXlSZWZyZXNoTW9uaXRvclVw
ZGF0ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVzaE1v
bml0b3JVcGRhdGUoYm9vbCBoYXNCZWVuUmVzY2hlZHVsZWQpCisgICAgICAgIHZvaWQgaGFuZGxl
RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGJvb2wgaGFzQmVlblJlc2NoZWR1bGVkKSBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QuaGFuZGxlRGlzcGxh
eVJlZnJlc2hNb25pdG9yVXBkYXRlKGhhc0JlZW5SZXNjaGVkdWxlZCk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzM4ODI4
MWM0ZjkuLjMzZjVjMGNmYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtMzcwLDYgKzM3MCwxMCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAg
LCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkp
ICYmIFBMQVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQor
I2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAg
Ly8gT3VyIHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgLCBtX25hdGl2ZVdp
bmRvd0hhbmRsZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkKICNlbmRpZgogICAgICwg
bV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZTo6
c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjZkN2E5OWM0
N2UuLmQxOTE5NjhhNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC05NDYsNyArOTQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hUb3Vj
aEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVkKTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgUExBVEZPUk0o
V0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdWludDY0X3QgbmF0aXZlV2luZG93
SGFuZGxlKCkgeyByZXR1cm4gbV9uYXRpdmVXaW5kb3dIYW5kbGU7IH0KICNlbmRpZgogCkBAIC0x
NTk3LDcgKzE1OTcsNyBAQCBwcml2YXRlOgogICAgIEdSZWZQdHI8V2ViUGFnZUFjY2Vzc2liaWxp
dHlPYmplY3Q+IG1fYWNjZXNzaWJpbGl0eU9iamVjdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
R1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgLy8gT3VyIHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHBy
b2Nlc3MuCiAgICAgdWludDY0X3QgbV9uYXRpdmVXaW5kb3dIYW5kbGUgeyAwIH07CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVy
YXRlZFN1cmZhY2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjhlNTEwYzdlZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKQEAgLTAsMCAr
MSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgi
CisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8ZWdsLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybURpc3BsYXlXaW4uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdp
bj4gQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwgQ2xpZW50
JiBjbGllbnQpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZh
Y2VXaW4+KG5ldyBBY2NlbGVyYXRlZFN1cmZhY2VXaW4od2ViUGFnZSwgY2xpZW50KSk7Cit9CisK
K0FjY2VsZXJhdGVkU3VyZmFjZVdpbjo6QWNjZWxlcmF0ZWRTdXJmYWNlV2luKFdlYlBhZ2UmIHdl
YlBhZ2UsIENsaWVudCYgY2xpZW50KQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2Us
IGNsaWVudCkKK3sKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp+QWNjZWxlcmF0ZWRTdXJm
YWNlV2luKCkKK3sKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmluaXRpYWxpemUo
KQoreworfQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6ZmluYWxpemUoKQoreworfQor
Cit1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OndpbmRvdygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fd2ViUGFnZS5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKK30KKwordWludDY0X3QgQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luOjpzdXJmYWNlSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3dl
YlBhZ2UucGFnZUlEKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp3aWxsUmVu
ZGVyRnJhbWUoKQoreworfQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6ZGlkUmVuZGVy
RnJhbWUoKQoreworICAgIC8vIEZJWE1FOiBmcmFtZUNvbXBsZXRlKCkgc2hvdWxkIGJlIGNhbGxl
ZCB3aGVuIHRoZSBmcmFtZSB3YXMgYWN0dWFsbHkgcmVuZGVyZWQgaW4gdGhlIHNjcmVlbi4KKyAg
ICBtX2NsaWVudC5mcmFtZUNvbXBsZXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJh
dGVkU3VyZmFjZVdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0Fj
Y2VsZXJhdGVkU3VyZmFjZVdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5jZjFmZDdlOTNmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uaApAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgUExBVEZPUk0oV0lOKQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJm
YWNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBB
Y2NlbGVyYXRlZFN1cmZhY2VXaW4gZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRTdXJmYWNlIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZFN1cmZhY2VXaW4pOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFj
Y2VsZXJhdGVkU3VyZmFjZVdpbj4gY3JlYXRlKFdlYlBhZ2UmLCBDbGllbnQmKTsKKyAgICB+QWNj
ZWxlcmF0ZWRTdXJmYWNlV2luKCk7CisKKyAgICB1aW50NjRfdCB3aW5kb3coKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZv
aWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHdpbGxSZW5kZXJGcmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVuZGVy
RnJhbWUoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZFN1cmZhY2VXaW4o
V2ViUGFnZSYsIENsaWVudCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
d2luL1dlYlByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc01haW5XaW4uY3BwCmluZGV4IGZjMzdiZmFjOWFlLi4wMjdiYzZjODJkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5j
cHAKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc01haW4gZmluYWwgOiBwdWJsaWMg
QXV4aWxpYXJ5UHJvY2Vzc01haW5CYXNlIHsKIHB1YmxpYzoKICAgICBib29sIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBTZXRQcm9jZXNzRFBJQXdhcmUoKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCBhNTJiMTIwYWJiMi4uYTA5ZmMwNGFkYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAK
LSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCkBA
IC00MTQsNCArNDE0LDQgQEAgZmxvYXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmRl
dmljZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJWaWV3LmRldmljZVNjYWxl
RmFjdG9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZW5kaWYg
Ly8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXggNmJiMzM0ZDQ0
MWQuLjMzNzRkNmFhNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHRfaAogI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCiAKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgpAQCAtOTksNiArOTksNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcigpOwogfTsKIAotI2VuZGlmIC8vIFRF
WFRVUkVfTUFQUEVSX0dMCisjZW5kaWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wgJiYgIVVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKIAogI2VuZGlmIC8vIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2ZmODFjZjIwODkuLjg3
OTc1YzUzYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTk3LDcgKzE5
Nyw3IEBACiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVyVHJlZUhvc3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgotI2VsaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmgiCiAjZW5kaWYKIApAQCAtOTIxLDcgKzkyMSw3IEBAIHZvaWQgV2ViVmlldzo6YWRkVG9EaXJ0
eVJlZ2lvbihjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZygpKSB7CiAjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldE5vbkNv
bXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGRpcnR5UmVjdCk7CiAjZW5kaWYKICAgICAgICAg
cmV0dXJuOwpAQCAtOTkzLDcgKzk5Myw3IEBAIHZvaWQgV2ViVmlldzo6c2Nyb2xsQmFja2luZ1N0
b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBpbnQgbG9naWNhbER4LCBpbnQgbG9naWNhCiAgICAg
ICAgIC8vIGFueSBuZXdseS1leHBvc2VkIHRpbGVzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi81Mjcx
ND4KICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJ
blJlY3Qoc2Nyb2xsVmlld1JlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2Vs
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
ICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zY3JvbGxOb25Db21wb3Np
dGVkQ29udGVudHMoc2Nyb2xsVmlld1JlY3QsIEludFNpemUoZHgsIGR5KSk7CiAjZW5kaWYKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBXZWJWaWV3OjpzaXplQ2hh
bmdlZChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0
U2l6ZShuZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheSgp
OwogICAgIH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAobV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlmCkBAIC01NDgwLDcg
KzU0ODAsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2Vi
Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkK
ICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3Rh
dGljIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSA9IEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCk7CiAgICAg
ZW5hYmxlZCA9IGVuYWJsZWQgJiYgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZTsKICNl
bGlmIFVTRShESVJFQ1QyRCkKQEAgLTY0ODcsNyArNjQ4Nyw3IEBAIGJvb2wgV2ViVmlldzo6cGFp
bnRDb21wb3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZpY2VDb250ZXh0KQogCiAjaWYgVVNFKENB
KQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCk7Ci0j
ZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICNlbmRpZgogCkBAIC03MTQ5LDcg
KzcxNDksNyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQogICAgIGVsc2UKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnJlbW92ZUFsbENoaWxk
cmVuKCk7CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihsYXllcik7
CkBAIC03MTYyLDcgKzcxNjIsNyBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNz
TGF5ZXJDaGFuZ2VzU29vbigpCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFu
Z2VzU29vbigpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24o
KTsKQEAgLTcyMjMsNyArNzIyMyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogICAgICAgICBtX2JhY2tpbmdMYXllciA9IG51bGxw
dHI7CiAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gZmFsc2U7CiAgICAgfQot
I2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAh
bV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2Vs
ZXJhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCmluZGV4IGMzZWIwOGM0Mjg4Li5lYmIy
M2RhZDc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNjgsNyArNjgsNyBAQCBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkluc3Bl
Y3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQogY2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKIGNsYXNz
IFdlYlZpZXdHcm91cDsKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgVVNFKENB
KQogICAgIFJlZlB0cjxXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0
OwogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2JhY2tpbmdMYXllcjsKLSNl
bGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7
CiAjZW5kaWYKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UKaW5kZXggMDE3YjI2ZDliMDEuLjUxNmE2YjY2YzNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbi5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCiAKIGlmICgke1dU
Rl9QTEFURk9STV9XSU5fQ0FJUk99KQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VS
IFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0xFR0FDWV9FTkNSWVBURURfTUVESUEgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5D
YWlyby5jbWFrZQppbmRleCA0YWQyYzRiNDIzYS4uMGM1NWY1N2IzZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXaW5DYWlyby5jbWFrZQpAQCAtMjQsNyArMjQsMTEgQEAgZW5kaWYgKCkKIAogU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNF
X0NGIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNT
IE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCitTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfTklDT1NJQSBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFVTRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IgT04pCiBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgT04pCiBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVJfR0wgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChVU0VfTUVESUFfRk9VTkRBVElPTiBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363736</attachid>
            <date>2019-03-06 01:30:04 -0800</date>
            <delta_ts>2019-03-11 02:23:56 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364-9.patch</filename>
            <type>text/plain</type>
            <size>32226</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGIwNTY1YTA5Yzg4Li40ZjYx
M2ZiODg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSwxMSAr
MTEsMjEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCisKKyAgICBwYWdlL3Njcm9sbGlu
Zy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCisKICAgICBwYWdlL3dpbi9GcmFt
ZUNhaXJvV2luLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcApAQCAtNTYsNSArNjYsOCBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBX
ZWJDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHBsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8KKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAppbmRleCA4ZjA4MGUxMjY2
ZS4uMzU4NmZhOTI4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAgLTY5LDcg
KzY5LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRQb2ludCBwYXJlbnRUb0xvY2FsUG9pbnQoTGF5
b3V0UG9pbnQpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFBvaW50IGxvY2FsVG9Db250ZW50c1Bv
aW50KExheW91dFBvaW50KSBjb25zdCBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlVmlld3BvcnRGb3JDdXJyZW50U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8RmxvYXRSZWN0
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3JvbGxQb3Np
dGlvbihPcHRpb25hbDxGbG9hdFJlY3Q+KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHVtcFByb3Bl
cnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3Ip
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCBjMTBjZmY2ODM3Mi4u
NmVhNGMyYThhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtOTIsMTAgKzkyLDEwIEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgYWRqdXN0ZWRTY3JvbGxQb3NpdGlvbihj
b25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsUG9zaXRpb25DbGFtcCA9IFNjcm9sbFBvc2l0aW9uQ2xh
bXA6OlRvQ29udGVudEVkZ2VzKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJyZW50U2Ny
b2xsUG9zaXRpb25DaGFuZ2VkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHVw
ZGF0ZVZpZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPEZsb2F0UmVjdD4g
PSB7IH0pIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3Jv
bGxQb3NpdGlvbihPcHRpb25hbDxGbG9hdFJlY3Q+ID0geyB9KSB7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCByZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkgeyB9Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcG9zaXRpb25SZWxhdGVkTGF5ZXJzKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVwb3NpdGlvblJlbGF0ZWRMYXllcnMoKSB7IH0KIAogICAgIGNvbnN0IEZs
b2F0U2l6ZSYgcmVhY2hhYmxlQ29udGVudHNTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZWFjaGFi
bGVDb250ZW50c1NpemU7IH0KICAgICBjb25zdCBMYXlvdXRSZWN0JiBwYXJlbnRSZWxhdGl2ZVNj
cm9sbGFibGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVS
ZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNw
bGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAppbmRleCA3NmEyMDgxM2E2NS4uZDVkNDc2NDc0Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5oIgogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkRp
c3BsYXlSZWZyZXNoTW9uaXRvckd0ay5oIgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUg
IkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTUyLDYgKzU0LDkgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxh
eVJlZnJlc2hNb25pdG9yOjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2gKICNlbmRpZgogI2lm
IFBMQVRGT1JNKEdUSykKICAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpjcmVh
dGUoZGlzcGxheUlEKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4gRGlz
cGxheVJlZnJlc2hNb25pdG9yV2luOjpjcmVhdGUoZGlzcGxheUlEKTsKICNlbmRpZgogICAgIFVO
VVNFRF9QQVJBTShkaXNwbGF5SUQpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXgg
ZDIzYzYwNzkyZWEuLmIwZmQyZjBkOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTIxMSw3ICsyMTEsNiBAQCB2
b2lkIFBsYXRmb3JtRGlzcGxheTo6aW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogCiAgICAgZWdsRGlz
cGxheXMoKS5hZGQodGhpcyk7CiAKLSNpZiAhUExBVEZPUk0oV0lOKQogICAgIHN0YXRpYyBib29s
IGVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXplZCA9IGZhbHNlOwogICAgIGlmICghZWdsQXRleGl0
SGFuZGxlckluaXRpYWxpemVkKSB7CiAgICAgICAgIC8vIEVHTCByZWdpc3RlcnMgYXRleGl0IGhh
bmRsZXJzIHRvIGNsZWFudXAgaXRzIGdsb2JhbCBkaXNwbGF5IGxpc3QuCkBAIC0yMjUsNyArMjI0
LDYgQEAgdm9pZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICAg
ICAgZWdsQXRleGl0SGFuZGxlckluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgICAgc3RkOjphdGV4
aXQoc2h1dERvd25FZ2xEaXNwbGF5cyk7CiAgICAgfQotI2VuZGlmCiB9CiAKIHZvaWQgUGxhdGZv
cm1EaXNwbGF5Ojp0ZXJtaW5hdGVFR0xEaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
cldpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEzNWE4NDc0
MjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxh
eVJlZnJlc2hNb25pdG9yV2luLmgiCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVf
RElTUExBWV9NT05JVE9SKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxEaXNwbGF5
UmVmcmVzaE1vbml0b3JXaW4+IERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6Y3JlYXRlKFBsYXRm
b3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNw
bGF5UmVmcmVzaE1vbml0b3JXaW4oZGlzcGxheUlEKSk7Cit9CisKK0Rpc3BsYXlSZWZyZXNoTW9u
aXRvcldpbjo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luKFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRCkKKyAgICA6IERpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpCisgICAgLCBtX3Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlz
cGxheUxpbmtGaXJlZCkKK3sKK30KKworYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OnJl
cXVlc3RSZWZyZXNoQ2FsbGJhY2soKQoreworICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDE2X21zKTsKKyAgICBzZXRJ
c0FjdGl2ZSh0cnVlKTsKKyAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OmRpc3BsYXlMaW5rRmlyZWQo
KQoreworICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKKworICAgIGhhbmRsZURpc3BsYXlS
ZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQ
TEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFkMzcwNTFkMmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
cldpbi5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25p
dG9yLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4gOiBwdWJsaWMgRGlzcGxheVJlZnJlc2hN
b25pdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRv
cldpbj4gY3JlYXRlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCk7CisKKyAgICB2b2lkIGRp
c3BsYXlMaW5rRmlyZWQoKSBvdmVycmlkZTsKKyAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJh
Y2soKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQpOworICAgIFJ1bkxvb3A6OlRpbWVyPERpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbj4gbV90aW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA3ZWQ0NjcxODEzZC4uMjBiYjg1ZmQ1MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMjQsNiArMjQsOCBAQCBsaXN0KEFQUEVORCBXZWJL
aXRfU09VUkNFUwogCiAgICAgU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJs
LmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcAorCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGVOb25lLmNwcAogCiAgICAgU2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldpbi5j
cHAKQEAgLTE2Miw2ICsxNjQsMTIgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAK
ICAgICAgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKIAorICAgICAgICBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdS
dW5Mb29wLmNwcAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwCisKKyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvU2ltcGxlVmlld3Bv
cnRDb250cm9sbGVyLmNwcAorCiAgICAgICAgIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBD
YWlyby5jcHAKIAogICAgICAgICBTaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJs
LmNwcApAQCAtMTcxLDYgKzE3OSw4IEBAIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQog
ICAgICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICAgICAg
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCisKKyAgICAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VX
aW4uY3BwCiAgICAgKQogCiAgICAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJ
RVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCA1NWQ4MWQz
ZWEwNy4uZTgzYzhlY2FiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
dXBkYXRlU2NlbmVTdGF0ZSgpCiAKICAgICAvLyBTdG9yZSBsYXllciBhbmQgaW1wbCByZWZlcmVu
Y2VzIGFsb25nIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdXBkYXRlCiAgICAgLy8gZm9yIGVhY2gg
dHlwZSBvZiBwb3NzaWJsZSBsYXllciBiYWNraW5nLgotICAgIHN0cnVjdCB7CisgICAgc3RydWN0
IExheWVyc0J5QmFja2luZyB7CiAgICAgICAgIHN0cnVjdCBCYWNraW5nU3RvcmUgewogICAgICAg
ICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUZXh0dXJlTWFwcGVyTGF5ZXI+IGxheWVyOwog
ICAgICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOaWNvc2lhOjpCYWNraW5nU3RvcmVU
ZXh0dXJlTWFwcGVySW1wbD4gYmFja2luZ1N0b3JlOwpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2VuZVN0YXRlKCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6OnJlZihsYXllciksIHN0ZDo6cmVmKGltcGwucHJv
eHkoKSksIGxheWVyU3RhdGUuZGVsdGEuY29udGVudExheWVyQ2hhbmdlZCB9KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBpbXBsID0gaW1hZ2VCYWNraW5nSW1wbCgq
bGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
eWVyc0J5QmFja2luZy5pbWFnZUJhY2tpbmcuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxheWVyc0J5QmFja2luZy5pbWFnZUJhY2tpbmcuYXBwZW5kPExheWVyc0J5QmFja2lu
Zzo6SW1hZ2VCYWNraW5nPigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6
OnJlZihsYXllciksIHN0ZDo6cmVmKGltcGwpLCBpbXBsLnRha2VVcGRhdGUoKSB9KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh
eWVyLnNldENvbnRlbnRzTGF5ZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGlu
Z1J1bkxvb3AuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAppbmRleCBiODgyZTBiMWQ2
My4uOTg4OGIzMDkzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcApAQCAtNjgsMTEgKzY4LDggQEAgQ29tcG9zaXRp
bmdSdW5Mb29wOjp+Q29tcG9zaXRpbmdSdW5Mb29wKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgUnVuTG9vcCBpcyBzdG9wcGVkIGFmdGVy
IHRoZSBDb21wb3NpdGluZ1J1bkxvb3AsIGJlY2F1c2UgbV91cGRhdGVUaW1lciBoYXMgYSByZWZl
cmVuY2UuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtydW5Mb29wID0gbWFrZVJlZigq
bV9ydW5Mb29wKV0gewotICAgICAgICBydW5Mb29wLT5zdG9wKCk7Ci0gICAgICAgIHJ1bkxvb3At
PmRpc3BhdGNoKFtdIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5zdG9wKCk7Ci0g
ICAgICAgIH0pOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goW10geworICAgICAgICBSdW5Mb29w
OjpjdXJyZW50KCkuc3RvcCgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGRiMWIzODEwZGRjLi5l
NTdjNjgzMWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEwMCw2ICsxMDAsOSBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYK
ICNpZiBQTEFURk9STShXUEUpCiAgICAgZW5jb2RlciA8PCBob3N0RmlsZURlc2NyaXB0b3I7Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgZW5jb2RlciA8PCBuYXRpdmVXaW5kb3dIYW5k
bGU7CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJs
ZWQ7CiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKQEAgLTI4Nyw2
ICsyOTAsMTEgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworI2VuZGlmCisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
YXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAppbmRleCA5NzZjODg2ZjQzMy4uOTFlZGFjN2MzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE1OCw2ICsxNTgs
OSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShXUEUpCiAgICAgSVBDOjpBdHRhY2htZW50IGhvc3RGaWxlRGVzY3JpcHRvcjsKKyNlbmRp
ZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGU7CiAj
ZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgYm9v
bCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDFmMzljMTRhZWFlLi45Yzg5NzI1ZjkxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02OTcyLDYgKzY5NzIsMTAgQEAgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhX
ZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLmhvc3RGaWxlRGVzY3JpcHRvciA9
IHBhZ2VDbGllbnQoKS5ob3N0RmlsZURlc2NyaXB0b3IoKTsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oV0lOKQorICAgIHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50NjRfdD4odmlld1dpZGdldCgpKTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiBp
dGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKICAgICAgICAgcGFyYW1ldGVy
cy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1ZS0+aWRl
bnRpZmllcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKaW5kZXggZTU3OWE1ZGYzYTAuLmE4MDZkZjc4YjVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2Vs
ZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSAiQWNjZWxlcmF0
ZWRTdXJmYWNlV1BFLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJB
Y2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01Nyw2ICs2MSwxMCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdl
JiB3ZWJQYWdlLAogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V1BFKQogICAg
ICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV1BFOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50
KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2luZG93cykK
KyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKHdlYlBhZ2UsIGNs
aWVudCk7CiAjZW5kaWYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVIb3N0LmgKaW5kZXggOGYyNDY4Zjk2MWQuLjM4ZjNiN2ZhYmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaApAQCAtMTM3LDcgKzEzNyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QuZGlkRGVzdHJveUdMQ29udGV4
dCgpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSkKKyAgICAgICAgdm9pZCByZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dC5tX3N1cmZhY2UpCiAgICAgICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0Lm1fc3VyZmFjZS0+
Y2xpZW50UmVzaXplKHNpemUpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBtX2xheWVyVHJlZUhvc3QucmVxdWVzdERpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgp
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVzaE1vbml0b3JV
cGRhdGUoYm9vbCBoYXNCZWVuUmVzY2hlZHVsZWQpCisgICAgICAgIHZvaWQgaGFuZGxlRGlzcGxh
eVJlZnJlc2hNb25pdG9yVXBkYXRlKGJvb2wgaGFzQmVlblJlc2NoZWR1bGVkKSBvdmVycmlkZQog
ICAgICAgICB7CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QuaGFuZGxlRGlzcGxheVJlZnJl
c2hNb25pdG9yVXBkYXRlKGhhc0JlZW5SZXNjaGVkdWxlZCk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzM4ODI4MWM0Zjku
LjMzZjVjMGNmYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMzcwLDYgKzM3MCwxMCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBM
QVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQorI2VuZGlm
CisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgLy8gT3Vy
IHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgLCBtX25hdGl2ZVdpbmRvd0hh
bmRsZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkKICNlbmRpZgogICAgICwgbV9zZXRD
YW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZTo6c2V0Q2Fu
U3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjZkN2E5OWM0N2UuLmQx
OTE5NjhhNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC05NDYsNyArOTQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hUb3VjaEV2ZW50
KGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVkKTsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdWludDY0X3QgbmF0aXZlV2luZG93SGFuZGxl
KCkgeyByZXR1cm4gbV9uYXRpdmVXaW5kb3dIYW5kbGU7IH0KICNlbmRpZgogCkBAIC0xNTk3LDcg
KzE1OTcsNyBAQCBwcml2YXRlOgogICAgIEdSZWZQdHI8V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IG1fYWNjZXNzaWJpbGl0eU9iamVjdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSAm
JiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCiAgICAgLy8gT3VyIHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHByb2Nlc3Mu
CiAgICAgdWludDY0X3QgbV9uYXRpdmVXaW5kb3dIYW5kbGUgeyAwIH07CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1
cmZhY2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2Vs
ZXJhdGVkU3VyZmFjZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjhlNTEwYzdlZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKQEAgLTAsMCArMSw3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgiCisKKyNp
bmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8ZWdsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybURpc3BsYXlXaW4uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4gQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwgQ2xpZW50JiBjbGll
bnQpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXaW4+
KG5ldyBBY2NlbGVyYXRlZFN1cmZhY2VXaW4od2ViUGFnZSwgY2xpZW50KSk7Cit9CisKK0FjY2Vs
ZXJhdGVkU3VyZmFjZVdpbjo6QWNjZWxlcmF0ZWRTdXJmYWNlV2luKFdlYlBhZ2UmIHdlYlBhZ2Us
IENsaWVudCYgY2xpZW50KQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2UsIGNsaWVu
dCkKK3sKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp+QWNjZWxlcmF0ZWRTdXJmYWNlV2lu
KCkKK3sKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmluaXRpYWxpemUoKQorewor
fQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6ZmluYWxpemUoKQoreworfQorCit1aW50
NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OndpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fd2ViUGFnZS5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKK30KKwordWludDY0X3QgQWNjZWxlcmF0
ZWRTdXJmYWNlV2luOjpzdXJmYWNlSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2Uu
cGFnZUlEKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp3aWxsUmVuZGVyRnJh
bWUoKQoreworfQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6ZGlkUmVuZGVyRnJhbWUo
KQoreworICAgIC8vIEZJWE1FOiBmcmFtZUNvbXBsZXRlKCkgc2hvdWxkIGJlIGNhbGxlZCB3aGVu
IHRoZSBmcmFtZSB3YXMgYWN0dWFsbHkgcmVuZGVyZWQgaW4gdGhlIHNjcmVlbi4KKyAgICBtX2Ns
aWVudC5mcmFtZUNvbXBsZXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3Vy
ZmFjZVdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJh
dGVkU3VyZmFjZVdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5j
ZjFmZDdlOTNmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uaApAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgUExBVEZPUk0oV0lOKQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBBY2NlbGVy
YXRlZFN1cmZhY2VXaW4gZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRTdXJmYWNlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZFN1cmZhY2VXaW4pOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJh
dGVkU3VyZmFjZVdpbj4gY3JlYXRlKFdlYlBhZ2UmLCBDbGllbnQmKTsKKyAgICB+QWNjZWxlcmF0
ZWRTdXJmYWNlV2luKCk7CisKKyAgICB1aW50NjRfdCB3aW5kb3coKSBjb25zdCBvdmVycmlkZTsK
KyAgICB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHZvaWQgaW5p
dGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHdpbGxSZW5kZXJGcmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUo
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZFN1cmZhY2VXaW4oV2ViUGFn
ZSYsIENsaWVudCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQ
TEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dl
YlByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJv
Y2Vzc01haW5XaW4uY3BwCmluZGV4IGZjMzdiZmFjOWFlLi4wMjdiYzZjODJkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc01haW4gZmluYWwgOiBwdWJsaWMgQXV4aWxp
YXJ5UHJvY2Vzc01haW5CYXNlIHsKIHB1YmxpYzoKICAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6
ZSgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBTZXRQcm9jZXNzRFBJQXdhcmUoKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LmNwcAppbmRleCBhNTJiMTIwYWJiMi4uYTA5ZmMwNGFkYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCkBAIC00MTQs
NCArNDE0LDQgQEAgZmxvYXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJWaWV3LmRldmljZVNjYWxlRmFjdG9y
KCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZW5kaWYgLy8gVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXggNmJiMzM0ZDQ0MWQuLjMz
NzRkNmFhNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgK
QEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRf
aAogI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCiAKLSNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgpAQCAtOTksNiArOTksNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcigpOwogfTsKIAotI2VuZGlmIC8vIFRFWFRVUkVf
TUFQUEVSX0dMCisjZW5kaWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wgJiYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKIAogI2VuZGlmIC8vIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2ZmODFjZjIwODkuLjg3OTc1YzUz
YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
CiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVyVHJlZUhvc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgotI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAj
ZW5kaWYKIApAQCAtOTIxLDcgKzkyMSw3IEBAIHZvaWQgV2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lv
bihjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZygpKSB7CiAjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisj
ZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldE5vbkNvbXBvc2l0
ZWRDb250ZW50c05lZWREaXNwbGF5KGRpcnR5UmVjdCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJu
OwpAQCAtOTkzLDcgKzk5Myw3IEBAIHZvaWQgV2ViVmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKEZy
YW1lVmlldyogZnJhbWVWaWV3LCBpbnQgbG9naWNhbER4LCBpbnQgbG9naWNhCiAgICAgICAgIC8v
IGFueSBuZXdseS1leHBvc2VkIHRpbGVzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi81MjcxND4KICNp
ZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3Qo
c2Nyb2xsVmlld1JlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAg
ICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zY3JvbGxOb25Db21wb3NpdGVkQ29u
dGVudHMoc2Nyb2xsVmlld1JlY3QsIEludFNpemUoZHgsIGR5KSk7CiAjZW5kaWYKICAgICAgICAg
cmV0dXJuOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBXZWJWaWV3OjpzaXplQ2hhbmdlZChj
b25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0U2l6ZShu
ZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAg
IH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAobV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlmCkBAIC01NDgwLDcgKzU0ODAs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAg
ICAgcmV0dXJuIGhyOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RhdGljIGJv
b2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSA9IEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCk7CiAgICAgZW5hYmxl
ZCA9IGVuYWJsZWQgJiYgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZTsKICNlbGlmIFVT
RShESVJFQ1QyRCkKQEAgLTY0ODcsNyArNjQ4Nyw3IEBAIGJvb2wgV2ViVmlldzo6cGFpbnRDb21w
b3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZpY2VDb250ZXh0KQogCiAjaWYgVVNFKENBKQogICAg
IG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCk7Ci0jZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICNlbmRpZgogCkBAIC03MTQ5LDcgKzcxNDks
NyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogICAgIGVsc2UKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7
CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihsYXllcik7CkBAIC03
MTYyLDcgKzcxNjIsNyBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJD
aGFuZ2VzU29vbigpCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29v
bigpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsKQEAg
LTcyMjMsNyArNzIyMyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Zyhib29sIGFjY2VsZXJhdGVkKQogICAgICAgICBtX2JhY2tpbmdMYXllciA9IG51bGxwdHI7CiAg
ICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gZmFsc2U7CiAgICAgfQotI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJhdGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCmluZGV4IGMzZWIwOGM0Mjg4Li5lYmIyM2RhZDc2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBX
ZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsK
IGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
Y2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKIGNsYXNzIFdlYlZp
ZXdHcm91cDsKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgVVNFKENBKQogICAg
IFJlZlB0cjxXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwogICAg
IFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2JhY2tpbmdMYXllcjsKLSNlbGlmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ+IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5k
aWYKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXaW4uY21ha2UKaW5kZXggMDE3YjI2ZDliMDEuLjUxNmE2YjY2YzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dp
bi5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCiAKIGlmICgke1dURl9QTEFU
Rk9STV9XSU5fQ0FJUk99KQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIFBVQkxJ
QyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FD
WV9FTkNSWVBURURfTUVESUEgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5j
bWFrZQppbmRleCA0YWQyYzRiNDIzYS4uMGM1NWY1N2IzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5D
YWlyby5jbWFrZQpAQCAtMjQsNyArMjQsMTEgQEAgZW5kaWYgKCkKIAogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NGIE9O
KQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTIE9OKQor
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVE
IE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCitTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfTklDT1NJQSBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9S
RVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IgT04pCiBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChVU0VfVEVYVFVSRV9NQVBQRVJfR0wgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
TUVESUFfRk9VTkRBVElPTiBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364241</attachid>
            <date>2019-03-11 02:23:47 -0700</date>
            <delta_ts>2019-03-26 00:15:38 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364-11.patch</filename>
            <type>text/plain</type>
            <size>31515</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGIwNTY1YTA5Yzg4Li40ZjYx
M2ZiODg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSwxMSAr
MTEsMjEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCisKKyAgICBwYWdlL3Njcm9sbGlu
Zy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCisKICAgICBwYWdlL3dpbi9GcmFt
ZUNhaXJvV2luLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcApAQCAtNTYsNSArNjYsOCBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBX
ZWJDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHBsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8KKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAppbmRleCA1OWNhMmY2NTBk
MS4uMzVkMmMxY2MzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAgLTY5LDcg
KzY5LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRQb2ludCBwYXJlbnRUb0xvY2FsUG9pbnQoTGF5
b3V0UG9pbnQpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFBvaW50IGxvY2FsVG9Db250ZW50c1Bv
aW50KExheW91dFBvaW50KSBjb25zdCBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlVmlld3BvcnRGb3JDdXJyZW50U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8RmxvYXRSZWN0
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3JvbGxQb3Np
dGlvbihPcHRpb25hbDxGbG9hdFJlY3Q+KSBvdmVycmlkZTsKICAgICBib29sIHNjcm9sbFBvc2l0
aW9uQW5kTGF5b3V0Vmlld3BvcnRNYXRjaChjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgT3B0
aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZUxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVl
QXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXgg
NDBjMGE4OGRhYTIuLjkzNzg5ZmVlN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTkyLDEx
ICs5MiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBGbG9hdFBvaW50IGFkanVzdGVkU2Ny
b2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYsIFNjcm9sbFBvc2l0aW9uQ2xhbXAgPSBTY3Jv
bGxQb3NpdGlvbkNsYW1wOjpUb0NvbnRlbnRFZGdlcykgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY3VycmVudFNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3JvbGxQb3NpdGlvbihPcHRpb25h
bDxGbG9hdFJlY3Q+ID0geyB9KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnRG
b3JDdXJyZW50U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8RmxvYXRSZWN0PiA9IHsgfSkgeyB9CiAg
ICAgdmlydHVhbCBib29sIHNjcm9sbFBvc2l0aW9uQW5kTGF5b3V0Vmlld3BvcnRNYXRjaChjb25z
dCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgT3B0aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZUxheW91
dFZpZXdwb3J0KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXBvc2l0aW9u
U2Nyb2xsaW5nTGF5ZXJzKCkgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJl
cG9zaXRpb25SZWxhdGVkTGF5ZXJzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9zaXRpb25T
Y3JvbGxpbmdMYXllcnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3NpdGlvblJlbGF0ZWRM
YXllcnMoKSB7IH0KIAogICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucyhjb25zdCBGbG9hdFJl
Y3QmIGxheW91dFZpZXdwb3J0LCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNw
bGF5UmVmcmVzaE1vbml0b3IuY3BwCmluZGV4IDc2YTIwODEzYTY1Li5kNWQ0NzY0NzQ2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmgiCiAjZWxpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSAiRGlzcGxh
eVJlZnJlc2hNb25pdG9yR3RrLmgiCisjZWxpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiRGlz
cGxheVJlZnJlc2hNb25pdG9yV2luLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNTIsNiArNTQsOSBAQCBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBEaXNwbGF5UmVm
cmVzaE1vbml0b3I6OmNyZWF0ZURlZmF1bHREaXNwbGF5UmVmcmVzaAogI2VuZGlmCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIHJldHVybiBEaXNwbGF5UmVmcmVzaE1vbml0b3JHdGs6OmNyZWF0ZShk
aXNwbGF5SUQpOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIHJldHVybiBEaXNwbGF5
UmVmcmVzaE1vbml0b3JXaW46OmNyZWF0ZShkaXNwbGF5SUQpOwogI2VuZGlmCiAgICAgVU5VU0VE
X1BBUkFNKGRpc3BsYXlJRCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAppbmRleCBkMjNj
NjA3OTJlYS4uYjBmZDJmMGQ4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcApAQCAtMjExLDcgKzIxMSw2IEBAIHZvaWQg
UGxhdGZvcm1EaXNwbGF5Ojppbml0aWFsaXplRUdMRGlzcGxheSgpCiAKICAgICBlZ2xEaXNwbGF5
cygpLmFkZCh0aGlzKTsKIAotI2lmICFQTEFURk9STShXSU4pCiAgICAgc3RhdGljIGJvb2wgZWds
QXRleGl0SGFuZGxlckluaXRpYWxpemVkID0gZmFsc2U7CiAgICAgaWYgKCFlZ2xBdGV4aXRIYW5k
bGVySW5pdGlhbGl6ZWQpIHsKICAgICAgICAgLy8gRUdMIHJlZ2lzdGVycyBhdGV4aXQgaGFuZGxl
cnMgdG8gY2xlYW51cCBpdHMgZ2xvYmFsIGRpc3BsYXkgbGlzdC4KQEAgLTIyNSw3ICsyMjQsNiBA
QCB2b2lkIFBsYXRmb3JtRGlzcGxheTo6aW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogICAgICAgICBl
Z2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgICAgICBzdGQ6OmF0ZXhpdChz
aHV0RG93bkVnbERpc3BsYXlzKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBQbGF0Zm9ybURp
c3BsYXk6OnRlcm1pbmF0ZUVHTERpc3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2lu
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTM1YTg0NzQyM2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVm
cmVzaE1vbml0b3JXaW4uaCIKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQ
TEFZX01PTklUT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPERpc3BsYXlSZWZy
ZXNoTW9uaXRvcldpbj4gRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpjcmVhdGUoUGxhdGZvcm1E
aXNwbGF5SUQgZGlzcGxheUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbihkaXNwbGF5SUQpKTsKK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9y
V2luOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KQorICAgIDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKKyAgICAsIG1fdGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpkaXNwbGF5
TGlua0ZpcmVkKQoreworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6cmVxdWVz
dFJlZnJlc2hDYWxsYmFjaygpCit7CisgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgbV90aW1lci5zdGFydE9uZVNob3QoMTZfbXMpOworICAgIHNldElzQWN0
aXZlKHRydWUpOworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7
CisgICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHNldElzUHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOworCisgICAgaGFuZGxlRGlzcGxheVJlZnJl
c2hlZE5vdGlmaWNhdGlvbk9uTWFpblRocmVhZCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlf
TU9OSVRPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMWQzNzA1MWQyYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2lu
LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9ESVNQTEFZX01PTklUT1IpCisKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aCIKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbiA6IHB1YmxpYyBEaXNwbGF5UmVmcmVzaE1vbml0
b3IgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2lu
PiBjcmVhdGUoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKTsKKworICAgIHZvaWQgZGlzcGxh
eUxpbmtGaXJlZCgpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygp
IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRv
cldpbihQbGF0Zm9ybURpc3BsYXlJRCk7CisgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheVJlZnJl
c2hNb25pdG9yV2luPiBtX3RpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDdlZDQ2NzE4MTNkLi4yMGJiODVmZDUyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0yNCw2ICsyNCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9T
T1VSQ0VTCiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3Bw
CiAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU5vbmUuY3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcApA
QCAtMTYyLDYgKzE2NCwxMiBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKIAogICAg
ICAgICBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAogCisgICAgICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxv
b3AuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHAKKworICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENv
bnRyb2xsZXIuY3BwCisKICAgICAgICAgU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJv
LmNwcAogCiAgICAgICAgIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3Bw
CkBAIC0xNzEsNiArMTc5LDggQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAg
ICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgICAgICBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAK
KworICAgICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5j
cHAKICAgICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDU1ZDgxZDNlYTA3
Li5lODNjOGVjYWI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRh
dGVTY2VuZVN0YXRlKCkKIAogICAgIC8vIFN0b3JlIGxheWVyIGFuZCBpbXBsIHJlZmVyZW5jZXMg
YWxvbmcgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB1cGRhdGUKICAgICAvLyBmb3IgZWFjaCB0eXBl
IG9mIHBvc3NpYmxlIGxheWVyIGJhY2tpbmcuCi0gICAgc3RydWN0IHsKKyAgICBzdHJ1Y3QgTGF5
ZXJzQnlCYWNraW5nIHsKICAgICAgICAgc3RydWN0IEJhY2tpbmdTdG9yZSB7CiAgICAgICAgICAg
ICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRleHR1cmVNYXBwZXJMYXllcj4gbGF5ZXI7CiAgICAg
ICAgICAgICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsPiBiYWNraW5nU3RvcmU7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUoKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbC5wcm94eSgp
KSwgbGF5ZXJTdGF0ZS5kZWx0YS5jb250ZW50TGF5ZXJDaGFuZ2VkIH0pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChsYXllclN0YXRlLmltYWdlQmFja2luZykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGltcGwgPSBpbWFnZUJhY2tpbmdJbXBsKCpsYXll
clN0YXRlLmltYWdlQmFja2luZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJz
QnlCYWNraW5nLmltYWdlQmFja2luZy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGF5ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5hcHBlbmQ8TGF5ZXJzQnlCYWNraW5nOjpJ
bWFnZUJhY2tpbmc+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVm
KGxheWVyKSwgc3RkOjpyZWYoaW1wbCksIGltcGwudGFrZVVwZGF0ZSgpIH0pOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIu
c2V0Q29udGVudHNMYXllcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZGIxYjM4MTBkZGMuLmU1N2M2ODMx
YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcApAQCAtMTAwLDYgKzEwMCw5IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICNlbmRpZgogI2lmIFBM
QVRGT1JNKFdQRSkKICAgICBlbmNvZGVyIDw8IGhvc3RGaWxlRGVzY3JpcHRvcjsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICBlbmNvZGVyIDw8IG5hdGl2ZVdpbmRvd0hhbmRsZTsKICNl
bmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAg
ICBlbmNvZGVyIDw8IGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwpAQCAtMjg3LDYgKzI5MCwx
MSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisjZW5kaWYKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hcHBsZU1h
aWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CmluZGV4IDk3NmM4ODZmNDMzLi45MWVkYWM3YzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTU4LDYgKzE1OCw5IEBAIHN0
cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdQ
RSkKICAgICBJUEM6OkF0dGFjaG1lbnQgaG9zdEZpbGVEZXNjcmlwdG9yOworI2VuZGlmCisjaWYg
UExBVEZPUk0oV0lOKQorICAgIHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZTsKICNlbmRpZgog
ICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBib29sIGFwcGxl
TWFpbExpbmVzQ2xhbXBFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggNTFmZTVkOWUzYTIuLjUwZTdhYjZmZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcwMDksNiArNzAwOSwxMCBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nl
c3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuaG9zdEZpbGVEZXNjcmlwdG9yID0gcGFnZUNs
aWVudCgpLmhvc3RGaWxlRGVzY3JpcHRvcigpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4p
CisgICAgcGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUgPSByZWludGVycHJldF9jYXN0PHVp
bnQ2NF90Pih2aWV3V2lkZ2V0KCkpOworI2VuZGlmCisKICAgICBmb3IgKGF1dG8mIGl0ZXJhdG9y
IDogbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lKQogICAgICAgICBwYXJhbWV0ZXJzLnVybFNj
aGVtZUhhbmRsZXJzLnNldChpdGVyYXRvci5rZXksIGl0ZXJhdG9yLnZhbHVlLT5pZGVudGlmaWVy
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2Nl
bGVyYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWRTdXJmYWNlLmNwcAppbmRleCBlNTc5YTVkZjNhMC4uYTgwNmRmNzhiNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRT
dXJmYWNlLmNwcApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZh
Y2VXUEUuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkFjY2VsZXJh
dGVkU3VyZmFjZVdpbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU3LDYgKzYxLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
bGVyYXRlZFN1cmZhY2U+IEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBh
Z2UsCiAjaWYgUExBVEZPUk0oV1BFKQogICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXUEUpCiAgICAgICAgIHJl
dHVybiBBY2NlbGVyYXRlZFN1cmZhY2VXUEU6OmNyZWF0ZSh3ZWJQYWdlLCBjbGllbnQpOworI2Vu
ZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXaW5kb3dzKQorICAgICAg
ICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50KTsK
ICNlbmRpZgogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUhvc3QuaAppbmRleCA4ZjI0NjhmOTYxZC4uMzhmM2I3ZmFiZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5kaWREZXN0cm95R0xDb250ZXh0KCk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKQorICAgICAgICB2b2lkIHJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKSBv
dmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9sYXllclRyZWVIb3N0Lm1fc3Vy
ZmFjZSkKICAgICAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QubV9zdXJmYWNlLT5jbGllbnRS
ZXNpemUoc2l6ZSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC5yZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZShi
b29sIGhhc0JlZW5SZXNjaGVkdWxlZCkKKyAgICAgICAgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVz
aE1vbml0b3JVcGRhdGUoYm9vbCBoYXNCZWVuUmVzY2hlZHVsZWQpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5oYW5kbGVEaXNwbGF5UmVmcmVzaE1vbml0
b3JVcGRhdGUoaGFzQmVlblJlc2NoZWR1bGVkKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmZGJiMzgyZjA1YS4uOTEzY2Rk
NjdmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0zNzEsNiArMzcxLDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fdmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I+KCp0aGlzKSkKICNlbGlmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0o
R1RLKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCisjZW5kaWYKKyNpZiBQ
TEFURk9STShXSU4pICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAvLyBPdXIgdmlldydz
IHdpbmRvdyBpbiB0aGUgVUkgcHJvY2Vzcy4KKyAgICAsIG1fbmF0aXZlV2luZG93SGFuZGxlKHBh
cmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlKQogI2VuZGlmCiAgICAgLCBtX3NldENhblN0YXJ0
TWVkaWFUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlOjpzZXRDYW5TdGFydE1l
ZGlhVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiMDA5ODRiMzYzOS4uMzUwNjlkYWM4
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk1
MCw3ICs5NTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaFRvdWNoRXZlbnQoY29uc3Qg
V2ViVG91Y2hFdmVudCYsIGJvb2wmIGhhbmRsZWQpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShH
VEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKICAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGUoKSB7IHJl
dHVybiBtX25hdGl2ZVdpbmRvd0hhbmRsZTsgfQogI2VuZGlmCiAKQEAgLTE2MDUsNyArMTYwNSw3
IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxXZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdD4gbV9h
Y2Nlc3NpYmlsaXR5T2JqZWN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspICYmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKICAgICAvLyBPdXIgdmlldydzIHdpbmRvdyBpbiB0aGUgVUkgcHJvY2Vzcy4KICAgICB1
aW50NjRfdCBtX25hdGl2ZVdpbmRvd0hhbmRsZSB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRT
dXJmYWNlV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGU1
MTBjN2VmMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKworI2luY2x1ZGUg
IldlYlBhZ2UuaCIKKyNpbmNsdWRlIDxlZ2wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RGlzcGxheVdpbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPiBBY2NlbGVyYXRl
ZFN1cmZhY2VXaW46OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBDbGllbnQmIGNsaWVudCkKK3sK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4obmV3IEFj
Y2VsZXJhdGVkU3VyZmFjZVdpbih3ZWJQYWdlLCBjbGllbnQpKTsKK30KKworQWNjZWxlcmF0ZWRT
dXJmYWNlV2luOjpBY2NlbGVyYXRlZFN1cmZhY2VXaW4oV2ViUGFnZSYgd2ViUGFnZSwgQ2xpZW50
JiBjbGllbnQpCisgICAgOiBBY2NlbGVyYXRlZFN1cmZhY2Uod2ViUGFnZSwgY2xpZW50KQorewor
fQorCitBY2NlbGVyYXRlZFN1cmZhY2VXaW46On5BY2NlbGVyYXRlZFN1cmZhY2VXaW4oKQorewor
fQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6aW5pdGlhbGl6ZSgpCit7Cit9CisKK3Zv
aWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpmaW5hbGl6ZSgpCit7Cit9CisKK3VpbnQ2NF90IEFj
Y2VsZXJhdGVkU3VyZmFjZVdpbjo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQ
YWdlLm5hdGl2ZVdpbmRvd0hhbmRsZSgpOworfQorCit1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZh
Y2VXaW46OnN1cmZhY2VJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQo
KTsKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OndpbGxSZW5kZXJGcmFtZSgpCit7
Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpkaWRSZW5kZXJGcmFtZSgpCit7Cisg
ICAgLy8gRklYTUU6IGZyYW1lQ29tcGxldGUoKSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGZy
YW1lIHdhcyBhY3R1YWxseSByZW5kZXJlZCBpbiB0aGUgc2NyZWVuLgorICAgIG1fY2xpZW50LmZy
YW1lQ29tcGxldGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJm
YWNlV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNmMWZkN2U5
M2YzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
d2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBQTEFURk9STShXSU4pCisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEFjY2VsZXJhdGVkU3Vy
ZmFjZVdpbiBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZVdpbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJm
YWNlV2luPiBjcmVhdGUoV2ViUGFnZSYsIENsaWVudCYpOworICAgIH5BY2NlbGVyYXRlZFN1cmZh
Y2VXaW4oKTsKKworICAgIHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIHVp
bnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBpbml0aWFsaXpl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgd2ls
bFJlbmRlckZyYW1lKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZW5kZXJGcmFtZSgpIG92ZXJy
aWRlOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkU3VyZmFjZVdpbihXZWJQYWdlJiwgQ2xp
ZW50Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JN
KFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vz
c01haW5XaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFp
bldpbi5jcHAKaW5kZXggZmMzN2JmYWM5YWUuLjAyN2JjNmM4MmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcApAQCAtMzYsNiAr
MzYsNyBAQCBjbGFzcyBXZWJQcm9jZXNzTWFpbiBmaW5hbCA6IHB1YmxpYyBBdXhpbGlhcnlQcm9j
ZXNzTWFpbkJhc2UgewogcHVibGljOgogICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCkgb3Zl
cnJpZGUKICAgICB7CisgICAgICAgIFNldFByb2Nlc3NEUElBd2FyZSgpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQuY3BwCmluZGV4IGE1MmIxMjBhYmIyLi5hMDlmYzA0YWRiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAj
aW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIKIAotI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKQEAgLTQxNCw0ICs0MTQs
NCBAQCBmbG9hdCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZGV2aWNlU2NhbGVGYWN0
b3IoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlZpZXcuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIH0K
IAotI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbmRpZiAvLyBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCA2YmIzMzRkNDQxZC4uMzM3NGQ2YWE0
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaApAQCAtMjYs
NyArMjYsNyBAQAogI2lmbmRlZiBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCiAjZGVm
aW5lIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKIAotI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR0xDb250ZXh0Lmg+CkBAIC05OSw2ICs5OSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
cHBseURldmljZVNjYWxlRmFjdG9yKCk7CiB9OwogCi0jZW5kaWYgLy8gVEVYVFVSRV9NQVBQRVJf
R0wKKyNlbmRpZiAvLyBURVhUVVJFX01BUFBFUl9HTCAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQogCiAjZW5kaWYgLy8gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA2ZjdiZTEyMDBmZC4uZjVkMzFmN2Q2YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAKICNpZiBV
U0UoQ0EpCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUNGTGF5ZXJUcmVlSG9zdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIKICNlbmRpZgog
CkBAIC05MjEsNyArOTIxLDcgQEAgdm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkp
IHsKICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJ
blJlY3QoZGlydHlSZWN0KTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAg
ICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0Tm9uQ29tcG9zaXRlZENvbnRl
bnRzTmVlZERpc3BsYXkoZGlydHlSZWN0KTsKICNlbmRpZgogICAgICAgICByZXR1cm47CkBAIC05
OTMsNyArOTkzLDcgQEAgdm9pZCBXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3RvcmUoRnJhbWVWaWV3
KiBmcmFtZVZpZXcsIGludCBsb2dpY2FsRHgsIGludCBsb2dpY2EKICAgICAgICAgLy8gYW55IG5l
d2x5LWV4cG9zZWQgdGlsZXMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzUyNzE0PgogI2lmIFVTRShD
QSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChzY3JvbGxW
aWV3UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIG1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhz
Y3JvbGxWaWV3UmVjdCwgSW50U2l6ZShkeCwgZHkpKTsKICNlbmRpZgogICAgICAgICByZXR1cm47
CkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIFdlYlZpZXc6OnNpemVDaGFuZ2VkKGNvbnN0IElu
dFNpemUmIG5ld1NpemUpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXRTaXplKG5ld1NpemUp
OwogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQotI2Vs
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0KQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5y
ZXNpemVSb290TGF5ZXIobmV3U2l6ZSk7CiAjZW5kaWYKQEAgLTU0NzgsNyArNTQ3OCw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKICAgICBociA9IHByZWZzUHJpdmF0ZS0+YWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1
cm4gaHI7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBzdGF0aWMgYm9vbCBhY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlID0gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKTsKICAgICBlbmFibGVkID0gZW5h
YmxlZCAmJiBhY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlOwogI2VsaWYgVVNFKERJUkVD
VDJEKQpAQCAtNjQ4NSw3ICs2NDg1LDcgQEAgYm9vbCBXZWJWaWV3OjpwYWludENvbXBvc2l0ZWRD
b250ZW50VG9IREMoSERDIGRldmljZUNvbnRleHQpCiAKICNpZiBVU0UoQ0EpCiAgICAgbV9sYXll
clRyZWVIb3N0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3coKTsKLSNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5m
bHVzaEFuZFJlbmRlckxheWVycygpOwogI2VuZGlmCiAKQEAgLTcxNDcsNyArNzE0Nyw3IEBAIHZv
aWQgV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAg
ZWxzZQogICAgICAgICBtX2JhY2tpbmdMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotI2Vs
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQtPnNldFJvb3RDb21wb3NpdGluZ0xheWVyKGxheWVyKTsKQEAgLTcxNjIsNyAr
NzE2Miw3IEBAIHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNT
b29uKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNo
UGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogICAgIGlmICghbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsKQEAgLTcyMjMsNyArNzIyMyw3IEBAIHZvaWQgV2Vi
Vmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogICAgICAg
ICBtX2JhY2tpbmdMYXllciA9IG51bGxwdHI7CiAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nID0gZmFsc2U7CiAgICAgfQotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2Vs
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
ICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkK
ICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJhdGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5o
CmluZGV4IGMzZWIwOGM0Mjg4Li5lYmIyM2RhZDc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBX
ZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsK
LSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogY2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ7CiAjZW5kaWYKIGNsYXNzIFdlYlZpZXdHcm91cDsKQEAgLTcwNiw3ICs3MDYsNyBA
QCBwcm90ZWN0ZWQ6CiAjaWYgVVNFKENBKQogICAgIFJlZlB0cjxXZWJDb3JlOjpDQUNGTGF5ZXJU
cmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0xh
eWVyPiBtX2JhY2tpbmdMYXllcjsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+IG1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKICAgICBib29sIG1faXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
V2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXggNjFmYTQ4NWIy
NWQuLmFhZWU0MjQxNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpAQCAtNzcsNiArNzcsNyBAQCBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0NSWVBUTyBQUklWQVRF
IE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKFVTRV9TWVNURU1fTUFMTE9D
IFBSSVZBVEUgT04pCiAKIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQorICAgIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFU
RSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZ
X0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEgUFVCTElDIE9G
RikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5UTCBQVUJM
SUMgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlIGIv
U291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQppbmRleCA0YWQyYzRiNDIzYS4uMGM1
NWY1N2IzZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UK
KysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpAQCAtMjQsNyArMjQsMTEg
QEAgZW5kaWYgKCkKIAogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NGIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
VVNFX0NPT1JESU5BVEVEX0dSQVBISUNTIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNF
X0NPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX0NVUkwgT04pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTklDT1NJQSBPTikK
K1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQ
TEFZX01PTklUT1IgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQ
RVIgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVJfR0wgT04p
CiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTUVESUFfRk9VTkRBVElPTiBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365947</attachid>
            <date>2019-03-25 23:00:03 -0700</date>
            <delta_ts>2019-03-25 23:00:19 -0700</delta_ts>
            <desc>Synchronous RunLoop::TimerBase::stop patch</desc>
            <filename>runloop-timer-sync.patch</filename>
            <type>text/plain</type>
            <size>2290</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1NvdXJjZS9XVEYvd3RmL1J1
bkxvb3AuaAppbmRleCBkNjE1ZTA3NDBlYy4uNmRmZDNlOGQ3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5j
dGlvbkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
Lmg+CkBAIC0xNzIsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICBMUkVTVUxUIHduZFByb2MoSFdO
RCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pOwogICAg
IEhXTkQgbV9ydW5Mb29wTWVzc2FnZVdpbmRvdzsKIAotICAgIExvY2sgbV9sb29wTG9jazsKKyAg
ICBSZWN1cnNpdmVMb2NrIG1fbG9vcExvY2s7CiAjZWxpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkK
ICAgICBzdGF0aWMgdm9pZCBwZXJmb3JtV29yayh2b2lkKik7CiAgICAgUmV0YWluUHRyPENGUnVu
TG9vcFJlZj4gbV9ydW5Mb29wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1J1bkxv
b3BXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCmluZGV4IDY3MDkx
NGJmZTE2Li5lZDZiOWZkMmY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1J1bkxv
b3BXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2luLmNwcApAQCAtMTI0
LDkgKzEyNCw4IEBAIHZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKIAogdm9pZCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnRpbWVyRmlyZWQoKQogeworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9ydW5M
b29wLT5tX2xvb3BMb2NrKTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcnVu
TG9vcC0+bV9sb29wTG9jayk7Ci0KICAgICAgICAgaWYgKCFtX2lzQWN0aXZlKQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNTIsNyArMTUxLDcgQEAgUnVuTG9vcDo6VGltZXJCYXNlOjp+VGlt
ZXJCYXNlKCkKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgbmV4dEZp
cmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9ydW5M
b29wLT5tX2xvb3BMb2NrKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcnVuTG9vcC0+
bV9sb29wTG9jayk7CiAgICAgbV9pc1JlcGVhdGluZyA9IHJlcGVhdDsKICAgICBtX2lzQWN0aXZl
ID0gdHJ1ZTsKICAgICBtX2ludGVydmFsID0gbmV4dEZpcmVJbnRlcnZhbDsKQEAgLTE2Miw3ICsx
NjEsNyBAQCB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0RmlyZUlu
dGVydmFsLCBib29sIHJlcGVhdCkKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQog
ewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcnVuTG9vcC0+bV9sb29wTG9jayk7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3J1bkxvb3AtPm1fbG9vcExvY2spOwogICAgIGlmICghaXNB
Y3RpdmUobG9ja2VyKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzcsMTMgKzE3NiwxMyBAQCBi
b29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBj
b25zdAogCiBib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fcnVuTG9vcC0+bV9sb29wTG9jayk7CisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3J1bkxvb3AtPm1fbG9vcExvY2spOwogICAgIHJldHVybiBpc0FjdGl2
ZShsb2NrZXIpOwogfQogCiBTZWNvbmRzIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c2Vjb25kc1VudGls
RmlyZSgpIGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9ydW5Mb29wLT5tX2xvb3BM
b2NrKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcnVuTG9vcC0+bV9sb29wTG9jayk7
CiAgICAgaWYgKGlzQWN0aXZlKGxvY2tlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om1heDxTZWNv
bmRzPihtX25leHRGaXJlRGF0ZSAtIE1vbm90b25pY1RpbWU6Om5vdygpLCAwX3MpOwogICAgIHJl
dHVybiAwX3M7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365949</attachid>
            <date>2019-03-26 00:14:05 -0700</date>
            <delta_ts>2019-05-12 20:17:46 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug186364-12.patch</filename>
            <type>text/plain</type>
            <size>32362</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGIwNTY1YTA5Yzg4Li40ZjYx
M2ZiODg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSwxMSAr
MTEsMjEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiApCiAKIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCisKKyAgICBwYWdlL3Njcm9sbGlu
Zy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCisKICAgICBwYWdlL3dpbi9GcmFt
ZUNhaXJvV2luLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAorICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcApAQCAtNTYsNSArNjYsOCBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSSUVTCiBsaXN0KEFQUEVORCBX
ZWJDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESVJFQ1RPUklFUwogICAgIHBsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8KKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAppbmRleCA1OWNhMmY2NTBk
MS4uMzVkMmMxY2MzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAgLTY5LDcg
KzY5LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRQb2ludCBwYXJlbnRUb0xvY2FsUG9pbnQoTGF5
b3V0UG9pbnQpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFBvaW50IGxvY2FsVG9Db250ZW50c1Bv
aW50KExheW91dFBvaW50KSBjb25zdCBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlVmlld3BvcnRGb3JDdXJyZW50U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8RmxvYXRSZWN0
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3JvbGxQb3Np
dGlvbihPcHRpb25hbDxGbG9hdFJlY3Q+KSBvdmVycmlkZTsKICAgICBib29sIHNjcm9sbFBvc2l0
aW9uQW5kTGF5b3V0Vmlld3BvcnRNYXRjaChjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgT3B0
aW9uYWw8RmxvYXRSZWN0PiBvdmVycmlkZUxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVl
QXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXgg
NjNiZTk2MDBjM2EuLjc4ODZmZTg3ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTEwMCwx
MSArMTAwLDExIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgYWRqdXN0ZWRT
Y3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgU2Nyb2xsUG9zaXRpb25DbGFtcCA9IFNj
cm9sbFBvc2l0aW9uQ2xhbXA6OlRvQ29udGVudEVkZ2VzKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBjdXJyZW50U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0Rm9yQ3VycmVudFNjcm9sbFBvc2l0aW9uKE9wdGlv
bmFsPEZsb2F0UmVjdD4gPSB7IH0pIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9y
dEZvckN1cnJlbnRTY3JvbGxQb3NpdGlvbihPcHRpb25hbDxGbG9hdFJlY3Q+ID0geyB9KSB7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsUG9zaXRpb25BbmRMYXlvdXRWaWV3cG9ydE1hdGNoKGNv
bnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBPcHRpb25hbDxGbG9hdFJlY3Q+IG92ZXJyaWRlTGF5
b3V0Vmlld3BvcnQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJlcG9zaXRp
b25TY3JvbGxpbmdMYXllcnMoKSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
cmVwb3NpdGlvblJlbGF0ZWRMYXllcnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3NpdGlv
blNjcm9sbGluZ0xheWVycygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvc2l0aW9uUmVsYXRl
ZExheWVycygpIHsgfQogCiAgICAgdm9pZCBhcHBseUxheWVyUG9zaXRpb25zKGNvbnN0IEZsb2F0
UmVjdCYgbGF5b3V0Vmlld3BvcnQsIEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggNzZhMjA4MTNhNjUuLmQ1ZDQ3NjQ3NDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvci5jcHAKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJEaXNwbGF5
UmVmcmVzaE1vbml0b3JNYWMuaCIKICNlbGlmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlICJEaXNw
bGF5UmVmcmVzaE1vbml0b3JHdGsuaCIKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJE
aXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC01Miw2ICs1NCw5IEBAIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6Y3JlYXRlRGVmYXVsdERpc3BsYXlSZWZyZXNoCiAjZW5kaWYKICNpZiBQ
TEFURk9STShHVEspCiAgICAgcmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6Y3JlYXRl
KGRpc3BsYXlJRCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgcmV0dXJuIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcldpbjo6Y3JlYXRlKGRpc3BsYXlJRCk7CiAjZW5kaWYKICAgICBVTlVT
RURfUEFSQU0oZGlzcGxheUlEKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4IGQy
M2M2MDc5MmVhLi5iMGZkMmYwZDhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC0yMTEsNyArMjExLDYgQEAgdm9p
ZCBQbGF0Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkKIAogICAgIGVnbERpc3Bs
YXlzKCkuYWRkKHRoaXMpOwogCi0jaWYgIVBMQVRGT1JNKFdJTikKICAgICBzdGF0aWMgYm9vbCBl
Z2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBpZiAoIWVnbEF0ZXhpdEhh
bmRsZXJJbml0aWFsaXplZCkgewogICAgICAgICAvLyBFR0wgcmVnaXN0ZXJzIGF0ZXhpdCBoYW5k
bGVycyB0byBjbGVhbnVwIGl0cyBnbG9iYWwgZGlzcGxheSBsaXN0LgpAQCAtMjI1LDcgKzIyNCw2
IEBAIHZvaWQgUGxhdGZvcm1EaXNwbGF5Ojppbml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAgICAg
IGVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgIHN0ZDo6YXRleGl0
KHNodXREb3duRWdsRGlzcGxheXMpOwogICAgIH0KLSNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3Jt
RGlzcGxheTo6dGVybWluYXRlRUdMRGlzcGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JX
aW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMzVhODQ3NDIz
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbi5oIgorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJ
U1BMQVlfTU9OSVRPUikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8RGlzcGxheVJl
ZnJlc2hNb25pdG9yV2luPiBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OmNyZWF0ZShQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxh
eVJlZnJlc2hNb25pdG9yV2luKGRpc3BsYXlJRCkpOworfQorCitEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW46OkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQpCisgICAgOiBEaXNwbGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQorICAgICwgbV90aW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OmRpc3Bs
YXlMaW5rRmlyZWQpCit7Cit9CisKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpyZXF1
ZXN0UmVmcmVzaENhbGxiYWNrKCkKK3sKKyAgICBpZiAoIWlzQWN0aXZlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgxNl9tcyk7CisgICAgc2V0SXNB
Y3RpdmUodHJ1ZSk7CisgICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpkaXNwbGF5TGlua0ZpcmVkKCkK
K3sKKyAgICBpZiAoIWlzUHJldmlvdXNGcmFtZURvbmUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9uZShmYWxzZSk7CisKKyAgICBoYW5kbGVEaXNwbGF5UmVm
cmVzaGVkTm90aWZpY2F0aW9uT25NYWluVGhyZWFkKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExB
WV9NT05JVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZDM3MDUxZDJjNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JX
aW4uaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKKworI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luIDogcHVibGljIERpc3BsYXlSZWZyZXNoTW9u
aXRvciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JX
aW4+IGNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpOworCisgICAgdm9pZCBkaXNw
bGF5TGlua0ZpcmVkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNr
KCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25p
dG9yV2luKFBsYXRmb3JtRGlzcGxheUlEKTsKKyAgICBSdW5Mb29wOjpUaW1lcjxEaXNwbGF5UmVm
cmVzaE1vbml0b3JXaW4+IG1fdGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggN2VkNDY3MTgxM2QuLjIwYmI4NWZkNTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTI0LDYgKzI0LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0
X1NPVVJDRVMKIAogICAgIFNoYXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJbmZvQ3VybC5j
cHAKIAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAKKwogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9k
dWxlTm9uZS5jcHAKIAogICAgIFNoYXJlZC93aW4vQXV4aWxpYXJ5UHJvY2Vzc01haW5XaW4uY3Bw
CkBAIC0xNjIsNiArMTY0LDEyIEBAIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogCiAg
ICAgICAgIFNoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKKyAgICAgICAgU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVu
TG9vcC5jcHAKKyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcAorCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1NpbXBsZVZpZXdwb3J0
Q29udHJvbGxlci5jcHAKKwogICAgICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwCiAKICAgICAgICAgU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5j
cHAKQEAgLTE3MSw2ICsxNzksOCBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKICAg
ICAgICAgVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCiAgICAgICAgIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cAorCisgICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
LmNwcAogICAgICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggZWI2YWY5ODA2
MjQuLmJlYjcyZmNhM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVw
ZGF0ZVNjZW5lU3RhdGUoKQogCiAgICAgLy8gU3RvcmUgbGF5ZXIgYW5kIGltcGwgcmVmZXJlbmNl
cyBhbG9uZyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHVwZGF0ZQogICAgIC8vIGZvciBlYWNoIHR5
cGUgb2YgcG9zc2libGUgbGF5ZXIgYmFja2luZy4KLSAgICBzdHJ1Y3QgeworICAgIHN0cnVjdCBM
YXllcnNCeUJhY2tpbmcgewogICAgICAgICBzdHJ1Y3QgQmFja2luZ1N0b3JlIHsKICAgICAgICAg
ICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VGV4dHVyZU1hcHBlckxheWVyPiBsYXllcjsKICAg
ICAgICAgICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Tmljb3NpYTo6QmFja2luZ1N0b3JlVGV4
dHVyZU1hcHBlckltcGw+IGJhY2tpbmdTdG9yZTsKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgc3RkOjpyZWYobGF5ZXIpLCBzdGQ6OnJlZihpbXBsLnByb3h5
KCkpLCBsYXllclN0YXRlLmRlbHRhLmNvbnRlbnRMYXllckNoYW5nZWQgfSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxheWVyU3RhdGUuaW1hZ2VCYWNraW5nKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgaW1wbCA9IGltYWdlQmFja2luZ0ltcGwoKmxh
eWVyU3RhdGUuaW1hZ2VCYWNraW5nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXll
cnNCeUJhY2tpbmcuaW1hZ2VCYWNraW5nLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsYXllcnNCeUJhY2tpbmcuaW1hZ2VCYWNraW5nLmFwcGVuZDxMYXllcnNCeUJhY2tpbmc6
OkltYWdlQmFja2luZz4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RkOjpy
ZWYobGF5ZXIpLCBzdGQ6OnJlZihpbXBsKSwgaW1wbC50YWtlVXBkYXRlKCkgfSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXll
ci5zZXRDb250ZW50c0xheWVyKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21w
b3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggN2RkN2Y2ZDk0MDcu
Ljc3ZjM0ZTVkZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFRocmVh
ZGVkQ29tcG9zaXRvcjo6Zm9yY2VSZXBhaW50KCkKIHsKICAgICAvLyBGSVhNRTogRW5hYmxlIHRo
aXMgZm9yIFdQRSBvbmNlIGl0J3MgcG9zc2libGUgdG8gZG8gdGhlc2UgZm9yY2VkIHVwZGF0ZXMK
ICAgICAvLyBpbiBhIHdheSB0aGF0IGRvZXNuJ3Qgc3RhcnZlIG91dCB0aGUgdW5kZXJseWluZyBn
cmFwaGljcyBidWZmZXJzLgotI2lmIFBMQVRGT1JNKEdUSykKKyNpZiAhUExBVEZPUk0oV1BFKQog
ICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFu
Z2UobV9pbkZvcmNlUmVwYWludCwgdHJ1ZSk7CiAgICAgICAgIHJlbmRlckxheWVyVHJlZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCA1OTA1NzQ1NTI5Yy4uYmE5MjdkMmEyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xMDAsNiArMTAwLDkg
QEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogI2VuZGlmCiAjaWYgUExBVEZPUk0oV1BFKQogICAgIGVuY29kZXIgPDwg
aG9zdEZpbGVEZXNjcmlwdG9yOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGVuY29k
ZXIgPDwgbmF0aXZlV2luZG93SGFuZGxlOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBhcHBsZU1h
aWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsTGluZXND
bGFtcEVuYWJsZWQ7CkBAIC0yODcsNiArMjkwLDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJ
TikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxl
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggOTc2Yzg4NmY0MzMuLjkxZWRhYzdj
MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCkBAIC0xNTgsNiArMTU4LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMgewogI2VuZGlmCiAjaWYgUExBVEZPUk0oV1BFKQogICAgIElQQzo6QXR0YWNobWVudCBob3N0
RmlsZURlc2NyaXB0b3I7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgdWludDY0X3Qg
bmF0aXZlV2luZG93SGFuZGxlOwogI2VuZGlmCiAgICAgYm9vbCBhcHBsZU1haWxQYWdpbmF0aW9u
UXVpcmtFbmFibGVkOwogICAgIGJvb2wgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzNjJlOTg0MmZlYS4uMWEz
YzVjMTJkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NzA1MSw2ICs3MDUxLDEwIEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5
OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVy
cy5ob3N0RmlsZURlc2NyaXB0b3IgPSBwYWdlQ2xpZW50KCkuaG9zdEZpbGVEZXNjcmlwdG9yKCk7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRv
d0hhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHZpZXdXaWRnZXQoKSk7CisjZW5k
aWYKKwogICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hl
bWUpCiAgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMuc2V0KGl0ZXJhdG9yLmtl
eSwgaXRlcmF0b3IudmFsdWUtPmlkZW50aWZpZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCmluZGV4IGU1
NzlhNWRmM2EwLi5hODA2ZGY3OGI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCkBAIC00MSw2ICs0MSwxMCBA
QAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdQRS5oIgogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShXSU4pCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTcsNiAr
NjEsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gQWNjZWxlcmF0ZWRT
dXJmYWNlOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwKICNpZiBQTEFURk9STShXUEUpCiAgICAg
aWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURp
c3BsYXk6OlR5cGU6OldQRSkKICAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdQRTo6
Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAg
aWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURp
c3BsYXk6OlR5cGU6OldpbmRvd3MpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VX
aW46OmNyZWF0ZSh3ZWJQYWdlLCBjbGllbnQpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDhmMjQ2OGY5
NjFkLi4zOGYzYjdmYWJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0
LmgKQEAgLTEzNyw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9sYXllclRyZWVI
b3N0LmRpZERlc3Ryb3lHTENvbnRleHQoKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVz
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCisgICAgICAgIHZvaWQgcmVzaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmIChtX2xheWVyVHJlZUhvc3QubV9zdXJmYWNlKQogICAgICAgICAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC5tX3N1cmZhY2UtPmNsaWVudFJlc2l6ZShzaXplKTsKQEAgLTE1OCw3ICsxNTgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LnJlcXVlc3REaXNwbGF5
UmVmcmVzaE1vbml0b3JVcGRhdGUoKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgaGFuZGxl
RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKGJvb2wgaGFzQmVlblJlc2NoZWR1bGVkKQorICAg
ICAgICB2b2lkIGhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZShib29sIGhhc0JlZW5S
ZXNjaGVkdWxlZCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgbV9sYXllclRyZWVI
b3N0LmhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZShoYXNCZWVuUmVzY2hlZHVsZWQp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGE3Y2YxOGU2ZWVkLi40MmExODJiYjZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3OCw2ICszNzgsMTAgQEAgV2ViUGFn
ZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQogI2VsaWYgSEFW
RShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShHVEspCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlP
YmplY3QobnVsbHB0cikKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKQorICAgIC8vIE91ciB2aWV3J3Mgd2luZG93IGluIHRoZSBVSSBwcm9jZXNzLgor
ICAgICwgbV9uYXRpdmVXaW5kb3dIYW5kbGUocGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUp
CiAjZW5kaWYKICAgICAsIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJldlYlBhZ2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVkKQogI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDgxYjY5MmM2ZmQ4Li4xOGY3ZmM3NjVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTU3LDcgKzk1Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpc3BhdGNoVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYgaGFuZGxl
ZCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHVpbnQ2
NF90IG5hdGl2ZVdpbmRvd0hhbmRsZSgpIHsgcmV0dXJuIG1fbmF0aXZlV2luZG93SGFuZGxlOyB9
CiAjZW5kaWYKIApAQCAtMTYzNyw3ICsxNjM3LDcgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPFdl
YlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX2FjY2Vzc2liaWxpdHlPYmplY3Q7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFBMQVRG
T1JNKFdJTikgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIC8vIE91ciB2aWV3J3Mgd2lu
ZG93IGluIHRoZSBVSSBwcm9jZXNzLgogICAgIHVpbnQ2NF90IG1fbmF0aXZlV2luZG93SGFuZGxl
IHsgMCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44ZTUxMGM3ZWYxNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VX
aW4uY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJh
dGVkU3VyZmFjZVdpbi5oIgorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgPGVnbC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5V2luLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2Nl
bGVyYXRlZFN1cmZhY2VXaW4+IEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKFdlYlBhZ2Um
IHdlYlBhZ2UsIENsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZWxlcmF0ZWRTdXJmYWNlV2luPihuZXcgQWNjZWxlcmF0ZWRTdXJmYWNlV2luKHdlYlBhZ2Us
IGNsaWVudCkpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VXaW46OkFjY2VsZXJhdGVkU3VyZmFj
ZVdpbihXZWJQYWdlJiB3ZWJQYWdlLCBDbGllbnQmIGNsaWVudCkKKyAgICA6IEFjY2VsZXJhdGVk
U3VyZmFjZSh3ZWJQYWdlLCBjbGllbnQpCit7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdpbjo6
fkFjY2VsZXJhdGVkU3VyZmFjZVdpbigpCit7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNl
V2luOjppbml0aWFsaXplKCkKK3sKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmZp
bmFsaXplKCkKK3sKK30KKwordWludDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp3aW5kb3co
KSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2UubmF0aXZlV2luZG93SGFuZGxlKCk7Cit9
CisKK3VpbnQ2NF90IEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6c3VyZmFjZUlEKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkU3Vy
ZmFjZVdpbjo6d2lsbFJlbmRlckZyYW1lKCkKK3sKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZh
Y2VXaW46OmRpZFJlbmRlckZyYW1lKCkKK3sKKyAgICAvLyBGSVhNRTogZnJhbWVDb21wbGV0ZSgp
IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZnJhbWUgd2FzIGFjdHVhbGx5IHJlbmRlcmVkIGlu
IHRoZSBzY3JlZW4uCisgICAgbV9jbGllbnQuZnJhbWVDb21wbGV0ZSgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uY2YxZmQ3ZTkzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKFdJTikKKworI2luY2x1ZGUg
IkFjY2VsZXJhdGVkU3VyZmFjZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UGFnZTsKKworY2xhc3MgQWNjZWxlcmF0ZWRTdXJmYWNlV2luIGZpbmFsIDogcHVibGljIEFjY2Vs
ZXJhdGVkU3VyZmFjZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJm
YWNlV2luKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXaW4+IGNyZWF0ZShXZWJQYWdlJiwgQ2xp
ZW50Jik7CisgICAgfkFjY2VsZXJhdGVkU3VyZmFjZVdpbigpOworCisgICAgdWludDY0X3Qgd2lu
ZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmFs
aXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsUmVuZGVyRnJhbWUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlbmRlckZyYW1lKCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgQWNjZWxl
cmF0ZWRTdXJmYWNlV2luKFdlYlBhZ2UmLCBDbGllbnQmKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcAppbmRleCBmYzM3YmZhYzlhZS4u
MDI3YmM2YzgyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc01haW5XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc01haW5XaW4uY3BwCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIFdlYlByb2Nlc3NNYWlu
IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NNYWluQmFzZSB7CiBwdWJsaWM6CiAgICAg
Ym9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgU2V0UHJv
Y2Vzc0RQSUF3YXJlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKaW5kZXggYWU0N2UzMDU4NzYu
LjE4ZDA4MGQxYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5oIgogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUg
IldlYlZpZXcuaCIKIApAQCAtNDE0LDQgKzQxNCw0IEBAIGZsb2F0IEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2Vi
Vmlldy5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5o
CmluZGV4IDZiYjMzNGQ0NDFkLi4zMzc0ZDZhYTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKICNkZWZpbmUgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHRfaAogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgPFdlYkNv
cmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KQEAgLTk5LDYg
Kzk5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoKTsKIH07
CiAKLSNlbmRpZiAvLyBURVhUVVJFX01BUFBFUl9HTAorI2VuZGlmIC8vIFRFWFRVUkVfTUFQUEVS
X0dMICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNlbmRpZiAvLyBBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4
IDI3MjM2YmIyODNiLi42YzNhNzEzNTAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKQEAgLTE5Nyw3ICsxOTcsNyBAQAogI2lmIFVTRShDQSkKICNpbmNsdWRlIDxXZWJDb3JlL0NB
Q0ZMYXllclRyZWVIb3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4K
LSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5oIgogI2VuZGlmCiAKQEAgLTkxOSw3ICs5MTksNyBAQCB2b2lkIFdl
YlZpZXc6OmFkZFRvRGlydHlSZWdpb24oY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogICAgIGlm
IChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewogI2lmIFVTRShDQSkKICAgICAgICAgbV9i
YWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChkaXJ0eVJlY3QpOwotI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LT5zZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShkaXJ0eVJlY3QpOwog
I2VuZGlmCiAgICAgICAgIHJldHVybjsKQEAgLTk5MSw3ICs5OTEsNyBAQCB2b2lkIFdlYlZpZXc6
OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgaW50IGxvZ2ljYWxEeCwg
aW50IGxvZ2ljYQogICAgICAgICAvLyBhbnkgbmV3bHktZXhwb3NlZCB0aWxlcy4gPGh0dHA6Ly93
ZWJraXQub3JnL2IvNTI3MTQ+CiAjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKLSNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+
c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNjcm9sbFZpZXdSZWN0LCBJbnRTaXplKGR4LCBk
eSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKQEAgLTEwNjksNyArMTA2OSw3IEBAIHZvaWQg
V2ViVmlldzo6c2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAgbV9i
YWNraW5nTGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisj
ZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgaWYgKG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJlc2l6ZVJvb3RMYXllcihuZXdTaXplKTsKICNl
bmRpZgpAQCAtNTQ3OCw3ICs1NDc4LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJl
bmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgIGhyID0gcHJl
ZnNQcml2YXRlLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAg
aWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgIHN0YXRpYyBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUg
PSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2
YWlsYWJsZSgpOwogICAgIGVuYWJsZWQgPSBlbmFibGVkICYmIGFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBdmFpbGFibGU7CiAjZWxpZiBVU0UoRElSRUNUMkQpCkBAIC02NDg1LDcgKzY0ODUsNyBAQCBi
b29sIFdlYlZpZXc6OnBhaW50Q29tcG9zaXRlZENvbnRlbnRUb0hEQyhIREMgZGV2aWNlQ29udGV4
dCkKIAogI2lmIFVTRShDQSkKICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlc05vdygpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIG1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7CiAjZW5k
aWYKIApAQCAtNzE0NSw3ICs3MTQ1LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRSb290Q2hpbGRMYXll
cihHcmFwaGljc0xheWVyKiBsYXllcikKICAgICBlbHNlCiAgICAgICAgIG1fYmFja2luZ0xheWVy
LT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCi0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisj
ZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgaWYgKCFtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQogICAgICAgICByZXR1
cm47CiAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0Um9vdENvbXBvc2l0
aW5nTGF5ZXIobGF5ZXIpOwpAQCAtNzE1OCw3ICs3MTU4LDcgQEAgdm9pZCBXZWJWaWV3OjpmbHVz
aFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKQogICAgIGlmICghbV9sYXllclRyZWVI
b3N0KQogICAgICAgICByZXR1cm47CiAgICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdH
cmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICAgICBpZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaFBlbmRpbmdM
YXllckNoYW5nZXNTb29uKCk7CkBAIC03MjE5LDcgKzcyMTksNyBAQCB2b2lkIFdlYlZpZXc6OnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICAgICAgbV9iYWNr
aW5nTGF5ZXIgPSBudWxscHRyOwogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9
IGZhbHNlOwogICAgIH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAo
YWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAg
IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmcgPSBhY2NlbGVyYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCBj
M2ViMDhjNDI4OC4uZWJiMjNkYWQ3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAg
LTY4LDcgKzY4LDcgQEAgY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2ViRnJhbWU7
CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci0jaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIGNsYXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OwogI2VuZGlmCiBjbGFzcyBXZWJWaWV3R3JvdXA7CkBAIC03MDYsNyArNzA2LDcgQEAgcHJvdGVj
dGVkOgogI2lmIFVTRShDQSkKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q+
IG1fbGF5ZXJUcmVlSG9zdDsKICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9i
YWNraW5nTGF5ZXI7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiBtX2FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFr
ZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IGVjODQ0ZTA3MjA0Li41NzYx
Y2YzYWE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTc2LDYgKzc2LDcgQEAgV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9DUllQVE8gUFJJVkFURSBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShVU0VfU1lTVEVNX01BTExPQyBQUklWQVRF
IE9OKQogCiBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKKyAgICBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVNZTkNfU0NST0xMSU5HIFBSSVZBVEUgT04pCiAg
ICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9DVVNUT01f
UFJPVE9DT0xfTUFOQUdFUiBQVUJMSUMgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBIFBVQkxJQyBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEwgUFVCTElDIE9OKQpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKaW5kZXggNGFkMmM0YjQyM2EuLjBjNTVmNTdiM2Vk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCisrKyBiL1Nv
dXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKQEAgLTI0LDcgKzI0LDExIEBAIGVuZGlm
ICgpCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DQUlSTyBPTikKIFNFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFVTRV9DRiBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DT09S
RElOQVRFRF9HUkFQSElDUyBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9D
VVJMIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX05JQ09TSUEgT04pCitTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05J
VE9SIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSIE9OKQog
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSX0dMIE9OKQogU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX01FRElBX0ZPVU5EQVRJT04gT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369688</attachid>
            <date>2019-05-12 19:58:39 -0700</date>
            <delta_ts>2019-05-13 21:55:50 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>28624</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGVkNjlkNzQzYWU1Li44MTg2
ZWI1MWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSwxMSAr
MTEsMjEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKKworICAgIHBhZ2Uv
c2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKKwogICAgIHBhZ2Uv
d2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcAppbmRleCA3NmEyMDgxM2E2NS4uZDVkNDc2NDc0NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5oIgogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9u
aXRvckd0ay5oIgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvcldpbi5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDYgKzU0
LDkgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2gKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpjcmVhdGUoZGlzcGxheUlEKTsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25p
dG9yV2luOjpjcmVhdGUoZGlzcGxheUlEKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShkaXNw
bGF5SUQpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggZDIzYzYwNzkyZWEuLmIw
ZmQyZjBkOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybURpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTIxMSw3ICsyMTEsNiBAQCB2b2lkIFBsYXRmb3JtRGlz
cGxheTo6aW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogCiAgICAgZWdsRGlzcGxheXMoKS5hZGQodGhp
cyk7CiAKLSNpZiAhUExBVEZPUk0oV0lOKQogICAgIHN0YXRpYyBib29sIGVnbEF0ZXhpdEhhbmRs
ZXJJbml0aWFsaXplZCA9IGZhbHNlOwogICAgIGlmICghZWdsQXRleGl0SGFuZGxlckluaXRpYWxp
emVkKSB7CiAgICAgICAgIC8vIEVHTCByZWdpc3RlcnMgYXRleGl0IGhhbmRsZXJzIHRvIGNsZWFu
dXAgaXRzIGdsb2JhbCBkaXNwbGF5IGxpc3QuCkBAIC0yMjUsNyArMjI0LDYgQEAgdm9pZCBQbGF0
Zm9ybURpc3BsYXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICAgICAgZWdsQXRleGl0SGFu
ZGxlckluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgICAgc3RkOjphdGV4aXQoc2h1dERvd25FZ2xE
aXNwbGF5cyk7CiAgICAgfQotI2VuZGlmCiB9CiAKIHZvaWQgUGxhdGZvcm1EaXNwbGF5Ojp0ZXJt
aW5hdGVFR0xEaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEzNWE4NDc0MjNkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvcldpbi5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9y
V2luLmgiCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9S
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JX
aW4+IERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6Y3JlYXRlKFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW4oZGlzcGxheUlEKSk7Cit9CisKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6RGlzcGxh
eVJlZnJlc2hNb25pdG9yV2luKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKKyAgICA6IERp
c3BsYXlSZWZyZXNoTW9uaXRvcihkaXNwbGF5SUQpCisgICAgLCBtX3RpbWVyKFJ1bkxvb3A6Om1h
aW4oKSwgdGhpcywgJkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCkK
K3sKK30KKworYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OnJlcXVlc3RSZWZyZXNoQ2Fs
bGJhY2soKQoreworICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDE2X21zKTsKKyAgICBzZXRJc0FjdGl2ZSh0cnVlKTsK
KyAgICBzZXRJc1NjaGVkdWxlZCh0cnVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBE
aXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OmRpc3BsYXlMaW5rRmlyZWQoKQoreworICAgIGlmICgh
aXNQcmV2aW91c0ZyYW1lRG9uZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRJc1ByZXZp
b3VzRnJhbWVEb25lKGZhbHNlKTsKKworICAgIGhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmlj
YXRpb25Pbk1haW5UaHJlYWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJl
ZnJlc2hNb25pdG9yV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjFkMzcwNTFkMmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExB
WV9NT05JVE9SKQorCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXNwbGF5
UmVmcmVzaE1vbml0b3JXaW4gOiBwdWJsaWMgRGlzcGxheVJlZnJlc2hNb25pdG9yIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbj4gY3JlYXRlKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCk7CisKKyAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQo
KSBvdmVycmlkZTsKKyAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oUGxhdGZv
cm1EaXNwbGF5SUQpOworICAgIFJ1bkxvb3A6OlRpbWVyPERpc3BsYXlSZWZyZXNoTW9uaXRvcldp
bj4gbV90aW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVT
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdp
bi5jbWFrZQppbmRleCA0ZTllMmE2MDFiOC4uMDk5NjAyYzBmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdp
bi5jbWFrZQpAQCAtMjIsNiArMjIsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAg
ICAgU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAogCisgICAgU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorCiAg
ICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGVOb25lLmNwcAog
CiAgICAgU2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldpbi5jcHAKQEAgLTE2MCw2ICsx
NjIsMTIgQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAKICAgICAgICAgU2hhcmVk
L0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKIAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAorICAg
ICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisKKyAgICAg
ICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvU2ltcGxlVmlld3BvcnRDb250cm9sbGVyLmNw
cAorCiAgICAgICAgIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAogICAg
ICAgICBTaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcApAQCAtMTY5LDYg
KzE3Nyw4IEBAIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogICAgICAgICBVSVByb2Nl
c3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICAgICAgV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisKKyAgICAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCiAgICAgKQog
CiAgICAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBlYjZhZjk4MDYyNC4uYmViNzJmY2Ez
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTIyMCw3
ICsyMjAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlU2NlbmVTdGF0
ZSgpCiAKICAgICAvLyBTdG9yZSBsYXllciBhbmQgaW1wbCByZWZlcmVuY2VzIGFsb25nIHdpdGgg
dGhlIGNvcnJlc3BvbmRpbmcgdXBkYXRlCiAgICAgLy8gZm9yIGVhY2ggdHlwZSBvZiBwb3NzaWJs
ZSBsYXllciBiYWNraW5nLgotICAgIHN0cnVjdCB7CisgICAgc3RydWN0IExheWVyc0J5QmFja2lu
ZyB7CiAgICAgICAgIHN0cnVjdCBCYWNraW5nU3RvcmUgewogICAgICAgICAgICAgc3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxUZXh0dXJlTWFwcGVyTGF5ZXI+IGxheWVyOwogICAgICAgICAgICAgc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bD4gYmFja2luZ1N0b3JlOwpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjp1cGRhdGVTY2VuZVN0YXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyBzdGQ6OnJlZihsYXllciksIHN0ZDo6cmVmKGltcGwucHJveHkoKSksIGxheWVyU3Rh
dGUuZGVsdGEuY29udGVudExheWVyQ2hhbmdlZCB9KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAobGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvJiBpbXBsID0gaW1hZ2VCYWNraW5nSW1wbCgqbGF5ZXJTdGF0ZS5pbWFn
ZUJhY2tpbmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyc0J5QmFja2luZy5p
bWFnZUJhY2tpbmcuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyc0J5
QmFja2luZy5pbWFnZUJhY2tpbmcuYXBwZW5kPExheWVyc0J5QmFja2luZzo6SW1hZ2VCYWNraW5n
PigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6OnJlZihsYXllciksIHN0
ZDo6cmVmKGltcGwpLCBpbXBsLnRha2VVcGRhdGUoKSB9KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRz
TGF5ZXIobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRleCBlMGNkZWVkZmMyMS4uMGNmNTcwNzg3MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9y
Ojpmb3JjZVJlcGFpbnQoKQogewogICAgIC8vIEZJWE1FOiBFbmFibGUgdGhpcyBmb3IgV1BFIG9u
Y2UgaXQncyBwb3NzaWJsZSB0byBkbyB0aGVzZSBmb3JjZWQgdXBkYXRlcwogICAgIC8vIGluIGEg
d2F5IHRoYXQgZG9lc24ndCBzdGFydmUgb3V0IHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIGJ1ZmZl
cnMuCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmICFQTEFURk9STShXUEUpCiAgICAgbV9jb21wb3Np
dGluZ1J1bkxvb3AtPnBlcmZvcm1UYXNrU3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7CiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGNoYW5nZShtX2luRm9yY2VS
ZXBhaW50LCB0cnVlKTsKICAgICAgICAgcmVuZGVyTGF5ZXJUcmVlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDg5ZjUz
NWQ0ZTI5Li5hMWJiYTA4OTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEwNSw2ICsxMDUsOSBAQCB2b2lkIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAjZW5kaWYKICNpZiBQTEFURk9STShXUEUpCiAgICAgZW5jb2RlciA8PCBob3N0RmlsZURlc2Ny
aXB0b3I7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgZW5jb2RlciA8PCBuYXRpdmVX
aW5kb3dIYW5kbGU7CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbFBhZ2luYXRpb25R
dWlya0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsK
QEAgLTMwNiw2ICszMDksMTEgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZCkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaAppbmRleCA0M2FmNDYxYTczMC4uYWJiMjEwM2JiOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE2
NCw2ICsxNjQsOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShXUEUpCiAgICAgSVBDOjpBdHRhY2htZW50IGhvc3RGaWxlRGVzY3JpcHRv
cjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dI
YW5kbGU7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7
CiAgICAgYm9vbCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDFiNmI1MTY4NjA5Li41NjQyMjk3YTViMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MTc0LDYgKzcxNzQs
MTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLmhvc3RGaWxlRGVz
Y3JpcHRvciA9IHBhZ2VDbGllbnQoKS5ob3N0RmlsZURlc2NyaXB0b3IoKTsKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oV0lOKQorICAgIHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50NjRfdD4odmlld1dpZGdldCgpKTsKKyNlbmRpZgorCiAgICAgZm9y
IChhdXRvJiBpdGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKICAgICAgICAg
cGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52
YWx1ZS0+aWRlbnRpZmllcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKaW5kZXggZTU3OWE1ZGYzYTAuLmE4
MDZkZjc4YjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSAi
QWNjZWxlcmF0ZWRTdXJmYWNlV1BFLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyNp
bmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01Nyw2ICs2MSwxMCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0
ZShXZWJQYWdlJiB3ZWJQYWdlLAogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBpZiAoUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6
V1BFKQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV1BFOjpjcmVhdGUod2ViUGFn
ZSwgY2xpZW50KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6
V2luZG93cykKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKHdl
YlBhZ2UsIGNsaWVudCk7CiAjZW5kaWYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDEwNGUwMDYzZjQu
LmQwM2M2NmQ4YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMzg1LDYgKzM4NSwxMCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIFBM
QVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQorI2VuZGlm
CisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgLy8gT3Vy
IHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgLCBtX25hdGl2ZVdpbmRvd0hh
bmRsZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkKICNlbmRpZgogICAgICwgbV9zZXRD
YW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZTo6c2V0Q2Fu
U3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTM4ZWI4YmExZGUuLmQ4
Y2FlZDU2ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC05NjYsNyArOTY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hUb3VjaEV2ZW50
KGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVkKTsKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdWludDY0X3QgbmF0aXZlV2luZG93SGFuZGxl
KCkgeyByZXR1cm4gbV9uYXRpdmVXaW5kb3dIYW5kbGU7IH0KICNlbmRpZgogCkBAIC0xNjYzLDcg
KzE2NjMsNyBAQCBwcml2YXRlOgogICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBtX2FjY2Vzc2liaWxp
dHlPYmplY3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAg
IC8vIE91ciB2aWV3J3Mgd2luZG93IGluIHRoZSBVSSBwcm9jZXNzLgogICAgIHVpbnQ2NF90IG1f
bmF0aXZlV2luZG93SGFuZGxlIHsgMCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YTcyZWRlOWRlNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9B
Y2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIgorCisjaW5jbHVkZSAiV2ViUGFnZS5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6
OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPiBBY2NlbGVyYXRlZFN1cmZhY2VXaW46
OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4obmV3IEFjY2VsZXJhdGVkU3Vy
ZmFjZVdpbih3ZWJQYWdlLCBjbGllbnQpKTsKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpB
Y2NlbGVyYXRlZFN1cmZhY2VXaW4oV2ViUGFnZSYgd2ViUGFnZSwgQ2xpZW50JiBjbGllbnQpCisg
ICAgOiBBY2NlbGVyYXRlZFN1cmZhY2Uod2ViUGFnZSwgY2xpZW50KQoreworfQorCitBY2NlbGVy
YXRlZFN1cmZhY2VXaW46On5BY2NlbGVyYXRlZFN1cmZhY2VXaW4oKQoreworfQorCit1aW50NjRf
dCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OndpbmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
d2ViUGFnZS5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKK30KKwordWludDY0X3QgQWNjZWxlcmF0ZWRT
dXJmYWNlV2luOjpzdXJmYWNlSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2UucGFn
ZUlEKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpkaWRSZW5kZXJGcmFtZSgp
Cit7CisgICAgLy8gRklYTUU6IGZyYW1lQ29tcGxldGUoKSBzaG91bGQgYmUgY2FsbGVkIHdoZW4g
dGhlIGZyYW1lIHdhcyBhY3R1YWxseSByZW5kZXJlZCBpbiB0aGUgc2NyZWVuLgorICAgIG1fY2xp
ZW50LmZyYW1lQ29tcGxldGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJm
YWNlV2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0
ZWRTdXJmYWNlV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY1
YjQ0ZWM0MzY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBQTEFURk9STShXSU4pCisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2UuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIEFjY2VsZXJh
dGVkU3VyZmFjZVdpbiBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2UgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZVdpbik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0
ZWRTdXJmYWNlV2luPiBjcmVhdGUoV2ViUGFnZSYsIENsaWVudCYpOworICAgIH5BY2NlbGVyYXRl
ZFN1cmZhY2VXaW4oKTsKKworICAgIHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVu
ZGVyRnJhbWUoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRlZFN1cmZhY2VX
aW4oV2ViUGFnZSYsIENsaWVudCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCmluZGV4IGZjMzdiZmFjOWFlLi4wMjdiYzZjODJkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldp
bi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc01haW4gZmluYWwgOiBwdWJs
aWMgQXV4aWxpYXJ5UHJvY2Vzc01haW5CYXNlIHsKIHB1YmxpYzoKICAgICBib29sIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBTZXRQcm9jZXNzRFBJQXdhcmUo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCBlNDQ3MzcwZDlkMS4uNjY5MGY4ZmJiMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKQEAgLTI1
LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Lmgi
CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiV2ViVmlldy5oIgog
CkBAIC00MTMsNCArNDEzLDQgQEAgZmxvYXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJWaWV3LmRldmljZVNj
YWxlRmFjdG9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZW5k
aWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXggNmJiMzM0
ZDQ0MWQuLjMzNzRkNmFhNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHRfaAogI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCiAKLSNp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgpAQCAtOTksNiArOTksNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcigpOwogfTsKIAotI2VuZGlmIC8v
IFRFWFRVUkVfTUFQUEVSX0dMCisjZW5kaWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIAogI2VuZGlmIC8vIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggNzlmYzQ2ZDBmYjgu
LjE3YmYyNDA0NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTk4LDcg
KzE5OCw3IEBACiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVyVHJlZUhv
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgotI2VsaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LmgiCiAjZW5kaWYKIApAQCAtOTIwLDcgKzkyMCw3IEBAIHZvaWQgV2ViVmlldzo6YWRkVG9E
aXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgaWYgKGlzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZygpKSB7CiAjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldE5v
bkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGRpcnR5UmVjdCk7CiAjZW5kaWYKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTkyLDcgKzk5Miw3IEBAIHZvaWQgV2ViVmlldzo6c2Nyb2xsQmFja2lu
Z1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBpbnQgbG9naWNhbER4LCBpbnQgbG9naWNhCiAg
ICAgICAgIC8vIGFueSBuZXdseS1leHBvc2VkIHRpbGVzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi81
MjcxND4KICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3Bs
YXlJblJlY3Qoc2Nyb2xsVmlld1JlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQor
I2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zY3JvbGxOb25Db21w
b3NpdGVkQ29udGVudHMoc2Nyb2xsVmlld1JlY3QsIEludFNpemUoZHgsIGR5KSk7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTA3MCw3ICsxMDcwLDcgQEAgdm9pZCBXZWJWaWV3OjpzaXpl
Q2hhbmdlZChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+
c2V0U2l6ZShuZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxh
eSgpOwogICAgIH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAobV9h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlmCkBAIC01NDc3
LDcgKzU0NzcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJ
V2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAg
c3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSA9IEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCk7CiAg
ICAgZW5hYmxlZCA9IGVuYWJsZWQgJiYgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZTsK
ICNlbGlmIFVTRShESVJFQ1QyRCkKQEAgLTY0OTQsNyArNjQ5NCw3IEBAIGJvb2wgV2ViVmlldzo6
cGFpbnRDb21wb3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZpY2VDb250ZXh0KQogCiAjaWYgVVNF
KENBKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCk7
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICNlbmRpZgogCkBAIC03MTU0
LDcgKzcxNTQsNyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKEdyYXBoaWNzTGF5
ZXIqIGxheWVyKQogICAgIGVsc2UKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnJlbW92ZUFsbENo
aWxkcmVuKCk7CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihsYXll
cik7CkBAIC03MTY5LDcgKzcxNjksNyBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBo
aWNzTGF5ZXJDaGFuZ2VzU29vbigpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9sYXll
clRyZWVIb3N0LT5mbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKTsKLSNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYg
IVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29uKCk7CkBAIC03MjMwLDcgKzcy
MzAsNyBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBhY2Nl
bGVyYXRlZCkKICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBudWxscHRyOwogICAgICAgICBtX2lz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwogICAgIH0KLSNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICAgICBpZiAoYWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7
CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRlZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuaAppbmRleCBhZDRlMzJkNDdlOC4uM2U2ODU1NDlkYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgV2ViQmFja0Zvcndh
cmRMaXN0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBXZWJJ
bnNwZWN0b3JDbGllbnQ7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIGNsYXNzIEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiBjbGFzcyBXZWJWaWV3R3JvdXA7CkBA
IC03MDYsNyArNzA2LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShDQSkKICAgICBSZWZQdHI8V2Vi
Q29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKICAgICBSZWZQdHI8V2Vi
Q29yZTo6R3JhcGhpY3NMYXllcj4gbV9iYWNraW5nTGF5ZXI7Ci0jZWxpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0PiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiAgICAgYm9v
bCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtl
CmluZGV4IGI2YzEzODYyMzIxLi5kYjczZjBkZTc4NSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKQEAg
LTc3LDYgKzc3LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dF
Ql9DUllQVE8gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShV
U0VfU1lTVEVNX01BTExPQyBQUklWQVRFIE9OKQogCiBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NB
SVJPfSkKKyAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVNZTkNf
U0NST0xMSU5HIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0xFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUiBQVUJMSUMgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVE
X01FRElBIFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0lOVEwgUFVCTElDIE9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNX
aW5DYWlyby5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKaW5kZXgg
YTcxNmVjNmYwZWEuLmJiMmM3NjU5ZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c1dpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UK
QEAgLTI0LDcgKzI0LDExIEBAIGVuZGlmICgpCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9DQUlSTyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DRiBPTikKK1NFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElDUyBPTikKK1NFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCBPTikKIFNFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DVVJMIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
VVNFX05JQ09TSUEgT04pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfUkVRVUVTVF9BTklN
QVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
VVNFX1RFWFRVUkVfTUFQUEVSIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRV
UkVfTUFQUEVSX0dMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX01FRElBX0ZPVU5E
QVRJT04gT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369820</attachid>
            <date>2019-05-13 21:55:50 -0700</date>
            <delta_ts>2019-05-14 01:28:10 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>31492</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGVkNjlkNzQzYWU1Li44MTg2
ZWI1MWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSwxMSAr
MTEsMjEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKKworICAgIHBhZ2Uv
c2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKKwogICAgIHBhZ2Uv
d2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcAppbmRleCA3NmEyMDgxM2E2NS4uZDVkNDc2NDc0NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5oIgogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9u
aXRvckd0ay5oIgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvcldpbi5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDYgKzU0
LDkgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2gKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpjcmVhdGUoZGlzcGxheUlEKTsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25p
dG9yV2luOjpjcmVhdGUoZGlzcGxheUlEKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShkaXNw
bGF5SUQpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggNWQwYjVlZDQyOGYuLjI0NGM3YTUzMjhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAg
LTE0NSw2ICsxNDUsMTEgQEAgYm9vbCBHTENvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgR0xDb250ZXh0Ojp1bm1ha2VDb250ZXh0Q3VycmVu
dCgpCit7CisgICAgY3VycmVudENvbnRleHQoKS0+c2V0Q29udGV4dChudWxscHRyKTsKK30KKwog
R0xDb250ZXh0KiBHTENvbnRleHQ6OmN1cnJlbnQoKQogewogICAgIHJldHVybiBjdXJyZW50Q29u
dGV4dCgpLT5jb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dM
Q29udGV4dC5oCmluZGV4IDg2MTVlYTA2ZDg3Li5mZDM5MDA4OGY5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+R0xDb250ZXh0KCk7CiAgICAgdmlydHVhbCBib29sIG1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgIHZpcnR1YWwgdm9pZCB1bm1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
d2FpdE5hdGl2ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJh
bWVidWZmZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1EaXNwbGF5LmNwcAppbmRleCBkMjNjNjA3OTJlYS4uYjBmZDJmMGQ4ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmNwcApAQCAtMjExLDcgKzIxMSw2IEBAIHZvaWQgUGxhdGZvcm1EaXNwbGF5Ojppbml0aWFs
aXplRUdMRGlzcGxheSgpCiAKICAgICBlZ2xEaXNwbGF5cygpLmFkZCh0aGlzKTsKIAotI2lmICFQ
TEFURk9STShXSU4pCiAgICAgc3RhdGljIGJvb2wgZWdsQXRleGl0SGFuZGxlckluaXRpYWxpemVk
ID0gZmFsc2U7CiAgICAgaWYgKCFlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6ZWQpIHsKICAgICAg
ICAgLy8gRUdMIHJlZ2lzdGVycyBhdGV4aXQgaGFuZGxlcnMgdG8gY2xlYW51cCBpdHMgZ2xvYmFs
IGRpc3BsYXkgbGlzdC4KQEAgLTIyNSw3ICsyMjQsNiBAQCB2b2lkIFBsYXRmb3JtRGlzcGxheTo6
aW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogICAgICAgICBlZ2xBdGV4aXRIYW5kbGVySW5pdGlhbGl6
ZWQgPSB0cnVlOwogICAgICAgICBzdGQ6OmF0ZXhpdChzaHV0RG93bkVnbERpc3BsYXlzKTsKICAg
ICB9Ci0jZW5kaWYKIH0KIAogdm9pZCBQbGF0Zm9ybURpc3BsYXk6OnRlcm1pbmF0ZUVHTERpc3Bs
YXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dM
Q29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmNwcAppbmRleCBkNmZmMzc5MGEzNy4uMDdhMDUzZGIxMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3Bw
CkBAIC00NTMsNiArNDUzLDE0IEBAIGJvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29udGV4dEN1cnJl
bnQoKQogICAgIHJldHVybiBlZ2xNYWtlQ3VycmVudChtX2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBt
X3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKIH0KIAordm9pZCBHTENvbnRleHRFR0w6
OnVubWFrZUNvbnRleHRDdXJyZW50KCkKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0KTsKKworICAg
IEdMQ29udGV4dDo6dW5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBlZ2xNYWtlQ3VycmVudCht
X2Rpc3BsYXkuZWdsRGlzcGxheSgpLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVH
TF9OT19DT05URVhUKTsKK30KKwogdm9pZCBHTENvbnRleHRFR0w6OnN3YXBCdWZmZXJzKCkKIHsK
ICAgICBBU1NFUlQobV9zdXJmYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCBjYmQ2MzQxZmU1ZC4uZGMwMTRmZjU2
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgRUdMQ29u
dGV4dCBjcmVhdGVDb250ZXh0Rm9yRUdMVmVyc2lvbihQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb25m
aWcsIEVHTENvbnRleHQpOwogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVubWFrZUNvbnRleHRDdXJyZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
d2FwQnVmZmVycygpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdE5hdGl2ZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgY2FuUmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVz
aE1vbml0b3JXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmEzNWE4NDc0MjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgiCisKKyNpZiBVU0UoUkVRVUVT
VF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4+IERpc3BsYXlSZWZyZXNoTW9uaXRv
cldpbjo6Y3JlYXRlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oZGlzcGxheUlEKSk7Cit9CisK
K0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6RGlzcGxheVJlZnJlc2hNb25pdG9yV2luKFBsYXRm
b3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKKyAgICA6IERpc3BsYXlSZWZyZXNoTW9uaXRvcihkaXNw
bGF5SUQpCisgICAgLCBtX3RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCkKK3sKK30KKworYm9vbCBEaXNwbGF5UmVm
cmVzaE1vbml0b3JXaW46OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQoreworICAgIGlmICghaXNB
Y3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fdGltZXIuc3RhcnRPbmVTaG90
KDE2X21zKTsKKyAgICBzZXRJc0FjdGl2ZSh0cnVlKTsKKyAgICBzZXRJc1NjaGVkdWxlZCh0cnVl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46
OmRpc3BsYXlMaW5rRmlyZWQoKQoreworICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKGZhbHNlKTsKKwor
ICAgIGhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5UaHJlYWQodGhpcyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2lu
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFkMzcwNTFkMmM1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCisjaW5jbHVkZSAi
RGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4gOiBwdWJs
aWMgRGlzcGxheVJlZnJlc2hNb25pdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPERp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbj4gY3JlYXRlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCk7CisKKyAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoKSBvdmVycmlkZTsKKyAgICBib29sIHJl
cXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQpOworICAgIFJ1bkxv
b3A6OlRpbWVyPERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbj4gbV90aW1lcjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA0ZTllMmE2MDFi
OC4uMDk5NjAyYzBmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21h
a2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMjIsNiArMjIsOCBA
QCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAgICAgU2hhcmVkL0FQSS9jL2N1cmwvV0tD
ZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGVOb25lLmNwcAogCiAgICAgU2hhcmVkL3dpbi9BdXhpbGlh
cnlQcm9jZXNzTWFpbldpbi5jcHAKQEAgLTE2MCw2ICsxNjIsMTIgQEAgaWYgKCR7V1RGX1BMQVRG
T1JNX1dJTl9DQUlST30pCiAKICAgICAgICAgU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWly
by5jcHAKIAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorICAgICAg
ICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRE
aXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisKKyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvU2ltcGxlVmlld3BvcnRDb250cm9sbGVyLmNwcAorCiAgICAgICAgIFNoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAogICAgICAgICBTaGFyZWQvY3VybC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDdXJsLmNwcApAQCAtMTY5LDYgKzE3Nyw4IEBAIGlmICgke1dURl9QTEFU
Rk9STV9XSU5fQ0FJUk99KQogICAgICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwCiAKICAgICAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwCisKKyAgICAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9B
Y2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCiAgICAgKQogCiAgICAgbGlzdChBUFBFTkQgV2ViS2l0
X0lOQ0xVREVfRElSRUNUT1JJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcAppbmRleCBlYjZhZjk4MDYyNC4uYmViNzJmY2EzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAKICAgICAvLyBTdG9yZSBsYXll
ciBhbmQgaW1wbCByZWZlcmVuY2VzIGFsb25nIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdXBkYXRl
CiAgICAgLy8gZm9yIGVhY2ggdHlwZSBvZiBwb3NzaWJsZSBsYXllciBiYWNraW5nLgotICAgIHN0
cnVjdCB7CisgICAgc3RydWN0IExheWVyc0J5QmFja2luZyB7CiAgICAgICAgIHN0cnVjdCBCYWNr
aW5nU3RvcmUgewogICAgICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxUZXh0dXJlTWFw
cGVyTGF5ZXI+IGxheWVyOwogICAgICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxOaWNv
c2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbD4gYmFja2luZ1N0b3JlOwpAQCAtMzUy
LDcgKzM1Miw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2VuZVN0
YXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6OnJlZihsYXllciks
IHN0ZDo6cmVmKGltcGwucHJveHkoKSksIGxheWVyU3RhdGUuZGVsdGEuY29udGVudExheWVyQ2hh
bmdlZCB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXJTdGF0ZS5p
bWFnZUJhY2tpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBpbXBsID0g
aW1hZ2VCYWNraW5nSW1wbCgqbGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxheWVyc0J5QmFja2luZy5pbWFnZUJhY2tpbmcuYXBwZW5kKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyc0J5QmFja2luZy5pbWFnZUJhY2tpbmcuYXBw
ZW5kPExheWVyc0J5QmFja2luZzo6SW1hZ2VCYWNraW5nPigKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeyBzdGQ6OnJlZihsYXllciksIHN0ZDo6cmVmKGltcGwpLCBpbXBsLnRha2VV
cGRhdGUoKSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzTGF5ZXIobnVsbHB0cik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNw
cAppbmRleCBlMGNkZWVkZmMyMS4uMzk1NDYyMmVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtOTYsNiAr
OTYsOCBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlR0xDb250ZXh0KCkKIAogICAg
IGlmIChtX2RvRnJhbWVTeW5jID09IFNob3VsZERvRnJhbWVTeW5jOjpObykKICAgICAgICAgbV9j
b250ZXh0LT5zd2FwSW50ZXJ2YWwoMCk7CisKKyAgICBtX2NvbnRleHQtPnVubWFrZUNvbnRleHRD
dXJyZW50KCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjppbnZhbGlkYXRlKCkKQEAg
LTE4OCw3ICsxOTAsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Zm9yY2VSZXBhaW50KCkK
IHsKICAgICAvLyBGSVhNRTogRW5hYmxlIHRoaXMgZm9yIFdQRSBvbmNlIGl0J3MgcG9zc2libGUg
dG8gZG8gdGhlc2UgZm9yY2VkIHVwZGF0ZXMKICAgICAvLyBpbiBhIHdheSB0aGF0IGRvZXNuJ3Qg
c3RhcnZlIG91dCB0aGUgdW5kZXJseWluZyBncmFwaGljcyBidWZmZXJzLgotI2lmIFBMQVRGT1JN
KEdUSykKKyNpZiAhUExBVEZPUk0oV1BFKQogICAgIG1fY29tcG9zaXRpbmdSdW5Mb29wLT5wZXJm
b3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAg
ICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9pbkZvcmNlUmVwYWludCwgdHJ1ZSk7CiAg
ICAgICAgIHJlbmRlckxheWVyVHJlZSgpOwpAQCAtMjQ4LDYgKzI1MCw3IEBAIHZvaWQgVGhyZWFk
ZWRDb21wb3NpdG9yOjpyZW5kZXJMYXllclRyZWUoKQogICAgIG1fc2NlbmUtPnBhaW50VG9DdXJy
ZW50R0xDb250ZXh0KHZpZXdwb3J0VHJhbnNmb3JtLCBGbG9hdFJlY3QgeyBGbG9hdFBvaW50IHsg
fSwgdmlld3BvcnRTaXplIH0sIG1fcGFpbnRGbGFncyk7CiAKICAgICBtX2NvbnRleHQtPnN3YXBC
dWZmZXJzKCk7CisgICAgbV9jb250ZXh0LT51bm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAg
aWYgKG1fc2NlbmUtPmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY2xpZW50LmRpZFJlbmRlckZyYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCmluZGV4IDg5ZjUzNWQ0ZTI5Li5hMWJiYTA4OTcwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEwNSw2ICsx
MDUsOSBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKICNpZiBQTEFURk9STShXUEUpCiAgICAgZW5jb2Rl
ciA8PCBob3N0RmlsZURlc2NyaXB0b3I7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAg
ZW5jb2RlciA8PCBuYXRpdmVXaW5kb3dIYW5kbGU7CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IGFw
cGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxM
aW5lc0NsYW1wRW5hYmxlZDsKQEAgLTMwNiw2ICszMDksMTEgQEAgT3B0aW9uYWw8V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oV0lOKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uYXRpdmVXaW5kb3dI
YW5kbGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxl
ZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA0M2FmNDYxYTczMC4uYWJi
MjEwM2JiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKQEAgLTE2NCw2ICsxNjQsOSBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyB7CiAjZW5kaWYKICNpZiBQTEFURk9STShXUEUpCiAgICAgSVBDOjpBdHRhY2htZW50
IGhvc3RGaWxlRGVzY3JpcHRvcjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICB1aW50
NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGU7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBhZ2lu
YXRpb25RdWlya0VuYWJsZWQ7CiAgICAgYm9vbCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDFiNmI1MTY4NjA5
Li41NjQyMjk3YTViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC03MTc0LDYgKzcxNzQsMTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdl
UHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJh
bWV0ZXJzLmhvc3RGaWxlRGVzY3JpcHRvciA9IHBhZ2VDbGllbnQoKS5ob3N0RmlsZURlc2NyaXB0
b3IoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorICAgIHBhcmFtZXRlcnMubmF0aXZl
V2luZG93SGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4odmlld1dpZGdldCgpKTsK
KyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNC
eVNjaGVtZSkKICAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0
b3Iua2V5LCBpdGVyYXRvci52YWx1ZS0+aWRlbnRpZmllcigpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKaW5k
ZXggZTU3OWE1ZGYzYTAuLmE4MDZkZjc4YjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTQxLDYgKzQx
LDEwIEBACiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV1BFLmgiCiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01
Nyw2ICs2MSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBBY2NlbGVy
YXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLAogI2lmIFBMQVRGT1JNKFdQRSkK
ICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRm
b3JtRGlzcGxheTo6VHlwZTo6V1BFKQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNl
V1BFOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikK
KyAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRm
b3JtRGlzcGxheTo6VHlwZTo6V2luZG93cykKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3Vy
ZmFjZVdpbjo6Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CiAjZW5kaWYKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggMDEwNGUwMDYzZjQuLmQwM2M2NmQ4YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1LDYgKzM4NSwxMCBAQCBXZWJQYWdlOjpX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiAgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBIQVZFKEFD
Q0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVj
dChudWxscHRyKQorI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCisgICAgLy8gT3VyIHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAg
LCBtX25hdGl2ZVdpbmRvd0hhbmRsZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkKICNl
bmRpZgogICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmV2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggYTM4ZWI4YmExZGUuLmQ4Y2FlZDU2ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05NjYsNyArOTY2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlzcGF0Y2hUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVkKTsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisj
aWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdWludDY0X3Qg
bmF0aXZlV2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV9uYXRpdmVXaW5kb3dIYW5kbGU7IH0KICNl
bmRpZgogCkBAIC0xNjYzLDcgKzE2NjMsNyBAQCBwcml2YXRlOgogICAgIEdSZWZQdHI8QXRrT2Jq
ZWN0PiBtX2FjY2Vzc2liaWxpdHlPYmplY3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykg
JiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQogICAgIC8vIE91ciB2aWV3J3Mgd2luZG93IGluIHRoZSBVSSBwcm9jZXNz
LgogICAgIHVpbnQ2NF90IG1fbmF0aXZlV2luZG93SGFuZGxlIHsgMCB9OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRT
dXJmYWNlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2Nl
bGVyYXRlZFN1cmZhY2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi44YTcyZWRlOWRlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIgorCisj
aW5jbHVkZSAiV2ViUGFnZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPiBBY2Nl
bGVyYXRlZFN1cmZhY2VXaW46OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBDbGllbnQmIGNsaWVu
dCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4o
bmV3IEFjY2VsZXJhdGVkU3VyZmFjZVdpbih3ZWJQYWdlLCBjbGllbnQpKTsKK30KKworQWNjZWxl
cmF0ZWRTdXJmYWNlV2luOjpBY2NlbGVyYXRlZFN1cmZhY2VXaW4oV2ViUGFnZSYgd2ViUGFnZSwg
Q2xpZW50JiBjbGllbnQpCisgICAgOiBBY2NlbGVyYXRlZFN1cmZhY2Uod2ViUGFnZSwgY2xpZW50
KQoreworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VXaW46On5BY2NlbGVyYXRlZFN1cmZhY2VXaW4o
KQoreworfQorCit1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OndpbmRvdygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKK30KKwordWlu
dDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpzdXJmYWNlSUQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
OjpkaWRSZW5kZXJGcmFtZSgpCit7CisgICAgLy8gRklYTUU6IGZyYW1lQ29tcGxldGUoKSBzaG91
bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGZyYW1lIHdhcyBhY3R1YWxseSByZW5kZXJlZCBpbiB0aGUg
c2NyZWVuLgorICAgIG1fY2xpZW50LmZyYW1lQ29tcGxldGUoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjY1YjQ0ZWM0MzY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXSU4pCisKKyNpbmNsdWRlICJBY2Nl
bGVyYXRlZFN1cmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7
CisKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZVdpbiBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRl
ZFN1cmZhY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZVdp
bik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPiBjcmVhdGUoV2ViUGFnZSYsIENsaWVudCYp
OworICAgIH5BY2NlbGVyYXRlZFN1cmZhY2VXaW4oKTsKKworICAgIHVpbnQ2NF90IHdpbmRvdygp
IGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBB
Y2NlbGVyYXRlZFN1cmZhY2VXaW4oV2ViUGFnZSYsIENsaWVudCYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCmluZGV4IGZjMzdiZmFj
OWFlLi4wMjdiYzZjODJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgV2ViUHJvY2Vz
c01haW4gZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc01haW5CYXNlIHsKIHB1YmxpYzoK
ICAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBT
ZXRQcm9jZXNzRFBJQXdhcmUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCBlNDQ3Mzcw
ZDlkMS4uNjY5MGY4ZmJiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5j
bHVkZSAiV2ViVmlldy5oIgogCkBAIC00MTMsNCArNDEzLDQgQEAgZmxvYXQgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4g
bV93ZWJWaWV3LmRldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LmgKaW5kZXggNmJiMzM0ZDQ0MWQuLjMzNzRkNmFhNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAogI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dF9oCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgpAQCAt
OTksNiArOTksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3Rvcigp
OwogfTsKIAotI2VuZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMCisjZW5kaWYgLy8gVEVYVFVSRV9N
QVBQRVJfR0wgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2VuZGlmIC8vIEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
aW5kZXggNzlmYzQ2ZDBmYjguLjE3YmYyNDA0NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBACiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdlYkNv
cmUvQ0FDRkxheWVyVHJlZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXll
ci5oPgotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAjZW5kaWYKIApAQCAtOTIwLDcgKzkyMCw3IEBAIHZv
aWQgV2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAg
ICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAjaWYgVVNFKENBKQogICAgICAg
ICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Ci0jZWxp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
ICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQtPnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGRpcnR5UmVj
dCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwpAQCAtOTkyLDcgKzk5Miw3IEBAIHZvaWQgV2Vi
Vmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBpbnQgbG9naWNh
bER4LCBpbnQgbG9naWNhCiAgICAgICAgIC8vIGFueSBuZXdseS1leHBvc2VkIHRpbGVzLiA8aHR0
cDovL3dlYmtpdC5vcmcvYi81MjcxND4KICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3Qoc2Nyb2xsVmlld1JlY3QpOwotI2VsaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LT5zY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoc2Nyb2xsVmlld1JlY3QsIEludFNpemUo
ZHgsIGR5KSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwpAQCAtMTA3MCw3ICsxMDcwLDcgQEAg
dm9pZCBXZWJWaWV3OjpzaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAg
ICBtX2JhY2tpbmdMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5
ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKICAgICBpZiAobV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAg
bV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUp
OwogI2VuZGlmCkBAIC01NDc3LDcgKzU0NzcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVBy
ZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaHIg
PSBwcmVmc1ByaXZhdGUtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCZlbmFibGVkKTsK
ICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiAgICAgc3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWls
YWJsZSA9IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0
aW5nQXZhaWxhYmxlKCk7CiAgICAgZW5hYmxlZCA9IGVuYWJsZWQgJiYgYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0F2YWlsYWJsZTsKICNlbGlmIFVTRShESVJFQ1QyRCkKQEAgLTY0OTQsNyArNjQ5NCw3
IEBAIGJvb2wgV2ViVmlldzo6cGFpbnRDb21wb3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZpY2VD
b250ZXh0KQogCiAjaWYgVVNFKENBKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5n
TGF5ZXJDaGFuZ2VzTm93KCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAg
bV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsK
ICNlbmRpZgogCkBAIC03MTU0LDcgKzcxNTQsNyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGls
ZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIGVsc2UKICAgICAgICAgbV9iYWNraW5n
TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKICAgICBpZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29t
cG9zaXRpbmdMYXllcihsYXllcik7CkBAIC03MTY5LDcgKzcxNjksNyBAQCB2b2lkIFdlYlZpZXc6
OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hh
bmdlc1Nvb24oKTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29u
KCk7CkBAIC03MjMwLDcgKzcyMzAsNyBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBudWxs
cHRyOwogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwogICAgIH0K
LSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoYWNjZWxlcmF0ZWQgJiYg
IW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2Nl
bGVyYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCBhZDRlMzJkNDdlOC4uM2U2
ODU1NDlkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAgLTY4LDcgKzY4LDcgQEAg
Y2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNw
ZWN0b3I7CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKIGNsYXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiBjbGFz
cyBXZWJWaWV3R3JvdXA7CkBAIC03MDYsNyArNzA2LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShD
QSkKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9z
dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9iYWNraW5nTGF5ZXI7Ci0j
ZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OwogI2VuZGlmCiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IGI2YzEzODYyMzIxLi5kYjczZjBkZTc4NSAxMDA2NDQK
LS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09w
dGlvbnNXaW4uY21ha2UKQEAgLTc3LDYgKzc3LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX1dFQl9DUllQVE8gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShVU0VfU1lTVEVNX01BTExPQyBQUklWQVRFIE9OKQogCiBpZiAoJHtX
VEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKKyAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfQVNZTkNfU0NST0xMSU5HIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdF
UiBQVUJMSUMgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9MRUdBQ1lfRU5DUllQVEVEX01FRElBIFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEwgUFVCTElDIE9OKQpkaWZmIC0tZ2l0IGEvU291
cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2lu
Q2Fpcm8uY21ha2UKaW5kZXggYTcxNmVjNmYwZWEuLmJiMmM3NjU5ZTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zV2luQ2Fpcm8uY21ha2UKQEAgLTI0LDcgKzI0LDExIEBAIGVuZGlmICgpCiAKIFNFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9DQUlSTyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9DRiBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElD
UyBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DVVJMIE9OKQorU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX05JQ09TSUEgT04pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChVU0VfUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SIE9OKQogU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSIE9OKQogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSX0dMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX01FRElBX0ZPVU5EQVRJT04gT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369827</attachid>
            <date>2019-05-14 01:28:10 -0700</date>
            <delta_ts>2019-05-15 00:38:39 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>29192</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcApp
bmRleCA4NTdmNzNkOTM0YS4uZjBlNWU2YWEwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5jcHAKQEAgLTYwNSw2ICs2MDUsNyBAQCBlZ2w6
OkVycm9yIENvbnRleHQ6Om1ha2VDdXJyZW50KGVnbDo6RGlzcGxheSAqZGlzcGxheSwgZWdsOjpT
dXJmYWNlICpzdXJmYWNlKQogICAgIG1TdGF0ZS5zZXRBbGxEaXJ0eUJpdHMoKTsKICAgICBtU3Rh
dGUuc2V0QWxsRGlydHlPYmplY3RzKCk7CiAKKyAgICBBTkdMRV9UUlkodW5zZXREZWZhdWx0RnJh
bWVidWZmZXIoKSk7CiAgICAgQU5HTEVfVFJZKHNldERlZmF1bHRGcmFtZWJ1ZmZlcihzdXJmYWNl
KSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIHJlbmRlcmVyIG9mIGEgY29udGV4dCBzd2l0Y2guCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQppbmRleCBlZDY5ZDc0M2FlNS4uODE4NmVi
NTFiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMTEsMTEgKzEx
LDIxIEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAp
CiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCisKKyAgICBwYWdlL3Nj
cm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCisKICAgICBwYWdlL3dp
bi9GcmFtZUNhaXJvV2luLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvci5jcHAKaW5kZXggNzZhMjA4MTNhNjUuLmQ1ZDQ3NjQ3NDY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWMuaCIKICNlbGlmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0
b3JHdGsuaCIKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4uaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw2ICs1NCw5
IEBAIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
Y3JlYXRlRGVmYXVsdERpc3BsYXlSZWZyZXNoCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAg
ICAgcmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6Y3JlYXRlKGRpc3BsYXlJRCk7Cisj
ZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgcmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRv
cldpbjo6Y3JlYXRlKGRpc3BsYXlJRCk7CiAjZW5kaWYKICAgICBVTlVTRURfUEFSQU0oZGlzcGxh
eUlEKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4IGQyM2M2MDc5MmVhLi5iMGZk
MmYwZDhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybURpc3BsYXkuY3BwCkBAIC0yMTEsNyArMjExLDYgQEAgdm9pZCBQbGF0Zm9ybURpc3Bs
YXk6OmluaXRpYWxpemVFR0xEaXNwbGF5KCkKIAogICAgIGVnbERpc3BsYXlzKCkuYWRkKHRoaXMp
OwogCi0jaWYgIVBMQVRGT1JNKFdJTikKICAgICBzdGF0aWMgYm9vbCBlZ2xBdGV4aXRIYW5kbGVy
SW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBpZiAoIWVnbEF0ZXhpdEhhbmRsZXJJbml0aWFsaXpl
ZCkgewogICAgICAgICAvLyBFR0wgcmVnaXN0ZXJzIGF0ZXhpdCBoYW5kbGVycyB0byBjbGVhbnVw
IGl0cyBnbG9iYWwgZGlzcGxheSBsaXN0LgpAQCAtMjI1LDcgKzIyNCw2IEBAIHZvaWQgUGxhdGZv
cm1EaXNwbGF5Ojppbml0aWFsaXplRUdMRGlzcGxheSgpCiAgICAgICAgIGVnbEF0ZXhpdEhhbmRs
ZXJJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgIHN0ZDo6YXRleGl0KHNodXREb3duRWdsRGlz
cGxheXMpOwogICAgIH0KLSNlbmRpZgogfQogCiB2b2lkIFBsYXRmb3JtRGlzcGxheTo6dGVybWlu
YXRlRUdMRGlzcGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMzVhODQ3NDIzZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVz
aE1vbml0b3JXaW4uY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvcldp
bi5oIgorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2lu
PiBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OmNyZWF0ZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGlzcGxheVJlZnJlc2hNb25pdG9y
V2luKGRpc3BsYXlJRCkpOworfQorCitEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OkRpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCisgICAgOiBEaXNw
bGF5UmVmcmVzaE1vbml0b3IoZGlzcGxheUlEKQorICAgICwgbV90aW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OmRpc3BsYXlMaW5rRmlyZWQpCit7
Cit9CisKK2Jvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpyZXF1ZXN0UmVmcmVzaENhbGxi
YWNrKCkKK3sKKyAgICBpZiAoIWlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgxNl9tcyk7CisgICAgc2V0SXNBY3RpdmUodHJ1ZSk7Cisg
ICAgc2V0SXNTY2hlZHVsZWQodHJ1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yV2luOjpkaXNwbGF5TGlua0ZpcmVkKCkKK3sKKyAgICBpZiAoIWlz
UHJldmlvdXNGcmFtZURvbmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0SXNQcmV2aW91
c0ZyYW1lRG9uZShmYWxzZSk7CisKKyAgICBoYW5kbGVEaXNwbGF5UmVmcmVzaGVkTm90aWZpY2F0
aW9uT25NYWluVGhyZWFkKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZy
ZXNoTW9uaXRvcldpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi4xZDM3MDUxZDJjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlf
TU9OSVRPUikKKworI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGlzcGxheVJl
ZnJlc2hNb25pdG9yV2luIDogcHVibGljIERpc3BsYXlSZWZyZXNoTW9uaXRvciB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4+IGNyZWF0ZShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpOworCisgICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKCkg
b3ZlcnJpZGU7CisgICAgYm9vbCByZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkgb3ZlcnJpZGU7CisK
K3ByaXZhdGU6CisgICAgZXhwbGljaXQgRGlzcGxheVJlZnJlc2hNb25pdG9yV2luKFBsYXRmb3Jt
RGlzcGxheUlEKTsKKyAgICBSdW5Mb29wOjpUaW1lcjxEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4+
IG1fdGltZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0Uo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4u
Y21ha2UKaW5kZXggYzM1MTRlODNhMDIuLmQxY2NiMjBjOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4u
Y21ha2UKQEAgLTIyLDYgKzIyLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKIAogICAg
IFNoYXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKIAorICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKwogICAg
IFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlTm9uZS5jcHAKIAog
ICAgIFNoYXJlZC93aW4vQXV4aWxpYXJ5UHJvY2Vzc01haW5XaW4uY3BwCkBAIC0xNTgsNiArMTYw
LDEyIEBAIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogCiAgICAgICAgIFNoYXJlZC9B
UEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCiAKKyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKKyAgICAg
ICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5jcHAKKyAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorCisgICAgICAg
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1NpbXBsZVZpZXdwb3J0Q29udHJvbGxlci5jcHAK
KwogICAgICAgICBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAKICAgICAg
ICAgU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKQEAgLTE2Nyw2ICsx
NzUsOCBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKICAgICAgICAgVUlQcm9jZXNz
L2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAogCiAgICAgICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvY3VybC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorCisgICAgICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNwcAogICAgICkKIAog
ICAgIGxpc3QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggZWI2YWY5ODA2MjQuLmJlYjcyZmNhM2Iy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0yMjAsNyAr
MjIwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUo
KQogCiAgICAgLy8gU3RvcmUgbGF5ZXIgYW5kIGltcGwgcmVmZXJlbmNlcyBhbG9uZyB3aXRoIHRo
ZSBjb3JyZXNwb25kaW5nIHVwZGF0ZQogICAgIC8vIGZvciBlYWNoIHR5cGUgb2YgcG9zc2libGUg
bGF5ZXIgYmFja2luZy4KLSAgICBzdHJ1Y3QgeworICAgIHN0cnVjdCBMYXllcnNCeUJhY2tpbmcg
ewogICAgICAgICBzdHJ1Y3QgQmFja2luZ1N0b3JlIHsKICAgICAgICAgICAgIHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8VGV4dHVyZU1hcHBlckxheWVyPiBsYXllcjsKICAgICAgICAgICAgIHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8Tmljb3NpYTo6QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+
IGJhY2tpbmdTdG9yZTsKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsgc3RkOjpyZWYobGF5ZXIpLCBzdGQ6OnJlZihpbXBsLnByb3h5KCkpLCBsYXllclN0YXRl
LmRlbHRhLmNvbnRlbnRMYXllckNoYW5nZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKGxheWVyU3RhdGUuaW1hZ2VCYWNraW5nKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byYgaW1wbCA9IGltYWdlQmFja2luZ0ltcGwoKmxheWVyU3RhdGUuaW1hZ2VC
YWNraW5nKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnNCeUJhY2tpbmcuaW1h
Z2VCYWNraW5nLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnNCeUJh
Y2tpbmcuaW1hZ2VCYWNraW5nLmFwcGVuZDxMYXllcnNCeUJhY2tpbmc6OkltYWdlQmFja2luZz4o
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RkOjpyZWYobGF5ZXIpLCBzdGQ6
OnJlZihpbXBsKSwgaW1wbC50YWtlVXBkYXRlKCkgfSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5zZXRDb250ZW50c0xh
eWVyKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggZTBjZGVlZGZjMjEuLjBjZjU3MDc4NzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29t
cG9zaXRvci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6
Zm9yY2VSZXBhaW50KCkKIHsKICAgICAvLyBGSVhNRTogRW5hYmxlIHRoaXMgZm9yIFdQRSBvbmNl
IGl0J3MgcG9zc2libGUgdG8gZG8gdGhlc2UgZm9yY2VkIHVwZGF0ZXMKICAgICAvLyBpbiBhIHdh
eSB0aGF0IGRvZXNuJ3Qgc3RhcnZlIG91dCB0aGUgdW5kZXJseWluZyBncmFwaGljcyBidWZmZXJz
LgotI2lmIFBMQVRGT1JNKEdUSykKKyNpZiAhUExBVEZPUk0oV1BFKQogICAgIG1fY29tcG9zaXRp
bmdSdW5Mb29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gewogICAgICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9pbkZvcmNlUmVw
YWludCwgdHJ1ZSk7CiAgICAgICAgIHJlbmRlckxheWVyVHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA4OWY1MzVk
NGUyOS4uYTFiYmEwODk3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xMDUsNiArMTA1LDkgQEAgdm9pZCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
I2VuZGlmCiAjaWYgUExBVEZPUk0oV1BFKQogICAgIGVuY29kZXIgPDwgaG9zdEZpbGVEZXNjcmlw
dG9yOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGVuY29kZXIgPDwgbmF0aXZlV2lu
ZG93SGFuZGxlOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxQYWdpbmF0aW9uUXVp
cmtFbmFibGVkOwogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CkBA
IC0zMDYsNiArMzA5LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggNDNhZjQ2MWE3MzAuLmFiYjIxMDNiYjlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xNjQs
NiArMTY0LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAj
aWYgUExBVEZPUk0oV1BFKQogICAgIElQQzo6QXR0YWNobWVudCBob3N0RmlsZURlc2NyaXB0b3I7
CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgdWludDY0X3QgbmF0aXZlV2luZG93SGFu
ZGxlOwogI2VuZGlmCiAgICAgYm9vbCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwog
ICAgIGJvb2wgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4ODZkZWQ2OGNjNC4uMzlkOThjYTEwNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzE3Nyw2ICs3MTc3LDEw
IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFt
ZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5ob3N0RmlsZURlc2Ny
aXB0b3IgPSBwYWdlQ2xpZW50KCkuaG9zdEZpbGVEZXNjcmlwdG9yKCk7CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKFdJTikKKyAgICBwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHZpZXdXaWRnZXQoKSk7CisjZW5kaWYKKwogICAgIGZvciAo
YXV0byYgaXRlcmF0b3IgOiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWUpCiAgICAgICAgIHBh
cmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMuc2V0KGl0ZXJhdG9yLmtleSwgaXRlcmF0b3IudmFs
dWUtPmlkZW50aWZpZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCmluZGV4IGU1NzlhNWRmM2EwLi5hODA2
ZGY3OGI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWRTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgIkFj
Y2VsZXJhdGVkU3VyZmFjZVdQRS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pCisjaW5j
bHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTcsNiArNjEsMTAgQEAgc3RkOjp1
bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gQWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVhdGUo
V2ViUGFnZSYgd2ViUGFnZSwKICNpZiBQTEFURk9STShXUEUpCiAgICAgaWYgKFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldQ
RSkKICAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdQRTo6Y3JlYXRlKHdlYlBhZ2Us
IGNsaWVudCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6Oldp
bmRvd3MpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmNyZWF0ZSh3ZWJQ
YWdlLCBjbGllbnQpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDAxMDRlMDA2M2Y0Li5k
MDNjNjZkOGI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTM4NSw2ICszODUsMTAgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV92aWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQogI2VsaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFU
Rk9STShHVEspCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlPYmplY3QobnVsbHB0cikKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIC8vIE91ciB2
aWV3J3Mgd2luZG93IGluIHRoZSBVSSBwcm9jZXNzLgorICAgICwgbV9uYXRpdmVXaW5kb3dIYW5k
bGUocGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUpCiAjZW5kaWYKICAgICAsIG1fc2V0Q2Fu
U3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENhblN0
YXJ0TWVkaWFUaW1lckZpcmVkKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGEzOGViOGJhMWRlLi5kOGNh
ZWQ1NmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtOTY2LDcgKzk2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoVG91Y2hFdmVudChj
b25zdCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYgaGFuZGxlZCk7CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFBMQVRGT1JNKFdJTikgJiYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZSgp
IHsgcmV0dXJuIG1fbmF0aXZlV2luZG93SGFuZGxlOyB9CiAjZW5kaWYKIApAQCAtMTY2Myw3ICsx
NjYzLDcgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPEF0a09iamVjdD4gbV9hY2Nlc3NpYmlsaXR5
T2JqZWN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICAv
LyBPdXIgdmlldydzIHdpbmRvdyBpbiB0aGUgVUkgcHJvY2Vzcy4KICAgICB1aW50NjRfdCBtX25h
dGl2ZVdpbmRvd0hhbmRsZSB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGE3MmVkZTlkZTUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKworI2luY2x1ZGUgIldlYlBhZ2UuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1
bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4gQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpj
cmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwgQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXaW4+KG5ldyBBY2NlbGVyYXRlZFN1cmZh
Y2VXaW4od2ViUGFnZSwgY2xpZW50KSk7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdpbjo6QWNj
ZWxlcmF0ZWRTdXJmYWNlV2luKFdlYlBhZ2UmIHdlYlBhZ2UsIENsaWVudCYgY2xpZW50KQorICAg
IDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2UsIGNsaWVudCkKK3sKK30KKworQWNjZWxlcmF0
ZWRTdXJmYWNlV2luOjp+QWNjZWxlcmF0ZWRTdXJmYWNlV2luKCkKK3sKK30KKwordWludDY0X3Qg
QWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp3aW5kb3coKSBjb25zdAoreworICAgIHJldHVybiBtX3dl
YlBhZ2UubmF0aXZlV2luZG93SGFuZGxlKCk7Cit9CisKK3VpbnQ2NF90IEFjY2VsZXJhdGVkU3Vy
ZmFjZVdpbjo6c3VyZmFjZUlEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJ
RCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6ZGlkUmVuZGVyRnJhbWUoKQor
eworICAgIC8vIEZJWE1FOiBmcmFtZUNvbXBsZXRlKCkgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRo
ZSBmcmFtZSB3YXMgYWN0dWFsbHkgcmVuZGVyZWQgaW4gdGhlIHNjcmVlbi4KKyAgICBtX2NsaWVu
dC5mcmFtZUNvbXBsZXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFj
ZVdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVk
U3VyZmFjZVdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NWI0
NGVjNDM2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uaApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgUExBVEZPUk0oV0lOKQorCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBBY2NlbGVyYXRl
ZFN1cmZhY2VXaW4gZmluYWwgOiBwdWJsaWMgQWNjZWxlcmF0ZWRTdXJmYWNlIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZFN1cmZhY2VXaW4pOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVk
U3VyZmFjZVdpbj4gY3JlYXRlKFdlYlBhZ2UmLCBDbGllbnQmKTsKKyAgICB+QWNjZWxlcmF0ZWRT
dXJmYWNlV2luKCk7CisKKyAgICB1aW50NjRfdCB3aW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlbmRl
ckZyYW1lKCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
KFdlYlBhZ2UmLCBDbGllbnQmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NNYWluV2luLmNwcAppbmRleCBmYzM3YmZhYzlhZS4uMDI3YmM2YzgyZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4u
Y3BwCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIFdlYlByb2Nlc3NNYWluIGZpbmFsIDogcHVibGlj
IEF1eGlsaWFyeVByb2Nlc3NNYWluQmFzZSB7CiBwdWJsaWM6CiAgICAgYm9vbCBwbGF0Zm9ybUlu
aXRpYWxpemUoKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgU2V0UHJvY2Vzc0RQSUF3YXJlKCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKaW5kZXggZTQ0NzM3MGQ5ZDEuLjY2OTBmOGZiYjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgog
Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgIldlYlZpZXcuaCIKIApA
QCAtNDEzLDQgKzQxMyw0IEBAIGZsb2F0IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpk
ZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViVmlldy5kZXZpY2VTY2Fs
ZUZhY3RvcigpOwogfQogCi0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VuZGlm
IC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCmluZGV4IDZiYjMzNGQ0
NDFkLi4zMzc0ZDZhYTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0X2gKICNkZWZpbmUgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAogCi0jaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KQEAgLTk5LDYgKzk5LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoKTsKIH07CiAKLSNlbmRpZiAvLyBU
RVhUVVJFX01BUFBFUl9HTAorI2VuZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMICYmICFVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAKICNlbmRpZiAvLyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDc5ZmM0NmQwZmI4Li4x
N2JmMjQwNDQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE5OCw3ICsx
OTgsNyBAQAogI2lmIFVTRShDQSkKICNpbmNsdWRlIDxXZWJDb3JlL0NBQ0ZMYXllclRyZWVIb3N0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KLSNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dC5oIgogI2VuZGlmCiAKQEAgLTkyMCw3ICs5MjAsNyBAQCB2b2lkIFdlYlZpZXc6OmFkZFRvRGly
dHlSZWdpb24oY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogICAgIGlmIChpc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKSkgewogI2lmIFVTRShDQSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNl
dE5lZWRzRGlzcGxheUluUmVjdChkaXJ0eVJlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXROb25D
b21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShkaXJ0eVJlY3QpOwogI2VuZGlmCiAgICAgICAg
IHJldHVybjsKQEAgLTk5Miw3ICs5OTIsNyBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdT
dG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgaW50IGxvZ2ljYWxEeCwgaW50IGxvZ2ljYQogICAg
ICAgICAvLyBhbnkgbmV3bHktZXhwb3NlZCB0aWxlcy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI3
MTQ+CiAjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5
SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNl
bGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2Nyb2xsTm9uQ29tcG9z
aXRlZENvbnRlbnRzKHNjcm9sbFZpZXdSZWN0LCBJbnRTaXplKGR4LCBkeSkpOwogI2VuZGlmCiAg
ICAgICAgIHJldHVybjsKQEAgLTEwNzAsNyArMTA3MCw3IEBAIHZvaWQgV2ViVmlldzo6c2l6ZUNo
YW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNl
dFNpemUobmV3U2l6ZSk7CiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXko
KTsKICAgICB9Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKG1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQtPnJlc2l6ZVJvb3RMYXllcihuZXdTaXplKTsKICNlbmRpZgpAQCAtNTQ3Nyw3
ICs1NDc3LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdl
Yk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgIGhyID0gcHJlZnNQcml2YXRlLT5hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikp
CiAgICAgICAgIHJldHVybiBocjsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHN0
YXRpYyBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUgPSBBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpOwogICAg
IGVuYWJsZWQgPSBlbmFibGVkICYmIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGU7CiAj
ZWxpZiBVU0UoRElSRUNUMkQpCkBAIC02NDk0LDcgKzY0OTQsNyBAQCBib29sIFdlYlZpZXc6OnBh
aW50Q29tcG9zaXRlZENvbnRlbnRUb0hEQyhIREMgZGV2aWNlQ29udGV4dCkKIAogI2lmIFVTRShD
QSkKICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc05vdygpOwot
I2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIG1fYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQtPmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7CiAjZW5kaWYKIApAQCAtNzE1NCw3
ICs3MTU0LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRSb290Q2hpbGRMYXllcihHcmFwaGljc0xheWVy
KiBsYXllcikKICAgICBlbHNlCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5yZW1vdmVBbGxDaGls
ZHJlbigpOwogCi0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKCFtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIobGF5ZXIp
OwpAQCAtNzE2OSw3ICs3MTY5LDcgQEAgdm9pZCBXZWJWaWV3OjpmbHVzaFBlbmRpbmdHcmFwaGlj
c0xheWVyQ2hhbmdlc1Nvb24oKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7Ci0jZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKCFtX2FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbigpOwpAQCAtNzIzMCw3ICs3MjMw
LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJvb2wgYWNjZWxl
cmF0ZWQpCiAgICAgICAgIG1fYmFja2luZ0xheWVyID0gbnVsbHB0cjsKICAgICAgICAgbV9pc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBmYWxzZTsKICAgICB9Ci0jZWxpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiAgICAgaWYgKGFjY2VsZXJhdGVkICYmICFtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0KQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4oKnRoaXMpOwog
ICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gYWNjZWxlcmF0ZWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmgKaW5kZXggYWQ0ZTMyZDQ3ZTguLjNlNjg1NTQ5ZGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5oCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFdlYkJhY2tGb3J3YXJk
TGlzdDsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViSW5zcGVjdG9yOwogY2xhc3MgV2ViSW5z
cGVjdG9yQ2xpZW50OwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBjbGFzcyBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDsKICNlbmRpZgogY2xhc3MgV2ViVmlld0dyb3VwOwpAQCAt
NzA2LDcgKzcwNiw3IEBAIHByb3RlY3RlZDoKICNpZiBVU0UoQ0EpCiAgICAgUmVmUHRyPFdlYkNv
cmU6OkNBQ0ZMYXllclRyZWVIb3N0PiBtX2xheWVyVHJlZUhvc3Q7CiAgICAgUmVmUHRyPFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI+IG1fYmFja2luZ0xheWVyOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dD4gbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDsKICNlbmRpZgogICAgIGJvb2wg
bV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L2NtYWtlL09wdGlvbnNXaW4uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQpp
bmRleCBiNmMxMzg2MjMyMS4uZGI3M2YwZGU3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zV2luLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC03
Nyw2ICs3Nyw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJf
Q1JZUFRPIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoVVNF
X1NZU1RFTV9NQUxMT0MgUFJJVkFURSBPTikKIAogaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlS
T30pCisgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FTWU5DX1ND
Uk9MTElORyBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9MRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIgUFVCTElDIE9GRikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSBQVUJMSUMgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9JTlRMIFBVQkxJQyBPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2lu
Q2Fpcm8uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCmluZGV4IGE3
MTZlYzZmMGVhLi5iYjJjNzY1OWU3OCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNX
aW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCkBA
IC0yNCw3ICsyNCwxMSBAQCBlbmRpZiAoKQogCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
Q0FJUk8gT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfQ0YgT04pCitTRVRfQU5EX0VY
UE9TRV9UT19CVUlMRChVU0VfQ09PUkRJTkFURURfR1JBUEhJQ1MgT04pCitTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQgT04pCiBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfQ1VSTCBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9OSUNPU0lBIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1JFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUiBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9URVhUVVJFX01BUFBFUiBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9URVhUVVJF
X01BUFBFUl9HTCBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9NRURJQV9GT1VOREFU
SU9OIE9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369934</attachid>
            <date>2019-05-15 00:38:39 -0700</date>
            <delta_ts>2019-05-19 22:59:39 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>28344</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGVkNjlkNzQzYWU1Li44MTg2
ZWI1MWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSwxMSAr
MTEsMjEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKKworICAgIHBhZ2Uv
c2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKKwogICAgIHBhZ2Uv
d2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcAppbmRleCA3NmEyMDgxM2E2NS4uZDVkNDc2NDc0NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5oIgogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9u
aXRvckd0ay5oIgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvcldpbi5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDYgKzU0
LDkgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2gKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpjcmVhdGUoZGlzcGxheUlEKTsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25p
dG9yV2luOjpjcmVhdGUoZGlzcGxheUlEKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShkaXNw
bGF5SUQpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggZDIzYzYwNzkyZWEuLmEz
ZGNlNzVhYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybURpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBQbGF0Zm9ybURpc3BsYXk6
OlBsYXRmb3JtRGlzcGxheShOYXRpdmVEaXNwbGF5T3duZWQgZGlzcGxheU93bmVkKQogCiBQbGF0
Zm9ybURpc3BsYXk6On5QbGF0Zm9ybURpc3BsYXkoKQogewotI2lmIFVTRShFR0wpCisjaWYgVVNF
KEVHTCkgJiYgIVBMQVRGT1JNKFdJTikKICAgICBBU1NFUlQobV9lZ2xEaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTM1YTg0NzQyM2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxh
eVJlZnJlc2hNb25pdG9yV2luLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4uaCIKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcldpbj4gRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpjcmVhdGUoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlSZWZyZXNo
TW9uaXRvcldpbihkaXNwbGF5SUQpKTsKK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQorICAg
IDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKKyAgICAsIG1fdGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpkaXNwbGF5TGlua0Zp
cmVkKQoreworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6cmVxdWVzdFJlZnJl
c2hDYWxsYmFjaygpCit7CisgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgbV90aW1lci5zdGFydE9uZVNob3QoMTZfbXMpOworICAgIHNldElzQWN0aXZlKHRy
dWUpOworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7CisgICAg
aWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNldElz
UHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOworCisgICAgaGFuZGxlRGlzcGxheVJlZnJlc2hlZE5v
dGlmaWNhdGlvbk9uTWFpblRocmVhZCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNw
bGF5UmVmcmVzaE1vbml0b3JXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMWQzNzA1MWQyYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9E
SVNQTEFZX01PTklUT1IpCisKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbiA6IHB1YmxpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3Igewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2luPiBjcmVh
dGUoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKTsKKworICAgIHZvaWQgZGlzcGxheUxpbmtG
aXJlZCgpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJy
aWRlOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbihQ
bGF0Zm9ybURpc3BsYXlJRCk7CisgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheVJlZnJlc2hNb25p
dG9yV2luPiBtX3RpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCmluZGV4IGMzNTE0ZTgzYTAyLi5kMWNjYjIwYzkzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCkBAIC0yMiw2ICsyMiw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VT
CiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCiAKKyAg
ICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUu
Y3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcApAQCAtMTU4
LDYgKzE2MCwxMiBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKIAogICAgICAgICBT
aGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAogCisgICAgICAgIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3Bw
CisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKwor
ICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCisKICAgICAgICAgU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAog
CiAgICAgICAgIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0x
NjcsNiArMTc1LDggQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgICAgIFVJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKworICAg
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKICAg
ICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGViNmFmOTgwNjI0Li5iZWI3
MmZjYTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAt
MjIwLDcgKzIyMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2Vu
ZVN0YXRlKCkKIAogICAgIC8vIFN0b3JlIGxheWVyIGFuZCBpbXBsIHJlZmVyZW5jZXMgYWxvbmcg
d2l0aCB0aGUgY29ycmVzcG9uZGluZyB1cGRhdGUKICAgICAvLyBmb3IgZWFjaCB0eXBlIG9mIHBv
c3NpYmxlIGxheWVyIGJhY2tpbmcuCi0gICAgc3RydWN0IHsKKyAgICBzdHJ1Y3QgTGF5ZXJzQnlC
YWNraW5nIHsKICAgICAgICAgc3RydWN0IEJhY2tpbmdTdG9yZSB7CiAgICAgICAgICAgICBzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFRleHR1cmVNYXBwZXJMYXllcj4gbGF5ZXI7CiAgICAgICAgICAg
ICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsPiBiYWNraW5nU3RvcmU7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbC5wcm94eSgpKSwgbGF5
ZXJTdGF0ZS5kZWx0YS5jb250ZW50TGF5ZXJDaGFuZ2VkIH0pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChsYXllclN0YXRlLmltYWdlQmFja2luZykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIGltcGwgPSBpbWFnZUJhY2tpbmdJbXBsKCpsYXllclN0YXRl
LmltYWdlQmFja2luZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNr
aW5nLmltYWdlQmFja2luZy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5
ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5hcHBlbmQ8TGF5ZXJzQnlCYWNraW5nOjpJbWFnZUJh
Y2tpbmc+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVy
KSwgc3RkOjpyZWYoaW1wbCksIGltcGwudGFrZVVwZGF0ZSgpIH0pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0Q29u
dGVudHNMYXllcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGUwY2RlZWRmYzIxLi4wY2Y1NzA3
ODcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OmZvcmNlUmVwYWludCgpCiB7CiAgICAgLy8gRklYTUU6IEVuYWJsZSB0aGlzIGZvciBX
UEUgb25jZSBpdCdzIHBvc3NpYmxlIHRvIGRvIHRoZXNlIGZvcmNlZCB1cGRhdGVzCiAgICAgLy8g
aW4gYSB3YXkgdGhhdCBkb2Vzbid0IHN0YXJ2ZSBvdXQgdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3Mg
YnVmZmVycy4KLSNpZiBQTEFURk9STShHVEspCisjaWYgIVBMQVRGT1JNKFdQRSkKICAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1faW5G
b3JjZVJlcGFpbnQsIHRydWUpOwogICAgICAgICByZW5kZXJMYXllclRyZWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
ODlmNTM1ZDRlMjkuLmExYmJhMDg5NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTA1LDYgKzEwNSw5IEBAIHZvaWQg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBlbmNvZGVyIDw8IGhvc3RGaWxl
RGVzY3JpcHRvcjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBlbmNvZGVyIDw8IG5h
dGl2ZVdpbmRvd0hhbmRsZTsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsUGFnaW5h
dGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFi
bGVkOwpAQCAtMzA2LDYgKzMwOSwxMSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5hcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDQzYWY0NjFhNzMwLi5hYmIyMTAzYmI5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtMTY0LDYgKzE2NCw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBJUEM6OkF0dGFjaG1lbnQgaG9zdEZpbGVEZXNj
cmlwdG9yOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIHVpbnQ2NF90IG5hdGl2ZVdp
bmRvd0hhbmRsZTsKICNlbmRpZgogICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5h
YmxlZDsKICAgICBib29sIGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODg2ZGVkNjhjYzQuLjM5ZDk4Y2ExMDUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcxNzcsNiAr
NzE3NywxMCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRp
b25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuaG9zdEZp
bGVEZXNjcmlwdG9yID0gcGFnZUNsaWVudCgpLmhvc3RGaWxlRGVzY3JpcHRvcigpOwogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShXSU4pCisgICAgcGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUg
PSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Pih2aWV3V2lkZ2V0KCkpOworI2VuZGlmCisKICAg
ICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDogbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lKQogICAg
ICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzLnNldChpdGVyYXRvci5rZXksIGl0ZXJh
dG9yLnZhbHVlLT5pZGVudGlmaWVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAppbmRleCBlNTc5YTVkZjNh
MC4uYTgwNmRmNzhiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNs
dWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXUEUuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lO
KQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU3LDYgKzYxLDEwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IEFjY2VsZXJhdGVkU3VyZmFjZTo6
Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsCiAjaWYgUExBVEZPUk0oV1BFKQogICAgIGlmIChQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpU
eXBlOjpXUEUpCiAgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VXUEU6OmNyZWF0ZSh3
ZWJQYWdlLCBjbGllbnQpOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmIChQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpU
eXBlOjpXaW5kb3dzKQorICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpjcmVh
dGUod2ViUGFnZSwgY2xpZW50KTsKICNlbmRpZgogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwMTA0ZTAw
NjNmNC4uZDAzYzY2ZDhiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zODUsNiArMzg1LDEwIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAs
IG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I+KCp0aGlzKSkKICNlbGlmIEhBVkUoQUNDRVNTSUJJTElUWSkg
JiYgUExBVEZPUk0oR1RLKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCisj
ZW5kaWYKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAv
LyBPdXIgdmlldydzIHdpbmRvdyBpbiB0aGUgVUkgcHJvY2Vzcy4KKyAgICAsIG1fbmF0aXZlV2lu
ZG93SGFuZGxlKHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlKQogI2VuZGlmCiAgICAgLCBt
X3NldENhblN0YXJ0TWVkaWFUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlOjpz
ZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhMzhlYjhiYTFk
ZS4uZDhjYWVkNTZlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTk2Niw3ICs5NjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaFRvdWNo
RXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYsIGJvb2wmIGhhbmRsZWQpOwogI2VuZGlmCiAKLSNp
ZiBQTEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBQTEFURk9STShX
SU4pICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dI
YW5kbGUoKSB7IHJldHVybiBtX25hdGl2ZVdpbmRvd0hhbmRsZTsgfQogI2VuZGlmCiAKQEAgLTE2
NjMsNyArMTY2Myw3IEBAIHByaXZhdGU6CiAgICAgR1JlZlB0cjxBdGtPYmplY3Q+IG1fYWNjZXNz
aWJpbGl0eU9iamVjdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
CiAgICAgLy8gT3VyIHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgdWludDY0
X3QgbV9uYXRpdmVXaW5kb3dIYW5kbGUgeyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFj
ZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhhNzJlZGU5
ZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
d2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgiCisKKyNpbmNsdWRlICJXZWJQ
YWdlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXaW4+IEFjY2VsZXJhdGVkU3VyZmFj
ZVdpbjo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsIENsaWVudCYgY2xpZW50KQoreworICAgIHJl
dHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPihuZXcgQWNjZWxlcmF0
ZWRTdXJmYWNlV2luKHdlYlBhZ2UsIGNsaWVudCkpOworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VX
aW46OkFjY2VsZXJhdGVkU3VyZmFjZVdpbihXZWJQYWdlJiB3ZWJQYWdlLCBDbGllbnQmIGNsaWVu
dCkKKyAgICA6IEFjY2VsZXJhdGVkU3VyZmFjZSh3ZWJQYWdlLCBjbGllbnQpCit7Cit9CisKK0Fj
Y2VsZXJhdGVkU3VyZmFjZVdpbjo6fkFjY2VsZXJhdGVkU3VyZmFjZVdpbigpCit7Cit9CisKK3Vp
bnQ2NF90IEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6d2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV93ZWJQYWdlLm5hdGl2ZVdpbmRvd0hhbmRsZSgpOworfQorCit1aW50NjRfdCBBY2NlbGVy
YXRlZFN1cmZhY2VXaW46OnN1cmZhY2VJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFn
ZS5wYWdlSUQoKTsKK30KKwordm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmRpZFJlbmRlckZy
YW1lKCkKK3sKKyAgICAvLyBGSVhNRTogZnJhbWVDb21wbGV0ZSgpIHNob3VsZCBiZSBjYWxsZWQg
d2hlbiB0aGUgZnJhbWUgd2FzIGFjdHVhbGx5IHJlbmRlcmVkIGluIHRoZSBzY3JlZW4uCisgICAg
bV9jbGllbnQuZnJhbWVDb21wbGV0ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRl
ZFN1cmZhY2VXaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2Nl
bGVyYXRlZFN1cmZhY2VXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uNjViNDRlYzQzNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgKQEAgLTAsMCArMSw1MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIFBMQVRGT1JNKFdJTikKKworI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFj
ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkU3VyZmFjZSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlV2luKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2Nl
bGVyYXRlZFN1cmZhY2VXaW4+IGNyZWF0ZShXZWJQYWdlJiwgQ2xpZW50Jik7CisgICAgfkFjY2Vs
ZXJhdGVkU3VyZmFjZVdpbigpOworCisgICAgdWludDY0X3Qgd2luZG93KCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZW5kZXJGcmFtZSgpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkU3Vy
ZmFjZVdpbihXZWJQYWdlJiwgQ2xpZW50Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKaW5kZXggZmMzN2JmYWM5YWUuLjAyN2JjNmM4
MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NN
YWluV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NN
YWluV2luLmNwcApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBXZWJQcm9jZXNzTWFpbiBmaW5hbCA6
IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzTWFpbkJhc2UgewogcHVibGljOgogICAgIGJvb2wgcGxh
dGZvcm1Jbml0aWFsaXplKCkgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIFNldFByb2Nlc3NEUElB
d2FyZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCmluZGV4IGU0NDczNzBkOWQxLi42NjkwZjhm
YmIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcApA
QCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQuaCIKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJXZWJWaWV3
LmgiCiAKQEAgLTQxMyw0ICs0MTMsNCBAQCBmbG9hdCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dDo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlZpZXcuZGV2
aWNlU2NhbGVGYWN0b3IoKTsKIH0KIAotI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCA2
YmIzMzRkNDQxZC4uMzM3NGQ2YWE0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dF9oCiAjZGVmaW5lIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gK
IAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+CkBAIC05OSw2ICs5OSw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKCk7CiB9OwogCi0jZW5k
aWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wKKyNlbmRpZiAvLyBURVhUVVJFX01BUFBFUl9HTCAmJiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjZW5kaWYgLy8gQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA3OWZjNDZk
MGZiOC4uMTdiZjI0MDQ0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0x
OTgsNyArMTk4LDcgQEAKICNpZiBVU0UoQ0EpCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUNGTGF5ZXJU
cmVlSG9zdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+Ci0jZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQuaCIKICNlbmRpZgogCkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBXZWJWaWV3Ojph
ZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICBpZiAoaXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoZGlydHlSZWN0KTsKLSNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+
c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoZGlydHlSZWN0KTsKICNlbmRpZgog
ICAgICAgICByZXR1cm47CkBAIC05OTIsNyArOTkyLDcgQEAgdm9pZCBXZWJWaWV3OjpzY3JvbGxC
YWNraW5nU3RvcmUoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGludCBsb2dpY2FsRHgsIGludCBsb2dp
Y2EKICAgICAgICAgLy8gYW55IG5ld2x5LWV4cG9zZWQgdGlsZXMuIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzUyNzE0PgogI2lmIFVTRShDQSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRz
RGlzcGxheUluUmVjdChzY3JvbGxWaWV3UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNjcm9sbE5v
bkNvbXBvc2l0ZWRDb250ZW50cyhzY3JvbGxWaWV3UmVjdCwgSW50U2l6ZShkeCwgZHkpKTsKICNl
bmRpZgogICAgICAgICByZXR1cm47CkBAIC0xMDcwLDcgKzEwNzAsNyBAQCB2b2lkIFdlYlZpZXc6
OnNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgIG1fYmFja2luZ0xh
eWVyLT5zZXRTaXplKG5ld1NpemUpOwogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNE
aXNwbGF5KCk7CiAgICAgfQotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlm
IChtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQogICAgICAgICBtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LT5yZXNpemVSb290TGF5ZXIobmV3U2l6ZSk7CiAjZW5kaWYKQEAg
LTU0NzcsNyArNTQ3Nyw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICBociA9IHByZWZzUHJpdmF0
ZS0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlM
RUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQor
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICBzdGF0aWMgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlID0gQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUo
KTsKICAgICBlbmFibGVkID0gZW5hYmxlZCAmJiBhY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxh
YmxlOwogI2VsaWYgVVNFKERJUkVDVDJEKQpAQCAtNjQ5NCw3ICs2NDk0LDcgQEAgYm9vbCBXZWJW
aWV3OjpwYWludENvbXBvc2l0ZWRDb250ZW50VG9IREMoSERDIGRldmljZUNvbnRleHQpCiAKICNp
ZiBVU0UoQ0EpCiAgICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNO
b3coKTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaEFuZFJlbmRlckxheWVycygpOwogI2VuZGlmCiAKQEAg
LTcxNTQsNyArNzE1NCw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiAgICAgZWxzZQogICAgICAgICBtX2JhY2tpbmdMYXllci0+cmVtb3Zl
QWxsQ2hpbGRyZW4oKTsKIAotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlm
ICghbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldFJvb3RDb21wb3NpdGluZ0xheWVy
KGxheWVyKTsKQEAgLTcxNjksNyArNzE2OSw3IEBAIHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5n
R3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwot
I2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9hY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsKQEAgLTcyMzAs
NyArNzIzMCw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29s
IGFjY2VsZXJhdGVkKQogICAgICAgICBtX2JhY2tpbmdMYXllciA9IG51bGxwdHI7CiAgICAgICAg
IG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gZmFsc2U7CiAgICAgfQotI2VsaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0
aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJhdGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5oCmluZGV4IGFkNGUzMmQ0N2U4Li4zZTY4NTU0OWRiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNsYXNz
IFdlYkluc3BlY3RvckNsaWVudDsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogY2xhc3Mg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKIGNsYXNzIFdlYlZpZXdHcm91
cDsKQEAgLTcwNiw3ICs3MDYsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgVVNFKENBKQogICAgIFJlZlB0
cjxXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwogICAgIFJlZlB0
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2JhY2tpbmdMYXllcjsKLSNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ+IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKICAg
ICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4u
Y21ha2UKaW5kZXggYjZjMTM4NjIzMjEuLmRiNzNmMGRlNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFr
ZQpAQCAtNzcsNiArNzcsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfV0VCX0NSWVBUTyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKFVTRV9TWVNURU1fTUFMTE9DIFBSSVZBVEUgT04pCiAKIGlmICgke1dURl9QTEFURk9STV9X
SU5fQ0FJUk99KQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9B
U1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSIFBVQkxJQyBPRkYp
CiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9FTkNS
WVBURURfTUVESUEgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfSU5UTCBQVUJMSUMgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpp
bmRleCBhNzE2ZWM2ZjBlYS4uYmIyYzc2NTllNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5j
bWFrZQpAQCAtMjQsNyArMjQsMTEgQEAgZW5kaWYgKCkKIAogU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NGIE9OKQorU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTIE9OKQorU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEIE9OKQog
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCitTRVRfQU5EX0VYUE9TRV9UT19C
VUlMRChVU0VfTklDT1NJQSBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9SRVFVRVNU
X0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19C
VUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
VEVYVFVSRV9NQVBQRVJfR0wgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTUVESUFf
Rk9VTkRBVElPTiBPTikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370239</attachid>
            <date>2019-05-19 22:59:39 -0700</date>
            <delta_ts>2019-05-29 23:04:59 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>28348</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGVkNjlkNzQzYWU1Li44MTg2
ZWI1MWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSwxMSAr
MTEsMjEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKKworICAgIHBhZ2Uv
c2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKKwogICAgIHBhZ2Uv
d2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcAppbmRleCA3NmEyMDgxM2E2NS4uZDVkNDc2NDc0NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5oIgogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9u
aXRvckd0ay5oIgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvcldpbi5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDYgKzU0
LDkgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2gKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpjcmVhdGUoZGlzcGxheUlEKTsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25p
dG9yV2luOjpjcmVhdGUoZGlzcGxheUlEKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShkaXNw
bGF5SUQpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggZDIzYzYwNzkyZWEuLmEz
ZGNlNzVhYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybURpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBQbGF0Zm9ybURpc3BsYXk6
OlBsYXRmb3JtRGlzcGxheShOYXRpdmVEaXNwbGF5T3duZWQgZGlzcGxheU93bmVkKQogCiBQbGF0
Zm9ybURpc3BsYXk6On5QbGF0Zm9ybURpc3BsYXkoKQogewotI2lmIFVTRShFR0wpCisjaWYgVVNF
KEVHTCkgJiYgIVBMQVRGT1JNKFdJTikKICAgICBBU1NFUlQobV9lZ2xEaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTM1YTg0NzQyM2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxh
eVJlZnJlc2hNb25pdG9yV2luLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4uaCIKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcldpbj4gRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpjcmVhdGUoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlSZWZyZXNo
TW9uaXRvcldpbihkaXNwbGF5SUQpKTsKK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQorICAg
IDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKKyAgICAsIG1fdGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpkaXNwbGF5TGlua0Zp
cmVkKQoreworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6cmVxdWVzdFJlZnJl
c2hDYWxsYmFjaygpCit7CisgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgbV90aW1lci5zdGFydE9uZVNob3QoMTZfbXMpOworICAgIHNldElzQWN0aXZlKHRy
dWUpOworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7CisgICAg
aWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNldElz
UHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOworCisgICAgaGFuZGxlRGlzcGxheVJlZnJlc2hlZE5v
dGlmaWNhdGlvbk9uTWFpblRocmVhZCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNw
bGF5UmVmcmVzaE1vbml0b3JXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMWQzNzA1MWQyYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9E
SVNQTEFZX01PTklUT1IpCisKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbiA6IHB1YmxpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3Igewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2luPiBjcmVh
dGUoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKTsKKworICAgIHZvaWQgZGlzcGxheUxpbmtG
aXJlZCgpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJy
aWRlOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbihQ
bGF0Zm9ybURpc3BsYXlJRCk7CisgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheVJlZnJlc2hNb25p
dG9yV2luPiBtX3RpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCmluZGV4IGMzNTE0ZTgzYTAyLi5kMWNjYjIwYzkzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCkBAIC0yMiw2ICsyMiw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VT
CiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCiAKKyAg
ICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUu
Y3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcApAQCAtMTU4
LDYgKzE2MCwxMiBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKIAogICAgICAgICBT
aGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAogCisgICAgICAgIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3Bw
CisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKwor
ICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCisKICAgICAgICAgU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAog
CiAgICAgICAgIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0x
NjcsNiArMTc1LDggQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgICAgIFVJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKworICAg
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKICAg
ICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGViNmFmOTgwNjI0Li5iZWI3
MmZjYTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAt
MjIwLDcgKzIyMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2Vu
ZVN0YXRlKCkKIAogICAgIC8vIFN0b3JlIGxheWVyIGFuZCBpbXBsIHJlZmVyZW5jZXMgYWxvbmcg
d2l0aCB0aGUgY29ycmVzcG9uZGluZyB1cGRhdGUKICAgICAvLyBmb3IgZWFjaCB0eXBlIG9mIHBv
c3NpYmxlIGxheWVyIGJhY2tpbmcuCi0gICAgc3RydWN0IHsKKyAgICBzdHJ1Y3QgTGF5ZXJzQnlC
YWNraW5nIHsKICAgICAgICAgc3RydWN0IEJhY2tpbmdTdG9yZSB7CiAgICAgICAgICAgICBzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFRleHR1cmVNYXBwZXJMYXllcj4gbGF5ZXI7CiAgICAgICAgICAg
ICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsPiBiYWNraW5nU3RvcmU7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbC5wcm94eSgpKSwgbGF5
ZXJTdGF0ZS5kZWx0YS5jb250ZW50TGF5ZXJDaGFuZ2VkIH0pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChsYXllclN0YXRlLmltYWdlQmFja2luZykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIGltcGwgPSBpbWFnZUJhY2tpbmdJbXBsKCpsYXllclN0YXRl
LmltYWdlQmFja2luZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNr
aW5nLmltYWdlQmFja2luZy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5
ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5hcHBlbmQ8TGF5ZXJzQnlCYWNraW5nOjpJbWFnZUJh
Y2tpbmc+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVy
KSwgc3RkOjpyZWYoaW1wbCksIGltcGwudGFrZVVwZGF0ZSgpIH0pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0Q29u
dGVudHNMYXllcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGUwY2RlZWRmYzIxLi4wY2Y1NzA3
ODcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OmZvcmNlUmVwYWludCgpCiB7CiAgICAgLy8gRklYTUU6IEVuYWJsZSB0aGlzIGZvciBX
UEUgb25jZSBpdCdzIHBvc3NpYmxlIHRvIGRvIHRoZXNlIGZvcmNlZCB1cGRhdGVzCiAgICAgLy8g
aW4gYSB3YXkgdGhhdCBkb2Vzbid0IHN0YXJ2ZSBvdXQgdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3Mg
YnVmZmVycy4KLSNpZiBQTEFURk9STShHVEspCisjaWYgIVBMQVRGT1JNKFdQRSkKICAgICBtX2Nv
bXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1faW5G
b3JjZVJlcGFpbnQsIHRydWUpOwogICAgICAgICByZW5kZXJMYXllclRyZWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
ODlmNTM1ZDRlMjkuLmExYmJhMDg5NzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTA1LDYgKzEwNSw5IEBAIHZvaWQg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBlbmNvZGVyIDw8IGhvc3RGaWxl
RGVzY3JpcHRvcjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBlbmNvZGVyIDw8IG5h
dGl2ZVdpbmRvd0hhbmRsZTsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsUGFnaW5h
dGlvblF1aXJrRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFi
bGVkOwpAQCAtMzA2LDYgKzMwOSwxMSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5hcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDQzYWY0NjFhNzMwLi5hYmIyMTAzYmI5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtMTY0LDYgKzE2NCw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKFdQRSkKICAgICBJUEM6OkF0dGFjaG1lbnQgaG9zdEZpbGVEZXNj
cmlwdG9yOworI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIHVpbnQ2NF90IG5hdGl2ZVdp
bmRvd0hhbmRsZTsKICNlbmRpZgogICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5h
YmxlZDsKICAgICBib29sIGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDEwYzQ4NjMxMTUuLjc0NGNkMTY2NTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcxNjgsNiAr
NzE2OCwxMCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRp
b25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuaG9zdEZp
bGVEZXNjcmlwdG9yID0gcGFnZUNsaWVudCgpLmhvc3RGaWxlRGVzY3JpcHRvcigpOwogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShXSU4pCisgICAgcGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUg
PSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Pih2aWV3V2lkZ2V0KCkpOworI2VuZGlmCisKICAg
ICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDogbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lKQogICAg
ICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzLnNldChpdGVyYXRvci5rZXksIGl0ZXJh
dG9yLnZhbHVlLT5pZGVudGlmaWVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAppbmRleCBlZjBkMWZjNWI2
Zi4uYzFlMThjZjJlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNs
dWRlICJBY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
V0lOKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU3LDYgKzYxLDEw
IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IEFjY2VsZXJhdGVkU3VyZmFj
ZTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsCiAjaWYgVVNFKExJQldQRSkKICAgICBpZiAoUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6
VHlwZTo6V1BFKQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFOjpjcmVh
dGUod2ViUGFnZSwgY2xpZW50KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAo
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxh
eTo6VHlwZTo6V2luZG93cykKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6
Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CiAjZW5kaWYKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTMz
MDFjYzUwY2EuLmU3MDk5MGMxY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMzg2LDYgKzM4NiwxMCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAg
ICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBIQVZFKEFDQ0VTU0lCSUxJ
VFkpICYmIFBMQVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRy
KQorI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisg
ICAgLy8gT3VyIHZpZXcncyB3aW5kb3cgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgLCBtX25hdGl2
ZVdpbmRvd0hhbmRsZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkKICNlbmRpZgogICAg
ICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFn
ZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzQ4NmZj
NDY3MTQuLmE4MmZjMTY0OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC05NjcsNyArOTY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hU
b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVkKTsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdWludDY0X3QgbmF0aXZlV2lu
ZG93SGFuZGxlKCkgeyByZXR1cm4gbV9uYXRpdmVXaW5kb3dIYW5kbGU7IH0KICNlbmRpZgogCkBA
IC0xNjY4LDcgKzE2NjgsNyBAQCBwcml2YXRlOgogICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBtX2Fj
Y2Vzc2liaWxpdHlPYmplY3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQogICAgIC8vIE91ciB2aWV3J3Mgd2luZG93IGluIHRoZSBVSSBwcm9jZXNzLgogICAgIHVp
bnQ2NF90IG1fbmF0aXZlV2luZG93SGFuZGxlIHsgMCB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1
cmZhY2VXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YTcy
ZWRlOWRlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIgorCisjaW5jbHVkZSAi
V2ViUGFnZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPiBBY2NlbGVyYXRlZFN1
cmZhY2VXaW46OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBDbGllbnQmIGNsaWVudCkKK3sKKyAg
ICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4obmV3IEFjY2Vs
ZXJhdGVkU3VyZmFjZVdpbih3ZWJQYWdlLCBjbGllbnQpKTsKK30KKworQWNjZWxlcmF0ZWRTdXJm
YWNlV2luOjpBY2NlbGVyYXRlZFN1cmZhY2VXaW4oV2ViUGFnZSYgd2ViUGFnZSwgQ2xpZW50JiBj
bGllbnQpCisgICAgOiBBY2NlbGVyYXRlZFN1cmZhY2Uod2ViUGFnZSwgY2xpZW50KQoreworfQor
CitBY2NlbGVyYXRlZFN1cmZhY2VXaW46On5BY2NlbGVyYXRlZFN1cmZhY2VXaW4oKQoreworfQor
Cit1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OndpbmRvdygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fd2ViUGFnZS5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKK30KKwordWludDY0X3QgQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luOjpzdXJmYWNlSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3dl
YlBhZ2UucGFnZUlEKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpkaWRSZW5k
ZXJGcmFtZSgpCit7CisgICAgLy8gRklYTUU6IGZyYW1lQ29tcGxldGUoKSBzaG91bGQgYmUgY2Fs
bGVkIHdoZW4gdGhlIGZyYW1lIHdhcyBhY3R1YWxseSByZW5kZXJlZCBpbiB0aGUgc2NyZWVuLgor
ICAgIG1fY2xpZW50LmZyYW1lQ29tcGxldGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxl
cmF0ZWRTdXJmYWNlV2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4v
QWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjY1YjQ0ZWM0MzY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXSU4pCisKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1
cmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNz
IEFjY2VsZXJhdGVkU3VyZmFjZVdpbiBmaW5hbCA6IHB1YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2Ug
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFjZVdpbik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
QWNjZWxlcmF0ZWRTdXJmYWNlV2luPiBjcmVhdGUoV2ViUGFnZSYsIENsaWVudCYpOworICAgIH5B
Y2NlbGVyYXRlZFN1cmZhY2VXaW4oKTsKKworICAgIHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92
ZXJyaWRlOworICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVuZGVyRnJhbWUoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBBY2NlbGVyYXRl
ZFN1cmZhY2VXaW4oV2ViUGFnZSYsIENsaWVudCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCmluZGV4IGZjMzdiZmFjOWFlLi4wMjdi
YzZjODJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzTWFpbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzTWFpbldpbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc01haW4gZmlu
YWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc01haW5CYXNlIHsKIHB1YmxpYzoKICAgICBib29s
IHBsYXRmb3JtSW5pdGlhbGl6ZSgpIG92ZXJyaWRlCiAgICAgeworICAgICAgICBTZXRQcm9jZXNz
RFBJQXdhcmUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCBlNDQ3MzcwZDlkMS4uNjY5
MGY4ZmJiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5j
cHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiV2Vi
Vmlldy5oIgogCkBAIC00MTMsNCArNDEzLDQgQEAgZmxvYXQgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1cm4gbV93ZWJWaWV3
LmRldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCisjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5k
ZXggNmJiMzM0ZDQ0MWQuLjMzNzRkNmFhNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRfaAogI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dF9oCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgpAQCAtOTksNiArOTks
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcigpOwogfTsKIAot
I2VuZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMCisjZW5kaWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wg
JiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2VuZGlmIC8vIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggNzlm
YzQ2ZDBmYjguLjE3YmYyNDA0NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApA
QCAtMTk4LDcgKzE5OCw3IEBACiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxh
eWVyVHJlZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgotI2Vs
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LmgiCiAjZW5kaWYKIApAQCAtOTIwLDcgKzkyMCw3IEBAIHZvaWQgV2ViVmll
dzo6YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiAgICAgaWYgKGlz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tp
bmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Ci0jZWxpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQtPnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGRpcnR5UmVjdCk7CiAjZW5k
aWYKICAgICAgICAgcmV0dXJuOwpAQCAtOTkyLDcgKzk5Miw3IEBAIHZvaWQgV2ViVmlldzo6c2Ny
b2xsQmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBpbnQgbG9naWNhbER4LCBpbnQg
bG9naWNhCiAgICAgICAgIC8vIGFueSBuZXdseS1leHBvc2VkIHRpbGVzLiA8aHR0cDovL3dlYmtp
dC5vcmcvYi81MjcxND4KICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXRO
ZWVkc0Rpc3BsYXlJblJlY3Qoc2Nyb2xsVmlld1JlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zY3Jv
bGxOb25Db21wb3NpdGVkQ29udGVudHMoc2Nyb2xsVmlld1JlY3QsIEludFNpemUoZHgsIGR5KSk7
CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwpAQCAtMTA3MCw3ICsxMDcwLDcgQEAgdm9pZCBXZWJW
aWV3OjpzaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgICAgICBtX2JhY2tp
bmdMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5l
ZWRzRGlzcGxheSgpOwogICAgIH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICBpZiAobV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlm
CkBAIC01NDc3LDcgKzU0NzcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2Vz
Q2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgaHIgPSBwcmVmc1By
aXZhdGUtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAo
RkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgc3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSA9IEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxh
YmxlKCk7CiAgICAgZW5hYmxlZCA9IGVuYWJsZWQgJiYgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2
YWlsYWJsZTsKICNlbGlmIFVTRShESVJFQ1QyRCkKQEAgLTY0OTQsNyArNjQ5NCw3IEBAIGJvb2wg
V2ViVmlldzo6cGFpbnRDb21wb3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZpY2VDb250ZXh0KQog
CiAjaWYgVVNFKENBKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFu
Z2VzTm93KCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICNlbmRpZgog
CkBAIC03MTU0LDcgKzcxNTQsNyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKEdy
YXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIGVsc2UKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnJl
bW92ZUFsbENoaWxkcmVuKCk7CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICBpZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29tcG9zaXRpbmdM
YXllcihsYXllcik7CkBAIC03MTY5LDcgKzcxNjksNyBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVu
ZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24o
KTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29uKCk7CkBAIC03
MjMwLDcgKzcyMzAsNyBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmco
Ym9vbCBhY2NlbGVyYXRlZCkKICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBudWxscHRyOwogICAg
ICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwogICAgIH0KLSNlbGlmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoYWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCBhZDRlMzJkNDdlOC4uM2U2ODU1NDlkYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgV2Vi
QmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBj
bGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIGNs
YXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiBjbGFzcyBXZWJWaWV3
R3JvdXA7CkBAIC03MDYsNyArNzA2LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShDQSkKICAgICBS
ZWZQdHI8V2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKICAgICBS
ZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9iYWNraW5nTGF5ZXI7Ci0jZWxpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0PiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlm
CiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25z
V2luLmNtYWtlCmluZGV4IDNlOGY3Njk3N2E1Li4zMWIyNmZjNzdhNyAxMDA2NDQKLS0tIGEvU291
cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4u
Y21ha2UKQEAgLTc3LDYgKzc3LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX1dFQl9DUllQVE8gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShVU0VfU1lTVEVNX01BTExPQyBQUklWQVRFIE9OKQogCiBpZiAoJHtXVEZfUExBVEZP
Uk1fV0lOX0NBSVJPfSkKKyAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfQVNZTkNfU0NST0xMSU5HIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0xFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUiBQVUJMSUMg
T0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lf
RU5DUllQVEVEX01FRElBIFBVQkxJQyBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX0lOVEwgUFVCTElDIE9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtl
L09wdGlvbnNXaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21h
a2UKaW5kZXggMGZiYWQ5NTQ1YzAuLjA0MGYxZTkxYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fp
cm8uY21ha2UKQEAgLTI1LDcgKzI1LDExIEBAIGVuZGlmICgpCiAKIFNFVF9BTkRfRVhQT1NFX1RP
X0JVSUxEKFVTRV9DQUlSTyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DRiBPTikK
K1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElDUyBPTikKK1NF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCBP
TikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DVVJMIE9OKQorU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX05JQ09TSUEgT04pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfUkVR
VUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SIE9OKQogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
VVNFX1RFWFRVUkVfTUFQUEVSX0dMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX01F
RElBX0ZPVU5EQVRJT04gT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370924</attachid>
            <date>2019-05-29 23:04:59 -0700</date>
            <delta_ts>2020-02-20 21:34:37 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>28417</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IGVkNjlkNzQzYWU1Li44MTg2
ZWI1MWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSwxMSAr
MTEsMjEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKKworICAgIHBhZ2Uv
c2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKKwogICAgIHBhZ2Uv
d2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hN
b25pdG9yLmNwcAppbmRleCA3NmEyMDgxM2E2NS4uZDVkNDc2NDc0NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5oIgogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9u
aXRvckd0ay5oIgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNo
TW9uaXRvcldpbi5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDYgKzU0
LDkgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJlZnJlc2hNb25pdG9y
OjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2gKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpjcmVhdGUoZGlzcGxheUlEKTsK
KyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25p
dG9yV2luOjpjcmVhdGUoZGlzcGxheUlEKTsKICNlbmRpZgogICAgIFVOVVNFRF9QQVJBTShkaXNw
bGF5SUQpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggNmY5YTAzOWYzMzQuLjc3
MDRlYTQ1MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybURpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBQbGF0Zm9ybURpc3BsYXk6
OlBsYXRmb3JtRGlzcGxheShOYXRpdmVEaXNwbGF5T3duZWQgZGlzcGxheU93bmVkKQogCiBQbGF0
Zm9ybURpc3BsYXk6On5QbGF0Zm9ybURpc3BsYXkoKQogewotI2lmIFVTRShFR0wpCisjaWYgVVNF
KEVHTCkgJiYgIVBMQVRGT1JNKFdJTikKICAgICBBU1NFUlQobV9lZ2xEaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTM1YTg0NzQyM2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxh
eVJlZnJlc2hNb25pdG9yV2luLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4uaCIKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcldpbj4gRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpjcmVhdGUoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlSZWZyZXNo
TW9uaXRvcldpbihkaXNwbGF5SUQpKTsKK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQorICAg
IDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKKyAgICAsIG1fdGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpkaXNwbGF5TGlua0Zp
cmVkKQoreworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6cmVxdWVzdFJlZnJl
c2hDYWxsYmFjaygpCit7CisgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgbV90aW1lci5zdGFydE9uZVNob3QoMTZfbXMpOworICAgIHNldElzQWN0aXZlKHRy
dWUpOworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7CisgICAg
aWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNldElz
UHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOworCisgICAgaGFuZGxlRGlzcGxheVJlZnJlc2hlZE5v
dGlmaWNhdGlvbk9uTWFpblRocmVhZCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNw
bGF5UmVmcmVzaE1vbml0b3JXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMWQzNzA1MWQyYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9E
SVNQTEFZX01PTklUT1IpCisKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbiA6IHB1YmxpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3Igewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2luPiBjcmVh
dGUoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKTsKKworICAgIHZvaWQgZGlzcGxheUxpbmtG
aXJlZCgpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJy
aWRlOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbihQ
bGF0Zm9ybURpc3BsYXlJRCk7CisgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheVJlZnJlc2hNb25p
dG9yV2luPiBtX3RpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCmluZGV4IGU2M2Y2YTQyODEwLi4xNjEwOGY1YmYxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCkBAIC0yNCw2ICsyNCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VT
CiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCiAKKyAg
ICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUu
Y3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcApAQCAtMTYw
LDYgKzE2MiwxMiBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKIAogICAgICAgICBT
aGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAogCisgICAgICAgIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3Bw
CisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKwor
ICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCisKICAgICAgICAgU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAog
CiAgICAgICAgIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0x
NjksNiArMTc3LDggQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgICAgIFVJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKworICAg
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKICAg
ICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGViNmFmOTgwNjI0Li5iZWI3
MmZjYTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAt
MjIwLDcgKzIyMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2Vu
ZVN0YXRlKCkKIAogICAgIC8vIFN0b3JlIGxheWVyIGFuZCBpbXBsIHJlZmVyZW5jZXMgYWxvbmcg
d2l0aCB0aGUgY29ycmVzcG9uZGluZyB1cGRhdGUKICAgICAvLyBmb3IgZWFjaCB0eXBlIG9mIHBv
c3NpYmxlIGxheWVyIGJhY2tpbmcuCi0gICAgc3RydWN0IHsKKyAgICBzdHJ1Y3QgTGF5ZXJzQnlC
YWNraW5nIHsKICAgICAgICAgc3RydWN0IEJhY2tpbmdTdG9yZSB7CiAgICAgICAgICAgICBzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFRleHR1cmVNYXBwZXJMYXllcj4gbGF5ZXI7CiAgICAgICAgICAg
ICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsPiBiYWNraW5nU3RvcmU7CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbC5wcm94eSgpKSwgbGF5
ZXJTdGF0ZS5kZWx0YS5jb250ZW50TGF5ZXJDaGFuZ2VkIH0pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChsYXllclN0YXRlLmltYWdlQmFja2luZykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIGltcGwgPSBpbWFnZUJhY2tpbmdJbXBsKCpsYXllclN0YXRl
LmltYWdlQmFja2luZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNr
aW5nLmltYWdlQmFja2luZy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5
ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5hcHBlbmQ8TGF5ZXJzQnlCYWNraW5nOjpJbWFnZUJh
Y2tpbmc+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVy
KSwgc3RkOjpyZWYoaW1wbCksIGltcGwudGFrZVVwZGF0ZSgpIH0pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0Q29u
dGVudHNMYXllcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IDUzMGRhODY0ODk4Li41YWM5MWVj
NmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OmZvcmNlUmVwYWludCgpCiB7CiAgICAgLy8gRklYTUU6IEVuYWJsZSB0aGlzIGZvciBX
UEUgb25jZSBpdCdzIHBvc3NpYmxlIHRvIGRvIHRoZXNlIGZvcmNlZCB1cGRhdGVzCiAgICAgLy8g
aW4gYSB3YXkgdGhhdCBkb2Vzbid0IHN0YXJ2ZSBvdXQgdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3Mg
YnVmZmVycy4KLSNpZiBQTEFURk9STShHVEspICYmICFVU0UoV1BFX1JFTkRFUkVSKQorI2lmICFQ
TEFURk9STShXUEUpICYmICFVU0UoV1BFX1JFTkRFUkVSKQogICAgIG1fY29tcG9zaXRpbmdSdW5M
b29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gewogICAgICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9pbkZvcmNlUmVwYWludCwg
dHJ1ZSk7CiAgICAgICAgIHJlbmRlckxheWVyVHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAwZmRkNjY1MzMxNC4u
Yzc1NTk0ZmUzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xMDUsNiArMTA1LDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2VuZGlm
CiAjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBlbmNvZGVyIDw8IGhvc3RGaWxlRGVzY3JpcHRv
cjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBlbmNvZGVyIDw8IG5hdGl2ZVdpbmRv
d0hhbmRsZTsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJr
RW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwpAQCAt
MzA3LDYgKzMxMCwxMSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5hcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCmluZGV4IDcwOTJmOWE2ZTJiLi4zOWE2MGY1MTI3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTY1LDYg
KzE2NSw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNlbmRpZgogI2lm
IFVTRShXUEVfUkVOREVSRVIpCiAgICAgSVBDOjpBdHRhY2htZW50IGhvc3RGaWxlRGVzY3JpcHRv
cjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dI
YW5kbGU7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7
CiAgICAgYm9vbCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGI2YzA1ZjE0YWNjLi4xNmM4ZDU5Njc5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03MTg2LDYgKzcxODYs
MTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLmhvc3RGaWxlRGVz
Y3JpcHRvciA9IHBhZ2VDbGllbnQoKS5ob3N0RmlsZURlc2NyaXB0b3IoKTsKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oV0lOKQorICAgIHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50NjRfdD4odmlld1dpZGdldCgpKTsKKyNlbmRpZgorCiAgICAgZm9y
IChhdXRvJiBpdGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKICAgICAgICAg
cGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52
YWx1ZS0+aWRlbnRpZmllcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKaW5kZXggMmJiZGRkN2MyMzguLjg0
OGZmZmJhZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9B
Y2NlbGVyYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTQxLDYgKzQxLDEwIEBACiAjaW5jbHVkZSAi
QWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikK
KyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC02MSw2ICs2NSwxMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlPiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNy
ZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLAogI2lmIFVTRShMSUJXUEUpCiAgICAgaWYgKFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6
OldQRSkKICAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZUxpYldQRTo6Y3JlYXRlKHdl
YlBhZ2UsIGNsaWVudCk7CisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5
cGU6OldpbmRvd3MpCisgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmNyZWF0
ZSh3ZWJQYWdlLCBjbGllbnQpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDY5YjVmY2U0
ZWJkLi42NjRkNjFiMDBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTM4Niw2ICszODYsMTAgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQog
ICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Vmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQogI2VsaWYgSEFWRShBQ0NFU1NJQklM
SVRZKSAmJiBQTEFURk9STShHVEspCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlPYmplY3QobnVsbHB0
cikKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQor
ICAgIC8vIE91ciB2aWV3J3Mgd2luZG93IGluIHRoZSBVSSBwcm9jZXNzLgorICAgICwgbV9uYXRp
dmVXaW5kb3dIYW5kbGUocGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUpCiAjZW5kaWYKICAg
ICAsIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBh
Z2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVkKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGIwYjEz
Zjc4ZTQyLi5iMDg2NWVhY2EyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtOTcxLDcgKzk3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNo
VG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYgaGFuZGxlZCk7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFBMQVRG
T1JNKFdJTikgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHVpbnQ2NF90IG5hdGl2ZVdp
bmRvd0hhbmRsZSgpIHsgcmV0dXJuIG1fbmF0aXZlV2luZG93SGFuZGxlOyB9CiAjZW5kaWYKIApA
QCAtMTY4MCw3ICsxNjgwLDcgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRyPEF0a09iamVjdD4gbV9h
Y2Nlc3NpYmlsaXR5T2JqZWN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspICYmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKICAgICAvLyBPdXIgdmlldydzIHdpbmRvdyBpbiB0aGUgVUkgcHJvY2Vzcy4KICAgICB1
aW50NjRfdCBtX25hdGl2ZVdpbmRvd0hhbmRsZSB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRT
dXJmYWNlV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTg0
MDZkZjBkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKworI2luY2x1ZGUg
IldlYlBhZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4gQWNjZWxlcmF0ZWRT
dXJmYWNlV2luOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwgQ2xpZW50JiBjbGllbnQpCit7Cisg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXaW4+KG5ldyBBY2Nl
bGVyYXRlZFN1cmZhY2VXaW4od2ViUGFnZSwgY2xpZW50KSk7Cit9CisKK0FjY2VsZXJhdGVkU3Vy
ZmFjZVdpbjo6QWNjZWxlcmF0ZWRTdXJmYWNlV2luKFdlYlBhZ2UmIHdlYlBhZ2UsIENsaWVudCYg
Y2xpZW50KQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2UsIGNsaWVudCkKK3sKK30K
KworQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp+QWNjZWxlcmF0ZWRTdXJmYWNlV2luKCkKK3sKK30K
KwordWludDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp3aW5kb3coKSBjb25zdAoreworICAg
IHJldHVybiBtX3dlYlBhZ2UubmF0aXZlV2luZG93SGFuZGxlKCk7Cit9CisKK3VpbnQ2NF90IEFj
Y2VsZXJhdGVkU3VyZmFjZVdpbjo6c3VyZmFjZUlEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93
ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNl
V2luOjpkaWRSZW5kZXJGcmFtZSgpCit7CisgICAgLy8gRklYTUU6IGZyYW1lQ29tcGxldGUoKSBz
aG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGZyYW1lIHdhcyBhY3R1YWxseSByZW5kZXJlZCBpbiB0
aGUgc2NyZWVuLgorICAgIG1fY2xpZW50LmZyYW1lQ29tcGxldGUoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjY1YjQ0ZWM0MzY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShXSU4pCisKKyNpbmNsdWRlICJB
Y2NlbGVyYXRlZFN1cmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2U7CisKK2NsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZVdpbiBmaW5hbCA6IHB1YmxpYyBBY2NlbGVy
YXRlZFN1cmZhY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkU3VyZmFj
ZVdpbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNlV2luPiBjcmVhdGUoV2ViUGFnZSYsIENsaWVu
dCYpOworICAgIH5BY2NlbGVyYXRlZFN1cmZhY2VXaW4oKTsKKworICAgIHVpbnQ2NF90IHdpbmRv
dygpIGNvbnN0IG92ZXJyaWRlOworICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAg
ICBBY2NlbGVyYXRlZFN1cmZhY2VXaW4oV2ViUGFnZSYsIENsaWVudCYpOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCmluZGV4IGZjMzdi
ZmFjOWFlLi4wMjdiYzZjODJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L3dpbi9XZWJQcm9jZXNzTWFpbldpbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgV2ViUHJv
Y2Vzc01haW4gZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc01haW5CYXNlIHsKIHB1Ymxp
YzoKICAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIG92ZXJyaWRlCiAgICAgeworICAgICAg
ICBTZXRQcm9jZXNzRFBJQXdhcmUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCBlNDQ3
MzcwZDlkMS4uNjY5MGY4ZmJiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAj
aW5jbHVkZSAiV2ViVmlldy5oIgogCkBAIC00MTMsNCArNDEzLDQgQEAgZmxvYXQgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKICAgICByZXR1
cm4gbV93ZWJWaWV3LmRldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLSNlbmRpZiAvLyBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCisjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LmgKaW5kZXggNmJiMzM0ZDQ0MWQuLjMzNzRkNmFhNGI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAogI2RlZmluZSBBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dF9oCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dMQ29udGV4dC5oPgpA
QCAtOTksNiArOTksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cigpOwogfTsKIAotI2VuZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMCisjZW5kaWYgLy8gVEVYVFVS
RV9NQVBQRVJfR0wgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2VuZGlmIC8vIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKaW5kZXggNzlmYzQ2ZDBmYjguLjE3YmYyNDA0NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBACiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdl
YkNvcmUvQ0FDRkxheWVyVHJlZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FM
YXllci5oPgotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAjZW5kaWYKIApAQCAtOTIwLDcgKzkyMCw3IEBA
IHZvaWQgV2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qp
CiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAjaWYgVVNFKENBKQogICAg
ICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Ci0j
ZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQtPnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGRpcnR5
UmVjdCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwpAQCAtOTkyLDcgKzk5Miw3IEBAIHZvaWQg
V2ViVmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBpbnQgbG9n
aWNhbER4LCBpbnQgbG9naWNhCiAgICAgICAgIC8vIGFueSBuZXdseS1leHBvc2VkIHRpbGVzLiA8
aHR0cDovL3dlYmtpdC5vcmcvYi81MjcxND4KICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2lu
Z0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3Qoc2Nyb2xsVmlld1JlY3QpOwotI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LT5zY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoc2Nyb2xsVmlld1JlY3QsIEludFNp
emUoZHgsIGR5KSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwpAQCAtMTA3MCw3ICsxMDcwLDcg
QEAgdm9pZCBXZWJWaWV3OjpzaXplQ2hhbmdlZChjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAg
ICAgICBtX2JhY2tpbmdMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5n
TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKICAgICBpZiAobV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAg
ICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1Np
emUpOwogI2VuZGlmCkBAIC01NDc3LDcgKzU0NzcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlm
eVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAg
aHIgPSBwcmVmc1ByaXZhdGUtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCZlbmFibGVk
KTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAgICAgc3RhdGljIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2
YWlsYWJsZSA9IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphY2NlbGVyYXRlZENvbXBv
c2l0aW5nQXZhaWxhYmxlKCk7CiAgICAgZW5hYmxlZCA9IGVuYWJsZWQgJiYgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0F2YWlsYWJsZTsKICNlbGlmIFVTRShESVJFQ1QyRCkKQEAgLTY0OTQsNyArNjQ5
NCw3IEBAIGJvb2wgV2ViVmlldzo6cGFpbnRDb21wb3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZp
Y2VDb250ZXh0KQogCiAjaWYgVVNFKENBKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzTm93KCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAg
ICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMo
KTsKICNlbmRpZgogCkBAIC03MTU0LDcgKzcxNTQsNyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RD
aGlsZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIGVsc2UKICAgICAgICAgbV9iYWNr
aW5nTGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKICAgICBpZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290
Q29tcG9zaXRpbmdMYXllcihsYXllcik7CkBAIC03MTY5LDcgKzcxNjksNyBAQCB2b2lkIFdlYlZp
ZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdHcmFwaGljc0xheWVy
Q2hhbmdlc1Nvb24oKTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAo
IW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNT
b29uKCk7CkBAIC03MjMwLDcgKzcyMzAsNyBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBu
dWxscHRyOwogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwogICAg
IH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoYWNjZWxlcmF0ZWQg
JiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBh
Y2NlbGVyYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCBhZDRlMzJkNDdlOC4u
M2U2ODU1NDlkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAgLTY4LDcgKzY4LDcg
QEAgY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJ
bnNwZWN0b3I7CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKIGNsYXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiBj
bGFzcyBXZWJWaWV3R3JvdXA7CkBAIC03MDYsNyArNzA2LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVT
RShDQSkKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVl
SG9zdDsKICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9iYWNraW5nTGF5ZXI7
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0OwogI2VuZGlmCiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luLmNtYWtlCmluZGV4IGVhZTk0YWJhMWIwLi43NjkzMTcwZWVkNyAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L09wdGlvbnNXaW4uY21ha2UKQEAgLTc2LDYgKzc2LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9DUllQVE8gUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShVU0VfU1lTVEVNX01BTExPQyBQUklWQVRFIE9OKQogCiBpZiAo
JHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKKyAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfQVNZTkNfU0NST0xMSU5HIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEwgUFVCTElDIE9OKQogICAgIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfQ1VTVE9NX1BST1RPQ09M
X01BTkFHRVIgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSBQVUJMSUMgT0ZGKQpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25z
V2luQ2Fpcm8uY21ha2UKaW5kZXggMTdhODIxNjYxYjIuLjU3ZGUxYmQ3ZWZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zV2luQ2Fpcm8uY21ha2UKQEAgLTI1LDcgKzI1LDExIEBAIGVuZGlmICgpCiAKIFNFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DQUlSTyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFVTRV9DRiBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQ
SElDUyBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DVVJMIE9OKQorU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX05JQ09TSUEgT04pCitTRVRfQU5EX0VYUE9TRV9UT19C
VUlMRChVU0VfUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SIE9OKQogU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSIE9OKQogU0VUX0FORF9FWFBP
U0VfVE9fQlVJTEQoVVNFX1RFWFRVUkVfTUFQUEVSX0dMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9f
QlVJTEQoVVNFX01FRElBX0ZPVU5EQVRJT04gT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391378</attachid>
            <date>2020-02-20 21:10:23 -0800</date>
            <delta_ts>2020-05-07 00:01:29 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>28523</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IDkxYmQ5ZTM2YThjLi44NWNl
ZDQzMmQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0xMSw2ICsx
MSwxNSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwog
KQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKKyAgICBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAorCisgICAgcGFnZS9z
Y3JvbGxpbmcvZ2VuZXJpYy9TY3JvbGxpbmdUaHJlYWRHZW5lcmljLmNwcAorCiAgICAgcGFnZS93
aW4vRnJhbWVDYWlyb1dpbi5jcHAKICAgICBwYWdlL3dpbi9SZXNvdXJjZVVzYWdlT3ZlcmxheVdp
bi5jcHAKICAgICBwYWdlL3dpbi9SZXNvdXJjZVVzYWdlVGhyZWFkV2luLmNwcApAQCAtMTgsNiAr
MjcsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNw
cAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJv
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4u
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dseXBoUGFnZVRyZWVOb2RlQ2Fpcm9XaW4u
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yLmNwcAppbmRleCA3NmEyMDgxM2E2NS4uZDVkNDc2NDc0NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkRpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYy5oIgogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgIkRpc3Bs
YXlSZWZyZXNoTW9uaXRvckd0ay5oIgorI2VsaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgIkRp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTUyLDYgKzU0LDkgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpjcmVhdGVEZWZhdWx0RGlzcGxheVJlZnJlc2gKICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykKICAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yR3RrOjpjcmVhdGUo
ZGlzcGxheUlEKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4gRGlzcGxh
eVJlZnJlc2hNb25pdG9yV2luOjpjcmVhdGUoZGlzcGxheUlEKTsKICNlbmRpZgogICAgIFVOVVNF
RF9QQVJBTShkaXNwbGF5SUQpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggMTU2
ZTVhYTJiNzMuLmUxOWRlYTYxNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBQbGF0
Zm9ybURpc3BsYXk6OlBsYXRmb3JtRGlzcGxheShOYXRpdmVEaXNwbGF5T3duZWQgZGlzcGxheU93
bmVkKQogCiBQbGF0Zm9ybURpc3BsYXk6On5QbGF0Zm9ybURpc3BsYXkoKQogewotI2lmIFVTRShF
R0wpCisjaWYgVVNFKEVHTCkgJiYgIVBMQVRGT1JNKFdJTikKICAgICBBU1NFUlQobV9lZ2xEaXNw
bGF5ID09IEVHTF9OT19ESVNQTEFZKTsKICNlbmRpZgogICAgIGlmIChzX3NoYXJlZERpc3BsYXlG
b3JDb21wb3NpdGluZyA9PSB0aGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTM1YTg0NzQyM2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxh
eVJlZnJlc2hNb25pdG9yV2luLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4uaCIKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9u
aXRvcldpbj4gRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpjcmVhdGUoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpc3BsYXlSZWZyZXNo
TW9uaXRvcldpbihkaXNwbGF5SUQpKTsKK30KKworRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQorICAg
IDogRGlzcGxheVJlZnJlc2hNb25pdG9yKGRpc3BsYXlJRCkKKyAgICAsIG1fdGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmRGlzcGxheVJlZnJlc2hNb25pdG9yV2luOjpkaXNwbGF5TGlua0Zp
cmVkKQoreworfQorCitib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6cmVxdWVzdFJlZnJl
c2hDYWxsYmFjaygpCit7CisgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgbV90aW1lci5zdGFydE9uZVNob3QoMTZfbXMpOworICAgIHNldElzQWN0aXZlKHRy
dWUpOworICAgIHNldElzU2NoZWR1bGVkKHRydWUpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCgpCit7CisgICAg
aWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNldElz
UHJldmlvdXNGcmFtZURvbmUoZmFsc2UpOworCisgICAgaGFuZGxlRGlzcGxheVJlZnJlc2hlZE5v
dGlmaWNhdGlvbk9uTWFpblRocmVhZCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNw
bGF5UmVmcmVzaE1vbml0b3JXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMWQzNzA1MWQyYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9E
SVNQTEFZX01PTklUT1IpCisKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCIKKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERp
c3BsYXlSZWZyZXNoTW9uaXRvcldpbiA6IHB1YmxpYyBEaXNwbGF5UmVmcmVzaE1vbml0b3Igewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yV2luPiBjcmVh
dGUoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKTsKKworICAgIHZvaWQgZGlzcGxheUxpbmtG
aXJlZCgpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJy
aWRlOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbihQ
bGF0Zm9ybURpc3BsYXlJRCk7CisgICAgUnVuTG9vcDo6VGltZXI8RGlzcGxheVJlZnJlc2hNb25p
dG9yV2luPiBtX3RpbWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCmluZGV4IDVkOTYyOGQzMTgwLi4zYWQ1MTNmOTA5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtV2luLmNtYWtlCkBAIC0yNCw2ICsyNCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VT
CiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCiAKKyAg
ICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUu
Y3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcApAQCAtMTUz
LDYgKzE1NSwxMiBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKIAogICAgICAgICBT
aGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAogCisgICAgICAgIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3Bw
CisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKwor
ICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCisKICAgICAgICAgU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAog
CiAgICAgICAgIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0x
NjIsNiArMTcwLDggQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgICAgIFVJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKworICAg
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKICAg
ICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGU4ZGJiZTI3M2IzLi5iMmZm
MzBiYjlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAt
MjA5LDcgKzIwOSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVTY2Vu
ZVN0YXRlKCkKIAogICAgIC8vIFN0b3JlIGxheWVyIGFuZCBpbXBsIHJlZmVyZW5jZXMgYWxvbmcg
d2l0aCB0aGUgY29ycmVzcG9uZGluZyB1cGRhdGUKICAgICAvLyBmb3IgZWFjaCB0eXBlIG9mIHBv
c3NpYmxlIGxheWVyIGJhY2tpbmcuCi0gICAgc3RydWN0IHsKKyAgICBzdHJ1Y3QgTGF5ZXJzQnlC
YWNraW5nIHsKICAgICAgICAgc3RydWN0IEJhY2tpbmdTdG9yZSB7CiAgICAgICAgICAgICBzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFRleHR1cmVNYXBwZXJMYXllcj4gbGF5ZXI7CiAgICAgICAgICAg
ICBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsPiBiYWNraW5nU3RvcmU7CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNjZW5lU3RhdGUoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVyKSwgc3RkOjpyZWYoaW1wbC5wcm94eSgpKSwgbGF5
ZXJTdGF0ZS5kZWx0YS5jb250ZW50TGF5ZXJDaGFuZ2VkIH0pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChsYXllclN0YXRlLmltYWdlQmFja2luZykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIGltcGwgPSBpbWFnZUJhY2tpbmdJbXBsKCpsYXllclN0YXRl
LmltYWdlQmFja2luZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzQnlCYWNr
aW5nLmltYWdlQmFja2luZy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5
ZXJzQnlCYWNraW5nLmltYWdlQmFja2luZy5hcHBlbmQ8TGF5ZXJzQnlCYWNraW5nOjpJbWFnZUJh
Y2tpbmc+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0ZDo6cmVmKGxheWVy
KSwgc3RkOjpyZWYoaW1wbCksIGltcGwudGFrZVVwZGF0ZSgpIH0pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuc2V0Q29u
dGVudHNMYXllcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGJjYjIzNTk3NWIxLi40NjNlNTVk
MjcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OmZvcmNlUmVwYWludCgpCiB7CiAgICAgLy8gRklYTUU6IEVuYWJsZSB0aGlzIGZvciBX
UEUgb25jZSBpdCdzIHBvc3NpYmxlIHRvIGRvIHRoZXNlIGZvcmNlZCB1cGRhdGVzCiAgICAgLy8g
aW4gYSB3YXkgdGhhdCBkb2Vzbid0IHN0YXJ2ZSBvdXQgdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3Mg
YnVmZmVycy4KLSNpZiBQTEFURk9STShHVEspICYmICFVU0UoV1BFX1JFTkRFUkVSKQorI2lmICFQ
TEFURk9STShXUEUpICYmICFVU0UoV1BFX1JFTkRFUkVSKQogICAgIG1fY29tcG9zaXRpbmdSdW5M
b29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gewogICAgICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9pbkZvcmNlUmVwYWludCwg
dHJ1ZSk7CiAgICAgICAgIHJlbmRlckxheWVyVHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA2Yzk5MzkxMjcwYS4u
NDg0NDU1YzJjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xMTIsNiArMTEyLDkgQEAgdm9pZCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2VuZGlm
CiAjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBlbmNvZGVyIDw8IGhvc3RGaWxlRGVzY3JpcHRv
cjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBlbmNvZGVyIDw8IG5hdGl2ZVdpbmRv
d0hhbmRsZTsKICNlbmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJr
RW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwpAQCAt
MzQ2LDYgKzM0OSwxMSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5hcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oCmluZGV4IDZkZWM4ZDU0NDQwLi5lZDU1Yjk2MzViMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTcxLDYg
KzE3MSw5IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNlbmRpZgogI2lm
IFVTRShXUEVfUkVOREVSRVIpCiAgICAgSVBDOjpBdHRhY2htZW50IGhvc3RGaWxlRGVzY3JpcHRv
cjsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dI
YW5kbGU7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7
CiAgICAgYm9vbCBhcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDAxOTNjZTM0ZjhjLi5kNGRjODAzNDg3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03NjQ5LDYgKzc2NDks
MTAgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLmhvc3RGaWxlRGVz
Y3JpcHRvciA9IHBhZ2VDbGllbnQoKS5ob3N0RmlsZURlc2NyaXB0b3IoKTsKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oV0lOKQorICAgIHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50NjRfdD4odmlld1dpZGdldCgpKTsKKyNlbmRpZgorCiAgICAgZm9y
IChhdXRvJiBpdGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKICAgICAgICAg
cGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52
YWx1ZS0+aWRlbnRpZmllcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwCmluZGV4IDRhOTZiNWU5OTg4Li42ZDk2MWI2NjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtMjM3LDYgKzIzNyw3IEBAIFdlYlZpZXc6OldlYlZpZXco
UkVDVCByZWN0LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBI
V05EIHBhCiAgICAgQVNTRVJUKG1faXNWaXNpYmxlID09IHN0YXRpY19jYXN0PGJvb2w+KDo6R2V0
V2luZG93TG9uZyhtX3dpbmRvdywgR1dMX1NUWUxFKSAmIFdTX1ZJU0lCTEUpKTsKIAogICAgIGF1
dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uLmNvcHkoKTsKKyNpZiAwCiAgICAg
YXV0byogcHJlZmVyZW5jZXMgPSBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKTsKICAg
ICBpZiAoIXByZWZlcmVuY2VzICYmIHBhZ2VDb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkgewog
ICAgICAgICBwcmVmZXJlbmNlcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCktPnBy
ZWZlcmVuY2VzKCk7CkBAIC0yNDYsNiArMjQ3LDcgQEAgV2ViVmlldzo6V2ViVmlldyhSRUNUIHJl
Y3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEhXTkQgcGEK
ICAgICAgICAgLy8gRGlzYWJsZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyB1bnRpbCBpdCBpcyBz
dXBwb3J0ZWQuCiAgICAgICAgIHByZWZlcmVuY2VzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZChmYWxzZSk7CiAgICAgfQorI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9vbCogcHJv
Y2Vzc1Bvb2wgPSBwYWdlQ29uZmlndXJhdGlvbi0+cHJvY2Vzc1Bvb2woKTsKICAgICBtX3BhZ2Ug
PSBwcm9jZXNzUG9vbC0+Y3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAppbmRleCAxMzMwNjcxZjRhMi4uNWYzZmVhMGI2
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJh
dGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWRTdXJmYWNlLmNwcApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNsdWRlICJBY2NlbGVy
YXRlZFN1cmZhY2VMaWJXUEUuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1
ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTYxLDYgKzY1LDEwIEBAIHN0ZDo6dW5p
cXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKFdl
YlBhZ2UmIHdlYlBhZ2UsCiAjaWYgVVNFKExJQldQRSkKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V1BFKQog
ICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFOjpjcmVhdGUod2ViUGFnZSwg
Y2xpZW50KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2lu
ZG93cykKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKHdlYlBh
Z2UsIGNsaWVudCk7CiAjZW5kaWYKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCBlZDFjYjJjZTdlMC4uOGExMjQ0MmU5MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MDAsNiArNDAwLDkgQEAg
V2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yKG1ha2VVbmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQogI2Vs
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNz
aWJpbGl0eU9iamVjdChudWxscHRyKQorI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgICwg
bV9uYXRpdmVXaW5kb3dIYW5kbGUocGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUpCiAjZW5k
aWYKICAgICAsIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JldlYlBhZ2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVkKQogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGVhYTZmYjI1M2Q4Li4zZDI3ZjRiMTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTAxNiw2ICsxMDE2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc3BhdGNoVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiwgYm9vbCYgaGFuZGxlZCk7
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dI
YW5kbGUoKSB7IHJldHVybiBtX25hdGl2ZVdpbmRvd0hhbmRsZTsgfQorI2VuZGlmCisKICAgICBi
b29sIHNob3VsZFVzZUN1c3RvbUNvbnRlbnRQcm92aWRlckZvclJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5p
dGlhbGl6YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbkVuYWJsZWQ7IH0KQEAgLTE3ODIsNiArMTc4NiwxMCBAQCBwcml2YXRlOgog
ICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBtX2FjY2Vzc2liaWxpdHlPYmplY3Q7CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICB1aW50NjRfdCBtX25hdGl2ZVdpbmRvd0hhbmRsZSB7IDAg
fTsKKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVmUHRyPFBhZ2VC
YW5uZXI+IG1faGVhZGVyQmFubmVyOwogICAgIFJlZlB0cjxQYWdlQmFubmVyPiBtX2Zvb3RlckJh
bm5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9B
Y2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjVkM2ExNDQ1N2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNl
V2luLmgiCisKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZh
Y2VXaW4+IEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsIENs
aWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRT
dXJmYWNlV2luPihuZXcgQWNjZWxlcmF0ZWRTdXJmYWNlV2luKHdlYlBhZ2UsIGNsaWVudCkpOwor
fQorCitBY2NlbGVyYXRlZFN1cmZhY2VXaW46OkFjY2VsZXJhdGVkU3VyZmFjZVdpbihXZWJQYWdl
JiB3ZWJQYWdlLCBDbGllbnQmIGNsaWVudCkKKyAgICA6IEFjY2VsZXJhdGVkU3VyZmFjZSh3ZWJQ
YWdlLCBjbGllbnQpCit7Cit9CisKK0FjY2VsZXJhdGVkU3VyZmFjZVdpbjo6fkFjY2VsZXJhdGVk
U3VyZmFjZVdpbigpCit7Cit9CisKK3VpbnQ2NF90IEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6d2lu
ZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlLm5hdGl2ZVdpbmRvd0hhbmRsZSgp
OworfQorCit1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OnN1cmZhY2VJRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKTsKK30KKwor
dm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmRpZFJlbmRlckZyYW1lKCkKK3sKKyAgICAvLyBG
SVhNRTogZnJhbWVDb21wbGV0ZSgpIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgZnJhbWUgd2Fz
IGFjdHVhbGx5IHJlbmRlcmVkIGluIHRoZSBzY3JlZW4uCisgICAgbV9jbGllbnQuZnJhbWVDb21w
bGV0ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjViNDRlYzQzNjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRG
T1JNKFdJTikKKworI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
IGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkU3VyZmFjZSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlV2luKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXaW4+
IGNyZWF0ZShXZWJQYWdlJiwgQ2xpZW50Jik7CisgICAgfkFjY2VsZXJhdGVkU3VyZmFjZVdpbigp
OworCisgICAgdWludDY0X3Qgd2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdWludDY0X3Qg
c3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZW5kZXJGcmFtZSgpIG92
ZXJyaWRlOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkU3VyZmFjZVdpbihXZWJQYWdlJiwg
Q2xpZW50Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRG
T1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJv
Y2Vzc01haW5XaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
TWFpbldpbi5jcHAKaW5kZXggZjBlYTVjNTcwM2IuLmUzMmYzMzRhZWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNwcApAQCAtMzcs
NiArMzcsNyBAQCBjbGFzcyBXZWJQcm9jZXNzTWFpbldpbiBmaW5hbCA6IHB1YmxpYyBBdXhpbGlh
cnlQcm9jZXNzTWFpbkJhc2UgewogcHVibGljOgogICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXpl
KCkgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIFNldFByb2Nlc3NEUElBd2FyZSgpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQuY3BwCmluZGV4IDY4N2ZhYTA2ZmZhLi41M2E4Yjk3Y2FiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcApAQCAtMjUsNyArMjUsNyBA
QAogCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIKIAotI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKQEAgLTMzNyw0
ICszMzcsNCBAQCBmbG9hdCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZGV2aWNlU2Nh
bGVGYWN0b3IoKSBjb25zdAogICAgIHJldHVybiBtX3dlYlZpZXcuZGV2aWNlU2NhbGVGYWN0b3Io
KTsKIH0KIAotI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbmRpZiAvLyBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCBkZWVjZjQ0MGU2OS4uYTBi
NzVlYzZjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaApA
QCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9o
CiAjZGVmaW5lIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKIAotI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+CkBAIC05OCw2ICs5OCw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKCk7CiB9OwogCi0jZW5kaWYgLy8gVEVYVFVSRV9N
QVBQRVJfR0wKKyNlbmRpZiAvLyBURVhUVVJFX01BUFBFUl9HTCAmJiAhVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogCiAjZW5kaWYgLy8gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA2ZDFhYzJjMmQ3OS4uYTVhMTk0ZmE3
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAK
ICNpZiBVU0UoQ0EpCiAjaW5jbHVkZSA8V2ViQ29yZS9DQUNGTGF5ZXJUcmVlSG9zdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIKICNl
bmRpZgogCkBAIC05MTUsNyArOTE1LDcgQEAgdm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9u
KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nKCkpIHsKICNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rp
c3BsYXlJblJlY3QoZGlydHlSZWN0KTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNl
bGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0Tm9uQ29tcG9zaXRl
ZENvbnRlbnRzTmVlZERpc3BsYXkoZGlydHlSZWN0KTsKICNlbmRpZgogICAgICAgICByZXR1cm47
CkBAIC05ODcsNyArOTg3LDcgQEAgdm9pZCBXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3RvcmUoRnJh
bWVWaWV3KiBmcmFtZVZpZXcsIGludCBsb2dpY2FsRHgsIGludCBsb2dpY2EKICAgICAgICAgLy8g
YW55IG5ld2x5LWV4cG9zZWQgdGlsZXMuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzUyNzE0PgogI2lm
IFVTRShDQSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChz
Y3JvbGxWaWV3UmVjdCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAg
IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250
ZW50cyhzY3JvbGxWaWV3UmVjdCwgSW50U2l6ZShkeCwgZHkpKTsKICNlbmRpZgogICAgICAgICBy
ZXR1cm47CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCB2b2lkIFdlYlZpZXc6OnNpemVDaGFuZ2VkKGNv
bnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXRTaXplKG5l
d1NpemUpOwogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAg
fQotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0KQogICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LT5yZXNpemVSb290TGF5ZXIobmV3U2l6ZSk7CiAjZW5kaWYKQEAgLTY1NTQsNyArNjU1NCw3
IEBAIGJvb2wgV2ViVmlldzo6cGFpbnRDb21wb3NpdGVkQ29udGVudFRvSERDKEhEQyBkZXZpY2VD
b250ZXh0KQogCiAjaWYgVVNFKENBKQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5n
TGF5ZXJDaGFuZ2VzTm93KCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAg
bV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsK
ICNlbmRpZgogCkBAIC03MjE0LDcgKzcyMTQsNyBAQCB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGls
ZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIGVsc2UKICAgICAgICAgbV9iYWNraW5n
TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKICAgICBpZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29t
cG9zaXRpbmdMYXllcihsYXllcik7CkBAIC03MjI5LDcgKzcyMjksNyBAQCB2b2lkIFdlYlZpZXc6
OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hh
bmdlc1Nvb24oKTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoIW1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29u
KCk7CkBAIC03MjkwLDcgKzcyOTAsNyBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBudWxs
cHRyOwogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwogICAgIH0K
LSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoYWNjZWxlcmF0ZWQgJiYg
IW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCAxODA2Njk4YTlhZC4uNzVmZGViNmU2
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3Mg
V2ViQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0b3I7
CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQor
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
IGNsYXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiBjbGFzcyBXZWJW
aWV3R3JvdXA7CkBAIC03MDMsNyArNzAzLDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShDQSkKICAg
ICBSZWZQdHI8V2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9iYWNraW5nTGF5ZXI7Ci0jZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0PiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2Vu
ZGlmCiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291cmNlL2NtYWtl
L09wdGlvbnNXaW5DYWlyby5jbWFrZQppbmRleCA1NjE0MjVmY2M5ZC4uZTU5N2RlNTUxZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKKysrIGIvU291cmNl
L2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpAQCAtMzgsNyArMzgsMTAgQEAgc2V0KFVTRV9B
TkdMRV9FR0wgT04pCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DQUlSTyBPTikKIFNF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DRiBPTikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFVTRV9DT09SRElOQVRFRF9HUkFQSElDUyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9DVVJMIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX05JQ09TSUEgT04pCitTRVRf
QU5EX0VYUE9TRV9UT19CVUlMRChVU0VfUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0VHTCBPTikKIFNFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9PUEVOR0xfRVMgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChIQVZFX09QRU5HTF9FU18zIE9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397177</attachid>
            <date>2020-04-22 00:45:01 -0700</date>
            <delta_ts>2021-01-26 18:34:26 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>29425</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGYwOGRmODczNTk0Li4xMTdmMGQzMjY5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC04MjQsNyArODI0LDcgQEAKICNkZWZpbmUgRU5BQkxF
X1NIQVJFRF9BUlJBWV9CVUZGRVIgMAogCiAKLSNpZiAoKFBMQVRGT1JNKENPQ09BKSB8fCBQTEFU
Rk9STShQTEFZU1RBVElPTikgfHwgUExBVEZPUk0oV1BFKSkgJiYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiAoKFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9S
TShQTEFZU1RBVElPTikgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShXUEUpKSAmJiBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKSkgfHwgUExBVEZPUk0oR1RLKQogI2RlZmluZSBFTkFCTEVfS0lO
RVRJQ19TQ1JPTExJTkcgMQogI2VuZGlmCiAKQEAgLTgzNCw3ICs4MzQsNyBAQAogI2VuZGlmCiAK
ICNpZiAhZGVmaW5lZChFTkFCTEVfU0NST0xMSU5HX1RIUkVBRCkKLSNpZiBVU0UoTklDT1NJQSkK
KyNpZiBVU0UoTklDT1NJQSkgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICNkZWZpbmUgRU5B
QkxFX1NDUk9MTElOR19USFJFQUQgMQogI2Vsc2UKICNkZWZpbmUgRU5BQkxFX1NDUk9MTElOR19U
SFJFQUQgMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKaW5kZXggOTFiZDllMzZh
OGMuLjczMjI3ZDI4MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNh
aXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAg
LTExLDEzICsxMSwyOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJF
Q1RPUklFUwogKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAKKyAgICBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3Bw
CisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKKyAg
ICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5
Tm9kZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCisKKyAgICBwYWdlL3Njcm9sbGluZy9nZW5lcmlj
L1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCisKICAgICBwYWdlL3dpbi9GcmFtZUNhaXJvV2lu
LmNwcAogICAgIHBhZ2Uvd2luL1Jlc291cmNlVXNhZ2VPdmVybGF5V2luLmNwcAogICAgIHBhZ2Uv
d2luL1Jlc291cmNlVXNhZ2VUaHJlYWRXaW4uY3BwCiAKKyAgICBwbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25LaW5ldGljLmNwcAorCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvV2luLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAKaW5kZXggNzZhMjA4MTNhNjUuLmQ1ZDQ3NjQ3NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5j
cHAKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMu
aCIKICNlbGlmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JH
dGsuaCIKKyNlbGlmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW4uaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw2ICs1NCw5IEBA
IFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3Jl
YXRlRGVmYXVsdERpc3BsYXlSZWZyZXNoCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAg
cmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRvckd0azo6Y3JlYXRlKGRpc3BsYXlJRCk7CisjZW5k
aWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgcmV0dXJuIERpc3BsYXlSZWZyZXNoTW9uaXRvcldp
bjo6Y3JlYXRlKGRpc3BsYXlJRCk7CiAjZW5kaWYKICAgICBVTlVTRURfUEFSQU0oZGlzcGxheUlE
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4IDhiYjQ3Y2EyYjc3Li5hOTllYzhi
NmViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybURpc3BsYXkuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgUGxhdGZvcm1EaXNwbGF5OjpQbGF0
Zm9ybURpc3BsYXkoTmF0aXZlRGlzcGxheU93bmVkIGRpc3BsYXlPd25lZCkKIAogUGxhdGZvcm1E
aXNwbGF5Ojp+UGxhdGZvcm1EaXNwbGF5KCkKIHsKLSNpZiBVU0UoRUdMKQorI2lmIFVTRShFR0wp
ICYmICFQTEFURk9STShXSU4pCiAgICAgQVNTRVJUKG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElT
UExBWSk7CiAjZW5kaWYKICAgICBpZiAoc19zaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcgPT0g
dGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
aXNwbGF5UmVmcmVzaE1vbml0b3JXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEzNWE4NDc0MjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldp
bi5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yV2luLmgiCisKKyNp
ZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1JlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4+IERpc3BsYXlS
ZWZyZXNoTW9uaXRvcldpbjo6Y3JlYXRlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oZGlzcGxh
eUlEKSk7Cit9CisKK0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6RGlzcGxheVJlZnJlc2hNb25p
dG9yV2luKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKKyAgICA6IERpc3BsYXlSZWZyZXNo
TW9uaXRvcihkaXNwbGF5SUQpCisgICAgLCBtX3RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JkRpc3BsYXlSZWZyZXNoTW9uaXRvcldpbjo6ZGlzcGxheUxpbmtGaXJlZCkKK3sKK30KKworYm9v
bCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW46OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQorewor
ICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fdGltZXIu
c3RhcnRPbmVTaG90KDE2X21zKTsKKyAgICBzZXRJc0FjdGl2ZSh0cnVlKTsKKyAgICBzZXRJc1Nj
aGVkdWxlZCh0cnVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBEaXNwbGF5UmVmcmVz
aE1vbml0b3JXaW46OmRpc3BsYXlMaW5rRmlyZWQoKQoreworICAgIGlmICghaXNQcmV2aW91c0Zy
YW1lRG9uZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25l
KGZhbHNlKTsKKworICAgIGhhbmRsZURpc3BsYXlSZWZyZXNoZWROb3RpZmljYXRpb25Pbk1haW5U
aHJlYWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVT
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJlc2hNb25pdG9y
V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlzcGxheVJlZnJl
c2hNb25pdG9yV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFk
MzcwNTFkMmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcldpbi5oCkBAIC0wLDAgKzEsNDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQor
CisjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0
b3JXaW4gOiBwdWJsaWMgRGlzcGxheVJlZnJlc2hNb25pdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbj4gY3JlYXRlKFBsYXRmb3JtRGlzcGxh
eUlEIGRpc3BsYXlJRCk7CisKKyAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoKSBvdmVycmlkZTsK
KyAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JXaW4oUGxhdGZvcm1EaXNwbGF5SUQp
OworICAgIFJ1bkxvb3A6OlRpbWVyPERpc3BsYXlSZWZyZXNoTW9uaXRvcldpbj4gbV90aW1lcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRl
eCA5NTBkZTllMTYzNi4uMGM5ZGRiNDk2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAt
MjcsNiArMjcsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogCiAgICAgU2hhcmVkL0FQ
SS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorCiAgICAgU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGVOb25lLmNwcAogCiAgICAgU2hhcmVk
L3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldpbi5jcHAKQEAgLTE1Niw2ICsxNTgsMTIgQEAgaWYg
KCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAKICAgICAgICAgU2hhcmVkL0FQSS9jL2NhaXJv
L1dLSW1hZ2VDYWlyby5jcHAKIAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAorICAgICAgICBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmNwcAorICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisKKyAgICAgICAgU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvU2ltcGxlVmlld3BvcnRDb250cm9sbGVyLmNwcAorCiAgICAgICAg
IFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAogICAgICAgICBTaGFyZWQv
Y3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcApAQCAtMTY1LDYgKzE3Myw4IEBAIGlm
ICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogICAgICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFj
a2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9j
dXJsL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisKKyAgICAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCiAgICAgKQogCiAgICAgbGlzdChB
UFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcAppbmRleCA4NDg3MmVkMmI3Yy4uMTNhYzlmNzg5NzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlU2NlbmVTdGF0ZSgpCiAKICAgICAv
LyBTdG9yZSBsYXllciBhbmQgaW1wbCByZWZlcmVuY2VzIGFsb25nIHdpdGggdGhlIGNvcnJlc3Bv
bmRpbmcgdXBkYXRlCiAgICAgLy8gZm9yIGVhY2ggdHlwZSBvZiBwb3NzaWJsZSBsYXllciBiYWNr
aW5nLgotICAgIHN0cnVjdCB7CisgICAgc3RydWN0IExheWVyc0J5QmFja2luZyB7CiAgICAgICAg
IHN0cnVjdCBCYWNraW5nU3RvcmUgewogICAgICAgICAgICAgc3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxUZXh0dXJlTWFwcGVyTGF5ZXI+IGxheWVyOwogICAgICAgICAgICAgc3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbD4gYmFja2luZ1N0
b3JlOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1
cGRhdGVTY2VuZVN0YXRlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6
OnJlZihsYXllciksIHN0ZDo6cmVmKGltcGwucHJveHkoKSksIGxheWVyU3RhdGUuZGVsdGEuY29u
dGVudExheWVyQ2hhbmdlZCB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
bGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRvJiBpbXBsID0gaW1hZ2VCYWNraW5nSW1wbCgqbGF5ZXJTdGF0ZS5pbWFnZUJhY2tpbmcpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyc0J5QmFja2luZy5pbWFnZUJhY2tpbmcu
YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyc0J5QmFja2luZy5pbWFn
ZUJhY2tpbmcuYXBwZW5kPExheWVyc0J5QmFja2luZzo6SW1hZ2VCYWNraW5nPigKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6OnJlZihsYXllciksIHN0ZDo6cmVmKGltcGwp
LCBpbXBsLnRha2VVcGRhdGUoKSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLnNldENvbnRlbnRzTGF5ZXIobnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmNwcAppbmRleCBiOGM3MzAzZTc1OS4uOWY4NTQxMTY1NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNw
cApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpmb3JjZVJlcGFp
bnQoKQogewogICAgIC8vIEZJWE1FOiBFbmFibGUgdGhpcyBmb3IgV1BFIG9uY2UgaXQncyBwb3Nz
aWJsZSB0byBkbyB0aGVzZSBmb3JjZWQgdXBkYXRlcwogICAgIC8vIGluIGEgd2F5IHRoYXQgZG9l
c24ndCBzdGFydmUgb3V0IHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIGJ1ZmZlcnMuCi0jaWYgUExB
VEZPUk0oR1RLKSAmJiAhVVNFKFdQRV9SRU5ERVJFUikKKyNpZiAhUExBVEZPUk0oV1BFKSAmJiAh
VVNFKFdQRV9SRU5ERVJFUikKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tT
eW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgcmVu
ZGVyTGF5ZXJUcmVlKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGRjMTE1MmY4ZWIxLi5jNDc3YWIyYTQ0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTExMyw2ICsxMTMsOSBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAjZW5kaWYKICNpZiBVU0Uo
V1BFX1JFTkRFUkVSKQogICAgIGVuY29kZXIgPDwgaG9zdEZpbGVEZXNjcmlwdG9yOworI2VuZGlm
CisjaWYgUExBVEZPUk0oV0lOKQorICAgIGVuY29kZXIgPDwgbmF0aXZlV2luZG93SGFuZGxlOwog
I2VuZGlmCiAgICAgZW5jb2RlciA8PCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwog
ICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsTGluZXNDbGFtcEVuYWJsZWQ7CkBAIC0zNTEsNiArMzU0
LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyNlbmRpZgorCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFwcGxl
TWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKaW5kZXggMzc4MmE0MTJhN2YuLjg3MzI0YmIxYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xNzIsNiArMTcyLDkgQEAg
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAjaWYgVVNFKFdQRV9S
RU5ERVJFUikKICAgICBJUEM6OkF0dGFjaG1lbnQgaG9zdEZpbGVEZXNjcmlwdG9yOworI2VuZGlm
CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZTsKICNl
bmRpZgogICAgIGJvb2wgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKICAgICBib29s
IGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggOGUxYjg2N2M1NjcuLjU4YTQ5NGFlMmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc4MTIsNiArNzgxMiwxMCBAQCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdl
YlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMuaG9zdEZpbGVEZXNjcmlwdG9yID0g
cGFnZUNsaWVudCgpLmhvc3RGaWxlRGVzY3JpcHRvcigpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShXSU4pCisgICAgcGFyYW1ldGVycy5uYXRpdmVXaW5kb3dIYW5kbGUgPSByZWludGVycHJldF9j
YXN0PHVpbnQ2NF90Pih2aWV3V2lkZ2V0KCkpOworI2VuZGlmCisKICAgICBmb3IgKGF1dG8mIGl0
ZXJhdG9yIDogbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lKQogICAgICAgICBwYXJhbWV0ZXJz
LnVybFNjaGVtZUhhbmRsZXJzLnNldChpdGVyYXRvci5rZXksIGl0ZXJhdG9yLnZhbHVlLT5pZGVu
dGlmaWVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXgg
NGE5NmI1ZTk5ODguLjZkOTYxYjY2OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCkBAIC0yMzcsNiArMjM3LDcgQEAgV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3Qs
IGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEhXTkQgcGEKICAg
ICBBU1NFUlQobV9pc1Zpc2libGUgPT0gc3RhdGljX2Nhc3Q8Ym9vbD4oOjpHZXRXaW5kb3dMb25n
KG1fd2luZG93LCBHV0xfU1RZTEUpICYgV1NfVklTSUJMRSkpOwogCiAgICAgYXV0byBwYWdlQ29u
ZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24uY29weSgpOworI2lmIDAKICAgICBhdXRvKiBwcmVm
ZXJlbmNlcyA9IHBhZ2VDb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpOwogICAgIGlmICghcHJl
ZmVyZW5jZXMgJiYgcGFnZUNvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKSB7CiAgICAgICAgIHBy
ZWZlcmVuY2VzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMo
KTsKQEAgLTI0Niw2ICsyNDcsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3Qg
QVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgICAgICAv
LyBEaXNhYmxlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHVudGlsIGl0IGlzIHN1cHBvcnRlZC4K
ICAgICAgICAgcHJlZmVyZW5jZXMtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZh
bHNlKTsKICAgICB9CisjZW5kaWYKIAogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCA9
IHBhZ2VDb25maWd1cmF0aW9uLT5wcm9jZXNzUG9vbCgpOwogICAgIG1fcGFnZSA9IHByb2Nlc3NQ
b29sLT5jcmVhdGVXZWJQYWdlKCptX3BhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2Vs
ZXJhdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2Nl
bGVyYXRlZFN1cmZhY2UuY3BwCmluZGV4IDEzMzA2NzFmNGEyLi41ZjNmZWEwYjZlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1
cmZhY2UuY3BwCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFj
ZUxpYldQRS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSAiQWNjZWxl
cmF0ZWRTdXJmYWNlV2luLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjEsNiArNjUsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEFj
Y2VsZXJhdGVkU3VyZmFjZT4gQWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVhdGUoV2ViUGFnZSYgd2Vi
UGFnZSwKICNpZiBVU0UoTElCV1BFKQogICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXUEUpCiAgICAgICAgIHJl
dHVybiBBY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEU6OmNyZWF0ZSh3ZWJQYWdlLCBjbGllbnQpOwor
I2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJl
ZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXaW5kb3dzKQorICAg
ICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50
KTsKICNlbmRpZgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IGUxZDhiMGIwYjdmLi44ZjhiZDhmYWJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQxMiw2ICs0MTIsOSBAQCBXZWJQYWdlOjpX
ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IobWFrZVVu
aXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2Jq
ZWN0KG51bGxwdHIpCisjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgLCBtX25hdGl2ZVdp
bmRvd0hhbmRsZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkKICNlbmRpZgogICAgICwg
bV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZTo6
c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMzBmMDIzNWU3
OTAuLjllZGNjZDAwOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xMDM4LDYgKzEwMzgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hU
b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmLCBib29sJiBoYW5kbGVkKTsKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZSgpIHsg
cmV0dXJuIG1fbmF0aXZlV2luZG93SGFuZGxlOyB9CisjZW5kaWYKKwogICAgIGJvb2wgc2hvdWxk
VXNlQ3VzdG9tQ29udGVudFByb3ZpZGVyRm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgYm9vbCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZDsgfQpAQCAtMTgyNCw2ICsxODI4LDEwIEBAIHByaXZhdGU6CiAgICAgR1JlZlB0
cjxBdGtPYmplY3Q+IG1fYWNjZXNzaWJpbGl0eU9iamVjdDsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oV0lOKQorICAgIHVpbnQ2NF90IG1fbmF0aXZlV2luZG93SGFuZGxlIHsgMCB9OworI2VuZGlm
CisKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBSZWZQdHI8UGFnZUJhbm5lcj4gbV9o
ZWFkZXJCYW5uZXI7CiAgICAgUmVmUHRyPFBhZ2VCYW5uZXI+IG1fZm9vdGVyQmFubmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVk
U3VyZmFjZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uNWQzYTE0NDU3YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNwcApAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VXaW4uaCIKKwor
I2luY2x1ZGUgIldlYlBhZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4gQWNj
ZWxlcmF0ZWRTdXJmYWNlV2luOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwgQ2xpZW50JiBjbGll
bnQpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VXaW4+
KG5ldyBBY2NlbGVyYXRlZFN1cmZhY2VXaW4od2ViUGFnZSwgY2xpZW50KSk7Cit9CisKK0FjY2Vs
ZXJhdGVkU3VyZmFjZVdpbjo6QWNjZWxlcmF0ZWRTdXJmYWNlV2luKFdlYlBhZ2UmIHdlYlBhZ2Us
IENsaWVudCYgY2xpZW50KQorICAgIDogQWNjZWxlcmF0ZWRTdXJmYWNlKHdlYlBhZ2UsIGNsaWVu
dCkKK3sKK30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp+QWNjZWxlcmF0ZWRTdXJmYWNlV2lu
KCkKK3sKK30KKwordWludDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjp3aW5kb3coKSBjb25z
dAoreworICAgIHJldHVybiBtX3dlYlBhZ2UubmF0aXZlV2luZG93SGFuZGxlKCk7Cit9CisKK3Vp
bnQ2NF90IEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6c3VyZmFjZUlEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93ZWJQYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpOworfQorCit2b2lkIEFjY2Vs
ZXJhdGVkU3VyZmFjZVdpbjo6ZGlkUmVuZGVyRnJhbWUoKQoreworICAgIC8vIEZJWE1FOiBmcmFt
ZUNvbXBsZXRlKCkgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBmcmFtZSB3YXMgYWN0dWFsbHkg
cmVuZGVyZWQgaW4gdGhlIHNjcmVlbi4KKyAgICBtX2NsaWVudC5mcmFtZUNvbXBsZXRlKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NWI0NGVjNDM2OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1
cmZhY2VXaW4uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oV0lOKQor
CisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBBY2NlbGVyYXRlZFN1cmZhY2VXaW4gZmluYWwgOiBw
dWJsaWMgQWNjZWxlcmF0ZWRTdXJmYWNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2Nl
bGVyYXRlZFN1cmZhY2VXaW4pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZVdpbj4gY3JlYXRlKFdl
YlBhZ2UmLCBDbGllbnQmKTsKKyAgICB+QWNjZWxlcmF0ZWRTdXJmYWNlV2luKCk7CisKKyAgICB1
aW50NjRfdCB3aW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICB1aW50NjRfdCBzdXJmYWNlSUQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlbmRlckZyYW1lKCkgb3ZlcnJpZGU7CisK
K3ByaXZhdGU6CisgICAgQWNjZWxlcmF0ZWRTdXJmYWNlV2luKFdlYlBhZ2UmLCBDbGllbnQmKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzTWFpbldp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NNYWluV2luLmNw
cAppbmRleCBmMGVhNWM1NzAzYi4uZTMyZjMzNGFlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc01haW5XaW4uY3BwCkBAIC0zNyw2ICszNyw3IEBA
IGNsYXNzIFdlYlByb2Nlc3NNYWluV2luIGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NN
YWluQmFzZSB7CiBwdWJsaWM6CiAgICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemUoKSBvdmVycmlk
ZQogICAgIHsKKyAgICAgICAgU2V0UHJvY2Vzc0RQSUF3YXJlKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dC5jcHAKaW5kZXggNjg3ZmFhMDZmZmEuLjUzYThiOTdjYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNs
dWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgogCi0jaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKIAogI2luY2x1ZGUgIldlYlZpZXcuaCIKIApAQCAtMzM3LDQgKzMzNyw0IEBA
IGZsb2F0IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpkZXZpY2VTY2FsZUZhY3Rvcigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViVmlldy5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi0j
ZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VuZGlmIC8vIFVTRShURVhUVVJFX01B
UFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCmluZGV4IGRlZWNmNDQwZTY5Li5hMGI3NWVjNmM0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCkBAIC0yNiw3ICsy
Niw3IEBACiAjaWZuZGVmIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKICNkZWZpbmUg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HTENvbnRleHQuaD4KQEAgLTk4LDYgKzk4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoKTsKIH07CiAKLSNlbmRpZiAvLyBURVhUVVJFX01BUFBFUl9HTAor
I2VuZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAKICNlbmRpZiAvLyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDcyMTY5NDczNGQ0Li43YzM5NGFmOGQyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQAogI2lmIFVTRShD
QSkKICNpbmNsdWRlIDxXZWJDb3JlL0NBQ0ZMYXllclRyZWVIb3N0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNl
bGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgogI2VuZGlmCiAKQEAg
LTkxNCw3ICs5MTQsNyBAQCB2b2lkIFdlYlZpZXc6OmFkZFRvRGlydHlSZWdpb24oY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQogICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewog
I2lmIFVTRShDQSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVj
dChkaXJ0eVJlY3QpOwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBt
X2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXROb25Db21wb3NpdGVkQ29udGVudHNO
ZWVkRGlzcGxheShkaXJ0eVJlY3QpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKQEAgLTk4Niw3
ICs5ODYsNyBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZy
YW1lVmlldywgaW50IGxvZ2ljYWxEeCwgaW50IGxvZ2ljYQogICAgICAgICAvLyBhbnkgbmV3bHkt
ZXhwb3NlZCB0aWxlcy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI3MTQ+CiAjaWYgVVNFKENBKQog
ICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdS
ZWN0KTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAgICAgbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNjcm9s
bFZpZXdSZWN0LCBJbnRTaXplKGR4LCBkeSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKQEAg
LTEwNTYsNyArMTA1Niw3IEBAIHZvaWQgV2ViVmlldzo6c2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6
ZSYgbmV3U2l6ZSkKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CiAg
ICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9Ci0jZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJlc2l6
ZVJvb3RMYXllcihuZXdTaXplKTsKICNlbmRpZgpAQCAtNjU1Nyw3ICs2NTU3LDcgQEAgYm9vbCBX
ZWJWaWV3OjpwYWludENvbXBvc2l0ZWRDb250ZW50VG9IREMoSERDIGRldmljZUNvbnRleHQpCiAK
ICNpZiBVU0UoQ0EpCiAgICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXNOb3coKTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBtX2FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaEFuZFJlbmRlckxheWVycygpOwogI2VuZGlmCiAK
QEAgLTcyMTcsNyArNzIxNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIoR3Jh
cGhpY3NMYXllciogbGF5ZXIpCiAgICAgZWxzZQogICAgICAgICBtX2JhY2tpbmdMYXllci0+cmVt
b3ZlQWxsQ2hpbGRyZW4oKTsKIAotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAg
IGlmICghbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKGxheWVyKTsKQEAgLTcyMzIsNyArNzIzMiw3IEBAIHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5k
aW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigp
OwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsKQEAgLTcy
OTMsNyArNzI5Myw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhi
b29sIGFjY2VsZXJhdGVkKQogICAgICAgICBtX2JhY2tpbmdMYXllciA9IG51bGxwdHI7CiAgICAg
ICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gZmFsc2U7CiAgICAgfQotI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dCA9IG1ha2VVbmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlz
KTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJhdGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5oCmluZGV4IDE4MDY2OThhOWFkLi43NWZkZWI2ZTY2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNsYXNzIFdl
Ykluc3BlY3RvckNsaWVudDsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogY2xhc3MgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKIGNsYXNzIFdlYlZpZXdHcm91cDsK
QEAgLTcwMyw3ICs3MDMsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgVVNFKENBKQogICAgIFJlZlB0cjxX
ZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2JhY2tpbmdMYXllcjsKLSNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ+IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ7CiAjZW5kaWYKICAgICBi
b29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dp
bkNhaXJvLmNtYWtlCmluZGV4IDM1ZWRmODUzZjg5Li5hZGNiM2I0NWZkNyAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbkNhaXJvLmNtYWtlCkBAIC0zOCw3ICszOCwxMCBAQCBzZXQoVVNFX0FOR0xFX0VHTCBP
TikKIAogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9FWFBP
U0VfVE9fQlVJTEQoVVNFX0NGIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JE
SU5BVEVEX0dSQVBISUNTIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04p
CitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTklDT1NJQSBPTikKK1NFVF9BTkRfRVhQT1NF
X1RPX0JVSUxEKFVTRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IgT04p
CiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfRUdMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9f
QlVJTEQoVVNFX09QRU5HTF9FUyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEhBVkVfT1BF
TkdMX0VTXzMgT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418496</attachid>
            <date>2021-01-26 18:34:16 -0800</date>
            <delta_ts>2021-01-26 18:34:16 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>coord-gfx.diff</filename>
            <type>text/plain</type>
            <size>24304</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDE5MTE2OTJjNTdkZC4uMzU1NWY2ZWE3ZjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTgzNiw3ICs4MzYsNyBAQAogI2RlZmluZSBFTkFC
TEVfSU5MSU5FX1BBVEhfREFUQSAxCiAjZW5kaWYKIAotI2lmICgoUExBVEZPUk0oQ09DT0EpIHx8
IFBMQVRGT1JNKFBMQVlTVEFUSU9OKSB8fCBQTEFURk9STShXUEUpKSAmJiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSkgfHwgUExBVEZPUk0oR1RLKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
IHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgRU5BQkxFX0tJTkVUSUNfU0NST0xMSU5HIDEKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQppbmRleCBkMTU1MjUzOThi
MGEuLjJlYWQyN2VmOGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5D
YWlyby5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBA
IC0xNSw2ICsxNSwxOSBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJF
Q1RPUklFUwogKQogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAKKyAgICBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCisgICAgcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3Bw
CisgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKKyAg
ICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5
Tm9kZS5jcHAKKyAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCisKKyAgICBwbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25LaW5ldGljLmNwcAorICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKKwog
ICAgIHBhZ2Uvd2luL0ZyYW1lQ2Fpcm9XaW4uY3BwCiAgICAgcGFnZS93aW4vUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlXaW4uY3BwCiAgICAgcGFnZS93aW4vUmVzb3VyY2VVc2FnZVRocmVhZFdpbi5jcHAK
QEAgLTI0LDYgKzM3LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJI
YXJmQnV6ei5jcHAKIAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXNwbGF5UmVmcmVzaE1v
bml0b3JXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0
YUNhaXJvV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HbHlwaFBhZ2VUcmVlTm9k
ZUNhaXJvV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggZDk4NjY2YjU0ZWEyLi5jMmUyNGQ0YjE5NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIFBsYXRmb3JtRGlzcGxheSYgUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkKIHsKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gQU5HTEUg
RDNEIHJlbmRlcmVyIGlzbid0IHRocmVhZC1zYWZlLiBEb24ndCBkZXN0cnVjdCBpdCBvbiBub24t
bWFpbiB0aHJlYWRzIHdoaWNoIGNhbGxzIF9leGl0KCkuCi0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICAvL0FTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIFBsYXRmb3Jt
RGlzcGxheSogZGlzcGxheSA9IGNyZWF0ZVBsYXRmb3JtRGlzcGxheSgpLnJlbGVhc2UoKTsKICAg
ICByZXR1cm4gKmRpc3BsYXk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBjMmY0YTIzNjFhMGEuLjFiZDMyZWE0YjgzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTE0
NSwyMCArMTQ1LDIwIEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAKICNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAgICAgICAgIGdsOjpHZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9y
VGV4dHVyZSk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh1cmVUeXBlLCBtX2NvbXBvc2l0
b3JUZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYodGV4dXJlVHlwZSwgR0xfVEVY
VFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZih0
ZXh1cmVUeXBlLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGds
OjpUZXhQYXJhbWV0ZXJpKHRleHVyZVR5cGUsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9U
T19FREdFKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dXJlVHlwZSwgR0xfVEVYVFVS
RV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4
dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0
ZXJmKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAg
ICAgICAgZ2w6OlRleFBhcmFtZXRlcmYodGV4dHVyZVRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0
LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsOjpUZXhQ
YXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19F
REdFKTsKIAogICAgICAgICBnbDo6R2VuVGV4dHVyZXMoMSwgJm1faW50ZXJtZWRpYXRlVGV4dHVy
ZSk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh1cmVUeXBlLCBtX2ludGVybWVkaWF0ZVRl
eHR1cmUpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZih0ZXh1cmVUeXBlLCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJmKHRleHVy
ZVR5cGUsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2w6OlRl
eFBhcmFtZXRlcmkodGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VE
R0UpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh1cmVUeXBlLCBHTF9URVhUVVJFX1dS
QVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJl
VGFyZ2V0LCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVy
Zih0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAg
ICAgIGdsOjpUZXhQYXJhbWV0ZXJmKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dHVyZVRhcmdldCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbDo6VGV4UGFy
YW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURH
RSk7CiAKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHVyZVR5cGUsIDApOworICAgICAgICBn
bDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgMCk7CiAjZW5kaWYKIAogICAgICAgICAvLyBD
cmVhdGUgYSBtdWx0aXNhbXBsZSBGQk8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGFkNGU4ZGQ5ZDcxYi4uZjNlYjIxZTJmM2FkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtMTc3Miw3ICsxNzcyLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUV2ZW50
UmVnaW9uKCkKICAgICB9OwogCiAgICAgYXV0byB1cGRhdGVFdmVudFJlZ2lvbkZvckxheWVyID0g
WyZdKEdyYXBoaWNzTGF5ZXImIGdyYXBoaWNzTGF5ZXIpIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0IG51bGxDb250ZXh0KG51bGxwdHIpOworICAgICAgICBHcmFwaGljc0NvbnRleHQgbnVsbENv
bnRleHQoc3RhdGljX2Nhc3Q8UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqPihudWxscHRyKSk7CiAg
ICAgICAgIEV2ZW50UmVnaW9uIGV2ZW50UmVnaW9uOwogI2lmIEVOQUJMRShFRElUQUJMRV9SRUdJ
T04pCiAgICAgICAgIGlmIChyZW5kZXJlcigpLnBhZ2UoKS5zaG91bGRCdWlsZEVkaXRhYmxlUmVn
aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAwM2FmNTY1ZWQxYWUuLjI1YTQ2NzVj
NWYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0zMSw2ICszMSw4IEBAIGxpc3QoQVBQ
RU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRl
SW5mb0N1cmwuY3BwCiAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwCisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZU5vbmUuY3BwCiAKICAgICBTaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NN
YWluV2luLmNwcApAQCAtODksNyArOTEsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwog
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5jcHAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCi0gICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3BwCisg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5j
cHAKIAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKIApAQCAtMTU2
LDYgKzE1OCwxMiBAQCBpZiAoJHtXVEZfUExBVEZPUk1fV0lOX0NBSVJPfSkKIAogICAgICAgICBT
aGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAogCisgICAgICAgIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3Bw
CisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwCisgICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKwor
ICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCisKICAgICAgICAgU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAog
CiAgICAgICAgIFNoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0x
NjUsNiArMTczLDggQEAgaWYgKCR7V1RGX1BMQVRGT1JNX1dJTl9DQUlST30pCiAgICAgICAgIFVJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgICAgICBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2N1cmwvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKworICAg
ICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0FjY2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAKICAg
ICApCiAKICAgICBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGMzMzFkYzdmZjI5Mi4uMTYw
Y2ZhYzY2ODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBA
IC0yMDgsNyArMjA4LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVNj
ZW5lU3RhdGUoKQogCiAgICAgLy8gU3RvcmUgbGF5ZXIgYW5kIGltcGwgcmVmZXJlbmNlcyBhbG9u
ZyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHVwZGF0ZQogICAgIC8vIGZvciBlYWNoIHR5cGUgb2Yg
cG9zc2libGUgbGF5ZXIgYmFja2luZy4KLSAgICBzdHJ1Y3QgeworICAgIHN0cnVjdCBMYXllcnNC
eUJhY2tpbmcgewogICAgICAgICBzdHJ1Y3QgQmFja2luZ1N0b3JlIHsKICAgICAgICAgICAgIHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VGV4dHVyZU1hcHBlckxheWVyPiBsYXllcjsKICAgICAgICAg
ICAgIHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Tmljb3NpYTo6QmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGw+IGJhY2tpbmdTdG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IDBiYjAwYmU0ZTZlNS4uMzQ4
MzRjNDlkMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFRocmVhZGVk
Q29tcG9zaXRvcjo6Zm9yY2VSZXBhaW50KCkKIHsKICAgICAvLyBGSVhNRTogRW5hYmxlIHRoaXMg
Zm9yIFdQRSBvbmNlIGl0J3MgcG9zc2libGUgdG8gZG8gdGhlc2UgZm9yY2VkIHVwZGF0ZXMKICAg
ICAvLyBpbiBhIHdheSB0aGF0IGRvZXNuJ3Qgc3RhcnZlIG91dCB0aGUgdW5kZXJseWluZyBncmFw
aGljcyBidWZmZXJzLgotI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShXUEVfUkVOREVSRVIpCisj
aWYgIVBMQVRGT1JNKFdQRSkgJiYgIVVTRShXUEVfUkVOREVSRVIpCiAgICAgbV9jb21wb3NpdGlu
Z1J1bkxvb3AtPnBlcmZvcm1UYXNrU3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSB7CiAgICAgICAgIHJlbmRlckxheWVyVHJlZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS93aW4vVmlkZW9MYXllclJlbW90
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL3dpbi9WaWRlb0xh
eWVyUmVtb3RlV2luLmNwcAppbmRleCBiNzI0ZTE3YzM1ODQuLjBiMDIyN2IwZDM3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS93aW4vVmlkZW9MYXllclJl
bW90ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS93aW4v
VmlkZW9MYXllclJlbW90ZVdpbi5jcHAKQEAgLTMxLDYgKzMxLDE0IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXIuaD4KIAorI2lmIFVTRShOSUNPU0lBKQorI2luY2x1ZGUgPFdlYkNvcmUvTmlj
b3NpYVBsYXRmb3JtTGF5ZXIuaD4KKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNp
bmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlci5o
PgorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGxh
dGZvcm1MYXllckNvbnRhaW5lciBjcmVhdGVWaWRlb0xheWVyUmVtb3RlKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZSogbWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLCBMYXllckhvc3RpbmdDb250ZXh0
SUQgY29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKaW5kZXggYTg0ZWVhNDJiZDY0Li4yNmZhN2I4ZWVj
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJh
dGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNj
ZWxlcmF0ZWRTdXJmYWNlLmNwcApAQCAtNDEsNiArNDEsMTAgQEAKICNpbmNsdWRlICJBY2NlbGVy
YXRlZFN1cmZhY2VMaWJXUEUuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1
ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZVdpbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTYxLDYgKzY1LDEwIEBAIHN0ZDo6dW5p
cXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2U+IEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKFdl
YlBhZ2UmIHdlYlBhZ2UsCiAjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBpZiAoUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6
V1BFKQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFOjpjcmVhdGUod2Vi
UGFnZSwgY2xpZW50KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlw
ZTo6V2luZG93cykKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZVdpbjo6Y3JlYXRl
KHdlYlBhZ2UsIGNsaWVudCk7CiAjZW5kaWYKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggNTdmNzlmZmQ0YTMyLi40MDE2
YmU1MmIyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMTE5LDYgKzExOSw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjp3aGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVu
dCYgd2hlCiAgICAgfQogI2VuZGlmCiAKKyAgICBhdXRvIHRoaXNFdmVudERpc3BhdGNoZXIgPSB0
aGlzOwogICAgIGF1dG8gcHJvY2Vzc2luZ1N0ZXBzID0gT3B0aW9uU2V0PFdlYkNvcmU6OldoZWVs
RXZlbnRQcm9jZXNzaW5nU3RlcHM+IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRo
cmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
ckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFE
KQogICAgIHByb2Nlc3NpbmdTdGVwcyA9IFsmXSgpIC0+IE9wdGlvblNldDxXaGVlbEV2ZW50UHJv
Y2Vzc2luZ1N0ZXBzPiB7CkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6
OndoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3
aGUKIAogICAgICAgICBzY3JvbGxpbmdUcmVlLT53aWxsUHJvY2Vzc1doZWVsRXZlbnQoKTsKIAot
ICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtzY3JvbGxpbmdUcmVlLCB3aGVlbEV2
ZW50LCBwbGF0Zm9ybVdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcywgcGFnZUlELCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNw
YXRjaChbc2Nyb2xsaW5nVHJlZSwgd2hlZWxFdmVudCwgcGxhdGZvcm1XaGVlbEV2ZW50LCBwcm9j
ZXNzaW5nU3RlcHMsIHBhZ2VJRCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXNFdmVudERp
c3BhdGNoZXIpXSB7CiAgICAgICAgICAgICBpZiAocHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdo
ZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpKSB7CiAgICAg
ICAgICAgICAgICAgc2Nyb2xsaW5nVHJlZS0+d2lsbFNlbmRFdmVudFRvTWFpblRocmVhZChwbGF0
Zm9ybVdoZWVsRXZlbnQpOwogICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNo
V2hlZWxFdmVudFZpYU1haW5UaHJlYWQocGFnZUlELCB3aGVlbEV2ZW50LCBwcm9jZXNzaW5nU3Rl
cHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL0Fj
Y2VsZXJhdGVkU3VyZmFjZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjVkM2ExNDQ1N2M0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9BY2NlbGVyYXRlZFN1cmZhY2VXaW4uY3BwCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFj
ZVdpbi5oIgorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJm
YWNlV2luPiBBY2NlbGVyYXRlZFN1cmZhY2VXaW46OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBD
bGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVk
U3VyZmFjZVdpbj4obmV3IEFjY2VsZXJhdGVkU3VyZmFjZVdpbih3ZWJQYWdlLCBjbGllbnQpKTsK
K30KKworQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpBY2NlbGVyYXRlZFN1cmZhY2VXaW4oV2ViUGFn
ZSYgd2ViUGFnZSwgQ2xpZW50JiBjbGllbnQpCisgICAgOiBBY2NlbGVyYXRlZFN1cmZhY2Uod2Vi
UGFnZSwgY2xpZW50KQoreworfQorCitBY2NlbGVyYXRlZFN1cmZhY2VXaW46On5BY2NlbGVyYXRl
ZFN1cmZhY2VXaW4oKQoreworfQorCit1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VXaW46Ondp
bmRvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5uYXRpdmVXaW5kb3dIYW5kbGUo
KTsKK30KKwordWludDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpzdXJmYWNlSUQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3dlYlBhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCk7Cit9CisK
K3ZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlV2luOjpkaWRSZW5kZXJGcmFtZSgpCit7CisgICAgLy8g
RklYTUU6IGZyYW1lQ29tcGxldGUoKSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGZyYW1lIHdh
cyBhY3R1YWxseSByZW5kZXJlZCBpbiB0aGUgc2NyZWVuLgorICAgIG1fY2xpZW50LmZyYW1lQ29t
cGxldGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2luLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vQWNjZWxlcmF0ZWRTdXJmYWNlV2lu
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NWI0NGVjNDM2OTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4v
QWNjZWxlcmF0ZWRTdXJmYWNlV2luLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBM
QVRGT1JNKFdJTikKKworI2luY2x1ZGUgIkFjY2VsZXJhdGVkU3VyZmFjZS5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgQWNjZWxlcmF0ZWRTdXJmYWNl
V2luIGZpbmFsIDogcHVibGljIEFjY2VsZXJhdGVkU3VyZmFjZSB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQWNjZWxlcmF0ZWRTdXJmYWNlV2luKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZFN1cmZhY2VX
aW4+IGNyZWF0ZShXZWJQYWdlJiwgQ2xpZW50Jik7CisgICAgfkFjY2VsZXJhdGVkU3VyZmFjZVdp
bigpOworCisgICAgdWludDY0X3Qgd2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdWludDY0
X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZW5kZXJGcmFtZSgp
IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIEFjY2VsZXJhdGVkU3VyZmFjZVdpbihXZWJQYWdl
JiwgQ2xpZW50Jik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBM
QVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNw
cAppbmRleCA0YWYxYmU4MWY5ODcuLjI4MzczNjEwMjZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVk
ZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIKIAotI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAKQEAgLTM0MCw0ICszNDAsNCBAQCBT
dHJpbmcgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmxheWVyVHJlZUFzU3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gbV9yb290TGF5ZXItPmxheWVyVHJlZUFzVGV4dChMYXllclRyZWVB
c1RleHRTaG93QWxsKTsKIH0KIAotI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNl
bmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCBjMDZh
OGVhNmRhNzguLjdhNGJjN2YxZDdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0X2gKICNkZWZpbmUgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAog
Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRS
ZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KQEAgLTEwMiw0ICsxMDIsNCBA
QCBwcml2YXRlOgogCiAjZW5kaWYgLy8gVEVYVFVSRV9NQVBQRVJfR0wKIAotI2VuZGlmIC8vIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKKyNlbmRpZiAvLyBURVhUVVJFX01BUFBFUl9H
TCAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAppbmRleCA1MWM4Y2YxZjI2NTcuLjZkMWMwZDUwYTU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQAogI2lmIFVTRShDQSkKICNpbmNsdWRl
IDxXZWJDb3JlL0NBQ0ZMYXllclRyZWVIb3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bUNBTGF5ZXIuaD4KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgogI2VuZGlmCiAKQEAgLTkxOCw3ICs5MTgs
NyBAQCB2b2lkIFdlYlZpZXc6OmFkZFRvRGlydHlSZWdpb24oY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0KQogICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewogI2lmIFVTRShDQSkK
ICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChkaXJ0eVJlY3Qp
OwotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LT5zZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShk
aXJ0eVJlY3QpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKQEAgLTk5MCw3ICs5OTAsNyBAQCB2
b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgaW50
IGxvZ2ljYWxEeCwgaW50IGxvZ2ljYQogICAgICAgICAvLyBhbnkgbmV3bHktZXhwb3NlZCB0aWxl
cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI3MTQ+CiAjaWYgVVNFKENBKQogICAgICAgICBtX2Jh
Y2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKLSNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYg
IVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC0+c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNjcm9sbFZpZXdSZWN0LCBJ
bnRTaXplKGR4LCBkeSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKQEAgLTEwNjAsNyArMTA2
MCw3IEBAIHZvaWQgV2ViVmlldzo6c2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkK
ICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CiAgICAgICAgIG1fYmFj
a2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9Ci0jZWxpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiAgICAgaWYgKG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAg
ICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJlc2l6ZVJvb3RMYXllcihu
ZXdTaXplKTsKICNlbmRpZgpAQCAtNjU1OSw3ICs2NTU5LDcgQEAgYm9vbCBXZWJWaWV3OjpwYWlu
dENvbXBvc2l0ZWRDb250ZW50VG9IREMoSERDIGRldmljZUNvbnRleHQpCiAKICNpZiBVU0UoQ0Ep
CiAgICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3coKTsKLSNl
bGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LT5mbHVzaEFuZFJlbmRlckxheWVycygpOwogI2VuZGlmCiAKQEAgLTcyMTksNyAr
NzIxOSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIoR3JhcGhpY3NMYXllciog
bGF5ZXIpCiAgICAgZWxzZQogICAgICAgICBtX2JhY2tpbmdMYXllci0+cmVtb3ZlQWxsQ2hpbGRy
ZW4oKTsKIAotI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldFJvb3RDb21wb3NpdGluZ0xheWVyKGxheWVyKTsK
QEAgLTcyMzQsNyArNzIzNCw3IEBAIHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NM
YXllckNoYW5nZXNTb29uKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2xheWVyVHJl
ZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwotI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmICghaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KCkpIHsKICAgICAgICAgbV9wYWdlLT5pc29sYXRlZFVwZGF0ZVJlbmRlcmluZygpOwogICAgICAg
ICByZXR1cm47CkBAIC03Mjk5LDcgKzcyOTksNyBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICAgICAgbV9iYWNraW5nTGF5ZXIg
PSBudWxscHRyOwogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwog
ICAgIH0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNlbGlmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBpZiAoYWNjZWxlcmF0
ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCiAgICAgICAgIG1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2Nl
bGVyYXRlZDsKQEAgLTc4ODYsMTAgKzc4ODYsMTIgQEAgSFJFU1VMVCBXZWJWaWV3OjpsYXllclRy
ZWVBc1N0cmluZyhfRGVyZWZfb3B0X291dF8gQlNUUiogdHJlZUJzdHIpCiAgICAgICAgIHJldHVy
biBTX09LOwogCiAgICAgU3RyaW5nIHRyZWUgPSBtX2xheWVyVHJlZUhvc3QtPmxheWVyVHJlZUFz
U3RyaW5nKCk7Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKCFpc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgU3RyaW5n
IHRyZWUgPSBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5sYXllclRyZWVBc1N0cmlu
ZygpOworI2Vsc2UKKyAgICBTdHJpbmcgdHJlZTsKICNlbmRpZgogICAgICp0cmVlQnN0ciA9IEJT
dHJpbmcodHJlZSkucmVsZWFzZSgpOwogICAgIGlmICghKnRyZWVCc3RyICYmIHRyZWUubGVuZ3Ro
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggYzk5YjgyN2U1YzBkLi4xNzBkMjI5
YTExOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAgLTY4LDcgKzY4LDcgQEAgY2xh
c3MgV2ViQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0
b3I7CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKIGNsYXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OwogI2VuZGlmCiBjbGFzcyBX
ZWJWaWV3R3JvdXA7CkBAIC03MDQsNyArNzA0LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShDQSkK
ICAgICBSZWZQdHI8V2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9iYWNraW5nTGF5ZXI7Ci0jZWxp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYm
ICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0PiBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Owog
I2VuZGlmCiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zV2luLmNtYWtlCmluZGV4IDljMDJkYzliY2VlNi4uZjkxOWM5ZWY2NDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc1dpbi5jbWFrZQpAQCAtNjQsNiArNjQsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShVU0VfU1lTVEVNX01BTExPQyBQUklWQVRFIE9OKQogaWYgKCR7V1RGX1BMQVRGT1JN
X1dJTl9DQUlST30pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1RMU19ERUJVRyAi
RW5hYmxlIFRMUyBrZXkgbG9nIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogCisgICAgV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FTWU5DX1NDUk9MTElORyBQUklWQVRFIE9O
KQogICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DU1NfQ09OSUNf
R1JBRElFTlRTIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBIFBVQkxJQyBP
RkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlIGIvU291
cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQppbmRleCA2YjQ5MDBhOTBlNjQuLmUxYzZl
NDlmOGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCkBAIC01MCw4ICs1MCwxMCBA
QCBzZXQoVVNFX0FOR0xFX1dFQkdMIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0FO
R0xFIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0NGIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NP
T1JESU5BVEVEX0dSQVBISUNTIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwg
T04pCi1TRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfR1JBUEhJQ1NfTEFZRVJfVEVYVFVSRV9N
QVBQRVIgT04pCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTklDT1NJQSBPTikKK1NFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9SRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfRUdMIE9OKQogU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX09QRU5HTF9FUyBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KEhBVkVfT1BFTkdMX0VTXzMgT04pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>