<?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>102844</bug_id>
          
          <creation_ts>2012-11-20 15:13:10 -0800</creation_ts>
          <short_desc>Refactor -webkit-filter to use StyleBuilder</short_desc>
          <delta_ts>2014-03-02 09:24:59 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>114508</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>772204</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-20 15:13:10 -0800</bug_when>
    <thetext>-webkit-filter should use StyleBuilder like the other properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772213</commentid>
    <comment_count>1</comment_count>
      <attachid>175291</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-20 15:19:43 -0800</bug_when>
    <thetext>Created attachment 175291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772263</commentid>
    <comment_count>2</comment_count>
      <attachid>175291</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-20 16:16:56 -0800</bug_when>
    <thetext>Comment on attachment 175291
Patch

This seems to be be quite a bit more code and harder to understand, how is that better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772318</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-20 17:17:35 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 175291 [details])
&gt; This seems to be be quite a bit more code and harder to understand, how is that better?

right, I tend to create smaller patches for refactoring then huge patches. It is still better because it is on the right place now and uses the same code path as the other properties. This gives a better overview.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772320</commentid>
    <comment_count>4</comment_count>
      <attachid>175291</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-11-20 17:20:20 -0800</bug_when>
    <thetext>Comment on attachment 175291
Patch

I don&apos;t think being &quot;on the right place&quot; is a good enough reason to make the code more complicated.  I would r+ just the test case though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772346</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-20 18:04:09 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 175291 [details])
&gt; I don&apos;t think being &quot;on the right place&quot; is a good enough reason to make the code more complicated.  I would r+ just the test case though.

Again, this is just one part of the refactoring. And putting things where they belong to is very well a good reason to move code. I would rather ask you why it shouldn&apos;t be on the right place?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773052</commentid>
    <comment_count>6</comment_count>
      <attachid>175291</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-21 09:57:18 -0800</bug_when>
    <thetext>Comment on attachment 175291
Patch

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

