<?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>137345</bug_id>
          
          <creation_ts>2014-10-02 10:09:52 -0700</creation_ts>
          <short_desc>[WinCairo] Accelerated compositing is not implemented.</short_desc>
          <delta_ts>2014-10-22 07:20:53 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>peavo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alex.christensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1038888</commentid>
    <comment_count>0</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-10-02 10:09:52 -0700</bug_when>
    <thetext>This patch is based on GTK, and the texture mapper graphics layer type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038891</commentid>
    <comment_count>1</comment_count>
      <attachid>239116</attachid>
    <who name="">peavo</who>
    <bug_when>2014-10-02 10:28:22 -0700</bug_when>
    <thetext>Created attachment 239116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038895</commentid>
    <comment_count>2</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-10-02 10:37:23 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=239116) [details]
&gt; Patch

This patch is based on the GTK implementation of accelerated compositing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040531</commentid>
    <comment_count>3</comment_count>
      <attachid>239531</attachid>
    <who name="">peavo</who>
    <bug_when>2014-10-09 06:38:06 -0700</bug_when>
    <thetext>Created attachment 239531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040532</commentid>
    <comment_count>4</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-10-09 06:39:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=239531) [details]
&gt; Patch

Removed an unneeded graphics layer member in WebView for WinCairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040903</commentid>
    <comment_count>5</comment_count>
      <attachid>239622</attachid>
    <who name="">peavo</who>
    <bug_when>2014-10-10 05:53:51 -0700</bug_when>
    <thetext>Created attachment 239622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040904</commentid>
    <comment_count>6</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-10-10 05:54:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=239622) [details]
&gt; Patch

Fixed a repaint issue in compositing mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042354</commentid>
    <comment_count>7</comment_count>
      <attachid>240010</attachid>
    <who name="">peavo</who>
    <bug_when>2014-10-17 03:19:50 -0700</bug_when>
    <thetext>Created attachment 240010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042355</commentid>
    <comment_count>8</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-10-17 03:20:41 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created attachment 240010 [details]
&gt; Patch

Removed a couple of empty methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042390</commentid>
    <comment_count>9</comment_count>
      <attachid>240010</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-17 10:09:27 -0700</bug_when>
    <thetext>Comment on attachment 240010
Patch

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

Really nice work! Are you able to activate any o the 3D CSS effects with this turned on?

I had a few minor comments and things to clean up before landing (so cq-) but I think this is pretty much ready to go!

&gt; Source/WebKit/win/WebView.cpp:1110
&gt;              // FIXME: We need to paint into dc (if provided). &lt;http://webkit.org/b/52578&gt;

I&apos;d move this comment inside the #if USE(CA), since it only really applies to the CoreAnimation builds.

&gt; Source/WebKit/win/WebView.cpp:6802
&gt;      if (m_backingLayer)

Whoops (on us!)! This m_backingLayer test is not necessary (see line 6755/6794 above).

&gt; Source/WebKit/win/WebView.h:51
&gt; +#include &quot;AcceleratedCompositingContext.h&quot;

Could this just be a forward declaration?

&gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.cpp:2
&gt; + * Copyright (C) 2014 Apple, Inc.

Shouldn&apos;t this be copyright you? If you based it off an Apple copyrighted file, just put both names.

&gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.cpp:61
&gt; +static IntSize getWebViewSize(WebView* webView)

Can WebView ever be null? If so, check for that case. If not, let&apos;s make it a reference.

&gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.cpp:80
&gt; +    m_rootLayer = GraphicsLayer::create(0, *this);

nullptr please.

&gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.cpp:85
&gt; +    m_nonCompositedContentLayer = GraphicsLayer::create(0, *this);

Ditto.

&gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.cpp:164
&gt; +    ::GetClientRect(m_window, &amp;r);

GetClientRect can fail, leaving junk the the passed RECT. You might want to handle this case (though it&apos;s very rare).

&gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.cpp:170
&gt; +        glClear(GL_COLOR_BUFFER_BIT);

Watch the tests to see if you run afoul of any cases where GL_SCISSOR or other switches are turned on. You might need to use the &quot;TemporaryOpenGLSetting&quot; class to make sure they are turned off when clearing the context (or else you&apos;ll get weird partial clears):

E.g., from GraphicsContext3D::prepareTexture:

    TemporaryOpenGLSetting scopedScissor(GL_SCISSOR_TEST, GL_FALSE);
    TemporaryOpenGLSetting scopedDither(GL_DITHER, GL_FALSE);

&gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.h:2
&gt; + * Copyright (C) 2014 Apple, Inc.

Ditto re: Copyright by you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042393</commentid>
    <comment_count>10</comment_count>
      <attachid>240010</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-17 10:20:20 -0700</bug_when>
    <thetext>Comment on attachment 240010
Patch

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

&gt; Source/WebKit/win/WebView.cpp:869
&gt; +        m_acceleratedCompositingContext-&gt;setNeedsDisplayInRect(dirtyRect);

It&apos;s too bad that the stuff in the AcceleratedCompositingContext couldn&apos;t be part of m_backingLayer. But looking over the GraphicsContext class it would probably be tough to merge the two. Might be an opportunity for some refactoring later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042408</commentid>
    <comment_count>11</comment_count>
      <attachid>240025</attachid>
    <who name="">peavo</who>
    <bug_when>2014-10-17 11:31:50 -0700</bug_when>
    <thetext>Created attachment 240025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042414</commentid>
    <comment_count>12</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-10-17 11:43:29 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 240010 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240010&amp;action=review
&gt; 

Thanks for reviewing!

&gt; Really nice work! Are you able to activate any o the 3D CSS effects with
&gt; this turned on?
&gt; 

Yes, I believe so.
For example, http://www.w3.org/Talks/2012/0416-CSS-WWW2012/Demos/transitions/demo-transitions-3-shadows.html seems to be working now :)

&gt; &gt; Source/WebKit/win/WebView.cpp:6802
&gt; &gt;      if (m_backingLayer)
&gt; 
&gt; Whoops (on us!)! This m_backingLayer test is not necessary (see line
&gt; 6755/6794 above).
&gt; 

This is actually needed, as the previous call might take us out of compositing mode, and set m_backingLayer to null.

&gt; &gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.cpp:2
&gt; &gt; + * Copyright (C) 2014 Apple, Inc.
&gt; 
&gt; Shouldn&apos;t this be copyright you? If you based it off an Apple copyrighted
&gt; file, just put both names.
&gt; 

If this is not too important, I left it as is; I wouldn&apos;t mind :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042417</commentid>
    <comment_count>13</comment_count>
      <attachid>240028</attachid>
    <who name="">peavo</who>
    <bug_when>2014-10-17 11:54:04 -0700</bug_when>
    <thetext>Created attachment 240028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042421</commentid>
    <comment_count>14</comment_count>
      <attachid>240028</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-10-17 12:11:04 -0700</bug_when>
    <thetext>Comment on attachment 240028
Patch

Looks great!  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042433</commentid>
    <comment_count>15</comment_count>
      <attachid>240028</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-17 12:50:09 -0700</bug_when>
    <thetext>Comment on attachment 240028
Patch

Clearing flags on attachment: 240028

Committed r174830: &lt;http://trac.webkit.org/changeset/174830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042434</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-17 12:50:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042574</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-10-17 23:46:55 -0700</bug_when>
    <thetext>https://www.webkit.org/blog-files/3d-transforms/poster-circle.html works, too!  This is awesome</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043423</commentid>
    <comment_count>18</comment_count>
      <attachid>240028</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-10-22 05:20:59 -0700</bug_when>
    <thetext>Comment on attachment 240028
Patch

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

&gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.cpp:317
&gt; +    // In case an animation is running, we should flush again soon.
&gt; +    if (startedAnimation(m_rootLayer.get()))
&gt; +        scheduleLayerFlush();

Any reason for not using TextureMapperLayer::descendantsOrSelfHaveRunningAnimations() for this? That&apos;s what the GTK port uses to determine whether to additionally schedule flushes for animations.

I this this current approach is susceptible to continuing scheduling flushes even after an animation is already finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043439</commentid>
    <comment_count>19</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-10-22 07:20:53 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Comment on attachment 240028 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240028&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/win/WebCoreSupport/AcceleratedCompositingContext.cpp:317
&gt; &gt; +    // In case an animation is running, we should flush again soon.
&gt; &gt; +    if (startedAnimation(m_rootLayer.get()))
&gt; &gt; +        scheduleLayerFlush();
&gt; 
&gt; Any reason for not using
&gt; TextureMapperLayer::descendantsOrSelfHaveRunningAnimations() for this?
&gt; That&apos;s what the GTK port uses to determine whether to additionally schedule
&gt; flushes for animations.
&gt; 
&gt; I this this current approach is susceptible to continuing scheduling flushes
&gt; even after an animation is already finished.

Thanks for catching this :) I&apos;ll have a look, and see if we can use it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239116</attachid>
            <date>2014-10-02 10:28:22 -0700</date>
            <delta_ts>2014-10-09 06:37:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137345-20141002192801.patch</filename>
            <type>text/plain</type>
            <size>30655</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTEwLTAyICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gQWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBH
VEssIGFuZCB0aGUgdGV4dHVyZSBtYXBwZXIgZ3JhcGhpY3MgbGF5ZXIgdHlwZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kOiBDb3B5IHRleG1h
cCBoZWFkZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHA6IEFkZGVkIG1ldGhvZCBhbmQgZmxhZyBpbmRpY2F0aW5nIHdo
ZXRoZXIgYW5pbWF0aW9uIGhhcyBzdGFydGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzdGFydGVkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOiBVc2Ugc2FtZSBwcmVjaXNpb24gZm9yIHVu
aWZvcm0gaW4gdmVydGV4IHNoYWRlciBhcyBpbiBmcmFnbWVudCBzaGFkZXIuCisgICAgICAgIE90
aGVyd2lzZSBnbExpbmtQcm9ncmFtKCkgd2lsbCBmYWlsLCBhbmQgbm90aGluZyB3aWxsIGJlIHJl
bmRlcmVkLgorCiAyMDE0LTEwLTAyICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIEFYOiBEZWZhdWx0IG9yaWVudGF0aW9uIGZvciBhcmlhIHNjcm9sbGJh
cnMgc2hvdWxkIGJlIHZlcnRpY2FsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAkocmV2aXNpb24gMTc0
MDk1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVh
ZGVycy5jbWQJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgeGNvcHkgL3kgL2QgIiVQ
cm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYQogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBs
YXRmb3JtXGdyYXBoaWNzXHdpblwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRl
XFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
d2luXCUxXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhj
b3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVwqLmgi
ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCit4Y29weSAveSAvZCAi
JVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxwbGF0Zm9ybVxtb2NrXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2Vi
Q29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVx0ZXh0XCouaCIgIiVD
T05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJv
amVjdERpciUuLlxwbGF0Zm9ybVx0ZXh0XGljdVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElS
JVxpbmNsdWRlXFdlYkNvcmUiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAJKHJldmlzaW9uIDE3NDA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDcgQEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBo
aWNzTGF5ZQogICAgICwgbV9jb250ZW50c0xheWVyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0
VGltZSgwKQogICAgICwgbV9pc1Njcm9sbGFibGUoZmFsc2UpCisgICAgLCBtX3N0YXJ0ZWRBbmlt
YXRpb24oZmFsc2UpCiB7CiB9CiAKQEAgLTY0Myw2ICs2NDQsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltCiAgICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lID0g
Y3VycmVudFRpbWUgLSB0aW1lT2Zmc2V0OwogICAgIG5vdGlmeUNoYW5nZShBbmltYXRpb25DaGFu
Z2UpOwogICAgIG5vdGlmeUNoYW5nZShBbmltYXRpb25TdGFydGVkKTsKKyAgICBtX3N0YXJ0ZWRB
bmltYXRpb24gPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAkocmV2aXNpb24gMTc0MDk1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgZmxv
YXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsg
fQogICAgIHZvaWQgc2V0UmVwYWludENvdW50KGludCk7CiAKKyAgICBib29sIHN0YXJ0ZWRBbmlt
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0ZWRBbmltYXRpb247IH0KKwogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAKQEAgLTE3Nyw2ICsxNzksNyBA
QCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX2NvbW1pdHRlZFNjcm9sbE9mZnNldDsKICAgICBi
b29sIG1faXNTY3JvbGxhYmxlOworICAgIGJvb2wgbV9zdGFydGVkQW5pbWF0aW9uOwogfTsKIAog
aW5saW5lIHN0YXRpYyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogdG9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyKiBsYXllcikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAkocmV2aXNpb24gMTc0MDk1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw4IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBmcmFnbWVudFRlbXBsYXRlID0KICAgICBBTlRJQUxJQVNJTkdfVEVYX0NPT1JEX0RJUkVD
VElWRQogICAgIEJMVVJfQ09OU1RBTlRTCiAgICAgU1RSSU5HSUZZKAorICAgICAgICBwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7CisgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJp
eDsKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgIHVuaWZvcm0gU2Ft
cGxlclR5cGUgc19zYW1wbGVyOwogICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX2NvbnRlbnRU
ZXh0dXJlOwpAQCAtMjIwLDcgKzIyMiw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRl
bXBsYXRlID0KICAgICAgICAgdW5pZm9ybSB2ZWMyIHVfc2hhZG93T2Zmc2V0OwogICAgICAgICB1
bmlmb3JtIHZlYzQgdV9jb2xvcjsKICAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2dhdXNzaWFuS2Vy
bmVsW0dBVVNTSUFOX0tFUk5FTF9IQUxGX1dJRFRIXTsKLSAgICAgICAgdW5pZm9ybSBtYXQ0IHVf
dGV4dHVyZVNwYWNlTWF0cml4OwogCiAgICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWM0IGR1bW15
UGFyYW1ldGVyKSB7IH0KICAgICAgICAgdm9pZCBub29wKGlub3V0IHZlYzQgZHVtbXlQYXJhbWV0
ZXIsIHZlYzIgdGV4Q29vcmQpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDIyMCkKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTQtMTAtMDIgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CisKKyAg
ICAgICAgW1dpbkNhaXJvXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBub3QgaW1wbGVtZW50
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcz
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGlzIGJhc2VkIG9uIEdUSywgYW5kIHRoZSB0ZXh0dXJlIG1hcHBlciBncmFwaGljcyBs
YXllciB0eXBlLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hw
cm9qOiBBZGRlZCBuZXcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgc291cmNlIGZpbGVzLgorICAg
ICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5maWx0ZXJzOiBEaXR0
by4KKwogMjAxNC0wOS0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlcGxhY2Ugd2tHZXRHbHlwaHNGb3JDaGFyYWN0ZXJzKCkgd2l0aCBDR0Zv
bnRHZXRHbHlwaHNGb3JVbmljaGFycygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hw
cm9qL1dlYktpdC9XZWJLaXQudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvagkocmV2aXNpb24gMTc0MDk1KQorKysg
U291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTMyMyw2ICszMjMsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3RhdGlzdGljcy5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2lu
XFdlYkNvcmVTdXBwb3J0XEVtYmVkZGVkV2lkZ2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxXZWJDaHJvbWVDbGllbnQuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcCIgLz4KQEAgLTQ2MCw2ICs0NjEsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cLi5cd2luXFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29va2llTWFuYWdlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdGF0aXN0aWNzLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4u
XHdpblxXZWJDb3JlU3VwcG9ydFxFbWJlZGRlZFdpZGdldC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYkNocm9tZUNsaWVudC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYkNvbnRl
eHRNZW51Q2xpZW50LmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dl
YktpdC9XZWJLaXQudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE3
NDA5NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hw
cm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXEFjY2Vzc2libGVUZXh0SW1wbC5jcHAiPgogICAgICAg
PEZpbHRlcj5Tb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+V2ViQ29yZVN1cHBvcnQ8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcRW1iZWRkZWRXaWRnZXQuaCI+
CkBAIC01MzYsNiArNTM5LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxB
Y2Nlc3NpYmxlVGV4dEltcGwuaCI+CiAgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdl
YkNvcmVTdXBwb3J0XEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiPgorICAgICAgPEZp
bHRlcj5XZWJDb3JlU3VwcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1H
cm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSJXZWJLaXRQb3N0QnVpbGQu
Y21kIiAvPgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTc0MjIwKQorKysgU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIw
MTQtMTAtMDIgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CisKKyAgICAg
ICAgW1dpbkNhaXJvXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBub3QgaW1wbGVtZW50ZWQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczNDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGlzIGJhc2VkIG9uIEdUSywgYW5kIHRoZSB0ZXh0dXJlIG1hcHBlciBncmFwaGljcyBsYXll
ciB0eXBlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAgICAgKFdl
YktpdDo6Z2V0V2ViVmlld1NpemUpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c3RvcEFueVBlbmRp
bmdMYXllckZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ6OmVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6cHJlcGFyZUZvclJlbmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdGFydGVkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4
dCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXRS
b290Q29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSk6CisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6cmVzaXplUm9vdExheWVyKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyk6CisgICAgICAgIChXZWJL
aXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzY2hlZHVsZUxheWVyRmx1c2gpOgor
ICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24pOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hBbmRSZW5kZXJMYXllcnMpOgor
ICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bGF5ZXJGbHVz
aFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dDo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKFdl
YktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnBhaW50Q29udGVudHMpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6TGF5
ZXJGbHVzaFRpbWVyOjpMYXllckZsdXNoVGltZXIpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6TGF5ZXJGbHVzaFRpbWVyOjpmaXJlZCk6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdl
YlZpZXc6OmFkZFRvRGlydHlSZWdpb24pOgorICAgICAgICAoV2ViVmlldzo6c2Nyb2xsQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYlZpZXc6OnNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZp
ZXc6OnBhaW50KToKKyAgICAgICAgKFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKToKKyAgICAg
ICAgKFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbik6CisgICAg
ICAgIChXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKiBXZWJW
aWV3Lmg6CisKIDIwMTQtMDktMzAgIENocmlzdG9waGUgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIEdlbmVyYWxpemUgaXM8PigpIC8gZG93bmNhc3Q8PigpIHN1cHBvcnQgdG8g
YWxsIHR5cGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTc0MDk1KQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw2ICs0
MDksOSBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKICAgICAsIG1fbGFzdFNldEN1cnNvcigwKQogICAg
ICwgbV91c2VzTGF5ZXJlZFdpbmRvdyhmYWxzZSkKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNl
KQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAsIG1fYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQobnVsbHB0cikKKyNlbmRpZgogewogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKQEAgLTg2MCw3ICs4NjMs
MTEgQEAgdm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludAogICAgIC8vIGh0
dHA6Ly93ZWJraXQub3JnL2IvMjkzNTAuCiAKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nKCkpIHsKKyNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rp
c3BsYXlJblJlY3QoZGlydHlSZWN0KTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAg
ICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KGRpcnR5UmVjdCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODk1
LDcgKzkwMiwxMSBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpCiAg
ICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgZG9pbmcgc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZSwgbGlrZSBtb3ZpbmcgdGls
ZXMgYXJvdW5kIGFuZCBwYWludGluZwogICAgICAgICAvLyBhbnkgbmV3bHktZXhwb3NlZCB0aWxl
cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI3MTQ+CisjaWYgVVNFKENBKQogICAgICAgICBtX2Jh
Y2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKKyNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKKyNlbmRpZgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NTIsMTEgKzk2MywxNSBAQCB2b2lkIFdlYlZp
ZXc6OnNpemVDaGFuZ2VkKGNvbnN0IEludFNpemUmCiAjaWYgVVNFKENBKQogICAgIGlmIChtX2xh
eWVyVHJlZUhvc3QpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cmVzaXplKCk7CisjZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgaWYgKG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQpCisgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJlc2l6ZVJv
b3RMYXllcihuZXdTaXplKTsKKyNlbmRpZgorCiAgICAgaWYgKG1fYmFja2luZ0xheWVyKSB7CiAg
ICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXRTaXplKG5ld1NpemUpOwogICAgICAgICBtX2JhY2tp
bmdMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQotI2VuZGlmCiB9CiAKIC8vIFRoaXMg
ZW11bGF0ZXMgdGhlIE1hYyBzbWFydHMgZm9yIHBhaW50aW5nIHJlY3RzIGludGVsbGlnZW50bHku
ICBUaGlzIGlzIHZlcnkKQEAgLTEwODQsMTggKzEwOTksMjIgQEAgdm9pZCBXZWJWaWV3OjpwYWlu
dChIREMgZGMsIExQQVJBTSBvcHRpbwogewogICAgIExPQ0FMX0dESV9DT1VOVEVSKDAsIF9fRlVO
Q1RJT05fXyk7CiAKLSNpZiBVU0UoQ0EpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZygpICYmICF1c2VzTGF5ZXJlZFdpbmRvdygpKSB7CisjaWYgVVNFKENBKQogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc05vdygpOworI2VsaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LT5mbHVzaEFuZFJlbmRlckxheWVycygpOworI2VuZGlmCiAgICAgICAgIC8vIEZsdXNoaW5nIG1p
Z2h0IGhhdmUgdGFrZW4gdXMgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUuCiAgICAgICAgIGlmIChp
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gcGFpbnQgaW50byBkYyAoaWYgcHJvdmlkZWQpLiA8aHR0cDovL3dlYmtpdC5vcmcvYi81
MjU3OD4KKyNpZiBVU0UoQ0EpCiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50KCk7
CisjZW5kaWYKICAgICAgICAgICAgIDo6VmFsaWRhdGVSZWN0KG1fdmlld1dpbmRvdywgMCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKIAogICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZyYW1lKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKQEAg
LTY1NTUsOSArNjU3NCwxNSBAQCB2b2lkIFdlYlZpZXc6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYg
dXJsCiB2b2lkIFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogewogICAgIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcobGF5ZXIgPyB0cnVlIDogZmFsc2Up
OworI2lmIFVTRShDQSkKICAgICBpZiAoIW1fYmFja2luZ0xheWVyKQogICAgICAgICByZXR1cm47
CiAgICAgbV9iYWNraW5nTGF5ZXItPmFkZENoaWxkKGxheWVyKTsKKyNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyAgICBpZiAoIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRS
b290Q29tcG9zaXRpbmdMYXllcihsYXllcik7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3Ojpm
bHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKQpAQCAtNjU2NiwxMyArNjU5MSwy
MCBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDCiAgICAgaWYgKCFt
X2xheWVyVHJlZUhvc3QpCiAgICAgICAgIHJldHVybjsKICAgICBtX2xheWVyVHJlZUhvc3QtPmZs
dXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOworI2VsaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKQorICAgIGlmICghbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXc6OnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKIHsKKyAgICBpZiAobV9p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPT0gYWNjZWxlcmF0ZWQpCisgICAgICAgIHJldHVybjsK
KwogI2lmIFVTRShDQSkKLSAgICBpZiAobV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPT0gYWNj
ZWxlcmF0ZWQgfHwgIUNBQ0ZMYXllclRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZh
aWxhYmxlKCkpCisgICAgaWYgKCFDQUNGTGF5ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYWNjZWxlcmF0ZWQp
IHsKQEAgLTY2MTIsNiArNjY0NCwxMCBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoCiAgICAgICAgIG1fYmFja2luZ0xheWVyID0gbnVsbHB0cjsKICAgICAgICAgbV9p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBmYWxzZTsKICAgICB9CisjZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisgICAgaWYgKGFjY2VsZXJhdGVkICYmICFtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0KQorICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Pih0
aGlzKTsKKyAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJhdGVkOwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDE3NDA5NSkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50Lmg+CiAjZW5kaWYK
IAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBVU0Uo
Q0EpCiAgICAgY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3Q7CkBAIC0xMTM2LDYgKzExNDAsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJvb2wpOwogI2lm
IFVTRShDQSkKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q+IG1fbGF5ZXJU
cmVlSG9zdDsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4gbV9hY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dDsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpH
cmFwaGljc0xheWVyPiBtX2JhY2tpbmdMYXllcjsKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSwgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIK
KworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKworI2luY2x1ZGUgIldlYlZpZXcuaCIKKwor
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1RleHR1cmVNYXBwZXJMYXllci5oPgorCisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2luY2x1ZGUg
PEdMRVMyL2dsMi5oPgorI2Vsc2UKKyNpbmNsdWRlIDxHTC9nbC5oPgorI2VuZGlmCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KFdlYlZpZXcq
IHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICAsIG1fbGF5ZXJGbHVzaFRp
bWVyKCp0aGlzKQorICAgICwgbV9jb250ZXh0KG51bGxwdHIpCisgICAgLCBtX3dpbmRvdygwKQor
eworfQorCitzdGF0aWMgSW50U2l6ZSBnZXRXZWJWaWV3U2l6ZShXZWJWaWV3KiB3ZWJWaWV3KQor
eworICAgIFJFQ1QgcjsKKyAgICB3ZWJWaWV3LT5mcmFtZVJlY3QoJnIpOworICAgIHJldHVybiBJ
bnRTaXplKHIucmlnaHQgLSByLmxlZnQsIHIuYm90dG9tIC0gci50b3ApOworfQorCit2b2lkIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojppbml0aWFsaXplKCkKK3sKKyAgICBpZiAobV9y
b290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEludFNpemUgcGFnZVNpemUgPSBnZXRX
ZWJWaWV3U2l6ZShtX3dlYlZpZXcpOworCisgICAgbV93aW5kb3cgPSBtX3dlYlZpZXctPnZpZXdX
aW5kb3coKTsKKworICAgIGlmICghbV93aW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAsICp0aGlzKTsKKyAgICBtX3Jvb3RM
YXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShw
YWdlU2l6ZSk7CisKKyAgICAvLyBUaGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudHMgYXJlIGEgY2hp
bGQgb2YgdGhlIHJvb3QgbGF5ZXIuCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyID0g
R3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAsICp0aGlzKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250
ZW50TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250
ZW50TGF5ZXItPnNldENvbnRlbnRzT3BhcXVlKCFtX3dlYlZpZXctPnRyYW5zcGFyZW50KCkpOwor
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0U2l6ZShwYWdlU2l6ZSk7CisgICAg
aWYgKGNvcmUobV93ZWJWaWV3KS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVk
KCkpCisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0QWNjZWxlcmF0ZXNE
cmF3aW5nKHRydWUpOworCisjaWZuZGVmIE5ERUJVRworICAgIG1fcm9vdExheWVyLT5zZXROYW1l
KCJSb290IGxheWVyIik7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROYW1l
KCJOb24tY29tcG9zaXRlZCBjb250ZW50Iik7CisjZW5kaWYKKworICAgIG1fcm9vdExheWVyLT5h
ZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOworICAgIG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisKKyAgICAvLyBUaGUgY3Jl
YXRpb24gb2YgdGhlIFRleHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZlIE9wZW5HTCBjb250ZXh0
LgorICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNy
ZWF0ZUNvbnRleHRGb3JXaW5kb3cobV93aW5kb3csIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQo
KSk7CisKKyAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgbV90ZXh0
dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlcjo6T3BlbkdM
TW9kZSk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4obV90ZXh0dXJlTWFwcGVy
LmdldCgpKS0+c2V0RW5hYmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nKHRydWUpOworICAgIHRv
VGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdldCgpKS0+c2V0VGV4dHVyZU1hcHBlciht
X3RleHR1cmVNYXBwZXIuZ2V0KCkpOworCisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisK
K0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQoKQoreworICAgIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdG9wQW55UGVuZGluZ0xheWVyRmx1c2goKQor
eworICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0b3AoKTsKK30KKworYm9vbCBBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dDo6ZW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fd2luZG93ICYmIG1f
cm9vdExheWVyICYmIG1fdGV4dHVyZU1hcHBlcjsKK30KKworYm9vbCBBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6cHJlcGFyZUZvclJlbmRlcmluZygpCit7CisgICAgaWYgKCFlbmFibGVk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9jb250ZXh0KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdGFydGVkQW5pbWF0aW9uKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICh0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+
c3RhcnRlZEFuaW1hdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZvciAoYXV0
byBjaGlsZExheWVyIDogbGF5ZXItPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgaWYgKHN0YXJ0ZWRB
bmltYXRpb24oY2hpbGRMYXllcikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChDb21wb3NpdGVQdXJwb3NlIHB1cnBvc2UpCit7
CisgICAgaWYgKCFwcmVwYXJlRm9yUmVuZGVyaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFJFQ1QgcjsKKyAgICA6OkdldENsaWVudFJlY3QobV93aW5kb3csICZyKTsKKyAgICBJbnRTaXpl
IHdpbmRvd1NpemUoci5yaWdodCwgci5ib3R0b20pOworICAgIGdsVmlld3BvcnQoMCwgMCwgd2lu
ZG93U2l6ZS53aWR0aCgpLCB3aW5kb3dTaXplLmhlaWdodCgpKTsKKworICAgIGlmIChwdXJwb3Nl
ID09IEZvclJlc2l6ZSkgeworICAgICAgICBnbENsZWFyQ29sb3IoMSwgMSwgMSwgMCk7CisgICAg
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQorCisgICAgbV90ZXh0dXJl
TWFwcGVyLT5iZWdpblBhaW50aW5nKCk7CisgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290
TGF5ZXIuZ2V0KCkpLT5wYWludCgpOworICAgIG1fZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNw
bGF5KG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CisgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWlu
dGluZygpOworCisgICAgbV9jb250ZXh0LT5zd2FwQnVmZmVycygpOworfQorCit2b2lkIEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyKQoreworICAgIHByZXBhcmVGb3JSZW5kZXJpbmcoKTsKKwor
ICAgIGlmICghZ3JhcGhpY3NMYXllcikgeworICAgICAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1
c2goKTsKKyAgICAgICAgbV9yb290TGF5ZXIgPSBudWxscHRyOworICAgICAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50TGF5ZXIgPSBudWxscHRyOworICAgICAgICBtX3RleHR1cmVNYXBwZXIgPSBu
dWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQWRkIHRoZSBhY2NlbGVy
YXRlZCBsYXllciB0cmVlIGhpZXJhcmNoeS4KKyAgICBpbml0aWFsaXplKCk7CisgICAgaWYgKCFt
X3dpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExh
eWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXll
ci0+YWRkQ2hpbGQoZ3JhcGhpY3NMYXllcik7CisKKyAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1
c2goKTsKKworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0OjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShj
b25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghbV9yb290TGF5ZXIpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yb290TGF5ZXItPnNl
dE5lZWRzRGlzcGxheSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIHNjaGVk
dWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAo
IW1fcm9vdExheWVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKSB7
CisgICAgICAgIG1fcm9vdExheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBtX3Jvb3RMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwor
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjpyZXNpemVSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3sKKyAg
ICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcm9vdExheWVy
LT5zaXplKCkgPT0gbmV3U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yb290TGF5ZXIt
PnNldFNpemUobmV3U2l6ZSk7CisKKyAgICAvLyBJZiB0aGUgbmV3U2l6ZSBleHBvc2VzIG5ldyBh
cmVhcyBvZiB0aGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBhIHNldE5lZWRzRGlzcGxheSBpcyBu
ZWVkZWQKKyAgICAvLyBmb3IgdGhvc2UgbmV3bHkgZXhwb3NlZCBhcmVhcy4KKyAgICBGbG9hdFNp
emUgb2xkU2l6ZSA9IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2l6ZSgpOworICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKKworICAgIGlmIChu
ZXdTaXplLndpZHRoKCkgPiBvbGRTaXplLndpZHRoKCkpIHsKKyAgICAgICAgZmxvYXQgaGVpZ2h0
ID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5ld1NpemUuaGVpZ2h0KCkpLCBvbGRTaXpl
LmhlaWdodCgpKTsKKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVk
c0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0KG9sZFNpemUud2lkdGgoKSwgMCwgbmV3U2l6ZS53aWR0
aCgpIC0gb2xkU2l6ZS53aWR0aCgpLCBoZWlnaHQpKTsKKyAgICB9CisKKyAgICBpZiAobmV3U2l6
ZS5oZWlnaHQoKSA+IG9sZFNpemUuaGVpZ2h0KCkpCisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEZsb2F0UmVjdCgwLCBvbGRTaXplLmhl
aWdodCgpLCBuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkgLSBvbGRTaXplLmhlaWdo
dCgpKSk7CisKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxh
eUluUmVjdChJbnRSZWN0KEludFBvaW50KCksIG5ld1NpemUpKTsKKyAgICBjb21wb3NpdGVMYXll
cnNUb0NvbnRleHQoRm9yUmVzaXplKTsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30KKwor
dm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENv
bnRlbnRzKGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHNjcm9s
bE9mZnNldCAqLykKK3sKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRz
RGlzcGxheUluUmVjdChzY3JvbGxSZWN0KTsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30K
Kwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2NoZWR1bGVMYXllckZsdXNo
KCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
bGF5ZXJGbHVzaFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbGF5
ZXJGbHVzaFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKworYm9vbCBBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKK3sKKyAgICBtX3Jvb3RM
YXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVy
T25seSgpOworICAgIHJldHVybiBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgpLnZpZXcoKS0+
Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7Cit9CisKK2Jvb2wgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24o
KQoreworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaEFuZFJlbmRlckxheWVycygp
Cit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lJiBm
cmFtZSA9IGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZS5jb250
ZW50UmVuZGVyZXIoKSB8fCAhZnJhbWUudmlldygpKQorICAgICAgICByZXR1cm47CisgICAgZnJh
bWUudmlldygpLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CisKKyAg
ICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY29udGV4dCAm
JiAhbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OmxheWVyRmx1c2hUaW1lckZpcmVkKCkKK3sKKyAgICBmbHVzaEFuZFJl
bmRlckxheWVycygpOworCisgICAgLy8gSW4gY2FzZSBhbiBhbmltYXRpb24gaXMgcnVubmluZywg
d2Ugc2hvdWxkIGZsdXNoIGFnYWluIHNvb24uCisgICAgaWYgKHN0YXJ0ZWRBbmltYXRpb24obV9y
b290TGF5ZXIuZ2V0KCkpKQorICAgICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30KKwordm9p
ZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChj
b25zdCBHcmFwaGljc0xheWVyKiwgZG91YmxlIC8qIHRpbWUgKi8pCit7Cit9CisKK3ZvaWQgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3Jh
cGhpY3NMYXllciopCit7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdFRv
UGFpbnQpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5jbGlwKHJlY3RUb1Bh
aW50KTsKKyAgICBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgpLnZpZXcoKS0+cGFpbnQoJmNv
bnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdFRvUGFpbnQpKTsKKyAgICBjb250ZXh0LnJlc3Rv
cmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAorI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dF9oCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0xheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCitjbGFzcyBXZWJWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQpOworcHVibGljOgorICAgIGV4cGxpY2l0IEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0KFdlYlZpZXcqKTsKKyAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dCgpOworCisgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpH
cmFwaGljc0xheWVyKik7CisgICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlz
cGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJ
blJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZvaWQgc2NoZWR1bGVMYXllckZs
dXNoKCk7CisgICAgdm9pZCByZXNpemVSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OworICAgIGJvb2wgZW5hYmxlZCgpOworCisgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudAorICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqLCBkb3VibGUgdGltZSk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZsdXNoUmVx
dWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOworICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0VG9QYWludCk7CisKKyAgICB2b2lkIGluaXRpYWxpemUo
KTsKKworICAgIGVudW0gQ29tcG9zaXRlUHVycG9zZSB7IEZvclJlc2l6ZSwgTm90Rm9yUmVzaXpl
IH07CisgICAgdm9pZCBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoQ29tcG9zaXRlUHVycG9zZSA9
IE5vdEZvclJlc2l6ZSk7CisKKyAgICB2b2lkIGZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7CisgICAg
Ym9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBib29sIGZsdXNoUGVuZGluZ0xh
eWVyQ2hhbmdlc1Nvb24oKTsKKyAgICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzY3JvbGxPZmZzZXQpOworCitwcml2YXRlOgorICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKKyAg
ICBPd25QdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgSFdORCBtX3dpbmRv
dzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9yb290TGF5
ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRMYXllcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGV4dHVy
ZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOworICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJGUFND
b3VudGVyIG1fZnBzQ291bnRlcjsKKworICAgIGNsYXNzIExheWVyRmx1c2hUaW1lciA6IHB1Ymxp
YyBXZWJDb3JlOjpUaW1lckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgTGF5ZXJGbHVzaFRp
bWVyKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0JiBjb250ZXh0KQorICAgICAgICAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2NvbnRleHQubGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0JiBtX2NvbnRleHQ7CisgICAgfSBtX2xheWVyRmx1
c2hUaW1lcjsKKworICAgIHZvaWQgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHN0
b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOworICAgIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZygp
OworICAgIGJvb2wgc3RhcnRlZEFuaW1hdGlvbihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dM
CisKKyNlbmRpZiAvLyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239531</attachid>
            <date>2014-10-09 06:38:06 -0700</date>
            <delta_ts>2014-10-10 05:53:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137345-20141009153747.patch</filename>
            <type>text/plain</type>
            <size>31519</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDUwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTEwLTA5ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gQWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBH
VEssIGFuZCB0aGUgdGV4dHVyZSBtYXBwZXIgZ3JhcGhpY3MgbGF5ZXIgdHlwZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kOiBDb3B5IHRleG1h
cCBoZWFkZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHA6IEFkZGVkIG1ldGhvZCBhbmQgZmxhZyBpbmRpY2F0aW5nIHdo
ZXRoZXIgYW5pbWF0aW9uIGhhcyBzdGFydGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzdGFydGVkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOiBVc2Ugc2FtZSBwcmVjaXNpb24gZm9yIHVu
aWZvcm0gaW4gdmVydGV4IHNoYWRlciBhcyBpbiBmcmFnbWVudCBzaGFkZXIuCisgICAgICAgIE90
aGVyd2lzZSBnbExpbmtQcm9ncmFtKCkgd2lsbCBmYWlsLCBhbmQgbm90aGluZyB3aWxsIGJlIHJl
bmRlcmVkLgorCiAyMDE0LTEwLTA5ICBQaGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hpbWVudG9A
Z21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIE5ldHNjYXBlIHBsdWdpbiBBUEkgc3ltYm9sIHVz
ZWQgb3V0c2lkZSBmZWF0dXJlIGd1YXJkcwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQJKHJldmlzaW9u
IDE3NDUwMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGlu
Z0hlYWRlcnMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHhjb3B5IC95IC9k
ICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmEKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5j
bHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBo
aWNzXHdpblwlMVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUi
CiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVc
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgoreGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFwqLmgiICIlQ09ORklH
VVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3RE
aXIlLi5ccGxhdGZvcm1cbW9ja1wqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRl
XFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cdGV4dFwqLmgi
ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAi
JVByb2plY3REaXIlLi5ccGxhdGZvcm1cdGV4dFxpY3VcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwCShyZXZpc2lvbiAxNzQ1MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpH
cmFwaGljc0xheWUKICAgICAsIG1fY29udGVudHNMYXllcigwKQogICAgICwgbV9hbmltYXRpb25T
dGFydFRpbWUoMCkKICAgICAsIG1faXNTY3JvbGxhYmxlKGZhbHNlKQorICAgICwgbV9zdGFydGVk
QW5pbWF0aW9uKGZhbHNlKQogewogfQogCkBAIC01OTEsNiArNTkyLDcgQEAgYm9vbCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbQogICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGlt
ZSA9IGN1cnJlbnRUaW1lIC0gdGltZU9mZnNldDsKICAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9u
Q2hhbmdlKTsKICAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9uU3RhcnRlZCk7CisgICAgbV9zdGFy
dGVkQW5pbWF0aW9uID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgJKHJldmlzaW9uIDE3NDUwMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAg
IGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyV2lk
dGg7IH0KICAgICB2b2lkIHNldFJlcGFpbnRDb3VudChpbnQpOwogCisgICAgYm9vbCBzdGFydGVk
QW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydGVkQW5pbWF0aW9uOyB9CisKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogCkBAIC0xNzcsNiArMTc5
LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9jb21taXR0ZWRTY3JvbGxPZmZzZXQ7CiAg
ICAgYm9vbCBtX2lzU2Nyb2xsYWJsZTsKKyAgICBib29sIG1fc3RhcnRlZEFuaW1hdGlvbjsKIH07
CiAKIGlubGluZSBzdGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIHRvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAJKHJldmlzaW9uIDE3NDUwMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsOCBAQCBzdGF0aWMgY29u
c3QgY2hhciogZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgQU5USUFMSUFTSU5HX1RFWF9DT09SRF9E
SVJFQ1RJVkUKICAgICBCTFVSX0NPTlNUQU5UUwogICAgIFNUUklOR0lGWSgKKyAgICAgICAgcHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICB1bmlmb3JtIG1hdDQgdV90ZXh0dXJlU3BhY2VN
YXRyaXg7CiAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogICAgICAgICB1bmlmb3Jt
IFNhbXBsZXJUeXBlIHNfc2FtcGxlcjsKICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19jb250
ZW50VGV4dHVyZTsKQEAgLTIyMCw3ICsyMjIsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21l
bnRUZW1wbGF0ZSA9CiAgICAgICAgIHVuaWZvcm0gdmVjMiB1X3NoYWRvd09mZnNldDsKICAgICAg
ICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CiAgICAgICAgIHVuaWZvcm0gZmxvYXQgdV9nYXVzc2lh
bktlcm5lbFtHQVVTU0lBTl9LRVJORUxfSEFMRl9XSURUSF07Ci0gICAgICAgIHVuaWZvcm0gbWF0
NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsKIAogICAgICAgICB2b2lkIG5vb3AoaW5vdXQgdmVjNCBk
dW1teVBhcmFtZXRlcikgeyB9CiAgICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWM0IGR1bW15UGFy
YW1ldGVyLCB2ZWMyIHRleENvb3JkKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzQ1MDIp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDE0LTEwLTA5ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgor
CisgICAgICAgIFtXaW5DYWlyb10gQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm90IGltcGxl
bWVudGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM3MzQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBHVEssIGFuZCB0aGUgdGV4dHVyZSBtYXBwZXIgZ3JhcGhp
Y3MgbGF5ZXIgdHlwZS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQu
dmN4cHJvajogQWRkZWQgbmV3IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHNvdXJjZSBmaWxlcy4K
KyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2ouZmlsdGVyczog
RGl0dG8uCisKIDIwMTQtMTAtMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCA2NC1iaXQgYnVpbGQgZml4IGFmdGVyIHIxNzQz
MTUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9X
ZWJLaXQudmN4cHJvagkocmV2aXNpb24gMTc0NTAyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQu
dmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw2ICsz
MjMsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdp
blxXZWJDb3JlU3RhdGlzdGljcy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
Llx3aW5cV2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XEVtYmVk
ZGVkV2lkZ2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJD
b3JlU3VwcG9ydFxXZWJDaHJvbWVDbGllbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYkNvbnRleHRNZW51Q2xpZW50LmNwcCIgLz4K
QEAgLTQ2MCw2ICs0NjEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdl
YkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlwuLlx3aW5cV2ViQ29va2llTWFuYWdlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cLi5cd2luXFdlYkNvcmVTdGF0aXN0aWNzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxF
bWJlZGRlZFdpZGdldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdl
YkNvcmVTdXBwb3J0XFdlYkNocm9tZUNsaWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYkNvbnRleHRNZW51Q2xpZW50LmgiIC8+Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5m
aWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0
L1dlYktpdC52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE3NDUwMikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcg
Y29weSkKQEAgLTI3NSw2ICsyNzUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5c
d2luXEFjY2Vzc2libGVUZXh0SW1wbC5jcHAiPgogICAgICAgPEZpbHRlcj5Tb3VyY2VzPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5c
V2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+V2ViQ29yZVN1cHBvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9J
dGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3
aW5cV2ViQ29yZVN1cHBvcnRcRW1iZWRkZWRXaWRnZXQuaCI+CkBAIC01MzYsNiArNTM5LDkgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxBY2Nlc3NpYmxlVGV4dEltcGwuaCI+
CiAgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiPgorICAgICAgPEZpbHRlcj5XZWJDb3JlU3VwcG9ydDwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4K
ICAgICA8Tm9uZSBJbmNsdWRlPSJXZWJLaXRQb3N0QnVpbGQuY21kIiAvPgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkocmV2aXNpb24gMTc0NTAyKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTQtMTAtMDkgIHBlYXZvQG91dGxv
b2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CisKKyAgICAgICAgW1dpbkNhaXJvXSBBY2NlbGVy
YXRlZCBjb21wb3NpdGluZyBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczNDUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIEdUSywg
YW5kIHRoZSB0ZXh0dXJlIG1hcHBlciBncmFwaGljcyBsYXllciB0eXBlLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Z2V0V2ViVmlld1NpemUp
OgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c3RvcEFueVBlbmRpbmdMYXllckZsdXNoKToKKyAgICAg
ICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cHJlcGFyZUZvclJl
bmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OjpzdGFydGVkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcik6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXROb25D
b21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAo
V2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplUm9vdExheWVyKToK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNjcm9sbE5v
bkNvbXBvc2l0ZWRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpzY2hlZHVsZUxheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToKKyAg
ICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlc1Nvb24pOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6Zmx1c2hBbmRSZW5kZXJMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bm90aWZ5QW5pbWF0aW9u
U3RhcnRlZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
Ojpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6TGF5ZXJGbHVzaFRpbWVyOjpMYXllckZs
dXNoVGltZXIpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6TGF5ZXJGbHVzaFRpbWVyOjpmaXJlZCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFRvRGlydHlSZWdp
b24pOgorICAgICAgICAoV2ViVmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YlZpZXc6OnNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZXc6OnBhaW50KToKKyAgICAgICAg
KFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKToKKyAgICAgICAgKFdlYlZpZXc6OmZsdXNoUGVu
ZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbik6CisgICAgICAgIChXZWJWaWV3OjpzZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTQtMTAtMDgg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gUmVz
b2x2ZSB2YXJpb3VzIHN0YXRpYyBhbmFseXplciB3YXJuaW5ncyBpbiBXZWJLaXQuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTc0NTAyKQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw2ICs0MDksOSBAQCBXZWJWaWV3OjpX
ZWJWaWV3KCkKICAgICAsIG1fbGFzdFNldEN1cnNvcigwKQogICAgICwgbV91c2VzTGF5ZXJlZFdp
bmRvdyhmYWxzZSkKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNlKQorI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyAgICAsIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQobnVsbHB0
cikKKyNlbmRpZgogewogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKQEAgLTg2MCw3ICs4NjMsMTEgQEAgdm9pZCBXZWJWaWV3
OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludAogICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2Iv
MjkzNTAuCiAKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKKyNpZiBVU0Uo
Q0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoZGlydHlS
ZWN0KTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAgICAgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Cisj
ZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODk1LDcgKzkwMiwxMSBAQCB2b2lk
IFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpCiAgICAgaWYgKGlzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZG9pbmcg
c29tZXRoaW5nIHNtYXJ0ZXIgaGVyZSwgbGlrZSBtb3ZpbmcgdGlsZXMgYXJvdW5kIGFuZCBwYWlu
dGluZwogICAgICAgICAvLyBhbnkgbmV3bHktZXhwb3NlZCB0aWxlcy4gPGh0dHA6Ly93ZWJraXQu
b3JnL2IvNTI3MTQ+CisjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKKyNlbmRpZgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC05NTIsMTAgKzk2MywxNCBAQCB2b2lkIFdlYlZpZXc6OnNpemVDaGFuZ2VkKGNv
bnN0IEludFNpemUmCiAjaWYgVVNFKENBKQogICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+cmVzaXplKCk7CisKICAgICBpZiAobV9iYWNraW5nTGF5ZXIp
IHsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CiAgICAgICAgIG1f
YmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9CisjZWxpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisgICAgaWYgKG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCisg
ICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJlc2l6ZVJvb3RMYXllcihu
ZXdTaXplKTsKICNlbmRpZgogfQogCkBAIC0xMDg0LDE4ICsxMDk5LDIyIEBAIHZvaWQgV2ViVmll
dzo6cGFpbnQoSERDIGRjLCBMUEFSQU0gb3B0aW8KIHsKICAgICBMT0NBTF9HRElfQ09VTlRFUigw
LCBfX0ZVTkNUSU9OX18pOwogCi0jaWYgVVNFKENBKQogICAgIGlmIChpc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoKSAmJiAhdXNlc0xheWVyZWRXaW5kb3coKSkgeworI2lmIFVTRShDQSkKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3coKTsKKyNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC0+Zmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKKyNlbmRpZgogICAgICAgICAvLyBGbHVz
aGluZyBtaWdodCBoYXZlIHRha2VuIHVzIG91dCBvZiBjb21wb3NpdGluZyBtb2RlLgogICAgICAg
ICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIHBhaW50IGludG8gZGMgKGlmIHByb3ZpZGVkKS4gPGh0dHA6Ly93ZWJraXQu
b3JnL2IvNTI1Nzg+CisjaWYgVVNFKENBKQogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5w
YWludCgpOworI2VuZGlmCiAgICAgICAgICAgICA6OlZhbGlkYXRlUmVjdChtX3ZpZXdXaW5kb3cs
IDApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX21haW5GcmFtZSk7CiAgICAgaWYgKCFjb3JlRnJh
bWUpCkBAIC0yMzkzLDggKzI0MTIsMTAgQEAgTFJFU1VMVCBDQUxMQkFDSyBXZWJWaWV3OjpXZWJW
aWV3V25kUHJvYwogICAgICAgICAgICAgICAgIFJFQ1Qgd2luZG93UmVjdDsKICAgICAgICAgICAg
ICAgICA6OkdldENsaWVudFJlY3QoaFduZCwgJndpbmRvd1JlY3QpOwogICAgICAgICAgICAgICAg
IDo6SW52YWxpZGF0ZVJlY3QoaFduZCwgJndpbmRvd1JlY3QsIGZhbHNlKTsKKyNpZiBVU0UoQ0Ep
CiAgICAgICAgICAgICAgICAgaWYgKHdlYlZpZXctPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygp
KQogICAgICAgICAgICAgICAgICAgICB3ZWJWaWV3LT5tX2JhY2tpbmdMYXllci0+c2V0TmVlZHNE
aXNwbGF5KCk7CisjZW5kaWYKICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV01fTU9VU0VBQ1RJVkFURToKQEAgLTY1NTEsOSArNjU3MiwxNSBAQCB2b2lkIFdl
YlZpZXc6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsCiB2b2lkIFdlYlZpZXc6OnNldFJvb3RD
aGlsZExheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcobGF5ZXIgPyB0cnVlIDogZmFsc2UpOworI2lmIFVTRShDQSkKICAgICBpZiAoIW1f
YmFja2luZ0xheWVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9iYWNraW5nTGF5ZXItPmFkZENo
aWxkKGxheWVyKTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBpZiAoIW1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihsYXllcik7
CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3OjpmbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hh
bmdlc1Nvb24oKQpAQCAtNjU2MiwxMyArNjU4OSwyMCBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVu
ZGluZ0dyYXBoaWNzTGF5ZXJDCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFu
Z2VzU29vbigpOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIGlmICghbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsK
ICNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9v
bCBhY2NlbGVyYXRlZCkKIHsKKyAgICBpZiAobV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPT0g
YWNjZWxlcmF0ZWQpCisgICAgICAgIHJldHVybjsKKwogI2lmIFVTRShDQSkKLSAgICBpZiAobV9p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPT0gYWNjZWxlcmF0ZWQgfHwgIUNBQ0ZMYXllclRyZWVI
b3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkpCisgICAgaWYgKCFDQUNGTGF5
ZXJUcmVlSG9zdDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0F2YWlsYWJsZSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoYWNjZWxlcmF0ZWQpIHsKQEAgLTY2MDgsNiArNjY0MiwxMCBAQCB2
b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoCiAgICAgICAgIG1fYmFja2lu
Z0xheWVyID0gbnVsbHB0cjsKICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBm
YWxzZTsKICAgICB9CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgaWYgKGFjY2Vs
ZXJhdGVkICYmICFtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQorICAgICAgICBtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Pih0aGlzKTsKKyAgICBtX2lzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZyA9IGFjY2VsZXJhdGVkOwogI2VuZGlmCiB9CiAKQEAgLTY3NTIsMTQgKzY3OTAs
MTggQEAgdm9pZCBXZWJWaWV3OjpmbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQwogICAgIEZyYW1l
VmlldyogdmlldyA9IGNvcmVGcmFtZS0+dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAg
cmV0dXJuOworI2lmIFVTRShDQSkKICAgICBpZiAoIW1fYmFja2luZ0xheWVyKQogICAgICAgICBy
ZXR1cm47CisjZW5kaWYKIAogICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRS
ZWN1cnNpdmUoKTsKIAogICAgIC8vIFVwZGF0aW5nIGxheW91dCBtaWdodCBoYXZlIHRha2VuIHVz
IG91dCBvZiBjb21wb3NpdGluZyBtb2RlLgorI2lmIFVTRShDQSkKICAgICBpZiAobV9iYWNraW5n
TGF5ZXIpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JU
aGlzTGF5ZXJPbmx5KCk7CisjZW5kaWYKIAogICAgIHZpZXctPmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUluY2x1ZGluZ1N1YmZyYW1lcygpOwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24g
MTc0NTAyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0NywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnVsbFNjcmVlbkNvbnRyb2xsZXJD
bGllbnQuaD4KICNlbmRpZgogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2luY2x1ZGUg
IkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIFVTRShDQSkKICAgICBjbGFzcyBDQUNGTGF5ZXJUcmVlSG9zdDsKQEAgLTEx
MzYsOCArMTE0MCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nKGJvb2wpOwogI2lmIFVTRShDQSkKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0FDRkxheWVy
VHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKLSNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2JhY2tpbmdMYXllcjsKKyNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dD4gbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDsKKyNlbmRpZgog
ICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAKICAgICBib29sIG1fbmV4dERp
c3BsYXlJc1N5bmNocm9ub3VzOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSwgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQuaCIKKworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKworI2luY2x1ZGUgIldlYlZp
ZXcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYWlu
RnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nl
dHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyR0wuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1RleHR1cmVNYXBwZXJMYXllci5oPgorCisjaWYgVVNFKE9QRU5HTF9FU18yKQor
I2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2Vsc2UKKyNpbmNsdWRlIDxHTC9nbC5oPgorI2VuZGlm
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
KFdlYlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICAsIG1fbGF5
ZXJGbHVzaFRpbWVyKCp0aGlzKQorICAgICwgbV9jb250ZXh0KG51bGxwdHIpCisgICAgLCBtX3dp
bmRvdygwKQoreworfQorCitzdGF0aWMgSW50U2l6ZSBnZXRXZWJWaWV3U2l6ZShXZWJWaWV3KiB3
ZWJWaWV3KQoreworICAgIFJFQ1QgcjsKKyAgICB3ZWJWaWV3LT5mcmFtZVJlY3QoJnIpOworICAg
IHJldHVybiBJbnRTaXplKHIucmlnaHQgLSByLmxlZnQsIHIuYm90dG9tIC0gci50b3ApOworfQor
Cit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojppbml0aWFsaXplKCkKK3sKKyAg
ICBpZiAobV9yb290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEludFNpemUgcGFnZVNp
emUgPSBnZXRXZWJWaWV3U2l6ZShtX3dlYlZpZXcpOworCisgICAgbV93aW5kb3cgPSBtX3dlYlZp
ZXctPnZpZXdXaW5kb3coKTsKKworICAgIGlmICghbV93aW5kb3cpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAsICp0aGlzKTsKKyAg
ICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKyAgICBtX3Jvb3RMYXllci0+
c2V0U2l6ZShwYWdlU2l6ZSk7CisKKyAgICAvLyBUaGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudHMg
YXJlIGEgY2hpbGQgb2YgdGhlIHJvb3QgbGF5ZXIuCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVu
dExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKDAsICp0aGlzKTsKKyAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50TGF5ZXItPnNldENvbnRlbnRzT3BhcXVlKCFtX3dlYlZpZXctPnRyYW5zcGFy
ZW50KCkpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0U2l6ZShwYWdlU2l6
ZSk7CisgICAgaWYgKGNvcmUobV93ZWJWaWV3KS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlZERyYXdp
bmdFbmFibGVkKCkpCisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0QWNj
ZWxlcmF0ZXNEcmF3aW5nKHRydWUpOworCisjaWZuZGVmIE5ERUJVRworICAgIG1fcm9vdExheWVy
LT5zZXROYW1lKCJSb290IGxheWVyIik7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVy
LT5zZXROYW1lKCJOb24tY29tcG9zaXRlZCBjb250ZW50Iik7CisjZW5kaWYKKworICAgIG1fcm9v
dExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOworICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisKKyAgICAv
LyBUaGUgY3JlYXRpb24gb2YgdGhlIFRleHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZlIE9wZW5H
TCBjb250ZXh0LgorICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQgPSBHTENv
bnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cobV93aW5kb3csIEdMQ29udGV4dDo6c2hhcmlu
Z0NvbnRleHQoKSk7CisKKyAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisg
ICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoVGV4dHVyZU1hcHBl
cjo6T3BlbkdMTW9kZSk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4obV90ZXh0
dXJlTWFwcGVyLmdldCgpKS0+c2V0RW5hYmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nKHRydWUp
OworICAgIHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdldCgpKS0+c2V0VGV4dHVy
ZU1hcHBlcihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOworCisgICAgc2NoZWR1bGVMYXllckZsdXNo
KCk7Cit9CisKK0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQoKQoreworICAgIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOworfQor
Cit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdG9wQW55UGVuZGluZ0xheWVy
Rmx1c2goKQoreworICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0b3AoKTsKK30KKworYm9vbCBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fd2lu
ZG93ICYmIG1fcm9vdExheWVyICYmIG1fdGV4dHVyZU1hcHBlcjsKK30KKworYm9vbCBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cHJlcGFyZUZvclJlbmRlcmluZygpCit7CisgICAgaWYg
KCFlbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9jb250ZXh0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdGFydGVkQW5pbWF0aW9u
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworICAgIGlmICghbGF5ZXIpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KGxheWVyKS0+c3RhcnRlZEFuaW1hdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGZvciAoYXV0byBjaGlsZExheWVyIDogbGF5ZXItPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgaWYg
KHN0YXJ0ZWRBbmltYXRpb24oY2hpbGRMYXllcikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChDb21wb3NpdGVQdXJwb3NlIHB1
cnBvc2UpCit7CisgICAgaWYgKCFwcmVwYXJlRm9yUmVuZGVyaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJFQ1QgcjsKKyAgICA6OkdldENsaWVudFJlY3QobV93aW5kb3csICZyKTsKKyAg
ICBJbnRTaXplIHdpbmRvd1NpemUoci5yaWdodCwgci5ib3R0b20pOworICAgIGdsVmlld3BvcnQo
MCwgMCwgd2luZG93U2l6ZS53aWR0aCgpLCB3aW5kb3dTaXplLmhlaWdodCgpKTsKKworICAgIGlm
IChwdXJwb3NlID09IEZvclJlc2l6ZSkgeworICAgICAgICBnbENsZWFyQ29sb3IoMSwgMSwgMSwg
MCk7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQorCisgICAg
bV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7CisgICAgdG9UZXh0dXJlTWFwcGVyTGF5
ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5wYWludCgpOworICAgIG1fZnBzQ291bnRlci51cGRhdGVG
UFNBbmREaXNwbGF5KG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CisgICAgbV90ZXh0dXJlTWFwcGVy
LT5lbmRQYWludGluZygpOworCisgICAgbV9jb250ZXh0LT5zd2FwQnVmZmVycygpOworfQorCit2
b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXRSb290Q29tcG9zaXRpbmdMYXll
cihHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQoreworICAgIHByZXBhcmVGb3JSZW5kZXJp
bmcoKTsKKworICAgIGlmICghZ3JhcGhpY3NMYXllcikgeworICAgICAgICBzdG9wQW55UGVuZGlu
Z0xheWVyRmx1c2goKTsKKyAgICAgICAgbV9yb290TGF5ZXIgPSBudWxscHRyOworICAgICAgICBt
X25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIgPSBudWxscHRyOworICAgICAgICBtX3RleHR1cmVN
YXBwZXIgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQWRkIHRo
ZSBhY2NlbGVyYXRlZCBsYXllciB0cmVlIGhpZXJhcmNoeS4KKyAgICBpbml0aWFsaXplKCk7Cisg
ICAgaWYgKCFtX3dpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworICAgIG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRMYXllci0+YWRkQ2hpbGQoZ3JhcGhpY3NMYXllcik7CisKKyAgICBzdG9wQW55UGVuZGlu
Z0xheWVyRmx1c2goKTsKKworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVk
RGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghbV9yb290TGF5ZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yb290
TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwor
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sK
KyAgICBpZiAoIW1fcm9vdExheWVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHJlY3QuaXNF
bXB0eSgpKSB7CisgICAgICAgIG1fcm9vdExheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Jvb3RMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0
KHJlY3QpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0OjpyZXNpemVSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYgbmV3U2l6
ZSkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
cm9vdExheWVyLT5zaXplKCkgPT0gbmV3U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9y
b290TGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CisKKyAgICAvLyBJZiB0aGUgbmV3U2l6ZSBleHBv
c2VzIG5ldyBhcmVhcyBvZiB0aGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBhIHNldE5lZWRzRGlz
cGxheSBpcyBuZWVkZWQKKyAgICAvLyBmb3IgdGhvc2UgbmV3bHkgZXhwb3NlZCBhcmVhcy4KKyAg
ICBGbG9hdFNpemUgb2xkU2l6ZSA9IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2l6ZSgp
OworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKKwor
ICAgIGlmIChuZXdTaXplLndpZHRoKCkgPiBvbGRTaXplLndpZHRoKCkpIHsKKyAgICAgICAgZmxv
YXQgaGVpZ2h0ID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5ld1NpemUuaGVpZ2h0KCkp
LCBvbGRTaXplLmhlaWdodCgpKTsKKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVy
LT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0KG9sZFNpemUud2lkdGgoKSwgMCwgbmV3
U2l6ZS53aWR0aCgpIC0gb2xkU2l6ZS53aWR0aCgpLCBoZWlnaHQpKTsKKyAgICB9CisKKyAgICBp
ZiAobmV3U2l6ZS5oZWlnaHQoKSA+IG9sZFNpemUuaGVpZ2h0KCkpCisgICAgICAgIG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEZsb2F0UmVjdCgwLCBv
bGRTaXplLmhlaWdodCgpLCBuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkgLSBvbGRT
aXplLmhlaWdodCgpKSk7CisKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5l
ZWRzRGlzcGxheUluUmVjdChJbnRSZWN0KEludFBvaW50KCksIG5ld1NpemUpKTsKKyAgICBjb21w
b3NpdGVMYXllcnNUb0NvbnRleHQoRm9yUmVzaXplKTsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2go
KTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2Nyb2xsTm9uQ29t
cG9zaXRlZENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUm
IC8qIHNjcm9sbE9mZnNldCAqLykKK3sKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIt
PnNldE5lZWRzRGlzcGxheUluUmVjdChzY3JvbGxSZWN0KTsKKyAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2NoZWR1bGVM
YXllckZsdXNoKCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fbGF5ZXJGbHVzaFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKworYm9vbCBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKK3sKKyAg
ICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwor
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSgpOworICAgIHJldHVybiBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgp
LnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7Cit9CisK
K2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGluZ0xheWVyQ2hh
bmdlc1Nvb24oKQoreworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaEFuZFJlbmRl
ckxheWVycygpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEZyYW1lJiBmcmFtZSA9IGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFm
cmFtZS5jb250ZW50UmVuZGVyZXIoKSB8fCAhZnJhbWUudmlldygpKQorICAgICAgICByZXR1cm47
CisgICAgZnJhbWUudmlldygpLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZl
KCk7CisKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
Y29udGV4dCAmJiAhbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KCk7Cit9CisKK3ZvaWQgQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmxheWVyRmx1c2hUaW1lckZpcmVkKCkKK3sKKyAgICBm
bHVzaEFuZFJlbmRlckxheWVycygpOworCisgICAgLy8gSW4gY2FzZSBhbiBhbmltYXRpb24gaXMg
cnVubmluZywgd2Ugc2hvdWxkIGZsdXNoIGFnYWluIHNvb24uCisgICAgaWYgKHN0YXJ0ZWRBbmlt
YXRpb24obV9yb290TGF5ZXIuZ2V0KCkpKQorICAgICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsK
K30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bm90aWZ5QW5pbWF0aW9u
U3RhcnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgZG91YmxlIC8qIHRpbWUgKi8pCit7Cit9CisK
K3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om5vdGlmeUZsdXNoUmVxdWlyZWQo
Y29uc3QgR3JhcGhpY3NMYXllciopCit7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdFRvUGFpbnQpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5jbGlw
KHJlY3RUb1BhaW50KTsKKyAgICBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgpLnZpZXcoKS0+
cGFpbnQoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdFRvUGFpbnQpKTsKKyAgICBjb250
ZXh0LnJlc3RvcmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAorI2RlZmluZSBBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dF9oCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFw
cGVyRlBTQ291bnRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorCitjbGFzcyBXZWJWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgOiBwdWJsaWMgV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQpOworcHVibGljOgorICAgIGV4cGxpY2l0IEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0KFdlYlZpZXcqKTsKKyAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dCgpOworCisgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CisgICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdm9pZCBzZXROZWVk
c0Rpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZvaWQgc2NoZWR1
bGVMYXllckZsdXNoKCk7CisgICAgdm9pZCByZXNpemVSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpOworICAgIGJvb2wgZW5hYmxlZCgpOworCisgICAgLy8gR3JhcGhpY3NMYXllckNs
aWVudAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUZsdXNoUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOworICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFz
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0VG9QYWludCk7CisKKyAgICB2b2lkIGlu
aXRpYWxpemUoKTsKKworICAgIGVudW0gQ29tcG9zaXRlUHVycG9zZSB7IEZvclJlc2l6ZSwgTm90
Rm9yUmVzaXplIH07CisgICAgdm9pZCBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoQ29tcG9zaXRl
UHVycG9zZSA9IE5vdEZvclJlc2l6ZSk7CisKKyAgICB2b2lkIGZsdXNoQW5kUmVuZGVyTGF5ZXJz
KCk7CisgICAgYm9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBib29sIGZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsKKyAgICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRD
b250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpOworCitwcml2YXRlOgorICAgIFdlYlZpZXcqIG1fd2Vi
VmlldzsKKyAgICBPd25QdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgSFdO
RCBtX3dpbmRvdzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4g
bV9yb290TGF5ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6VGV4dHVyZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOworICAgIFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJGUFNDb3VudGVyIG1fZnBzQ291bnRlcjsKKworICAgIGNsYXNzIExheWVyRmx1c2hUaW1l
ciA6IHB1YmxpYyBXZWJDb3JlOjpUaW1lckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgTGF5
ZXJGbHVzaFRpbWVyKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0JiBjb250ZXh0KQorICAg
ICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBtX2NvbnRleHQubGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0JiBtX2NvbnRleHQ7CisgICAgfSBt
X2xheWVyRmx1c2hUaW1lcjsKKworICAgIHZvaWQgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKKyAg
ICB2b2lkIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOworICAgIGJvb2wgcHJlcGFyZUZvclJl
bmRlcmluZygpOworICAgIGJvb2wgc3RhcnRlZEFuaW1hdGlvbihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFRFWFRVUkVf
TUFQUEVSX0dMCisKKyNlbmRpZiAvLyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239622</attachid>
            <date>2014-10-10 05:53:51 -0700</date>
            <delta_ts>2014-10-17 03:19:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137345-20141010145332.patch</filename>
            <type>text/plain</type>
            <size>31526</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDUwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTEwLTA5ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gQWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBH
