<?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>162904</bug_id>
          
          <creation_ts>2016-10-04 07:28:43 -0700</creation_ts>
          <short_desc>[GTK] Copying video textures to webgl should not depend on cairo-gl</short_desc>
          <delta_ts>2016-10-06 04:59:24 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Miguel Gomez">magomez</reporter>
          <assigned_to name="Miguel Gomez">magomez</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>olivier.blin</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236172</commentid>
    <comment_count>0</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-10-04 07:28:43 -0700</bug_when>
    <thetext>When using GSTREAMER_GL, the copy of the video frames (textures) to webgl is done using cairo-gl, which adds a dependency that is not really necessary. The copy should be done without using cairo-gl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236176</commentid>
    <comment_count>1</comment_count>
      <attachid>290600</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-10-04 07:47:24 -0700</bug_when>
    <thetext>Created attachment 290600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236180</commentid>
    <comment_count>2</comment_count>
      <attachid>290601</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-10-04 08:00:16 -0700</bug_when>
    <thetext>Created attachment 290601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236220</commentid>
    <comment_count>3</comment_count>
      <attachid>290601</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-04 10:01:54 -0700</bug_when>
    <thetext>Comment on attachment 290601
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:803
&gt; +    IntSize size = IntSize(GST_VIDEO_INFO_WIDTH(&amp;videoInfo), GST_VIDEO_INFO_HEIGHT(&amp;videoInfo));

You can just use direct initialization here, like `IntSize size(width, height)`.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:804
&gt; +    IntSize rotatedSize = m_videoSourceOrientation.usesWidthAsHeight() ? size.transposedSize() : size;

Reuse the size object and reassign it to the transposedSize() value if necessary.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:28
&gt; +#include &quot;texmap/TextureMapperShaderProgram.h&quot;

You shouldn&apos;t need to list the texmap/ directory here. Hitting a compilation error without it?

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:32
&gt; +static const GLfloat vertices[] = { 0, 0, 1, 0, 1, 1, 0, 1 };

This static can be local to the VideoTextureCopierGStreamer constructor.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:40
&gt; +    : m_framebuffer(0)
&gt; +    , m_flipY(false)
&gt; +    , m_orientation(DefaultImageOrientation)
&gt; +    , m_width(0)
&gt; +    , m_height(0)
&gt; +    , m_vbo(0)

These member variables should be all initialized in the class declaration since all the data is const.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:42
&gt; +    GLContext* previousContext = GLContext::current();

I suppose it&apos;s unlikely for previousContext to be null at this point, but an ASSERT() would still be useful here.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:47
&gt; +    TextureMapperShaderProgram::Options options = TextureMapperShaderProgram::Texture;

You can inline this variable into the function call.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:63
&gt; +    GLContext* previousContext = GLContext::current();

Again, unlikely this is null, but ASSERT would be useful.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:64
&gt; +    PlatformDisplay::sharedDisplayForCompositing().sharingGLContext()-&gt;makeContextCurrent();

m_context3D-&gt;makeContextCurrent() should do the same.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:135
&gt; +    GLContext* previousContext = GLContext::current();

Again, unlikely this is null, but ASSERT would be useful.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:136
&gt; +    PlatformDisplay::sharedDisplayForCompositing().sharingGLContext()-&gt;makeContextCurrent();

You should be able to call m_context3D-&gt;makeContextCurrent() for the same effect.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.h:38
&gt; +    bool copyVideoTextureToPlatformTexture(Platform3DObject inputTexture, size_t width, size_t height, Platform3DObject outputTexture, GC3Denum outputTarget, GC3Dint level, GC3Denum internalFormat, GC3Denum format, GC3Denum type, bool flipY, ImageOrientation&amp; sourceOrientation);

width and height parameters should match the caller and be combined in an IntSize object. Same goes for the m_width and m_height member variables.

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.h:53
&gt; +    Platform3DObject m_vbo;

m_vbo should follow m_framebuffer directly -- the GPU resources should be grouped together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236580</commentid>
    <comment_count>4</comment_count>
      <attachid>290700</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-10-05 02:45:17 -0700</bug_when>
    <thetext>Created attachment 290700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236582</commentid>
    <comment_count>5</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-10-05 02:48:57 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:64
&gt; &gt; +    PlatformDisplay::sharedDisplayForCompositing().sharingGLContext()-&gt;makeContextCurrent();
&gt; 
&gt; m_context3D-&gt;makeContextCurrent() should do the same.
&gt; 

This is not changed in the new version of the patch, cause graphic contexts created with GraphicsContext3D::createForCurrentGLContext() don&apos;t save a reference to the current gl context, so makeContextCurrent() doesn&apos;t really do anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236643</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-05 08:57:14 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:64
&gt; &gt; &gt; +    PlatformDisplay::sharedDisplayForCompositing().sharingGLContext()-&gt;makeContextCurrent();
&gt; &gt; 
&gt; &gt; m_context3D-&gt;makeContextCurrent() should do the same.
&gt; &gt; 
&gt; 
&gt; This is not changed in the new version of the patch, cause graphic contexts
&gt; created with GraphicsContext3D::createForCurrentGLContext() don&apos;t save a
&gt; reference to the current gl context, so makeContextCurrent() doesn&apos;t really
&gt; do anything.

Right, I see it now -- this behavior makes sense. What I feel might be a problem at some point is the different things we&apos;re using the sharing context for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236645</commentid>
    <comment_count>7</comment_count>
      <attachid>290700</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-05 09:03:11 -0700</bug_when>
    <thetext>Comment on attachment 290700
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/VideoTextureCopierGStreamer.h:47
&gt; +    Platform3DObject m_framebuffer = 0;
&gt; +    Platform3DObject m_vbo = 0;
&gt; +    bool m_flipY = false;

