<?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>200922</bug_id>
          
          <creation_ts>2019-08-20 08:42:48 -0700</creation_ts>
          <short_desc>[GStreamer] Add support to copy YUV video textures into images</short_desc>
          <delta_ts>2019-09-03 07:58:47 -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>WPE WebKit</component>
          <version>WebKit Local 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>
          <dependson>132869</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fujii</cc>
    
    <cc>ggaren</cc>
    
    <cc>magomez</cc>
    
    <cc>pnormand</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1563067</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-20 08:42:48 -0700</bug_when>
    <thetext>Bug 132869 adds shaders to render YUV video textures to avoid having to render to an extra off-screen surface. The patch on that bug only implements the playback portion and YUV videos become broken/non-working on accelerated and unaccelerated canvases. This bug tracks the work to enable YUV video textures in unaccelerated canvases (so unaccelerated 2D canvas).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563071</commentid>
    <comment_count>1</comment_count>
      <attachid>376772</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-20 08:47:47 -0700</bug_when>
    <thetext>Created attachment 376772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563090</commentid>
    <comment_count>2</comment_count>
      <attachid>376772</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-08-20 09:28:00 -0700</bug_when>
    <thetext>Comment on attachment 376772
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/ImageGStreamerCairo.cpp:68
&gt; +    GstGLContext* context = ((GstGLBaseMemory*)mem)-&gt;context;
&gt; +    GRefPtr&lt;GstGLColorConvert&gt; colorConvert = adoptGRef(gst_gl_color_convert_new(context));

Would it make sense to keep the colorConvert in the player somehow? So that it doesn&apos;t need to be re-created for every video sample?
Or is the performance impact negligible here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563097</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-20 09:41:24 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #2)
&gt; Comment on attachment 376772 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376772&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/ImageGStreamerCairo.cpp:68
&gt; &gt; +    GstGLContext* context = ((GstGLBaseMemory*)mem)-&gt;context;
&gt; &gt; +    GRefPtr&lt;GstGLColorConvert&gt; colorConvert = adoptGRef(gst_gl_color_convert_new(context));
&gt; 
&gt; Would it make sense to keep the colorConvert in the player somehow? So that
&gt; it doesn&apos;t need to be re-created for every video sample?
&gt; Or is the performance impact negligible here?

Looking at the source, I think the bulk of the work in terms of allocation is done when setting the caps - so it would be ideal, assuming the caps don&apos;t change, for the object to live in MediaPlayerPrivateGStreamerBase.

I wasn&apos;t sure what the relationships are with regards to lifetimes though - is there a one-to-one mapping between one video stream and MediaPlayerPrivateGStreamerBase? Are the caps during playback guaranteed to stay the same? (I guess this isn&apos;t a big deal, could just take a reference on the last caps used)