VEssIGFuZCB0aGUgdGV4dHVyZSBtYXBwZXIgZ3JhcGhpY3MgbGF5ZXIgdHlwZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kOiBDb3B5IHRleG1h
cCBoZWFkZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHA6IEFkZGVkIG1ldGhvZCBhbmQgZmxhZyBpbmRpY2F0aW5nIHdo
ZXRoZXIgYW5pbWF0aW9uIGhhcyBzdGFydGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzdGFydGVkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOiBVc2Ugc2FtZSBwcmVjaXNpb24gZm9yIHVu
aWZvcm0gaW4gdmVydGV4IHNoYWRlciBhcyBpbiBmcmFnbWVudCBzaGFkZXIuCisgICAgICAgIE90
aGVyd2lzZSBnbExpbmtQcm9ncmFtKCkgd2lsbCBmYWlsLCBhbmQgbm90aGluZyB3aWxsIGJlIHJl
bmRlcmVkLgorCiAyMDE0LTEwLTA5ICBQaGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hpbWVudG9A
Z21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIE5ldHNjYXBlIHBsdWdpbiBBUEkgc3ltYm9sIHVz
ZWQgb3V0c2lkZSBmZWF0dXJlIGd1YXJkcwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQJKHJldmlzaW9u
IDE3NDUwMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGlu
Z0hlYWRlcnMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHhjb3B5IC95IC9k
ICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmEKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5j
bHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBo
aWNzXHdpblwlMVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUi
CiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVc
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgoreGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFwqLmgiICIlQ09ORklH
VVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3RE
aXIlLi5ccGxhdGZvcm1cbW9ja1wqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRl
XFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cdGV4dFwqLmgi
ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAi
JVByb2plY3REaXIlLi5ccGxhdGZvcm1cdGV4dFxpY3VcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwCShyZXZpc2lvbiAxNzQ1MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpH
cmFwaGljc0xheWUKICAgICAsIG1fY29udGVudHNMYXllcigwKQogICAgICwgbV9hbmltYXRpb25T
dGFydFRpbWUoMCkKICAgICAsIG1faXNTY3JvbGxhYmxlKGZhbHNlKQorICAgICwgbV9zdGFydGVk
QW5pbWF0aW9uKGZhbHNlKQogewogfQogCkBAIC01OTEsNiArNTkyLDcgQEAgYm9vbCBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbQogICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGlt
ZSA9IGN1cnJlbnRUaW1lIC0gdGltZU9mZnNldDsKICAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9u
Q2hhbmdlKTsKICAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9uU3RhcnRlZCk7CisgICAgbV9zdGFy
dGVkQW5pbWF0aW9uID0gdHJ1ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgJKHJldmlzaW9uIDE3NDUwMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAg
IGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyV2lk
dGg7IH0KICAgICB2b2lkIHNldFJlcGFpbnRDb3VudChpbnQpOwogCisgICAgYm9vbCBzdGFydGVk
QW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydGVkQW5pbWF0aW9uOyB9CisKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpOwogCkBAIC0xNzcsNiArMTc5
LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgbV9jb21taXR0ZWRTY3JvbGxPZmZzZXQ7CiAg
ICAgYm9vbCBtX2lzU2Nyb2xsYWJsZTsKKyAgICBib29sIG1fc3RhcnRlZEFuaW1hdGlvbjsKIH07
CiAKIGlubGluZSBzdGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIHRvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAJKHJldmlzaW9uIDE3NDUwMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsOCBAQCBzdGF0aWMgY29u
c3QgY2hhciogZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgQU5USUFMSUFTSU5HX1RFWF9DT09SRF9E
SVJFQ1RJVkUKICAgICBCTFVSX0NPTlNUQU5UUwogICAgIFNUUklOR0lGWSgKKyAgICAgICAgcHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0OworICAgICAgICB1bmlmb3JtIG1hdDQgdV90ZXh0dXJlU3BhY2VN
YXRyaXg7CiAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwogICAgICAgICB1bmlmb3Jt
IFNhbXBsZXJUeXBlIHNfc2FtcGxlcjsKICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19jb250
ZW50VGV4dHVyZTsKQEAgLTIyMCw3ICsyMjIsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21l
bnRUZW1wbGF0ZSA9CiAgICAgICAgIHVuaWZvcm0gdmVjMiB1X3NoYWRvd09mZnNldDsKICAgICAg
ICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CiAgICAgICAgIHVuaWZvcm0gZmxvYXQgdV9nYXVzc2lh
bktlcm5lbFtHQVVTU0lBTl9LRVJORUxfSEFMRl9XSURUSF07Ci0gICAgICAgIHVuaWZvcm0gbWF0
NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsKIAogICAgICAgICB2b2lkIG5vb3AoaW5vdXQgdmVjNCBk
dW1teVBhcmFtZXRlcikgeyB9CiAgICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWM0IGR1bW15UGFy
YW1ldGVyLCB2ZWMyIHRleENvb3JkKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzQ1MDIp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDE0LTEwLTA5ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgor
CisgICAgICAgIFtXaW5DYWlyb10gQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm90IGltcGxl
bWVudGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM3MzQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBHVEssIGFuZCB0aGUgdGV4dHVyZSBtYXBwZXIgZ3JhcGhp
Y3MgbGF5ZXIgdHlwZS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQu
dmN4cHJvajogQWRkZWQgbmV3IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHNvdXJjZSBmaWxlcy4K
KyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2ouZmlsdGVyczog
RGl0dG8uCisKIDIwMTQtMTAtMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCA2NC1iaXQgYnVpbGQgZml4IGFmdGVyIHIxNzQz
MTUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9X
ZWJLaXQudmN4cHJvagkocmV2aXNpb24gMTc0NTAyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQu
dmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw2ICsz
MjMsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdp
blxXZWJDb3JlU3RhdGlzdGljcy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
Llx3aW5cV2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XEVtYmVk
ZGVkV2lkZ2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJD
b3JlU3VwcG9ydFxXZWJDaHJvbWVDbGllbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYkNvbnRleHRNZW51Q2xpZW50LmNwcCIgLz4K
QEAgLTQ2MCw2ICs0NjEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdl
YkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlwuLlx3aW5cV2ViQ29va2llTWFuYWdlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cLi5cd2luXFdlYkNvcmVTdGF0aXN0aWNzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxF
bWJlZGRlZFdpZGdldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdl
YkNvcmVTdXBwb3J0XFdlYkNocm9tZUNsaWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYkNvbnRleHRNZW51Q2xpZW50LmgiIC8+Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5m
aWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0
L1dlYktpdC52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE3NDUwMikKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcg
Y29weSkKQEAgLTI3NSw2ICsyNzUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5c
d2luXEFjY2Vzc2libGVUZXh0SW1wbC5jcHAiPgogICAgICAgPEZpbHRlcj5Tb3VyY2VzPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5c
V2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+V2ViQ29yZVN1cHBvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9J
dGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3
aW5cV2ViQ29yZVN1cHBvcnRcRW1iZWRkZWRXaWRnZXQuaCI+CkBAIC01MzYsNiArNTM5LDkgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxBY2Nlc3NpYmxlVGV4dEltcGwuaCI+
CiAgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiPgorICAgICAgPEZpbHRlcj5XZWJDb3JlU3VwcG9ydDwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4K
ICAgICA8Tm9uZSBJbmNsdWRlPSJXZWJLaXRQb3N0QnVpbGQuY21kIiAvPgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkocmV2aXNpb24gMTc0NTAyKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTQtMTAtMDkgIHBlYXZvQG91dGxv
b2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CisKKyAgICAgICAgW1dpbkNhaXJvXSBBY2NlbGVy
YXRlZCBjb21wb3NpdGluZyBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzczNDUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIEdUSywg
YW5kIHRoZSB0ZXh0dXJlIG1hcHBlciBncmFwaGljcyBsYXllciB0eXBlLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Z2V0V2ViVmlld1NpemUp
OgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlh
bGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c3RvcEFueVBlbmRpbmdMYXllckZsdXNoKToKKyAgICAg
ICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmVuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cHJlcGFyZUZvclJl
bmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OjpzdGFydGVkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcik6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXROb25D
b21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAo
V2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplUm9vdExheWVyKToK
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNjcm9sbE5v
bkNvbXBvc2l0ZWRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpzY2hlZHVsZUxheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToKKyAg
ICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlc1Nvb24pOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6Zmx1c2hBbmRSZW5kZXJMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bm90aWZ5QW5pbWF0aW9u
U3RhcnRlZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
Ojpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6TGF5ZXJGbHVzaFRpbWVyOjpMYXllckZs
dXNoVGltZXIpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6TGF5ZXJGbHVzaFRpbWVyOjpmaXJlZCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAg
ICAgIChXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFRvRGlydHlSZWdp
b24pOgorICAgICAgICAoV2ViVmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YlZpZXc6OnNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZXc6OnBhaW50KToKKyAgICAgICAg
KFdlYlZpZXc6OnNldFJvb3RDaGlsZExheWVyKToKKyAgICAgICAgKFdlYlZpZXc6OmZsdXNoUGVu
ZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbik6CisgICAgICAgIChXZWJWaWV3OjpzZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTQtMTAtMDgg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gUmVz
b2x2ZSB2YXJpb3VzIHN0YXRpYyBhbmFseXplciB3YXJuaW5ncyBpbiBXZWJLaXQuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTc0NTAyKQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw2ICs0MDksOSBAQCBXZWJWaWV3OjpX
ZWJWaWV3KCkKICAgICAsIG1fbGFzdFNldEN1cnNvcigwKQogICAgICwgbV91c2VzTGF5ZXJlZFdp
bmRvdyhmYWxzZSkKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNlKQorI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyAgICAsIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQobnVsbHB0
cikKKyNlbmRpZgogewogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKQEAgLTg2MCw3ICs4NjMsMTEgQEAgdm9pZCBXZWJWaWV3
OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludAogICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2Iv
MjkzNTAuCiAKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKKyNpZiBVU0Uo
Q0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoZGlydHlS
ZWN0KTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAgICAgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7Cisj
ZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODk1LDcgKzkwMiwxMSBAQCB2b2lk
IFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpCiAgICAgaWYgKGlzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZG9pbmcg
c29tZXRoaW5nIHNtYXJ0ZXIgaGVyZSwgbGlrZSBtb3ZpbmcgdGlsZXMgYXJvdW5kIGFuZCBwYWlu
dGluZwogICAgICAgICAvLyBhbnkgbmV3bHktZXhwb3NlZCB0aWxlcy4gPGh0dHA6Ly93ZWJraXQu
b3JnL2IvNTI3MTQ+CisjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2Nyb2xsTm9u
Q29tcG9zaXRlZENvbnRlbnRzKHNjcm9sbFZpZXdSZWN0LCBJbnRTaXplKGR4LCBkeSkpOworI2Vu
ZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk1MiwxMCArOTYzLDE0IEBAIHZvaWQg
V2ViVmlldzo6c2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYKICNpZiBVU0UoQ0EpCiAgICAgaWYg
KG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yZXNpemUoKTsKKwog
ICAgIGlmIChtX2JhY2tpbmdMYXllcikgewogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0U2l6
ZShuZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwog
ICAgIH0KKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBpZiAobV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlmCiB9CiAKQEAgLTEwODQsMTgg
KzEwOTksMjIgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRpbwogewog
ICAgIExPQ0FMX0dESV9DT1VOVEVSKDAsIF9fRlVOQ1RJT05fXyk7CiAKLSNpZiBVU0UoQ0EpCiAg
ICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpICYmICF1c2VzTGF5ZXJlZFdpbmRvdygp
KSB7CisjaWYgVVNFKENBKQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0xh
eWVyQ2hhbmdlc05vdygpOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgICAgICBt
X2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaEFuZFJlbmRlckxheWVycygpOwor
I2VuZGlmCiAgICAgICAgIC8vIEZsdXNoaW5nIG1pZ2h0IGhhdmUgdGFrZW4gdXMgb3V0IG9mIGNv
bXBvc2l0aW5nIG1vZGUuCiAgICAgICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcGFpbnQgaW50byBkYyAoaWYgcHJv
dmlkZWQpLiA8aHR0cDovL3dlYmtpdC5vcmcvYi81MjU3OD4KKyNpZiBVU0UoQ0EpCiAgICAgICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50KCk7CisjZW5kaWYKICAgICAgICAgICAgIDo6VmFs
aWRhdGVSZWN0KG1fdmlld1dpbmRvdywgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9Ci0jZW5kaWYKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZy
YW1lKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKQEAgLTIzOTMsOCArMjQxMiwxMCBAQCBMUkVTVUxU
IENBTExCQUNLIFdlYlZpZXc6OldlYlZpZXdXbmRQcm9jCiAgICAgICAgICAgICAgICAgUkVDVCB3
aW5kb3dSZWN0OwogICAgICAgICAgICAgICAgIDo6R2V0Q2xpZW50UmVjdChoV25kLCAmd2luZG93
UmVjdCk7CiAgICAgICAgICAgICAgICAgOjpJbnZhbGlkYXRlUmVjdChoV25kLCAmd2luZG93UmVj
dCwgZmFsc2UpOworI2lmIFVTRShDQSkKICAgICAgICAgICAgICAgICBpZiAod2ViVmlldy0+aXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCiAgICAgICAgICAgICAgICAgICAgIHdlYlZpZXctPm1f
YmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyNlbmRpZgogICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXTV9NT1VTRUFDVElWQVRFOgpAQCAtNjU1
MSw5ICs2NTcyLDE1IEBAIHZvaWQgV2ViVmlldzo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwK
IHZvaWQgV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7
CiAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhsYXllciA/IHRydWUgOiBmYWxzZSk7Cisj
aWYgVVNFKENBKQogICAgIGlmICghbV9iYWNraW5nTGF5ZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2JhY2tpbmdMYXllci0+YWRkQ2hpbGQobGF5ZXIpOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorICAgIGlmICghbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldFJvb3RD
b21wb3NpdGluZ0xheWVyKGxheWVyKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXc6OmZsdXNo
UGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCkBAIC02NTYyLDEzICs2NTg5LDIwIEBA
IHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckMKICAgICBpZiAoIW1fbGF5
ZXJUcmVlSG9zdCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQ
ZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCisgICAgaWYgKCFtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQorICAgICAg
ICByZXR1cm47CisgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzU29vbigpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlldzo6c2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogeworICAgIGlmIChtX2lzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZyA9PSBhY2NlbGVyYXRlZCkKKyAgICAgICAgcmV0dXJuOworCiAj
aWYgVVNFKENBKQotICAgIGlmIChtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9PSBhY2NlbGVy
YXRlZCB8fCAhQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFi
bGUoKSkKKyAgICBpZiAoIUNBQ0ZMYXllclRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5n
QXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhY2NlbGVyYXRlZCkgewpA
QCAtNjYwOCw2ICs2NjQyLDEwIEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZygKICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBudWxscHRyOwogICAgICAgICBtX2lzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwogICAgIH0KKyNlbGlmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKKyAgICBpZiAoYWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQpCisgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KHRoaXMp
OworICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gYWNjZWxlcmF0ZWQ7CiAjZW5kaWYK
IH0KIApAQCAtNjc1MiwxNCArNjc5MCwxOCBAQCB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dy
YXBoaWNzTGF5ZXJDCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29yZUZyYW1lLT52aWV3KCk7CiAg
ICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CisjaWYgVVNFKENBKQogICAgIGlmICghbV9i
YWNraW5nTGF5ZXIpCiAgICAgICAgIHJldHVybjsKKyNlbmRpZgogCiAgICAgdmlldy0+dXBkYXRl
TGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogCiAgICAgLy8gVXBkYXRpbmcgbGF5
b3V0IG1pZ2h0IGhhdmUgdGFrZW4gdXMgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUuCisjaWYgVVNF
KENBKQogICAgIGlmIChtX2JhY2tpbmdMYXllcikKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPmZs
dXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyNlbmRpZgogCiAgICAgdmll
dy0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5oCShyZXZpc2lvbiAxNzQ1MDIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9GdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNFKENBKQogICAgIGNsYXNzIENB
Q0ZMYXllclRyZWVIb3N0OwpAQCAtMTEzNiw4ICsxMTQwLDEwIEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCk7CiAjaWYgVVNFKENBKQogICAgIFJl
ZlB0cjxXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwotI2VuZGlm
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fYmFja2luZ0xh
eWVyOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiBtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OworI2VuZGlmCiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZzsKIAogICAgIGJvb2wgbV9uZXh0RGlzcGxheUlzU3luY2hyb25vdXM7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgorCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Vmlldy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHR1
cmVNYXBwZXJHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlckxheWVyLmg+CisK
KyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjZWxzZQorI2lu
Y2x1ZGUgPEdML2dsLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmll
dyh3ZWJWaWV3KQorICAgICwgbV9sYXllckZsdXNoVGltZXIoKnRoaXMpCisgICAgLCBtX2NvbnRl
eHQobnVsbHB0cikKKyAgICAsIG1fd2luZG93KDApCit7Cit9CisKK3N0YXRpYyBJbnRTaXplIGdl
dFdlYlZpZXdTaXplKFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgUkVDVCByOworICAgIHdlYlZp
ZXctPmZyYW1lUmVjdCgmcik7CisgICAgcmV0dXJuIEludFNpemUoci5yaWdodCAtIHIubGVmdCwg
ci5ib3R0b20gLSByLnRvcCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OmluaXRpYWxpemUoKQoreworICAgIGlmIChtX3Jvb3RMYXllcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgSW50U2l6ZSBwYWdlU2l6ZSA9IGdldFdlYlZpZXdTaXplKG1fd2ViVmlldyk7CisK
KyAgICBtX3dpbmRvdyA9IG1fd2ViVmlldy0+dmlld1dpbmRvdygpOworCisgICAgaWYgKCFtX3dp
bmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVy
OjpjcmVhdGUoMCwgKnRoaXMpOworICAgIG1fcm9vdExheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFs
c2UpOworICAgIG1fcm9vdExheWVyLT5zZXRTaXplKHBhZ2VTaXplKTsKKworICAgIC8vIFRoZSBu
b24tY29tcG9zaXRlZCBjb250ZW50cyBhcmUgYSBjaGlsZCBvZiB0aGUgcm9vdCBsYXllci4KKyAg
ICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCwg
KnRoaXMpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0RHJhd3NDb250ZW50
KHRydWUpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0Q29udGVudHNPcGFx
dWUoIW1fd2ViVmlldy0+dHJhbnNwYXJlbnQoKSk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVu
dExheWVyLT5zZXRTaXplKHBhZ2VTaXplKTsKKyAgICBpZiAoY29yZShtX3dlYlZpZXcpLT5zZXR0
aW5ncygpLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSkKKyAgICAgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudExheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcodHJ1ZSk7CisKKyNpZm5kZWYg
TkRFQlVHCisgICAgbV9yb290TGF5ZXItPnNldE5hbWUoIlJvb3QgbGF5ZXIiKTsKKyAgICBtX25v
bkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5hbWUoIk5vbi1jb21wb3NpdGVkIGNvbnRlbnQi
KTsKKyNlbmRpZgorCisgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRMYXllci5nZXQoKSk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRO
ZWVkc0Rpc3BsYXkoKTsKKworICAgIC8vIFRoZSBjcmVhdGlvbiBvZiB0aGUgVGV4dHVyZU1hcHBl
ciBuZWVkcyBhbiBhY3RpdmUgT3BlbkdMIGNvbnRleHQuCisgICAgaWYgKCFtX2NvbnRleHQpCisg
ICAgICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhtX3dp
bmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKworICAgIG1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBtX3RleHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVy
R0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyOjpPcGVuR0xNb2RlKTsKKyAgICBzdGF0aWNfY2FzdDxU
ZXh0dXJlTWFwcGVyR0wqPihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpLT5zZXRFbmFibGVFZGdlRGlz
dGFuY2VBbnRpYWxpYXNpbmcodHJ1ZSk7CisgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290
TGF5ZXIuZ2V0KCkpLT5zZXRUZXh0dXJlTWFwcGVyKG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CisK
KyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30KKworQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ6On5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCgpCit7CisgICAgc3RvcEFueVBl
bmRpbmdMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OnN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpCit7CisgICAgbV9sYXllckZsdXNoVGltZXIu
c3RvcCgpOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjplbmFibGVk
KCkKK3sKKyAgICByZXR1cm4gbV93aW5kb3cgJiYgbV9yb290TGF5ZXIgJiYgbV90ZXh0dXJlTWFw
cGVyOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpwcmVwYXJlRm9y
UmVuZGVyaW5nKCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ6OnN0YXJ0ZWRBbmltYXRpb24oV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIpCit7
CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHRvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5zdGFydGVkQW5pbWF0aW9uKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgZm9yIChhdXRvIGNoaWxkTGF5ZXIgOiBsYXllci0+Y2hp
bGRyZW4oKSkgeworICAgICAgICBpZiAoc3RhcnRlZEFuaW1hdGlvbihjaGlsZExheWVyKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y29tcG9zaXRlTGF5ZXJzVG9Db250
ZXh0KENvbXBvc2l0ZVB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBpZiAoIXByZXBhcmVGb3JSZW5k
ZXJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVDVCByOworICAgIDo6R2V0Q2xpZW50
UmVjdChtX3dpbmRvdywgJnIpOworICAgIEludFNpemUgd2luZG93U2l6ZShyLnJpZ2h0LCByLmJv
dHRvbSk7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCB3aW5kb3dTaXplLndpZHRoKCksIHdpbmRvd1Np
emUuaGVpZ2h0KCkpOworCisgICAgaWYgKHB1cnBvc2UgPT0gRm9yUmVzaXplKSB7CisgICAgICAg
IGdsQ2xlYXJDb2xvcigxLCAxLCAxLCAwKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKKyAgICB9CisKKyAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoKTsK
KyAgICB0b1RleHR1cmVNYXBwZXJMYXllcihtX3Jvb3RMYXllci5nZXQoKSktPnBhaW50KCk7Cisg
ICAgbV9mcHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkobV90ZXh0dXJlTWFwcGVyLmdldCgp
KTsKKyAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7CisKKyAgICBtX2NvbnRleHQt
PnN3YXBCdWZmZXJzKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCit7
CisgICAgcHJlcGFyZUZvclJlbmRlcmluZygpOworCisgICAgaWYgKCFncmFwaGljc0xheWVyKSB7
CisgICAgICAgIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOworICAgICAgICBtX3Jvb3RMYXll
ciA9IG51bGxwdHI7CisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllciA9IG51bGxw
dHI7CisgICAgICAgIG1fdGV4dHVyZU1hcHBlciA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBBZGQgdGhlIGFjY2VsZXJhdGVkIGxheWVyIHRyZWUgaGllcmFyY2h5
LgorICAgIGluaXRpYWxpemUoKTsKKyAgICBpZiAoIW1fd2luZG93KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7
CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5hZGRDaGlsZChncmFwaGljc0xheWVy
KTsKKworICAgIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOworCisgICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldE5v
bkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGNvbnN0IEludFJlY3QmIHJlY3QpCit7Cisg
ICAgaWYgKCFtX3Jvb3RMYXllcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChyZWN0LmlzRW1w
dHkoKSkgeworICAgICAgICBtX3Jvb3RMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVk
c0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK3Zv
aWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldE5lZWRzRGlzcGxheUluUmVjdChj
b25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghbV9yb290TGF5ZXIpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yb290TGF5ZXItPnNl
dE5lZWRzRGlzcGxheSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcm9vdExheWVy
LT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7
Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlc2l6ZVJvb3RMYXll
cihjb25zdCBJbnRTaXplJiBuZXdTaXplKQoreworICAgIGlmICghZW5hYmxlZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9yb290TGF5ZXItPnNpemUoKSA9PSBuZXdTaXplKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKKworICAg
IC8vIElmIHRoZSBuZXdTaXplIGV4cG9zZXMgbmV3IGFyZWFzIG9mIHRoZSBub24tY29tcG9zaXRl
ZCBjb250ZW50IGEgc2V0TmVlZHNEaXNwbGF5IGlzIG5lZWRlZAorICAgIC8vIGZvciB0aG9zZSBu
ZXdseSBleHBvc2VkIGFyZWFzLgorICAgIEZsb2F0U2l6ZSBvbGRTaXplID0gbV9ub25Db21wb3Np
dGVkQ29udGVudExheWVyLT5zaXplKCk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVy
LT5zZXRTaXplKG5ld1NpemUpOworCisgICAgaWYgKG5ld1NpemUud2lkdGgoKSA+IG9sZFNpemUu
d2lkdGgoKSkgeworICAgICAgICBmbG9hdCBoZWlnaHQgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxm
bG9hdD4obmV3U2l6ZS5oZWlnaHQoKSksIG9sZFNpemUuaGVpZ2h0KCkpOworICAgICAgICBtX25v
bkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChGbG9hdFJlY3Qo
b2xkU2l6ZS53aWR0aCgpLCAwLCBuZXdTaXplLndpZHRoKCkgLSBvbGRTaXplLndpZHRoKCksIGhl
aWdodCkpOworICAgIH0KKworICAgIGlmIChuZXdTaXplLmhlaWdodCgpID4gb2xkU2l6ZS5oZWln
aHQoKSkKKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3Bs
YXlJblJlY3QoRmxvYXRSZWN0KDAsIG9sZFNpemUuaGVpZ2h0KCksIG5ld1NpemUud2lkdGgoKSwg
bmV3U2l6ZS5oZWlnaHQoKSAtIG9sZFNpemUuaGVpZ2h0KCkpKTsKKworICAgIG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgbmV3U2l6ZSkpOworICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChGb3JSZXNpemUpOwor
ICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgSW50UmVjdCYgc2Ny
b2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgLyogc2Nyb2xsT2Zmc2V0ICovKQoreworICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgc2NoZWR1bGVM
YXllckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNj
aGVkdWxlTGF5ZXJGbHVzaCgpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX2xheWVyRmx1c2hUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2xheWVyRmx1c2hUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK2Jvb2wg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygp
Cit7CisgICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICByZXR1cm4gY29yZShtX3dlYlZpZXcpLT5tYWlu
RnJhbWUoKS52aWV3KCktPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lcygp
OworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXNTb29uKCkKK3sKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hB
bmRSZW5kZXJMYXllcnMoKQoreworICAgIGlmICghZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBGcmFtZSYgZnJhbWUgPSBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgpOworICAg
IGlmICghZnJhbWUuY29udGVudFJlbmRlcmVyKCkgfHwgIWZyYW1lLnZpZXcoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGZyYW1lLnZpZXcoKS0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJl
Y3Vyc2l2ZSgpOworCisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOworfQorCit2b2lk
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpsYXllckZsdXNoVGltZXJGaXJlZCgpCit7
CisgICAgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKKworICAgIC8vIEluIGNhc2UgYW4gYW5pbWF0
aW9uIGlzIHJ1bm5pbmcsIHdlIHNob3VsZCBmbHVzaCBhZ2FpbiBzb29uLgorICAgIGlmIChzdGFy
dGVkQW5pbWF0aW9uKG1fcm9vdExheWVyLmdldCgpKSkKKyAgICAgICAgc2NoZWR1bGVMYXllckZs
dXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSAvKiB0aW1lICovKQor
eworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpub3RpZnlGbHVzaFJl
cXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKQoreworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBG
bG9hdFJlY3QmIHJlY3RUb1BhaW50KQoreworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRl
eHQuY2xpcChyZWN0VG9QYWludCk7CisgICAgY29yZShtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS52
aWV3KCktPnBhaW50KCZjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3RUb1BhaW50KSk7Cisg
ICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSwgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKKyNkZWZpbmUgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAorCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQorCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dM
Q29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NMYXllckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVj
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dHVyZU1hcHBlckZQU0NvdW50ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworY2xhc3MgV2ViVmlldzsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0IDogcHVibGljIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dChXZWJWaWV3Kik7CisgICAgdmlydHVhbCB+QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoKTsKKworICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5n
TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOworICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRl
ZENvbnRlbnRzTmVlZERpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZvaWQg
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2b2lk
IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIHZvaWQgcmVzaXplUm9vdExheWVyKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKKyAgICBib29sIGVuYWJsZWQoKTsKKworICAgIC8vIEdyYXBoaWNz
TGF5ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpOworICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50
aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdFRvUGFpbnQpOworCisgICAg
dm9pZCBpbml0aWFsaXplKCk7CisKKyAgICBlbnVtIENvbXBvc2l0ZVB1cnBvc2UgeyBGb3JSZXNp
emUsIE5vdEZvclJlc2l6ZSB9OworICAgIHZvaWQgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KENv
bXBvc2l0ZVB1cnBvc2UgPSBOb3RGb3JSZXNpemUpOworCisgICAgdm9pZCBmbHVzaEFuZFJlbmRl
ckxheWVycygpOworICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgYm9v
bCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29uKCk7CisgICAgdm9pZCBzY3JvbGxOb25Db21w
b3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KTsKKworcHJpdmF0ZToKKyAgICBXZWJWaWV3
KiBtX3dlYlZpZXc7CisgICAgT3duUHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0Owor
ICAgIEhXTkQgbV93aW5kb3c7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI+IG1fcm9vdExheWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGlj
c0xheWVyPiBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OlRleHR1cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKKyAgICBXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyRlBTQ291bnRlciBtX2Zwc0NvdW50ZXI7CisKKyAgICBjbGFzcyBMYXllckZs
dXNoVGltZXIgOiBwdWJsaWMgV2ViQ29yZTo6VGltZXJCYXNlIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIExheWVyRmx1c2hUaW1lcihBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCYgY29udGV4
dCkKKyAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCB2b2lkIGZpcmVkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgbV9jb250ZXh0LmxheWVyRmx1c2hUaW1lckZpcmVkKCk7CisgICAgICAg
IH0KKworICAgICAgICBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCYgbV9jb250ZXh0Owor
ICAgIH0gbV9sYXllckZsdXNoVGltZXI7CisKKyAgICB2b2lkIGxheWVyRmx1c2hUaW1lckZpcmVk
KCk7CisgICAgdm9pZCBzdG9wQW55UGVuZGluZ0xheWVyRmx1c2goKTsKKyAgICBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcoKTsKKyAgICBib29sIHN0YXJ0ZWRBbmltYXRpb24oV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBU
RVhUVVJFX01BUFBFUl9HTAorCisjZW5kaWYgLy8gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240010</attachid>
            <date>2014-10-17 03:19:50 -0700</date>
            <delta_ts>2014-10-17 11:31:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137345-20141017121938.patch</filename>
            <type>text/plain</type>
            <size>31135</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTEwLTE3ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gQWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBH
VEssIGFuZCB0aGUgdGV4dHVyZSBtYXBwZXIgZ3JhcGhpY3MgbGF5ZXIgdHlwZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kOiBDb3B5IHRleG1h
cCBoZWFkZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHA6IEFkZGVkIG1ldGhvZCBhbmQgZmxhZyBpbmRpY2F0aW5nIHdo
ZXRoZXIgYW5pbWF0aW9uIGhhcyBzdGFydGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzdGFydGVkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOiBVc2Ugc2FtZSBwcmVjaXNpb24gZm9yIHVu
aWZvcm0gaW4gdmVydGV4IHNoYWRlciBhcyBpbiBmcmFnbWVudCBzaGFkZXIuCisgICAgICAgIE90
aGVyd2lzZSBnbExpbmtQcm9ncmFtKCkgd2lsbCBmYWlsLCBhbmQgbm90aGluZyB3aWxsIGJlIHJl
bmRlcmVkLgorCiAyMDE0LTEwLTE0ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIE11bHRpcGxlIHJlZmFjdG9ycyBpbiBSZW5kZXJNYXRoTUxPcGVyYXRv
cgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVh
ZGVycy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2Nv
cHlGb3J3YXJkaW5nSGVhZGVycy5jbWQJKHJldmlzaW9uIDE3NDgxMikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw2ICs1OCw3IEBAIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9y
bVxncmEKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5c
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwlMVwqLmgiICIlQ09ORklH
VVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3RE
aXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgoreGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRleG1hcFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRl
XFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cbW9ja1wqLmgi
ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAi
JVByb2plY3REaXIlLi5ccGxhdGZvcm1cdGV4dFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElS
JVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1c
dGV4dFxpY3VcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCShyZXZpc2lv
biAxNzQ4MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3
IEBAIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWUKICAgICAsIG1fY29u
dGVudHNMYXllcigwKQogICAgICwgbV9hbmltYXRpb25TdGFydFRpbWUoMCkKICAgICAsIG1faXNT
Y3JvbGxhYmxlKGZhbHNlKQorICAgICwgbV9zdGFydGVkQW5pbWF0aW9uKGZhbHNlKQogewogfQog
CkBAIC01OTEsNiArNTkyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRk
QW5pbQogICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lIC0gdGltZU9m
ZnNldDsKICAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdlKTsKICAgICBub3RpZnlDaGFu
Z2UoQW5pbWF0aW9uU3RhcnRlZCk7CisgICAgbV9zdGFydGVkQW5pbWF0aW9uID0gdHJ1ZTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmgJKHJldmlzaW9uIDE3NDgxMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyV2lkdGg7IH0KICAgICB2b2lkIHNldFJlcGFp
bnRDb3VudChpbnQpOwogCisgICAgYm9vbCBzdGFydGVkQW5pbWF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydGVkQW5pbWF0aW9uOyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxCZURlc3Ryb3llZCgpOwogCkBAIC0xNzcsNiArMTc5LDcgQEAgcHJpdmF0ZToKIAogICAgIElu
dFNpemUgbV9jb21taXR0ZWRTY3JvbGxPZmZzZXQ7CiAgICAgYm9vbCBtX2lzU2Nyb2xsYWJsZTsK
KyAgICBib29sIG1fc3RhcnRlZEFuaW1hdGlvbjsKIH07CiAKIGlubGluZSBzdGF0aWMgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIqIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbS5jcHAJKHJldmlzaW9uIDE3NDgxMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOCw2ICsyMDgsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRUZW1wbGF0
ZSA9CiAgICAgQU5USUFMSUFTSU5HX1RFWF9DT09SRF9ESVJFQ1RJVkUKICAgICBCTFVSX0NPTlNU
QU5UUwogICAgIFNUUklOR0lGWSgKKyAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OworICAg
ICAgICB1bmlmb3JtIG1hdDQgdV90ZXh0dXJlU3BhY2VNYXRyaXg7CiAgICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OwogICAgICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlcjsK
ICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19jb250ZW50VGV4dHVyZTsKQEAgLTIyMCw3ICsy
MjIsNiBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRUZW1wbGF0ZSA9CiAgICAgICAgIHVu
aWZvcm0gdmVjMiB1X3NoYWRvd09mZnNldDsKICAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7
CiAgICAgICAgIHVuaWZvcm0gZmxvYXQgdV9nYXVzc2lhbktlcm5lbFtHQVVTU0lBTl9LRVJORUxf
SEFMRl9XSURUSF07Ci0gICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsK
IAogICAgICAgICB2b2lkIG5vb3AoaW5vdXQgdmVjNCBkdW1teVBhcmFtZXRlcikgeyB9CiAgICAg
ICAgIHZvaWQgbm9vcChpbm91dCB2ZWM0IGR1bW15UGFyYW1ldGVyLCB2ZWMyIHRleENvb3JkKSB7
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzQ4MTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTEwLTE3ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gQWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBH
VEssIGFuZCB0aGUgdGV4dHVyZSBtYXBwZXIgZ3JhcGhpY3MgbGF5ZXIgdHlwZS4KKworICAgICAg
ICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvajogQWRkZWQgbmV3IGFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgKiBXZWJLaXQudmN4cHJv
ai9XZWJLaXQvV2ViS2l0LnZjeHByb2ouZmlsdGVyczogRGl0dG8uCisKIDIwMTQtMTAtMTYgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50
IHNlbGVjdGlvbiBzZXJ2aWNlcyBtZW51IGZvciBMZWdhY3kgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvagkocmV2
aXNpb24gMTc0ODEyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2Vi
S2l0LnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw2ICszMjMsNyBAQAogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3RhdGlzdGlj
cy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBv
cnRcQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XEVtYmVkZGVkV2lkZ2V0LmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxXZWJDaHJv
bWVDbGllbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNv
cmVTdXBwb3J0XFdlYkNvbnRleHRNZW51Q2xpZW50LmNwcCIgLz4KQEAgLTQ2MCw2ICs0NjEsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29va2ll
TWFuYWdlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVT
dGF0aXN0aWNzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29y
ZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxFbWJlZGRlZFdpZGdldC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYkNo
cm9tZUNsaWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNv
cmVTdXBwb3J0XFdlYkNvbnRleHRNZW51Q2xpZW50LmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qLmZp
bHRlcnMJKHJldmlzaW9uIDE3NDgxMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ov
V2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsy
NzUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXEFjY2Vzc2libGVUZXh0
SW1wbC5jcHAiPgogICAgICAgPEZpbHRlcj5Tb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+V2ViQ29yZVN1
cHBvcnQ8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVt
R3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRc
RW1iZWRkZWRXaWRnZXQuaCI+CkBAIC01MzYsNiArNTM5LDkgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXC4uXHdpblxBY2Nlc3NpYmxlVGV4dEltcGwuaCI+CiAgICAgICA8RmlsdGVyPkhl
YWRlciBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LmgiPgorICAgICAgPEZpbHRlcj5XZWJDb3JlU3VwcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRl
PSJXZWJLaXRQb3N0QnVpbGQuY21kIiAvPgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24g
MTc0ODEyKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDkgQEAKKzIwMTQtMTAtMTcgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0
bG9vay5jb20+CisKKyAgICAgICAgW1dpbkNhaXJvXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBp
cyBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzczNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIEdUSywgYW5kIHRoZSB0ZXh0dXJlIG1h
cHBlciBncmFwaGljcyBsYXllciB0eXBlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Z2V0V2ViVmlld1NpemUpOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dDo6c3RvcEFueVBlbmRpbmdMYXllckZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cHJlcGFyZUZvclJlbmRlcmluZyk6CisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdGFydGVkQW5pbWF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNvbXBv
c2l0ZUxheWVyc1RvQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXROb25Db21wb3NpdGVkQ29udGVudHNO
ZWVkRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0OjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplUm9vdExheWVyKToKKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50
cyk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzY2hl
ZHVsZUxheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24p
OgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hB
bmRSZW5kZXJMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpub3RpZnlGbHVzaFJlcXVp
cmVkKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnBh
aW50Q29udGVudHMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6TGF5ZXJGbHVzaFRpbWVyOjpMYXllckZsdXNoVGltZXIpOgorICAgICAg
ICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6TGF5ZXJGbHVzaFRpbWVy
OjpmaXJlZCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpXZWJW
aWV3KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFRvRGlydHlSZWdpb24pOgorICAgICAgICAoV2Vi
Vmlldzo6c2Nyb2xsQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYlZpZXc6OnNpemVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYlZpZXc6OnBhaW50KToKKyAgICAgICAgKFdlYlZpZXc6OnNldFJvb3RD
aGlsZExheWVyKToKKyAgICAgICAgKFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJD
aGFuZ2VzU29vbik6CisgICAgICAgIChXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KToKKyAgICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTQtMTAtMTYgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNzQ3NTQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTc0ODEyKQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOSw2ICs0
MDksOSBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKICAgICAsIG1fbGFzdFNldEN1cnNvcigwKQogICAg
ICwgbV91c2VzTGF5ZXJlZFdpbmRvdyhmYWxzZSkKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNl
KQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAsIG1fYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQobnVsbHB0cikKKyNlbmRpZgogewogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVh
ZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKQEAgLTg2MCw3ICs4NjMs
MTEgQEAgdm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludAogICAgIC8vIGh0
dHA6Ly93ZWJraXQub3JnL2IvMjkzNTAuCiAKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nKCkpIHsKKyNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rp
c3BsYXlJblJlY3QoZGlydHlSZWN0KTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAg
ICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KGRpcnR5UmVjdCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODk1
LDcgKzkwMiwxMSBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpCiAg
ICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYmUgZG9pbmcgc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZSwgbGlrZSBtb3ZpbmcgdGls
ZXMgYXJvdW5kIGFuZCBwYWludGluZwogICAgICAgICAvLyBhbnkgbmV3bHktZXhwb3NlZCB0aWxl
cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI3MTQ+CisjaWYgVVNFKENBKQogICAgICAgICBtX2Jh
Y2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKKyNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC0+c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNjcm9sbFZpZXdSZWN0LCBJbnRT
aXplKGR4LCBkeSkpOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk1Miwx
MCArOTYzLDE0IEBAIHZvaWQgV2ViVmlldzo6c2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYKICNp
ZiBVU0UoQ0EpCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5yZXNpemUoKTsKKwogICAgIGlmIChtX2JhY2tpbmdMYXllcikgewogICAgICAgICBtX2Jh
Y2tpbmdMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNl
dE5lZWRzRGlzcGxheSgpOwogICAgIH0KKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAg
ICBpZiAobV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKKyAgICAgICAgbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlm
CiB9CiAKQEAgLTEwODQsMTggKzEwOTksMjIgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMs
IExQQVJBTSBvcHRpbwogewogICAgIExPQ0FMX0dESV9DT1VOVEVSKDAsIF9fRlVOQ1RJT05fXyk7
CiAKLSNpZiBVU0UoQ0EpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpICYmICF1
c2VzTGF5ZXJlZFdpbmRvdygpKSB7CisjaWYgVVNFKENBKQogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc05vdygpOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQorICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaEFu
ZFJlbmRlckxheWVycygpOworI2VuZGlmCiAgICAgICAgIC8vIEZsdXNoaW5nIG1pZ2h0IGhhdmUg
dGFrZW4gdXMgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUuCiAgICAgICAgIGlmIChpc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmcoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcGFp
bnQgaW50byBkYyAoaWYgcHJvdmlkZWQpLiA8aHR0cDovL3dlYmtpdC5vcmcvYi81MjU3OD4KKyNp
ZiBVU0UoQ0EpCiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50KCk7CisjZW5kaWYK
ICAgICAgICAgICAgIDo6VmFsaWRhdGVSZWN0KG1fdmlld1dpbmRvdywgMCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKIAogICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKG1fbWFpbkZyYW1lKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKQEAgLTIzOTMsOCAr
MjQxMiwxMCBAQCBMUkVTVUxUIENBTExCQUNLIFdlYlZpZXc6OldlYlZpZXdXbmRQcm9jCiAgICAg
ICAgICAgICAgICAgUkVDVCB3aW5kb3dSZWN0OwogICAgICAgICAgICAgICAgIDo6R2V0Q2xpZW50
UmVjdChoV25kLCAmd2luZG93UmVjdCk7CiAgICAgICAgICAgICAgICAgOjpJbnZhbGlkYXRlUmVj
dChoV25kLCAmd2luZG93UmVjdCwgZmFsc2UpOworI2lmIFVTRShDQSkKICAgICAgICAgICAgICAg
ICBpZiAod2ViVmlldy0+aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpCiAgICAgICAgICAgICAg
ICAgICAgIHdlYlZpZXctPm1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyNlbmRp
ZgogICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXTV9NT1VT
RUFDVElWQVRFOgpAQCAtNjU1MSw5ICs2NTcyLDE1IEBAIHZvaWQgV2ViVmlldzo6ZG93bmxvYWRV
UkwoY29uc3QgVVJMJiB1cmwKIHZvaWQgV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiB7CiAgICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhsYXllciA/
IHRydWUgOiBmYWxzZSk7CisjaWYgVVNFKENBKQogICAgIGlmICghbV9iYWNraW5nTGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2JhY2tpbmdMYXllci0+YWRkQ2hpbGQobGF5ZXIpOworI2Vs
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIGlmICghbV9hY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQtPnNldFJvb3RDb21wb3NpdGluZ0xheWVyKGxheWVyKTsKKyNlbmRpZgogfQogCiB2
b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCkBAIC02
NTYyLDEzICs2NTg5LDIwIEBAIHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXll
ckMKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbGF5
ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CisjZWxp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgaWYgKCFtX2FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbigpOwogI2VuZGlmCiB9CiAKIHZv
aWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQog
eworICAgIGlmIChtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9PSBhY2NlbGVyYXRlZCkKKyAg
ICAgICAgcmV0dXJuOworCiAjaWYgVVNFKENBKQotICAgIGlmIChtX2lzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZyA9PSBhY2NlbGVyYXRlZCB8fCAhQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBdmFpbGFibGUoKSkKKyAgICBpZiAoIUNBQ0ZMYXllclRyZWVIb3N0OjphY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChhY2NlbGVyYXRlZCkgewpAQCAtNjYwOCw2ICs2NjQyLDEwIEBAIHZvaWQgV2ViVmlldzo6c2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZygKICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBudWxscHRy
OwogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwogICAgIH0KKyNl
bGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBpZiAoYWNjZWxlcmF0ZWQgJiYgIW1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCisgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ+KHRoaXMpOworICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gYWNj
ZWxlcmF0ZWQ7CiAjZW5kaWYKIH0KIApAQCAtNjc1MiwxNCArNjc5MCwxOCBAQCB2b2lkIFdlYlZp
ZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29y
ZUZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CisjaWYgVVNF
KENBKQogICAgIGlmICghbV9iYWNraW5nTGF5ZXIpCiAgICAgICAgIHJldHVybjsKKyNlbmRpZgog
CiAgICAgdmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogCiAg
ICAgLy8gVXBkYXRpbmcgbGF5b3V0IG1pZ2h0IGhhdmUgdGFrZW4gdXMgb3V0IG9mIGNvbXBvc2l0
aW5nIG1vZGUuCisjaWYgVVNFKENBKQogICAgIGlmIChtX2JhY2tpbmdMYXllcikKICAgICAgICAg
bV9iYWNraW5nTGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsK
KyNlbmRpZgogCiAgICAgdmlldy0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJh
bWVzKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCShyZXZpc2lvbiAxNzQ4MTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9GdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudC5oPgogI2VuZGlm
CiAKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNF
KENBKQogICAgIGNsYXNzIENBQ0ZMYXllclRyZWVIb3N0OwpAQCAtMTEzNiw4ICsxMTQwLDEwIEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCk7CiAj
aWYgVVNFKENBKQogICAgIFJlZlB0cjxXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXll
clRyZWVIb3N0OwotI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI+IG1fYmFja2luZ0xheWVyOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiBt
X2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OworI2VuZGlmCiAgICAgYm9vbCBtX2lzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZzsKIAogICAgIGJvb2wgbV9uZXh0RGlzcGxheUlzU3luY2hyb25v
dXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzI5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgorCisjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCisjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJHTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVy
ZU1hcHBlckxheWVyLmg+CisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSA8R0xFUzIv
Z2wyLmg+CisjZWxzZQorI2luY2x1ZGUgPEdML2dsLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2ViVmlldyogd2ViVmll
dykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV9sYXllckZsdXNoVGltZXIoKnRo
aXMpCisgICAgLCBtX2NvbnRleHQobnVsbHB0cikKKyAgICAsIG1fd2luZG93KDApCit7Cit9CisK
K3N0YXRpYyBJbnRTaXplIGdldFdlYlZpZXdTaXplKFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAg
UkVDVCByOworICAgIHdlYlZpZXctPmZyYW1lUmVjdCgmcik7CisgICAgcmV0dXJuIEludFNpemUo
ci5yaWdodCAtIHIubGVmdCwgci5ib3R0b20gLSByLnRvcCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemUoKQoreworICAgIGlmIChtX3Jvb3RMYXll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBwYWdlU2l6ZSA9IGdldFdlYlZpZXdT
aXplKG1fd2ViVmlldyk7CisKKyAgICBtX3dpbmRvdyA9IG1fd2ViVmlldy0+dmlld1dpbmRvdygp
OworCisgICAgaWYgKCFtX3dpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yb290TGF5
ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCwgKnRoaXMpOworICAgIG1fcm9vdExheWVyLT5z
ZXREcmF3c0NvbnRlbnQoZmFsc2UpOworICAgIG1fcm9vdExheWVyLT5zZXRTaXplKHBhZ2VTaXpl
KTsKKworICAgIC8vIFRoZSBub24tY29tcG9zaXRlZCBjb250ZW50cyBhcmUgYSBjaGlsZCBvZiB0
aGUgcm9vdCBsYXllci4KKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIgPSBHcmFwaGlj
c0xheWVyOjpjcmVhdGUoMCwgKnRoaXMpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXll
ci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXll
ci0+c2V0Q29udGVudHNPcGFxdWUoIW1fd2ViVmlldy0+dHJhbnNwYXJlbnQoKSk7CisgICAgbV9u
b25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRTaXplKHBhZ2VTaXplKTsKKyAgICBpZiAoY29y
ZShtX3dlYlZpZXcpLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSkKKyAg
ICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmco
dHJ1ZSk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgbV9yb290TGF5ZXItPnNldE5hbWUoIlJvb3Qg
bGF5ZXIiKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5hbWUoIk5vbi1j
b21wb3NpdGVkIGNvbnRlbnQiKTsKKyNlbmRpZgorCisgICAgbV9yb290TGF5ZXItPmFkZENoaWxk
KG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQoKSk7CisgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKworICAgIC8vIFRoZSBjcmVhdGlvbiBv
ZiB0aGUgVGV4dHVyZU1hcHBlciBuZWVkcyBhbiBhY3RpdmUgT3BlbkdMIGNvbnRleHQuCisgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29u
dGV4dEZvcldpbmRvdyhtX3dpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKKwor
ICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBtX3RleHR1cmVNYXBw
ZXIgPSBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyOjpPcGVuR0xNb2RlKTsK
KyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPihtX3RleHR1cmVNYXBwZXIuZ2V0KCkp
LT5zZXRFbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmcodHJ1ZSk7CisgICAgdG9UZXh0dXJl
TWFwcGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5zZXRUZXh0dXJlTWFwcGVyKG1fdGV4dHVy
ZU1hcHBlci5nZXQoKSk7CisKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30KKworQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6On5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCgp
Cit7CisgICAgc3RvcEFueVBlbmRpbmdMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpCit7CisgICAg
bV9sYXllckZsdXNoVGltZXIuc3RvcCgpOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjplbmFibGVkKCkKK3sKKyAgICByZXR1cm4gbV93aW5kb3cgJiYgbV9yb290TGF5
ZXIgJiYgbV90ZXh0dXJlTWFwcGVyOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0OjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN0YXJ0ZWRBbmltYXRpb24oV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciogbGF5ZXIpCit7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5zdGFydGVk
QW5pbWF0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgZm9yIChhdXRvIGNoaWxk
TGF5ZXIgOiBsYXllci0+Y2hpbGRyZW4oKSkgeworICAgICAgICBpZiAoc3RhcnRlZEFuaW1hdGlv
bihjaGlsZExheWVyKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y29t
cG9zaXRlTGF5ZXJzVG9Db250ZXh0KENvbXBvc2l0ZVB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBp
ZiAoIXByZXBhcmVGb3JSZW5kZXJpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVDVCBy
OworICAgIDo6R2V0Q2xpZW50UmVjdChtX3dpbmRvdywgJnIpOworICAgIEludFNpemUgd2luZG93
U2l6ZShyLnJpZ2h0LCByLmJvdHRvbSk7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCB3aW5kb3dTaXpl
LndpZHRoKCksIHdpbmRvd1NpemUuaGVpZ2h0KCkpOworCisgICAgaWYgKHB1cnBvc2UgPT0gRm9y
UmVzaXplKSB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigxLCAxLCAxLCAwKTsKKyAgICAgICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB9CisKKyAgICBtX3RleHR1cmVNYXBwZXIt
PmJlZ2luUGFpbnRpbmcoKTsKKyAgICB0b1RleHR1cmVNYXBwZXJMYXllcihtX3Jvb3RMYXllci5n
ZXQoKSktPnBhaW50KCk7CisgICAgbV9mcHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkobV90
ZXh0dXJlTWFwcGVyLmdldCgpKTsKKyAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7
CisKKyAgICBtX2NvbnRleHQtPnN3YXBCdWZmZXJzKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIq
IGdyYXBoaWNzTGF5ZXIpCit7CisgICAgcHJlcGFyZUZvclJlbmRlcmluZygpOworCisgICAgaWYg
KCFncmFwaGljc0xheWVyKSB7CisgICAgICAgIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOwor
ICAgICAgICBtX3Jvb3RMYXllciA9IG51bGxwdHI7CisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRMYXllciA9IG51bGxwdHI7CisgICAgICAgIG1fdGV4dHVyZU1hcHBlciA9IG51bGxwdHI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBBZGQgdGhlIGFjY2VsZXJhdGVkIGxh
eWVyIHRyZWUgaGllcmFyY2h5LgorICAgIGluaXRpYWxpemUoKTsKKyAgICBpZiAoIW1fd2luZG93
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnJl
bW92ZUFsbENoaWxkcmVuKCk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5hZGRD
aGlsZChncmFwaGljc0xheWVyKTsKKworICAgIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOwor
CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGNvbnN0IElu
dFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFtX3Jvb3RMYXllcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChyZWN0LmlzRW1wdHkoKSkgeworICAgICAgICBtX3Jvb3RMYXllci0+c2V0TmVlZHNE
aXNwbGF5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldE5l
ZWRzRGlzcGxheUluUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghbV9yb290
TGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgbV9yb290TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fcm9vdExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CisgICAgc2No
ZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OnJlc2l6ZVJvb3RMYXllcihjb25zdCBJbnRTaXplJiBuZXdTaXplKQoreworICAgIGlmICgh
ZW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9yb290TGF5ZXItPnNpemUo
KSA9PSBuZXdTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Jvb3RMYXllci0+c2V0U2l6
ZShuZXdTaXplKTsKKworICAgIC8vIElmIHRoZSBuZXdTaXplIGV4cG9zZXMgbmV3IGFyZWFzIG9m
IHRoZSBub24tY29tcG9zaXRlZCBjb250ZW50IGEgc2V0TmVlZHNEaXNwbGF5IGlzIG5lZWRlZAor
ICAgIC8vIGZvciB0aG9zZSBuZXdseSBleHBvc2VkIGFyZWFzLgorICAgIEZsb2F0U2l6ZSBvbGRT
aXplID0gbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zaXplKCk7CisgICAgbV9ub25Db21w
b3NpdGVkQ29udGVudExheWVyLT5zZXRTaXplKG5ld1NpemUpOworCisgICAgaWYgKG5ld1NpemUu
d2lkdGgoKSA+IG9sZFNpemUud2lkdGgoKSkgeworICAgICAgICBmbG9hdCBoZWlnaHQgPSBzdGQ6
Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4obmV3U2l6ZS5oZWlnaHQoKSksIG9sZFNpemUuaGVpZ2h0
KCkpOworICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxh
eUluUmVjdChGbG9hdFJlY3Qob2xkU2l6ZS53aWR0aCgpLCAwLCBuZXdTaXplLndpZHRoKCkgLSBv
bGRTaXplLndpZHRoKCksIGhlaWdodCkpOworICAgIH0KKworICAgIGlmIChuZXdTaXplLmhlaWdo
dCgpID4gb2xkU2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0KDAsIG9sZFNpemUuaGVpZ2h0KCks
IG5ld1NpemUud2lkdGgoKSwgbmV3U2l6ZS5oZWlnaHQoKSAtIG9sZFNpemUuaGVpZ2h0KCkpKTsK
KworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0
KEludFJlY3QoSW50UG9pbnQoKSwgbmV3U2l6ZSkpOworICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29u
dGV4dChGb3JSZXNpemUpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMo
Y29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgLyogc2Nyb2xsT2Zmc2V0
ICovKQoreworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5
KCk7CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCit7CisgICAgaWYgKCFlbmFibGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2xheWVyRmx1c2hUaW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheWVyRmx1c2hUaW1lci5zdGFydE9uZVNo
b3QoMCk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVu
ZGluZ0xheWVyQ2hhbmdlcygpCit7CisgICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIt
PmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICByZXR1cm4gY29y
ZShtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS52aWV3KCktPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUlu
Y2x1ZGluZ1N1YmZyYW1lcygpOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNTb29uKCkKK3sKKyAgICBzY2hlZHVsZUxheWVy
Rmx1c2goKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6Zmx1c2hBbmRSZW5kZXJMYXllcnMoKQoreworICAgIGlmICghZW5hYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBGcmFtZSYgZnJhbWUgPSBjb3JlKG1fd2ViVmlldykt
Pm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUuY29udGVudFJlbmRlcmVyKCkgfHwgIWZyYW1l
LnZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLnZpZXcoKS0+dXBkYXRlTGF5b3V0
QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworCisgICAgaWYgKCFlbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZmx1c2hQZW5kaW5nTGF5
ZXJDaGFuZ2VzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29u
dGV4dCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpsYXllckZs
dXNoVGltZXJGaXJlZCgpCit7CisgICAgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKKworICAgIC8v
IEluIGNhc2UgYW4gYW5pbWF0aW9uIGlzIHJ1bm5pbmcsIHdlIHNob3VsZCBmbHVzaCBhZ2FpbiBz
b29uLgorICAgIGlmIChzdGFydGVkQW5pbWF0aW9uKG1fcm9vdExheWVyLmdldCgpKSkKKyAgICAg
ICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdFRvUGFpbnQpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5jbGlw
KHJlY3RUb1BhaW50KTsKKyAgICBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgpLnZpZXcoKS0+
cGFpbnQoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdFRvUGFpbnQpKTsKKyAgICBjb250
ZXh0LnJlc3RvcmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAorI2RlZmluZSBBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dF9oCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFw
cGVyRlBTQ291bnRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorCitjbGFzcyBXZWJWaWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgOiBwdWJsaWMgV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQpOworcHVibGljOgorICAgIGV4cGxpY2l0IEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0KFdlYlZpZXcqKTsKKyAgICB2aXJ0dWFsIH5BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dCgpOworCisgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CisgICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVu
dHNOZWVkRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdm9pZCBzZXROZWVk
c0Rpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZvaWQgc2NoZWR1
bGVMYXllckZsdXNoKCk7CisgICAgdm9pZCByZXNpemVSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpOworICAgIGJvb2wgZW5hYmxlZCgpOworCisgICAgLy8gR3JhcGhpY3NMYXllckNs
aWVudAorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0VG9QYWludCk7
CisKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKworICAgIGVudW0gQ29tcG9zaXRlUHVycG9zZSB7
IEZvclJlc2l6ZSwgTm90Rm9yUmVzaXplIH07CisgICAgdm9pZCBjb21wb3NpdGVMYXllcnNUb0Nv
bnRleHQoQ29tcG9zaXRlUHVycG9zZSA9IE5vdEZvclJlc2l6ZSk7CisKKyAgICB2b2lkIGZsdXNo
QW5kUmVuZGVyTGF5ZXJzKCk7CisgICAgYm9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsK
KyAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKTsKKyAgICB2b2lkIHNjcm9s
bE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpOworCitwcml2YXRlOgorICAg
IFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBPd25QdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBtX2Nv
bnRleHQ7CisgICAgSFdORCBtX3dpbmRvdzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
R3JhcGhpY3NMYXllcj4gbV9yb290TGF5ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6VGV4dHVyZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOworICAgIFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyIG1fZnBzQ291bnRlcjsKKworICAgIGNsYXNz
IExheWVyRmx1c2hUaW1lciA6IHB1YmxpYyBXZWJDb3JlOjpUaW1lckJhc2UgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgTGF5ZXJGbHVzaFRpbWVyKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
JiBjb250ZXh0KQorICAgICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2NvbnRleHQubGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsK
KyAgICAgICAgfQorCisgICAgICAgIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0JiBtX2Nv
bnRleHQ7CisgICAgfSBtX2xheWVyRmx1c2hUaW1lcjsKKworICAgIHZvaWQgbGF5ZXJGbHVzaFRp
bWVyRmlyZWQoKTsKKyAgICB2b2lkIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOworICAgIGJv
b2wgcHJlcGFyZUZvclJlbmRlcmluZygpOworICAgIGJvb2wgc3RhcnRlZEFuaW1hdGlvbihXZWJD
b3JlOjpHcmFwaGljc0xheWVyKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFRFWFRVUkVfTUFQUEVSX0dMCisKKyNlbmRpZiAvLyBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240025</attachid>
            <date>2014-10-17 11:31:50 -0700</date>
            <delta_ts>2014-10-17 11:53:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137345-20141017203136.patch</filename>
            <type>text/plain</type>
            <size>32153</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDY4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTEwLTE3ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gQWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBH
