<?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>129957</bug_id>
          
          <creation_ts>2014-03-07 20:42:31 -0800</creation_ts>
          <short_desc>fast/css3-text/css3-text-decoration/text-decoration-thickness.html fails on GTK</short_desc>
          <delta_ts>2014-05-26 08:10:10 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>k.wolanski</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>mpakulavelrutka</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>988492</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-07 20:42:31 -0800</bug_when>
    <thetext>It looks like the font size is insufficient to make the test pass on GTK+. We can fix it by adding a few more orders of magnitude to the font size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988563</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-08 10:14:56 -0800</bug_when>
    <thetext>Looks like this might actually be a bug in the Cairo GraphicsContext. Investigating now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988564</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-08 10:44:51 -0800</bug_when>
    <thetext>fast/css3-text/css3-text-decoration/text-decoration-thickness.html and fast/css3-text/css3-text-decoration/text-decoration-style-double-space-scales.html are also failing because of this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988567</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-08 10:47:18 -0800</bug_when>
    <thetext>*** Bug 126879 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988575</commentid>
    <comment_count>4</comment_count>
      <attachid>226217</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-08 11:06:17 -0800</bug_when>
    <thetext>Created attachment 226217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988586</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-08 11:25:46 -0800</bug_when>
    <thetext>I have ported mmaxfield&apos;s original CG patch to the Cairo GraphicsContext, which seems to fix the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988901</commentid>
    <comment_count>6</comment_count>
      <attachid>226217</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-03-10 09:24:53 -0700</bug_when>
    <thetext>Comment on attachment 226217
Patch

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

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:617
&gt; +static FloatRect computeLineBoundsAndAntialiasingModeForText(GraphicsContext&amp; initialContext, const FloatPoint&amp; point, float width, bool printing, bool&amp; shouldAntialias, Color&amp; color)

Perhaps there is some cause for duplicate code reuse. Is there enough commonality here that the implementations could be unified?

&gt; LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-tall-underlines.html:-10
&gt; -&lt;div style=&quot;left: -160px; top: -320px; position: absolute; -webkit-transform: scale(20); font-family: helvetica; -webkit-transform-origin: left top; display: inline-block; text-decoration: underline; -webkit-text-decoration-skip: ink;&quot;&gt;gy&lt;/div&gt;

Glad you caught this. This is good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988905</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-10 09:33:54 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 226217 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226217&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:617
&gt; &gt; +static FloatRect computeLineBoundsAndAntialiasingModeForText(GraphicsContext&amp; initialContext, const FloatPoint&amp; point, float width, bool printing, bool&amp; shouldAntialias, Color&amp; color)
&gt; 
&gt; Perhaps there is some cause for duplicate code reuse. Is there enough commonality here that the implementations could be unified?

I&apos;d be happy to move the code to a shared GraphicsContext method if you think it makes sense. I&apos;ve tried to make most of the code platform-independent. Would getting the transformation matrix via GraphicsContext::getCTM be sufficient for iOS and Mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988927</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-03-10 10:06:08 -0700</bug_when>
    <thetext>GraphicsContext::getCTM(DefinitelyIncludeDeviceScale) should do the trick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988929</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-10 10:07:30 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; GraphicsContext::getCTM(DefinitelyIncludeDeviceScale) should do the trick.

Thanks for the information. I&apos;ll try to have a unified patch tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989484</commentid>
    <comment_count>10</comment_count>
      <attachid>226460</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-11 18:24:35 -0700</bug_when>
    <thetext>Created attachment 226460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989521</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-03-11 20:34:52 -0700</bug_when>
    <thetext>r=me but i&apos;m not a reviewer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998213</commentid>
    <comment_count>12</comment_count>
      <attachid>226460</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-07 12:42:49 -0700</bug_when>
    <thetext>Comment on attachment 226460
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:1012
&gt; +    return FloatRect(FloatPoint(origin.x(), origin.y()), FloatSize(width, thickness));

There is a FloatRect constructor that takes all four.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998352</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-04-07 18:35:45 -0700</bug_when>
    <thetext>Committed r166902: &lt;http://trac.webkit.org/changeset/166902&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011739</commentid>
    <comment_count>14</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2014-05-26 08:09:36 -0700</bug_when>
    <thetext>*** Bug 129734 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011741</commentid>
    <comment_count>15</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2014-05-26 08:09:52 -0700</bug_when>
    <thetext>*** Bug 127282 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011743</commentid>
    <comment_count>16</comment_count>
    <who name="Michal Pakula vel Rutka">mpakulavelrutka</who>
    <bug_when>2014-05-26 08:10:10 -0700</bug_when>
    <thetext>*** Bug 128664 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226217</attachid>
            <date>2014-03-08 11:06:17 -0800</date>
            <delta_ts>2014-03-11 18:23:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129957-20140308110616.patch</filename>
            <type>text/plain</type>
            <size>12481</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzEwZjRlMDA5ZGRlZGM2
