<?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>151979</bug_id>
          
          <creation_ts>2015-12-07 18:48:35 -0800</creation_ts>
          <short_desc>Make paintTextWithShadows a member function (TextPainter).</short_desc>
          <delta_ts>2015-12-07 20:34:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1147148</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-12-07 18:48:35 -0800</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147149</commentid>
    <comment_count>1</comment_count>
      <attachid>266840</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-12-07 18:55:56 -0800</bug_when>
    <thetext>Created attachment 266840
Patch

Simplified version:

void TextPainter::paintTextWithShadows(const ShadowData* shadow, const FontCascade&amp; font, const TextRun&amp; textRun, const AtomicString&amp; emphasisMark,
    int emphasisMarkOffset, int startOffset, int endOffset, const FloatPoint&amp; textOrigin, bool stroked)
{
    if (!shadow) {
        drawTextOrEmphasisMarks(font, textRun, emphasisMark, emphasisMarkOffset, textOrigin, startOffset, endOffset);
        return;
    }

    Color fillColor = m_context.fillColor();
    bool opaque = !fillColor.hasAlpha();
    bool lastShadowIterationShouldDrawText = !stroked &amp;&amp; opaque;
    if (!opaque)
        m_context.setFillColor(Color::black);
    while (shadow) {
        ShadowApplier shadowApplier(m_context, shadow, m_boxRect, lastShadowIterationShouldDrawText, opaque, m_textBoxIsHorizontal ? Horizontal : Vertical);
        if (!shadowApplier.nothingToDraw())
            drawTextOrEmphasisMarks(font, textRun, emphasisMark, emphasisMarkOffset, textOrigin + shadowApplier.extraOffset(), startOffset, endOffset);
        shadow = shadow-&gt;next();
    }

    if (!lastShadowIterationShouldDrawText) {
        if (!opaque)
            m_context.setFillColor(fillColor);
        drawTextOrEmphasisMarks(font, textRun, emphasisMark, emphasisMarkOffset, textOrigin, startOffset, endOffset);
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147151</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-07 18:57:30 -0800</bug_when>
    <thetext>Attachment 266840 did not pass style-queue:


ERROR: Source/WebCore/rendering/TextPainter.cpp:110:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/rendering/TextPainter.cpp:197:  Extra space after ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147152</commentid>
    <comment_count>3</comment_count>
      <attachid>266841</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-12-07 19:00:36 -0800</bug_when>
    <thetext>Created attachment 266841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147164</commentid>
    <comment_count>4</comment_count>
      <attachid>266841</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-07 20:34:46 -0800</bug_when>
    <thetext>Comment on attachment 266841
Patch

Clearing flags on attachment: 266841

Committed r193688: &lt;http://trac.webkit.org/changeset/193688&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147165</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-07 20:34:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266840</attachid>
            <date>2015-12-07 18:55:56 -0800</date>
            <delta_ts>2015-12-07 19:00:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>9796</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNDIyNDBjLi45MTI3NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTUtMTItMDcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAorICAgICAg
ICBNYWtlIHBhaW50VGV4dFdpdGhTaGFkb3dzIGEgbWVtYmVyIGZ1bmN0aW9uIChUZXh0UGFpbnRl
cikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE5
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gc2ltcGxpZmllcyBwYWludFRleHRXaXRoU2hhZG93cyBhbmQKKyAgICAgICAg
cmVhcnJhbmdlcyBzb21lIG9mIHRoZSBmdW5jdGlvbnMnIGFyZ3VtZW50cy4gCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OmRyYXdUZXh0T3JFbXBo
YXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRXaXRo
U2hhZG93cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRFbXBoYXNpc01h
cmtzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dFdp
dGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnBhaW50VGV4dFdpdGhTaGFkb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuaDoKKworMjAxNS0xMi0wNyAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJlZmFjdG9yIFRleHRQYWludGVyOjpwYWludFRleHQo
KSBpbnRvIHN1YiBtZXRob2RzLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxOTYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIu
Y3BwCmluZGV4IGQ2OTA3NGYuLmNlOTVjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcApAQCAtNTYsMTUgKzU2LDYgQEAgVGV4dFBhaW50ZXI6OlRleHRQYWludGVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHksIGIK
IHsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4
dFJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssCi0gICAgaW50IGVtcGhhc2lz
TWFya09mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IGludCBmcm9tLCBjb25z
dCBpbnQgdG8pCi17Ci0gICAgaWYgKGVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCi0gICAgICAgIGNv
bnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgcG9pbnQsIGZyb20sIHRvKTsKLSAgICBlbHNl
Ci0gICAgICAgIGNvbnRleHQuZHJhd0VtcGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFz
aXNNYXJrLCBwb2ludCArIEludFNpemUoMCwgZW1waGFzaXNNYXJrT2Zmc2V0KSwgZnJvbSwgdG8p
OwotfQotCiBTaGFkb3dBcHBsaWVyOjpTaGFkb3dBcHBsaWVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBjb25zdCBGbG9hdFJlY3QmIHRleHRSZWN0
LCBib29sIGxhc3RTaGFkb3dJdGVyYXRpb25TaG91bGREcmF3VGV4dCwgYm9vbCBvcGFxdWUsIEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9zaGFkb3coc2hhZG93KQpAQCAtMTEzLDQxICsxMDQsNTIgQEAgU2hhZG93QXBwbGllcjo6
flNoYWRvd0FwcGxpZXIoKQogICAgICAgICBtX2NvbnRleHQuY2xlYXJTaGFkb3coKTsKIH0KIAot
c3RhdGljIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3Qg
QXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssCi0gICAgaW50IGVtcGhhc2lzTWFya09mZnNldCwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBpbnQgdHJ1bmNhdGlvblBvaW50LCBjb25z
dCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsCi0gICAg
Y29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBib29sIHN0cm9rZWQsIGJvb2wgaG9yaXpvbnRhbCkK
K3ZvaWQgVGV4dFBhaW50ZXI6OmRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIGVt
cGhhc2lzTWFyaywKKyAgICBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50
JiB0ZXh0T3JpZ2luLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpCit7CisgICAgYXV0
byBkcmF3VGV4dCA9IFsmXShpbnQgZnJvbSwgaW50IHRvKSB7CisgICAgICAgIGlmIChlbXBoYXNp
c01hcmsuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9jb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRl
eHRSdW4sIHRleHRPcmlnaW4sIGZyb20sIHRvKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9jb250ZXh0LmRyYXdFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywg
dGV4dE9yaWdpbiArIEludFNpemUoMCwgZW1waGFzaXNNYXJrT2Zmc2V0KSwgZnJvbSwgdG8pOwor
ICAgIH07CisKKyAgICBpZiAoc3RhcnRPZmZzZXQgPD0gZW5kT2Zmc2V0KSB7CisgICAgICAgIGRy
YXdUZXh0KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGlmIChlbmRPZmZzZXQgPiAwKQorICAgICAgICBkcmF3VGV4dCgwLCBlbmRPZmZz
ZXQpOworICAgIGlmIChzdGFydE9mZnNldCA8IG1fbGVuZ3RoKQorICAgICAgICBkcmF3VGV4dChz
dGFydE9mZnNldCwgbV9sZW5ndGgpOworfQorCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRX
aXRoU2hhZG93cyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIGVtcGhhc2lz
TWFyaywKKyAgICBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBpbnQgc3RhcnRPZmZzZXQsIGludCBl
bmRPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGJvb2wgc3Ryb2tlZCkKIHsK
LSAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0LmZpbGxDb2xvcigpOworICAgIGlmICghc2hh
ZG93KSB7CisgICAgICAgIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4sIGVt
cGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luLCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENvbG9yIGZpbGxDb2xv
ciA9IG1fY29udGV4dC5maWxsQ29sb3IoKTsKICAgICBib29sIG9wYXF1ZSA9ICFmaWxsQ29sb3Iu
aGFzQWxwaGEoKTsKICAgICBib29sIGxhc3RTaGFkb3dJdGVyYXRpb25TaG91bGREcmF3VGV4dCA9
ICFzdHJva2VkICYmIG9wYXF1ZTsKICAgICBpZiAoIW9wYXF1ZSkKLSAgICAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKLQotICAgIGRvIHsKLSAgICAgICAgU2hhZG93QXBw
bGllciBzaGFkb3dBcHBsaWVyKGNvbnRleHQsIHNoYWRvdywgYm94UmVjdCwgbGFzdFNoYWRvd0l0
ZXJhdGlvblNob3VsZERyYXdUZXh0LCBvcGFxdWUsIGhvcml6b250YWwgPyBIb3Jpem9udGFsIDog
VmVydGljYWwpOwotICAgICAgICBpZiAoc2hhZG93QXBwbGllci5ub3RoaW5nVG9EcmF3KCkpIHsK
LSAgICAgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOwotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0ID0gcm91bmRlZElu
dFNpemUoc2hhZG93QXBwbGllci5leHRyYU9mZnNldCgpKTsKLSAgICAgICAgaWYgKCFzaGFkb3cg
JiYgIW9wYXF1ZSkKLSAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7
Ci0KLSAgICAgICAgaWYgKHN0YXJ0T2Zmc2V0IDw9IGVuZE9mZnNldCkKLSAgICAgICAgICAgIGRy
YXdUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnRleHQsIGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFy
aywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luICsgZXh0cmFPZmZzZXQsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChlbmRPZmZz
ZXQgPiAwKQotICAgICAgICAgICAgICAgIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnRleHQs
IGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3Jp
Z2luICsgZXh0cmFPZmZzZXQsIDAsIGVuZE9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoc3RhcnRP
ZmZzZXQgPCB0cnVuY2F0aW9uUG9pbnQpCi0gICAgICAgICAgICAgICAgZHJhd1RleHRPckVtcGhh
c2lzTWFya3MoY29udGV4dCwgZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01h
cmtPZmZzZXQsIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRPZmZzZXQsIHRydW5jYXRp
b25Qb2ludCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXNoYWRvdykKLSAgICAgICAgICAg
IGJyZWFrOwotCisgICAgICAgIG1fY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsK
KyAgICB3aGlsZSAoc2hhZG93KSB7CisgICAgICAgIFNoYWRvd0FwcGxpZXIgc2hhZG93QXBwbGll
cihtX2NvbnRleHQsIHNoYWRvdywgbV9ib3hSZWN0LCBsYXN0U2hhZG93SXRlcmF0aW9uU2hvdWxk
RHJhd1RleHQsIG9wYXF1ZSwgbV90ZXh0Qm94SXNIb3Jpem9udGFsID8gSG9yaXpvbnRhbCA6IFZl
cnRpY2FsKTsKKyAgICAgICAgaWYgKCFzaGFkb3dBcHBsaWVyLm5vdGhpbmdUb0RyYXcoKSkKKyAg
ICAgICAgICAgIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGZvbnQsIHRleHRSdW4sIGVtcGhhc2lz
TWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0LCB0ZXh0T3JpZ2luICsgc2hhZG93QXBwbGllci5leHRy
YU9mZnNldCgpLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKICAgICAgICAgc2hhZG93ID0gc2hh
ZG93LT5uZXh0KCk7Ci0gICAgfSB3aGlsZSAoc2hhZG93IHx8ICFsYXN0U2hhZG93SXRlcmF0aW9u
U2hvdWxkRHJhd1RleHQpOworICAgIH0KKworICAgIGlmICghbGFzdFNoYWRvd0l0ZXJhdGlvblNo
b3VsZERyYXdUZXh0KSB7CisgICAgICAgIGlmICghb3BhcXVlKQorICAgICAgICAgICAgbV9jb250
ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IpOworICAgICAgICBkcmF3VGV4dE9yRW1waGFzaXNN
YXJrcyhmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01hcmssIGVtcGhhc2lzTWFya09mZnNldCwgdGV4
dE9yaWdpbiwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CisgICAgfQogfQogCiB2b2lkIFRleHRQ
YWludGVyOjpwYWludEVtcGhhc2lzTWFya3NJZk5lZWRlZChpbnQgc3RhcnRPZmZzZXQsIGludCBl
bmRPZmZzZXQsIGNvbnN0IFRleHRQYWludFN0eWxlJiBwYWludFN0eWxlLCBjb25zdCBTaGFkb3dE
YXRhKiBzaGFkb3cpCkBAIC0xNjQsMTggKzE2NiwxOCBAQCB2b2lkIFRleHRQYWludGVyOjpwYWlu
dEVtcGhhc2lzTWFya3NJZk5lZWRlZChpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGNv
bgogICAgICAgICBtX2NvbnRleHQuY29uY2F0Q1RNKHJvdGF0aW9uKG1fYm94UmVjdCwgQ2xvY2t3
aXNlKSk7CiAKICAgICAvLyBGSVhNRTogVHJ1bmNhdGUgcmlnaHQtdG8tbGVmdCB0ZXh0IGNvcnJl
Y3RseS4KLSAgICBwYWludFRleHRXaXRoU2hhZG93cyhtX2NvbnRleHQsIG1fY29tYmluZWRUZXh0
ID8gbV9jb21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogbV9mb250LCBlbXBoYXNpc01hcmtU
ZXh0UnVuLCBtX2VtcGhhc2lzTWFyaywgbV9lbXBoYXNpc01hcmtPZmZzZXQsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQsIG1fbGVuZ3RoLCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luLCBtX2JveFJlY3Qs
IHNoYWRvdywgcGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpvbnRh
bCk7CisgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Moc2hhZG93LCBtX2NvbWJpbmVkVGV4dCA/IG1f
Y29tYmluZWRUZXh0LT5vcmlnaW5hbEZvbnQoKSA6IG1fZm9udCwgZW1waGFzaXNNYXJrVGV4dFJ1
biwgbV9lbXBoYXNpc01hcmssIG1fZW1waGFzaXNNYXJrT2Zmc2V0LCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0LCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luLCBwYWludFN0eWxlLnN0cm9rZVdpZHRoID4g
MCk7CiAKICAgICBpZiAobV9jb21iaW5lZFRleHQpCiAgICAgICAgIG1fY29udGV4dC5jb25jYXRD
VE0ocm90YXRpb24obV9ib3hSZWN0LCBDb3VudGVyY2xvY2t3aXNlKSk7CiB9CiAKLXZvaWQgVGV4
dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTdHlsZShpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZz
ZXQsIGNvbnN0IFRleHRQYWludFN0eWxlJiBwYWludFN0eWxlLCBjb25zdCBTaGFkb3dEYXRhKiBz
aGFkb3cpCit2b2lkIFRleHRQYWludGVyOjpwYWludFRleHRXaXRoU3R5bGUoY29uc3QgVGV4dFBh
aW50U3R5bGUmIHBhaW50U3R5bGUsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgY29u
c3QgU2hhZG93RGF0YSogc2hhZG93KQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihtX2NvbnRleHQsIHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKICAgICB1
cGRhdGVHcmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBwYWludFN0eWxlKTsKICAgICAvLyBGSVhN
RTogVHJ1bmNhdGUgcmlnaHQtdG8tbGVmdCB0ZXh0IGNvcnJlY3RseS4KLSAgICBwYWludFRleHRX
aXRoU2hhZG93cyhtX2NvbnRleHQsIG1fZm9udCwgbV90ZXh0UnVuLCBudWxsQXRvbSwgMCwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCwgbV9sZW5ndGgsIG1fdGV4dE9yaWdpbiwgbV9ib3hSZWN0LCBz
aGFkb3csIHBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwLCBtX3RleHRCb3hJc0hvcml6b250YWwp
OworICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKHNoYWRvdywgbV9mb250LCBtX3RleHRSdW4sIG51
bGxBdG9tLCAwLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBtX3RleHRPcmlnaW4sIHBhaW50U3R5
bGUuc3Ryb2tlV2lkdGggPiAwKTsKICAgICBwYWludEVtcGhhc2lzTWFya3NJZk5lZWRlZChzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0LCBwYWludFN0eWxlLCBzaGFkb3cpOwogfQogICAgIApAQCAtMTg3
LDEyICsxODksMTIgQEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KCkKICAgICAgICAgYm9v
bCBmdWxsTGVuZ3RoUGFpbnQgPSAhbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkgfHwgbV9l
bmRQb3NpdGlvbkluVGV4dFJ1biA8PSBtX3N0YXJ0UG9zaXRpb25JblRleHRSdW47CiAgICAgICAg
IGludCBzdGFydE9mZnNldCA9IGZ1bGxMZW5ndGhQYWludCA/IDAgOiBtX2VuZFBvc2l0aW9uSW5U
ZXh0UnVuOwogICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gZnVsbExlbmd0aFBhaW50ID8gbV9sZW5n
dGggOiBtX3N0YXJ0UG9zaXRpb25JblRleHRSdW47Ci0gICAgICAgIHBhaW50VGV4dFdpdGhTdHls
ZShzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBtX3RleHRQYWludFN0eWxlLCBtX3RleHRTaGFkb3cp
OworICAgICAgICBwYWludFRleHRXaXRoU3R5bGUobV90ZXh0UGFpbnRTdHlsZSwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCwgbV90ZXh0U2hhZG93KTsKICAgICB9CiAKICAgICAvLyBwYWludCBvbmx5
IHRoZSB0ZXh0IHRoYXQgaXMgc2VsZWN0ZWQKICAgICBpZiAoKG1fcGFpbnRTZWxlY3RlZFRleHRP
bmx5IHx8IG1fcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5KSAmJiBtX3N0YXJ0UG9zaXRpb25J
blRleHRSdW4gPCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuKQotICAgICAgICBwYWludFRleHRXaXRo
U3R5bGUobV9zdGFydFBvc2l0aW9uSW5UZXh0UnVuLCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuLCBt
X3NlbGVjdGlvblBhaW50U3R5bGUsIG1fc2VsZWN0aW9uU2hhZG93KTsKKyAgICAgICAgcGFpbnRU
ZXh0V2l0aFN0eWxlKCBtX3NlbGVjdGlvblBhaW50U3R5bGUsIG1fc3RhcnRQb3NpdGlvbkluVGV4
dFJ1biwgbV9lbmRQb3NpdGlvbkluVGV4dFJ1biwgbV9zZWxlY3Rpb25TaGFkb3cpOwogfQogCiAj
aWYgRU5BQkxFKENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dFBhaW50ZXIuaAppbmRleCA0YTExNDk3Li4zYWQ2OWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuaApAQCAtNTQsNyArNTQsMTEgQEAgcHVibGljOgogICAg
IERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgRmxvYXRSZWN0
JiBsaW5lRXh0ZW50cyk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWludFRleHRXaXRoU3R5bGUo
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBjb25zdCBUZXh0UGFpbnRTdHlsZSYsIGNv
bnN0IFNoYWRvd0RhdGEqKTsKKyAgICB2b2lkIGRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0
IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFz
aXNNYXJrLCBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LAorICAgICAgICBjb25zdCBGbG9hdFBvaW50
JiB0ZXh0T3JpZ2luLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpOworICAgIHZvaWQg
cGFpbnRUZXh0V2l0aFNoYWRvd3MoY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZvbnRDYXNjYWRl
JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgZW1waGFzaXNNYXJrLCBpbnQg
ZW1waGFzaXNNYXJrT2Zmc2V0LAorICAgICAgICBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZz
ZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGJvb2wgc3Ryb2tlZCk7CisgICAgdm9p
ZCBwYWludFRleHRXaXRoU3R5bGUoY29uc3QgVGV4dFBhaW50U3R5bGUmLCBpbnQgc3RhcnRPZmZz
ZXQsIGludCBlbmRPZmZzZXQsIGNvbnN0IFNoYWRvd0RhdGEqKTsKICAgICB2b2lkIHBhaW50RW1w
aGFzaXNNYXJrc0lmTmVlZGVkKGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgY29uc3Qg
VGV4dFBhaW50U3R5bGUmLCBjb25zdCBTaGFkb3dEYXRhKik7CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266841</attachid>
            <date>2015-12-07 19:00:36 -0800</date>
            <delta_ts>2015-12-07 20:34:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>9800</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNDIyNDBjLi45MTI3NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTUtMTItMDcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAorICAgICAg
ICBNYWtlIHBhaW50VGV4dFdpdGhTaGFkb3dzIGEgbWVtYmVyIGZ1bmN0aW9uIChUZXh0UGFpbnRl
cikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE5
NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFsc28gc2ltcGxpZmllcyBwYWludFRleHRXaXRoU2hhZG93cyBhbmQKKyAgICAgICAg
cmVhcnJhbmdlcyBzb21lIG9mIHRoZSBmdW5jdGlvbnMnIGFyZ3VtZW50cy4gCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dFBh
aW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OmRyYXdUZXh0T3JFbXBo
YXNpc01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRQYWludGVyOjpwYWludFRleHRXaXRo
U2hhZG93cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRFbXBoYXNpc01h
cmtzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50ZXI6OnBhaW50VGV4dFdp
dGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnBhaW50VGV4dFdpdGhTaGFkb3dzKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dFBhaW50ZXIuaDoKKworMjAxNS0xMi0wNyAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJlZmFjdG9yIFRleHRQYWludGVyOjpwYWludFRleHQo
KSBpbnRvIHN1YiBtZXRob2RzLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxOTYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIu
Y3BwCmluZGV4IGQ2OTA3NGYuLjVkNDlmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcApAQCAtNTYsMTUgKzU2LDYgQEAgVGV4dFBhaW50ZXI6OlRleHRQYWludGVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHksIGIK
IHsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4
dFJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssCi0gICAgaW50IGVtcGhhc2lz
TWFya09mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IGludCBmcm9tLCBjb25z
dCBpbnQgdG8pCi17Ci0gICAgaWYgKGVtcGhhc2lzTWFyay5pc0VtcHR5KCkpCi0gICAgICAgIGNv
bnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgcG9pbnQsIGZyb20sIHRvKTsKLSAgICBlbHNl
Ci0gICAgICAgIGNvbnRleHQuZHJhd0VtcGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFz
aXNNYXJrLCBwb2ludCArIEludFNpemUoMCwgZW1waGFzaXNNYXJrT2Zmc2V0KSwgZnJvbSwgdG8p
OwotfQotCiBTaGFkb3dBcHBsaWVyOjpTaGFkb3dBcHBsaWVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBjb25zdCBGbG9hdFJlY3QmIHRleHRSZWN0
LCBib29sIGxhc3RTaGFkb3dJdGVyYXRpb25TaG91bGREcmF3VGV4dCwgYm9vbCBvcGFxdWUsIEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9zaGFkb3coc2hhZG93KQpAQCAtMTEzLDQxICsxMDQsNTMgQEAgU2hhZG93QXBwbGllcjo6
flNoYWRvd0FwcGxpZXIoKQogICAgICAgICBtX2NvbnRleHQuY2xlYXJTaGFkb3coKTsKIH0KIAot
c3RhdGljIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3Qg
QXRvbWljU3RyaW5nJiBlbXBoYXNpc01hcmssCi0gICAgaW50IGVtcGhhc2lzTWFya09mZnNldCwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBpbnQgdHJ1bmNhdGlvblBvaW50LCBjb25z
dCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QsCi0gICAg
Y29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBib29sIHN0cm9rZWQsIGJvb2wgaG9yaXpvbnRhbCkK
K3ZvaWQgVGV4dFBhaW50ZXI6OmRyYXdUZXh0T3JFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIGVt
cGhhc2lzTWFyaywKKyAgICBpbnQgZW1waGFzaXNNYXJrT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50
JiB0ZXh0T3JpZ2luLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpCit7CisgICAgYXV0
byBkcmF3VGV4dCA9IFsmXShpbnQgZnJvbSwgaW50IHRvKQorICAgIHsKKyAgICAgICAgaWYgKGVt
cGhhc2lzTWFyay5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2NvbnRleHQuZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgZnJvbSwgdG8pOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtX2NvbnRleHQuZHJhd0VtcGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1waGFzaXNN
YXJrLCB0ZXh0T3JpZ2luICsgSW50U2l6ZSgwLCBlbXBoYXNpc01hcmtPZmZzZXQpLCBmcm9tLCB0
byk7CisgICAgfTsKKworICAgIGlmIChzdGFydE9mZnNldCA8PSBlbmRPZmZzZXQpIHsKKyAgICAg
ICAgZHJhd1RleHQoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaWYgKGVuZE9mZnNldCA+IDApCisgICAgICAgIGRyYXdUZXh0KDAsIGVu
ZE9mZnNldCk7CisgICAgaWYgKHN0YXJ0T2Zmc2V0IDwgbV9sZW5ndGgpCisgICAgICAgIGRyYXdU
ZXh0KHN0YXJ0T2Zmc2V0LCBtX2xlbmd0aCk7Cit9CisKK3ZvaWQgVGV4dFBhaW50ZXI6OnBhaW50
VGV4dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEF0b21pY1N0cmluZyYgZW1w
aGFzaXNNYXJrLAorICAgIGludCBlbXBoYXNpc01hcmtPZmZzZXQsIGludCBzdGFydE9mZnNldCwg
aW50IGVuZE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgYm9vbCBzdHJva2Vk
KQogewotICAgIENvbG9yIGZpbGxDb2xvciA9IGNvbnRleHQuZmlsbENvbG9yKCk7CisgICAgaWYg
KCFzaGFkb3cpIHsKKyAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1
biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRPcmlnaW4sIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ29sb3IgZmls
bENvbG9yID0gbV9jb250ZXh0LmZpbGxDb2xvcigpOwogICAgIGJvb2wgb3BhcXVlID0gIWZpbGxD
b2xvci5oYXNBbHBoYSgpOwogICAgIGJvb2wgbGFzdFNoYWRvd0l0ZXJhdGlvblNob3VsZERyYXdU
ZXh0ID0gIXN0cm9rZWQgJiYgb3BhcXVlOwogICAgIGlmICghb3BhcXVlKQotICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwotCi0gICAgZG8gewotICAgICAgICBTaGFk
b3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoY29udGV4dCwgc2hhZG93LCBib3hSZWN0LCBsYXN0U2hh
ZG93SXRlcmF0aW9uU2hvdWxkRHJhd1RleHQsIG9wYXF1ZSwgaG9yaXpvbnRhbCA/IEhvcml6b250
YWwgOiBWZXJ0aWNhbCk7Ci0gICAgICAgIGlmIChzaGFkb3dBcHBsaWVyLm5vdGhpbmdUb0RyYXco
KSkgewotICAgICAgICAgICAgc2hhZG93ID0gc2hhZG93LT5uZXh0KCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIEludFNpemUgZXh0cmFPZmZzZXQgPSByb3Vu
ZGVkSW50U2l6ZShzaGFkb3dBcHBsaWVyLmV4dHJhT2Zmc2V0KCkpOwotICAgICAgICBpZiAoIXNo
YWRvdyAmJiAhb3BhcXVlKQotICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENv
bG9yKTsKLQotICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPD0gZW5kT2Zmc2V0KQotICAgICAgICAg
ICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoY29udGV4dCwgZm9udCwgdGV4dFJ1biwgZW1waGFz
aXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGVu
ZE9mZnNldCA+IDApCi0gICAgICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoY29u
dGV4dCwgZm9udCwgdGV4dFJ1biwgZW1waGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRl
eHRPcmlnaW4gKyBleHRyYU9mZnNldCwgMCwgZW5kT2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChz
dGFydE9mZnNldCA8IHRydW5jYXRpb25Qb2ludCkKLSAgICAgICAgICAgICAgICBkcmF3VGV4dE9y
RW1waGFzaXNNYXJrcyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCBlbXBoYXNpc01hcmssIGVtcGhh
c2lzTWFya09mZnNldCwgdGV4dE9yaWdpbiArIGV4dHJhT2Zmc2V0LCBzdGFydE9mZnNldCwgdHJ1
bmNhdGlvblBvaW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghc2hhZG93KQotICAgICAg
ICAgICAgYnJlYWs7Ci0KKyAgICAgICAgbV9jb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Ymxh
Y2spOworICAgIHdoaWxlIChzaGFkb3cpIHsKKyAgICAgICAgU2hhZG93QXBwbGllciBzaGFkb3dB
cHBsaWVyKG1fY29udGV4dCwgc2hhZG93LCBtX2JveFJlY3QsIGxhc3RTaGFkb3dJdGVyYXRpb25T
aG91bGREcmF3VGV4dCwgb3BhcXVlLCBtX3RleHRCb3hJc0hvcml6b250YWwgPyBIb3Jpem9udGFs
IDogVmVydGljYWwpOworICAgICAgICBpZiAoIXNoYWRvd0FwcGxpZXIubm90aGluZ1RvRHJhdygp
KQorICAgICAgICAgICAgZHJhd1RleHRPckVtcGhhc2lzTWFya3MoZm9udCwgdGV4dFJ1biwgZW1w
aGFzaXNNYXJrLCBlbXBoYXNpc01hcmtPZmZzZXQsIHRleHRPcmlnaW4gKyBzaGFkb3dBcHBsaWVy
LmV4dHJhT2Zmc2V0KCksIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwogICAgICAgICBzaGFkb3cg
PSBzaGFkb3ctPm5leHQoKTsKLSAgICB9IHdoaWxlIChzaGFkb3cgfHwgIWxhc3RTaGFkb3dJdGVy
YXRpb25TaG91bGREcmF3VGV4dCk7CisgICAgfQorCisgICAgaWYgKCFsYXN0U2hhZG93SXRlcmF0
aW9uU2hvdWxkRHJhd1RleHQpIHsKKyAgICAgICAgaWYgKCFvcGFxdWUpCisgICAgICAgICAgICBt
X2NvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvcik7CisgICAgICAgIGRyYXdUZXh0T3JFbXBo
YXNpc01hcmtzKGZvbnQsIHRleHRSdW4sIGVtcGhhc2lzTWFyaywgZW1waGFzaXNNYXJrT2Zmc2V0
LCB0ZXh0T3JpZ2luLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKKyAgICB9CiB9CiAKIHZvaWQg
VGV4dFBhaW50ZXI6OnBhaW50RW1waGFzaXNNYXJrc0lmTmVlZGVkKGludCBzdGFydE9mZnNldCwg
aW50IGVuZE9mZnNldCwgY29uc3QgVGV4dFBhaW50U3R5bGUmIHBhaW50U3R5bGUsIGNvbnN0IFNo
YWRvd0RhdGEqIHNoYWRvdykKQEAgLTE2NCwxOCArMTY3LDE4IEBAIHZvaWQgVGV4dFBhaW50ZXI6
OnBhaW50RW1waGFzaXNNYXJrc0lmTmVlZGVkKGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNl
dCwgY29uCiAgICAgICAgIG1fY29udGV4dC5jb25jYXRDVE0ocm90YXRpb24obV9ib3hSZWN0LCBD
bG9ja3dpc2UpKTsKIAogICAgIC8vIEZJWE1FOiBUcnVuY2F0ZSByaWdodC10by1sZWZ0IHRleHQg
Y29ycmVjdGx5LgotICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKG1fY29udGV4dCwgbV9jb21iaW5l
ZFRleHQgPyBtX2NvbWJpbmVkVGV4dC0+b3JpZ2luYWxGb250KCkgOiBtX2ZvbnQsIGVtcGhhc2lz
TWFya1RleHRSdW4sIG1fZW1waGFzaXNNYXJrLCBtX2VtcGhhc2lzTWFya09mZnNldCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCwgbV9sZW5ndGgsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIG1fYm94
UmVjdCwgc2hhZG93LCBwYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCwgbV90ZXh0Qm94SXNIb3Jp
em9udGFsKTsKKyAgICBwYWludFRleHRXaXRoU2hhZG93cyhzaGFkb3csIG1fY29tYmluZWRUZXh0
ID8gbV9jb21iaW5lZFRleHQtPm9yaWdpbmFsRm9udCgpIDogbV9mb250LCBlbXBoYXNpc01hcmtU
ZXh0UnVuLCBtX2VtcGhhc2lzTWFyaywgbV9lbXBoYXNpc01hcmtPZmZzZXQsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQsIGVtcGhhc2lzTWFya1RleHRPcmlnaW4sIHBhaW50U3R5bGUuc3Ryb2tlV2lk
dGggPiAwKTsKIAogICAgIGlmIChtX2NvbWJpbmVkVGV4dCkKICAgICAgICAgbV9jb250ZXh0LmNv
bmNhdENUTShyb3RhdGlvbihtX2JveFJlY3QsIENvdW50ZXJjbG9ja3dpc2UpKTsKIH0KIAotdm9p
ZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0V2l0aFN0eWxlKGludCBzdGFydE9mZnNldCwgaW50IGVu
ZE9mZnNldCwgY29uc3QgVGV4dFBhaW50U3R5bGUmIHBhaW50U3R5bGUsIGNvbnN0IFNoYWRvd0Rh
dGEqIHNoYWRvdykKK3ZvaWQgVGV4dFBhaW50ZXI6OnBhaW50VGV4dFdpdGhTdHlsZShjb25zdCBU
ZXh0UGFpbnRTdHlsZSYgcGFpbnRTdHlsZSwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0
LCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKG1fY29udGV4dCwgcGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDApOwog
ICAgIHVwZGF0ZUdyYXBoaWNzQ29udGV4dChtX2NvbnRleHQsIHBhaW50U3R5bGUpOwogICAgIC8v
IEZJWE1FOiBUcnVuY2F0ZSByaWdodC10by1sZWZ0IHRleHQgY29ycmVjdGx5LgotICAgIHBhaW50
VGV4dFdpdGhTaGFkb3dzKG1fY29udGV4dCwgbV9mb250LCBtX3RleHRSdW4sIG51bGxBdG9tLCAw
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBtX2xlbmd0aCwgbV90ZXh0T3JpZ2luLCBtX2JveFJl
Y3QsIHNoYWRvdywgcGFpbnRTdHlsZS5zdHJva2VXaWR0aCA+IDAsIG1fdGV4dEJveElzSG9yaXpv
bnRhbCk7CisgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Moc2hhZG93LCBtX2ZvbnQsIG1fdGV4dFJ1
biwgbnVsbEF0b20sIDAsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG1fdGV4dE9yaWdpbiwgcGFp
bnRTdHlsZS5zdHJva2VXaWR0aCA+IDApOwogICAgIHBhaW50RW1waGFzaXNNYXJrc0lmTmVlZGVk
KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIHBhaW50U3R5bGUsIHNoYWRvdyk7CiB9CiAgICAgCkBA
IC0xODcsMTIgKzE5MCwxMiBAQCB2b2lkIFRleHRQYWludGVyOjpwYWludFRleHQoKQogICAgICAg
ICBib29sIGZ1bGxMZW5ndGhQYWludCA9ICFtX3BhaW50U2VsZWN0ZWRUZXh0U2VwYXJhdGVseSB8
fCBtX2VuZFBvc2l0aW9uSW5UZXh0UnVuIDw9IG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1bjsKICAg
ICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gZnVsbExlbmd0aFBhaW50ID8gMCA6IG1fZW5kUG9zaXRp
b25JblRleHRSdW47CiAgICAgICAgIGludCBlbmRPZmZzZXQgPSBmdWxsTGVuZ3RoUGFpbnQgPyBt
X2xlbmd0aCA6IG1fc3RhcnRQb3NpdGlvbkluVGV4dFJ1bjsKLSAgICAgICAgcGFpbnRUZXh0V2l0
aFN0eWxlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIG1fdGV4dFBhaW50U3R5bGUsIG1fdGV4dFNo
YWRvdyk7CisgICAgICAgIHBhaW50VGV4dFdpdGhTdHlsZShtX3RleHRQYWludFN0eWxlLCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0LCBtX3RleHRTaGFkb3cpOwogICAgIH0KIAogICAgIC8vIHBhaW50
IG9ubHkgdGhlIHRleHQgdGhhdCBpcyBzZWxlY3RlZAogICAgIGlmICgobV9wYWludFNlbGVjdGVk
VGV4dE9ubHkgfHwgbV9wYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkpICYmIG1fc3RhcnRQb3Np
dGlvbkluVGV4dFJ1biA8IG1fZW5kUG9zaXRpb25JblRleHRSdW4pCi0gICAgICAgIHBhaW50VGV4
dFdpdGhTdHlsZShtX3N0YXJ0UG9zaXRpb25JblRleHRSdW4sIG1fZW5kUG9zaXRpb25JblRleHRS
dW4sIG1fc2VsZWN0aW9uUGFpbnRTdHlsZSwgbV9zZWxlY3Rpb25TaGFkb3cpOworICAgICAgICBw
YWludFRleHRXaXRoU3R5bGUobV9zZWxlY3Rpb25QYWludFN0eWxlLCBtX3N0YXJ0UG9zaXRpb25J
blRleHRSdW4sIG1fZW5kUG9zaXRpb25JblRleHRSdW4sIG1fc2VsZWN0aW9uU2hhZG93KTsKIH0K
IAogI2lmIEVOQUJMRShDU1MzX1RFWFRfREVDT1JBVElPTl9TS0lQX0lOSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRQYWludGVyLmgKaW5kZXggNGExMTQ5Ny4uM2FkNjlhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmgKQEAgLTU0LDcgKzU0LDExIEBAIHB1YmxpYzoK
ICAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgbGluZUV4dGVudHMpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcGFpbnRUZXh0V2l0aFN0
eWxlKGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgY29uc3QgVGV4dFBhaW50U3R5bGUm
LCBjb25zdCBTaGFkb3dEYXRhKik7CisgICAgdm9pZCBkcmF3VGV4dE9yRW1waGFzaXNNYXJrcyhj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIGVt
cGhhc2lzTWFyaywgaW50IGVtcGhhc2lzTWFya09mZnNldCwKKyAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgdGV4dE9yaWdpbiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKKyAgICB2
b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnN0IFNoYWRvd0RhdGEqLCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIGVtcGhhc2lzTWFyaywg
aW50IGVtcGhhc2lzTWFya09mZnNldCwKKyAgICAgICAgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5k
T2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBib29sIHN0cm9rZWQpOworICAg
IHZvaWQgcGFpbnRUZXh0V2l0aFN0eWxlKGNvbnN0IFRleHRQYWludFN0eWxlJiwgaW50IHN0YXJ0
T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBjb25zdCBTaGFkb3dEYXRhKik7CiAgICAgdm9pZCBwYWlu
dEVtcGhhc2lzTWFya3NJZk5lZWRlZChpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGNv
bnN0IFRleHRQYWludFN0eWxlJiwgY29uc3QgU2hhZG93RGF0YSopOwogCiBwcml2YXRlOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>