&gt; Source/WebCore/css/StyleBuilder.cpp:1721
&gt; +template &lt;const FilterOperations&amp; (RenderStyle::*getterFunction)() const, void (RenderStyle::*setterFunction)(const FilterOperations&amp;), const FilterOperations&amp; (*initialFunction)()&gt;
&gt; +class ApplyPropertyFilter {

This would be easier to read without the template.  See some of the other classes like ApplyPropertyVerticalAlign.

&gt; Source/WebCore/css/StyleBuilder.cpp:1723
&gt; +    static void setValue(RenderStyle* style, const FilterOperations&amp; value) { (style-&gt;*setterFunction)(value); }

You could inline setValue, there&apos;s one caller and it&apos;s only one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773073</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-21 10:10:45 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 175291 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175291&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StyleBuilder.cpp:1721
&gt; &gt; +template &lt;const FilterOperations&amp; (RenderStyle::*getterFunction)() const, void (RenderStyle::*setterFunction)(const FilterOperations&amp;), const FilterOperations&amp; (*initialFunction)()&gt;
&gt; &gt; +class ApplyPropertyFilter {
&gt; 
&gt; This would be easier to read without the template.  See some of the other classes like ApplyPropertyVerticalAlign.
&gt; 
&gt; &gt; Source/WebCore/css/StyleBuilder.cpp:1723
&gt; &gt; +    static void setValue(RenderStyle* style, const FilterOperations&amp; value) { (style-&gt;*setterFunction)(value); }
&gt; 
&gt; You could inline setValue, there&apos;s one caller and it&apos;s only one line.

Sounds reasonable. I&apos;ll upload a new patch till monday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773120</commentid>
    <comment_count>8</comment_count>
      <attachid>175484</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-21 10:58:13 -0800</bug_when>
    <thetext>Created attachment 175484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773126</commentid>
    <comment_count>9</comment_count>
      <attachid>175484</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-21 11:14:22 -0800</bug_when>
    <thetext>Comment on attachment 175484
Patch

I don&apos;t think we should move any more stuff to StyleBuilder until it is refactored to be sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773134</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-11-21 11:25:13 -0800</bug_when>
    <thetext>The original template patch was landed in bug 54707. This was 20 months ago. It had a long discussion afterwards, but was then closed more then a year ago without any further objections.

Since then more an more properties moved to this concept. Even if I don&apos;t care if we move all properties to a giant switch or to the template concept, it is a mess to have the properties spread out into two concepts. This should be fixed soon. When there was no reason to stop moving properties to the templates during the last 20 months, where do you see the reason to do it now?

It is a lot harder to read the code if there are two concepts, in two different files, then the template is on its own. Do you see any chance that the template gets cleaned up soon? Given the timeframe of the original bug, I don&apos;t. And it just looks that r- here blocks the general cleanup even more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773212</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-21 13:19:19 -0800</bug_when>
    <thetext>While I&apos;m not a huge fan of StyleBuilder looking at any single property, my experience adding new features has been that it&apos;s been easier to wrap my head around StyleBuilder since the code for the feature is more self-contained rather than spread out around many switch statements. It&apos;s easier to make sure you&apos;re covering all the necessary cases.

Also, for simple new properties that don&apos;t need special handling, StyleBuilder is quite a bit nicer. You just add one line to one place.

I agree with Dirk, we should just move everything over. It&apos;s not pretty, but it can be cleaned up later. Being half-way there is worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773677</commentid>
    <comment_count>12</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-11-22 00:23:34 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; While I&apos;m not a huge fan of StyleBuilder looking at any single property, my experience adding new features has been that it&apos;s been easier to wrap my head around StyleBuilder since the code for the feature is more self-contained rather than spread out around many switch statements. It&apos;s easier to make sure you&apos;re covering all the necessary cases.
&gt; 
&gt; Also, for simple new properties that don&apos;t need special handling, StyleBuilder is quite a bit nicer. You just add one line to one place.
&gt; 
&gt; I agree with Dirk, we should just move everything over. It&apos;s not pretty, but it can be cleaned up later. Being half-way there is worse.

If the effects of StyleBuilder generally look like this patch, then in my opinion everything should be moved back out of it instead. And I have to admit looking now at StyleBuilder.cpp that it seems pretty hard to follow. Code should be optimized for reading, not for writing, so IMO readability is more relevant than ease adding new features. Maybe it is time to re-evaluate whether StyleBuilder has been a successful experiment in improving the code. It seems like it makes things more verbose and harder to follow, which is not a good result for a refactoring change.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175291</attachid>
            <date>2012-11-20 15:19:43 -0800</date>
            <delta_ts>2012-11-21 10:58:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102844-20121120151732.patch</filename>
            <type>text/plain</type>
            <size>8362</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU2MDE4NjliNzcwODNk
MTdiYmFhMmJiODVhYzBiMWIzMGI2NjJjMS4uNjViMDQ3M2ZhZTIxZTM1Zjk3ZjViZjkyYjRmZDZh
MmU3OWUxMDBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTIwICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgLXdlYmtpdC1m
aWx0ZXIgdG8gdXNlIFN0eWxlQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAyODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RhcnQgcmVmYWN0b3JpbmcgdGhlIGZpbHRlciBjb2RlIGFuZCBt
b3ZlIENTU1Byb3BlcnR5V2Via2l0RmlsdGVyIGhhbmRsaW5nIHRvIFN0eWxlQnVpbGRlci4KKwor
ICAgICAgICBUZXN0OiBjc3MzL2ZpbHRlcnMvZmlsdGVyLWluaGVyaXQuaHRtbAorCisgICAgICAg
ICogY3NzL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFw
cGx5UHJvcGVydHlGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbHRl
cjo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbHRlcjo6YXBw
bHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RmlsdGVyOjpjcmVhdGVI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKwogMjAxMi0xMS0yMCAgTWlrZSBXZXN0ICA8bWt3
c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSAnI2luY2x1ZGUgIlNjcmlwdENhbGxT
dGFja0ZhY3RvcnkuaCInIGluY2x1ZGUgd2hlbiB1bm5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlci5jcHAKaW5kZXggZWQ4ODY0MGE0OGFlMzc0OWJhNjYxYTU4NzMyNmUwZTBiM2Nl
NGQ5ZC4uMTE5NjZmN2MxZjUwZmIwMTA3MjZmOWZmYzEzODdlMDRkNjFiZDI3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDdXJz
b3JMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisj
aW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRl
ICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC0xNzE1LDYgKzE3MTYsMjUg
QEAgcHVibGljOgogICAgIH0KIH07CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit0ZW1wbGF0
ZSA8Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24p
KCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmKSwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgKCppbml0aWFsRnVuY3Rpb24p
KCk+CitjbGFzcyBBcHBseVByb3BlcnR5RmlsdGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9p
ZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIHZh
bHVlKSB7IChzdHlsZS0+KnNldHRlckZ1bmN0aW9uKSh2YWx1ZSk7IH0KKyAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlKENTU1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIs
IENTU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0
aW9uczsKKyAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXItPmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMo
dmFsdWUsIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxl
KCksIG9wZXJhdGlvbnMpKQorICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5
bGUoKSwgb3BlcmF0aW9ucyk7CisgICAgfQorICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3Jl
YXRlSGFuZGxlcigpCisgICAgeworICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFw
cGx5UHJvcGVydHlEZWZhdWx0QmFzZTxjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgZ2V0dGVyRnVu
Y3Rpb24sIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBzZXR0ZXJGdW5jdGlvbiwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYsIGluaXRpYWxGdW5jdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsKKyAgICAg
ICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRGdW5jdGlvbigpLCBoYW5k
bGVyLmluaXRpYWxGdW5jdGlvbigpLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogdGVtcGxhdGUgPEJhc2ljU2hhcGUqIChSZW5k
ZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNl
dHRlckZ1bmN0aW9uKShQYXNzUmVmUHRyPEJhc2ljU2hhcGU+KSwgQmFzaWNTaGFwZSogKCppbml0
aWFsRnVuY3Rpb24pKCk+CiBjbGFzcyBBcHBseVByb3BlcnR5RXhjbHVzaW9uU2hhcGUgewpAQCAt
MTk4MCw2ICsyMDAwLDkgQEAgU3R5bGVCdWlsZGVyOjpTdHlsZUJ1aWxkZXIoKQogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFsaWduQ29udGVudCwgQXBwbHlQcm9wZXJ0
eURlZmF1bHQ8RUFsaWduQ29udGVudCwgJlJlbmRlclN0eWxlOjphbGlnbkNvbnRlbnQsIEVBbGln
bkNvbnRlbnQsICZSZW5kZXJTdHlsZTo6c2V0QWxpZ25Db250ZW50LCBFQWxpZ25Db250ZW50LCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxBbGlnbkNvbnRlbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFsaWduSXRlbXMsIEFwcGx5UHJv
cGVydHlEZWZhdWx0PEVBbGlnbkl0ZW1zLCAmUmVuZGVyU3R5bGU6OmFsaWduSXRlbXMsIEVBbGln
bkl0ZW1zLCAmUmVuZGVyU3R5bGU6OnNldEFsaWduSXRlbXMsIEVBbGlnbkl0ZW1zLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxBbGlnbkl0ZW1zPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbGlnblNlbGYsIEFwcGx5UHJvcGVydHlEZWZh
dWx0PEVBbGlnbkl0ZW1zLCAmUmVuZGVyU3R5bGU6OmFsaWduU2VsZiwgRUFsaWduSXRlbXMsICZS
ZW5kZXJTdHlsZTo6c2V0QWxpZ25TZWxmLCBFQWxpZ25JdGVtcywgJlJlbmRlclN0eWxlOjppbml0
aWFsQWxpZ25TZWxmPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0RmlsdGVyLCBBcHBseVBy
b3BlcnR5RmlsdGVyPCZSZW5kZXJTdHlsZTo6ZmlsdGVyLCAmUmVuZGVyU3R5bGU6OnNldEZpbHRl
ciwgJlJlbmRlclN0eWxlOjppbml0aWFsRmlsdGVyPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyNlbmRp
ZgogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXgsIEFwcGx5UHJv
cGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlXZWJraXRGbGV4R3Jvdywg
Q1NTUHJvcGVydHlXZWJraXRGbGV4U2hyaW5rLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhCYXNpcz46
OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0RmxleEJhc2lzLCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6ZmxleEJhc2lz
LCAmUmVuZGVyU3R5bGU6OnNldEZsZXhCYXNpcywgJlJlbmRlclN0eWxlOjppbml0aWFsRmxleEJh
c2lzLCBBdXRvRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8
RUZsZXhEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6ZmxleERpcmVjdGlvbiwgRUZsZXhEaXJlY3Rp
b24sICZSZW5kZXJTdHlsZTo6c2V0RmxleERpcmVjdGlvbiwgRUZsZXhEaXJlY3Rpb24sICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbEZsZXhEaXJlY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDA3NjcwNDFmYTE2Yjc2YjQ5ZTI2NjIxZWE5
ZTczMTI1MWM0YmUxZGUuLjAyNmFmNWM1NGU1OTRhMjZiZDE2NDU2Y2M1ZDhjMzhjMDY4M2FkOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTM1NjEsMTYgKzM1NjEsNiBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NT
VmFsdWUqIHZhbHVlKQogICAgICAgICBzZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9u
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmlsdGVyOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKGZpbHRlciwgRmlsdGVyKTsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBv
cGVyYXRpb25zOwotICAgICAgICBpZiAoY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyh2YWx1ZSwgc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCBvcGVyYXRpb25zKSkKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldEZpbHRlcihvcGVyYXRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRp
ZgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uczogewogICAgICAgICBWZWN0
b3I8TGVuZ3RoPiBsZW5ndGhzOwogICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0xpc3QodmFs
dWUsIGxlbmd0aHMsIHRoaXMpKQpAQCAtMzc3NSw2ICszNzY1LDkgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QWxpZ25Db250ZW50OgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBbGlnbkl0ZW1zOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnblNlbGY6
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGaWx0
ZXI6CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleDoKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmxleEJhc2lzOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4
RGlyZWN0aW9uOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDQ1ODE5MDFhZGM0ZTU5NzlhMWUyNjVjY2M0NDc5MzM3ODRlYmU5
ZjAuLjFiYjA1NDE2NDBlNThhOTVjYzA0MjU2MDRjYTlkZWFlZjc3NzhiNTkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0xMS0yMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgor
CisgICAgICAgIFJlZmFjdG9yIC13ZWJraXQtZmlsdGVyIHRvIHVzZSBTdHlsZUJ1aWxkZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjg0NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGZv
ciAnaW5oZXJpdCcgdmFsdWUsIHNpbmNlIHdlIGRpZCBub3QgdGVzdCBpbmhlcml0YW5jZSBvbiAt
d2Via2l0LWZpbHRlciBiZWZvcmUuCisKKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvZmlsdGVyLWlu
aGVyaXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvZmlsdGVy
LWluaGVyaXQuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMjAgIFJhcGhhZWwgS3VibyBkYSBDb3N0
YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gR2Fy
ZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2ZpbHRlci1pbmhl
cml0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9maWx0ZXItaW5oZXJp
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI1ZTY4MzgzZDU3NzRjNzM0OGViYjkzMmEwMjlj
NmFhNTQxYzljOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9m
aWx0ZXItaW5oZXJpdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0IGJlaGF2aW9y
IG9mIC13ZWJraXQtZmlsdGVyIG9uIHZhbHVlICJpbmhlcml0Ii4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgY29tcHV0ZWRTdHlsZSgiLXdlYmtpdC1maWx0ZXIiLCAiYmx1
cigycHgpIikgaXMgImJsdXIoMnB4KSIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9m
aWx0ZXJzL2ZpbHRlci1pbmhlcml0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZmls
dGVyLWluaGVyaXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzIxMzkxN2IzNWY1ZGMyMjQ4MmNjMWEzYWNj
MDJjN2QyMmRjNDVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJz
L2ZpbHRlci1pbmhlcml0Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxzdHlsZT4KKyogeyBmb250LXNpemU6IDE2cHg7IH0KK2RpdiB7IGZvbnQtc2l6ZTog
OHB4OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0IGJlaGF2aW9yIG9mIC13ZWJraXQtZmlsdGVyIG9uIHZhbHVlICJpbmhlcml0Ii4nKTsKKwor
ZnVuY3Rpb24gY29tcHV0ZWRTdHlsZShwcm9wZXJ0eSwgdmFsdWUpIHsKKyAgICB2YXIgZGl2UGFy
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkaXZQYXJlbnQpOworICAgIGRpdlBhcmVudC5zdHlsZS5zZXRQcm9wZXJ0eShw
cm9wZXJ0eSwgdmFsdWUpOworICAgIHZhciBkaXZDaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgIGRpdlBhcmVudC5hcHBlbmRDaGlsZChkaXZDaGlsZCk7CisgICAgZGl2
Q2hpbGQuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksICdpbmhlcml0Jyk7CisKKyAgICB2YXIg
Y29tcHV0ZWRWYWx1ZSA9IGdldENvbXB1dGVkU3R5bGUoZGl2Q2hpbGQpLmdldFByb3BlcnR5VmFs
dWUocHJvcGVydHkpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2UGFyZW50KTsK
KyAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZTsKK30KKworZnVuY3Rpb24gdGVzdENvbXB1dGVkKHBy
b3BlcnR5LCB2YWx1ZSwgZXhwZWN0ZWQpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Nv
bXB1dGVkU3R5bGUoIicgKyBwcm9wZXJ0eSArICciLCAiJyArIHZhbHVlICsgJyIpJywgZXhwZWN0
ZWQpOworfQorCisvLyBDaGVjayBpbWFnZSB2YWx1ZXMgaW4gY29tYmluYXRpb24gd2l0aCBtYXNr
LXR5cGUuCit0ZXN0Q29tcHV0ZWQoIi13ZWJraXQtZmlsdGVyIiwgImJsdXIoMnB4KSIsICJibHVy
KDJweCkiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175484</attachid>
            <date>2012-11-21 10:58:13 -0800</date>
            <delta_ts>2012-11-21 11:14:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102844-20121121105600.patch</filename>
            <type>text/plain</type>
            <size>8017</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU2MDE4NjliNzcwODNk
MTdiYmFhMmJiODVhYzBiMWIzMGI2NjJjMS4uNjViMDQ3M2ZhZTIxZTM1Zjk3ZjViZjkyYjRmZDZh
MmU3OWUxMDBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTExLTIwICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgLXdlYmtpdC1m
aWx0ZXIgdG8gdXNlIFN0eWxlQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAyODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU3RhcnQgcmVmYWN0b3JpbmcgdGhlIGZpbHRlciBjb2RlIGFuZCBt
b3ZlIENTU1Byb3BlcnR5V2Via2l0RmlsdGVyIGhhbmRsaW5nIHRvIFN0eWxlQnVpbGRlci4KKwor
ICAgICAgICBUZXN0OiBjc3MzL2ZpbHRlcnMvZmlsdGVyLWluaGVyaXQuaHRtbAorCisgICAgICAg
ICogY3NzL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEFw
cGx5UHJvcGVydHlGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbHRl
cjo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZpbHRlcjo6YXBw
bHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5RmlsdGVyOjpjcmVhdGVI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKToK
KyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKwogMjAxMi0xMS0yMCAgTWlrZSBXZXN0ICA8bWt3
c3RAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSAnI2luY2x1ZGUgIlNjcmlwdENhbGxT
dGFja0ZhY3RvcnkuaCInIGluY2x1ZGUgd2hlbiB1bm5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlci5jcHAKaW5kZXggZWQ4ODY0MGE0OGFlMzc0OWJhNjYxYTU4NzMyNmUwZTBiM2Nl
NGQ5ZC4uOGMxNzliYzdhMDgzNDdjNWMxYTcyZGEzNWU2ZDNkNzc5NDM4ZTVmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDdXJz
b3JMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisj
aW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRl
ICJSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC0xNzE1LDYgKzE3MTYsMjMg
QEAgcHVibGljOgogICAgIH0KIH07CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitjbGFzcyBB
cHBseVByb3BlcnR5RmlsdGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KENTU1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICAg
ICAgaWYgKHN0eWxlUmVzb2x2ZXItPmNyZWF0ZUZpbHRlck9wZXJhdGlvbnModmFsdWUsIHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCksIG9wZXJhdGlv
bnMpKQorICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0RmlsdGVyKG9wZXJh
dGlvbnMpOworICAgIH0KKyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIo
KQorICAgIHsKKyAgICAgICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5
RGVmYXVsdEJhc2U8Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYsICZSZW5kZXJTdHlsZTo6ZmlsdGVy
LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgJlJlbmRlclN0eWxlOjpzZXRGaWx0ZXIsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxGaWx0ZXI+OjpjcmVhdGVI
YW5kbGVyKCk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0
RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUpOworICAg
IH0KK307CisjZW5kaWYKKwogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKIHRlbXBsYXRlIDxC
YXNpY1NoYXBlKiAoUmVuZGVyU3R5bGU6OipnZXR0ZXJGdW5jdGlvbikoKSBjb25zdCwgdm9pZCAo
UmVuZGVyU3R5bGU6OipzZXR0ZXJGdW5jdGlvbikoUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiksIEJh
c2ljU2hhcGUqICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgogY2xhc3MgQXBwbHlQcm9wZXJ0eUV4Y2x1
c2lvblNoYXBlIHsKQEAgLTE5ODAsNiArMTk5OCw5IEBAIFN0eWxlQnVpbGRlcjo6U3R5bGVCdWls
ZGVyKCkKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbGlnbkNvbnRl
bnQsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVBbGlnbkNvbnRlbnQsICZSZW5kZXJTdHlsZTo6YWxp
Z25Db250ZW50LCBFQWxpZ25Db250ZW50LCAmUmVuZGVyU3R5bGU6OnNldEFsaWduQ29udGVudCwg
RUFsaWduQ29udGVudCwgJlJlbmRlclN0eWxlOjppbml0aWFsQWxpZ25Db250ZW50Pjo6Y3JlYXRl
SGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbGln
bkl0ZW1zLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQWxpZ25JdGVtcywgJlJlbmRlclN0eWxlOjph
bGlnbkl0ZW1zLCBFQWxpZ25JdGVtcywgJlJlbmRlclN0eWxlOjpzZXRBbGlnbkl0ZW1zLCBFQWxp
Z25JdGVtcywgJlJlbmRlclN0eWxlOjppbml0aWFsQWxpZ25JdGVtcz46OmNyZWF0ZUhhbmRsZXIo
KSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QWxpZ25TZWxmLCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFQWxpZ25JdGVtcywgJlJlbmRlclN0eWxlOjphbGlnblNlbGYs
IEVBbGlnbkl0ZW1zLCAmUmVuZGVyU3R5bGU6OnNldEFsaWduU2VsZiwgRUFsaWduSXRlbXMsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbEFsaWduU2VsZj46OmNyZWF0ZUhhbmRsZXIoKSk7CisjaWYgRU5B
QkxFKENTU19GSUxURVJTKQorICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dEZpbHRlciwgQXBwbHlQcm9wZXJ0eUZpbHRlcjo6Y3JlYXRlSGFuZGxlcigpKTsKKyNlbmRpZgog
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEZsZXgsIEFwcGx5UHJvcGVy
dHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlXZWJraXRGbGV4R3JvdywgQ1NT
UHJvcGVydHlXZWJraXRGbGV4U2hyaW5rLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhCYXNpcz46OmNy
ZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
RmxleEJhc2lzLCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6ZmxleEJhc2lzLCAm
UmVuZGVyU3R5bGU6OnNldEZsZXhCYXNpcywgJlJlbmRlclN0eWxlOjppbml0aWFsRmxleEJhc2lz
LCBBdXRvRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUZs
ZXhEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6ZmxleERpcmVjdGlvbiwgRUZsZXhEaXJlY3Rpb24s
ICZSZW5kZXJTdHlsZTo6c2V0RmxleERpcmVjdGlvbiwgRUZsZXhEaXJlY3Rpb24sICZSZW5kZXJT
dHlsZTo6aW5pdGlhbEZsZXhEaXJlY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDA3NjcwNDFmYTE2Yjc2YjQ5ZTI2NjIxZWE5ZTcz
MTI1MWM0YmUxZGUuLjAyNmFmNWM1NGU1OTRhMjZiZDE2NDU2Y2M1ZDhjMzhjMDY4M2FkOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTM1NjEsMTYgKzM1NjEsNiBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFs
dWUqIHZhbHVlKQogICAgICAgICBzZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0RmlsdGVyOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKGZpbHRlciwgRmlsdGVyKTsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVy
YXRpb25zOwotICAgICAgICBpZiAoY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyh2YWx1ZSwgc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCBvcGVyYXRpb25zKSkKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldEZpbHRlcihvcGVyYXRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uczogewogICAgICAgICBWZWN0b3I8
TGVuZ3RoPiBsZW5ndGhzOwogICAgICAgICBpZiAoIWNyZWF0ZUdyaWRUcmFja0xpc3QodmFsdWUs
IGxlbmd0aHMsIHRoaXMpKQpAQCAtMzc3NSw2ICszNzY1LDkgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QWxpZ25Db250ZW50OgogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRBbGlnbkl0ZW1zOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbGlnblNlbGY6Cisj
aWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGaWx0ZXI6
CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleDoKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0RmxleEJhc2lzOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGly
ZWN0aW9uOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDQ1ODE5MDFhZGM0ZTU5NzlhMWUyNjVjY2M0NDc5MzM3ODRlYmU5ZjAu
LjFiYjA1NDE2NDBlNThhOTVjYzA0MjU2MDRjYTlkZWFlZjc3NzhiNTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0xMS0yMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlZmFjdG9yIC13ZWJraXQtZmlsdGVyIHRvIHVzZSBTdHlsZUJ1aWxkZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjg0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGZvciAn
aW5oZXJpdCcgdmFsdWUsIHNpbmNlIHdlIGRpZCBub3QgdGVzdCBpbmhlcml0YW5jZSBvbiAtd2Vi
a2l0LWZpbHRlciBiZWZvcmUuCisKKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvZmlsdGVyLWluaGVy
aXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvZmlsdGVyLWlu
aGVyaXQuaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMjAgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAg
PHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gR2FyZGVu
aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2ZpbHRlci1pbmhlcml0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9maWx0ZXItaW5oZXJpdC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI1ZTY4MzgzZDU3NzRjNzM0OGViYjkzMmEwMjljNmFh
NTQxYzljOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9maWx0
ZXItaW5oZXJpdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0IGJlaGF2aW9yIG9m
IC13ZWJraXQtZmlsdGVyIG9uIHZhbHVlICJpbmhlcml0Ii4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgY29tcHV0ZWRTdHlsZSgiLXdlYmtpdC1maWx0ZXIiLCAiYmx1cigy
cHgpIikgaXMgImJsdXIoMnB4KSIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0
ZXJzL2ZpbHRlci1pbmhlcml0Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvZmlsdGVy
LWluaGVyaXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzIxMzkxN2IzNWY1ZGMyMjQ4MmNjMWEzYWNjMDJj
N2QyMmRjNDVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2Zp
bHRlci1pbmhlcml0Lmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxzdHlsZT4KKyogeyBmb250LXNpemU6IDE2cHg7IH0KK2RpdiB7IGZvbnQtc2l6ZTogOHB4
OyB9Cis8L3N0eWxlPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0
IGJlaGF2aW9yIG9mIC13ZWJraXQtZmlsdGVyIG9uIHZhbHVlICJpbmhlcml0Ii4nKTsKKworZnVu
Y3Rpb24gY29tcHV0ZWRTdHlsZShwcm9wZXJ0eSwgdmFsdWUpIHsKKyAgICB2YXIgZGl2UGFyZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkaXZQYXJlbnQpOworICAgIGRpdlBhcmVudC5zdHlsZS5zZXRQcm9wZXJ0eShwcm9w
ZXJ0eSwgdmFsdWUpOworICAgIHZhciBkaXZDaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGRpdlBhcmVudC5hcHBlbmRDaGlsZChkaXZDaGlsZCk7CisgICAgZGl2Q2hp
bGQuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksICdpbmhlcml0Jyk7CisKKyAgICB2YXIgY29t
cHV0ZWRWYWx1ZSA9IGdldENvbXB1dGVkU3R5bGUoZGl2Q2hpbGQpLmdldFByb3BlcnR5VmFsdWUo
cHJvcGVydHkpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2UGFyZW50KTsKKyAg
ICByZXR1cm4gY29tcHV0ZWRWYWx1ZTsKK30KKworZnVuY3Rpb24gdGVzdENvbXB1dGVkKHByb3Bl
cnR5LCB2YWx1ZSwgZXhwZWN0ZWQpIHsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2NvbXB1
dGVkU3R5bGUoIicgKyBwcm9wZXJ0eSArICciLCAiJyArIHZhbHVlICsgJyIpJywgZXhwZWN0ZWQp
OworfQorCisvLyBDaGVjayBpbWFnZSB2YWx1ZXMgaW4gY29tYmluYXRpb24gd2l0aCBtYXNrLXR5
cGUuCit0ZXN0Q29tcHV0ZWQoIi13ZWJraXQtZmlsdGVyIiwgImJsdXIoMnB4KSIsICJibHVyKDJw
eCkiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="190943"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>