I note that MediaPlayerPrivateGStreamerBase reuses a single VideoTextureCopier, but recreates the ImageGStreamer each time - would it make sense for it to keep an ImageGStreamer around to re-use so these objects could live there (which I think would be much nicer than an API kludge)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563411</commentid>
    <comment_count>4</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-08-21 01:19:46 -0700</bug_when>
    <thetext>(In reply to Chris Lord from comment #3)
&gt; (In reply to Philippe Normand from comment #2)
&gt; &gt; Comment on attachment 376772 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=376772&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/ImageGStreamerCairo.cpp:68
&gt; &gt; &gt; +    GstGLContext* context = ((GstGLBaseMemory*)mem)-&gt;context;
&gt; &gt; &gt; +    GRefPtr&lt;GstGLColorConvert&gt; colorConvert = adoptGRef(gst_gl_color_convert_new(context));
&gt; &gt; 
&gt; &gt; Would it make sense to keep the colorConvert in the player somehow? So that
&gt; &gt; it doesn&apos;t need to be re-created for every video sample?
&gt; &gt; Or is the performance impact negligible here?
&gt; 
&gt; Looking at the source, I think the bulk of the work in terms of allocation
&gt; is done when setting the caps - so it would be ideal, assuming the caps
&gt; don&apos;t change, for the object to live in MediaPlayerPrivateGStreamerBase.

Potentially several ImageGStreamer objects can be created for the same buffer, so it would be better to keep the colorConvert around.

&gt; I wasn&apos;t sure what the relationships are with regards to lifetimes though -
&gt; is there a one-to-one mapping between one video stream and
&gt; MediaPlayerPrivateGStreamerBase? Are the caps during playback guaranteed to
&gt; stay the same? (I guess this isn&apos;t a big deal, could just take a reference
&gt; on the last caps used)

The player cannot play more than a single stream at the same time. It can be reused to play one stream after another, but it won&apos;t play more than that. During playback some caps can change (I&apos;m thinking of adaptive streaming), but the color format caps should stay the same for each video (Phil, correct me if I&apos;m wrong)

&gt; I note that MediaPlayerPrivateGStreamerBase reuses a single
&gt; VideoTextureCopier, but recreates the ImageGStreamer each time - would it
&gt; make sense for it to keep an ImageGStreamer around to re-use so these
&gt; objects could live there (which I think would be much nicer than an API
&gt; kludge)?

VideoTextureCopier is supposed to be just a tool to copy a texture into another without keeping any internal state, so it can be easily reused. I&apos;m not sure that&apos;s the case for ImageGStreamer. That&apos;s meant to hold a buffer with the video frame that can be kept around, and we are not interested in changing it when there might be other components still using it. Also, the current implementation of the createImageBitmap feature causes that ImageGStreamer objects can be created in secondary threads (to initialize the bitmap element from a video), so we need to be able to have several instances of ImageGStreamer for the same video (or properly handle multithread access to them).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563416</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-08-21 01:35:39 -0700</bug_when>
    <thetext>
&gt; 
&gt; The player cannot play more than a single stream at the same time. It can be
&gt; reused to play one stream after another, but it won&apos;t play more than that.
&gt; During playback some caps can change (I&apos;m thinking of adaptive streaming),
&gt; but the color format caps should stay the same for each video (Phil, correct
&gt; me if I&apos;m wrong)
&gt; 

Correct, Miguel :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563444</commentid>
    <comment_count>6</comment_count>
      <attachid>376863</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-21 04:54:07 -0700</bug_when>
    <thetext>Created attachment 376863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563445</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-21 04:56:23 -0700</bug_when>
    <thetext>This moves the changes into MediaPlayerPrivateGStreamerBase, which I think makes more sense. This lets us cache the colour-conversion object and also make sure the conversion only happens once if paint is called multiple times.

I also fixed a leak (whoops) and added support to omit the alpha channel if it doesn&apos;t exist so that the buffer can be directly reused without having to pre-multiply alpha unnecessarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563446</commentid>
    <comment_count>8</comment_count>
      <attachid>376863</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-08-21 04:59:46 -0700</bug_when>
    <thetext>Comment on attachment 376863
Patch

lgtm :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565314</commentid>
    <comment_count>9</comment_count>
      <attachid>377335</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-27 03:51:05 -0700</bug_when>
    <thetext>Created attachment 377335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566238</commentid>
    <comment_count>10</comment_count>
      <attachid>377335</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2019-08-29 08:26:13 -0700</bug_when>
    <thetext>Comment on attachment 377335
Patch

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

Wouldn&apos;t it be easier/possible to ensure we have a glcolorconvert element in the pipeline with the caps set to RGB and letting GStreamer do the job for us?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:979
&gt; +            m_colorConvertLastCaps = caps;
&gt; +            m_colorConvertCaps = adoptGRef(gst_caps_copy(caps));

If I understand this correctly, I think a better name for these would be:
m_colorConvertLastCaps -&gt; m_colorConvertInputCaps
m_colorConvertCaps -&gt; colorConvertOutputCaps

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:984
&gt; +#if G_BYTE_ORDER == G_LITTLE_ENDIAN
&gt; +            const gchar* formatString = GST_VIDEO_INFO_HAS_ALPHA(&amp;videoInfo) ? &quot;RGBA&quot; : &quot;BGRx&quot;;
&gt; +#else
&gt; +            const gchar* formatString = GST_VIDEO_INFO_HAS_ALPHA(&amp;videoInfo) ? &quot;RGBA&quot; : &quot;RGBx&quot;;
&gt; +#endif

Are these format strings right? I have no clue, just asking because my pattern recognition does not yield a match here...

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:300
&gt; +    GRefPtr&lt;GstCaps&gt; m_colorConvertCaps;

We don&apos;t need to hold this here since gst_gl_color_convert_set_caps will perform a gst_caps_replace which will ref them internally. We don&apos;t need them anymore once they are passed down to the element, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566250</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-29 08:38:20 -0700</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #10)
&gt; Comment on attachment 377335 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377335&amp;action=review
&gt; 
&gt; Wouldn&apos;t it be easier/possible to ensure we have a glcolorconvert element in
&gt; the pipeline with the caps set to RGB and letting GStreamer do the job for
&gt; us?

This needs to be read in conjunction with the patch on bug #132869 - which changes the supported colour formats of the glcolorconvert that is in the pipeline to avoid having to do an unnecessary copy.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:979
&gt; &gt; +            m_colorConvertLastCaps = caps;
&gt; &gt; +            m_colorConvertCaps = adoptGRef(gst_caps_copy(caps));
&gt; 
&gt; If I understand this correctly, I think a better name for these would be:
&gt; m_colorConvertLastCaps -&gt; m_colorConvertInputCaps
&gt; m_colorConvertCaps -&gt; colorConvertOutputCaps

This sounds good.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:984
&gt; &gt; +#if G_BYTE_ORDER == G_LITTLE_ENDIAN
&gt; &gt; +            const gchar* formatString = GST_VIDEO_INFO_HAS_ALPHA(&amp;videoInfo) ? &quot;RGBA&quot; : &quot;BGRx&quot;;
&gt; &gt; +#else
&gt; &gt; +            const gchar* formatString = GST_VIDEO_INFO_HAS_ALPHA(&amp;videoInfo) ? &quot;RGBA&quot; : &quot;RGBx&quot;;
&gt; &gt; +#endif
&gt; 
&gt; Are these format strings right? I have no clue, just asking because my
&gt; pattern recognition does not yield a match here...

In fairness, I&apos;ve only tested the little-endian path, but I believe this to be correct - I think this is maintaining old behaviour, but would certainly appreciate testing if you have a big-endian device handy.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:300
&gt; &gt; +    GRefPtr&lt;GstCaps&gt; m_colorConvertCaps;
&gt; 
&gt; We don&apos;t need to hold this here since gst_gl_color_convert_set_caps will
&gt; perform a gst_caps_replace which will ref them internally. We don&apos;t need
&gt; them anymore once they are passed down to the element, right?

We hold onto it to be able to create a new sample - the colour conversion object provides no accessor for it (at least, no documented way that I saw, and it didn&apos;t look like it was possible reading the source either)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566626</commentid>
    <comment_count>12</comment_count>
      <attachid>377335</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2019-08-30 04:02:36 -0700</bug_when>
    <thetext>Comment on attachment 377335
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:300
&gt;&gt;&gt; +    GRefPtr&lt;GstCaps&gt; m_colorConvertCaps;
&gt;&gt; 
&gt;&gt; We don&apos;t need to hold this here since gst_gl_color_convert_set_caps will perform a gst_caps_replace which will ref them internally. We don&apos;t need them anymore once they are passed down to the element, right?
&gt; 
&gt; We hold onto it to be able to create a new sample - the colour conversion object provides no accessor for it (at least, no documented way that I saw, and it didn&apos;t look like it was possible reading the source either)

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567329</commentid>
    <comment_count>13</comment_count>
      <attachid>377884</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-09-03 03:42:08 -0700</bug_when>
    <thetext>Created attachment 377884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567361</commentid>
    <comment_count>14</comment_count>
      <attachid>377892</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-09-03 05:36:54 -0700</bug_when>
    <thetext>Created attachment 377892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567380</commentid>
    <comment_count>15</comment_count>
      <attachid>377892</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 07:58:44 -0700</bug_when>
    <thetext>Comment on attachment 377892
Patch

Clearing flags on attachment: 377892

Committed r249429: &lt;https://trac.webkit.org/changeset/249429&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567381</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 07:58:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376772</attachid>
            <date>2019-08-20 08:47:47 -0700</date>
            <delta_ts>2019-08-21 04:53:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200922-20190820164746.patch</filename>
            <type>text/plain</type>
            <size>3495</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI2YjQ3ZDk1YjY2MjUy
MzZlMzdjZjc4ODNkMGI3ODg1YzZkZThhMi4uZDNiOGYxZDRlNGE5YWRiNmZlMTEwYWFkMzBjYjYz
NTZkODJmZTBkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIwICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3Vw
cG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIGltYWdlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBub3QgY2hh
bmdpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VHU3RyZWFtZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1l
cjo6SW1hZ2VHU3RyZWFtZXIpOgorCiAyMDE5LTA4LTIwICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCB0byBjb3B5IFlVViB2
aWRlbyB0ZXh0dXJlcyBpbnRvIHBsYXRmb3JtIHRleHR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3Ry
ZWFtZXJDYWlyby5jcHAKaW5kZXggNjdkMGYwYmNhMjUyOTE1NjA0NTc5YmM0NmU3NTEzYjhhZjRj
MzExOS4uOWZmZWFhOGU2MWJjYzY5MWUxYTI2NjEwNzAzZTBlMzlhODlhOTg1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVh
bWVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcApAQCAtMjgsMTIgKzI4LDU3IEBACiAjaW5jbHVk
ZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KIAorI2lm
IFVTRShHU1RSRUFNRVJfR0wpCisjaWYgVVNFKExJQkVQT1hZKQorLy8gSW5jbHVkZSB0aGUgPGVw
b3h5L2dsLmg+IGhlYWRlciBiZWZvcmUgPGdzdC9nbC9nbC5oPi4KKyNpbmNsdWRlIDxlcG94eS9n
bC5oPgorCisvLyBXb3JrYXJvdW5kIGJ1aWxkIGlzc3VlIHdpdGggUlBpIHVzZXJsYW5kIEdMRVN2
MiBoZWFkZXJzIGFuZCBsaWJlcG94eSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTg1NjM5PgorI2lm
ICFHU1RfQ0hFQ0tfVkVSU0lPTigxLCAxNCwgMCkKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xjb25m
aWcuaD4KKyNpZiBkZWZpbmVkKEdTVF9HTF9IQVZFX1dJTkRPV19ESVNQTUFOWCkgJiYgR1NUX0dM
X0hBVkVfV0lORE9XX0RJU1BNQU5YCisjZGVmaW5lIF9fZ2wyX2hfCisjdW5kZWYgR1NUX0dMX0hB
VkVfR0xTWU5DCisjZGVmaW5lIEdTVF9HTF9IQVZFX0dMU1lOQyAxCisjZW5kaWYKKyNlbmRpZiAv
LyAhR1NUX0NIRUNLX1ZFUlNJT04oMSwgMTQsIDApCisjZW5kaWYgLy8gVVNFKExJQkVQT1hZKQor
CisjZGVmaW5lIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+Cisj
dW5kZWYgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyNlbmRpZgorCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdFNhbXBsZSogc2FtcGxlKQog
eworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKHNhbXBsZSk7
CisgICAgaWYgKFVOTElLRUxZKCFHU1RfSVNfQlVGRkVSKGJ1ZmZlcikpKQorICAgICAgICByZXR1
cm47CisKICAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUpOwor
CisjaWYgVVNFKEdTVFJFQU1FUl9HTCkKKyAgICAvLyBFbnN1cmUgdGhlIGlucHV0IGlzIFJHQkEu
IFdlIGhhbmRsZSBZVVYgdmlkZW8gbmF0aXZlbHksIHNvIHdlIG5lZWQgdG8gZG8KKyAgICAvLyB0
aGlzIGNvbnZlcnNpb24gb24tZGVtYW5kIGhlcmUuCisgICAgR3N0TWVtb3J5KiBtZW0gPSBnc3Rf
YnVmZmVyX3BlZWtfbWVtb3J5KGJ1ZmZlciwgMCk7CisgICAgR3N0R0xDb250ZXh0KiBjb250ZXh0
ID0gKChHc3RHTEJhc2VNZW1vcnkqKW1lbSktPmNvbnRleHQ7CisgICAgR1JlZlB0cjxHc3RHTENv
bG9yQ29udmVydD4gY29sb3JDb252ZXJ0ID0gYWRvcHRHUmVmKGdzdF9nbF9jb2xvcl9jb252ZXJ0
X25ldyhjb250ZXh0KSk7CisKKyAgICBHUmVmUHRyPEdzdENhcHM+IGNvbG9yQ29udmVydENhcHMg
PSBhZG9wdEdSZWYoZ3N0X2NhcHNfY29weShjYXBzKSk7CisgICAgZ3N0X2NhcHNfc2V0X3NpbXBs
ZShjb2xvckNvbnZlcnRDYXBzLmdldCgpLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIlJHQkEi
LCBudWxscHRyKTsKKyAgICBpZiAoIWdzdF9nbF9jb2xvcl9jb252ZXJ0X3NldF9jYXBzKGNvbG9y
Q29udmVydC5nZXQoKSwgY2FwcywgY29sb3JDb252ZXJ0Q2Fwcy5nZXQoKSkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGJ1ZmZlciA9IGdzdF9nbF9jb2xvcl9jb252ZXJ0X3BlcmZvcm0oY29sb3JD
b252ZXJ0LmdldCgpLCBidWZmZXIpOworICAgIGlmIChVTkxJS0VMWSghR1NUX0lTX0JVRkZFUihi
dWZmZXIpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FwcyA9IGNvbG9yQ29udmVydENhcHMu
Z2V0KCk7CisjZW5kaWYKKwogICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CiAgICAgZ3N0X3Zp
ZGVvX2luZm9faW5pdCgmdmlkZW9JbmZvKTsKICAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21f
Y2FwcygmdmlkZW9JbmZvLCBjYXBzKSkKQEAgLTQyLDEwICs4Nyw2IEBAIEltYWdlR1N0cmVhbWVy
OjpJbWFnZUdTdHJlYW1lcihHc3RTYW1wbGUqIHNhbXBsZSkKICAgICAvLyBSaWdodCBub3cgdGhl
IFRleHR1cmVNYXBwZXIgb25seSBzdXBwb3J0cyBjaHJvbWFzIHdpdGggb25lIHBsYW5lCiAgICAg
QVNTRVJUKEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0luZm8pID09IDEpOwogCi0gICAg
R3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIUdTVF9JU19CVUZGRVIoYnVmZmVyKSkpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIG1fZnJhbWVNYXBwZWQgPSBnc3RfdmlkZW9fZnJhbWVfbWFwKCZtX3ZpZGVvRnJhbWUsICZ2
aWRlb0luZm8sIGJ1ZmZlciwgR1NUX01BUF9SRUFEKTsKICAgICBpZiAoIW1fZnJhbWVNYXBwZWQp
CiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376863</attachid>
            <date>2019-08-21 04:54:07 -0700</date>
            <delta_ts>2019-08-27 03:51:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200922-20190821125406.patch</filename>
            <type>text/plain</type>
            <size>4507</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU3YWVlMThjNjJhNzEz
NTFjNWMzZjIzY2Y3Nzk0MzI0OWMwMzBmZS4uN2EyMjg1ZGE0YTdiYWVmMmY3YzRkNTc4MjY1Nzcz
MjkwYTkxNjkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA4LTIxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3Vw
cG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIGltYWdlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGdzdF9nbF9jb2xvcl9jb252
ZXJ0IHRvIGNvbnZlcnQgdG8gUkdCIGJlZm9yZSB1c2luZyBJbWFnZUdTdHJlYW1lcgorICAgICAg
ICB3aXRoIGdzdHJlYW1lci1nbC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vdCBjaGFuZ2lu
ZyBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorCiAy
MDE5LTA4LTIxICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0
cmVhbWVyXSBBZGQgc3VwcG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIHBsYXRm
b3JtIHRleHR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKaW5kZXggMWUyODExMjFlZWYzZDE1MmU3ZWY0MmVkMGVjYzUyMjY4MjRj
MDU3ZS4uYWM4ZGI2YzExNWQ1MjZjOGQ0MDBhYjNiZmZjZWExMmQwNTE3NjM3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAt
OTc4LDYgKzk3OCw1MCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmIChtX3JlbmRl
cmluZ0NhbkJlQWNjZWxlcmF0ZWQpCiAgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uOwogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkK
KyAgICAvLyBFbnN1cmUgdGhlIGlucHV0IGlzIFJHQkEuIFdlIGhhbmRsZSBZVVYgdmlkZW8gbmF0
aXZlbHksIHNvIHdlIG5lZWQgdG8gZG8KKyAgICAvLyB0aGlzIGNvbnZlcnNpb24gb24tZGVtYW5k
IGhlcmUuCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9z
YW1wbGUuZ2V0KCkpOworICAgIGlmIChVTkxJS0VMWSghR1NUX0lTX0JVRkZFUihidWZmZXIpKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2Nh
cHMobV9zYW1wbGUuZ2V0KCkpOworCisgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBn
c3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgIGlmICghZ3N0X3ZpZGVvX2luZm9f
ZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IUdTVF9WSURFT19JTkZPX0lTX1JHQigmdmlkZW9JbmZvKSkgeworICAgICAgICBpZiAoIW1fY29s
b3JDb252ZXJ0KSB7CisgICAgICAgICAgICBHc3RNZW1vcnkqIG1lbSA9IGdzdF9idWZmZXJfcGVl
a19tZW1vcnkoYnVmZmVyLCAwKTsKKyAgICAgICAgICAgIEdzdEdMQ29udGV4dCogY29udGV4dCA9
ICgoR3N0R0xCYXNlTWVtb3J5KiltZW0pLT5jb250ZXh0OworICAgICAgICAgICAgbV9jb2xvckNv
bnZlcnQgPSBhZG9wdEdSZWYoZ3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3KGNvbnRleHQpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghbV9jb2xvckNvbnZlcnRMYXN0Q2FwcyB8fCAhZ3N0X2Nh
cHNfaXNfZXF1YWwobV9jb2xvckNvbnZlcnRMYXN0Q2Fwcy5nZXQoKSwgY2FwcykpIHsKKyAgICAg
ICAgICAgIG1fY29sb3JDb252ZXJ0TGFzdENhcHMgPSBjYXBzOworICAgICAgICAgICAgbV9jb2xv
ckNvbnZlcnRDYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX2NvcHkoY2FwcykpOworI2lmIEdfQllU
RV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KKyAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBmb3Jt
YXRTdHJpbmcgPSBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyAiUkdCQSIg
OiAiQkdSeCI7CisjZWxzZQorICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGZvcm1hdFN0cmluZyA9
IEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/ICJSR0JBIiA6ICJSR0J4IjsK
KyNlbmRpZgorICAgICAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZShtX2NvbG9yQ29udmVydENh
cHMuZ2V0KCksICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBmb3JtYXRTdHJpbmcsIG51bGxwdHIp
OworICAgICAgICAgICAgaWYgKCFnc3RfZ2xfY29sb3JfY29udmVydF9zZXRfY2FwcyhtX2NvbG9y
Q29udmVydC5nZXQoKSwgY2FwcywgbV9jb2xvckNvbnZlcnRDYXBzLmdldCgpKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBHUmVmUHRyPEdzdEJ1ZmZlcj4g
cmdiQnVmZmVyID0gYWRvcHRHUmVmKGdzdF9nbF9jb2xvcl9jb252ZXJ0X3BlcmZvcm0obV9jb2xv
ckNvbnZlcnQuZ2V0KCksIGJ1ZmZlcikpOworICAgICAgICBpZiAoVU5MSUtFTFkoIUdTVF9JU19C
VUZGRVIocmdiQnVmZmVyLmdldCgpKSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Y29uc3QgR3N0U3RydWN0dXJlKiBpbmZvID0gZ3N0X3NhbXBsZV9nZXRfaW5mbyhtX3NhbXBsZS5n
ZXQoKSk7CisgICAgICAgIG1fc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9zYW1wbGVfbmV3KHJnYkJ1
ZmZlci5nZXQoKSwgbV9jb2xvckNvbnZlcnRDYXBzLmdldCgpLAorICAgICAgICAgICAgZ3N0X3Nh
bXBsZV9nZXRfc2VnbWVudChtX3NhbXBsZS5nZXQoKSksIGluZm8gPyBnc3Rfc3RydWN0dXJlX2Nv
cHkoaW5mbykgOiBudWxscHRyKSk7CisgICAgfQorI2VuZGlmCisKICAgICBhdXRvIGdzdEltYWdl
ID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAo
IWdzdEltYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA1NTAwYWJkZTljMDY5NTdlY2YwMjczZjVk
MTQ0MjQzMzNlOTRlOTgxLi44MWE3YWM0MzIzYWUxODJkNGI3MmYzZWE2YTNhNGYyM2FhOTFlOTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmgKQEAgLTI5Niw2ICsyOTYsMTAgQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3N0Q29udGV4
dD4gbV9nbERpc3BsYXlFbGVtZW50Q29udGV4dDsKICAgICBHUmVmUHRyPEdzdENvbnRleHQ+IG1f
Z2xBcHBFbGVtZW50Q29udGV4dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyPiBtX3ZpZGVvVGV4dHVyZUNvcGllcjsKKworICAgIEdSZWZQdHI8R3N0R0xD
b2xvckNvbnZlcnQ+IG1fY29sb3JDb252ZXJ0OworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9jb2xv
ckNvbnZlcnRDYXBzOworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9jb2xvckNvbnZlcnRMYXN0Q2Fw
czsKICNlbmRpZgogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBtX3ZpZGVvU291cmNlT3JpZW50YXRp
b247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377335</attachid>
            <date>2019-08-27 03:51:05 -0700</date>
            <delta_ts>2019-09-03 03:42:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200922-20190827115103.patch</filename>
            <type>text/plain</type>
            <size>4507</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYzZWQ2MzZjMjhmN2Zh
Y2UyNjU5YmEzYTdiMDVmY2M4OWFlNTgxMS4uNTNjNDNhMWNmMTY0YjZkNTU2NTZmMzBiOTk5YzAy
M2FmZWE0ZTZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA4LTIxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3Vw
cG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIGltYWdlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGdzdF9nbF9jb2xvcl9jb252
ZXJ0IHRvIGNvbnZlcnQgdG8gUkdCIGJlZm9yZSB1c2luZyBJbWFnZUdTdHJlYW1lcgorICAgICAg
ICB3aXRoIGdzdHJlYW1lci1nbC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vdCBjaGFuZ2lu
ZyBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorCiAy
MDE5LTA4LTIxICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0
cmVhbWVyXSBBZGQgc3VwcG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIHBsYXRm
b3JtIHRleHR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKaW5kZXggYWVkZDcyY2I4ZWZjYmY1YjY0ZGExNDY3NTA3N2RmZWUwMTE2
ODY3Mi4uNzY1MGFlMjRjYjg2YzJhYWFlOGYzOTZiZDQyZjc3OWRhNWY2MGMwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAt
OTUzLDYgKzk1Myw1MCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmIChtX3JlbmRl
cmluZ0NhbkJlQWNjZWxlcmF0ZWQpCiAgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uOwogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkK
KyAgICAvLyBFbnN1cmUgdGhlIGlucHV0IGlzIFJHQkEuIFdlIGhhbmRsZSBZVVYgdmlkZW8gbmF0
aXZlbHksIHNvIHdlIG5lZWQgdG8gZG8KKyAgICAvLyB0aGlzIGNvbnZlcnNpb24gb24tZGVtYW5k
IGhlcmUuCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9z
YW1wbGUuZ2V0KCkpOworICAgIGlmIChVTkxJS0VMWSghR1NUX0lTX0JVRkZFUihidWZmZXIpKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2Nh
cHMobV9zYW1wbGUuZ2V0KCkpOworCisgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBn
c3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgIGlmICghZ3N0X3ZpZGVvX2luZm9f
ZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IUdTVF9WSURFT19JTkZPX0lTX1JHQigmdmlkZW9JbmZvKSkgeworICAgICAgICBpZiAoIW1fY29s
b3JDb252ZXJ0KSB7CisgICAgICAgICAgICBHc3RNZW1vcnkqIG1lbSA9IGdzdF9idWZmZXJfcGVl
a19tZW1vcnkoYnVmZmVyLCAwKTsKKyAgICAgICAgICAgIEdzdEdMQ29udGV4dCogY29udGV4dCA9
ICgoR3N0R0xCYXNlTWVtb3J5KiltZW0pLT5jb250ZXh0OworICAgICAgICAgICAgbV9jb2xvckNv
bnZlcnQgPSBhZG9wdEdSZWYoZ3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3KGNvbnRleHQpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghbV9jb2xvckNvbnZlcnRMYXN0Q2FwcyB8fCAhZ3N0X2Nh
cHNfaXNfZXF1YWwobV9jb2xvckNvbnZlcnRMYXN0Q2Fwcy5nZXQoKSwgY2FwcykpIHsKKyAgICAg
ICAgICAgIG1fY29sb3JDb252ZXJ0TGFzdENhcHMgPSBjYXBzOworICAgICAgICAgICAgbV9jb2xv
ckNvbnZlcnRDYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX2NvcHkoY2FwcykpOworI2lmIEdfQllU
RV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KKyAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBmb3Jt
YXRTdHJpbmcgPSBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyAiUkdCQSIg
OiAiQkdSeCI7CisjZWxzZQorICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGZvcm1hdFN0cmluZyA9
IEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/ICJSR0JBIiA6ICJSR0J4IjsK
KyNlbmRpZgorICAgICAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZShtX2NvbG9yQ29udmVydENh
cHMuZ2V0KCksICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBmb3JtYXRTdHJpbmcsIG51bGxwdHIp
OworICAgICAgICAgICAgaWYgKCFnc3RfZ2xfY29sb3JfY29udmVydF9zZXRfY2FwcyhtX2NvbG9y
Q29udmVydC5nZXQoKSwgY2FwcywgbV9jb2xvckNvbnZlcnRDYXBzLmdldCgpKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBHUmVmUHRyPEdzdEJ1ZmZlcj4g
cmdiQnVmZmVyID0gYWRvcHRHUmVmKGdzdF9nbF9jb2xvcl9jb252ZXJ0X3BlcmZvcm0obV9jb2xv
ckNvbnZlcnQuZ2V0KCksIGJ1ZmZlcikpOworICAgICAgICBpZiAoVU5MSUtFTFkoIUdTVF9JU19C
VUZGRVIocmdiQnVmZmVyLmdldCgpKSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Y29uc3QgR3N0U3RydWN0dXJlKiBpbmZvID0gZ3N0X3NhbXBsZV9nZXRfaW5mbyhtX3NhbXBsZS5n
ZXQoKSk7CisgICAgICAgIG1fc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9zYW1wbGVfbmV3KHJnYkJ1
ZmZlci5nZXQoKSwgbV9jb2xvckNvbnZlcnRDYXBzLmdldCgpLAorICAgICAgICAgICAgZ3N0X3Nh
bXBsZV9nZXRfc2VnbWVudChtX3NhbXBsZS5nZXQoKSksIGluZm8gPyBnc3Rfc3RydWN0dXJlX2Nv
cHkoaW5mbykgOiBudWxscHRyKSk7CisgICAgfQorI2VuZGlmCisKICAgICBhdXRvIGdzdEltYWdl
ID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAo
IWdzdEltYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCBlMjYwNGM0YWUzYjA1OWNlMWZiNmUwNGQ1
NjhmMWE4MzZhMjMwNGE0Li5kNjRmMWI1YmEwOTU0ZjNhYjE4YzU3MzQ5MzJlNzUxN2IwOTgwZjZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmgKQEAgLTI5NSw2ICsyOTUsMTAgQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3N0Q29udGV4
dD4gbV9nbERpc3BsYXlFbGVtZW50Q29udGV4dDsKICAgICBHUmVmUHRyPEdzdENvbnRleHQ+IG1f
Z2xBcHBFbGVtZW50Q29udGV4dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyPiBtX3ZpZGVvVGV4dHVyZUNvcGllcjsKKworICAgIEdSZWZQdHI8R3N0R0xD
b2xvckNvbnZlcnQ+IG1fY29sb3JDb252ZXJ0OworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9jb2xv
ckNvbnZlcnRDYXBzOworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9jb2xvckNvbnZlcnRMYXN0Q2Fw
czsKICNlbmRpZgogCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBtX3ZpZGVvU291cmNlT3JpZW50YXRp
b247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377884</attachid>
            <date>2019-09-03 03:42:08 -0700</date>
            <delta_ts>2019-09-03 05:36:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200922-20190903114207.patch</filename>
            <type>text/plain</type>
            <size>4541</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA2Y2QzNzk4YWRkYmJk
ZjJhMzVmMWY1OWM0NmU1NTVjMzlhMDAyNi4uMWFlYzcyZTg0Y2E1OWM0MjMwNzgzMjEyNDM2ZDgx
NmEzYTg5NmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA5LTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3Vw
cG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIGltYWdlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGdzdF9nbF9jb2xvcl9jb252
ZXJ0IHRvIGNvbnZlcnQgdG8gUkdCIGJlZm9yZSB1c2luZyBJbWFnZUdTdHJlYW1lcgorICAgICAg
ICB3aXRoIGdzdHJlYW1lci1nbC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vdCBjaGFuZ2lu
ZyBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorCiAy
MDE5LTA5LTAzICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0
cmVhbWVyXSBBZGQgc3VwcG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIHBsYXRm
b3JtIHRleHR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKaW5kZXggYWUwMTMwZDMzYjdkZTQxY2U2ZTk2YzQwNzk2MjAzZDVlNmUy
OWRlMy4uYjc4YWIwOThiNjQ5MjdkMGY5NTQ1YzhiZmI4YTJkYTA5ZTBlZGJiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAt
OTUzLDYgKzk1Myw1MCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmIChtX3JlbmRl
cmluZ0NhbkJlQWNjZWxlcmF0ZWQpCiAgICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uOwogCisjaWYgVVNFKEdTVFJFQU1FUl9HTCkK
KyAgICAvLyBFbnN1cmUgdGhlIGlucHV0IGlzIFJHQkEuIFdlIGhhbmRsZSBZVVYgdmlkZW8gbmF0
aXZlbHksIHNvIHdlIG5lZWQgdG8gZG8KKyAgICAvLyB0aGlzIGNvbnZlcnNpb24gb24tZGVtYW5k
IGhlcmUuCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIobV9z
YW1wbGUuZ2V0KCkpOworICAgIGlmIChVTkxJS0VMWSghR1NUX0lTX0JVRkZFUihidWZmZXIpKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgR3N0Q2FwcyogY2FwcyA9IGdzdF9zYW1wbGVfZ2V0X2Nh
cHMobV9zYW1wbGUuZ2V0KCkpOworCisgICAgR3N0VmlkZW9JbmZvIHZpZGVvSW5mbzsKKyAgICBn
c3RfdmlkZW9faW5mb19pbml0KCZ2aWRlb0luZm8pOworICAgIGlmICghZ3N0X3ZpZGVvX2luZm9f
ZnJvbV9jYXBzKCZ2aWRlb0luZm8sIGNhcHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IUdTVF9WSURFT19JTkZPX0lTX1JHQigmdmlkZW9JbmZvKSkgeworICAgICAgICBpZiAoIW1fY29s
b3JDb252ZXJ0KSB7CisgICAgICAgICAgICBHc3RNZW1vcnkqIG1lbSA9IGdzdF9idWZmZXJfcGVl
a19tZW1vcnkoYnVmZmVyLCAwKTsKKyAgICAgICAgICAgIEdzdEdMQ29udGV4dCogY29udGV4dCA9
ICgoR3N0R0xCYXNlTWVtb3J5KiltZW0pLT5jb250ZXh0OworICAgICAgICAgICAgbV9jb2xvckNv
bnZlcnQgPSBhZG9wdEdSZWYoZ3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3KGNvbnRleHQpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghbV9jb2xvckNvbnZlcnRJbnB1dENhcHMgfHwgIWdzdF9j
YXBzX2lzX2VxdWFsKG1fY29sb3JDb252ZXJ0SW5wdXRDYXBzLmdldCgpLCBjYXBzKSkgeworICAg
ICAgICAgICAgbV9jb2xvckNvbnZlcnRJbnB1dENhcHMgPSBjYXBzOworICAgICAgICAgICAgbV9j
b2xvckNvbnZlcnRPdXRwdXRDYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX2NvcHkoY2FwcykpOwor
I2lmIEdfQllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KKyAgICAgICAgICAgIGNvbnN0IGdj
aGFyKiBmb3JtYXRTdHJpbmcgPSBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykg
PyAiUkdCQSIgOiAiQkdSeCI7CisjZWxzZQorICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGZvcm1h
dFN0cmluZyA9IEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/ICJSR0JBIiA6
ICJSR0J4IjsKKyNlbmRpZgorICAgICAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZShtX2NvbG9y
Q29udmVydE91dHB1dENhcHMuZ2V0KCksICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBmb3JtYXRT
dHJpbmcsIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKCFnc3RfZ2xfY29sb3JfY29udmVydF9z
ZXRfY2FwcyhtX2NvbG9yQ29udmVydC5nZXQoKSwgY2FwcywgbV9jb2xvckNvbnZlcnRPdXRwdXRD
YXBzLmdldCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBHUmVmUHRyPEdzdEJ1ZmZlcj4gcmdiQnVmZmVyID0gYWRvcHRHUmVmKGdzdF9nbF9jb2xvcl9j
b252ZXJ0X3BlcmZvcm0obV9jb2xvckNvbnZlcnQuZ2V0KCksIGJ1ZmZlcikpOworICAgICAgICBp
ZiAoVU5MSUtFTFkoIUdTVF9JU19CVUZGRVIocmdiQnVmZmVyLmdldCgpKSkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgY29uc3QgR3N0U3RydWN0dXJlKiBpbmZvID0gZ3N0X3NhbXBs
ZV9nZXRfaW5mbyhtX3NhbXBsZS5nZXQoKSk7CisgICAgICAgIG1fc2FtcGxlID0gYWRvcHRHUmVm
KGdzdF9zYW1wbGVfbmV3KHJnYkJ1ZmZlci5nZXQoKSwgbV9jb2xvckNvbnZlcnRPdXRwdXRDYXBz
LmdldCgpLAorICAgICAgICAgICAgZ3N0X3NhbXBsZV9nZXRfc2VnbWVudChtX3NhbXBsZS5nZXQo
KSksIGluZm8gPyBnc3Rfc3RydWN0dXJlX2NvcHkoaW5mbykgOiBudWxscHRyKSk7CisgICAgfQor
I2VuZGlmCisKICAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdl
KG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRl
eCBlMjYwNGM0YWUzYjA1OWNlMWZiNmUwNGQ1NjhmMWE4MzZhMjMwNGE0Li5iYmNmYmNjZDc2MmQ1
MmZlNDY0ZmZmYWRiYTBlZjBhODZlYThjMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTI5NSw2ICsyOTUsMTAgQEAgcHJvdGVj
dGVkOgogICAgIEdSZWZQdHI8R3N0Q29udGV4dD4gbV9nbERpc3BsYXlFbGVtZW50Q29udGV4dDsK
ICAgICBHUmVmUHRyPEdzdENvbnRleHQ+IG1fZ2xBcHBFbGVtZW50Q29udGV4dDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPiBtX3ZpZGVvVGV4dHVyZUNv
cGllcjsKKworICAgIEdSZWZQdHI8R3N0R0xDb2xvckNvbnZlcnQ+IG1fY29sb3JDb252ZXJ0Owor
ICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9jb2xvckNvbnZlcnRJbnB1dENhcHM7CisgICAgR1JlZlB0
cjxHc3RDYXBzPiBtX2NvbG9yQ29udmVydE91dHB1dENhcHM7CiAjZW5kaWYKIAogICAgIEltYWdl
T3JpZW50YXRpb24gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377892</attachid>
            <date>2019-09-03 05:36:54 -0700</date>
            <delta_ts>2019-09-03 07:58:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200922-20190903133653.patch</filename>
            <type>text/plain</type>
            <size>4524</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc4M2FjZTA0Yjg5YjRk
NTZlYWFhNGM3ZGQ4ZmEyZjBlZDA3ZTc2Ni4uMjRhNjU0ZjNjYWM2ODI1MjMwNjRkN2VlZWMzYTA3
NTZjZGI2NDNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA5LTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3Vw
cG9ydCB0byBjb3B5IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIGltYWdlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwOTIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZCBhbmQgWGFiaWVyIFJvZHJpZ3Vlei1DYWx2YXIuCisK
KyAgICAgICAgVXNlIGdzdF9nbF9jb2xvcl9jb252ZXJ0IHRvIGNvbnZlcnQgdG8gUkdCIGJlZm9y
ZSB1c2luZyBJbWFnZUdTdHJlYW1lcgorICAgICAgICB3aXRoIGdzdHJlYW1lci1nbC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vdCBjaGFuZ2luZyBiZWhhdmlvci4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorCiAyMDE5LTA5LTAzICBDaHJpcyBMb3JkICA8Y2xv
cmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCB0byBjb3B5
IFlVViB2aWRlbyB0ZXh0dXJlcyBpbnRvIHBsYXRmb3JtIHRleHR1cmVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNzkwNTJh
MTE4YzI2MDhjOGI0NjI5ZWUxNGI2NmU3YTg1N2RmNzViNS4uNzdiN2U0MzFhNmIzNDIzYWFjMDFi
NTM5MmZiZDhjY2RhYjMxN2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtOTY5LDYgKzk2OSw1MCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYQogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAg
ICAgICAgIHJldHVybjsKIAorI2lmIFVTRShHU1RSRUFNRVJfR0wpCisgICAgLy8gRW5zdXJlIHRo
ZSBpbnB1dCBpcyBSR0JBLiBXZSBoYW5kbGUgWVVWIHZpZGVvIG5hdGl2ZWx5LCBzbyB3ZSBuZWVk
IHRvIGRvCisgICAgLy8gdGhpcyBjb252ZXJzaW9uIG9uLWRlbWFuZCBoZXJlLgorICAgIEdzdEJ1
ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdldCgpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIUdTVF9JU19CVUZGRVIoYnVmZmVyKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIEdzdENhcHMqIGNhcHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgp
KTsKKworICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CisgICAgZ3N0X3ZpZGVvX2luZm9faW5p
dCgmdmlkZW9JbmZvKTsKKyAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcygmdmlkZW9J
bmZvLCBjYXBzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFHU1RfVklERU9fSU5GT19J
U19SR0IoJnZpZGVvSW5mbykpIHsKKyAgICAgICAgaWYgKCFtX2NvbG9yQ29udmVydCkgeworICAg
ICAgICAgICAgR3N0TWVtb3J5KiBtZW0gPSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5KGJ1ZmZlciwg
MCk7CisgICAgICAgICAgICBHc3RHTENvbnRleHQqIGNvbnRleHQgPSAoKEdzdEdMQmFzZU1lbW9y
eSopbWVtKS0+Y29udGV4dDsKKyAgICAgICAgICAgIG1fY29sb3JDb252ZXJ0ID0gYWRvcHRHUmVm
KGdzdF9nbF9jb2xvcl9jb252ZXJ0X25ldyhjb250ZXh0KSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIW1fY29sb3JDb252ZXJ0SW5wdXRDYXBzIHx8ICFnc3RfY2Fwc19pc19lcXVhbChtX2Nv
bG9yQ29udmVydElucHV0Q2Fwcy5nZXQoKSwgY2FwcykpIHsKKyAgICAgICAgICAgIG1fY29sb3JD
b252ZXJ0SW5wdXRDYXBzID0gY2FwczsKKyAgICAgICAgICAgIG1fY29sb3JDb252ZXJ0T3V0cHV0
Q2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19jb3B5KGNhcHMpKTsKKyNpZiBHX0JZVEVfT1JERVIg
PT0gR19MSVRUTEVfRU5ESUFOCisgICAgICAgICAgICBjb25zdCBnY2hhciogZm9ybWF0U3RyaW5n
ID0gR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gIlJHQkEiIDogIkJHUngi
OworI2Vsc2UKKyAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBmb3JtYXRTdHJpbmcgPSBHU1RfVklE
RU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyAiUkdCQSIgOiAiUkdCeCI7CisjZW5kaWYK
KyAgICAgICAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUobV9jb2xvckNvbnZlcnRPdXRwdXRDYXBz
LmdldCgpLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgZm9ybWF0U3RyaW5nLCBudWxscHRyKTsK
KyAgICAgICAgICAgIGlmICghZ3N0X2dsX2NvbG9yX2NvbnZlcnRfc2V0X2NhcHMobV9jb2xvckNv
bnZlcnQuZ2V0KCksIGNhcHMsIG1fY29sb3JDb252ZXJ0T3V0cHV0Q2Fwcy5nZXQoKSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgR1JlZlB0cjxHc3RCdWZm
ZXI+IHJnYkJ1ZmZlciA9IGFkb3B0R1JlZihnc3RfZ2xfY29sb3JfY29udmVydF9wZXJmb3JtKG1f
Y29sb3JDb252ZXJ0LmdldCgpLCBidWZmZXIpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFHU1Rf
SVNfQlVGRkVSKHJnYkJ1ZmZlci5nZXQoKSkpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGNvbnN0IEdzdFN0cnVjdHVyZSogaW5mbyA9IGdzdF9zYW1wbGVfZ2V0X2luZm8obV9zYW1w
bGUuZ2V0KCkpOworICAgICAgICBtX3NhbXBsZSA9IGFkb3B0R1JlZihnc3Rfc2FtcGxlX25ldyhy
Z2JCdWZmZXIuZ2V0KCksIG1fY29sb3JDb252ZXJ0T3V0cHV0Q2Fwcy5nZXQoKSwKKyAgICAgICAg
ICAgIGdzdF9zYW1wbGVfZ2V0X3NlZ21lbnQobV9zYW1wbGUuZ2V0KCkpLCBpbmZvID8gZ3N0X3N0
cnVjdHVyZV9jb3B5KGluZm8pIDogbnVsbHB0cikpOworICAgIH0KKyNlbmRpZgorCiAgICAgYXV0
byBnc3RJbWFnZSA9IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7
CiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggODI5MjljZjQyYmZiYTE2
MzExMDI0NjYzODVjM2NmMDdkNjFjMDdiOS4uM2VhMWQxMDIxZDhiYzBlYTE4ZTMyMjY3MzI2YmYz
MmJiYjE2M2UyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5oCkBAIC0yOTYsNiArMjk2LDEwIEBAIHByb3RlY3RlZDoKICAgICBHUmVmUHRy
PEdzdENvbnRleHQ+IG1fZ2xEaXNwbGF5RWxlbWVudENvbnRleHQ7CiAgICAgR1JlZlB0cjxHc3RD
b250ZXh0PiBtX2dsQXBwRWxlbWVudENvbnRleHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVv
VGV4dHVyZUNvcGllckdTdHJlYW1lcj4gbV92aWRlb1RleHR1cmVDb3BpZXI7CisKKyAgICBHUmVm
UHRyPEdzdEdMQ29sb3JDb252ZXJ0PiBtX2NvbG9yQ29udmVydDsKKyAgICBHUmVmUHRyPEdzdENh
cHM+IG1fY29sb3JDb252ZXJ0SW5wdXRDYXBzOworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9jb2xv
ckNvbnZlcnRPdXRwdXRDYXBzOwogI2VuZGlmCiAKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>