YzEyOGM0YmRkNzk1ZGE1MGRlMDM4NzI4Zi4uOWVkNzUxOTQ2ZDA0YjY2MDI3MTNiNTJhNmE0MzRm
NDgzZDA2Mzk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTA4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBmYXN0L2NzczMt
dGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzLmh0bWwg
ZmFpbHMgb24gR1RLCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjk5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDYXVzZXMgZXhpc3RpbmcgdGVzdHMgdG8gcGFzcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDogQWxpZ24gdGhlIENhaXJv
IHZlcnNpb24gb2YgdGV4dCB1bmRlcmxpbmUgZHJhd2luZyB3aXRoIHRoZSBDRyB2ZXJzaW9uLgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9y
VGV4dCk6IFRyYW5zbGF0ZWQgdGhpcyB0byBhIENhaXJvIGltcGxlbWVudGF0aW9uIGZyb20gdGhl
IENHIHZlcnNpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3Jt
YXRpb25NYXRyaXhDYWlyby5jcHA6IEFkZGVkIGEgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhIGNh
aXJvX21hdHJpeF90LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZm
aW5lVHJhbnNmb3JtLmg6IERpdHRvLgorCiAyMDE0LTAzLTA3ICBUaW1vdGh5IEhhdGNoZXIgIDx0
aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBMb2FkIHNvdXJjZSBtYXBzIGFuZCB0aGVpciBy
ZXNvdXJjZXMgYXN5bmNocm9ub3VzbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5k
ZXggZmI2ZTZkMzVkZWI5MjBiYjlhNDFmYzg2ZDk5OGJhNDI0Zjk4NjEyYy4uMjNmMDA3NjU5NDNl
Y2U4OWUwMWQyZWM4Yjc2NDAxNWZjN2FkYTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMTQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdo
dCAoQykgMjAwOCBOdWFudGkgTHRkLgpAQCAtNjE0LDQxICs2MTQsOTcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50
IHdpZHRoLCBpbnQKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotRmxvYXRSZWN0IEdyYXBo
aWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIG9y
aWdpbiwgZmxvYXQgd2lkdGgsIGJvb2wpCitzdGF0aWMgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91
bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoR3JhcGhpY3NDb250ZXh0JiBpbml0aWFsQ29u
dGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5n
LCBib29sJiBzaG91bGRBbnRpYWxpYXMsIENvbG9yJiBjb2xvcikKK3sKKyAgICBGbG9hdFBvaW50
IG9yaWdpbjsKKyAgICBmbG9hdCB0aGlja25lc3MgPSBzdGQ6Om1heChpbml0aWFsQ29udGV4dC5z
dHJva2VUaGlja25lc3MoKSwgMC41Zik7CisKKyAgICBzaG91bGRBbnRpYWxpYXMgPSB0cnVlOwor
ICAgIGlmIChwcmludGluZykKKyAgICAgICAgb3JpZ2luID0gcG9pbnQ7CisgICAgZWxzZSB7Cisg
ICAgICAgIGNhaXJvX21hdHJpeF90IGNhaXJvVHJhbnNmb3JtOworICAgICAgICBjYWlyb19nZXRf
bWF0cml4KGluaXRpYWxDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCAmY2Fpcm9UcmFu
c2Zvcm0pOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gQWZmaW5lVHJhbnNm
b3JtKGNhaXJvVHJhbnNmb3JtKTsKKyAgICAgICAgaWYgKHRyYW5zZm9ybS5wcmVzZXJ2ZXNBeGlz
QWxpZ25tZW50KCkpCisgICAgICAgICAgICBzaG91bGRBbnRpYWxpYXMgPSBmYWxzZTsKKworICAg
ICAgICAvLyBUaGlzIGNvZGUgYWx3YXlzIGRyYXdzIGEgbGluZSB0aGF0IGlzIGF0IGxlYXN0IG9u
ZS1waXhlbCBsaW5lIGhpZ2gsCisgICAgICAgIC8vIHdoaWNoIHRlbmRzIHRvIHZpc3VhbGx5IG92
ZXJ3aGVsbSB0ZXh0IGF0IHNtYWxsIHNjYWxlcy4gVG8gY291bnRlciB0aGlzCisgICAgICAgIC8v
IGVmZmVjdCwgYW4gYWxwaGEgaXMgYXBwbGllZCB0byB0aGUgdW5kZXJsaW5lIGNvbG9yIHdoZW4g
dGV4dCBpcyBhdCBzbWFsbCBzY2FsZXMuCisKKyAgICAgICAgLy8gSnVzdCBjb21wdXRlIHNjYWxl
IGluIHggZGltZW5zaW9uLCBhc3N1bWluZyB4IGFuZCB5IHNjYWxlcyBhcmUgZXF1YWwuCisgICAg
ICAgIGZsb2F0IHNjYWxlID0gdHJhbnNmb3JtLmIoKSA/IHNxcnRmKHRyYW5zZm9ybS5hKCkgKiB0
cmFuc2Zvcm0uYSgpICsgdHJhbnNmb3JtLmIoKSAqIHRyYW5zZm9ybS5iKCkpIDogdHJhbnNmb3Jt
LmEoKTsKKyAgICAgICAgaWYgKHNjYWxlIDwgMS4wKSB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgZmxvYXQgbWluaW11bVVuZGVybGluZUFscGhhID0gMC40ZjsKKyAgICAgICAgICAgIGZsb2F0
IHNoYWRlID0gc2NhbGUgPiBtaW5pbXVtVW5kZXJsaW5lQWxwaGEgPyBzY2FsZSA6IG1pbmltdW1V
bmRlcmxpbmVBbHBoYTsKKyAgICAgICAgICAgIGludCBhbHBoYSA9IGNvbG9yLmFscGhhKCkgKiBz
aGFkZTsKKyAgICAgICAgICAgIGNvbG9yID0gQ29sb3IoY29sb3IucmVkKCksIGNvbG9yLmdyZWVu
KCksIGNvbG9yLmJsdWUoKSwgYWxwaGEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG9uJ3Qg
b2Zmc2V0IGxpbmUgZnJvbSBib3R0b20gb2YgdGV4dCBpZiBzY2FsZSBpcyBsZXNzIHRoYW4gb2Zm
c2V0VW5kZXJMaW5lU2NhbGUuCisgICAgICAgIHN0YXRpYyBjb25zdCBmbG9hdCBvZmZzZXRVbmRl
cmxpbmVTY2FsZSA9IDAuNGY7CisgICAgICAgIGZsb2F0IGR5ID0gc2NhbGUgPCBvZmZzZXRVbmRl
cmxpbmVTY2FsZSA/IDAgOiAxOworCisgICAgICAgIC8vIElmIHdlJ3ZlIGluY3JlYXNlZCB0aGUg
dGhpY2tuZXNzIG9mIHRoZSBsaW5lLCBtYWtlIHN1cmUgdG8gbW92ZSB0aGUgbG9jYXRpb24gdG9v
LgorICAgICAgICBpZiAodGhpY2tuZXNzID4gMSkKKyAgICAgICAgICAgIGR5ICs9IHJvdW5kZih0
aGlja25lc3MpIC0gMTsKKworICAgICAgICBGbG9hdFBvaW50IGRldmljZVBvaW50ID0gdHJhbnNm
b3JtLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgRmxvYXRQb2ludCBkZXZpY2VPcmlnaW4gPSBG
bG9hdFBvaW50KHJvdW5kZihkZXZpY2VQb2ludC54KCkpLCBjZWlsZihkZXZpY2VQb2ludC55KCkp
ICsgZHkpOworICAgICAgICBvcmlnaW4gPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFBvaW50KGRl
dmljZU9yaWdpbik7CisgICAgfQorICAgIHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludChvcmln
aW4ueCgpLCBvcmlnaW4ueSgpKSwgRmxvYXRTaXplKHdpZHRoLCB0aGlja25lc3MpKTsKK30KKwor
RmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0KGNvbnN0
IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCiB7Ci0gICAg
cmV0dXJuIEZsb2F0UmVjdChvcmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwgc3Ryb2tlVGhpY2tuZXNz
KCkpKTsKKyAgICBib29sIGR1bW15Qm9vbDsKKyAgICBDb2xvciBkdW1teUNvbG9yOworICAgIHJl
dHVybiBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KCp0aGlzLCBv
cmlnaW4sIHdpZHRoLCBwcmludGluZywgZHVtbXlCb29sLCBkdW1teUNvbG9yKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBvcmln
aW4sIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZVVuZGVybGluZXMpCiB7
CisgICAgRGFzaEFycmF5IHdpZHRoczsKKyAgICB3aWR0aHMuYXBwZW5kKHdpZHRoKTsKKyAgICB3
aWR0aHMuYXBwZW5kKDApOworICAgIGRyYXdMaW5lc0ZvclRleHQob3JpZ2luLCB3aWR0aHMsIHBy
aW50aW5nLCBkb3VibGVVbmRlcmxpbmVzKTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IERhc2hBcnJheSYg
d2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZVVuZGVybGluZXMpCit7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2Fpcm9fdCogY2Fp
cm9Db250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0gICAgY2Fpcm9fc2F2ZShjYWly
b0NvbnRleHQpOworICAgIGlmICh3aWR0aHMuc2l6ZSgpIDw9IDApCisgICAgICAgIHJldHVybjsK
KworICAgIENvbG9yIGxvY2FsU3Ryb2tlQ29sb3Ioc3Ryb2tlQ29sb3IoKSk7CiAKLSAgICAvLyBU
aGlzIGJ1bXBpbmcgb2YgPDEgc3Ryb2tlIHRoaWNrbmVzc2VzIG1hdGNoZXMgdGhlIG9uZSBpbiBk
cmF3TGluZU9uQ2Fpcm9Db250ZXh0LgotICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQob3JpZ2luICsg
SW50U2l6ZSh3aWR0aCwgMCkpOwotICAgIEZsb2F0UmVjdCBsaW5lRXh0ZW50cyA9IGNvbXB1dGVM
aW5lQm91bmRzRm9yVGV4dChvcmlnaW4sIHdpZHRoLCBwcmludGluZyk7CisgICAgYm9vbCBzaG91
bGRBbnRpYWxpYXNMaW5lOworICAgIEZsb2F0UmVjdCBib3VuZHMgPSBjb21wdXRlTGluZUJvdW5k
c0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KCp0aGlzLCBwb2ludCwgd2lkdGhzLmxhc3QoKSwg
cHJpbnRpbmcsIHNob3VsZEFudGlhbGlhc0xpbmUsIGxvY2FsU3Ryb2tlQ29sb3IpOworICAgIGJv
b2wgZmlsbENvbG9ySXNOb3RFcXVhbFRvU3Ryb2tlQ29sb3IgPSBmaWxsQ29sb3IoKSAhPSBsb2Nh
bFN0cm9rZUNvbG9yOworCisgICAgVmVjdG9yPEZsb2F0UmVjdCwgND4gZGFzaEJvdW5kczsKKyAg
ICBBU1NFUlQoISh3aWR0aHMuc2l6ZSgpICUgMikpOworICAgIGRhc2hCb3VuZHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShkYXNoQm91bmRzLnNpemUoKSAvIDIpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd2lkdGhzLnNpemUoKTsgaSArPSAyKQorICAgICAgICBkYXNoQm91bmRzLmFwcGVu
ZChGbG9hdFJlY3QoRmxvYXRQb2ludChib3VuZHMueCgpICsgd2lkdGhzW2ldLCBib3VuZHMueSgp
KSwgRmxvYXRTaXplKHdpZHRoc1tpKzFdIC0gd2lkdGhzW2ldLCBib3VuZHMuaGVpZ2h0KCkpKSk7
CiAKLSAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1
cigpOwotICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVn
aW5TaGFkb3dMYXllcih0aGlzLCBsaW5lRXh0ZW50cykpIHsKLSAgICAgICAgZHJhd0xpbmVPbkNh
aXJvQ29udGV4dCh0aGlzLCBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
b3JpZ2luLCBlbmRQb2ludCk7Ci0gICAgICAgIGlmIChkb3VibGVVbmRlcmxpbmVzKQotICAgICAg
ICAgICAgZHJhd0xpbmVPbkNhaXJvQ29udGV4dCh0aGlzLCBzaGFkb3dDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKSwgb3JpZ2luICsgRmxvYXRTaXplKDAsIHN0cm9rZVRoaWNrbmVzcygp
ICogMiksIGVuZFBvaW50ICsgRmxvYXRTaXplKDAsIHN0cm9rZVRoaWNrbmVzcygpICogMikpOwot
ICAgICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIodGhpcyk7CisgICAgaWYgKGRvdWJsZVVuZGVy
bGluZXMpIHsKKyAgICAgICAgLy8gVGhlIHNwYWNlIGJldHdlZW4gZG91YmxlIHVuZGVybGluZXMg
aXMgZXF1YWwgdG8gdGhlIGhlaWdodCBvZiB0aGUgdW5kZXJsaW5lCisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgd2lkdGhzLnNpemUoKTsgaSArPSAyKQorICAgICAgICAgICAgZGFzaEJv
dW5kcy5hcHBlbmQoRmxvYXRSZWN0KEZsb2F0UG9pbnQoYm91bmRzLngoKSArIHdpZHRoc1tpXSwg
Ym91bmRzLnkoKSArIDIgKiBib3VuZHMuaGVpZ2h0KCkpLCBGbG9hdFNpemUod2lkdGhzW2krMV0g
LSB3aWR0aHNbaV0sIGJvdW5kcy5oZWlnaHQoKSkpKTsKICAgICB9CiAKLSAgICBkcmF3TGluZU9u
Q2Fpcm9Db250ZXh0KHRoaXMsIGNhaXJvQ29udGV4dCwgb3JpZ2luLCBlbmRQb2ludCk7Ci0gICAg
aWYgKGRvdWJsZVVuZGVybGluZXMpCi0gICAgICAgIGRyYXdMaW5lT25DYWlyb0NvbnRleHQodGhp
cywgY2Fpcm9Db250ZXh0LCBvcmlnaW4gKyBGbG9hdFNpemUoMCwgc3Ryb2tlVGhpY2tuZXNzKCkg
KiAyKSwgZW5kUG9pbnQgKyBGbG9hdFNpemUoMCwgc3Ryb2tlVGhpY2tuZXNzKCkgKiAyKSk7Ci0g
ICAgY2Fpcm9fcmVzdG9yZShjYWlyb0NvbnRleHQpOwotfQorICAgIGNhaXJvX3QqIGNyID0gcGxh
dGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fc2F2ZShjcik7CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25z
dCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVVbmRlcmxpbmVz
KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2lkdGhzLnNpemUoKTsgaSArPSAyKQot
ICAgICAgICBkcmF3TGluZUZvclRleHQoRmxvYXRQb2ludChwb2ludC54KCkgKyB3aWR0aHNbaV0s
IHBvaW50LnkoKSksIHdpZHRoc1tpKzFdIC0gd2lkdGhzW2ldLCBwcmludGluZywgZG91YmxlVW5k
ZXJsaW5lcyk7CisgICAgZm9yIChhdXRvJiBkYXNoIDogZGFzaEJvdW5kcykKKyAgICAgICAgZmls
bFJlY3RXaXRoQ29sb3IoY3IsIGRhc2gsIGxvY2FsU3Ryb2tlQ29sb3IpOworCisgICAgY2Fpcm9f
cmVzdG9yZShjcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojp1cGRhdGVEb2N1bWVudE1h
cmtlclJlc291cmNlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8uY3BwCmlu
ZGV4IGJlYmM0YTMyMWU0NzViMWNlNzQ4MzQwMjM2ODI4ZDk3ZGVmMzQ2NzcuLjhjN2Y2NTM2ZGIy
MGU5MzgzNjE3NzA1MGVhZDBkNmUyZGI3YzZmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9u
TWF0cml4Q2Fpcm8uY3BwCkBAIC02MSw2ICs2MSwxMSBAQCBBZmZpbmVUcmFuc2Zvcm06Om9wZXJh
dG9yIGNhaXJvX21hdHJpeF90KCkgY29uc3QKICAgICByZXR1cm4gbTsKIH0KIAorQWZmaW5lVHJh
bnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0oY29uc3QgY2Fpcm9fbWF0cml4X3QmIHQpCit7CisgICAg
c2V0TWF0cml4KHQueHgsIHQueXgsIHQueHksIHQueXksIHQueDAsIHQueTApOworfQorCiB9CiAK
IC8vIHZpbTogdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAppbmRleCAwYTVi
NDU3MzIyNTkwNTkyMDQwODYyZTc4YWMxYzg3ZTI3NDkzNWMzLi4yMzBkNTA5MzQyNzNiNzYxMGYy
YWYyNjJhOGQ5NjczNTE5YjE1MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgKQEAgLTU5
LDYgKzU5LDEwIEBAIHB1YmxpYzoKICAgICBBZmZpbmVUcmFuc2Zvcm0oY29uc3QgQ0dBZmZpbmVU
cmFuc2Zvcm0mKTsKICNlbmRpZgogCisjaWYgVVNFKENBSVJPKQorICAgIEFmZmluZVRyYW5zZm9y
bShjb25zdCBjYWlyb19tYXRyaXhfdCYpOworI2VuZGlmCisKICAgICB2b2lkIHNldE1hdHJpeChk
b3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBm
KTsKIAogICAgIHZvaWQgbWFwKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlJiB4MiwgZG91Ymxl
JiB5MikgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzFlMjY0YTQ3MDdkY2JiOWNkYWM4OTZlYzQ1N2UzYjBkNjZi
YTcwZS4uZjExYzY4MWZiZDlkNjU4YzZhNzYwYWUxNDJiYTEzYWY2ODMxMjVkNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDE4IEBACiAyMDE0LTAzLTA4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdh
bGlhLmNvbT4KIAorICAgICAgICBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90
ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzLmh0bWwgZmFpbHMgb24gR1RLCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk5NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbnNraXBwZWQgdGVzdHMgYW5kIG1v
ZGlmaWVkIG9uZSB0ZXN0IHRvIHVzZSB0aGUgcGxhdGZvcm0taW5kZXBlbmRlbnQgQWhlbSBmb250
LgorCisgICAgICAgICogZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1k
ZWNvcmF0aW9uLXNraXAvdGV4dC1kZWNvcmF0aW9uLXNraXAtdGFsbC11bmRlcmxpbmVzLmh0bWw6
IFdlCisgICAgICAgIG5lZWQgdG8gdXNlIEFoZW0gYmVjYXVzZSBIZWx2ZXRpY2EgaXMgbm90IGEg
cGxhdGZvcm0taW5kZXBlbmRlbnQgZm9udC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9uczogVW5za2lwcGVkIHRlc3RzLgorCisyMDE0LTAzLTA4ICBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKwogICAgICAgICBBZGQgYW5kIHVwZGF0ZSBzb21l
IHRlc3QgZXhwZWN0YXRpb25zIGZvciBHVEsrCiAKICAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9uczogVGhlc2UgYWxsIHNlZW0gdG8gYmUgZmFpbGluZyBiZWNhdXNlIG9mIHRo
ZSBzYW1lIGJ1Zy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMt
dGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1za2lwL3RleHQtZGVjb3JhdGlvbi1za2lw
LXRhbGwtdW5kZXJsaW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10
ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLXNraXAvdGV4dC1kZWNvcmF0aW9uLXNraXAt
dGFsbC11bmRlcmxpbmVzLmh0bWwKaW5kZXggZTZhZWRkZjA5MGRiYjJmNDIzMzBhMDY2NGRmMGIz
N2ViZDZiYjAzNi4uOTVlNDA2ZmRlMThlOTJjMWVmN2Y0MDgzN2JjYjc2MTZlNzRiZjE5OCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24v
dGV4dC1kZWNvcmF0aW9uLXNraXAvdGV4dC1kZWNvcmF0aW9uLXNraXAtdGFsbC11bmRlcmxpbmVz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRp
b24vdGV4dC1kZWNvcmF0aW9uLXNraXAvdGV4dC1kZWNvcmF0aW9uLXNraXAtdGFsbC11bmRlcmxp
bmVzLmh0bWwKQEAgLTcsNyArNyw3IEBAIFRoaXMgdGV4dCBkcmF3cyB1bmRlcmxpbmVkIHRleHQg
d2l0aCBhIGxhcmdlIHNjYWxlLCB0aGVuIGNsaXBzIHRoZSB1bmRlcmxpbmUgdG8KIGEgcmVnaW9u
IHRoYXQgc2hvdWxkIG5vdCBiZSBkcmF3bi4gSXQgdGhlbiBtYWtlcyBzdXJlIHRoYXQgdGhlIGlt
YWdlIGlzIHRoZSBzYW1lIGFzCiBhbiBlbXB0eSBvbmUuCiA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiAzNnB4OyBoZWlnaHQ6IDEwMHB4OyI+
Ci08ZGl2IHN0eWxlPSJsZWZ0OiAtMTYwcHg7IHRvcDogLTMyMHB4OyBwb3NpdGlvbjogYWJzb2x1
dGU7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgyMCk7IGZvbnQtZmFtaWx5OiBoZWx2ZXRpY2E7
IC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7IGRpc3BsYXk6IGlubGluZS1ibG9j
azsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNr
aXA6IGluazsiPmd5PC9kaXY+Cis8ZGl2IHN0eWxlPSJsZWZ0OiAtMTYwcHg7IHRvcDogLTMyNXB4
OyBwb3NpdGlvbjogYWJzb2x1dGU7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgyMCk7IGZvbnQt
ZmFtaWx5OiBhaGVtOyAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOyBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAtd2Via2l0LXRleHQt
ZGVjb3JhdGlvbi1za2lwOiBpbms7Ij5neTwvZGl2PgogPC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDkyYTFiZjRi
OWRjMjYzYmE2ZTYzMmIxMWE0ZTVjMTQ3MTZkYzhkMTEuLmNlNjE5NjYzMmQwZmY2ZDBlODdhZDY1
MzQ1OWEyOWQxZGFjNjc4MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zCkBAIC0xNTQ5LDEwICsxNTQ5LDYgQEAgd2Via2l0Lm9yZy9iLzEyODQ5OSBzdmcvY2xp
cC1wYXRoL2NsaXAtcGF0aC1jb250ZW50LXVzZS0wMDYuc3ZnIFsgSW1hZ2VPbmx5RmFpbHUKIHdl
YmtpdC5vcmcvYi8xMjkxODAgc3ZnL2NsaXAtcGF0aC9jbGlwLXBhdGgtb24tc3ZnLTAwMS5zdmcg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMjkxODAgc3ZnL2NsaXAtcGF0aC9j
bGlwLXBhdGgtb24tc3ZnLTAwMi5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9y
Zy9iLzEyOTk1NyBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29y
YXRpb24tdGhpY2tuZXNzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8x
Mjk5NTcgZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9u
LXN0eWxlLWRvdWJsZS1zcGFjZS1zY2FsZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzEyOTk1NyBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0
LWRlY29yYXRpb24tc2tpcC90ZXh0LWRlY29yYXRpb24tc2tpcC10YWxsLXVuZGVybGluZXMuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTI5OTU4IHN2Zy9jbGlwLXBh
dGgvbWFzay1uZXN0ZWQtY2xpcC1wYXRoLTAwNi5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8xMjk5NTggc3ZnL2NsaXAtcGF0aC9tYXNrLW5lc3RlZC1jbGlwLXBhdGgtMDA3
LnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEyOTk1OCBzdmcvY2xpcC1w
YXRoL21hc2stbmVzdGVkLWNsaXAtcGF0aC0wMDguc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226460</attachid>
            <date>2014-03-11 18:24:35 -0700</date>
            <delta_ts>2014-04-07 18:38:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129957-20140311182411.patch</filename>
            <type>text/plain</type>
            <size>15688</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk2YmYzOTlhNTE4YWY2
