<?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>157249</bug_id>
          
          <creation_ts>2016-05-01 14:37:08 -0700</creation_ts>
          <short_desc>Deduplicated initializer lists of BitmapImage constructors.</short_desc>
          <delta_ts>2016-05-04 10:52:59 -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>Images</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Konstantin Tokarev">annulen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
    
    <cc>sabouhallawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189240</commentid>
    <comment_count>0</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-05-01 14:37:08 -0700</bug_when>
    <thetext>BitmapImage has 3 constructors, which initialize the same variables. Because of this duplication it&apos;s easy to leave some field uninitialized in some code path. Actually, there are already which are already left initialized in 1 or 2 of constructors, e.g. m_desiredFrameStartTime, m_decodedPropertiesSize, m_progressiveLoadChunkTime, m_progressiveLoadChunkCount, m_hasUniformFrameSize.

Use constructor delegation and inline filed initializers to avoid this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189241</commentid>
    <comment_count>1</comment_count>
      <attachid>277869</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-05-01 14:44:00 -0700</bug_when>
    <thetext>Created attachment 277869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189263</commentid>
    <comment_count>2</comment_count>
      <attachid>277869</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-01 16:37:57 -0700</bug_when>
    <thetext>Comment on attachment 277869
Patch

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

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:48
&gt; +BitmapImage::BitmapImage(ImageObserver* observer, bool fromNativeImage)

This approach of taking a boolean is a little bit inelegant, violates our coding style rule of not using literal &quot;true&quot; for a mysterious meaning that requires reading the code to find out what it means, and also adds a few branches to the constructors, but I think it’s OK.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:302
&gt; +    int m_repetitionCount { cAnimationNone }; // How many total animation loops we should do.

Not sure why we removed the comment explaining the meaning of cAnimationNone. Might be better to move it somewhere rather than removing it entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190029</commentid>
    <comment_count>3</comment_count>
      <attachid>278074</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-05-04 04:35:58 -0700</bug_when>
    <thetext>Created attachment 278074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190030</commentid>
    <comment_count>4</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-05-04 04:39:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 277869 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277869&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.cpp:48
&gt; &gt; +BitmapImage::BitmapImage(ImageObserver* observer, bool fromNativeImage)
&gt; 
&gt; This approach of taking a boolean is a little bit inelegant, violates our
&gt; coding style rule of not using literal &quot;true&quot; for a mysterious meaning that
&gt; requires reading the code to find out what it means, and also adds a few
&gt; branches to the constructors, but I think it’s OK.

I&apos;ve got rid of branch in constructor by using template + std::true_type/false_type. Now it should compile to the same code as before, though I understand that it&apos;s inelegant.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/BitmapImage.h:302
&gt; &gt; +    int m_repetitionCount { cAnimationNone }; // How many total animation loops we should do.
&gt; 
&gt; Not sure why we removed the comment explaining the meaning of
&gt; cAnimationNone. Might be better to move it somewhere rather than removing it
&gt; entirely.

I thought it&apos;s not so important after we have initializer. Returned it back now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190074</commentid>
    <comment_count>5</comment_count>
      <attachid>278074</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-04 08:28:07 -0700</bug_when>
    <thetext>Comment on attachment 278074
Patch

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190090</commentid>
    <comment_count>6</comment_count>
      <attachid>278074</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-04 09:19:24 -0700</bug_when>
    <thetext>Comment on attachment 278074
Patch

Clearing flags on attachment: 278074

Committed r200417: &lt;http://trac.webkit.org/changeset/200417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190091</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-04 09:19:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190105</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-05-04 09:46:04 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;ve got rid of branch in constructor by using template +
&gt; std::true_type/false_type. Now it should compile to the same code as before,
&gt; though I understand that it&apos;s inelegant.

Inelegant indeed... I think we are being too clever here. std::true_type and std::false_type are obtuse and still violate the spirit of the rule against using boolean parameters. I&apos;m also skeptical that there will actually be any significant performance benefit to using templates instead. (Remember that increased code size is likely to hurt performance.) I think this code would be better with boolean parameters, and best with an simple two-value enum class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190106</commentid>
    <comment_count>9</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-05-04 09:47:54 -0700</bug_when>
    <thetext>Template here just generates two separate initializer lists for &quot;true&quot; and &quot;false&quot; cases, so no additional bloat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190117</commentid>
    <comment_count>10</comment_count>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-05-04 10:04:15 -0700</bug_when>
    <thetext>If you like, I can change it back to non-inline function + branch with enum argument, or keep template and replace true_type and false_type with tag classes like

