<?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>217943</bug_id>
          
          <creation_ts>2020-10-19 23:23:59 -0700</creation_ts>
          <short_desc>TextureMapperLayer::paintWithIntermediateSurface: Reduce BitmapTextures by unifying replicaSurface and mainSurface</short_desc>
          <delta_ts>2020-10-28 13:01: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>Platform</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>magomez</cc>
    
    <cc>noam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1699615</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-19 23:23:59 -0700</bug_when>
    <thetext>TextureMapperLayer::paintWithIntermediateSurface: Reduce BitmapTextures by unifying replicaSurface and mainSurface

TextureMapperLayer::paintWithIntermediateSurface is using two BitmapTextures for replicaSurface and mainSurface.
But, IIUC, a single BitmapTexture suffices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699617</commentid>
    <comment_count>1</comment_count>
      <attachid>411841</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-19 23:30:14 -0700</bug_when>
    <thetext>Created attachment 411841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699621</commentid>
    <comment_count>2</comment_count>
      <attachid>411841</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2020-10-20 00:02:49 -0700</bug_when>
    <thetext>Comment on attachment 411841
Patch

IIRC the second surface is necessary. Since the replica might have a different opacity/transform/mask than the main surface, it needs to blend separately, and it also needs a different size surface due to the different transform.

This patch would result in the main surface clipping the reflection, and blending it incorrectly. 
I&apos;m sure some of the tests in compositing/reflection would catch this, not sure if they&apos;re skipped for GTK/WPE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699624</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-20 00:11:54 -0700</bug_when>
    <thetext>I&apos;m testing with GTK port which runs all compositing/reflection 30 test cases. I observers no regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699625</commentid>
    <comment_count>4</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2020-10-20 00:15:07 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #3)
&gt; I&apos;m testing with GTK port which runs all compositing/reflection 30 test
&gt; cases. I observers no regressions.

OK then. Will let current Texmap people review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701774</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-26 23:24:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/70710946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701817</commentid>
    <comment_count>6</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2020-10-27 03:45:53 -0700</bug_when>
    <thetext>I&apos;m not an expert in this replica code, but I&apos;ve been looking into how it works and what this patch does.

* From what I see, TextureMapperLayer::paintWithIntermediateSurface() paints the replicaLayer first into a surface with opacity 1 and its own transformation.

* If the original opacity is 1 it already paints the surface content into the frambuffer with the original opacity.

* Then it paints the main layer with opacity 1 into a new surface.

* If the original opacity is not 1 (which would mean that the replica surface has already been painted), the main surface is painted into the replica surface with opacity 1, and then the result is painted to the framebuffer with the real opacity.

From this code I see that both the main layer and the replica layer are painted with the same opacity.
The rect received to paint is the same for both layers, and its size includes the size for both layers: if the original layer is 200x200 and the reflection is below, the passed rect will be 200x400.
The transformation is different for those layers, but the replica one just performs the move&amp;flip for the reflection. I&apos;ve been checking the CSS doc and I don&apos;t see how a replica layer can have more transformations than those (can&apos;t be scaled or rotated or anything else, am I wrong?), which means that it should fit into the target rect.

So, taking into account all those things, this patch seems to have the same behavior than the existent code:

* The allocated surface is has the size of the passed rect, which is enough to paint both layers.
* The replica layer is painted into the surface with opacity 1
* The main layer is painted into the same surface with opacity 1
* The result is painted into the framebuffer with the original opacity