For these we use braces: `bool m_flipY { false };&apos; etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236944</commentid>
    <comment_count>8</comment_count>
      <attachid>290792</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-10-06 01:05:30 -0700</bug_when>
    <thetext>Created attachment 290792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236996</commentid>
    <comment_count>9</comment_count>
      <attachid>290792</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-06 03:55:58 -0700</bug_when>
    <thetext>Comment on attachment 290792
Patch

Clearing flags on attachment: 290792

Committed r206862: &lt;http://trac.webkit.org/changeset/206862&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236997</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-06 03:56:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290600</attachid>
            <date>2016-10-04 07:47:24 -0700</date>
            <delta_ts>2016-10-04 08:00:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162904-20161004164413.patch</filename>
            <type>text/plain</type>
            <size>18556</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZmZDY0NzFjZGEwNTU3
ZDY5OGNiMDI2ODFlZmUyM2U1NmMxMjNlOC4uMGI1MzY5ZGRlMmMzZDhmYzE5YjRiNTkyOGNlM2Rj
ZWM4YjY4OTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTEwLTA0ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQ29weWluZyB2
aWRlbyB0ZXh0dXJlcyB0byB3ZWJnbCBzaG91bGQgbm90IGRlcGVuZCBvbiBjYWlyby1nbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGVyZm9ybSB0aGUg
dGV4dHVyZSBjb3B5IHdpdGhvdXQgdXNpbmcgY2Fpcm8tZ2wuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGVudCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToK
KyAgICAgICAgQWRkIHRoZSBuZXcgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIGNsYXNzIHRv
IHRoZSBidWlsZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUpOgorICAgICAgICBVc2UgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIHRvIHBlcmZvcm0g
dGhlIGNvcHkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgQWRkIGEgVmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyIGFzIGEgY2xhc3MgYXR0cmlidXRlLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGll
ckdTdHJlYW1lcjo6flZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRleHR1cmVTcGFjZU1hdHJp
eCk6CisgICAgICAgIFJlY2FsY3VsYXRlcyB0aGUgbWF0cml4IHVzZWQgYXMgdGhlIHRleHR1cmUg
Y29vcmRpbmF0ZXMgdHJhbnNmb3JtYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAg
UmVjYWxjdWxhdGVzIHRoZSBtYXRyaWNlcyB1c2VkIGFzIHRoZSB2ZXJ0aWNlcyBjb29yZGluYXRl
cyB0cmFuc2Zvcm1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgUGVy
Zm9ybXMgdGhlIHRleHR1cmUgY29weSBieSB1c2luZyBhIHNoYWRlciB0aGF0IGFwcGxpZXMgdGhl
IHJvdGF0aW9uIG5lZWRlZCB0byBmb2xsb3cKKyAgICAgICAgdGhlIHZpZGVvIG9yaWVudGF0aW9u
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXIuaDogQWRkZWQuCisKIDIwMTYtMTAtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBCaW5kaW5ncyBkbyBub3QgdGhyb3cgYSBUeXBlRXJyb3Ig
aWYgYSByZXF1aXJlZCBkaWN0aW9uYXJ5IG1lbWJlciBpcyBtaXNzaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggY2FmNTM3MzY2MmNlYTAxYzY0ZmU2YWU0ZGUw
MWUxYWE1ZWQxMTU3My4uMDMxYzlmMTk1NGY0MDc0MjI4ZjQ4MGU2ZjZkYjg2N2FjZDlkMjY0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtODgsNiArODgsOSBA
QCBpZiAoRU5BQkxFX1ZJREVPKQogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklF
UwogICAgICAgICAgICAgJHtHU1RSRUFNRVJfR0xfTElCUkFSSUVTfQogICAgICAgICApCisgICAg
ICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAKKyAgICAgICAg
KQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggYjJmZWRiMGI2N2RiZmQ0ZjMyZmRk
ZjI1OTEyZWZjNWMyNWRkZTVjZC4uY2U1YWViNGRhM2UzOGZmZWM0NzNmMmM2ZTRkMGI1Y2U1ZGEy
ZWRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2lmIFBMQVRGT1JNKFgxMSkgJiYgR1NUX0dM
X0hBVkVfUExBVEZPUk1fRUdMCiAjdW5kZWYgTm9uZQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkg
JiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCisjaW5jbHVkZSAiVmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyLmgiCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKIAogI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKQEAgLTc3OSw5ICs3ODAsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvdXRw
dQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGxhdGZvcm0z
RE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKLSNpZiAhVVNFKENBSVJP
KQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOwogCiAgICAgaWYgKG1fdXNpbmdGYWxsYmFja1ZpZGVvU2lu
aykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzg5LDMxICs3ODksMzIgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3MKICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKLSAgICBJbnRTaXplIHNpemUs
IHJvdGF0ZWRTaXplOwogICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBs
ZU11dGV4KTsKLSAgICBHTENvbnRleHQqIGdsQ29udGV4dCA9IHByZXBhcmVDb250ZXh0Rm9yQ2Fp
cm9QYWludCh2aWRlb0luZm8sIHNpemUsIHJvdGF0ZWRTaXplKTsKLSAgICBpZiAoIWdsQ29udGV4
dCkKKworICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgaWYgKCFnZXRTYW1wbGVWaWRl
b0luZm8obV9zYW1wbGUuZ2V0KCksIHZpZGVvSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIC8vIEFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZvciB0aGUgb3V0cHV0IHRl
eHR1cmUuCi0gICAgY29udGV4dC0+YmluZFRleHR1cmUob3V0cHV0VGFyZ2V0LCBvdXRwdXRUZXh0
dXJlKTsKLSAgICBjb250ZXh0LT50ZXhJbWFnZTJERGlyZWN0KG91dHB1dFRhcmdldCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCByb3RhdGVkU2l6ZS53aWR0aCgpLCByb3RhdGVkU2l6ZS5oZWlnaHQo
KSwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdz
dF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7CisgICAgR3N0VmlkZW9GcmFtZSB2
aWRlb0ZyYW1lOworICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwgJnZp
ZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwg
R1NUX01BUF9HTCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBjYWlyb19nbF9z
dXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZSBzZXRzIHRoZXNlIHBhcmFtZXRlcnMgdG8gR0xfTkVB
UkVTVCwgc28gd2UgbmVlZCB0byBiYWNrdXAgdGhlbS4KLSAgICBHQzNEaW50IG1pbkZpbHRlciwg
bWFnRmlsdGVyOwotICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KG91dHB1dFRhcmdldCwg
R0xfVEVYVFVSRV9NSU5fRklMVEVSLCAmbWluRmlsdGVyKTsKLSAgICBjb250ZXh0LT5nZXRUZXhQ
YXJhbWV0ZXJpdihvdXRwdXRUYXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgJm1hZ0ZpbHRl
cik7CisgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlk
ZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8pKTsKKyAgICBJbnRTaXpl
IHJvdGF0ZWRTaXplID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0
KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOworICAgIHVuc2lnbmVkIHRleHR1cmVJ
RCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFtZS5kYXRhWzBdKTsKIAot
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG91dHB1dFN1cmZhY2UgPSBhZG9wdFJlZihjYWly
b19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShnbENvbnRleHQtPmNhaXJvRGV2aWNlKCks
IENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG91dHB1dFRleHR1cmUsIHJvdGF0ZWRTaXplLndp
ZHRoKCksIHJvdGF0ZWRTaXplLmhlaWdodCgpKSk7Ci0gICAgaWYgKCFwYWludFRvQ2Fpcm9TdXJm
YWNlKG91dHB1dFN1cmZhY2UuZ2V0KCksIGdsQ29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgdmlkZW9J
bmZvLCBzaXplLCByb3RhdGVkU2l6ZSwgZmxpcFkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3Bp
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oKTsKIAot
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKG91dHB1dFRhcmdldCwgb3V0cHV0VGV4dHVyZSk7Ci0g
ICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShvdXRwdXRUYXJnZXQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX01JTl9GSUxURVIsIG1pbkZpbHRlcik7Ci0gICAgY29udGV4dC0+dGV4UGFyYW1l
dGVyaShvdXRwdXRUYXJnZXQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IG1hZ0ZpbHRlcik7CisgICAgYm9vbCBjb3BpZWQgPSBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgcm90YXRlZFNpemUud2lk
dGgoKSwgcm90YXRlZFNpemUuaGVpZ2h0KCksIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwg
bGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNl
T3JpZW50YXRpb24pOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgZ3N0X3ZpZGVvX2ZyYW1lX3Vu
bWFwKCZ2aWRlb0ZyYW1lKTsKKworICAgIHJldHVybiBjb3BpZWQ7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogfQogCiBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDM2YmQ4YTU2NDVi
MTE2M2I2NzUxNjNhMmU2ZTlmZDNiNTQ0MjNjYWIuLjJiNGUxOThkNmZkYTc5YTAzMDc1MWExODM3
ODkxYmM4OWJlY2RhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBJbnRSZWN0
OworY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOwogCiBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgfHwgKFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykpCkBAIC0yMDUsNiArMjA2
LDEwIEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBtX3ZpZGVv
U291cmNlT3JpZW50YXRpb247CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0dXJlQ29waWVy
OworI2VuZGlmCiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZGE4MmYyYTlhZWRmZWRmMDgyMzRkMDQ3MTcxZDNh
YTVhNjUwNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDE5NCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKworIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorCisjaW5jbHVk
ZSAiR0xDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUg
InRleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPSB7IDAsIDAsIDEsIDAsIDEs
IDEsIDAsIDEgfTsKKworVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpWaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXIoKQorICAgIDogbV9mcmFtZWJ1ZmZlcigwKQorICAgICwgbV9mbGlwWShm
YWxzZSkKKyAgICAsIG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCisgICAg
LCBtX3dpZHRoKDApCisgICAgLCBtX2hlaWdodCgwKQorICAgICwgbV92Ym8oMCkKK3sKKyAgICBH
TENvbnRleHQqIHByZXZpb3VzQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgIFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29u
dGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIG1fY29udGV4dDNEID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJlbnRHTENvbnRleHQoKTsKKworICAgIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6VGV4dHVyZTsKKyAgICBtX3NoYWRlclByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6Y3JlYXRlKCptX2NvbnRleHQzRCwgb3B0aW9ucyk7CisKKyAgICBtX2ZyYW1l
YnVmZmVyID0gbV9jb250ZXh0M0QtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisKKyAgICBtX3ZibyA9
IG1fY29udGV4dDNELT5jcmVhdGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQzRC0+YmluZEJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3Zibyk7CisgICAgbV9jb250ZXh0
M0QtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKEdD
M0RmbG9hdCkgKiA4LCB2ZXJ0aWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsK
KworICAgIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisKKyAgICBwcmV2aW91c0NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworfQorCitWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXI6On5WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIoKQoreworICAgIEdMQ29udGV4dCogcHJl
dmlvdXNDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CisgICAgUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VD
b250ZXh0Q3VycmVudCgpOworCisgICAgbV9jb250ZXh0M0QtPmRlbGV0ZUZyYW1lYnVmZmVyKG1f
ZnJhbWVidWZmZXIpOworICAgIG1fY29udGV4dDNELT5kZWxldGVCdWZmZXIobV92Ym8pOworICAg
IG1fc2hhZGVyUHJvZ3JhbSA9IG51bGxwdHI7CisgICAgbV9jb250ZXh0M0QgPSBudWxscHRyOwor
CisgICAgcHJldmlvdXNDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKK30KKwordm9pZCBW
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgpCit7
CisgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgubWFrZUlkZW50aXR5KCk7CisKKyAgICBzd2l0Y2gg
KG1fb3JpZW50YXRpb24pIHsKKyAgICBjYXNlIE9yaWdpblJpZ2h0VG9wOgorICAgICAgICBtX3Rl
eHR1cmVTcGFjZU1hdHJpeC5yb3RhdGUoLTkwKTsKKyAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRy
aXgudHJhbnNsYXRlKC0xLCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcmlnaW5Cb3R0
b21SaWdodDoKKyAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgucm90YXRlKDE4MCk7CisgICAg
ICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgtMSwgLTEpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE9yaWdpbkxlZnRCb3R0b206CisgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0
cml4LnJvdGF0ZSgtMjcwKTsKKyAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgudHJhbnNsYXRl
KDAsIC0xKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgaWYgKCFtX2ZsaXBZKSB7CisgICAgICAgIG1fdGV4
dHVyZVNwYWNlTWF0cml4LmZsaXBZKCk7CisgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnRy
YW5zbGF0ZSgwLCAtMSk7CisgICAgfQorfQorCit2b2lkIFZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lcjo6dXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgoKQoreworICAgIEZsb2F0UmVjdCB0YXJn
ZXRSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIG1fd2lkdGgsIG1faGVpZ2h0KTsKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBtX21vZGVsVmlld01hdHJpeCA9IFRy
YW5zZm9ybWF0aW9uTWF0cml4KGlkZW50aXR5TWF0cml4KS5tdWx0aXBseShUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6cmVjdFRvUmVjdChGbG9hdFJlY3QoMCwgMCwgMSwgMSksIHRhcmdldFJlY3QpKTsK
KworICAgIC8vIFRha2VuIGZyb20gVGV4dHVyZU1hcHBlckdMLgorICAgIGNvbnN0IGZsb2F0IG5l
YXJWYWx1ZSA9IDk5OTk5OTk7CisgICAgY29uc3QgZmxvYXQgZmFyVmFsdWUgPSAtOTk5OTk7CisK
KyAgICBtX3Byb2plY3Rpb25NYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgyLjAgLyBmbG9h
dChtX3dpZHRoKSwgMCwgMCwgMCwKKyAgICAgICAgMCwgKC0yLjApIC8gZmxvYXQobV9oZWlnaHQp
LCAwLCAwLAorICAgICAgICAwLCAwLCAtMi5mIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSwgMCwK
KyAgICAgICAgLTEsIDEsIC0oZmFyVmFsdWUgKyBuZWFyVmFsdWUpIC8gKGZhclZhbHVlIC0gbmVh
clZhbHVlKSwgMSk7Cit9CisKK2Jvb2wgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCBpbnB1dFRleHR1
cmUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgUGxhdGZvcm0zRE9iamVjdCBvdXRwdXRU
ZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGJvb2wgZmxpcFks
IEltYWdlT3JpZW50YXRpb24mIHNvdXJjZU9yaWVudGF0aW9uKQoreworICAgIGlmICghbV9zaGFk
ZXJQcm9ncmFtIHx8ICFtX2ZyYW1lYnVmZmVyIHx8ICFtX3ZibyB8fCAhd2lkdGggfHwgIWhlaWdo
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fd2lkdGggIT0gd2lkdGggfHwg
bV9oZWlnaHQgIT0gaGVpZ2h0KSB7CisgICAgICAgIG1fd2lkdGggPSB3aWR0aDsKKyAgICAgICAg
bV9oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7
CisgICAgfQorCisgICAgaWYgKG1fZmxpcFkgIT0gZmxpcFkgfHwgbV9vcmllbnRhdGlvbiAhPSBz
b3VyY2VPcmllbnRhdGlvbikgeworICAgICAgICBtX2ZsaXBZID0gZmxpcFk7CisgICAgICAgIG1f
b3JpZW50YXRpb24gPSBzb3VyY2VPcmllbnRhdGlvbjsKKyAgICAgICAgdXBkYXRlVGV4dHVyZVNw
YWNlTWF0cml4KCk7CisgICAgfQorCisgICAgLy8gU2F2ZSBwcmV2aW91cyBjb250ZXh0IGFuZCBh
Y3RpdmF0ZSB0aGUgc2hhcmluZyBvbmUuCisgICAgR0xDb250ZXh0KiBwcmV2aW91c0NvbnRleHQg
PSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKKyAgICBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50
KCk7CisKKyAgICAvLyBTYXZlIHByZXZpb3VzIGJvdW5kIGZyYW1lYnVmZmVyLCB0ZXh0dXJlIGFu
ZCB2aWV3cG9ydC4KKyAgICBHQzNEaW50IGJvdW5kRnJhbWVidWZmZXIgPSAwOworICAgIEdDM0Rp
bnQgYm91bmRUZXh0dXJlID0gMDsKKyAgICBHQzNEaW50IHByZXZpb3VzVmlld3BvcnRbNF0gPSB7
IDAsIDAsIDAsIDB9OworICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVJfQklORElORywgJmJvdW5kRnJhbWVidWZmZXIpOworICAgIG1fY29u
dGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9CSU5ESU5HXzJE
LCAmYm91bmRUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0M0Q6OlZJRVdQT1JULCBwcmV2aW91c1ZpZXdwb3J0KTsKKworICAgIC8vIFNldCBwcm9w
ZXIgcGFyYW1ldGVycyB0byB0aGUgb3V0cHV0IHRleHR1cmUgYW5kIGFsbG9jYXRlIHVuaW5pdGlh
bGl6ZWQgbWVtb3J5IGZvciBpdC4KKyAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1cmUob3V0cHV0
VGFyZ2V0LCBvdXRwdXRUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgbV9jb250ZXh0M0Qt
PnRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0Up
OworICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4
dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4SW1hZ2UyRERpcmVjdChv
dXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgbV93aWR0aCwgbV9oZWlnaHQsIDAs
IGZvcm1hdCwgdHlwZSwgbnVsbHB0cik7CisKKyAgICAvLyBCaW5kIGZyYW1lYnVmZmVyIHRvIHBh
aW50IGFuZCBhdHRhY2ggdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgdG8gaXQuCisgICAgbV9jb250
ZXh0M0QtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
ZnJhbWVidWZmZXIpOworICAgIG1fY29udGV4dDNELT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgb3V0cHV0VGV4dHVyZSwgMCk7CisKKyAgICAvLyBTZXQg
cHJvcGVyIHdyYXAgcGFyYW1ldGVyIHRvIHRoZSBzb3VyY2UgdGV4dHVyZS4KKyAgICBtX2NvbnRl
eHQzRC0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgaW5wdXRUZXh0dXJlKTsKKyAgICBtX2Nv
bnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJ
TkVBUik7CisgICAgbV9jb250ZXh0M0QtPnRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3ND
b250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOworICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJm
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKworICAgIC8vIFNl
dCB0aGUgdmlld3BvcnQuCisgICAgbV9jb250ZXh0M0QtPnZpZXdwb3J0KDAsIDAsIG1fd2lkdGgs
IG1faGVpZ2h0KTsKKworICAgIC8vIFNldCBwcm9ncmFtIHBhcmFtZXRlcnMuCisgICAgbV9jb250
ZXh0M0QtPnVzZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtLT5wcm9ncmFtSUQoKSk7CisgICAgbV9j
b250ZXh0M0QtPnVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBsZXJMb2NhdGlvbigpLCAw
KTsKKyAgICBtX3NoYWRlclByb2dyYW0tPnNldE1hdHJpeChtX3NoYWRlclByb2dyYW0tPm1vZGVs
Vmlld01hdHJpeExvY2F0aW9uKCksIG1fbW9kZWxWaWV3TWF0cml4KTsKKyAgICBtX3NoYWRlclBy
b2dyYW0tPnNldE1hdHJpeChtX3NoYWRlclByb2dyYW0tPnByb2plY3Rpb25NYXRyaXhMb2NhdGlv
bigpLCBtX3Byb2plY3Rpb25NYXRyaXgpOworICAgIG1fc2hhZGVyUHJvZ3JhbS0+c2V0TWF0cml4
KG1fc2hhZGVyUHJvZ3JhbS0+dGV4dHVyZVNwYWNlTWF0cml4TG9jYXRpb24oKSwgbV90ZXh0dXJl
U3BhY2VNYXRyaXgpOworCisgICAgLy8gUGVyZm9ybSB0aGUgY29weS4KKyAgICBtX2NvbnRleHQz
RC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXJQcm9ncmFtLT52ZXJ0ZXhMb2NhdGlv
bigpKTsKKyAgICBtX2NvbnRleHQzRC0+YmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJS
QVlfQlVGRkVSLCBtX3Zibyk7CisgICAgbV9jb250ZXh0M0QtPnZlcnRleEF0dHJpYlBvaW50ZXIo
bV9zaGFkZXJQcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpLCAyLCBHcmFwaGljc0NvbnRleHQzRDo6
RkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICBtX2NvbnRleHQzRC0+ZHJhd0FycmF5cyhHcmFwaGlj
c0NvbnRleHQzRDo6VFJJQU5HTEVfRkFOLCAwLCA0KTsKKyAgICBtX2NvbnRleHQzRC0+YmluZEJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCAwKTsKKyAgICBtX2NvbnRleHQz
RC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRp
b24oKSk7CisKKyAgICAvLyBSZXN0b3JlIHByZXZpb3VzIGJpbmRpbmdzIGFuZCB2aWV3cG9ydC4K
KyAgICBtX2NvbnRleHQzRC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgYm91bmRGcmFtZWJ1ZmZlcik7CisgICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJl
KG91dHB1dFRhcmdldCwgYm91bmRUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+dmlld3BvcnQo
cHJldmlvdXNWaWV3cG9ydFswXSwgcHJldmlvdXNWaWV3cG9ydFsxXSwgcHJldmlvdXNWaWV3cG9y
dFsyXSwgcHJldmlvdXNWaWV3cG9ydFszXSk7CisKKyAgICAvLyBSZXN0b3JlIHByZXZpb3VzIGNv
bnRleHQuCisgICAgcHJldmlvdXNDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAg
IHJldHVybiAhbV9jb250ZXh0M0QtPmdldEVycm9yKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU4ZmFhOGQ5ODI5YWIyNmZk
ODkxMDVhOTE2NjdjZTBiNGY2N2UxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIu
aApAQCAtMCwwICsxLDYwIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgor
CisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lcl9oCisjZGVmaW5lIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcl9oCisKKyNpZiBVU0Uo
R1NUUkVBTUVSX0dMKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOworY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKKwor
Y2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIHsKK3B1YmxpYzoKKyAgICBWaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXIoKTsKKyAgICB+VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
KCk7CisKKyAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShQbGF0Zm9y
bTNET2JqZWN0IGlucHV0VGV4dHVyZSwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBQbGF0
Zm9ybTNET2JqZWN0IG91dHB1dFRleHR1cmUsIEdDM0RlbnVtIG91dHB1dFRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVu
dW0gdHlwZSwgYm9vbCBmbGlwWSwgSW1hZ2VPcmllbnRhdGlvbiYgc291cmNlT3JpZW50YXRpb24p
OworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVNwYWNlTWF0cml4KCk7CisgICAgdm9pZCB1cGRhdGVU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworCitwcml2YXRlOgorICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gbV9jb250ZXh0M0Q7CisgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtPiBtX3NoYWRlclByb2dyYW07CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX2ZyYW1lYnVmZmVy
OworICAgIGJvb2wgbV9mbGlwWTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247
CisgICAgc2l6ZV90IG1fd2lkdGg7CisgICAgc2l6ZV90IG1faGVpZ2h0OworICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG1fbW9kZWxWaWV3TWF0cml4OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IG1fcHJvamVjdGlvbk1hdHJpeDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RleHR1cmVT
cGFjZU1hdHJpeDsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdmJvOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKKworI2VuZGlmIC8v
IFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290601</attachid>
            <date>2016-10-04 08:00:16 -0700</date>
            <delta_ts>2016-10-05 02:45:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162904-20161004165704.patch</filename>
            <type>text/plain</type>
            <size>18554</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZmZDY0NzFjZGEwNTU3
ZDY5OGNiMDI2ODFlZmUyM2U1NmMxMjNlOC4uMGI1MzY5ZGRlMmMzZDhmYzE5YjRiNTkyOGNlM2Rj
ZWM4YjY4OTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTEwLTA0ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQ29weWluZyB2
aWRlbyB0ZXh0dXJlcyB0byB3ZWJnbCBzaG91bGQgbm90IGRlcGVuZCBvbiBjYWlyby1nbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGVyZm9ybSB0aGUg
dGV4dHVyZSBjb3B5IHdpdGhvdXQgdXNpbmcgY2Fpcm8tZ2wuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGVudCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToK
KyAgICAgICAgQWRkIHRoZSBuZXcgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIGNsYXNzIHRv
IHRoZSBidWlsZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUpOgorICAgICAgICBVc2UgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIHRvIHBlcmZvcm0g
dGhlIGNvcHkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgQWRkIGEgVmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyIGFzIGEgY2xhc3MgYXR0cmlidXRlLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGll
ckdTdHJlYW1lcjo6flZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRleHR1cmVTcGFjZU1hdHJp
eCk6CisgICAgICAgIFJlY2FsY3VsYXRlcyB0aGUgbWF0cml4IHVzZWQgYXMgdGhlIHRleHR1cmUg
Y29vcmRpbmF0ZXMgdHJhbnNmb3JtYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAg
UmVjYWxjdWxhdGVzIHRoZSBtYXRyaWNlcyB1c2VkIGFzIHRoZSB2ZXJ0aWNlcyBjb29yZGluYXRl
cyB0cmFuc2Zvcm1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgUGVy
Zm9ybXMgdGhlIHRleHR1cmUgY29weSBieSB1c2luZyBhIHNoYWRlciB0aGF0IGFwcGxpZXMgdGhl
IHJvdGF0aW9uIG5lZWRlZCB0byBmb2xsb3cKKyAgICAgICAgdGhlIHZpZGVvIG9yaWVudGF0aW9u
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXIuaDogQWRkZWQuCisKIDIwMTYtMTAtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBCaW5kaW5ncyBkbyBub3QgdGhyb3cgYSBUeXBlRXJyb3Ig
aWYgYSByZXF1aXJlZCBkaWN0aW9uYXJ5IG1lbWJlciBpcyBtaXNzaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggY2FmNTM3MzY2MmNlYTAxYzY0ZmU2YWU0ZGUw
MWUxYWE1ZWQxMTU3My4uMDMxYzlmMTk1NGY0MDc0MjI4ZjQ4MGU2ZjZkYjg2N2FjZDlkMjY0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtODgsNiArODgsOSBA
QCBpZiAoRU5BQkxFX1ZJREVPKQogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklF
UwogICAgICAgICAgICAgJHtHU1RSRUFNRVJfR0xfTElCUkFSSUVTfQogICAgICAgICApCisgICAg
ICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAKKyAgICAgICAg
KQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggYjJmZWRiMGI2N2RiZmQ0ZjMyZmRk
ZjI1OTEyZWZjNWMyNWRkZTVjZC4uY2U1YWViNGRhM2UzOGZmZWM0NzNmMmM2ZTRkMGI1Y2U1ZGEy
ZWRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2lmIFBMQVRGT1JNKFgxMSkgJiYgR1NUX0dM
X0hBVkVfUExBVEZPUk1fRUdMCiAjdW5kZWYgTm9uZQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkg
JiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCisjaW5jbHVkZSAiVmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyLmgiCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKIAogI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKQEAgLTc3OSw5ICs3ODAsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvdXRw
dQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGxhdGZvcm0z
RE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKLSNpZiAhVVNFKENBSVJP
KQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOwogCiAgICAgaWYgKG1fdXNpbmdGYWxsYmFja1ZpZGVvU2lu
aykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzg5LDMxICs3ODksMzIgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3MKICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKLSAgICBJbnRTaXplIHNpemUs
IHJvdGF0ZWRTaXplOwogICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBs
ZU11dGV4KTsKLSAgICBHTENvbnRleHQqIGdsQ29udGV4dCA9IHByZXBhcmVDb250ZXh0Rm9yQ2Fp
cm9QYWludCh2aWRlb0luZm8sIHNpemUsIHJvdGF0ZWRTaXplKTsKLSAgICBpZiAoIWdsQ29udGV4
dCkKKworICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgaWYgKCFnZXRTYW1wbGVWaWRl
b0luZm8obV9zYW1wbGUuZ2V0KCksIHZpZGVvSW5mbykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIC8vIEFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZvciB0aGUgb3V0cHV0IHRl
eHR1cmUuCi0gICAgY29udGV4dC0+YmluZFRleHR1cmUob3V0cHV0VGFyZ2V0LCBvdXRwdXRUZXh0
dXJlKTsKLSAgICBjb250ZXh0LT50ZXhJbWFnZTJERGlyZWN0KG91dHB1dFRhcmdldCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCByb3RhdGVkU2l6ZS53aWR0aCgpLCByb3RhdGVkU2l6ZS5oZWlnaHQo
KSwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdz
dF9zYW1wbGVfZ2V0X2J1ZmZlcihtX3NhbXBsZS5nZXQoKSk7CisgICAgR3N0VmlkZW9GcmFtZSB2
aWRlb0ZyYW1lOworICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmdmlkZW9GcmFtZSwgJnZp
ZGVvSW5mbywgYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwg
R1NUX01BUF9HTCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBjYWlyb19nbF9z
dXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZSBzZXRzIHRoZXNlIHBhcmFtZXRlcnMgdG8gR0xfTkVB
UkVTVCwgc28gd2UgbmVlZCB0byBiYWNrdXAgdGhlbS4KLSAgICBHQzNEaW50IG1pbkZpbHRlciwg
bWFnRmlsdGVyOwotICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KG91dHB1dFRhcmdldCwg
R0xfVEVYVFVSRV9NSU5fRklMVEVSLCAmbWluRmlsdGVyKTsKLSAgICBjb250ZXh0LT5nZXRUZXhQ
YXJhbWV0ZXJpdihvdXRwdXRUYXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgJm1hZ0ZpbHRl
cik7CisgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShHU1RfVklERU9fSU5GT19XSURUSCgmdmlk
ZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2aWRlb0luZm8pKTsKKyAgICBJbnRTaXpl
IHJvdGF0ZWRTaXplID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0
KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOworICAgIHVuc2lnbmVkIHRleHR1cmVJ
RCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFtZS5kYXRhWzBdKTsKIAot
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG91dHB1dFN1cmZhY2UgPSBhZG9wdFJlZihjYWly
b19nbF9zdXJmYWNlX2NyZWF0ZV9mb3JfdGV4dHVyZShnbENvbnRleHQtPmNhaXJvRGV2aWNlKCks
IENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsIG91dHB1dFRleHR1cmUsIHJvdGF0ZWRTaXplLndp
ZHRoKCksIHJvdGF0ZWRTaXplLmhlaWdodCgpKSk7Ci0gICAgaWYgKCFwYWludFRvQ2Fpcm9TdXJm
YWNlKG91dHB1dFN1cmZhY2UuZ2V0KCksIGdsQ29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgdmlkZW9J
bmZvLCBzaXplLCByb3RhdGVkU2l6ZSwgZmxpcFkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3Bp
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oKTsKIAot
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKG91dHB1dFRhcmdldCwgb3V0cHV0VGV4dHVyZSk7Ci0g
ICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShvdXRwdXRUYXJnZXQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX01JTl9GSUxURVIsIG1pbkZpbHRlcik7Ci0gICAgY29udGV4dC0+dGV4UGFyYW1l
dGVyaShvdXRwdXRUYXJnZXQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IG1hZ0ZpbHRlcik7CisgICAgYm9vbCBjb3BpZWQgPSBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgcm90YXRlZFNpemUud2lk
dGgoKSwgcm90YXRlZFNpemUuaGVpZ2h0KCksIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwg
bGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNl
T3JpZW50YXRpb24pOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgZ3N0X3ZpZGVvX2ZyYW1lX3Vu
bWFwKCZ2aWRlb0ZyYW1lKTsKKworICAgIHJldHVybiBjb3BpZWQ7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogfQogCiBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDM2YmQ4YTU2NDVi
MTE2M2I2NzUxNjNhMmU2ZTlmZDNiNTQ0MjNjYWIuLjJiNGUxOThkNmZkYTc5YTAzMDc1MWExODM3
ODkxYmM4OWJlY2RhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBJbnRSZWN0
OworY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOwogCiBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgfHwgKFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykpCkBAIC0yMDUsNiArMjA2
LDEwIEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBtX3ZpZGVv
U291cmNlT3JpZW50YXRpb247CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0dXJlQ29waWVy
OworI2VuZGlmCiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NjUzMWM3ODQzZDg5Y2E4Zjg5MTg4ZjRmMTRjMWNm
MjFhOTFkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDE5NCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKworIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorCisjaW5jbHVk
ZSAiR0xDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUg
InRleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPSB7IDAsIDAsIDEsIDAsIDEs
IDEsIDAsIDEgfTsKKworVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpWaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXIoKQorICAgIDogbV9mcmFtZWJ1ZmZlcigwKQorICAgICwgbV9mbGlwWShm
YWxzZSkKKyAgICAsIG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCisgICAg
LCBtX3dpZHRoKDApCisgICAgLCBtX2hlaWdodCgwKQorICAgICwgbV92Ym8oMCkKK3sKKyAgICBH
TENvbnRleHQqIHByZXZpb3VzQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgIFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29u
dGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIG1fY29udGV4dDNEID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJlbnRHTENvbnRleHQoKTsKKworICAgIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6VGV4dHVyZTsKKyAgICBtX3NoYWRlclByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6Y3JlYXRlKCptX2NvbnRleHQzRCwgb3B0aW9ucyk7CisKKyAgICBtX2ZyYW1l
YnVmZmVyID0gbV9jb250ZXh0M0QtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CisKKyAgICBtX3ZibyA9
IG1fY29udGV4dDNELT5jcmVhdGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQzRC0+YmluZEJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3Zibyk7CisgICAgbV9jb250ZXh0
M0QtPmJ1ZmZlckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKEdD
M0RmbG9hdCkgKiA4LCB2ZXJ0aWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsK
KworICAgIHVwZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgpOworCisgICAgcHJldmlvdXNDb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKK30KKworVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
Ojp+VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKCkKK3sKKyAgICBHTENvbnRleHQqIHByZXZp
b3VzQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgIFBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpLT5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKworICAgIG1fY29udGV4dDNELT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zy
YW1lYnVmZmVyKTsKKyAgICBtX2NvbnRleHQzRC0+ZGVsZXRlQnVmZmVyKG1fdmJvKTsKKyAgICBt
X3NoYWRlclByb2dyYW0gPSBudWxscHRyOworICAgIG1fY29udGV4dDNEID0gbnVsbHB0cjsKKwor
ICAgIHByZXZpb3VzQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Cit9CisKK3ZvaWQgVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGVUZXh0dXJlU3BhY2VNYXRyaXgoKQorewor
ICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4Lm1ha2VJZGVudGl0eSgpOworCisgICAgc3dpdGNoICht
X29yaWVudGF0aW9uKSB7CisgICAgY2FzZSBPcmlnaW5SaWdodFRvcDoKKyAgICAgICAgbV90ZXh0
dXJlU3BhY2VNYXRyaXgucm90YXRlKC05MCk7CisgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4
LnRyYW5zbGF0ZSgtMSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT3JpZ2luQm90dG9t
UmlnaHQ6CisgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnJvdGF0ZSgxODApOworICAgICAg
ICBtX3RleHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUoLTEsIC0xKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJp
eC5yb3RhdGUoLTI3MCk7CisgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgw
LCAtMSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIGlmICghbV9mbGlwWSkgeworICAgICAgICBtX3RleHR1
cmVTcGFjZU1hdHJpeC5mbGlwWSgpOworICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC50cmFu
c2xhdGUoMCwgLTEpOworICAgIH0KK30KKwordm9pZCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXI6OnVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCkKK3sKKyAgICBGbG9hdFJlY3QgdGFyZ2V0
UmVjdCA9IEZsb2F0UmVjdCgwLCAwLCBtX3dpZHRoLCBtX2hlaWdodCk7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgbV9tb2RlbFZpZXdNYXRyaXggPSBUcmFu
c2Zvcm1hdGlvbk1hdHJpeChpZGVudGl0eU1hdHJpeCkubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnJlY3RUb1JlY3QoRmxvYXRSZWN0KDAsIDAsIDEsIDEpLCB0YXJnZXRSZWN0KSk7CisK
KyAgICAvLyBUYWtlbiBmcm9tIFRleHR1cmVNYXBwZXJHTC4KKyAgICBjb25zdCBmbG9hdCBuZWFy
VmFsdWUgPSA5OTk5OTk5OworICAgIGNvbnN0IGZsb2F0IGZhclZhbHVlID0gLTk5OTk5OworCisg
ICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoMi4wIC8gZmxvYXQo
bV93aWR0aCksIDAsIDAsIDAsCisgICAgICAgIDAsICgtMi4wKSAvIGZsb2F0KG1faGVpZ2h0KSwg
MCwgMCwKKyAgICAgICAgMCwgMCwgLTIuZiAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSksIDAsCisg
ICAgICAgIC0xLCAxLCAtKGZhclZhbHVlICsgbmVhclZhbHVlKSAvIChmYXJWYWx1ZSAtIG5lYXJW
YWx1ZSksIDEpOworfQorCitib29sIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgaW5wdXRUZXh0dXJl
LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIFBsYXRmb3JtM0RPYmplY3Qgb3V0cHV0VGV4
dHVyZSwgR0MzRGVudW0gb3V0cHV0VGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbEZvcm1hdCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBib29sIGZsaXBZLCBJ
bWFnZU9yaWVudGF0aW9uJiBzb3VyY2VPcmllbnRhdGlvbikKK3sKKyAgICBpZiAoIW1fc2hhZGVy
UHJvZ3JhbSB8fCAhbV9mcmFtZWJ1ZmZlciB8fCAhbV92Ym8gfHwgIXdpZHRoIHx8ICFoZWlnaHQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3dpZHRoICE9IHdpZHRoIHx8IG1f
aGVpZ2h0ICE9IGhlaWdodCkgeworICAgICAgICBtX3dpZHRoID0gd2lkdGg7CisgICAgICAgIG1f
aGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICB1cGRhdGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwor
ICAgIH0KKworICAgIGlmIChtX2ZsaXBZICE9IGZsaXBZIHx8IG1fb3JpZW50YXRpb24gIT0gc291
cmNlT3JpZW50YXRpb24pIHsKKyAgICAgICAgbV9mbGlwWSA9IGZsaXBZOworICAgICAgICBtX29y
aWVudGF0aW9uID0gc291cmNlT3JpZW50YXRpb247CisgICAgICAgIHVwZGF0ZVRleHR1cmVTcGFj
ZU1hdHJpeCgpOworICAgIH0KKworICAgIC8vIFNhdmUgcHJldmlvdXMgY29udGV4dCBhbmQgYWN0
aXZhdGUgdGhlIHNoYXJpbmcgb25lLgorICAgIEdMQ29udGV4dCogcHJldmlvdXNDb250ZXh0ID0g
R0xDb250ZXh0OjpjdXJyZW50KCk7CisgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgp
OworCisgICAgLy8gU2F2ZSBwcmV2aW91cyBib3VuZCBmcmFtZWJ1ZmZlciwgdGV4dHVyZSBhbmQg
dmlld3BvcnQuCisgICAgR0MzRGludCBib3VuZEZyYW1lYnVmZmVyID0gMDsKKyAgICBHQzNEaW50
IGJvdW5kVGV4dHVyZSA9IDA7CisgICAgR0MzRGludCBwcmV2aW91c1ZpZXdwb3J0WzRdID0geyAw
LCAwLCAwLCAwfTsKKyAgICBtX2NvbnRleHQzRC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSX0JJTkRJTkcsICZib3VuZEZyYW1lYnVmZmVyKTsKKyAgICBtX2NvbnRl
eHQzRC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElOR18yRCwg
JmJvdW5kVGV4dHVyZSk7CisgICAgbV9jb250ZXh0M0QtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29u
dGV4dDNEOjpWSUVXUE9SVCwgcHJldmlvdXNWaWV3cG9ydCk7CisKKyAgICAvLyBTZXQgcHJvcGVy
IHBhcmFtZXRlcnMgdG8gdGhlIG91dHB1dCB0ZXh0dXJlIGFuZCBhbGxvY2F0ZSB1bmluaXRpYWxp
emVkIG1lbW9yeSBmb3IgaXQuCisgICAgbV9jb250ZXh0M0QtPmJpbmRUZXh0dXJlKG91dHB1dFRh
cmdldCwgb3V0cHV0VGV4dHVyZSk7CisgICAgbV9jb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01J
Tl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOworICAgIG1fY29udGV4dDNELT50
ZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsK
KyAgICBtX2NvbnRleHQzRC0+dGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQz
RDo6Q0xBTVBfVE9fRURHRSk7CisgICAgbV9jb250ZXh0M0QtPnRleEltYWdlMkREaXJlY3Qob3V0
cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIG1fd2lkdGgsIG1faGVpZ2h0LCAwLCBm
b3JtYXQsIHR5cGUsIG51bGxwdHIpOworCisgICAgLy8gQmluZCBmcmFtZWJ1ZmZlciB0byBwYWlu
dCBhbmQgYXR0YWNoIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIHRvIGl0LgorICAgIG1fY29udGV4
dDNELT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zy
YW1lYnVmZmVyKTsKKyAgICBtX2NvbnRleHQzRC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNI
TUVOVDAsIEdMX1RFWFRVUkVfMkQsIG91dHB1dFRleHR1cmUsIDApOworCisgICAgLy8gU2V0IHBy
b3BlciB3cmFwIHBhcmFtZXRlciB0byB0aGUgc291cmNlIHRleHR1cmUuCisgICAgbV9jb250ZXh0
M0QtPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGlucHV0VGV4dHVyZSk7CisgICAgbV9jb250
ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpOworICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4UGFyYW1ldGVyZihH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
V1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisKKyAgICAvLyBTZXQg
dGhlIHZpZXdwb3J0LgorICAgIG1fY29udGV4dDNELT52aWV3cG9ydCgwLCAwLCBtX3dpZHRoLCBt
X2hlaWdodCk7CisKKyAgICAvLyBTZXQgcHJvZ3JhbSBwYXJhbWV0ZXJzLgorICAgIG1fY29udGV4
dDNELT51c2VQcm9ncmFtKG1fc2hhZGVyUHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIG1fY29u
dGV4dDNELT51bmlmb3JtMWkobV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7
CisgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFtLT5tb2RlbFZp
ZXdNYXRyaXhMb2NhdGlvbigpLCBtX21vZGVsVmlld01hdHJpeCk7CisgICAgbV9zaGFkZXJQcm9n
cmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFtLT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24o
KSwgbV9wcm9qZWN0aW9uTWF0cml4KTsKKyAgICBtX3NoYWRlclByb2dyYW0tPnNldE1hdHJpeCht
X3NoYWRlclByb2dyYW0tPnRleHR1cmVTcGFjZU1hdHJpeExvY2F0aW9uKCksIG1fdGV4dHVyZVNw
YWNlTWF0cml4KTsKKworICAgIC8vIFBlcmZvcm0gdGhlIGNvcHkuCisgICAgbV9jb250ZXh0M0Qt
PmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24o
KSk7CisgICAgbV9jb250ZXh0M0QtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZ
X0JVRkZFUiwgbV92Ym8pOworICAgIG1fY29udGV4dDNELT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1f
c2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24oKSwgMiwgR3JhcGhpY3NDb250ZXh0M0Q6OkZM
T0FULCBmYWxzZSwgMCwgMCk7CisgICAgbV9jb250ZXh0M0QtPmRyYXdBcnJheXMoR3JhcGhpY3ND
b250ZXh0M0Q6OlRSSUFOR0xFX0ZBTiwgMCwgNCk7CisgICAgbV9jb250ZXh0M0QtPmJpbmRCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCk7CisgICAgbV9jb250ZXh0M0Qt
PmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3NoYWRlclByb2dyYW0tPnZlcnRleExvY2F0aW9u
KCkpOworCisgICAgLy8gUmVzdG9yZSBwcmV2aW91cyBiaW5kaW5ncyBhbmQgdmlld3BvcnQuCisg
ICAgbV9jb250ZXh0M0QtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIGJvdW5kRnJhbWVidWZmZXIpOworICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShv
dXRwdXRUYXJnZXQsIGJvdW5kVGV4dHVyZSk7CisgICAgbV9jb250ZXh0M0QtPnZpZXdwb3J0KHBy
ZXZpb3VzVmlld3BvcnRbMF0sIHByZXZpb3VzVmlld3BvcnRbMV0sIHByZXZpb3VzVmlld3BvcnRb
Ml0sIHByZXZpb3VzVmlld3BvcnRbM10pOworCisgICAgLy8gUmVzdG9yZSBwcmV2aW91cyBjb250
ZXh0LgorICAgIHByZXZpb3VzQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICBy
ZXR1cm4gIW1fY29udGV4dDNELT5nZXRFcnJvcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
VGV4dHVyZUNvcGllckdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1OGZhYThkOTgyOWFiMjZmZDg5
MTA1YTkxNjY3Y2UwYjRmNjdlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKwor
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXJfaAorI2RlZmluZSBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXJfaAorCisjaWYgVVNFKEdT
VFJFQU1FUl9HTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTsKK2NsYXNzIEltYWdlT3JpZW50YXRpb247CisKK2Ns
YXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lciB7CitwdWJsaWM6CisgICAgVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyKCk7CisgICAgflZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcigp
OworCisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoUGxhdGZvcm0z
RE9iamVjdCBpbnB1dFRleHR1cmUsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgUGxhdGZv
cm0zRE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24mIHNvdXJjZU9yaWVudGF0aW9uKTsK
KyAgICB2b2lkIHVwZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgpOworICAgIHZvaWQgdXBkYXRlVHJh
bnNmb3JtYXRpb25NYXRyaXgoKTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1fY29udGV4dDNEOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bT4gbV9zaGFkZXJQcm9ncmFtOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mcmFtZWJ1ZmZlcjsK
KyAgICBib29sIG1fZmxpcFk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwor
ICAgIHNpemVfdCBtX3dpZHRoOworICAgIHNpemVfdCBtX2hlaWdodDsKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX21vZGVsVmlld01hdHJpeDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
X3Byb2plY3Rpb25NYXRyaXg7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV90ZXh0dXJlU3Bh
Y2VNYXRyaXg7CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX3ZibzsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCisKKyNlbmRpZiAvLyBW
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290700</attachid>
            <date>2016-10-05 02:45:17 -0700</date>
            <delta_ts>2016-10-06 01:05:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162904-20161005114204.patch</filename>
            <type>text/plain</type>
            <size>18434</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZmZDY0NzFjZGEwNTU3
ZDY5OGNiMDI2ODFlZmUyM2U1NmMxMjNlOC4uMGI1MzY5ZGRlMmMzZDhmYzE5YjRiNTkyOGNlM2Rj
ZWM4YjY4OTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTEwLTA0ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQ29weWluZyB2
aWRlbyB0ZXh0dXJlcyB0byB3ZWJnbCBzaG91bGQgbm90IGRlcGVuZCBvbiBjYWlyby1nbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGVyZm9ybSB0aGUg
dGV4dHVyZSBjb3B5IHdpdGhvdXQgdXNpbmcgY2Fpcm8tZ2wuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGVudCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToK
KyAgICAgICAgQWRkIHRoZSBuZXcgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIGNsYXNzIHRv
IHRoZSBidWlsZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUpOgorICAgICAgICBVc2UgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIHRvIHBlcmZvcm0g
dGhlIGNvcHkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgQWRkIGEgVmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyIGFzIGEgY2xhc3MgYXR0cmlidXRlLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGll
ckdTdHJlYW1lcjo6flZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRleHR1cmVTcGFjZU1hdHJp
eCk6CisgICAgICAgIFJlY2FsY3VsYXRlcyB0aGUgbWF0cml4IHVzZWQgYXMgdGhlIHRleHR1cmUg
Y29vcmRpbmF0ZXMgdHJhbnNmb3JtYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAg
UmVjYWxjdWxhdGVzIHRoZSBtYXRyaWNlcyB1c2VkIGFzIHRoZSB2ZXJ0aWNlcyBjb29yZGluYXRl
cyB0cmFuc2Zvcm1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgUGVy
Zm9ybXMgdGhlIHRleHR1cmUgY29weSBieSB1c2luZyBhIHNoYWRlciB0aGF0IGFwcGxpZXMgdGhl
IHJvdGF0aW9uIG5lZWRlZCB0byBmb2xsb3cKKyAgICAgICAgdGhlIHZpZGVvIG9yaWVudGF0aW9u
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXIuaDogQWRkZWQuCisKIDIwMTYtMTAtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBCaW5kaW5ncyBkbyBub3QgdGhyb3cgYSBUeXBlRXJyb3Ig
aWYgYSByZXF1aXJlZCBkaWN0aW9uYXJ5IG1lbWJlciBpcyBtaXNzaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggY2FmNTM3MzY2MmNlYTAxYzY0ZmU2YWU0ZGUw
MWUxYWE1ZWQxMTU3My4uMDMxYzlmMTk1NGY0MDc0MjI4ZjQ4MGU2ZjZkYjg2N2FjZDlkMjY0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtODgsNiArODgsOSBA
QCBpZiAoRU5BQkxFX1ZJREVPKQogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklF
UwogICAgICAgICAgICAgJHtHU1RSRUFNRVJfR0xfTElCUkFSSUVTfQogICAgICAgICApCisgICAg
ICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAKKyAgICAgICAg
KQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggYjJmZWRiMGI2N2RiZmQ0ZjMyZmRk
ZjI1OTEyZWZjNWMyNWRkZTVjZC4uMDFlMjY5NWRmYjU2MDgxNzRkMjNkYzc4Yjk2MjJlZjRiYmFi
MDRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2lmIFBMQVRGT1JNKFgxMSkgJiYgR1NUX0dM
X0hBVkVfUExBVEZPUk1fRUdMCiAjdW5kZWYgTm9uZQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkg
JiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCisjaW5jbHVkZSAiVmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyLmgiCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKIAogI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKQEAgLTc3OSw5ICs3ODAsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvdXRw
dQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGxhdGZvcm0z
RE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKLSNpZiAhVVNFKENBSVJP
KQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOwogCiAgICAgaWYgKG1fdXNpbmdGYWxsYmFja1ZpZGVvU2lu
aykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzg5LDMxICs3ODksMzMgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3MKICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKLSAgICBJbnRTaXplIHNpemUs
IHJvdGF0ZWRTaXplOwogICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBs
ZU11dGV4KTsKLSAgICBHTENvbnRleHQqIGdsQ29udGV4dCA9IHByZXBhcmVDb250ZXh0Rm9yQ2Fp
cm9QYWludCh2aWRlb0luZm8sIHNpemUsIHJvdGF0ZWRTaXplKTsKLSAgICBpZiAoIWdsQ29udGV4
dCkKKworICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgaWYgKCFnZXRTYW1wbGVWaWRl
b0luZm8obV9zYW1wbGUuZ2V0KCksIHZpZGVvSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxl
LmdldCgpKTsKKyAgICBHc3RWaWRlb0ZyYW1lIHZpZGVvRnJhbWU7CisgICAgaWYgKCFnc3Rfdmlk
ZW9fZnJhbWVfbWFwKCZ2aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIHN0YXRpY19jYXN0
PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vIEFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZvciB0aGUg
b3V0cHV0IHRleHR1cmUuCi0gICAgY29udGV4dC0+YmluZFRleHR1cmUob3V0cHV0VGFyZ2V0LCBv
dXRwdXRUZXh0dXJlKTsKLSAgICBjb250ZXh0LT50ZXhJbWFnZTJERGlyZWN0KG91dHB1dFRhcmdl
dCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCByb3RhdGVkU2l6ZS53aWR0aCgpLCByb3RhdGVkU2l6
ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBJbnRTaXplIHNpemUo
R1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCgm
dmlkZW9JbmZvKSk7CisgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpKQorICAgICAgICBzaXplID0gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgIHVu
c2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFt
ZS5kYXRhWzBdKTsKIAotICAgIC8vIGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJl
IHNldHMgdGhlc2UgcGFyYW1ldGVycyB0byBHTF9ORUFSRVNULCBzbyB3ZSBuZWVkIHRvIGJhY2t1
cCB0aGVtLgotICAgIEdDM0RpbnQgbWluRmlsdGVyLCBtYWdGaWx0ZXI7Ci0gICAgY29udGV4dC0+
Z2V0VGV4UGFyYW1ldGVyaXYob3V0cHV0VGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsICZt
aW5GaWx0ZXIpOwotICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KG91dHB1dFRhcmdldCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCAmbWFnRmlsdGVyKTsKKyAgICBpZiAoIW1fdmlkZW9UZXh0
dXJlQ29waWVyKQorICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlx
dWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPigpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gb3V0cHV0U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRl
X2Zvcl90ZXh0dXJlKGdsQ29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVOVF9DT0xP
Ul9BTFBIQSwgb3V0cHV0VGV4dHVyZSwgcm90YXRlZFNpemUud2lkdGgoKSwgcm90YXRlZFNpemUu
aGVpZ2h0KCkpKTsKLSAgICBpZiAoIXBhaW50VG9DYWlyb1N1cmZhY2Uob3V0cHV0U3VyZmFjZS5n
ZXQoKSwgZ2xDb250ZXh0LT5jYWlyb0RldmljZSgpLCB2aWRlb0luZm8sIHNpemUsIHJvdGF0ZWRT
aXplLCBmbGlwWSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIGNvcGllZCA9IG1f
dmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4
dHVyZUlELCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsK
IAotICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKG91dHB1dFRhcmdldCwgb3V0cHV0VGV4dHVyZSk7
Ci0gICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShvdXRwdXRUYXJnZXQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIG1pbkZpbHRlcik7Ci0gICAgY29udGV4dC0+dGV4UGFy
YW1ldGVyaShvdXRwdXRUYXJnZXQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxU
RVIsIG1hZ0ZpbHRlcik7CisgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsK
IAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBjb3BpZWQ7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogfQogCiBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDM2YmQ4YTU2NDVi
MTE2M2I2NzUxNjNhMmU2ZTlmZDNiNTQ0MjNjYWIuLjJiNGUxOThkNmZkYTc5YTAzMDc1MWExODM3
ODkxYmM4OWJlY2RhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBJbnRSZWN0
OworY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOwogCiBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgfHwgKFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykpCkBAIC0yMDUsNiArMjA2
LDEwIEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBtX3ZpZGVv
U291cmNlT3JpZW50YXRpb247CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0dXJlQ29waWVy
OworI2VuZGlmCiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiYjhiOWJjZGE3NGZlNWMyODg5MjVmYTkyMDA4N2Y0
NGFkYTRkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDE5MCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKworIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorCisjaW5jbHVk
ZSAiR0xDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIo
KQoreworICAgIEdMQ29udGV4dCogcHJldmlvdXNDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50
KCk7CisgICAgQVNTRVJUKHByZXZpb3VzQ29udGV4dCk7CisgICAgUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250
ZXh0Q3VycmVudCgpOworCisgICAgbV9jb250ZXh0M0QgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlRm9yQ3VycmVudEdMQ29udGV4dCgpOworCisgICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZSgqbV9jb250ZXh0M0QsIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpUZXh0dXJlKTsKKworICAgIG1fZnJhbWVidWZmZXIgPSBtX2NvbnRleHQz
RC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKworICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IHZlcnRp
Y2VzW10gPSB7IDAsIDAsIDEsIDAsIDEsIDEsIDAsIDEgfTsKKyAgICBtX3ZibyA9IG1fY29udGV4
dDNELT5jcmVhdGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQzRC0+YmluZEJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3Zibyk7CisgICAgbV9jb250ZXh0M0QtPmJ1ZmZl
ckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKEdDM0RmbG9hdCkg
KiA4LCB2ZXJ0aWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsKKworICAgIHVw
ZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgpOworCisgICAgcHJldmlvdXNDb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKK30KKworVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp+VmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyKCkKK3sKKyAgICBHTENvbnRleHQqIHByZXZpb3VzQ29udGV4
dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgIEFTU0VSVChwcmV2aW91c0NvbnRleHQpOwor
ICAgIFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmlu
Z0dMQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIG1fY29udGV4dDNELT5k
ZWxldGVGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKKyAgICBtX2NvbnRleHQzRC0+ZGVsZXRl
QnVmZmVyKG1fdmJvKTsKKyAgICBtX3NoYWRlclByb2dyYW0gPSBudWxscHRyOworICAgIG1fY29u
dGV4dDNEID0gbnVsbHB0cjsKKworICAgIHByZXZpb3VzQ29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7Cit9CisKK3ZvaWQgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGVUZXh0
dXJlU3BhY2VNYXRyaXgoKQoreworICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4Lm1ha2VJZGVudGl0
eSgpOworCisgICAgc3dpdGNoIChtX29yaWVudGF0aW9uKSB7CisgICAgY2FzZSBPcmlnaW5SaWdo
dFRvcDoKKyAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgucm90YXRlKC05MCk7CisgICAgICAg
IG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgtMSwgMCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CisgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4
LnJvdGF0ZSgxODApOworICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUoLTEs
IC0xKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgICAg
ICBtX3RleHR1cmVTcGFjZU1hdHJpeC5yb3RhdGUoLTI3MCk7CisgICAgICAgIG1fdGV4dHVyZVNw
YWNlTWF0cml4LnRyYW5zbGF0ZSgwLCAtMSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGlmICghbV9mbGlw
WSkgeworICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC5mbGlwWSgpOworICAgICAgICBtX3Rl
eHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUoMCwgLTEpOworICAgIH0KK30KKwordm9pZCBWaWRl
b1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCkKK3sK
KyAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fc2l6
ZSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgbV9tb2Rl
bFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChpZGVudGl0eU1hdHJpeCkubXVsdGlw
bHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoRmxvYXRSZWN0KDAsIDAsIDEsIDEp
LCB0YXJnZXRSZWN0KSk7CisKKyAgICAvLyBUYWtlbiBmcm9tIFRleHR1cmVNYXBwZXJHTC4KKyAg
ICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSA5OTk5OTk5OworICAgIGNvbnN0IGZsb2F0IGZhclZh
bHVlID0gLTk5OTk5OworCisgICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gVHJhbnNmb3JtYXRpb25N
YXRyaXgoMi4wIC8gZmxvYXQobV9zaXplLndpZHRoKCkpLCAwLCAwLCAwLAorICAgICAgICAwLCAo
LTIuMCkgLyBmbG9hdChtX3NpemUuaGVpZ2h0KCkpLCAwLCAwLAorICAgICAgICAwLCAwLCAtMi5m
IC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSwgMCwKKyAgICAgICAgLTEsIDEsIC0oZmFyVmFsdWUg
KyBuZWFyVmFsdWUpIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSwgMSk7Cit9CisKK2Jvb2wgVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoUGxhdGZvcm0zRE9iamVjdCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgUGxh
dGZvcm0zRE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0Rp
bnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24mIHNvdXJjZU9yaWVudGF0aW9u
KQoreworICAgIGlmICghbV9zaGFkZXJQcm9ncmFtIHx8ICFtX2ZyYW1lYnVmZmVyIHx8ICFtX3Zi
byB8fCBmcmFtZVNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAobV9zaXplICE9IGZyYW1lU2l6ZSkgeworICAgICAgICBtX3NpemUgPSBmcmFtZVNpemU7Cisg
ICAgICAgIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisgICAgfQorCisgICAgaWYgKG1f
ZmxpcFkgIT0gZmxpcFkgfHwgbV9vcmllbnRhdGlvbiAhPSBzb3VyY2VPcmllbnRhdGlvbikgewor
ICAgICAgICBtX2ZsaXBZID0gZmxpcFk7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBzb3VyY2VP
cmllbnRhdGlvbjsKKyAgICAgICAgdXBkYXRlVGV4dHVyZVNwYWNlTWF0cml4KCk7CisgICAgfQor
CisgICAgLy8gU2F2ZSBwcmV2aW91cyBjb250ZXh0IGFuZCBhY3RpdmF0ZSB0aGUgc2hhcmluZyBv
bmUuCisgICAgR0xDb250ZXh0KiBwcmV2aW91c0NvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQo
KTsKKyAgICBBU1NFUlQocHJldmlvdXNDb250ZXh0KTsKKyAgICBQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKS0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7CisKKyAgICAvLyBTYXZlIHByZXZpb3VzIGJvdW5kIGZyYW1lYnVmZmVyLCB0
ZXh0dXJlIGFuZCB2aWV3cG9ydC4KKyAgICBHQzNEaW50IGJvdW5kRnJhbWVidWZmZXIgPSAwOwor
ICAgIEdDM0RpbnQgYm91bmRUZXh0dXJlID0gMDsKKyAgICBHQzNEaW50IHByZXZpb3VzVmlld3Bv
cnRbNF0gPSB7IDAsIDAsIDAsIDB9OworICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQklORElORywgJmJvdW5kRnJhbWVidWZmZXIpOwor
ICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9C
SU5ESU5HXzJELCAmYm91bmRUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+Z2V0SW50ZWdlcnYo
R3JhcGhpY3NDb250ZXh0M0Q6OlZJRVdQT1JULCBwcmV2aW91c1ZpZXdwb3J0KTsKKworICAgIC8v
IFNldCBwcm9wZXIgcGFyYW1ldGVycyB0byB0aGUgb3V0cHV0IHRleHR1cmUgYW5kIGFsbG9jYXRl
IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZvciBpdC4KKyAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1
cmUob3V0cHV0VGFyZ2V0LCBvdXRwdXRUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgbV9j
b250ZXh0M0QtPnRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1Q
X1RPX0VER0UpOworICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBo
aWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4SW1hZ2Uy
RERpcmVjdChvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgbV9zaXplLndpZHRo
KCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKworICAgIC8v
IEJpbmQgZnJhbWVidWZmZXIgdG8gcGFpbnQgYW5kIGF0dGFjaCB0aGUgZGVzdGluYXRpb24gdGV4
dHVyZSB0byBpdC4KKyAgICBtX2NvbnRleHQzRC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlcik7CisgICAgbV9jb250ZXh0M0QtPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBvdXRwdXRUZXh0
dXJlLCAwKTsKKworICAgIC8vIFNldCBwcm9wZXIgd3JhcCBwYXJhbWV0ZXIgdG8gdGhlIHNvdXJj
ZSB0ZXh0dXJlLgorICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBp
bnB1dFRleHR1cmUpOworICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVS
LCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4UGFyYW1l
dGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgbV9j
b250ZXh0M0QtPnRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1Q
X1RPX0VER0UpOworCisgICAgLy8gU2V0IHRoZSB2aWV3cG9ydC4KKyAgICBtX2NvbnRleHQzRC0+
dmlld3BvcnQoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICAv
LyBTZXQgcHJvZ3JhbSBwYXJhbWV0ZXJzLgorICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFtKG1f
c2hhZGVyUHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIG1fY29udGV4dDNELT51bmlmb3JtMWko
bV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7CisgICAgbV9zaGFkZXJQcm9n
cmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFtLT5tb2RlbFZpZXdNYXRyaXhMb2NhdGlvbigp
LCBtX21vZGVsVmlld01hdHJpeCk7CisgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9z
aGFkZXJQcm9ncmFtLT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgbV9wcm9qZWN0aW9uTWF0
cml4KTsKKyAgICBtX3NoYWRlclByb2dyYW0tPnNldE1hdHJpeChtX3NoYWRlclByb2dyYW0tPnRl
eHR1cmVTcGFjZU1hdHJpeExvY2F0aW9uKCksIG1fdGV4dHVyZVNwYWNlTWF0cml4KTsKKworICAg
IC8vIFBlcmZvcm0gdGhlIGNvcHkuCisgICAgbV9jb250ZXh0M0QtPmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KG1fc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24oKSk7CisgICAgbV9jb250ZXh0
M0QtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV92Ym8pOwor
ICAgIG1fY29udGV4dDNELT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyUHJvZ3JhbS0+dmVy
dGV4TG9jYXRpb24oKSwgMiwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgMCwgMCk7
CisgICAgbV9jb250ZXh0M0QtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xF
X0ZBTiwgMCwgNCk7CisgICAgbV9jb250ZXh0M0QtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkFSUkFZX0JVRkZFUiwgMCk7CisgICAgbV9jb250ZXh0M0QtPmRpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShtX3NoYWRlclByb2dyYW0tPnZlcnRleExvY2F0aW9uKCkpOworICAgIG1fY29udGV4
dDNELT51c2VQcm9ncmFtKDApOworCisgICAgLy8gUmVzdG9yZSBwcmV2aW91cyBiaW5kaW5ncyBh
bmQgdmlld3BvcnQuCisgICAgbV9jb250ZXh0M0QtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIGJvdW5kRnJhbWVidWZmZXIpOworICAgIG1fY29udGV4dDNE
LT5iaW5kVGV4dHVyZShvdXRwdXRUYXJnZXQsIGJvdW5kVGV4dHVyZSk7CisgICAgbV9jb250ZXh0
M0QtPnZpZXdwb3J0KHByZXZpb3VzVmlld3BvcnRbMF0sIHByZXZpb3VzVmlld3BvcnRbMV0sIHBy
ZXZpb3VzVmlld3BvcnRbMl0sIHByZXZpb3VzVmlld3BvcnRbM10pOworCisgICAgYm9vbCBvayA9
IChtX2NvbnRleHQzRC0+Z2V0RXJyb3IoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1Ip
OworCisgICAgLy8gUmVzdG9yZSBwcmV2aW91cyBjb250ZXh0LgorICAgIHByZXZpb3VzQ29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG9rOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNDgyNWQzYWYx
MGM3YjUxZjY3MzY1N2NhOWUxOGY5NDE3N2U1NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0
cmVhbWVyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlh
IFMuTC4KKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBWaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXJfaAorI2RlZmluZSBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXJfaAorCisj
aWYgVVNFKEdTVFJFQU1FUl9HTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTsKK2NsYXNzIEltYWdlT3JpZW50YXRp
b247CisKK2NsYXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lciB7CitwdWJsaWM6CisgICAg
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKCk7CisgICAgflZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lcigpOworCisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
UGxhdGZvcm0zRE9iamVjdCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgUGxhdGZv
cm0zRE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24mIHNvdXJjZU9yaWVudGF0aW9uKTsK
KyAgICB2b2lkIHVwZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgpOworICAgIHZvaWQgdXBkYXRlVHJh
bnNmb3JtYXRpb25NYXRyaXgoKTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1fY29udGV4dDNEOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bT4gbV9zaGFkZXJQcm9ncmFtOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mcmFtZWJ1ZmZlciA9
IDA7CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX3ZibyA9IDA7CisgICAgYm9vbCBtX2ZsaXBZID0g
ZmFsc2U7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOworICAgIEludFNpemUg
bV9zaXplOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fbW9kZWxWaWV3TWF0cml4OworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJpeDsKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX3RleHR1cmVTcGFjZU1hdHJpeDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCisKKyNlbmRpZiAvLyBWaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290792</attachid>
            <date>2016-10-06 01:05:30 -0700</date>
            <delta_ts>2016-10-06 03:55:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162904-20161006100215.patch</filename>
            <type>text/plain</type>
            <size>18440</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZmZDY0NzFjZGEwNTU3
ZDY5OGNiMDI2ODFlZmUyM2U1NmMxMjNlOC4uMGI1MzY5ZGRlMmMzZDhmYzE5YjRiNTkyOGNlM2Rj
ZWM4YjY4OTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTEwLTA0ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQ29weWluZyB2
aWRlbyB0ZXh0dXJlcyB0byB3ZWJnbCBzaG91bGQgbm90IGRlcGVuZCBvbiBjYWlyby1nbAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGVyZm9ybSB0aGUg
dGV4dHVyZSBjb3B5IHdpdGhvdXQgdXNpbmcgY2Fpcm8tZ2wuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGVudCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToK
KyAgICAgICAgQWRkIHRoZSBuZXcgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIGNsYXNzIHRv
IHRoZSBidWlsZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUpOgorICAgICAgICBVc2UgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIHRvIHBlcmZvcm0g
dGhlIGNvcHkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgQWRkIGEgVmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyIGFzIGEgY2xhc3MgYXR0cmlidXRlLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGll
ckdTdHJlYW1lcjo6flZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRleHR1cmVTcGFjZU1hdHJp
eCk6CisgICAgICAgIFJlY2FsY3VsYXRlcyB0aGUgbWF0cml4IHVzZWQgYXMgdGhlIHRleHR1cmUg
Y29vcmRpbmF0ZXMgdHJhbnNmb3JtYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAg
UmVjYWxjdWxhdGVzIHRoZSBtYXRyaWNlcyB1c2VkIGFzIHRoZSB2ZXJ0aWNlcyBjb29yZGluYXRl
cyB0cmFuc2Zvcm1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgUGVy
Zm9ybXMgdGhlIHRleHR1cmUgY29weSBieSB1c2luZyBhIHNoYWRlciB0aGF0IGFwcGxpZXMgdGhl
IHJvdGF0aW9uIG5lZWRlZCB0byBmb2xsb3cKKyAgICAgICAgdGhlIHZpZGVvIG9yaWVudGF0aW9u
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXIuaDogQWRkZWQuCisKIDIwMTYtMTAtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBCaW5kaW5ncyBkbyBub3QgdGhyb3cgYSBUeXBlRXJyb3Ig
aWYgYSByZXF1aXJlZCBkaWN0aW9uYXJ5IG1lbWJlciBpcyBtaXNzaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UKaW5kZXggY2FmNTM3MzY2MmNlYTAxYzY0ZmU2YWU0ZGUw
MWUxYWE1ZWQxMTU3My4uMDMxYzlmMTk1NGY0MDc0MjI4ZjQ4MGU2ZjZkYjg2N2FjZDlkMjY0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtODgsNiArODgsOSBA
QCBpZiAoRU5BQkxFX1ZJREVPKQogICAgICAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklF
UwogICAgICAgICAgICAgJHtHU1RSRUFNRVJfR0xfTElCUkFSSUVTfQogICAgICAgICApCisgICAg
ICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAKKyAgICAgICAg
KQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggYjJmZWRiMGI2N2RiZmQ0ZjMyZmRk
ZjI1OTEyZWZjNWMyNWRkZTVjZC4uMDFlMjY5NWRmYjU2MDgxNzRkMjNkYzc4Yjk2MjJlZjRiYmFi
MDRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2lmIFBMQVRGT1JNKFgxMSkgJiYgR1NUX0dM
X0hBVkVfUExBVEZPUk1fRUdMCiAjdW5kZWYgTm9uZQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkg
JiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCisjaW5jbHVkZSAiVmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyLmgiCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9HTCkKIAogI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKQEAgLTc3OSw5ICs3ODAsOCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvdXRw
dQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGxhdGZvcm0z
RE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKLSNpZiAhVVNFKENBSVJP
KQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAg
VU5VU0VEX1BBUkFNKGNvbnRleHQpOwogCiAgICAgaWYgKG1fdXNpbmdGYWxsYmFja1ZpZGVvU2lu
aykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzg5LDMxICs3ODksMzMgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3MKICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKLSAgICBJbnRTaXplIHNpemUs
IHJvdGF0ZWRTaXplOwogICAgIFdURjo6R011dGV4TG9ja2VyPEdNdXRleD4gbG9jayhtX3NhbXBs
ZU11dGV4KTsKLSAgICBHTENvbnRleHQqIGdsQ29udGV4dCA9IHByZXBhcmVDb250ZXh0Rm9yQ2Fp
cm9QYWludCh2aWRlb0luZm8sIHNpemUsIHJvdGF0ZWRTaXplKTsKLSAgICBpZiAoIWdsQ29udGV4
dCkKKworICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgaWYgKCFnZXRTYW1wbGVWaWRl
b0luZm8obV9zYW1wbGUuZ2V0KCksIHZpZGVvSW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxl
LmdldCgpKTsKKyAgICBHc3RWaWRlb0ZyYW1lIHZpZGVvRnJhbWU7CisgICAgaWYgKCFnc3Rfdmlk
ZW9fZnJhbWVfbWFwKCZ2aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBidWZmZXIsIHN0YXRpY19jYXN0
PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vIEFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZvciB0aGUg
b3V0cHV0IHRleHR1cmUuCi0gICAgY29udGV4dC0+YmluZFRleHR1cmUob3V0cHV0VGFyZ2V0LCBv
dXRwdXRUZXh0dXJlKTsKLSAgICBjb250ZXh0LT50ZXhJbWFnZTJERGlyZWN0KG91dHB1dFRhcmdl
dCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCByb3RhdGVkU2l6ZS53aWR0aCgpLCByb3RhdGVkU2l6
ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKyAgICBJbnRTaXplIHNpemUo
R1NUX1ZJREVPX0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCgm
dmlkZW9JbmZvKSk7CisgICAgaWYgKG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpKQorICAgICAgICBzaXplID0gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgIHVu
c2lnbmVkIHRleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PHVuc2lnbmVkKj4odmlkZW9GcmFt
ZS5kYXRhWzBdKTsKIAotICAgIC8vIGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJl
IHNldHMgdGhlc2UgcGFyYW1ldGVycyB0byBHTF9ORUFSRVNULCBzbyB3ZSBuZWVkIHRvIGJhY2t1
cCB0aGVtLgotICAgIEdDM0RpbnQgbWluRmlsdGVyLCBtYWdGaWx0ZXI7Ci0gICAgY29udGV4dC0+
Z2V0VGV4UGFyYW1ldGVyaXYob3V0cHV0VGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsICZt
aW5GaWx0ZXIpOwotICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KG91dHB1dFRhcmdldCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCAmbWFnRmlsdGVyKTsKKyAgICBpZiAoIW1fdmlkZW9UZXh0
dXJlQ29waWVyKQorICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlx
dWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPigpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gb3V0cHV0U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRl
X2Zvcl90ZXh0dXJlKGdsQ29udGV4dC0+Y2Fpcm9EZXZpY2UoKSwgQ0FJUk9fQ09OVEVOVF9DT0xP
Ul9BTFBIQSwgb3V0cHV0VGV4dHVyZSwgcm90YXRlZFNpemUud2lkdGgoKSwgcm90YXRlZFNpemUu
aGVpZ2h0KCkpKTsKLSAgICBpZiAoIXBhaW50VG9DYWlyb1N1cmZhY2Uob3V0cHV0U3VyZmFjZS5n
ZXQoKSwgZ2xDb250ZXh0LT5jYWlyb0RldmljZSgpLCB2aWRlb0luZm8sIHNpemUsIHJvdGF0ZWRT
aXplLCBmbGlwWSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBib29sIGNvcGllZCA9IG1f
dmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4
dHVyZUlELCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsK
IAotICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKG91dHB1dFRhcmdldCwgb3V0cHV0VGV4dHVyZSk7
Ci0gICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaShvdXRwdXRUYXJnZXQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIG1pbkZpbHRlcik7Ci0gICAgY29udGV4dC0+dGV4UGFy
YW1ldGVyaShvdXRwdXRUYXJnZXQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxU
RVIsIG1hZ0ZpbHRlcik7CisgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1lKTsK
IAotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBjb3BpZWQ7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogfQogCiBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDM2YmQ4YTU2NDVi
MTE2M2I2NzUxNjNhMmU2ZTlmZDNiNTQ0MjNjYWIuLjJiNGUxOThkNmZkYTc5YTAzMDc1MWExODM3
ODkxYmM4OWJlY2RhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBJbnRSZWN0
OworY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOwogCiBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkgfHwgKFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykpCkBAIC0yMDUsNiArMjA2
LDEwIEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBtX3ZpZGVv
U291cmNlT3JpZW50YXRpb247CisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0dXJlQ29waWVy
OworI2VuZGlmCiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiYjhiOWJjZGE3NGZlNWMyODg5MjVmYTkyMDA4N2Y0
NGFkYTRkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDE5MCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKworIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyLmgiCisKKyNpZiBVU0UoR1NUUkVBTUVSX0dMKQorCisjaW5jbHVk
ZSAiR0xDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIo
KQoreworICAgIEdMQ29udGV4dCogcHJldmlvdXNDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50
KCk7CisgICAgQVNTRVJUKHByZXZpb3VzQ29udGV4dCk7CisgICAgUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250
ZXh0Q3VycmVudCgpOworCisgICAgbV9jb250ZXh0M0QgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlRm9yQ3VycmVudEdMQ29udGV4dCgpOworCisgICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZSgqbV9jb250ZXh0M0QsIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpUZXh0dXJlKTsKKworICAgIG1fZnJhbWVidWZmZXIgPSBtX2NvbnRleHQz
RC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKKworICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IHZlcnRp
Y2VzW10gPSB7IDAsIDAsIDEsIDAsIDEsIDEsIDAsIDEgfTsKKyAgICBtX3ZibyA9IG1fY29udGV4
dDNELT5jcmVhdGVCdWZmZXIoKTsKKyAgICBtX2NvbnRleHQzRC0+YmluZEJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSLCBtX3Zibyk7CisgICAgbV9jb250ZXh0M0QtPmJ1ZmZl
ckRhdGEoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgc2l6ZW9mKEdDM0RmbG9hdCkg
KiA4LCB2ZXJ0aWNlcywgR3JhcGhpY3NDb250ZXh0M0Q6OlNUQVRJQ19EUkFXKTsKKworICAgIHVw
ZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgpOworCisgICAgcHJldmlvdXNDb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKK30KKworVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp+VmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyKCkKK3sKKyAgICBHTENvbnRleHQqIHByZXZpb3VzQ29udGV4
dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgIEFTU0VSVChwcmV2aW91c0NvbnRleHQpOwor
ICAgIFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmlu
Z0dMQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgIG1fY29udGV4dDNELT5k
ZWxldGVGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsKKyAgICBtX2NvbnRleHQzRC0+ZGVsZXRl
QnVmZmVyKG1fdmJvKTsKKyAgICBtX3NoYWRlclByb2dyYW0gPSBudWxscHRyOworICAgIG1fY29u
dGV4dDNEID0gbnVsbHB0cjsKKworICAgIHByZXZpb3VzQ29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7Cit9CisKK3ZvaWQgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjp1cGRhdGVUZXh0
dXJlU3BhY2VNYXRyaXgoKQoreworICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4Lm1ha2VJZGVudGl0
eSgpOworCisgICAgc3dpdGNoIChtX29yaWVudGF0aW9uKSB7CisgICAgY2FzZSBPcmlnaW5SaWdo
dFRvcDoKKyAgICAgICAgbV90ZXh0dXJlU3BhY2VNYXRyaXgucm90YXRlKC05MCk7CisgICAgICAg
IG1fdGV4dHVyZVNwYWNlTWF0cml4LnRyYW5zbGF0ZSgtMSwgMCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgT3JpZ2luQm90dG9tUmlnaHQ6CisgICAgICAgIG1fdGV4dHVyZVNwYWNlTWF0cml4
LnJvdGF0ZSgxODApOworICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUoLTEs
IC0xKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcmlnaW5MZWZ0Qm90dG9tOgorICAgICAg
ICBtX3RleHR1cmVTcGFjZU1hdHJpeC5yb3RhdGUoLTI3MCk7CisgICAgICAgIG1fdGV4dHVyZVNw
YWNlTWF0cml4LnRyYW5zbGF0ZSgwLCAtMSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGlmICghbV9mbGlw
WSkgeworICAgICAgICBtX3RleHR1cmVTcGFjZU1hdHJpeC5mbGlwWSgpOworICAgICAgICBtX3Rl
eHR1cmVTcGFjZU1hdHJpeC50cmFuc2xhdGUoMCwgLTEpOworICAgIH0KK30KKwordm9pZCBWaWRl
b1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OnVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCkKK3sK
KyAgICBGbG9hdFJlY3QgdGFyZ2V0UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fc2l6
ZSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgbV9tb2Rl
bFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChpZGVudGl0eU1hdHJpeCkubXVsdGlw
bHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoRmxvYXRSZWN0KDAsIDAsIDEsIDEp
LCB0YXJnZXRSZWN0KSk7CisKKyAgICAvLyBUYWtlbiBmcm9tIFRleHR1cmVNYXBwZXJHTC4KKyAg
ICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSA5OTk5OTk5OworICAgIGNvbnN0IGZsb2F0IGZhclZh
bHVlID0gLTk5OTk5OworCisgICAgbV9wcm9qZWN0aW9uTWF0cml4ID0gVHJhbnNmb3JtYXRpb25N
YXRyaXgoMi4wIC8gZmxvYXQobV9zaXplLndpZHRoKCkpLCAwLCAwLCAwLAorICAgICAgICAwLCAo
LTIuMCkgLyBmbG9hdChtX3NpemUuaGVpZ2h0KCkpLCAwLCAwLAorICAgICAgICAwLCAwLCAtMi5m
IC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSwgMCwKKyAgICAgICAgLTEsIDEsIC0oZmFyVmFsdWUg
KyBuZWFyVmFsdWUpIC8gKGZhclZhbHVlIC0gbmVhclZhbHVlKSwgMSk7Cit9CisKK2Jvb2wgVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoUGxhdGZvcm0zRE9iamVjdCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgUGxh
dGZvcm0zRE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0Rp
bnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0Rl
bnVtIHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24mIHNvdXJjZU9yaWVudGF0aW9u
KQoreworICAgIGlmICghbV9zaGFkZXJQcm9ncmFtIHx8ICFtX2ZyYW1lYnVmZmVyIHx8ICFtX3Zi
byB8fCBmcmFtZVNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAobV9zaXplICE9IGZyYW1lU2l6ZSkgeworICAgICAgICBtX3NpemUgPSBmcmFtZVNpemU7Cisg
ICAgICAgIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisgICAgfQorCisgICAgaWYgKG1f
ZmxpcFkgIT0gZmxpcFkgfHwgbV9vcmllbnRhdGlvbiAhPSBzb3VyY2VPcmllbnRhdGlvbikgewor
ICAgICAgICBtX2ZsaXBZID0gZmxpcFk7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBzb3VyY2VP
cmllbnRhdGlvbjsKKyAgICAgICAgdXBkYXRlVGV4dHVyZVNwYWNlTWF0cml4KCk7CisgICAgfQor
CisgICAgLy8gU2F2ZSBwcmV2aW91cyBjb250ZXh0IGFuZCBhY3RpdmF0ZSB0aGUgc2hhcmluZyBv
bmUuCisgICAgR0xDb250ZXh0KiBwcmV2aW91c0NvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQo
KTsKKyAgICBBU1NFUlQocHJldmlvdXNDb250ZXh0KTsKKyAgICBQbGF0Zm9ybURpc3BsYXk6OnNo
YXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKS0+bWFrZUNvbnRl
eHRDdXJyZW50KCk7CisKKyAgICAvLyBTYXZlIHByZXZpb3VzIGJvdW5kIGZyYW1lYnVmZmVyLCB0
ZXh0dXJlIGFuZCB2aWV3cG9ydC4KKyAgICBHQzNEaW50IGJvdW5kRnJhbWVidWZmZXIgPSAwOwor
ICAgIEdDM0RpbnQgYm91bmRUZXh0dXJlID0gMDsKKyAgICBHQzNEaW50IHByZXZpb3VzVmlld3Bv
cnRbNF0gPSB7IDAsIDAsIDAsIDB9OworICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQklORElORywgJmJvdW5kRnJhbWVidWZmZXIpOwor
ICAgIG1fY29udGV4dDNELT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9C
SU5ESU5HXzJELCAmYm91bmRUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+Z2V0SW50ZWdlcnYo
R3JhcGhpY3NDb250ZXh0M0Q6OlZJRVdQT1JULCBwcmV2aW91c1ZpZXdwb3J0KTsKKworICAgIC8v
IFNldCBwcm9wZXIgcGFyYW1ldGVycyB0byB0aGUgb3V0cHV0IHRleHR1cmUgYW5kIGFsbG9jYXRl
IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZvciBpdC4KKyAgICBtX2NvbnRleHQzRC0+YmluZFRleHR1
cmUob3V0cHV0VGFyZ2V0LCBvdXRwdXRUZXh0dXJlKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgbV9j
b250ZXh0M0QtPnRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1Q
X1RPX0VER0UpOworICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBo
aWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4SW1hZ2Uy
RERpcmVjdChvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgbV9zaXplLndpZHRo
KCksIG1fc2l6ZS5oZWlnaHQoKSwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKKworICAgIC8v
IEJpbmQgZnJhbWVidWZmZXIgdG8gcGFpbnQgYW5kIGF0dGFjaCB0aGUgZGVzdGluYXRpb24gdGV4
dHVyZSB0byBpdC4KKyAgICBtX2NvbnRleHQzRC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlcik7CisgICAgbV9jb250ZXh0M0QtPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBvdXRwdXRUZXh0
dXJlLCAwKTsKKworICAgIC8vIFNldCBwcm9wZXIgd3JhcCBwYXJhbWV0ZXIgdG8gdGhlIHNvdXJj
ZSB0ZXh0dXJlLgorICAgIG1fY29udGV4dDNELT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBp
bnB1dFRleHR1cmUpOworICAgIG1fY29udGV4dDNELT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVS
LCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKKyAgICBtX2NvbnRleHQzRC0+dGV4UGFyYW1l
dGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgbV9j
b250ZXh0M0QtPnRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1Q
X1RPX0VER0UpOworCisgICAgLy8gU2V0IHRoZSB2aWV3cG9ydC4KKyAgICBtX2NvbnRleHQzRC0+
dmlld3BvcnQoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICAv
LyBTZXQgcHJvZ3JhbSBwYXJhbWV0ZXJzLgorICAgIG1fY29udGV4dDNELT51c2VQcm9ncmFtKG1f
c2hhZGVyUHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIG1fY29udGV4dDNELT51bmlmb3JtMWko
bV9zaGFkZXJQcm9ncmFtLT5zYW1wbGVyTG9jYXRpb24oKSwgMCk7CisgICAgbV9zaGFkZXJQcm9n
cmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFtLT5tb2RlbFZpZXdNYXRyaXhMb2NhdGlvbigp
LCBtX21vZGVsVmlld01hdHJpeCk7CisgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9z
aGFkZXJQcm9ncmFtLT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgbV9wcm9qZWN0aW9uTWF0
cml4KTsKKyAgICBtX3NoYWRlclByb2dyYW0tPnNldE1hdHJpeChtX3NoYWRlclByb2dyYW0tPnRl
eHR1cmVTcGFjZU1hdHJpeExvY2F0aW9uKCksIG1fdGV4dHVyZVNwYWNlTWF0cml4KTsKKworICAg
IC8vIFBlcmZvcm0gdGhlIGNvcHkuCisgICAgbV9jb250ZXh0M0QtPmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KG1fc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24oKSk7CisgICAgbV9jb250ZXh0
M0QtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgbV92Ym8pOwor
ICAgIG1fY29udGV4dDNELT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1fc2hhZGVyUHJvZ3JhbS0+dmVy
dGV4TG9jYXRpb24oKSwgMiwgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FULCBmYWxzZSwgMCwgMCk7
CisgICAgbV9jb250ZXh0M0QtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xF
X0ZBTiwgMCwgNCk7CisgICAgbV9jb250ZXh0M0QtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkFSUkFZX0JVRkZFUiwgMCk7CisgICAgbV9jb250ZXh0M0QtPmRpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShtX3NoYWRlclByb2dyYW0tPnZlcnRleExvY2F0aW9uKCkpOworICAgIG1fY29udGV4
dDNELT51c2VQcm9ncmFtKDApOworCisgICAgLy8gUmVzdG9yZSBwcmV2aW91cyBiaW5kaW5ncyBh
bmQgdmlld3BvcnQuCisgICAgbV9jb250ZXh0M0QtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIGJvdW5kRnJhbWVidWZmZXIpOworICAgIG1fY29udGV4dDNE
LT5iaW5kVGV4dHVyZShvdXRwdXRUYXJnZXQsIGJvdW5kVGV4dHVyZSk7CisgICAgbV9jb250ZXh0
M0QtPnZpZXdwb3J0KHByZXZpb3VzVmlld3BvcnRbMF0sIHByZXZpb3VzVmlld3BvcnRbMV0sIHBy
ZXZpb3VzVmlld3BvcnRbMl0sIHByZXZpb3VzVmlld3BvcnRbM10pOworCisgICAgYm9vbCBvayA9
IChtX2NvbnRleHQzRC0+Z2V0RXJyb3IoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1Ip
OworCisgICAgLy8gUmVzdG9yZSBwcmV2aW91cyBjb250ZXh0LgorICAgIHByZXZpb3VzQ29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgcmV0dXJuIG9rOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NWE3YjNiNGI2
MmNmMjdkYzNkYmM2NjI1ZmFiODQ2MGEyZWY3OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0
cmVhbWVyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlh
IFMuTC4KKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBWaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXJfaAorI2RlZmluZSBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXJfaAorCisj
aWYgVVNFKEdTVFJFQU1FUl9HTCkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTsKK2NsYXNzIEltYWdlT3JpZW50YXRp
b247CisKK2NsYXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lciB7CitwdWJsaWM6CisgICAg
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKCk7CisgICAgflZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lcigpOworCisgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
UGxhdGZvcm0zRE9iamVjdCBpbnB1dFRleHR1cmUsIEludFNpemUmIGZyYW1lU2l6ZSwgUGxhdGZv
cm0zRE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQzNEZW51bSBvdXRwdXRUYXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIGJvb2wgZmxpcFksIEltYWdlT3JpZW50YXRpb24mIHNvdXJjZU9yaWVudGF0aW9uKTsK
KyAgICB2b2lkIHVwZGF0ZVRleHR1cmVTcGFjZU1hdHJpeCgpOworICAgIHZvaWQgdXBkYXRlVHJh
bnNmb3JtYXRpb25NYXRyaXgoKTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IG1fY29udGV4dDNEOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bT4gbV9zaGFkZXJQcm9ncmFtOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mcmFtZWJ1ZmZlciB7
IDAgfTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdmJvIHsgMCB9OworICAgIGJvb2wgbV9mbGlw
WSB7IGZhbHNlIH07CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOworICAgIElu
dFNpemUgbV9zaXplOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fbW9kZWxWaWV3TWF0cml4
OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJpeDsKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtX3RleHR1cmVTcGFjZU1hdHJpeDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCisKKyNlbmRpZiAvLyBW
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXJfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>