BitmapImage(observer, FromNative())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190126</commentid>
    <comment_count>11</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-05-04 10:52:59 -0700</bug_when>
    <thetext>Another cleaner way is the following:

1. Convert all the bit-field boolean members in the BitImage class to be non bit-field so you can initialize them in the class header like that:
   &lt;&lt; bool m_isSolidColor : 1;
   &gt;&gt; bool m_isSolidColor { false };

2. Move the platform-dependent constructor BitmapImage::BitmapImage() from BitmapImageCairo.cpp and BitmapImageCG.cpp to BitmapImage.cpp and have only one constructor written like that

   BitmapImage(NativeImagePtr&amp;&amp; image, ImageObserver* observer)
        : Image(observer)
        , m_frameCount(1)
        , m_animationFinished(true)
        ...

3. Add two new static methods in FrameData which return the size and the hasAlpha of a NativeImagePtr. And call these functions from the constructor like that:

    BitmapImage::BitmapImage(NativeImagePtr&amp;&amp; image, ImageObserver* observer)
        : mage(observer)
        , m_frameCount(1)
        , m_animationFinished(true)
        ...
    {
        m_size = FrameData::size(image);
        m_decodedSize = size.area() * 4;

        m_frames.grow(1);
        m_frames[0].m_haveMetadata = true;
        m_frames[0].m_hasAlpha = FrameData::hasAlpha(image;
        m_frames[0].m_image = WTFMove(image);

        checkForSolidColor();
    }

5. Have different implementations for these function in BitmapImageCairo.cpp and BitmapImageCG.cpp.

e.g. in BitmapImageCG.cpp:
    FrameData::hasAlpha(NativeImagePtr&amp;)
    {
       return true;
    }

    FrameData::size(NativeImagePtr&amp; image)
    {
       return IntSize(CGImageGetWidth(image.get()), CGImageGetHeight(image.get()))
    }</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277869</attachid>
            <date>2016-05-01 14:44:00 -0700</date>
            <delta_ts>2016-05-04 04:35:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157249-20160502004434.patch</filename>
            <type>text/plain</type>
            <size>8294</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYxZGI3MDc3OWE0OWJj
NGM5YWYyOGU2ZjI2NTg4ODlmMDY5NDVkMC4uMzc3OTAxMzEzOWJhOGFkNzcxY2RjYjc2YTZhOWJh
MjMxOGYzZDIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTA1LTAxICBLb25z
dGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBEZWR1cGxpY2F0
ZWQgaW5pdGlhbGl6ZXIgbGlzdHMgb2YgQml0bWFwSW1hZ2UgY29uc3RydWN0b3JzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjQ5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5l
ZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6IEFkZGVkIG5ldyBwcml2
YXRlIGNvbnN0cnVjdG9yIG9mCisgICAgICAgIEJpdG1hcEltYWdlIGZvciBkZWxlZ2F0aW9uIHB1
cnBvc2Ugb25seS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOiBV
c2UgaW5saW5lIGluaXRpYWxpemF0aW9uIGZvciBzb21lCisgICAgICAgIEJpdG1hcEltYWdlIGZp
ZWxkcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6IERlbGVn
YXRlIGZpZWxkIGluaXRpYWxpemF0aW9uIHRvCisgICAgICAgIG5ldyBwcml2YXRlIGNvbnN0cnVj
dG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRGl0dG8uCisKIDIw
MTYtMDUtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZWJhc2VsaW5lIGJpbmRpbmdzIHRlc3RzIGFmdGVyIHIyMDAzMDAuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggN2M3
OGQzNjVjMWE0MDJlNmVjMTk0Yjc3MmY1NWE5ZWRiZDZjZGUzMy4uMjMzNmIyYTE1NmYwZWZiZjQ2
MjZmNThhMzAyOTg1ODdhMmNlNjFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNDUsMzMgKzQ1LDI2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQorQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVy
LCBib29sIGZyb21OYXRpdmVJbWFnZSkKICAgICA6IEltYWdlKG9ic2VydmVyKQotICAgICwgbV9j
dXJyZW50RnJhbWUoMCkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQot
ICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKLSAgICAsIG1fcmVwZXRpdGlv
bnNDb21wbGV0ZSgwKQotICAgICwgbV9kZXNpcmVkRnJhbWVTdGFydFRpbWUoMCkKLSAgICAsIG1f
ZGVjb2RlZFNpemUoMCkKLSAgICAsIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplKDApCi0gICAgLCBt
X2ZyYW1lQ291bnQoMCkKLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBleHBvc2UgYSBzZXR0aW5nIHRvIGVuYWJsZS9kaXNhYmxlIHByb2dyZXNzaXZlIGxvYWRpbmcg
cmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgotICAgICwgbV9wcm9ncmVzc2l2ZUxvYWRD
aHVua1RpbWUoMCkKLSAgICAsIG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1bmtDb3VudCgwKQotI2VuZGlm
CisgICAgLCBtX2ZyYW1lQ291bnQoZnJvbU5hdGl2ZUltYWdlID8gMSA6IDApCiAgICAgLCBtX2lz
U29saWRDb2xvcihmYWxzZSkKICAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCi0g
ICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKGZhbHNlKQotICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQo
ZmFsc2UpCi0gICAgLCBtX2hhdmVTaXplKGZhbHNlKQotICAgICwgbV9zaXplQXZhaWxhYmxlKGZh
bHNlKQorICAgICwgbV9hbmltYXRpb25GaW5pc2hlZChmcm9tTmF0aXZlSW1hZ2UpCisgICAgLCBt
X2FsbERhdGFSZWNlaXZlZChmcm9tTmF0aXZlSW1hZ2UpCisgICAgLCBtX2hhdmVTaXplKGZyb21O
YXRpdmVJbWFnZSkKKyAgICAsIG1fc2l6ZUF2YWlsYWJsZShmcm9tTmF0aXZlSW1hZ2UpCiAgICAg
LCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKLSAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFs
c2UpCisgICAgLCBtX2hhdmVGcmFtZUNvdW50KGZyb21OYXRpdmVJbWFnZSkKICAgICAsIG1fYW5p
bWF0aW9uRmluaXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKIH0KIAorQml0bWFwSW1hZ2U6
OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIDogQml0bWFwSW1hZ2Uo
b2JzZXJ2ZXIsIGZhbHNlKQoreworfQorCiBCaXRtYXBJbWFnZTo6fkJpdG1hcEltYWdlKCkKIHsK
ICAgICBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA3YzhlY2FjZmM2YzYxYzk0NDRkNjFhZGQ0
ZTI3OTc2Y2IyMDIxZDUwLi45Yjc4MGNmYjNjMGM3ZTVlNjNiYTI1YjllZDc0MjNkMmI4N2NhYTUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
QEAgLTI4NCw2ICsyODQsOCBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBC
aXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiwgYm9vbCBmcm9tTmF0aXZlSW1hZ2UpOworCiAgICAg
dm9pZCBjbGVhclRpbWVyKCk7CiAgICAgdm9pZCBzdGFydFRpbWVyKGRvdWJsZSBkZWxheSk7CiAK
QEAgLTI5MywxNCArMjk1LDE0IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6
ZTsgLy8gVGhlIHNpemUgdG8gdXNlIGZvciB0aGUgb3ZlcmFsbCBpbWFnZSAod2lsbCBqdXN0IGJl
IHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSkuCiAgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbjsKIAotICAgIHNpemVfdCBtX2N1cnJlbnRGcmFtZTsgLy8g
VGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGZyYW1lIG9mIGFuaW1hdGlvbi4KKyAgICBzaXplX3Qg
bV9jdXJyZW50RnJhbWUgeyAwIH07IC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBv
ZiBhbmltYXRpb24uCiAgICAgVmVjdG9yPEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFy
cmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVm
IGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VGltZXI+IG1fZnJhbWVUaW1lcjsKLSAgICBpbnQgbV9yZXBldGl0aW9uQ291bnQ7IC8vIEhvdyBt
YW55IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQgZG8uIFRoaXMgd2lsbCBiZSBjQW5p
bWF0aW9uTm9uZSBpZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5jYXBhYmxlIG9mIGFuaW1hdGlvbi4K
LSAgICBSZXBldGl0aW9uQ291bnRTdGF0dXMgbV9yZXBldGl0aW9uQ291bnRTdGF0dXM7Ci0gICAg
aW50IG1fcmVwZXRpdGlvbnNDb21wbGV0ZTsgIC8vIEhvdyBtYW55IHJlcGV0aXRpb25zIHdlJ3Zl
IGZpbmlzaGVkLgotICAgIGRvdWJsZSBtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZTsgIC8vIFRoZSBz
eXN0ZW0gdGltZSBhdCB3aGljaCB3ZSBob3BlIHRvIHNlZSB0aGUgbmV4dCBjYWxsIHRvIHN0YXJ0
QW5pbWF0aW9uKCkuCisgICAgaW50IG1fcmVwZXRpdGlvbkNvdW50IHsgY0FuaW1hdGlvbk5vbmUg
fTsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4KKyAgICBS
ZXBldGl0aW9uQ291bnRTdGF0dXMgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMgeyBVbmtub3duIH07
CisgICAgaW50IG1fcmVwZXRpdGlvbnNDb21wbGV0ZSB7IDAgfTsgLy8gSG93IG1hbnkgcmVwZXRp
dGlvbnMgd2UndmUgZmluaXNoZWQuCisgICAgZG91YmxlIG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1l
IHsgMCB9OyAvLyBUaGUgc3lzdGVtIHRpbWUgYXQgd2hpY2ggd2UgaG9wZSB0byBzZWUgdGhlIG5l
eHQgY2FsbCB0byBzdGFydEFuaW1hdGlvbigpLgogCiAjaWYgVVNFKEFQUEtJVCkKICAgICBtdXRh
YmxlIFJldGFpblB0cjxOU0ltYWdlPiBtX25zSW1hZ2U7IC8vIEEgY2FjaGVkIE5TSW1hZ2Ugb2Yg
ZnJhbWUgMC4gT25seSBidWlsdCBsYXppbHkgaWYgc29tZW9uZSBhY3R1YWxseSBxdWVyaWVzIGZv
ciBvbmUuCkBAIC0zMTEsMTQgKzMxMywxNCBAQCBwcml2YXRlOgogCiAgICAgQ29sb3IgbV9zb2xp
ZENvbG9yOyAgLy8gSWYgd2UncmUgYSAxeDEgc29saWQgY29sb3IsIHRoaXMgaXMgdGhlIGNvbG9y
IHRvIHVzZSB0byBmaWxsLgogCi0gICAgdW5zaWduZWQgbV9kZWNvZGVkU2l6ZTsgLy8gVGhlIGN1
cnJlbnQgc2l6ZSBvZiBhbGwgZGVjb2RlZCBmcmFtZXMuCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBt
X2RlY29kZWRQcm9wZXJ0aWVzU2l6ZTsgLy8gVGhlIHNpemUgb2YgZGF0YSBkZWNvZGVkIGJ5IHRo
ZSBzb3VyY2UgdG8gZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMgKGUuZy4gc2l6ZSwgZnJhbWUg
Y291bnQsIGV0YykuCisgICAgdW5zaWduZWQgbV9kZWNvZGVkU2l6ZSB7IDAgfTsgLy8gVGhlIGN1
cnJlbnQgc2l6ZSBvZiBhbGwgZGVjb2RlZCBmcmFtZXMuCisgICAgbXV0YWJsZSB1bnNpZ25lZCBt
X2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSB7IDAgfTsgLy8gVGhlIHNpemUgb2YgZGF0YSBkZWNvZGVk
IGJ5IHRoZSBzb3VyY2UgdG8gZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMgKGUuZy4gc2l6ZSwg
ZnJhbWUgY291bnQsIGV0YykuCiAgICAgc2l6ZV90IG1fZnJhbWVDb3VudDsKIAogI2lmIFBMQVRG
T1JNKElPUykKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGV4cG9zZSBhIHNldHRpbmcgdG8gZW5h
YmxlL2Rpc2FibGUgcHJvZ3Jlc3NpdmUgbG9hZGluZyByZW1vdmUgdGhlIFBMQVRGT1JNKElPUykt
Z3VhcmQuCi0gICAgZG91YmxlIG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1bmtUaW1lOwotICAgIHVpbnQx
Nl90IG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1bmtDb3VudDsKKyAgICBkb3VibGUgbV9wcm9ncmVzc2l2
ZUxvYWRDaHVua1RpbWUgeyAwIH07CisgICAgdWludDE2X3QgbV9wcm9ncmVzc2l2ZUxvYWRDaHVu
a0NvdW50IHsgMCB9OwogI2VuZGlmCiAgICAgYm9vbCBtX2lzU29saWRDb2xvciA6IDE7IC8vIFdo
ZXRoZXIgb3Igbm90IHdlIGFyZSBhIDF4MSBzb2xpZCBpbWFnZS4KICAgICBib29sIG1fY2hlY2tl
ZEZvclNvbGlkQ29sb3IgOiAxOyAvLyBXaGV0aGVyIHdlJ3ZlIGNoZWNrZWQgdGhlIGZyYW1lIGZv
ciBzb2xpZCBjb2xvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggMWY0ZWUyMDc2NmMxNWRj
ZDdlMGFlNmNiYzBkNGJkMWM3MzQ1MTYwMS4uN2ExOWVkYTIzNjFlNjg2NjY3Mzg3NGIwYjQ2OWY4
MDc1ZTdkNTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTM5LDIyICszOSwxMSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4mJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCi0g
ICAgOiBJbWFnZShvYnNlcnZlcikKLSAgICAsIG1fc2l6ZShjYWlyb1N1cmZhY2VTaXplKG5hdGl2
ZUltYWdlLmdldCgpKSkKLSAgICAsIG1fY3VycmVudEZyYW1lKDApCi0gICAgLCBtX3JlcGV0aXRp
b25Db3VudChjQW5pbWF0aW9uTm9uZSkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzKFVu
a25vd24pCi0gICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKLSAgICAsIG1fZGVjb2RlZFNp
emUobV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCkgKiA0KQotICAgICwgbV9mcmFtZUNv
dW50KDEpCi0gICAgLCBtX2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNv
bGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCi0gICAgLCBt
X2FsbERhdGFSZWNlaXZlZCh0cnVlKQotICAgICwgbV9oYXZlU2l6ZSh0cnVlKQotICAgICwgbV9z
aXplQXZhaWxhYmxlKHRydWUpCi0gICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCisgICAgOiBC
aXRtYXBJbWFnZShvYnNlcnZlciwgdHJ1ZSkKIHsKKyAgICBtX3NpemUgPSBjYWlyb1N1cmZhY2VT
aXplKG5hdGl2ZUltYWdlLmdldCgpKTsKKyAgICBtX2RlY29kZWRTaXplID0gbV9zaXplLndpZHRo
KCkgKiBtX3NpemUuaGVpZ2h0KCkgKiA0OworCiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKICAgICBt
X2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRpdmVJ
bWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKICAgICBtX2ZyYW1lc1swXS5tX2lt
YWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDY5MzJhMTJmZGY4YzEx
OGRkYjI0Yzg5MjdjZWM1Y2YxZmQ2NWViYmEuLmZlNTc1YzVjMjk4MTIzNjkzNmIzNTlhMjE5NmFm
YjJhODRlOTllODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC02OCwyMSArNjgsNyBAQCBib29sIEZyYW1lRGF0
YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogfQogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1h
Z2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVy
KQotICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX2N1cnJlbnRGcmFtZSgwKQotICAgICwg
bV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCi0gICAgLCBtX3JlcGV0aXRpb25Db3Vu
dFN0YXR1cyhVbmtub3duKQotICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCi0gICAgLCBt
X2RlY29kZWRTaXplKDApCi0gICAgLCBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSgwKQotICAgICwg
bV9mcmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hl
Y2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKHRydWUp
Ci0gICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQotICAgICwgbV9oYXZlU2l6ZSh0cnVlKQot
ICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCi0gICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUp
CisgICAgOiBCaXRtYXBJbWFnZShvYnNlcnZlciwgdHJ1ZSkKIHsKICAgICBDR0Zsb2F0IHdpZHRo
ID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKICAgICBDR0Zsb2F0IGhlaWdodCA9IENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278074</attachid>
            <date>2016-05-04 04:35:58 -0700</date>
            <delta_ts>2016-05-04 09:19:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157249-20160504143637.patch</filename>
            <type>text/plain</type>
            <size>8648</size>
            <attacher name="Konstantin Tokarev">annulen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAwOTYxYTRhM2I0OTNk
ZDlmYmQ5Nzk5ZmNlYmZhM2M1YzNhOTU5OC4uODZkMTQyMDk0Y2NkZjY0YWUxM2IyMWRlZWRjOWM1
YTMwNTdhM2UyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTA1LTAxICBLb25z
dGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KKworICAgICAgICBEZWR1cGxpY2F0
ZWQgaW5pdGlhbGl6ZXIgbGlzdHMgb2YgQml0bWFwSW1hZ2UgY29uc3RydWN0b3JzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjQ5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5l
ZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6IEFkZGVkIG5ldyBwcml2
YXRlIGNvbnN0cnVjdG9yIG9mCisgICAgICAgIEJpdG1hcEltYWdlIGZvciBkZWxlZ2F0aW9uIHB1
cnBvc2Ugb25seS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOiBV
c2UgaW5saW5lIGluaXRpYWxpemF0aW9uIGZvciBzb21lCisgICAgICAgIEJpdG1hcEltYWdlIGZp
ZWxkcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6IERlbGVn
YXRlIGZpZWxkIGluaXRpYWxpemF0aW9uIHRvCisgICAgICAgIG5ldyBwcml2YXRlIGNvbnN0cnVj
dG9yLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRGl0dG8uCisKIDIw
MTYtMDUtMDQgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGZpeGluZyBjcmFzaGluZyBHVEsrIHRlc3RzIGFmdGVyIHIyMDA0MDcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5k
ZXggN2M3OGQzNjVjMWE0MDJlNmVjMTk0Yjc3MmY1NWE5ZWRiZDZjZGUzMy4uY2RmMjRiNzc5NzA5
ZDE3ODMwNDAzNzNjOGE2NDYxNmQwMmU4MGMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNDYsMjkgKzQ2LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyKQotICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX2N1cnJlbnRGcmFtZSgw
KQotICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCi0gICAgLCBtX3JlcGV0
aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQotICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDAp
Ci0gICAgLCBtX2Rlc2lyZWRGcmFtZVN0YXJ0VGltZSgwKQotICAgICwgbV9kZWNvZGVkU2l6ZSgw
KQotICAgICwgbV9kZWNvZGVkUHJvcGVydGllc1NpemUoMCkKLSAgICAsIG1fZnJhbWVDb3VudCgw
KQotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGV4cG9zZSBhIHNl
dHRpbmcgdG8gZW5hYmxlL2Rpc2FibGUgcHJvZ3Jlc3NpdmUgbG9hZGluZyByZW1vdmUgdGhlIFBM
QVRGT1JNKElPUyktZ3VhcmQuCi0gICAgLCBtX3Byb2dyZXNzaXZlTG9hZENodW5rVGltZSgwKQot
ICAgICwgbV9wcm9ncmVzc2l2ZUxvYWRDaHVua0NvdW50KDApCi0jZW5kaWYKLSAgICAsIG1faXNT
b2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkKLSAg
ICAsIG1fYW5pbWF0aW9uRmluaXNoZWQoZmFsc2UpCi0gICAgLCBtX2FsbERhdGFSZWNlaXZlZChm
YWxzZSkKLSAgICAsIG1faGF2ZVNpemUoZmFsc2UpCi0gICAgLCBtX3NpemVBdmFpbGFibGUoZmFs
c2UpCi0gICAgLCBtX2hhc1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKLSAgICAsIG1faGF2ZUZyYW1l
Q291bnQoZmFsc2UpCi0gICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAoZmFs
c2UpCisgICAgOiBCaXRtYXBJbWFnZShvYnNlcnZlciwgc3RkOjpmYWxzZV90eXBlKCkpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmlu
ZGV4IDdjOGVjYWNmYzZjNjFjOTQ0NGQ2MWFkZDRlMjc5NzZjYjIwMjFkNTAuLjE0YzQxYzk0N2E5
YjdhYjA5YWI3MmMxMGY0YTZiMzJiZWZiNTIzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMjg0LDYgKzI4NCw4IEBAIHByb3RlY3Rl
ZDoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEJpdG1hcElt
YWdlKEltYWdlT2JzZXJ2ZXIqLCBUIGZyb21OYXRpdmVJbWFnZSk7CisKICAgICB2b2lkIGNsZWFy
VGltZXIoKTsKICAgICB2b2lkIHN0YXJ0VGltZXIoZG91YmxlIGRlbGF5KTsKIApAQCAtMjkzLDE0
ICsyOTUsMTQgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOyAvLyBUaGUg
c2l6ZSB0byB1c2UgZm9yIHRoZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1c3QgYmUgdGhlIHNpemUg
b2YgdGhlIGZpcnN0IGltYWdlKS4KICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGlu
Z09yaWVudGF0aW9uOwogCi0gICAgc2l6ZV90IG1fY3VycmVudEZyYW1lOyAvLyBUaGUgaW5kZXgg
b2YgdGhlIGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgorICAgIHNpemVfdCBtX2N1cnJlbnRG
cmFtZSB7IDAgfTsgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGZyYW1lIG9mIGFuaW1hdGlv
bi4KICAgICBWZWN0b3I8RnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhl
IGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRv
IHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9m
cmFtZVRpbWVyOwotICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwg
YW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJlIGNBbmltYXRpb25Ob25l
IGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgotICAgIFJlcGV0
aXRpb25Db3VudFN0YXR1cyBtX3JlcGV0aXRpb25Db3VudFN0YXR1czsKLSAgICBpbnQgbV9yZXBl
dGl0aW9uc0NvbXBsZXRlOyAgLy8gSG93IG1hbnkgcmVwZXRpdGlvbnMgd2UndmUgZmluaXNoZWQu
Ci0gICAgZG91YmxlIG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lOyAgLy8gVGhlIHN5c3RlbSB0aW1l
IGF0IHdoaWNoIHdlIGhvcGUgdG8gc2VlIHRoZSBuZXh0IGNhbGwgdG8gc3RhcnRBbmltYXRpb24o
KS4KKyAgICBpbnQgbV9yZXBldGl0aW9uQ291bnQgeyBjQW5pbWF0aW9uTm9uZSB9OyAvLyBIb3cg
bWFueSB0b3RhbCBhbmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLiBUaGlzIHdpbGwgYmUgY0Fu
aW1hdGlvbk5vbmUgaWYgdGhpcyBpbWFnZSB0eXBlIGlzIGluY2FwYWJsZSBvZiBhbmltYXRpb24u
CisgICAgUmVwZXRpdGlvbkNvdW50U3RhdHVzIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzIHsgVW5r
bm93biB9OworICAgIGludCBtX3JlcGV0aXRpb25zQ29tcGxldGUgeyAwIH07IC8vIEhvdyBtYW55
IHJlcGV0aXRpb25zIHdlJ3ZlIGZpbmlzaGVkLgorICAgIGRvdWJsZSBtX2Rlc2lyZWRGcmFtZVN0
YXJ0VGltZSB7IDAgfTsgLy8gVGhlIHN5c3RlbSB0aW1lIGF0IHdoaWNoIHdlIGhvcGUgdG8gc2Vl
IHRoZSBuZXh0IGNhbGwgdG8gc3RhcnRBbmltYXRpb24oKS4KIAogI2lmIFVTRShBUFBLSVQpCiAg
ICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNJbWFnZT4gbV9uc0ltYWdlOyAvLyBBIGNhY2hlZCBOU0lt
YWdlIG9mIGZyYW1lIDAuIE9ubHkgYnVpbHQgbGF6aWx5IGlmIHNvbWVvbmUgYWN0dWFsbHkgcXVl
cmllcyBmb3Igb25lLgpAQCAtMzExLDE0ICszMTMsMTQgQEAgcHJpdmF0ZToKIAogICAgIENvbG9y
IG1fc29saWRDb2xvcjsgIC8vIElmIHdlJ3JlIGEgMXgxIHNvbGlkIGNvbG9yLCB0aGlzIGlzIHRo
ZSBjb2xvciB0byB1c2UgdG8gZmlsbC4KIAotICAgIHVuc2lnbmVkIG1fZGVjb2RlZFNpemU7IC8v
IFRoZSBjdXJyZW50IHNpemUgb2YgYWxsIGRlY29kZWQgZnJhbWVzLgotICAgIG11dGFibGUgdW5z
aWduZWQgbV9kZWNvZGVkUHJvcGVydGllc1NpemU7IC8vIFRoZSBzaXplIG9mIGRhdGEgZGVjb2Rl
ZCBieSB0aGUgc291cmNlIHRvIGRldGVybWluZSBpbWFnZSBwcm9wZXJ0aWVzIChlLmcuIHNpemUs
IGZyYW1lIGNvdW50LCBldGMpLgorICAgIHVuc2lnbmVkIG1fZGVjb2RlZFNpemUgeyAwIH07IC8v
IFRoZSBjdXJyZW50IHNpemUgb2YgYWxsIGRlY29kZWQgZnJhbWVzLgorICAgIG11dGFibGUgdW5z
aWduZWQgbV9kZWNvZGVkUHJvcGVydGllc1NpemUgeyAwIH07IC8vIFRoZSBzaXplIG9mIGRhdGEg
ZGVjb2RlZCBieSB0aGUgc291cmNlIHRvIGRldGVybWluZSBpbWFnZSBwcm9wZXJ0aWVzIChlLmcu
IHNpemUsIGZyYW1lIGNvdW50LCBldGMpLgogICAgIHNpemVfdCBtX2ZyYW1lQ291bnQ7CiAKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBleHBvc2UgYSBzZXR0aW5n
IHRvIGVuYWJsZS9kaXNhYmxlIHByb2dyZXNzaXZlIGxvYWRpbmcgcmVtb3ZlIHRoZSBQTEFURk9S
TShJT1MpLWd1YXJkLgotICAgIGRvdWJsZSBtX3Byb2dyZXNzaXZlTG9hZENodW5rVGltZTsKLSAg
ICB1aW50MTZfdCBtX3Byb2dyZXNzaXZlTG9hZENodW5rQ291bnQ7CisgICAgZG91YmxlIG1fcHJv
Z3Jlc3NpdmVMb2FkQ2h1bmtUaW1lIHsgMCB9OworICAgIHVpbnQxNl90IG1fcHJvZ3Jlc3NpdmVM
b2FkQ2h1bmtDb3VudCB7IDAgfTsKICNlbmRpZgogICAgIGJvb2wgbV9pc1NvbGlkQ29sb3IgOiAx
OyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgYSAxeDEgc29saWQgaW1hZ2UuCiAgICAgYm9vbCBt
X2NoZWNrZWRGb3JTb2xpZENvbG9yIDogMTsgLy8gV2hldGhlciB3ZSd2ZSBjaGVja2VkIHRoZSBm
cmFtZSBmb3Igc29saWQgY29sb3IuCkBAIC0zMzUsNiArMzM3LDIyIEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPEltYWdlPiBtX2NhY2hlZEltYWdlOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2lubGluZSBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIs
IFQgZnJvbU5hdGl2ZUltYWdlKQorICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCisgICAgLCBtX2ZyYW1l
Q291bnQoZnJvbU5hdGl2ZUltYWdlID8gMSA6IDApCisgICAgLCBtX2lzU29saWRDb2xvcihmYWxz
ZSkKKyAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCisgICAgLCBtX2FuaW1hdGlv
bkZpbmlzaGVkKGZyb21OYXRpdmVJbWFnZSkKKyAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKGZyb21O
YXRpdmVJbWFnZSkKKyAgICAsIG1faGF2ZVNpemUoZnJvbU5hdGl2ZUltYWdlKQorICAgICwgbV9z
aXplQXZhaWxhYmxlKGZyb21OYXRpdmVJbWFnZSkKKyAgICAsIG1faGFzVW5pZm9ybUZyYW1lU2l6
ZSh0cnVlKQorICAgICwgbV9oYXZlRnJhbWVDb3VudChmcm9tTmF0aXZlSW1hZ2UpCisgICAgLCBt
X2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAoZmFsc2UpCit7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTUFHRShCaXRtYXBJbWFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jp
dG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggMWY0ZWUyMDc2NmMxNWRjZDdlMGFlNmNiYzBk
NGJkMWM3MzQ1MTYwMS4uMzJkMjNkY2IxYWJlYjBlMGZjNDBmNjdmNWIxZDEwM2RmODhlMThhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTM5LDIyICszOSwxMSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4mJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCi0gICAgOiBJbWFnZShv
YnNlcnZlcikKLSAgICAsIG1fc2l6ZShjYWlyb1N1cmZhY2VTaXplKG5hdGl2ZUltYWdlLmdldCgp
KSkKLSAgICAsIG1fY3VycmVudEZyYW1lKDApCi0gICAgLCBtX3JlcGV0aXRpb25Db3VudChjQW5p
bWF0aW9uTm9uZSkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzKFVua25vd24pCi0gICAg
LCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKLSAgICAsIG1fZGVjb2RlZFNpemUobV9zaXplLndp
ZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCkgKiA0KQotICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAg
LCBtX2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFs
c2UpCi0gICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCi0gICAgLCBtX2FsbERhdGFSZWNl
aXZlZCh0cnVlKQotICAgICwgbV9oYXZlU2l6ZSh0cnVlKQotICAgICwgbV9zaXplQXZhaWxhYmxl
KHRydWUpCi0gICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCisgICAgOiBCaXRtYXBJbWFnZShv
YnNlcnZlciwgc3RkOjp0cnVlX3R5cGUoKSkKIHsKKyAgICBtX3NpemUgPSBjYWlyb1N1cmZhY2VT
aXplKG5hdGl2ZUltYWdlLmdldCgpKTsKKyAgICBtX2RlY29kZWRTaXplID0gbV9zaXplLndpZHRo
KCkgKiBtX3NpemUuaGVpZ2h0KCkgKiA0OworCiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKICAgICBt
X2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRpdmVJ
bWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKICAgICBtX2ZyYW1lc1swXS5tX2lt
YWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDY5MzJhMTJmZGY4YzEx
OGRkYjI0Yzg5MjdjZWM1Y2YxZmQ2NWViYmEuLjhhMDNjNjI4MzY2ZWJlZDBhM2VlNjI2YTQwNDQ5
YjY0ZmU3YjhhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC02OCwyMSArNjgsNyBAQCBib29sIEZyYW1lRGF0
YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogfQogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1h
Z2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVy
KQotICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX2N1cnJlbnRGcmFtZSgwKQotICAgICwg
bV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCi0gICAgLCBtX3JlcGV0aXRpb25Db3Vu
dFN0YXR1cyhVbmtub3duKQotICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCi0gICAgLCBt
X2RlY29kZWRTaXplKDApCi0gICAgLCBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSgwKQotICAgICwg
bV9mcmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hl
Y2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKHRydWUp
Ci0gICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQotICAgICwgbV9oYXZlU2l6ZSh0cnVlKQot
ICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCi0gICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUp
CisgICAgOiBCaXRtYXBJbWFnZShvYnNlcnZlciwgc3RkOjp0cnVlX3R5cGUoKSkKIHsKICAgICBD
R0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKICAgICBDR0Zsb2F0
IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>