VEssIGFuZCB0aGUgdGV4dHVyZSBtYXBwZXIgZ3JhcGhpY3MgbGF5ZXIgdHlwZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kOiBDb3B5IHRleG1h
cCBoZWFkZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHA6IEFkZGVkIG1ldGhvZCBhbmQgZmxhZyBpbmRpY2F0aW5nIHdo
ZXRoZXIgYW5pbWF0aW9uIGhhcyBzdGFydGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzdGFydGVkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOiBVc2Ugc2FtZSBwcmVjaXNpb24gZm9yIHVu
aWZvcm0gaW4gdmVydGV4IHNoYWRlciBhcyBpbiBmcmFnbWVudCBzaGFkZXIuCisgICAgICAgIE90
aGVyd2lzZSBnbExpbmtQcm9ncmFtKCkgd2lsbCBmYWlsLCBhbmQgbm90aGluZyB3aWxsIGJlIHJl
bmRlcmVkLgorCiAyMDE0LTEwLTE0ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIE11bHRpcGxlIHJlZmFjdG9ycyBpbiBSZW5kZXJNYXRoTUxPcGVyYXRv
cgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVh
ZGVycy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2Nv
cHlGb3J3YXJkaW5nSGVhZGVycy5jbWQJKHJldmlzaW9uIDE3NDgxMikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw2ICs1OCw4IEBAIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9y
bVxncmEKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5c
Ki5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblwlMVwqLmgiICIlQ09ORklH
VVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3RE
aXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncb3BlbnR5cGVcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgoreGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRm
b3JtXGdyYXBoaWNzXG9wZW5nbFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRl
XFdlYkNvcmUiCit4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
dGV4bWFwXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhj
b3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxtb2NrXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxwbGF0Zm9ybVx0ZXh0XCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2Vi
Q29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVx0ZXh0XGljdVwqLmgi
ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCkBAIC0xMDYsNyArMTA4
LDcgQEAgeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXEZvcndhcmRpbmdIZQogeGNvcHkgL3kg
L2QgIiVQcm9qZWN0RGlyJS4uXHRlc3RpbmdcanNcV2ViQ29yZVRlc3RTdXBwb3J0LmgiICIlQ09O
RklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmVUZXN0U3VwcG9ydCIKIAogc2V0IERl
cml2ZWRTb3VyY2VzRGlyZWN0b3J5PSVDT05GSUdVUkFUSU9OQlVJTERESVIlXG9iaiVQbGF0Zm9y
bUFyY2hpdGVjdHVyZSVcV2ViQ29yZVxEZXJpdmVkU291cmNlcwotc2V0IFByaXZhdGVIZWFkZXJz
RGlyZWN0b3J5PSVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVccHJpdmF0ZVxXZWJDb3Jl
DQorc2V0IFByaXZhdGVIZWFkZXJzRGlyZWN0b3J5PSVDT05GSUdVUkFUSU9OQlVJTERESVIlXGlu
Y2x1ZGVccHJpdmF0ZVxXZWJDb3JlCiB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5
JVxJbnNwZWN0b3JXZWJCYWNrZW5kQ29tbWFuZHMuanMiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3Rv
cnklIgogCiBpZiBleGlzdCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcYnVpbGRmYWlsZWQiIGRl
bCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcYnVpbGRmYWlsZWQiCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAJKHJldmlzaW9uIDE3NDgxMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZQogICAgICwgbV9jb250ZW50c0xheWVyKDApCiAg
ICAgLCBtX2FuaW1hdGlvblN0YXJ0VGltZSgwKQogICAgICwgbV9pc1Njcm9sbGFibGUoZmFsc2Up
CisgICAgLCBtX3N0YXJ0ZWRBbmltYXRpb24oZmFsc2UpCiB7CiB9CiAKQEAgLTU5MSw2ICs1OTIs
NyBAQCBib29sIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltCiAgICAgICAgIG1f
YW5pbWF0aW9uU3RhcnRUaW1lID0gY3VycmVudFRpbWUgLSB0aW1lT2Zmc2V0OwogICAgIG5vdGlm
eUNoYW5nZShBbmltYXRpb25DaGFuZ2UpOwogICAgIG5vdGlmeUNoYW5nZShBbmltYXRpb25TdGFy
dGVkKTsKKyAgICBtX3N0YXJ0ZWRBbmltYXRpb24gPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAkocmV2aXNp
b24gMTc0ODEyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAs
OCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVidWdCb3JkZXJXaWR0aDsgfQogICAgIHZvaWQgc2V0UmVwYWludENvdW50KGludCk7CiAK
KyAgICBib29sIHN0YXJ0ZWRBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0ZWRBbmlt
YXRpb247IH0KKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7
CiAKQEAgLTE3Nyw2ICsxNzksNyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX2NvbW1pdHRl
ZFNjcm9sbE9mZnNldDsKICAgICBib29sIG1faXNTY3JvbGxhYmxlOworICAgIGJvb2wgbV9zdGFy
dGVkQW5pbWF0aW9uOwogfTsKIAogaW5saW5lIHN0YXRpYyBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlciogdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyKiBsYXllcikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAkocmV2aXNp
b24gMTc0ODEyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIw
OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlID0KICAgICBBTlRJQUxJ
QVNJTkdfVEVYX0NPT1JEX0RJUkVDVElWRQogICAgIEJMVVJfQ09OU1RBTlRTCiAgICAgU1RSSU5H
SUZZKAorICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CisgICAgICAgIHVuaWZvcm0gbWF0
NCB1X3RleHR1cmVTcGFjZU1hdHJpeDsKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
CiAgICAgICAgIHVuaWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOwogICAgICAgICB1bmlmb3Jt
IHNhbXBsZXIyRCBzX2NvbnRlbnRUZXh0dXJlOwpAQCAtMjIwLDcgKzIyMiw2IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlID0KICAgICAgICAgdW5pZm9ybSB2ZWMyIHVfc2hh
ZG93T2Zmc2V0OwogICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKICAgICAgICAgdW5pZm9y
bSBmbG9hdCB1X2dhdXNzaWFuS2VybmVsW0dBVVNTSUFOX0tFUk5FTF9IQUxGX1dJRFRIXTsKLSAg
ICAgICAgdW5pZm9ybSBtYXQ0IHVfdGV4dHVyZVNwYWNlTWF0cml4OwogCiAgICAgICAgIHZvaWQg
bm9vcChpbm91dCB2ZWM0IGR1bW15UGFyYW1ldGVyKSB7IH0KICAgICAgICAgdm9pZCBub29wKGlu
b3V0IHZlYzQgZHVtbXlQYXJhbWV0ZXIsIHZlYzIgdGV4Q29vcmQpIHsgfQpJbmRleDogU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE3NDgxMikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMTAtMTcgIHBlYXZvQG91dGxvb2suY29tICA8cGVh
dm9Ab3V0bG9vay5jb20+CisKKyAgICAgICAgW1dpbkNhaXJvXSBBY2NlbGVyYXRlZCBjb21wb3Np
dGluZyBpcyBub3QgaW1wbGVtZW50ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzczNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIEdUSywgYW5kIHRoZSB0ZXh0
dXJlIG1hcHBlciBncmFwaGljcyBsYXllciB0eXBlLgorCisgICAgICAgICogV2ViS2l0LnZjeHBy
b2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qOiBBZGRlZCBuZXcgYWNjZWxlcmF0ZWQgY29tcG9zaXRp
bmcgc291cmNlIGZpbGVzLgorICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQu
dmN4cHJvai5maWx0ZXJzOiBEaXR0by4KKwogMjAxNC0xMC0xNiAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgc2VsZWN0aW9uIHNlcnZp
Y2VzIG1lbnUgZm9yIExlZ2FjeSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZj
eHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9qCShyZXZpc2lvbiAxNzQ4MTIpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzIzLDYgKzMyMyw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2
NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdGF0aXN0aWNzLmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3
aW5cV2ViQ29yZVN1cHBvcnRcRW1iZWRkZWRXaWRnZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0XFdlYkNocm9tZUNsaWVudC5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcV2ViQ29u
dGV4dE1lbnVDbGllbnQuY3BwIiAvPgpAQCAtNDYwLDYgKzQ2MSw3IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb29raWVNYW5hZ2VyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN0YXRpc3RpY3MuaCIgLz4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
Li5cd2luXFdlYkNvcmVTdXBwb3J0XEVtYmVkZGVkV2lkZ2V0LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcV2ViQ2hyb21lQ2xpZW50LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcV2ViQ29u
dGV4dE1lbnVDbGllbnQuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ov
V2ViS2l0L1dlYktpdC52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24g
MTc0ODEyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZj
eHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw5IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5cQWNjZXNzaWJsZVRleHRJbXBsLmNwcCI+CiAgICAg
ICA8RmlsdGVyPlNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5jcHAiPgorICAgICAgPEZpbHRlcj5XZWJDb3JlU3VwcG9ydDwvRmlsdGVyPgor
ICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxFbWJlZGRlZFdpZGdldC5o
Ij4KQEAgLTUzNiw2ICs1MzksOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2lu
XEFjY2Vzc2libGVUZXh0SW1wbC5oIj4KICAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5c
V2ViQ29yZVN1cHBvcnRcQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCI+CisgICAgICA8
RmlsdGVyPldlYkNvcmVTdXBwb3J0PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRl
bUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxOb25lIEluY2x1ZGU9IldlYktpdFBvc3RCdWls
ZC5jbWQiIC8+CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzQ4MTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OSBAQAor
MjAxNC0xMC0xNyAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KKworICAg
ICAgICBbV2luQ2Fpcm9dIEFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIG5vdCBpbXBsZW1lbnRl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzM0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgYmFzZWQgb24gR1RLLCBhbmQgdGhlIHRleHR1cmUgbWFwcGVyIGdyYXBoaWNzIGxh
eWVyIHR5cGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpnZXRXZWJWaWV3U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6On5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdG9wQW55UGVu
ZGluZ0xheWVyRmx1c2gpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjpwcmVwYXJlRm9yUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnN0YXJ0ZWRBbmltYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y29tcG9zaXRlTGF5ZXJzVG9Db250
ZXh0KToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNl
dFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KToKKyAg
ICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldE5lZWRzRGlz
cGxheUluUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0OjpyZXNpemVSb290TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKToKKyAgICAgICAgKFdl
YktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNjaGVkdWxlTGF5ZXJGbHVzaCk6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaFBl
bmRpbmdMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbik6CisgICAgICAgIChXZWJL
aXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaEFuZFJlbmRlckxheWVycyk6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpsYXllckZs
dXNoVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0Ojpub3RpZnlBbmltYXRpb25TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om5vdGlmeUZsdXNoUmVxdWlyZWQpOgorICAgICAgICAo
V2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpM
YXllckZsdXNoVGltZXI6OkxheWVyRmx1c2hUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpMYXllckZsdXNoVGltZXI6OmZpcmVkKToKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAo
V2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lvbik6CisgICAgICAgIChXZWJWaWV3OjpzY3JvbGxCYWNr
aW5nU3RvcmUpOgorICAgICAgICAoV2ViVmlldzo6c2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Vmlldzo6cGFpbnQpOgorICAgICAgICAoV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIpOgorICAg
ICAgICAoV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKToKKyAg
ICAgICAgKFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorICAgICAgICAqIFdl
YlZpZXcuaDoKKwogMjAxNC0xMC0xNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3NDc1NC4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxNzQ4MTIpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw4IEBACiAjaWYgVVNF
KENBKQogI2luY2x1ZGUgPFdlYkNvcmUvQ0FDRkxheWVyVHJlZUhvc3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQor
I2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTQwOSw2ICs0MTEsOSBAQCBXZWJWaWV3OjpXZWJW
aWV3KCkKICAgICAsIG1fbGFzdFNldEN1cnNvcigwKQogICAgICwgbV91c2VzTGF5ZXJlZFdpbmRv
dyhmYWxzZSkKICAgICAsIG1fbmVlZHNEaXNwbGF5KGZhbHNlKQorI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKKyAgICAsIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQobnVsbHB0cikK
KyNlbmRpZgogewogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKQEAgLTg2MCw3ICs4NjUsMTEgQEAgdm9pZCBXZWJWaWV3Ojph
ZGRUb0RpcnR5UmVnaW9uKGNvbnN0IEludAogICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMjkz
NTAuCiAKICAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKKyNpZiBVU0UoQ0Ep
CiAgICAgICAgIG1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoZGlydHlSZWN0
KTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7CisjZW5k
aWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODk1LDcgKzkwNCwxMSBAQCB2b2lkIFdl
YlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZG9pbmcgc29t
ZXRoaW5nIHNtYXJ0ZXIgaGVyZSwgbGlrZSBtb3ZpbmcgdGlsZXMgYXJvdW5kIGFuZCBwYWludGlu
ZwogICAgICAgICAvLyBhbnkgbmV3bHktZXhwb3NlZCB0aWxlcy4gPGh0dHA6Ly93ZWJraXQub3Jn
L2IvNTI3MTQ+CisjaWYgVVNFKENBKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KHNjcm9sbFZpZXdSZWN0KTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2Nyb2xsTm9uQ29t
cG9zaXRlZENvbnRlbnRzKHNjcm9sbFZpZXdSZWN0LCBJbnRTaXplKGR4LCBkeSkpOworI2VuZGlm
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk1MiwxMCArOTY1LDE0IEBAIHZvaWQgV2Vi
Vmlldzo6c2l6ZUNoYW5nZWQoY29uc3QgSW50U2l6ZSYKICNpZiBVU0UoQ0EpCiAgICAgaWYgKG1f
bGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5yZXNpemUoKTsKKwogICAg
IGlmIChtX2JhY2tpbmdMYXllcikgewogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0U2l6ZShu
ZXdTaXplKTsKICAgICAgICAgbV9iYWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAg
IH0KKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBpZiAobV9hY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dC0+cmVzaXplUm9vdExheWVyKG5ld1NpemUpOwogI2VuZGlmCiB9CiAKQEAgLTEwODQsMTggKzEx
MDEsMjIgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRpbwogewogICAg
IExPQ0FMX0dESV9DT1VOVEVSKDAsIF9fRlVOQ1RJT05fXyk7CiAKLSNpZiBVU0UoQ0EpCiAgICAg
aWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpICYmICF1c2VzTGF5ZXJlZFdpbmRvdygpKSB7
CisjaWYgVVNFKENBKQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlc05vdygpOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgICAgICBtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5mbHVzaEFuZFJlbmRlckxheWVycygpOworI2Vu
ZGlmCiAgICAgICAgIC8vIEZsdXNoaW5nIG1pZ2h0IGhhdmUgdGFrZW4gdXMgb3V0IG9mIGNvbXBv
c2l0aW5nIG1vZGUuCiAgICAgICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgewor
I2lmIFVTRShDQSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHBhaW50IGludG8g
ZGMgKGlmIHByb3ZpZGVkKS4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI1Nzg+CiAgICAgICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnBhaW50KCk7CisjZW5kaWYKICAgICAgICAgICAgIDo6VmFsaWRh
dGVSZWN0KG1fdmlld1dpbmRvdywgMCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9Ci0jZW5kaWYKIAogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZyYW1l
KTsKICAgICBpZiAoIWNvcmVGcmFtZSkKQEAgLTIzOTMsOCArMjQxNCwxMCBAQCBMUkVTVUxUIENB
TExCQUNLIFdlYlZpZXc6OldlYlZpZXdXbmRQcm9jCiAgICAgICAgICAgICAgICAgUkVDVCB3aW5k
b3dSZWN0OwogICAgICAgICAgICAgICAgIDo6R2V0Q2xpZW50UmVjdChoV25kLCAmd2luZG93UmVj
dCk7CiAgICAgICAgICAgICAgICAgOjpJbnZhbGlkYXRlUmVjdChoV25kLCAmd2luZG93UmVjdCwg
ZmFsc2UpOworI2lmIFVTRShDQSkKICAgICAgICAgICAgICAgICBpZiAod2ViVmlldy0+aXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKCkpCiAgICAgICAgICAgICAgICAgICAgIHdlYlZpZXctPm1fYmFj
a2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyNlbmRpZgogICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXTV9NT1VTRUFDVElWQVRFOgpAQCAtNjU1MSw5
ICs2NTc0LDE1IEBAIHZvaWQgV2ViVmlldzo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwKIHZv
aWQgV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAg
ICAgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhsYXllciA/IHRydWUgOiBmYWxzZSk7CisjaWYg
VVNFKENBKQogICAgIGlmICghbV9iYWNraW5nTGF5ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2JhY2tpbmdMYXllci0+YWRkQ2hpbGQobGF5ZXIpOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorICAgIGlmICghbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldFJvb3RDb21w
b3NpdGluZ0xheWVyKGxheWVyKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXc6OmZsdXNoUGVu
ZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpCkBAIC02NTYyLDEzICs2NTkxLDIwIEBAIHZv
aWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckMKICAgICBpZiAoIW1fbGF5ZXJU
cmVlSG9zdCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5k
aW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCisgICAgaWYgKCFtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQorICAgICAgICBy
ZXR1cm47CisgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hQZW5kaW5n
TGF5ZXJDaGFuZ2VzU29vbigpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogeworICAgIGlmIChtX2lzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZyA9PSBhY2NlbGVyYXRlZCkKKyAgICAgICAgcmV0dXJuOworCiAjaWYg
VVNFKENBKQotICAgIGlmIChtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9PSBhY2NlbGVyYXRl
ZCB8fCAhQ0FDRkxheWVyVHJlZUhvc3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUo
KSkKKyAgICBpZiAoIUNBQ0ZMYXllclRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZh
aWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhY2NlbGVyYXRlZCkgewpAQCAt
NjYwOCw2ICs2NjQ0LDEwIEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZygKICAgICAgICAgbV9iYWNraW5nTGF5ZXIgPSBudWxscHRyOwogICAgICAgICBtX2lzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZyA9IGZhbHNlOwogICAgIH0KKyNlbGlmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKKyAgICBpZiAoYWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQpCisgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CisgICAgbV9p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRlZDsKICNlbmRpZgogfQogCkBAIC02
NzUyLDE0ICs2NzkyLDE4IEBAIHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXll
ckMKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybjsKKyNpZiBVU0UoQ0EpCiAgICAgaWYgKCFtX2JhY2tpbmdMYXll
cikKICAgICAgICAgcmV0dXJuOworI2VuZGlmCiAKICAgICB2aWV3LT51cGRhdGVMYXlvdXRBbmRT
dHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiAKKyNpZiBVU0UoQ0EpCiAgICAgLy8gVXBkYXRpbmcg
bGF5b3V0IG1pZ2h0IGhhdmUgdGFrZW4gdXMgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUuCiAgICAg
aWYgKG1fYmFja2luZ0xheWVyKQogICAgICAgICBtX2JhY2tpbmdMYXllci0+Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworI2VuZGlmCiAKICAgICB2aWV3LT5mbHVzaENv
bXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmgJKHJldmlzaW9uIDE3NDgxMikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOSBAQCBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBj
bGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNs
aWVudDsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCitjbGFzcyBBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDsKKyNlbmRpZgogCiBXZWJWaWV3KiBraXQoV2ViQ29yZTo6UGFnZSopOwog
V2ViQ29yZTo6UGFnZSogY29yZShJV2ViVmlldyopOwpAQCAtMTEzNiw4ICsxMTM5LDEwIEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCk7CiAjaWYg
VVNFKENBKQogICAgIFJlZlB0cjxXZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRy
ZWVIb3N0OwotI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI+IG1fYmFja2luZ0xheWVyOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4gbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dDsKKyNlbmRpZgogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmc7CiAKICAgICBib29sIG1fbmV4dERpc3BsYXlJc1N5bmNocm9ub3VzOwpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSwgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCIKKworI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKworI2luY2x1ZGUgIldlYlZpZXcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFw
cGVyR0wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJMYXllci5oPgorCisjaWYg
VVNFKE9QRU5HTF9FU18yKQorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2Vsc2UKKyNpbmNsdWRl
IDxHTC9nbC5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2Vi
VmlldyYgd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV9sYXllckZs
dXNoVGltZXIoKnRoaXMpCisgICAgLCBtX2NvbnRleHQobnVsbHB0cikKKyAgICAsIG1fd2luZG93
KDApCit7Cit9CisKK3N0YXRpYyBJbnRTaXplIGdldFdlYlZpZXdTaXplKFdlYlZpZXcmIHdlYlZp
ZXcpCit7CisgICAgUkVDVCByOworICAgIHdlYlZpZXcuZnJhbWVSZWN0KCZyKTsKKyAgICByZXR1
cm4gSW50U2l6ZShyLnJpZ2h0IC0gci5sZWZ0LCByLmJvdHRvbSAtIHIudG9wKTsKK30KKwordm9p
ZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSgpCit7CisgICAgaWYg
KG1fcm9vdExheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHBhZ2VTaXplID0g
Z2V0V2ViVmlld1NpemUobV93ZWJWaWV3KTsKKworICAgIG1fd2luZG93ID0gbV93ZWJWaWV3LnZp
ZXdXaW5kb3coKTsKKworICAgIGlmICghbV93aW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG51bGxwdHIsICp0aGlzKTsKKyAg
ICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKyAgICBtX3Jvb3RMYXllci0+
c2V0U2l6ZShwYWdlU2l6ZSk7CisKKyAgICAvLyBUaGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudHMg
YXJlIGEgY2hpbGQgb2YgdGhlIHJvb3QgbGF5ZXIuCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVu
dExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG51bGxwdHIsICp0aGlzKTsKKyAgICBtX25v
bkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBtX25v
bkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldENvbnRlbnRzT3BhcXVlKCFtX3dlYlZpZXcudHJh
bnNwYXJlbnQoKSk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRTaXplKHBh
Z2VTaXplKTsKKyAgICBpZiAoY29yZSgmbV93ZWJWaWV3KS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRl
ZERyYXdpbmdFbmFibGVkKCkpCisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+
c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKHRydWUpOworCisjaWZuZGVmIE5ERUJVRworICAgIG1fcm9v
dExheWVyLT5zZXROYW1lKCJSb290IGxheWVyIik7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVu
dExheWVyLT5zZXROYW1lKCJOb24tY29tcG9zaXRlZCBjb250ZW50Iik7CisjZW5kaWYKKworICAg
IG1fcm9vdExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkp
OworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisK
KyAgICAvLyBUaGUgY3JlYXRpb24gb2YgdGhlIFRleHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZl
IE9wZW5HTCBjb250ZXh0LgorICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQg
PSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cobV93aW5kb3csIEdMQ29udGV4dDo6
c2hhcmluZ0NvbnRleHQoKSk7CisKKyAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
OworCisgICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoVGV4dHVy
ZU1hcHBlcjo6T3BlbkdMTW9kZSk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4o
bV90ZXh0dXJlTWFwcGVyLmdldCgpKS0+c2V0RW5hYmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5n
KHRydWUpOworICAgIHRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdldCgpKS0+c2V0
VGV4dHVyZU1hcHBlcihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOworCisgICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7Cit9CisKK0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQoKQoreworICAgIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgp
OworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdG9wQW55UGVuZGlu
Z0xheWVyRmx1c2goKQoreworICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnN0b3AoKTsKK30KKworYm9v
bCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZW5hYmxlZCgpCit7CisgICAgcmV0dXJu
IG1fd2luZG93ICYmIG1fcm9vdExheWVyICYmIG1fdGV4dHVyZU1hcHBlcjsKK30KKworYm9vbCBB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cHJlcGFyZUZvclJlbmRlcmluZygpCit7Cisg
ICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9j
b250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdGFydGVkQW5p
bWF0aW9uKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQoreworICAgIGlmICghbGF5ZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh0b0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyKGxheWVyKS0+c3RhcnRlZEFuaW1hdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGZvciAoYXV0byBjaGlsZExheWVyIDogbGF5ZXItPmNoaWxkcmVuKCkpIHsKKyAgICAg
ICAgaWYgKHN0YXJ0ZWRBbmltYXRpb24oY2hpbGRMYXllcikpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChDb21wb3NpdGVQdXJw
b3NlIHB1cnBvc2UpCit7CisgICAgaWYgKCFwcmVwYXJlRm9yUmVuZGVyaW5nKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIFJFQ1QgcjsKKyAgICBpZiAoITo6R2V0Q2xpZW50UmVjdChtX3dpbmRv
dywgJnIpKQorICAgICAgICByZXR1cm47CisgICAgSW50U2l6ZSB3aW5kb3dTaXplKHIucmlnaHQs
IHIuYm90dG9tKTsKKyAgICBnbFZpZXdwb3J0KDAsIDAsIHdpbmRvd1NpemUud2lkdGgoKSwgd2lu
ZG93U2l6ZS5oZWlnaHQoKSk7CisKKyAgICBpZiAocHVycG9zZSA9PSBGb3JSZXNpemUpIHsKKyAg
ICAgICAgVGVtcG9yYXJ5T3BlbkdMU2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVT
VCwgR0xfRkFMU0UpOworICAgICAgICBnbENsZWFyQ29sb3IoMSwgMSwgMSwgMCk7CisgICAgICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQorCisgICAgbV90ZXh0dXJlTWFw
cGVyLT5iZWdpblBhaW50aW5nKCk7CisgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5
ZXIuZ2V0KCkpLT5wYWludCgpOworICAgIG1fZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5
KG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CisgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGlu
ZygpOworCisgICAgbV9jb250ZXh0LT5zd2FwQnVmZmVycygpOworfQorCit2b2lkIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihHcmFwaGljc0xh
eWVyKiBncmFwaGljc0xheWVyKQoreworICAgIHByZXBhcmVGb3JSZW5kZXJpbmcoKTsKKworICAg
IGlmICghZ3JhcGhpY3NMYXllcikgeworICAgICAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1c2go
KTsKKyAgICAgICAgbV9yb290TGF5ZXIgPSBudWxscHRyOworICAgICAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50TGF5ZXIgPSBudWxscHRyOworICAgICAgICBtX3RleHR1cmVNYXBwZXIgPSBudWxs
cHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQWRkIHRoZSBhY2NlbGVyYXRl
ZCBsYXllciB0cmVlIGhpZXJhcmNoeS4KKyAgICBpbml0aWFsaXplKCk7CisgICAgaWYgKCFtX3dp
bmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVy
LT5yZW1vdmVBbGxDaGlsZHJlbigpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+
YWRkQ2hpbGQoZ3JhcGhpY3NMYXllcik7CisKKyAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1c2go
KTsKKworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25z
dCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghbV9yb290TGF5ZXIpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9yb290TGF5ZXItPnNldE5l
ZWRzRGlzcGxheSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpz
ZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW1f
cm9vdExheWVyKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIG1fcm9vdExheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBtX3Jvb3RMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAg
IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0OjpyZXNpemVSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3sKKyAgICBp
ZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcm9vdExheWVyLT5z
aXplKCkgPT0gbmV3U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yb290TGF5ZXItPnNl
dFNpemUobmV3U2l6ZSk7CisKKyAgICAvLyBJZiB0aGUgbmV3U2l6ZSBleHBvc2VzIG5ldyBhcmVh
cyBvZiB0aGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBhIHNldE5lZWRzRGlzcGxheSBpcyBuZWVk
ZWQKKyAgICAvLyBmb3IgdGhvc2UgbmV3bHkgZXhwb3NlZCBhcmVhcy4KKyAgICBGbG9hdFNpemUg
b2xkU2l6ZSA9IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2l6ZSgpOworICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKKworICAgIGlmIChuZXdT
aXplLndpZHRoKCkgPiBvbGRTaXplLndpZHRoKCkpIHsKKyAgICAgICAgZmxvYXQgaGVpZ2h0ID0g
c3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5ld1NpemUuaGVpZ2h0KCkpLCBvbGRTaXplLmhl
aWdodCgpKTsKKyAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rp
c3BsYXlJblJlY3QoRmxvYXRSZWN0KG9sZFNpemUud2lkdGgoKSwgMCwgbmV3U2l6ZS53aWR0aCgp
IC0gb2xkU2l6ZS53aWR0aCgpLCBoZWlnaHQpKTsKKyAgICB9CisKKyAgICBpZiAobmV3U2l6ZS5o
ZWlnaHQoKSA+IG9sZFNpemUuaGVpZ2h0KCkpCisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KEZsb2F0UmVjdCgwLCBvbGRTaXplLmhlaWdo
dCgpLCBuZXdTaXplLndpZHRoKCksIG5ld1NpemUuaGVpZ2h0KCkgLSBvbGRTaXplLmhlaWdodCgp
KSk7CisKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUlu
UmVjdChJbnRSZWN0KEludFBvaW50KCksIG5ld1NpemUpKTsKKyAgICBjb21wb3NpdGVMYXllcnNU
b0NvbnRleHQoRm9yUmVzaXplKTsKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30KKwordm9p
ZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHNjcm9sbE9m
ZnNldCAqLykKK3sKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlz
cGxheSgpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0OjpzY2hlZHVsZUxheWVyRmx1c2goKQoreworICAgIGlmICghZW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9sYXllckZsdXNoVGltZXIuaXNB
Y3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXllckZsdXNoVGltZXIuc3RhcnRP
bmVTaG90KDApOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMoKQoreworICAgIG1fcm9vdExheWVyLT5mbHVzaENvbXBvc2l0
aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExh
eWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisgICAgcmV0dXJu
IGNvcmUoJm1fd2ViVmlldyktPm1haW5GcmFtZSgpLnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0
YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc1Nvb24oKQoreworICAgIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpmbHVzaEFuZFJlbmRlckxheWVycygpCit7CisgICAgaWYgKCFlbmFi
bGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lJiBmcmFtZSA9IGNvcmUoJm1fd2Vi
VmlldyktPm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUuY29udGVudFJlbmRlcmVyKCkgfHwg
IWZyYW1lLnZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLnZpZXcoKS0+dXBkYXRl
TGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworCisgICAgaWYgKCFlbmFibGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbXBvc2l0ZUxheWVy
c1RvQ29udGV4dCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojps
YXllckZsdXNoVGltZXJGaXJlZCgpCit7CisgICAgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKKwor
ICAgIC8vIEluIGNhc2UgYW4gYW5pbWF0aW9uIGlzIHJ1bm5pbmcsIHdlIHNob3VsZCBmbHVzaCBh
Z2FpbiBzb29uLgorICAgIGlmIChzdGFydGVkQW5pbWF0aW9uKG1fcm9vdExheWVyLmdldCgpKSkK
KyAgICAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdFRvUGFpbnQpCit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4
dC5jbGlwKHJlY3RUb1BhaW50KTsKKyAgICBjb3JlKCZtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS52
aWV3KCktPnBhaW50KCZjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3RUb1BhaW50KSk7Cisg
ICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKKyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRfaAorI2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dF9oCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Zs
b2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xp
ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
CitjbGFzcyBXZWJWaWV3OworCitjbGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA6
IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2ViVmlldyYpOworICAgIHZpcnR1
YWwgfkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KCk7CisKKyAgICB2b2lkIHNldFJvb3RD
b21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2b2lkIHNldE5v
bkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsK
KyAgICB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
CisgICAgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICB2b2lkIHJlc2l6ZVJvb3RMYXll
cihjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgYm9vbCBlbmFibGVkKCk7CisKKyAgICAv
LyBHcmFwaGljc0xheWVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHJlY3RUb1BhaW50KTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworCisgICAgZW51bSBD
b21wb3NpdGVQdXJwb3NlIHsgRm9yUmVzaXplLCBOb3RGb3JSZXNpemUgfTsKKyAgICB2b2lkIGNv
bXBvc2l0ZUxheWVyc1RvQ29udGV4dChDb21wb3NpdGVQdXJwb3NlID0gTm90Rm9yUmVzaXplKTsK
KworICAgIHZvaWQgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKKyAgICBib29sIGZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlcygpOworICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbigp
OworICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7
CisKK3ByaXZhdGU6CisgICAgV2ViVmlldyYgbV93ZWJWaWV3OworICAgIE93blB0cjxXZWJDb3Jl
OjpHTENvbnRleHQ+IG1fY29udGV4dDsKKyAgICBIV05EIG1fd2luZG93OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ub25Db21wb3NpdGVkQ29udGVudExh
eWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1
cmVNYXBwZXI7CisgICAgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIgbV9mcHNDb3Vu
dGVyOworCisgICAgY2xhc3MgTGF5ZXJGbHVzaFRpbWVyIDogcHVibGljIFdlYkNvcmU6OlRpbWVy
QmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBMYXllckZsdXNoVGltZXIoQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1
YWwgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5sYXllckZs
dXNoVGltZXJGaXJlZCgpOworICAgICAgICB9CisKKyAgICAgICAgQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQmIG1fY29udGV4dDsKKyAgICB9IG1fbGF5ZXJGbHVzaFRpbWVyOworCisgICAg
dm9pZCBsYXllckZsdXNoVGltZXJGaXJlZCgpOworICAgIHZvaWQgc3RvcEFueVBlbmRpbmdMYXll
ckZsdXNoKCk7CisgICAgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nKCk7CisgICAgYm9vbCBzdGFy
dGVkQW5pbWF0aW9uKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKK307CisKKyNlbmRpZiAvLyBU
RVhUVVJFX01BUFBFUl9HTAorCisjZW5kaWYgLy8gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240028</attachid>
            <date>2014-10-17 11:54:04 -0700</date>
            <delta_ts>2014-10-17 12:50:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137345-20141017205352.patch</filename>
            <type>text/plain</type>
            <size>31505</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDgyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTEwLTE3ICBwZWF2b0Bv
dXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gQWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgbm90IGltcGxlbWVudGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBH
VEssIGFuZCB0aGUgdGV4dHVyZSBtYXBwZXIgZ3JhcGhpY3MgbGF5ZXIgdHlwZS4KKworICAgICAg
ICAqIFdlYkNvcmUudmN4cHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kOiBDb3B5IHRleG1h
cCBoZWFkZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5jcHA6IEFkZGVkIG1ldGhvZCBhbmQgZmxhZyBpbmRpY2F0aW5nIHdo
ZXRoZXIgYW5pbWF0aW9uIGhhcyBzdGFydGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltYXRpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzdGFydGVkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOiBVc2Ugc2FtZSBwcmVjaXNpb24gZm9yIHVu
aWZvcm0gaW4gdmVydGV4IHNoYWRlciBhcyBpbiBmcmFnbWVudCBzaGFkZXIuCisgICAgICAgIE90
aGVyd2lzZSBnbExpbmtQcm9ncmFtKCkgd2lsbCBmYWlsLCBhbmQgbm90aGluZyB3aWxsIGJlIHJl
bmRlcmVkLgorCiAyMDE0LTEwLTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCB0aGUgaU9TIGJ1aWxkLgpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQJ
KHJldmlzaW9uIDE3NDgyNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9jb3B5
Rm9yd2FyZGluZ0hlYWRlcnMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBAIHhj
b3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVxncmEKIHhjb3B5IC95IC9kICIlUHJv
amVjdERpciUuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRm
b3JtXGdyYXBoaWNzXHdpblwlMVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRl
XFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3Nc
b3BlbnR5cGVcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgor
eGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW5nbFwqLmgi
ICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCit4Y29weSAveSAvZCAi
JVByb2plY3REaXIlLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUu
LlxwbGF0Zm9ybVxtb2NrXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2Vi
Q29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxwbGF0Zm9ybVx0ZXh0XCouaCIgIiVD
T05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJv
amVjdERpciUuLlxwbGF0Zm9ybVx0ZXh0XGljdVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElS
JVxpbmNsdWRlXFdlYkNvcmUiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAJKHJldmlzaW9uIDE3NDgyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDYgKzU0LDcgQEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBo
aWNzTGF5ZQogICAgICwgbV9jb250ZW50c0xheWVyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0
VGltZSgwKQogICAgICwgbV9pc1Njcm9sbGFibGUoZmFsc2UpCisgICAgLCBtX3N0YXJ0ZWRBbmlt
YXRpb24oZmFsc2UpCiB7CiB9CiAKQEAgLTU5MSw2ICs1OTIsNyBAQCBib29sIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjphZGRBbmltCiAgICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lID0g
Y3VycmVudFRpbWUgLSB0aW1lT2Zmc2V0OwogICAgIG5vdGlmeUNoYW5nZShBbmltYXRpb25DaGFu
Z2UpOwogICAgIG5vdGlmeUNoYW5nZShBbmltYXRpb25TdGFydGVkKTsKKyAgICBtX3N0YXJ0ZWRB
bmltYXRpb24gPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAkocmV2aXNpb24gMTc0ODI2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgZmxv
YXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsg
fQogICAgIHZvaWQgc2V0UmVwYWludENvdW50KGludCk7CiAKKyAgICBib29sIHN0YXJ0ZWRBbmlt
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0ZWRBbmltYXRpb247IH0KKwogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAKQEAgLTE3Nyw2ICsxNzksNyBA
QCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBtX2NvbW1pdHRlZFNjcm9sbE9mZnNldDsKICAgICBi
b29sIG1faXNTY3JvbGxhYmxlOworICAgIGJvb2wgbV9zdGFydGVkQW5pbWF0aW9uOwogfTsKIAog
aW5saW5lIHN0YXRpYyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogdG9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyKiBsYXllcikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAkocmV2aXNpb24gMTc0ODI2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw4IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBmcmFnbWVudFRlbXBsYXRlID0KICAgICBBTlRJQUxJQVNJTkdfVEVYX0NPT1JEX0RJUkVD
VElWRQogICAgIEJMVVJfQ09OU1RBTlRTCiAgICAgU1RSSU5HSUZZKAorICAgICAgICBwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7CisgICAgICAgIHVuaWZvcm0gbWF0NCB1X3RleHR1cmVTcGFjZU1hdHJp
eDsKICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CiAgICAgICAgIHVuaWZvcm0gU2Ft
cGxlclR5cGUgc19zYW1wbGVyOwogICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX2NvbnRlbnRU
ZXh0dXJlOwpAQCAtMjIwLDcgKzIyMiw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRl
bXBsYXRlID0KICAgICAgICAgdW5pZm9ybSB2ZWMyIHVfc2hhZG93T2Zmc2V0OwogICAgICAgICB1
bmlmb3JtIHZlYzQgdV9jb2xvcjsKICAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2dhdXNzaWFuS2Vy
bmVsW0dBVVNTSUFOX0tFUk5FTF9IQUxGX1dJRFRIXTsKLSAgICAgICAgdW5pZm9ybSBtYXQ0IHVf
dGV4dHVyZVNwYWNlTWF0cml4OwogCiAgICAgICAgIHZvaWQgbm9vcChpbm91dCB2ZWM0IGR1bW15
UGFyYW1ldGVyKSB7IH0KICAgICAgICAgdm9pZCBub29wKGlub3V0IHZlYzQgZHVtbXlQYXJhbWV0
ZXIsIHZlYzIgdGV4Q29vcmQpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDgyNikKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTQtMTAtMTcgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CisKKyAg
ICAgICAgW1dpbkNhaXJvXSBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBub3QgaW1wbGVtZW50
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcz
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGlzIGJhc2VkIG9uIEdUSywgYW5kIHRoZSB0ZXh0dXJlIG1hcHBlciBncmFwaGljcyBs
YXllciB0eXBlLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hw
cm9qOiBBZGRlZCBuZXcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgc291cmNlIGZpbGVzLgorICAg
ICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvai5maWx0ZXJzOiBEaXR0
by4KKwogMjAxNC0xMC0xNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbXBsZW1lbnQgc2VsZWN0aW9uIHNlcnZpY2VzIG1lbnUgZm9yIExlZ2FjeSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52
Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0
L1dlYktpdC52Y3hwcm9qCShyZXZpc2lvbiAxNzQ4MjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktp
dC52Y3hwcm9qL1dlYktpdC9XZWJLaXQudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzIzLDYg
KzMyMyw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5c
d2luXFdlYkNvcmVTdGF0aXN0aWNzLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XC4uXHdpblxXZWJDb3JlU3VwcG9ydFxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcRW1i
ZWRkZWRXaWRnZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cd2luXFdl
YkNvcmVTdXBwb3J0XFdlYkNocm9tZUNsaWVudC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIiAv
PgpAQCAtNDYwLDYgKzQ2MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5c
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXC4uXHdpblxXZWJDb29raWVNYW5hZ2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlwuLlx3aW5cV2ViQ29yZVN0YXRpc3RpY3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXC4uXHdpblxXZWJDb3JlU3VwcG9ydFxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXFdlYkNvcmVTdXBwb3J0
XEVtYmVkZGVkV2lkZ2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5c
V2ViQ29yZVN1cHBvcnRcV2ViQ2hyb21lQ2xpZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcV2ViQ29udGV4dE1lbnVDbGllbnQuaCIgLz4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0L1dlYktpdC52Y3hwcm9q
LmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJL
aXQvV2ViS2l0LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTc0ODI2KQorKysgU291cmNlL1dl
YktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXQvV2ViS2l0LnZjeHByb2ouZmlsdGVycwkod29ya2lu
ZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwu
Llx3aW5cQWNjZXNzaWJsZVRleHRJbXBsLmNwcCI+CiAgICAgICA8RmlsdGVyPlNvdXJjZXM8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXHdp
blxXZWJDb3JlU3VwcG9ydFxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAiPgorICAg
ICAgPEZpbHRlcj5XZWJDb3JlU3VwcG9ydDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICA8
L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4u
XHdpblxXZWJDb3JlU3VwcG9ydFxFbWJlZGRlZFdpZGdldC5oIj4KQEAgLTUzNiw2ICs1MzksOSBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cd2luXEFjY2Vzc2libGVUZXh0SW1wbC5o
Ij4KICAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlx3aW5cV2ViQ29yZVN1cHBvcnRcQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCI+CisgICAgICA8RmlsdGVyPldlYkNvcmVTdXBwb3J0
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3Vw
PgogICAgIDxOb25lIEluY2x1ZGU9IldlYktpdFBvc3RCdWlsZC5jbWQiIC8+CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNzQ4MjYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OSBAQAorMjAxNC0xMC0xNyAgcGVhdm9Ab3V0
bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KKworICAgICAgICBbV2luQ2Fpcm9dIEFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nIGlzIG5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzM0NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gR1RL
LCBhbmQgdGhlIHRleHR1cmUgbWFwcGVyIGdyYXBoaWNzIGxheWVyIHR5cGUuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpnZXRXZWJWaWV3U2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojppbml0
aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
On5BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdG9wQW55UGVuZGluZ0xheWVyRmx1c2gpOgorICAg
ICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpwcmVwYXJlRm9y
UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OnN0YXJ0ZWRBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dDo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldFJvb3RDb21wb3NpdGluZ0xheWVy
KToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldE5v
bkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAg
IChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZXNpemVSb290TGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2Nyb2xs
Tm9uQ29tcG9zaXRlZENvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnNjaGVkdWxlTGF5ZXJGbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OkFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgor
ICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzU29vbik6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpmbHVzaEFuZFJlbmRlckxheWVycyk6CisgICAgICAgIChXZWJLaXQ6OkFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpsYXllckZsdXNoVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpub3RpZnlBbmltYXRp
b25TdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6Om5vdGlmeUZsdXNoUmVxdWlyZWQpOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpMYXllckZsdXNoVGltZXI6OkxheWVy
Rmx1c2hUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0OjpMYXllckZsdXNoVGltZXI6OmZpcmVkKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6YWRkVG9EaXJ0eVJl
Z2lvbik6CisgICAgICAgIChXZWJWaWV3OjpzY3JvbGxCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViVmlldzo6c2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViVmlldzo6cGFpbnQpOgorICAgICAg
ICAoV2ViVmlldzo6c2V0Um9vdENoaWxkTGF5ZXIpOgorICAgICAgICAoV2ViVmlldzo6Zmx1c2hQ
ZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKToKKyAgICAgICAgKFdlYlZpZXc6OnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxNC0xMC0x
NiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3NDc1NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShy
ZXZpc2lvbiAxNzQ4MjYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw4IEBACiAjaWYgVVNFKENBKQogI2luY2x1ZGUgPFdlYkNv
cmUvQ0FDRkxheWVyVHJlZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXll
ci5oPgorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2luY2x1ZGUgIkFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKQEAgLTQwOSw2ICs0MTEsOSBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKICAgICAsIG1fbGFzdFNl
dEN1cnNvcigwKQogICAgICwgbV91c2VzTGF5ZXJlZFdpbmRvdyhmYWxzZSkKICAgICAsIG1fbmVl
ZHNEaXNwbGF5KGZhbHNlKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAsIG1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQobnVsbHB0cikKKyNlbmRpZgogewogICAgIEpTQzo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsK
QEAgLTg2MCw3ICs4NjUsMTEgQEAgdm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0
IEludAogICAgIC8vIGh0dHA6Ly93ZWJraXQub3JnL2IvMjkzNTAuCiAKICAgICBpZiAoaXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKKyNpZiBVU0UoQ0EpCiAgICAgICAgIG1fYmFja2luZ0xh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoZGlydHlSZWN0KTsKKyNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KGRpcnR5UmVjdCk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtODk1LDcgKzkwNCwxMSBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdT
dG9yZShGcmFtZVZpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgZG9pbmcgc29tZXRoaW5nIHNtYXJ0ZXIgaGVyZSwg
bGlrZSBtb3ZpbmcgdGlsZXMgYXJvdW5kIGFuZCBwYWludGluZwogICAgICAgICAvLyBhbnkgbmV3
bHktZXhwb3NlZCB0aWxlcy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNTI3MTQ+CisjaWYgVVNFKENB
KQogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFZp
ZXdSZWN0KTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICAgICAgbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC0+c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKHNjcm9s
bFZpZXdSZWN0LCBJbnRTaXplKGR4LCBkeSkpOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTk1MiwxMCArOTY1LDE0IEBAIHZvaWQgV2ViVmlldzo6c2l6ZUNoYW5nZWQoY29u
c3QgSW50U2l6ZSYKICNpZiBVU0UoQ0EpCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5yZXNpemUoKTsKKwogICAgIGlmIChtX2JhY2tpbmdMYXllcikg
ewogICAgICAgICBtX2JhY2tpbmdMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKICAgICAgICAgbV9i
YWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0KKyNlbGlmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyAgICBpZiAobV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKKyAg
ICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVzaXplUm9vdExheWVyKG5l
d1NpemUpOwogI2VuZGlmCiB9CiAKQEAgLTEwODQsMTggKzExMDEsMjIgQEAgdm9pZCBXZWJWaWV3
OjpwYWludChIREMgZGMsIExQQVJBTSBvcHRpbwogewogICAgIExPQ0FMX0dESV9DT1VOVEVSKDAs
IF9fRlVOQ1RJT05fXyk7CiAKLSNpZiBVU0UoQ0EpCiAgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZygpICYmICF1c2VzTGF5ZXJlZFdpbmRvdygpKSB7CisjaWYgVVNFKENBKQogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc05vdygpOworI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LT5mbHVzaEFuZFJlbmRlckxheWVycygpOworI2VuZGlmCiAgICAgICAgIC8vIEZsdXNo
aW5nIG1pZ2h0IGhhdmUgdGFrZW4gdXMgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUuCiAgICAgICAg
IGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkgeworI2lmIFVTRShDQSkKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHBhaW50IGludG8gZGMgKGlmIHByb3ZpZGVkKS4gPGh0
dHA6Ly93ZWJraXQub3JnL2IvNTI1Nzg+CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnBh
aW50KCk7CisjZW5kaWYKICAgICAgICAgICAgIDo6VmFsaWRhdGVSZWN0KG1fdmlld1dpbmRvdywg
MCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKIAogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fbWFpbkZyYW1lKTsKICAgICBpZiAoIWNvcmVGcmFt
ZSkKQEAgLTIzOTMsOCArMjQxNCwxMCBAQCBMUkVTVUxUIENBTExCQUNLIFdlYlZpZXc6OldlYlZp
ZXdXbmRQcm9jCiAgICAgICAgICAgICAgICAgUkVDVCB3aW5kb3dSZWN0OwogICAgICAgICAgICAg
ICAgIDo6R2V0Q2xpZW50UmVjdChoV25kLCAmd2luZG93UmVjdCk7CiAgICAgICAgICAgICAgICAg
OjpJbnZhbGlkYXRlUmVjdChoV25kLCAmd2luZG93UmVjdCwgZmFsc2UpOworI2lmIFVTRShDQSkK
ICAgICAgICAgICAgICAgICBpZiAod2ViVmlldy0+aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkp
CiAgICAgICAgICAgICAgICAgICAgIHdlYlZpZXctPm1fYmFja2luZ0xheWVyLT5zZXROZWVkc0Rp
c3BsYXkoKTsKKyNlbmRpZgogICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBXTV9NT1VTRUFDVElWQVRFOgpAQCAtNjU1MSw5ICs2NTc0LDE1IEBAIHZvaWQgV2Vi
Vmlldzo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwKIHZvaWQgV2ViVmlldzo6c2V0Um9vdENo
aWxkTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZyhsYXllciA/IHRydWUgOiBmYWxzZSk7CisjaWYgVVNFKENBKQogICAgIGlmICghbV9i
YWNraW5nTGF5ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBtX2JhY2tpbmdMYXllci0+YWRkQ2hp
bGQobGF5ZXIpOworI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIGlmICghbV9hY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnNldFJvb3RDb21wb3NpdGluZ0xheWVyKGxheWVyKTsK
KyNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXc6OmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFu
Z2VzU29vbigpCkBAIC02NTYyLDEzICs2NTkxLDIwIEBAIHZvaWQgV2ViVmlldzo6Zmx1c2hQZW5k
aW5nR3JhcGhpY3NMYXllckMKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5n
ZXNTb29uKCk7CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgaWYgKCFtX2FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC0+Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbigpOwog
I2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29s
IGFjY2VsZXJhdGVkKQogeworICAgIGlmIChtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9PSBh
Y2NlbGVyYXRlZCkKKyAgICAgICAgcmV0dXJuOworCiAjaWYgVVNFKENBKQotICAgIGlmIChtX2lz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9PSBhY2NlbGVyYXRlZCB8fCAhQ0FDRkxheWVyVHJlZUhv
c3Q6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdBdmFpbGFibGUoKSkKKyAgICBpZiAoIUNBQ0ZMYXll
clRyZWVIb3N0OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nQXZhaWxhYmxlKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChhY2NlbGVyYXRlZCkgewpAQCAtNjYwOCw2ICs2NjQ0LDEwIEBAIHZv
aWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZygKICAgICAgICAgbV9iYWNraW5n
TGF5ZXIgPSBudWxscHRyOwogICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGZh
bHNlOwogICAgIH0KKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBpZiAoYWNjZWxl
cmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCisgICAgICAgIG1fYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CisgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmcgPSBhY2NlbGVyYXRlZDsKICNlbmRpZgogfQogCkBAIC02NzUyLDE0ICs2NzkyLDE4IEBAIHZv
aWQgV2ViVmlldzo6Zmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckMKICAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBjb3JlRnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsK
KyNpZiBVU0UoQ0EpCiAgICAgaWYgKCFtX2JhY2tpbmdMYXllcikKICAgICAgICAgcmV0dXJuOwor
I2VuZGlmCiAKICAgICB2aWV3LT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZl
KCk7CiAKKyNpZiBVU0UoQ0EpCiAgICAgLy8gVXBkYXRpbmcgbGF5b3V0IG1pZ2h0IGhhdmUgdGFr
ZW4gdXMgb3V0IG9mIGNvbXBvc2l0aW5nIG1vZGUuCiAgICAgaWYgKG1fYmFja2luZ0xheWVyKQog
ICAgICAgICBtX2JhY2tpbmdMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVy
T25seSgpOworI2VuZGlmCiAKICAgICB2aWV3LT5mbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRp
bmdTdWJmcmFtZXMoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDE3NDgyNikK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiAr
NjcsOSBAQCBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYkluc3BlY3RvcjsKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCitjbGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDsKKyNlbmRp
ZgogCiBXZWJWaWV3KiBraXQoV2ViQ29yZTo6UGFnZSopOwogV2ViQ29yZTo6UGFnZSogY29yZShJ
V2ViVmlldyopOwpAQCAtMTEzNiw4ICsxMTM5LDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCk7CiAjaWYgVVNFKENBKQogICAgIFJlZlB0cjxX
ZWJDb3JlOjpDQUNGTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwotI2VuZGlmCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fYmFja2luZ0xheWVyOwor
I2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dD4gbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDsK
KyNlbmRpZgogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAKICAgICBib29s
IG1fbmV4dERpc3BsYXlJc1N5bmNocm9ub3VzOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSwgSW5jLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQuaCIKKworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKworI2luY2x1
ZGUgIldlYlZpZXcuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZW1wb3JhcnlPcGVuR0xTZXR0
aW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyR0wuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1RleHR1cmVNYXBwZXJMYXllci5oPgorCisjaWYgVVNFKE9QRU5HTF9FU18yKQorI2lu
Y2x1ZGUgPEdMRVMyL2dsMi5oPgorI2Vsc2UKKyNpbmNsdWRlIDxHTC9nbC5oPgorI2VuZGlmCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2ViVmlldyYgd2ViVmlldykKKyAgICA6
IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV9sYXllckZsdXNoVGltZXIoKnRoaXMpCisgICAg
LCBtX2NvbnRleHQobnVsbHB0cikKKyAgICAsIG1fd2luZG93KDApCit7Cit9CisKK3N0YXRpYyBJ
bnRTaXplIGdldFdlYlZpZXdTaXplKFdlYlZpZXcmIHdlYlZpZXcpCit7CisgICAgUkVDVCByOwor
ICAgIHdlYlZpZXcuZnJhbWVSZWN0KCZyKTsKKyAgICByZXR1cm4gSW50U2l6ZShyLnJpZ2h0IC0g
ci5sZWZ0LCByLmJvdHRvbSAtIHIudG9wKTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6aW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKG1fcm9vdExheWVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBJbnRTaXplIHBhZ2VTaXplID0gZ2V0V2ViVmlld1NpemUobV93ZWJW
aWV3KTsKKworICAgIG1fd2luZG93ID0gbV93ZWJWaWV3LnZpZXdXaW5kb3coKTsKKworICAgIGlm
ICghbV93aW5kb3cpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcm9vdExheWVyID0gR3JhcGhp
Y3NMYXllcjo6Y3JlYXRlKG51bGxwdHIsICp0aGlzKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0RHJh
d3NDb250ZW50KGZhbHNlKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShwYWdlU2l6ZSk7CisK
KyAgICAvLyBUaGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudHMgYXJlIGEgY2hpbGQgb2YgdGhlIHJv
b3QgbGF5ZXIuCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyID0gR3JhcGhpY3NMYXll
cjo6Y3JlYXRlKG51bGxwdHIsICp0aGlzKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5
ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5
ZXItPnNldENvbnRlbnRzT3BhcXVlKCFtX3dlYlZpZXcudHJhbnNwYXJlbnQoKSk7CisgICAgbV9u
b25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRTaXplKHBhZ2VTaXplKTsKKyAgICBpZiAoY29y
ZSgmbV93ZWJWaWV3KS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkpCisg
ICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0QWNjZWxlcmF0ZXNEcmF3aW5n
KHRydWUpOworCisjaWZuZGVmIE5ERUJVRworICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJSb290
IGxheWVyIik7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROYW1lKCJOb24t
Y29tcG9zaXRlZCBjb250ZW50Iik7CisjZW5kaWYKKworICAgIG1fcm9vdExheWVyLT5hZGRDaGls
ZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOworICAgIG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisKKyAgICAvLyBUaGUgY3JlYXRpb24g
b2YgdGhlIFRleHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZlIE9wZW5HTCBjb250ZXh0LgorICAg
IGlmICghbV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNv
bnRleHRGb3JXaW5kb3cobV93aW5kb3csIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CisK
KyAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgbV90ZXh0dXJlTWFw
cGVyID0gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSk7
CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4obV90ZXh0dXJlTWFwcGVyLmdldCgp
KS0+c2V0RW5hYmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nKHRydWUpOworICAgIHRvVGV4dHVy
ZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdldCgpKS0+c2V0VGV4dHVyZU1hcHBlcihtX3RleHR1
cmVNYXBwZXIuZ2V0KCkpOworCisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQo
KQoreworICAgIHN0b3BBbnlQZW5kaW5nTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdG9wQW55UGVuZGluZ0xheWVyRmx1c2goKQoreworICAg
IG1fbGF5ZXJGbHVzaFRpbWVyLnN0b3AoKTsKK30KKworYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6ZW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fd2luZG93ICYmIG1fcm9vdExh
eWVyICYmIG1fdGV4dHVyZU1hcHBlcjsKK30KKworYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6cHJlcGFyZUZvclJlbmRlcmluZygpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzdGFydGVkQW5pbWF0aW9uKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqIGxheWVyKQoreworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICh0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+c3RhcnRl
ZEFuaW1hdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZvciAoYXV0byBjaGls
ZExheWVyIDogbGF5ZXItPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgaWYgKHN0YXJ0ZWRBbmltYXRp
b24oY2hpbGRMYXllcikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNv
bXBvc2l0ZUxheWVyc1RvQ29udGV4dChDb21wb3NpdGVQdXJwb3NlIHB1cnBvc2UpCit7CisgICAg
aWYgKCFwcmVwYXJlRm9yUmVuZGVyaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJFQ1Qg
cjsKKyAgICBpZiAoITo6R2V0Q2xpZW50UmVjdChtX3dpbmRvdywgJnIpKQorICAgICAgICByZXR1
cm47CisgICAgSW50U2l6ZSB3aW5kb3dTaXplKHIucmlnaHQsIHIuYm90dG9tKTsKKyAgICBnbFZp
ZXdwb3J0KDAsIDAsIHdpbmRvd1NpemUud2lkdGgoKSwgd2luZG93U2l6ZS5oZWlnaHQoKSk7CisK
KyAgICBpZiAocHVycG9zZSA9PSBGb3JSZXNpemUpIHsKKyAgICAgICAgVGVtcG9yYXJ5T3BlbkdM
U2V0dGluZyBzY29wZWRTY2lzc29yKEdMX1NDSVNTT1JfVEVTVCwgR0xfRkFMU0UpOworICAgICAg
ICBnbENsZWFyQ29sb3IoMSwgMSwgMSwgMCk7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCk7CisgICAgfQorCisgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7
CisgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5wYWludCgpOwor
ICAgIG1fZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KG1fdGV4dHVyZU1hcHBlci5nZXQo
KSk7CisgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGluZygpOworCisgICAgbV9jb250ZXh0
LT5zd2FwQnVmZmVycygpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
OjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQor
eworICAgIHByZXBhcmVGb3JSZW5kZXJpbmcoKTsKKworICAgIGlmICghZ3JhcGhpY3NMYXllcikg
eworICAgICAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1c2goKTsKKyAgICAgICAgbV9yb290TGF5
ZXIgPSBudWxscHRyOworICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIgPSBudWxs
cHRyOworICAgICAgICBtX3RleHR1cmVNYXBwZXIgPSBudWxscHRyOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gQWRkIHRoZSBhY2NlbGVyYXRlZCBsYXllciB0cmVlIGhpZXJhcmNo
eS4KKyAgICBpbml0aWFsaXplKCk7CisgICAgaWYgKCFtX3dpbmRvdykKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigp
OworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+YWRkQ2hpbGQoZ3JhcGhpY3NMYXll
cik7CisKKyAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1c2goKTsKKworICAgIHNjaGVkdWxlTGF5
ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXRO
b25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQorewor
ICAgIGlmICghbV9yb290TGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAocmVjdC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgbV9yb290TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2
b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzZXROZWVkc0Rpc3BsYXlJblJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW1fcm9vdExheWVyKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcm9vdExheWVyLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Jvb3RMYXll
ci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgp
OworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZXNpemVSb290TGF5
ZXIoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fcm9vdExheWVyLT5zaXplKCkgPT0gbmV3U2l6ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9yb290TGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CisKKyAg
ICAvLyBJZiB0aGUgbmV3U2l6ZSBleHBvc2VzIG5ldyBhcmVhcyBvZiB0aGUgbm9uLWNvbXBvc2l0
ZWQgY29udGVudCBhIHNldE5lZWRzRGlzcGxheSBpcyBuZWVkZWQKKyAgICAvLyBmb3IgdGhvc2Ug
bmV3bHkgZXhwb3NlZCBhcmVhcy4KKyAgICBGbG9hdFNpemUgb2xkU2l6ZSA9IG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRMYXllci0+c2l6ZSgpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXll
ci0+c2V0U2l6ZShuZXdTaXplKTsKKworICAgIGlmIChuZXdTaXplLndpZHRoKCkgPiBvbGRTaXpl
LndpZHRoKCkpIHsKKyAgICAgICAgZmxvYXQgaGVpZ2h0ID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KG5ld1NpemUuaGVpZ2h0KCkpLCBvbGRTaXplLmhlaWdodCgpKTsKKyAgICAgICAgbV9u
b25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0
KG9sZFNpemUud2lkdGgoKSwgMCwgbmV3U2l6ZS53aWR0aCgpIC0gb2xkU2l6ZS53aWR0aCgpLCBo
ZWlnaHQpKTsKKyAgICB9CisKKyAgICBpZiAobmV3U2l6ZS5oZWlnaHQoKSA+IG9sZFNpemUuaGVp
Z2h0KCkpCisgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KEZsb2F0UmVjdCgwLCBvbGRTaXplLmhlaWdodCgpLCBuZXdTaXplLndpZHRoKCks
IG5ld1NpemUuaGVpZ2h0KCkgLSBvbGRTaXplLmhlaWdodCgpKSk7CisKKyAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChJbnRSZWN0KEludFBvaW50
KCksIG5ld1NpemUpKTsKKyAgICBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoRm9yUmVzaXplKTsK
KyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHNj
cm9sbFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHNjcm9sbE9mZnNldCAqLykKK3sKKyAgICBtX25v
bkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpz
Y2hlZHVsZUxheWVyRmx1c2goKQoreworICAgIGlmICghZW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAobV9sYXllckZsdXNoVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9sYXllckZsdXNoVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCitib29s
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMo
KQoreworICAgIG1fcm9vdExheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJP
bmx5KCk7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisgICAgcmV0dXJuIGNvcmUoJm1fd2ViVmlldyktPm1h
aW5GcmFtZSgpLnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVz
KCk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlc1Nvb24oKQoreworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpmbHVz
aEFuZFJlbmRlckxheWVycygpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIEZyYW1lJiBmcmFtZSA9IGNvcmUoJm1fd2ViVmlldyktPm1haW5GcmFtZSgpOwor
ICAgIGlmICghZnJhbWUuY29udGVudFJlbmRlcmVyKCkgfHwgIWZyYW1lLnZpZXcoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGZyYW1lLnZpZXcoKS0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRl
ZFJlY3Vyc2l2ZSgpOworCisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2NvbnRleHQgJiYgIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOworfQorCit2
b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpsYXllckZsdXNoVGltZXJGaXJlZCgp
Cit7CisgICAgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKKworICAgIC8vIEluIGNhc2UgYW4gYW5p
bWF0aW9uIGlzIHJ1bm5pbmcsIHdlIHNob3VsZCBmbHVzaCBhZ2FpbiBzb29uLgorICAgIGlmIChz
dGFydGVkQW5pbWF0aW9uKG1fcm9vdExheWVyLmdldCgpKSkKKyAgICAgICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnBhaW50
Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdFRvUGFpbnQp
Cit7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5jbGlwKHJlY3RUb1BhaW50KTsK
KyAgICBjb3JlKCZtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS52aWV3KCktPnBhaW50KCZjb250ZXh0
LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3RUb1BhaW50KSk7CisgICAgY29udGV4dC5yZXN0b3JlKCk7
Cit9CisKKyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAor
I2RlZmluZSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCisKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvR0xDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGlt
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitjbGFzcyBXZWJWaWV3OworCitj
bGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dCk7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQoV2ViVmlldyYpOworICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0KCk7CisKKyAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05l
ZWREaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2b2lkIHNldE5lZWRzRGlz
cGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdm9pZCBzY2hlZHVsZUxh
eWVyRmx1c2goKTsKKyAgICB2b2lkIHJlc2l6ZVJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpJbnRT
aXplJik7CisgICAgYm9vbCBlbmFibGVkKCk7CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ2xpZW50
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NM
YXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQ
YWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3RUb1BhaW50KTsKKwor
ICAgIHZvaWQgaW5pdGlhbGl6ZSgpOworCisgICAgZW51bSBDb21wb3NpdGVQdXJwb3NlIHsgRm9y
UmVzaXplLCBOb3RGb3JSZXNpemUgfTsKKyAgICB2b2lkIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4
dChDb21wb3NpdGVQdXJwb3NlID0gTm90Rm9yUmVzaXplKTsKKworICAgIHZvaWQgZmx1c2hBbmRS
ZW5kZXJMYXllcnMoKTsKKyAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOworICAg
IGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzU29vbigpOworICAgIHZvaWQgc2Nyb2xsTm9u
Q29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7CisKK3ByaXZhdGU6CisgICAgV2Vi
VmlldyYgbV93ZWJWaWV3OworICAgIE93blB0cjxXZWJDb3JlOjpHTENvbnRleHQ+IG1fY29udGV4
dDsKKyAgICBIV05EIG1fd2luZG93OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFw
aGljc0xheWVyPiBtX3Jvb3RMYXllcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3Jh
cGhpY3NMYXllcj4gbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBwZXI7CisgICAgV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIgbV9mcHNDb3VudGVyOworCisgICAgY2xhc3MgTGF5
ZXJGbHVzaFRpbWVyIDogcHVibGljIFdlYkNvcmU6OlRpbWVyQmFzZSB7CisgICAgcHVibGljOgor
ICAgICAgICBMYXllckZsdXNoVGltZXIoQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQmIGNv
bnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAgICB7CisgICAg
ICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5sYXllckZsdXNoVGltZXJGaXJlZCgpOworICAg
ICAgICB9CisKKyAgICAgICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQmIG1fY29udGV4
dDsKKyAgICB9IG1fbGF5ZXJGbHVzaFRpbWVyOworCisgICAgdm9pZCBsYXllckZsdXNoVGltZXJG
aXJlZCgpOworICAgIHZvaWQgc3RvcEFueVBlbmRpbmdMYXllckZsdXNoKCk7CisgICAgYm9vbCBw
cmVwYXJlRm9yUmVuZGVyaW5nKCk7CisgICAgYm9vbCBzdGFydGVkQW5pbWF0aW9uKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKTsKK307CisKKyNlbmRpZiAvLyBURVhUVVJFX01BUFBFUl9HTAorCisj
ZW5kaWYgLy8gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>