So, unless I&apos;m missing some use cases that I don&apos;t know about, I think that this patch should be ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701821</commentid>
    <comment_count>7</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2020-10-27 04:00:51 -0700</bug_when>
    <thetext>(In reply to Miguel Gomez from comment #6)
&gt; I&apos;m not an expert in this replica code, but I&apos;ve been looking into how it
&gt; works and what this patch does.
&gt; 
&gt; * From what I see, TextureMapperLayer::paintWithIntermediateSurface() paints
&gt; the replicaLayer first into a surface with opacity 1 and its own
&gt; transformation.
&gt; 
&gt; * If the original opacity is 1 it already paints the surface content into
&gt; the frambuffer with the original opacity.
&gt; 
&gt; * Then it paints the main layer with opacity 1 into a new surface.
&gt; 
&gt; * If the original opacity is not 1 (which would mean that the replica
&gt; surface has already been painted), the main surface is painted into the
&gt; replica surface with opacity 1, and then the result is painted to the
&gt; framebuffer with the real opacity.
&gt; 
&gt; From this code I see that both the main layer and the replica layer are
&gt; painted with the same opacity.
&gt; The rect received to paint is the same for both layers, and its size
&gt; includes the size for both layers: if the original layer is 200x200 and the
&gt; reflection is below, the passed rect will be 200x400.
&gt; The transformation is different for those layers, but the replica one just
&gt; performs the move&amp;flip for the reflection. I&apos;ve been checking the CSS doc
&gt; and I don&apos;t see how a replica layer can have more transformations than those
&gt; (can&apos;t be scaled or rotated or anything else, am I wrong?), which means that
&gt; it should fit into the target rect.
&gt; 
&gt; So, taking into account all those things, this patch seems to have the same
&gt; behavior than the existent code:
&gt; 
&gt; * The allocated surface is has the size of the passed rect, which is enough
&gt; to paint both layers.
&gt; * The replica layer is painted into the surface with opacity 1
&gt; * The main layer is painted into the same surface with opacity 1
&gt; * The result is painted into the framebuffer with the original opacity
&gt; 
&gt; So, unless I&apos;m missing some use cases that I don&apos;t know about, I think that
&gt; this patch should be ok.

I wrote the original replica code and I believe the additional surface was originally needed because of something to do with the surface sizes, which was since changed.

btw CSS reflections have never been fully standardized and are not supported by Firefox :(
TextureMapper can probably become much simpler if it didn&apos;t support those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702219</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-27 20:19:23 -0700</bug_when>
    <thetext>Thank you for the review, Miguel and Noam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702232</commentid>
    <comment_count>9</comment_count>
      <attachid>411841</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-27 23:23:07 -0700</bug_when>
    <thetext>Comment on attachment 411841
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:451
&gt;          paintOptions.backdropLayer = nullptr;

I moved paintOptions to the local scope of if.  I can remove this line.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:-458
&gt; -    surface = surface-&gt;applyFilters(options.textureMapper, m_currentFilters);

I shouldn&apos;t remove this applyFilters. The subsequent applyMask is using it. As far as I tested, the combination of reflection and mask doesn&apos;t work as expected in TextureMapper. I&apos;ll add a test case in a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702233</commentid>
    <comment_count>10</comment_count>
      <attachid>412508</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-27 23:28:03 -0700</bug_when>
    <thetext>Created attachment 412508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702462</commentid>
    <comment_count>11</comment_count>
      <attachid>412508</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-28 13:01:44 -0700</bug_when>
    <thetext>Comment on attachment 412508
Patch

Clearing flags on attachment: 412508

Committed r269116: &lt;https://trac.webkit.org/changeset/269116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702463</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-28 13:01:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411841</attachid>
            <date>2020-10-19 23:30:14 -0700</date>
            <delta_ts>2020-10-27 23:28:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217943-20201020153013.patch</filename>
            <type>text/plain</type>
            <size>5975</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEwYTM0N2IzZTI2MGUx
Yzc2OWI2NmQ3ZTVkNWJlNWUzNDYwMWY2NC4uZWM1ZTlhYWIzMDQ0MzM0Y2RmMGZkM2UwZWIzYjA2
YjYwOTJmMDhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTEwLTE5ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZTogUmVkdWNlIEJpdG1hcFRl
eHR1cmVzIGJ5IHVuaWZ5aW5nIHJlcGxpY2FTdXJmYWNlIGFuZCBtYWluU3VyZmFjZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3OTQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGV4dHVyZU1hcHBlckxh
eWVyOjpwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlIHdhcyB1c2luZyB0d28KKyAgICAgICAg
Qml0bWFwVGV4dHVyZXMgZm9yIHRoZSBtYWluIGxheWVyIGFuZCByZXBsaWNhIGxheWVyLiBCdXQs
IGEgc2luZ2xlCisgICAgICAgIEJpdG1hcFRleHR1cmUgc3VmZmljZXMuIENyZWF0ZSBhIEJpdG1h
cFRleHR1cmUgYW5kIHJlbmRlciBib3RoCisgICAgICAgIGxheWVycyBvbnRvIGl0LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
OgorCiAyMDIwLTEwLTE4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xGQ11bSUZDXVtRdWlya10gTm8gc29mdCB3cmFwcGluZyBvcHBvcnR1bml0eSBiZWZvcmUv
YWZ0ZXIgaW1hZ2UgY29udGVudCB3aGVuIHRoZSByb290IGlzIGEgdGFibGUgY2VsbApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCBhMjM2YTZhN2E4NDllMjAwYzczOTEwZWM2NTgzMzk4
ZWY3ODFmMzEyLi4yNTY3ZDFmMmUzM2VmYjA1Zjc2ZjE2NWZhZGMxMGRlOTUxODc1ZjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtNDQxLDIzICs0NDEsMTkgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmFwcGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25z
JiBvcHRpb25zKQogICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5zZXRNYXNrTW9kZShmYWxzZSk7
CiB9CiAKLVJlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50
b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludEludG9TdXJmYWNl
KFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgUmVmUHRyPEJpdG1h
cFRleHR1cmU+IHN1cmZhY2UgPSBvcHRpb25zLnRleHR1cmVNYXBwZXIuYWNxdWlyZVRleHR1cmVG
cm9tUG9vbChzaXplLCBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhKTsKLSAgICBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zIHBhaW50T3B0aW9ucyhvcHRpb25zKTsKLSAgICBwYWludE9wdGlv
bnMuc3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmJpbmRTdXJm
YWNlKHN1cmZhY2UuZ2V0KCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFj
ZShvcHRpb25zLnN1cmZhY2UuZ2V0KCkpOwogICAgIGlmIChtX2lzQmFja2Ryb3ApIHsKKyAgICAg
ICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMob3B0aW9ucyk7CiAgICAg
ICAgIHBhaW50T3B0aW9ucy5iYWNrZHJvcExheWVyID0gdGhpczsKICAgICAgICAgcm9vdExheWVy
KCkucGFpbnRTZWxmQW5kQ2hpbGRyZW4ocGFpbnRPcHRpb25zKTsKICAgICAgICAgcGFpbnRPcHRp
b25zLmJhY2tkcm9wTGF5ZXIgPSBudWxscHRyOwogICAgIH0gZWxzZQotICAgICAgICBwYWludFNl
bGZBbmRDaGlsZHJlbihwYWludE9wdGlvbnMpOworICAgICAgICBwYWludFNlbGZBbmRDaGlsZHJl
bihvcHRpb25zKTsKICAgICBpZiAobV9zdGF0ZS5tYXNrTGF5ZXIpCiAgICAgICAgIG1fc3RhdGUu
bWFza0xheWVyLT5hcHBseU1hc2sob3B0aW9ucyk7Ci0gICAgc3VyZmFjZSA9IHN1cmZhY2UtPmFw
cGx5RmlsdGVycyhvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fY3VycmVudEZpbHRlcnMpOwotICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKLSAgICBy
ZXR1cm4gc3VyZmFjZTsKKyAgICBvcHRpb25zLnN1cmZhY2UgPSBvcHRpb25zLnN1cmZhY2UtPmFw
cGx5RmlsdGVycyhvcHRpb25zLnRleHR1cmVNYXBwZXIsIG1fY3VycmVudEZpbHRlcnMpOwogfQog
CiBzdGF0aWMgdm9pZCBjb21taXRTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMmIG9wdGlvbnMsIEJpdG1hcFRleHR1cmUmIHN1cmZhY2UsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IGZsb2F0IG9wYWNpdHkpCkBAIC00NzEsMzggKzQ2NywyNyBAQCBzdGF0aWMgdm9pZCBjb21taXRT
dXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIEJpdG1hcFRl
eHR1cgogCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3Vy
ZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQogewotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiByZXBsaWNhU3VyZmFjZTsK
LSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbWFpblN1cmZhY2U7CiAgICAgVGV4dHVyZU1hcHBl
clBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMob3B0aW9ucyk7CisgICAgcGFpbnRPcHRpb25zLnN1
cmZhY2UgPSBvcHRpb25zLnRleHR1cmVNYXBwZXIuYWNxdWlyZVRleHR1cmVGcm9tUG9vbChyZWN0
LnNpemUoKSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSk7CiAgICAgcGFpbnRPcHRpb25z
Lm9mZnNldCA9IC1JbnRTaXplKHJlY3QueCgpLCByZWN0LnkoKSk7CiAgICAgcGFpbnRPcHRpb25z
Lm9wYWNpdHkgPSAxOwogICAgIHBhaW50T3B0aW9ucy50cmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpOwogICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllcikgewogICAgICAgICBwYWlu
dE9wdGlvbnMuaXNSZXBsaWNhID0gdHJ1ZTsKICAgICAgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9y
bSA9IHJlcGxpY2FUcmFuc2Zvcm0oKTsKLSAgICAgICAgcmVwbGljYVN1cmZhY2UgPSBwYWludElu
dG9TdXJmYWNlKHBhaW50T3B0aW9ucywgcmVjdC5zaXplKCkpOworICAgICAgICBwYWludEludG9T
dXJmYWNlKHBhaW50T3B0aW9ucyk7CiAgICAgICAgIHBhaW50T3B0aW9ucy5pc1JlcGxpY2EgPSBm
YWxzZTsKICAgICAgICAgcGFpbnRPcHRpb25zLnRyYW5zZm9ybSA9IFRyYW5zZm9ybWF0aW9uTWF0
cml4KCk7CiAgICAgICAgIGlmIChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5
ZXIpCiAgICAgICAgICAgICBtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9zdGF0ZS5tYXNrTGF5ZXIt
PmFwcGx5TWFzayhwYWludE9wdGlvbnMpOwogICAgIH0KIAotICAgIGlmIChyZXBsaWNhU3VyZmFj
ZSAmJiBvcHRpb25zLm9wYWNpdHkgPT0gMSkgewotICAgICAgICBjb21taXRTdXJmYWNlKG9wdGlv
bnMsICpyZXBsaWNhU3VyZmFjZSwgcmVjdCwgMSk7Ci0gICAgICAgIHJlcGxpY2FTdXJmYWNlID0g
bnVsbHB0cjsKLSAgICB9Ci0KICAgICBpZiAobV9pc0JhY2tkcm9wICYmIG1fZWZmZWN0VGFyZ2V0
LT5tX3N0YXRlLnJlcGxpY2FMYXllciAmJiBvcHRpb25zLmlzUmVwbGljYSkKICAgICAgICAgcGFp
bnRPcHRpb25zLnRyYW5zZm9ybSA9IG1fZWZmZWN0VGFyZ2V0LT5yZXBsaWNhVHJhbnNmb3JtKCk7
CiAKLSAgICBtYWluU3VyZmFjZSA9IHBhaW50SW50b1N1cmZhY2UocGFpbnRPcHRpb25zLCByZWN0
LnNpemUoKSk7Ci0gICAgaWYgKHJlcGxpY2FTdXJmYWNlKSB7Ci0gICAgICAgIG9wdGlvbnMudGV4
dHVyZU1hcHBlci5iaW5kU3VyZmFjZShyZXBsaWNhU3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci5kcmF3VGV4dHVyZSgqbWFpblN1cmZhY2UuZ2V0KCksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIHJlY3Quc2l6ZSgpKSk7Ci0gICAgICAgIG1haW5TdXJm
YWNlID0gcmVwbGljYVN1cmZhY2U7Ci0gICAgfQorICAgIHBhaW50SW50b1N1cmZhY2UocGFpbnRP
cHRpb25zKTsKIAotICAgIGNvbW1pdFN1cmZhY2Uob3B0aW9ucywgKm1haW5TdXJmYWNlLCByZWN0
LCBvcHRpb25zLm9wYWNpdHkpOworICAgIGNvbW1pdFN1cmZhY2Uob3B0aW9ucywgKnBhaW50T3B0
aW9ucy5zdXJmYWNlLCByZWN0LCBvcHRpb25zLm9wYWNpdHkpOwogfQogCiB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2ZDIzZTQ0Njc5YjE3OWMy
OGFhZjlkN2Q1YTFiY2FhNmVkODY4MTRiLi5jMDlhYTAyMmUzMGJlYjFiOTViMWQyMTQ3ODZjOTEy
NTg2YWVmNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0xMzEsNyArMTMxLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcGFpbnRSZWN1cnNpdmUoY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRl
eHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gcGFp
bnRJbnRvU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50
U2l6ZSYpOworICAgIHZvaWQgcGFpbnRJbnRvU3VyZmFjZShUZXh0dXJlTWFwcGVyUGFpbnRPcHRp
b25zJik7CiAgICAgdm9pZCBwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBwYWludFNl
bGYoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRTZWxm
QW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412508</attachid>
            <date>2020-10-27 23:28:03 -0700</date>
            <delta_ts>2020-10-28 13:01:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217943-20201028152802.patch</filename>
            <type>text/plain</type>
            <size>5997</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJjYmU0OGFjYzQ3ZDE1
ZGY4YjhhZWI1ZDg5NjUxYjI3Mzc0OThjZS4uYmVkZDE1ZjRmNDFmODY5ZjRhODE1NGM3YjAxYWVj
NTZjNDkxYzI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTEwLTI3ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFRleHR1cmVN
YXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZTogUmVkdWNlIEJpdG1hcFRl
eHR1cmVzIGJ5IHVuaWZ5aW5nIHJlcGxpY2FTdXJmYWNlIGFuZCBtYWluU3VyZmFjZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3OTQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGV4dHVyZU1hcHBlckxh
eWVyOjpwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlIHdhcyB1c2luZyB0d28KKyAgICAgICAg
Qml0bWFwVGV4dHVyZXMgZm9yIHRoZSBtYWluIGxheWVyIGFuZCByZXBsaWNhIGxheWVyLiBCdXQs
IGEgc2luZ2xlCisgICAgICAgIEJpdG1hcFRleHR1cmUgc3VmZmljZXMuIENyZWF0ZSBhIEJpdG1h
cFRleHR1cmUgYW5kIHJlbmRlciBib3RoCisgICAgICAgIGxheWVycyBvbnRvIGl0LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludEludG9TdXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRXaXRoSW50ZXJtZWRpYXRlU3VyZmFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
OgorCiAyMDIwLTEwLTI3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2UgUmVuZGVyaW5nTW9kZSBhIGJvb2wgZW51bSBhbmQgcmVtb3ZlIFNob3VsZEFj
Y2VsZXJhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggNzYwNTMzNjYxMDEwM2M1
M2Q3Mzk1MDgxY2I0NGIyOTc3NDIyMzI1Yi4uMDJhNDZhZGE1Y2Y5MzdkM2QxMjdlOTc3ZmI2ZWJi
YmUyMDk1NDY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTQ0MywyMyArNDQz
LDE5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjphcHBseU1hc2soY29uc3QgVGV4dHVyZU1h
cHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykKICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuc2V0
TWFza01vZGUoZmFsc2UpOwogfQogCi1SZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBl
ckxheWVyOjpwYWludEludG9TdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
cGFpbnRJbnRvU3VyZmFjZShUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVy
LmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBo
YSk7Ci0gICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBwYWludE9wdGlvbnMob3B0aW9ucyk7
Ci0gICAgcGFpbnRPcHRpb25zLnN1cmZhY2UgPSBzdXJmYWNlOwotICAgIG9wdGlvbnMudGV4dHVy
ZU1hcHBlci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKKyAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXIuYmluZFN1cmZhY2Uob3B0aW9ucy5zdXJmYWNlLmdldCgpKTsKICAgICBpZiAobV9pc0Jh
Y2tkcm9wKSB7CisgICAgICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgcGFpbnRPcHRpb25z
KG9wdGlvbnMpOwogICAgICAgICBwYWludE9wdGlvbnMuYmFja2Ryb3BMYXllciA9IHRoaXM7CiAg
ICAgICAgIHJvb3RMYXllcigpLnBhaW50U2VsZkFuZENoaWxkcmVuKHBhaW50T3B0aW9ucyk7Ci0g
ICAgICAgIHBhaW50T3B0aW9ucy5iYWNrZHJvcExheWVyID0gbnVsbHB0cjsKICAgICB9IGVsc2UK
LSAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW4ocGFpbnRPcHRpb25zKTsKKyAgICAgICAgcGFp
bnRTZWxmQW5kQ2hpbGRyZW4ob3B0aW9ucyk7CiAgICAgaWYgKG1fc3RhdGUubWFza0xheWVyKQog
ICAgICAgICBtX3N0YXRlLm1hc2tMYXllci0+YXBwbHlNYXNrKG9wdGlvbnMpOwotICAgIHN1cmZh
Y2UgPSBzdXJmYWNlLT5hcHBseUZpbHRlcnMob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX2N1cnJl
bnRGaWx0ZXJzKTsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuYmluZFN1cmZhY2Uoc3VyZmFj
ZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHN1cmZhY2U7CisgICAgb3B0aW9ucy5zdXJmYWNlID0gb3B0
aW9ucy5zdXJmYWNlLT5hcHBseUZpbHRlcnMob3B0aW9ucy50ZXh0dXJlTWFwcGVyLCBtX2N1cnJl
bnRGaWx0ZXJzKTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuYmluZFN1cmZhY2Uob3B0aW9u
cy5zdXJmYWNlLmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgY29tbWl0U3VyZmFjZShjb25zdCBU
ZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zLCBCaXRtYXBUZXh0dXJlJiBzdXJmYWNl
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBvcGFjaXR5KQpAQCAtNDczLDM4ICs0NjksMjcg
QEAgc3RhdGljIHZvaWQgY29tbWl0U3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRp
b25zJiBvcHRpb25zLCBCaXRtYXBUZXh0dXIKIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gcmVwbGljYVN1cmZhY2U7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1haW5TdXJm
YWNlOwogICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMp
OworICAgIHBhaW50T3B0aW9ucy5zdXJmYWNlID0gb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmFjcXVp
cmVUZXh0dXJlRnJvbVBvb2wocmVjdC5zaXplKCksIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxw
aGEpOwogICAgIHBhaW50T3B0aW9ucy5vZmZzZXQgPSAtSW50U2l6ZShyZWN0LngoKSwgcmVjdC55
KCkpOwogICAgIHBhaW50T3B0aW9ucy5vcGFjaXR5ID0gMTsKICAgICBwYWludE9wdGlvbnMudHJh
bnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKICAgICBpZiAobV9zdGF0ZS5yZXBsaWNh
TGF5ZXIpIHsKICAgICAgICAgcGFpbnRPcHRpb25zLmlzUmVwbGljYSA9IHRydWU7CiAgICAgICAg
IHBhaW50T3B0aW9ucy50cmFuc2Zvcm0gPSByZXBsaWNhVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJl
cGxpY2FTdXJmYWNlID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJlY3Quc2l6ZSgp
KTsKKyAgICAgICAgcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMpOwogICAgICAgICBwYWlu
dE9wdGlvbnMuaXNSZXBsaWNhID0gZmFsc2U7CiAgICAgICAgIHBhaW50T3B0aW9ucy50cmFuc2Zv
cm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwogICAgICAgICBpZiAobV9zdGF0ZS5yZXBsaWNh
TGF5ZXItPm1fc3RhdGUubWFza0xheWVyKQogICAgICAgICAgICAgbV9zdGF0ZS5yZXBsaWNhTGF5
ZXItPm1fc3RhdGUubWFza0xheWVyLT5hcHBseU1hc2socGFpbnRPcHRpb25zKTsKICAgICB9CiAK
LSAgICBpZiAocmVwbGljYVN1cmZhY2UgJiYgb3B0aW9ucy5vcGFjaXR5ID09IDEpIHsKLSAgICAg
ICAgY29tbWl0U3VyZmFjZShvcHRpb25zLCAqcmVwbGljYVN1cmZhY2UsIHJlY3QsIDEpOwotICAg
ICAgICByZXBsaWNhU3VyZmFjZSA9IG51bGxwdHI7Ci0gICAgfQotCiAgICAgaWYgKG1faXNCYWNr
ZHJvcCAmJiBtX2VmZmVjdFRhcmdldC0+bV9zdGF0ZS5yZXBsaWNhTGF5ZXIgJiYgb3B0aW9ucy5p
c1JlcGxpY2EpCiAgICAgICAgIHBhaW50T3B0aW9ucy50cmFuc2Zvcm0gPSBtX2VmZmVjdFRhcmdl
dC0+cmVwbGljYVRyYW5zZm9ybSgpOwogCi0gICAgbWFpblN1cmZhY2UgPSBwYWludEludG9TdXJm
YWNlKHBhaW50T3B0aW9ucywgcmVjdC5zaXplKCkpOwotICAgIGlmIChyZXBsaWNhU3VyZmFjZSkg
ewotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuYmluZFN1cmZhY2UocmVwbGljYVN1cmZh
Y2UuZ2V0KCkpOwotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUoKm1h
aW5TdXJmYWNlLmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCByZWN0LnNpemUo
KSkpOwotICAgICAgICBtYWluU3VyZmFjZSA9IHJlcGxpY2FTdXJmYWNlOwotICAgIH0KKyAgICBw
YWludEludG9TdXJmYWNlKHBhaW50T3B0aW9ucyk7CiAKLSAgICBjb21taXRTdXJmYWNlKG9wdGlv
bnMsICptYWluU3VyZmFjZSwgcmVjdCwgb3B0aW9ucy5vcGFjaXR5KTsKKyAgICBjb21taXRTdXJm
YWNlKG9wdGlvbnMsICpwYWludE9wdGlvbnMuc3VyZmFjZSwgcmVjdCwgb3B0aW9ucy5vcGFjaXR5
KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50UmVjdXJzaXZlKGNvbnN0IFRl
eHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgK
aW5kZXggZDNmZDE3NjQzOTBhMjYwZDZmNzYxMWY5NTdlNzNkNzdmNjg3MThjNC4uZTg3NzJkMDRj
MzI4NjFjNTAyMzNhNWRlOTBlMjdhMzg2YzVlMjU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50UmVjdXJzaXZl
KGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKICAgICB2b2lkIHBhaW50VXNpbmdP
dmVybGFwUmVnaW9ucyhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7Ci0gICAgUmVm
UHRyPEJpdG1hcFRleHR1cmU+IHBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYsIGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHBhaW50SW50b1N1cmZhY2Uo
VGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYpOwogICAgIHZvaWQgcGFpbnRXaXRoSW50ZXJtZWRp
YXRlU3VyZmFjZShjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiwgY29uc3QgSW50UmVj
dCYpOwogICAgIHZvaWQgcGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMm
KTsKICAgICB2b2lkIHBhaW50U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWlu
dE9wdGlvbnMmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>