OTYyODAzNTQ3NWUwZmY3MzU2OTNmM2FmMy4uZDg3ZTQ3ZmI4ZjQwOTViZmM3NjQzNjMyZDIwZjcy
ZjlhYWRjZTY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTEwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBmYXN0L2NzczMt
dGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzLmh0bWwg
ZmFpbHMgb24gR1RLCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjk5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDYXVzZXMgZXhpc3RpbmcgdGVzdHMgdG8gcGFzcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENHLmNwcDogVXNlIHRoZSBub3ctc2hhcmVk
IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOiBBbGlnbiB0
aGUgQ2Fpcm8gdmVyc2lvbiBvZiB0ZXh0IHVuZGVybGluZSBkcmF3aW5nIHdpdGggdGhlIENHIHZl
cnNpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6IEFk
ZCBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0LgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6IERpdHRvLgorCiAyMDE0LTAz
LTEwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdW1dlYktpdCAyXSBXaXJlIHRoZSB1bm9ic2N1cmVkIHJlY3QgaW4gdGhlIFdlYlByb2Nlc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGUxNTc3MDhjYTJiMDU1YWZmOTljOWQ1MjRlNDhjOGE3NTBjOWQ2MmEuLjUy
NjMwYjQ1MTg5MDM4ZGU1ZDhkN2E4Y2Y2MjljNTA1MzkyY2IwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtOTcx
LDQgKzk3MSw0NSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1TdHJva2VFbGxpcHNl
KGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIH0KICNlbmRpZgogCitGbG9hdFJlY3QgR3JhcGhp
Y3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZywgYm9vbCYg
c2hvdWxkQW50aWFsaWFzLCBDb2xvciYgY29sb3IpCit7CisgICAgRmxvYXRQb2ludCBvcmlnaW47
CisgICAgZmxvYXQgdGhpY2tuZXNzID0gc3RkOjptYXgoc3Ryb2tlVGhpY2tuZXNzKCksIDAuNWYp
OworCisgICAgc2hvdWxkQW50aWFsaWFzID0gdHJ1ZTsKKyAgICBpZiAocHJpbnRpbmcpCisgICAg
ICAgIG9yaWdpbiA9IHBvaW50OworICAgIGVsc2UgeworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
dHJhbnNmb3JtID0gZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZp
Y2VTY2FsZSk7CisgICAgICAgIGlmICh0cmFuc2Zvcm0ucHJlc2VydmVzQXhpc0FsaWdubWVudCgp
KQorICAgICAgICAgICAgc2hvdWxkQW50aWFsaWFzID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGhp
cyBjb2RlIGFsd2F5cyBkcmF3cyBhIGxpbmUgdGhhdCBpcyBhdCBsZWFzdCBvbmUtcGl4ZWwgbGlu
ZSBoaWdoLAorICAgICAgICAvLyB3aGljaCB0ZW5kcyB0byB2aXN1YWxseSBvdmVyd2hlbG0gdGV4
dCBhdCBzbWFsbCBzY2FsZXMuIFRvIGNvdW50ZXIgdGhpcworICAgICAgICAvLyBlZmZlY3QsIGFu
IGFscGhhIGlzIGFwcGxpZWQgdG8gdGhlIHVuZGVybGluZSBjb2xvciB3aGVuIHRleHQgaXMgYXQg
c21hbGwgc2NhbGVzLgorCisgICAgICAgIC8vIEp1c3QgY29tcHV0ZSBzY2FsZSBpbiB4IGRpbWVu
c2lvbiwgYXNzdW1pbmcgeCBhbmQgeSBzY2FsZXMgYXJlIGVxdWFsLgorICAgICAgICBmbG9hdCBz
Y2FsZSA9IHRyYW5zZm9ybS5iKCkgPyBzcXJ0Zih0cmFuc2Zvcm0uYSgpICogdHJhbnNmb3JtLmEo
KSArIHRyYW5zZm9ybS5iKCkgKiB0cmFuc2Zvcm0uYigpKSA6IHRyYW5zZm9ybS5hKCk7CisgICAg
ICAgIGlmIChzY2FsZSA8IDEuMCkgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IGZsb2F0IG1p
bmltdW1VbmRlcmxpbmVBbHBoYSA9IDAuNGY7CisgICAgICAgICAgICBmbG9hdCBzaGFkZSA9IHNj
YWxlID4gbWluaW11bVVuZGVybGluZUFscGhhID8gc2NhbGUgOiBtaW5pbXVtVW5kZXJsaW5lQWxw
aGE7CisgICAgICAgICAgICBpbnQgYWxwaGEgPSBjb2xvci5hbHBoYSgpICogc2hhZGU7CisgICAg
ICAgICAgICBjb2xvciA9IENvbG9yKGNvbG9yLnJlZCgpLCBjb2xvci5ncmVlbigpLCBjb2xvci5i
bHVlKCksIGFscGhhKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvbid0IG9mZnNldCBsaW5l
IGZyb20gYm90dG9tIG9mIHRleHQgaWYgc2NhbGUgaXMgbGVzcyB0aGFuIG9mZnNldFVuZGVyTGlu
ZVNjYWxlLgorICAgICAgICBzdGF0aWMgY29uc3QgZmxvYXQgb2Zmc2V0VW5kZXJsaW5lU2NhbGUg
PSAwLjRmOworICAgICAgICBmbG9hdCBkeSA9IHNjYWxlIDwgb2Zmc2V0VW5kZXJsaW5lU2NhbGUg
PyAwIDogMTsKKworICAgICAgICAvLyBJZiB3ZSd2ZSBpbmNyZWFzZWQgdGhlIHRoaWNrbmVzcyBv
ZiB0aGUgbGluZSwgbWFrZSBzdXJlIHRvIG1vdmUgdGhlIGxvY2F0aW9uIHRvby4KKyAgICAgICAg
aWYgKHRoaWNrbmVzcyA+IDEpCisgICAgICAgICAgICBkeSArPSByb3VuZGYodGhpY2tuZXNzKSAt
IDE7CisKKyAgICAgICAgRmxvYXRQb2ludCBkZXZpY2VQb2ludCA9IHRyYW5zZm9ybS5tYXBQb2lu
dChwb2ludCk7CisgICAgICAgIEZsb2F0UG9pbnQgZGV2aWNlT3JpZ2luID0gRmxvYXRQb2ludChy
b3VuZGYoZGV2aWNlUG9pbnQueCgpKSwgY2VpbGYoZGV2aWNlUG9pbnQueSgpKSArIGR5KTsKKyAg
ICAgICAgb3JpZ2luID0gdHJhbnNmb3JtLmludmVyc2UoKS5tYXBQb2ludChkZXZpY2VPcmlnaW4p
OworICAgIH0KKyAgICByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQob3JpZ2luLngoKSwgb3Jp
Z2luLnkoKSksIEZsb2F0U2l6ZSh3aWR0aCwgdGhpY2tuZXNzKSk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
ZDBjMjQyYmEwN2NkYmEyNzQ1NTVjZWJkNDkzYWNjMjVlMDQ5MjZhYy4uZDRjYmE2OGRjZjA5ODFl
YzBlMzdiYzA1ZGRmYTI2NTI3Mzg1NGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU2OSw2ICs1NjksOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKIAorICAg
ICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4
dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wmIHNo
b3VsZEFudGlhbGlhcywgQ29sb3ImKTsKKwogICAgICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGUqIG1fZGF0YTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBtX3N0YXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGZiNmU2ZDM1ZGViOTIwYmI5YTQx
ZmM4NmQ5OThiYTQyNGY5ODYxMmMuLmU1MTM3ZWRmODEyODNhMjc2Y2I3MTBkYjUwNjNjNTdjYjFk
ZjY5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE0IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tl
ciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRGlyayBTY2h1
bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4K
QEAgLTYxNCw0MSArNjE0LDU0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5n
KGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB3aWR0aCwgaW50CiAgICAgY2Fpcm9f
cmVzdG9yZShjcik7CiB9CiAKLUZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVMaW5l
Qm91bmRzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IHdpZHRoLCBib29s
KQorRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0KGNv
bnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCiB7Ci0g
ICAgcmV0dXJuIEZsb2F0UmVjdChvcmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwgc3Ryb2tlVGhpY2tu
ZXNzKCkpKTsKKyAgICBib29sIGR1bW15Qm9vbDsKKyAgICBDb2xvciBkdW1teUNvbG9yOworICAg
IHJldHVybiBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KG9yaWdp
biwgd2lkdGgsIHByaW50aW5nLCBkdW1teUJvb2wsIGR1bW15Q29sb3IpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIG9yaWdpbiwg
ZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5kZXJsaW5lcykKIHsKKyAg
ICBEYXNoQXJyYXkgd2lkdGhzOworICAgIHdpZHRocy5hcHBlbmQod2lkdGgpOworICAgIHdpZHRo
cy5hcHBlbmQoMCk7CisgICAgZHJhd0xpbmVzRm9yVGV4dChvcmlnaW4sIHdpZHRocywgcHJpbnRp
bmcsIGRvdWJsZVVuZGVybGluZXMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xp
bmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5JiB3aWR0
aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5kZXJsaW5lcykKK3sKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjYWlyb0Nv
bnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKLSAgICBjYWlyb19zYXZlKGNhaXJvQ29u
dGV4dCk7CisgICAgaWYgKHdpZHRocy5zaXplKCkgPD0gMCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQ29sb3IgbG9jYWxTdHJva2VDb2xvcihzdHJva2VDb2xvcigpKTsKIAotICAgIC8vIFRoaXMg
YnVtcGluZyBvZiA8MSBzdHJva2UgdGhpY2tuZXNzZXMgbWF0Y2hlcyB0aGUgb25lIGluIGRyYXdM
aW5lT25DYWlyb0NvbnRleHQuCi0gICAgRmxvYXRQb2ludCBlbmRQb2ludChvcmlnaW4gKyBJbnRT
aXplKHdpZHRoLCAwKSk7Ci0gICAgRmxvYXRSZWN0IGxpbmVFeHRlbnRzID0gY29tcHV0ZUxpbmVC
b3VuZHNGb3JUZXh0KG9yaWdpbiwgd2lkdGgsIHByaW50aW5nKTsKKyAgICBib29sIHNob3VsZEFu
dGlhbGlhc0xpbmU7CisgICAgRmxvYXRSZWN0IGJvdW5kcyA9IGNvbXB1dGVMaW5lQm91bmRzQW5k
QW50aWFsaWFzaW5nTW9kZUZvclRleHQocG9pbnQsIHdpZHRocy5sYXN0KCksIHByaW50aW5nLCBz
aG91bGRBbnRpYWxpYXNMaW5lLCBsb2NhbFN0cm9rZUNvbG9yKTsKKyAgICBib29sIGZpbGxDb2xv
cklzTm90RXF1YWxUb1N0cm9rZUNvbG9yID0gZmlsbENvbG9yKCkgIT0gbG9jYWxTdHJva2VDb2xv
cjsKKworICAgIFZlY3RvcjxGbG9hdFJlY3QsIDQ+IGRhc2hCb3VuZHM7CisgICAgQVNTRVJUKCEo
d2lkdGhzLnNpemUoKSAlIDIpKTsKKyAgICBkYXNoQm91bmRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZGFzaEJvdW5kcy5zaXplKCkgLyAyKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdp
ZHRocy5zaXplKCk7IGkgKz0gMikKKyAgICAgICAgZGFzaEJvdW5kcy5hcHBlbmQoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoYm91bmRzLngoKSArIHdpZHRoc1tpXSwgYm91bmRzLnkoKSksIEZsb2F0U2l6
ZSh3aWR0aHNbaSsxXSAtIHdpZHRoc1tpXSwgYm91bmRzLmhlaWdodCgpKSkpOwogCi0gICAgU2hh
ZG93Qmx1ciYgc2hhZG93ID0gcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKLSAgICBp
ZiAoR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5
ZXIodGhpcywgbGluZUV4dGVudHMpKSB7Ci0gICAgICAgIGRyYXdMaW5lT25DYWlyb0NvbnRleHQo
dGhpcywgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIG9yaWdpbiwgZW5k
UG9pbnQpOwotICAgICAgICBpZiAoZG91YmxlVW5kZXJsaW5lcykKLSAgICAgICAgICAgIGRyYXdM
aW5lT25DYWlyb0NvbnRleHQodGhpcywgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIG9yaWdpbiArIEZsb2F0U2l6ZSgwLCBzdHJva2VUaGlja25lc3MoKSAqIDIpLCBlbmRQ
b2ludCArIEZsb2F0U2l6ZSgwLCBzdHJva2VUaGlja25lc3MoKSAqIDIpKTsKLSAgICAgICAgc2hh
ZG93LmVuZFNoYWRvd0xheWVyKHRoaXMpOworICAgIGlmIChkb3VibGVVbmRlcmxpbmVzKSB7Cisg
ICAgICAgIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIGRvdWJsZSB1bmRlcmxpbmVzIGlzIGVxdWFsIHRv
IHRoZSBoZWlnaHQgb2YgdGhlIHVuZGVybGluZQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdpZHRocy5zaXplKCk7IGkgKz0gMikKKyAgICAgICAgICAgIGRhc2hCb3VuZHMuYXBwZW5k
KEZsb2F0UmVjdChGbG9hdFBvaW50KGJvdW5kcy54KCkgKyB3aWR0aHNbaV0sIGJvdW5kcy55KCkg
KyAyICogYm91bmRzLmhlaWdodCgpKSwgRmxvYXRTaXplKHdpZHRoc1tpKzFdIC0gd2lkdGhzW2ld
LCBib3VuZHMuaGVpZ2h0KCkpKSk7CiAgICAgfQogCi0gICAgZHJhd0xpbmVPbkNhaXJvQ29udGV4
dCh0aGlzLCBjYWlyb0NvbnRleHQsIG9yaWdpbiwgZW5kUG9pbnQpOwotICAgIGlmIChkb3VibGVV
bmRlcmxpbmVzKQotICAgICAgICBkcmF3TGluZU9uQ2Fpcm9Db250ZXh0KHRoaXMsIGNhaXJvQ29u
dGV4dCwgb3JpZ2luICsgRmxvYXRTaXplKDAsIHN0cm9rZVRoaWNrbmVzcygpICogMiksIGVuZFBv
aW50ICsgRmxvYXRTaXplKDAsIHN0cm9rZVRoaWNrbmVzcygpICogMikpOwotICAgIGNhaXJvX3Jl
c3RvcmUoY2Fpcm9Db250ZXh0KTsKLX0KKyAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOworICAgIGNhaXJvX3NhdmUoY3IpOwogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRGFzaEFycmF5
JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5kZXJsaW5lcykKLXsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdpZHRocy5zaXplKCk7IGkgKz0gMikKLSAgICAgICAgZHJh
d0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQocG9pbnQueCgpICsgd2lkdGhzW2ldLCBwb2ludC55KCkp
LCB3aWR0aHNbaSsxXSAtIHdpZHRoc1tpXSwgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGluZXMpOwor
ICAgIGZvciAoYXV0byYgZGFzaCA6IGRhc2hCb3VuZHMpCisgICAgICAgIGZpbGxSZWN0V2l0aENv
bG9yKGNyLCBkYXNoLCBsb2NhbFN0cm9rZUNvbG9yKTsKKworICAgIGNhaXJvX3Jlc3RvcmUoY3Ip
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6dXBkYXRlRG9jdW1lbnRNYXJrZXJSZXNvdXJj
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDAzODc0OWZmNWE2M2MzYjg3YmFiOThmMmNkODk5
MGJhOTk0ZDJlOTYuLmMzZDEzNWQ3YjA1ZTY2MzJlNTc4NzQ2ZWMxNmIxNmM5MDEwZmViZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKQEAgLTEzNDUsNTMgKzEzNDUsMTEgQEAgRmxvYXRSZWN0IEdyYXBo
aWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIFJv
dW5kaW5nTW8KICAgICByZXR1cm4gRmxvYXRSZWN0KHJvdW5kZWRPcmlnaW4sIHJvdW5kZWRMb3dl
clJpZ2h0IC0gcm91bmRlZE9yaWdpbik7CiB9CiAKLXN0YXRpYyBGbG9hdFJlY3QgY29tcHV0ZUxp
bmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChHcmFwaGljc0NvbnRleHQmIGluaXRp
YWxDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJp
bnRpbmcsIGJvb2wmIHNob3VsZEFudGlhbGlhcywgQ29sb3ImIGNvbG9yKQotewotICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gaW5pdGlhbENvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0gICAg
Q0dQb2ludCBvcmlnaW47Ci0gICAgQ0dGbG9hdCB0aGlja25lc3MgPSBzdGQ6Om1heChpbml0aWFs
Q29udGV4dC5zdHJva2VUaGlja25lc3MoKSwgMC41Zik7Ci0KLSAgICBzaG91bGRBbnRpYWxpYXMg
PSB0cnVlOwotICAgIGlmIChwcmludGluZykKLSAgICAgICAgb3JpZ2luID0gQ0dQb2ludE1ha2Uo
cG9pbnQueCgpLCBwb2ludC55KCkpOwotICAgIGVsc2UgewotICAgICAgICBDR0FmZmluZVRyYW5z
Zm9ybSB0ID0gQ0dDb250ZXh0R2V0VXNlclNwYWNlVG9EZXZpY2VTcGFjZVRyYW5zZm9ybShjb250
ZXh0KTsKLSAgICAgICAgaWYgKEFmZmluZVRyYW5zZm9ybSh0KS5wcmVzZXJ2ZXNBeGlzQWxpZ25t
ZW50KCkpCi0gICAgICAgICAgICBzaG91bGRBbnRpYWxpYXMgPSBmYWxzZTsKLQotICAgICAgICAv
LyBUaGlzIGNvZGUgYWx3YXlzIGRyYXdzIGEgbGluZSB0aGF0IGlzIGF0IGxlYXN0IG9uZS1waXhl
bCBsaW5lIGhpZ2gsCi0gICAgICAgIC8vIHdoaWNoIHRlbmRzIHRvIHZpc3VhbGx5IG92ZXJ3aGVs
bSB0ZXh0IGF0IHNtYWxsIHNjYWxlcy4gVG8gY291bnRlciB0aGlzCi0gICAgICAgIC8vIGVmZmVj
dCwgYW4gYWxwaGEgaXMgYXBwbGllZCB0byB0aGUgdW5kZXJsaW5lIGNvbG9yIHdoZW4gdGV4dCBp
cyBhdCBzbWFsbCBzY2FsZXMuCi0KLSAgICAgICAgLy8gSnVzdCBjb21wdXRlIHNjYWxlIGluIHgg
ZGltZW5zaW9uLCBhc3N1bWluZyB4IGFuZCB5IHNjYWxlcyBhcmUgZXF1YWwuCi0gICAgICAgIENH
RmxvYXQgc2NhbGUgPSB0LmIgPyBzcXJ0Zih0LmEgKiB0LmEgKyB0LmIgKiB0LmIpIDogdC5hOwot
ICAgICAgICBpZiAoc2NhbGUgPCAxLjApIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBmbG9h
dCBNaW5VbmRlcmxpbmVBbHBoYSA9IDAuNGY7Ci0gICAgICAgICAgICBmbG9hdCBzaGFkZSA9IHNj
YWxlID4gTWluVW5kZXJsaW5lQWxwaGEgPyBzY2FsZSA6IE1pblVuZGVybGluZUFscGhhOwotICAg
ICAgICAgICAgaW50IGFscGhhID0gY29sb3IuYWxwaGEoKSAqIHNoYWRlOwotICAgICAgICAgICAg
Y29sb3IgPSBDb2xvcihjb2xvci5yZWQoKSwgY29sb3IuZ3JlZW4oKSwgY29sb3IuYmx1ZSgpLCBh
bHBoYSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEb24ndCBvZmZzZXQgbGluZSBmcm9tIGJv
dHRvbSBvZiB0ZXh0IGlmIHNjYWxlIGlzIGxlc3MgdGhhbiBPZmZzZXRVbmRlcmxpbmVTY2FsZS4K
LSAgICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgT2Zmc2V0VW5kZXJsaW5lU2NhbGUgPSAwLjRm
OwotICAgICAgICBDR0Zsb2F0IGR5ID0gc2NhbGUgPCBPZmZzZXRVbmRlcmxpbmVTY2FsZSA/IDAg
OiAxOwotCi0gICAgICAgIC8vIElmIHdlJ3ZlIGluY3JlYXNlZCB0aGUgdGhpY2tuZXNzIG9mIHRo
ZSBsaW5lLCBtYWtlIHN1cmUgdG8gbW92ZSB0aGUgbG9jYXRpb24gdG9vLgotICAgICAgICBpZiAo
dGhpY2tuZXNzID4gMSkKLSAgICAgICAgICAgIGR5ICs9IHJvdW5kZih0aGlja25lc3MpIC0gMTsK
LQotICAgICAgICBDR1BvaW50IGRldmljZVBvaW50ID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNm
b3JtKHBvaW50LCB0KTsKLSAgICAgICAgQ0dQb2ludCBkZXZpY2VPcmlnaW4gPSBDR1BvaW50TWFr
ZShyb3VuZGYoZGV2aWNlUG9pbnQueCksIGNlaWxmKGRldmljZVBvaW50LnkpICsgZHkpOwotICAg
ICAgICBvcmlnaW4gPSBDR1BvaW50QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGV2aWNlT3JpZ2luLCBD
R0FmZmluZVRyYW5zZm9ybUludmVydCh0KSk7Ci0gICAgfQotICAgIHJldHVybiBGbG9hdFJlY3Qo
b3JpZ2luLngsIG9yaWdpbi55LCB3aWR0aCwgdGhpY2tuZXNzKTsKLX0KLQogRmxvYXRSZWN0IEdy
YXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBmbG9hdCB3aWR0aCwgYm9vbCBwcmludGluZykKIHsKICAgICBib29sIGR1bW15Qm9v
bDsKICAgICBDb2xvciBkdW1teUNvbG9yOwotICAgIHJldHVybiBjb21wdXRlTGluZUJvdW5kc0Fu
ZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KCp0aGlzLCBwb2ludCwgd2lkdGgsIHByaW50aW5nLCBk
dW1teUJvb2wsIGR1bW15Q29sb3IpOworICAgIHJldHVybiBjb21wdXRlTGluZUJvdW5kc0FuZEFu
dGlhbGlhc2luZ01vZGVGb3JUZXh0KHBvaW50LCB3aWR0aCwgcHJpbnRpbmcsIGR1bW15Qm9vbCwg
ZHVtbXlDb2xvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQo
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nLCBib29s
IGRvdWJsZUxpbmVzKQpAQCAtMTQxMyw3ICsxMzcxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IERhc2hBcnJh
eSYKICAgICBDb2xvciBsb2NhbFN0cm9rZUNvbG9yKHN0cm9rZUNvbG9yKCkpOwogCiAgICAgYm9v
bCBzaG91bGRBbnRpYWxpYXNMaW5lOwotICAgIEZsb2F0UmVjdCBib3VuZHMgPSBjb21wdXRlTGlu
ZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KCp0aGlzLCBwb2ludCwgd2lkdGhzLmxh
c3QoKSwgcHJpbnRpbmcsIHNob3VsZEFudGlhbGlhc0xpbmUsIGxvY2FsU3Ryb2tlQ29sb3IpOwor
ICAgIEZsb2F0UmVjdCBib3VuZHMgPSBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01v
ZGVGb3JUZXh0KHBvaW50LCB3aWR0aHMubGFzdCgpLCBwcmludGluZywgc2hvdWxkQW50aWFsaWFz
TGluZSwgbG9jYWxTdHJva2VDb2xvcik7CiAgICAgYm9vbCBmaWxsQ29sb3JJc05vdEVxdWFsVG9T
dHJva2VDb2xvciA9IGZpbGxDb2xvcigpICE9IGxvY2FsU3Ryb2tlQ29sb3I7CiAgICAgCiAgICAg
VmVjdG9yPENHUmVjdCwgND4gZGFzaEJvdW5kczsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlM2MzZjhjNDkyNmVkNGViZWUz
ODdjMTk2NTBhYTRjYzZkNjFjM2RjLi5lNmI3MWM3N2JiNmMyODczZTA5N2UzNzhmODY2MzY1ODQ4
YmJlOTkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDMtMTAgIE1hcnRpbiBSb2JpbnNv
biAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIGZhc3QvY3NzMy10ZXh0L2NzczMt
dGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MuaHRtbCBmYWlscyBvbiBH
VEsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTk1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tp
cHBlZCB0ZXN0cyBhbmQgbW9kaWZpZWQgb25lIHRlc3QgdG8gdXNlIHRoZSBwbGF0Zm9ybS1pbmRl
cGVuZGVudCBBaGVtIGZvbnQuCisKKyAgICAgICAgKiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQt
ZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tc2tpcC90ZXh0LWRlY29yYXRpb24tc2tpcC10YWxs
LXVuZGVybGluZXMuaHRtbDogV2UKKyAgICAgICAgbmVlZCB0byB1c2UgQWhlbSBiZWNhdXNlIEhl
bHZldGljYSBpcyBub3QgYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBmb250LgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOiBVbnNraXBwZWQgdGVzdHMuCisKIDIwMTQtMDMt
MTAgIFpzb2x0IEJvcmJlbHkgIDxib3JiZXpzQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBB
U1NFUlRJT04gRkFJTEVEOiBzcGFuID49IDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1za2lwL3RleHQt
ZGVjb3JhdGlvbi1za2lwLXRhbGwtdW5kZXJsaW5lcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLXNraXAvdGV4dC1k
ZWNvcmF0aW9uLXNraXAtdGFsbC11bmRlcmxpbmVzLmh0bWwKaW5kZXggZTZhZWRkZjA5MGRiYjJm
NDIzMzBhMDY2NGRmMGIzN2ViZDZiYjAzNi4uOTVlNDA2ZmRlMThlOTJjMWVmN2Y0MDgzN2JjYjc2
MTZlNzRiZjE5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10
ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLXNraXAvdGV4dC1kZWNvcmF0aW9uLXNraXAt
dGFsbC11bmRlcmxpbmVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3Nz
My10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLXNraXAvdGV4dC1kZWNvcmF0aW9uLXNr
aXAtdGFsbC11bmRlcmxpbmVzLmh0bWwKQEAgLTcsNyArNyw3IEBAIFRoaXMgdGV4dCBkcmF3cyB1
bmRlcmxpbmVkIHRleHQgd2l0aCBhIGxhcmdlIHNjYWxlLCB0aGVuIGNsaXBzIHRoZSB1bmRlcmxp
bmUgdG8KIGEgcmVnaW9uIHRoYXQgc2hvdWxkIG5vdCBiZSBkcmF3bi4gSXQgdGhlbiBtYWtlcyBz
dXJlIHRoYXQgdGhlIGltYWdlIGlzIHRoZSBzYW1lIGFzCiBhbiBlbXB0eSBvbmUuCiA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiAzNnB4OyBo
ZWlnaHQ6IDEwMHB4OyI+Ci08ZGl2IHN0eWxlPSJsZWZ0OiAtMTYwcHg7IHRvcDogLTMyMHB4OyBw
b3NpdGlvbjogYWJzb2x1dGU7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgyMCk7IGZvbnQtZmFt
aWx5OiBoZWx2ZXRpY2E7IC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7IGRpc3Bs
YXk6IGlubGluZS1ibG9jazsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC13ZWJraXQtdGV4
dC1kZWNvcmF0aW9uLXNraXA6IGluazsiPmd5PC9kaXY+Cis8ZGl2IHN0eWxlPSJsZWZ0OiAtMTYw
cHg7IHRvcDogLTMyNXB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IC13ZWJraXQtdHJhbnNmb3JtOiBz
Y2FsZSgyMCk7IGZvbnQtZmFtaWx5OiBhaGVtOyAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxl
ZnQgdG9wOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5l
OyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBpbms7Ij5neTwvZGl2PgogPC9kaXY+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDIyM2UzMDg2NGU2YmEwNjg1ODFjM2Y1YTg3OTY0MWI5ZTk1OTFjOTMuLjE2Y2VmNjNk
NDlmNDc2OTUzOTQzNmU1M2QxMTYyMmFkZWUyZDFkMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzg5LDEwICsxMzg5LDYgQEAgd2Via2l0Lm9yZy9i
LzEyODQ5OSBzdmcvY2xpcC1wYXRoL2NsaXAtcGF0aC1jb250ZW50LXVzZS0wMDYuc3ZnIFsgSW1h
Z2VPbmx5RmFpbHUKIHdlYmtpdC5vcmcvYi8xMjkxODAgc3ZnL2NsaXAtcGF0aC9jbGlwLXBhdGgt
b24tc3ZnLTAwMS5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMjkxODAg
c3ZnL2NsaXAtcGF0aC9jbGlwLXBhdGgtb24tc3ZnLTAwMi5zdmcgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIAotd2Via2l0Lm9yZy9iLzEyOTk1NyBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3Jh
dGlvbi90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LXdlYmtpdC5vcmcvYi8xMjk5NTcgZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24v
dGV4dC1kZWNvcmF0aW9uLXN0eWxlLWRvdWJsZS1zcGFjZS1zY2FsZXMuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzEyOTk1NyBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQt
ZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tc2tpcC90ZXh0LWRlY29yYXRpb24tc2tpcC10YWxs
LXVuZGVybGluZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiB3ZWJraXQub3JnL2IvMTI5
OTU4IHN2Zy9jbGlwLXBhdGgvbWFzay1uZXN0ZWQtY2xpcC1wYXRoLTAwNi5zdmcgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMjk5NTggc3ZnL2NsaXAtcGF0aC9tYXNrLW5lc3Rl
ZC1jbGlwLXBhdGgtMDA3LnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEy
OTk1OCBzdmcvY2xpcC1wYXRoL21hc2stbmVzdGVkLWNsaXAtcGF0aC0wMDguc3ZnIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>