<?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>97281</bug_id>
          
          <creation_ts>2012-09-20 19:03:20 -0700</creation_ts>
          <short_desc>[Chromium] Use harfbuzz-ng by default on Linux</short_desc>
          <delta_ts>2012-11-05 11:21:45 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>97993</dependson>
          <blocked>72984</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>behdad</cc>
    
    <cc>dglazkov</cc>
    
    <cc>evan</cc>
    
    <cc>jshin</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725074</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-20 19:03:20 -0700</bug_when>
    <thetext>As of r129175, I think harfbuzz-ng and HarfBuzzShaper are ready to use by default.

- Layout tests results are slightly differ from old harfbuzz, but most of them are improved.
- Page cycler intl2 results are bit regressed, but we should not value the result too much.

Detailed explanations will follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725076</commentid>
    <comment_count>1</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-20 19:05:19 -0700</bug_when>
    <thetext>Here is the LayoutTests results:
https://docs.google.com/open?id=0B6NYyLPujP4TNmJjS0JmbWVKRlU

Summary of results (only complex text related tests):

- Looks improved.
fast/text/cg-vs-atsui.html
fast/text/complex-text-opacity.html
fast/text/atsui-negative-spacing-features.html
fast/text/atsui-spacing-features.html
fast/text/international/hindi-spacing.html
fast/text/international/text-spliced-font.html
fast/text/international/thai-line-breaks.html
platform/chromium-linux/fast/text/international/arabic-vertical-offset.html
platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html

- Looks fine.
fast/text/drawBidiText.html
fast/text/international/arabic-justify.html
fast/text/international/hebrew-vowels.html
Tests under svg/W3C-I18N/
svg/W3C-SVG-1.1-SE/text-intro-05-t.svg
svg/W3C-SVG-1.1/text-intro-05-t.svg
svg/text/bidi-text-query.svg
svg/text/text-intro-05-t.svg
transforms/2d/hindi-rotated.html

- Just need rebaselines.
fast/text/international/khmer-selection.html
platform/chromium-linux/svg/text/text-with-geometric-precision.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725081</commentid>
    <comment_count>2</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-20 19:07:09 -0700</bug_when>
    <thetext>Page cycler intl2 summary (20 iterations):

- hb-old

milliseconds: 61405
mean per set: 3070.25
mean per page: 102.34
timer lag: 11499.00
timer lag per page: 19.17

- hb-ng

milliseconds: 64953
mean per set: 3247.65
mean per page: 108.26
timer lag: 11933.00
timer lag per page: 19.89

hb-old a bit fast, but we shouldn&apos;t value it too much. Below is a quote from an email from behdad@ about the result:
&lt;quote&gt;
One thing concerns me regarding both these numbers, and LayoutTests.  Looks like all these tests are running against the WinXP set of fonts which are extremely incomplete in their OpenType features.  In particular, Times New Roman from XP doesn&apos;t have GDEF or GPOS.  So, we end up hitting a lot of fallback code that is rarely exercised these days.  So, IMO, the numbers are a bit misleading and irrelevant.  With modern fonts I expect new HB to perform better than old HB.
&lt;/quote&gt;

See also http://crbug.com/139920.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725084</commentid>
    <comment_count>3</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-20 19:11:30 -0700</bug_when>
    <thetext>Hi Tony,

I&apos;d like ask your opinion about using harfbuzz-ng by default on Linux. I put the current status and summary. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725638</commentid>
    <comment_count>4</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2012-09-21 11:01:48 -0700</bug_when>
    <thetext>Tony asked me what I think.

1) It&apos;d be nice to eliminate all this old code, so I&apos;m tempted to say we should do it, BUT

2) Why do we even have performance tests if we&apos;re not going to believe the results?  Behdad&apos;s comment means that either:
2a) The tests are using fonts that don&apos;t match what normal users have; or
2b) Normal users are going to get 5% slower.

It would be nice to understand which of those is actually true.  I think 2b is probably fine but we should flip the flag knowing that we&apos;re losing performance if that&apos;s what it takes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725641</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-21 11:08:35 -0700</bug_when>
    <thetext>Can you re-run the perf tests using a different font for both harfbuzz-old and harfbuzz-ng?  For example, you could replace Times New Roman as the default font with &quot;serif&quot; to get the fontconfig default (looks like DejaVu on my system).  You could also try using the ChromeOS fonts (Droid, I think).

We can find out if our users have Times New Roman installed or not using UMA. It would be nice to know how many users are using Times New Roman vs something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725643</commentid>
    <comment_count>6</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2012-09-21 11:11:14 -0700</bug_when>
    <thetext>To clarify: I&apos;m not even in a position of influence on this project anymore, so this is just my opinion.  And my opinion is that it&apos;s totally fine to lose 5% of performance if it means deleting a bunch of crufty code that doesn&apos;t quite work right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725920</commentid>
    <comment_count>7</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-21 16:02:40 -0700</bug_when>
    <thetext>Hi Evan, Tony,

Thank you so much for your inputs. I&apos;ll re-run page cycler tests using different font next Monday. I&apos;ll also check UMA to have ideas to answer Evan&apos;s question. (I&apos;m not sure how I can see UMA, but I guess I can ask someone to see it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725995</commentid>
    <comment_count>8</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2012-09-21 17:18:22 -0700</bug_when>
    <thetext>&gt; 2a) The tests are using fonts that don&apos;t match what normal users have

I responded to the quoted comment of Behdad in the email thread among him, bashi and me, but bashi only quoted Behdad&apos;s first comment. 

The answer is not that simple. It all depends on what portion of our users have Arial and Times New Roman (a very old version dating from 2000) as included in mscorettf package. If the majority of our users have those old Arial and Times New Roman, our perf bot test environment is realistic. Even if that&apos;s the case, Arial and Times New Roman as included in mscorettf covers only Arabic and Hebrew among complex scripts tested by intl2 page_cycler tests. So, Thai and Indic script pages should not be affected by what Behdad mentioned.  It means that the overall perf regression should come from Arabic/Hebrew portion alone and it&apos;s actually more worrisome because the perf regression will be more noticeable for Arabic/Hebrew pages. 

If that&apos;s the case, we do now have a better alternative (Arimo, Tinos) to Arial/Times New Roman (dating from 2000) and we can evangelize using those fonts in place of Arial/Times New Roman. 

If the majority of users do not have Arial / Times New Roman (from 2000), Arabic and Hebrew will be rendered with modern fonts and hb-ng&apos;s fallback code (which is triggered only when appropriate GSUB/GPOS tables are absent) will not be used.  In that case, our buildbot does not reflect the reality very well and we don&apos;t have to worry about this. 

&gt; Can you re-run the perf tests using a different font for both harfbuzz-old and harfbuzz-ng?  
&gt; For example, you could replace Times New Roman as the default font with &quot;serif&quot; to get the fontconfig &gt; default (looks like DejaVu on my system).  You could also try using the ChromeOS fonts (Droid, I think).

ChromeOS fonts corresponding to Arial and Times New Roman are Arimo and Tinos. Just adding a fontconfig substitution directive alone would not work because we require the exact name match. Fortunately for Arimo and Tinos, we already hardcode them to be equivalent to Arial and Times New Roman. So, what&apos;s necessary is to uninstall mscorettf package and to add a fontconfig line to make them (Arimo, Tinos) equivalent to Arial and Tinos. 
local.conf file in fontconfig ebuild for ChromeOS has entries necessary for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725997</commentid>
    <comment_count>9</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2012-09-21 17:21:11 -0700</bug_when>
    <thetext>&gt; And my opinion is that it&apos;s totally fine to lose 5% of performance if it means deleting a bunch of 
&gt; crufty code that doesn&apos;t quite work right.

I also agree to the above  despite what I wrote about Arabic/Hebrew.  The correctness is more important than ~5% perf gain for an unknown percentage of users (who have 12-yr old version of Arial and Times New roman).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726330</commentid>
    <comment_count>10</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-23 18:51:44 -0700</bug_when>
    <thetext>Jungshik,

I&apos;m sorry for not quoting your reply. I should mentioned it. And thank you for the detailed follow-ups.

I ran page cycler intl2 tests using alternative fonts(Arimo and Tinos):

- hb-old
milliseconds	67738
mean per set	3386.90
mean per page	112.90
timer lag	13158.00
timer lag per page	21.93

- hb-ng
milliseconds	72671
mean per set	3633.55
mean per page	121.12
timer lag	13308.00
timer lag per page	22.18

Looks like ToT is somewhat degraded (not sure, there might be another reason on my machine). Anyway, it seems that the performance loss is irrelevant to which fonts are used.

We should improve the performance, but I&apos;d like attach importance to correctness at this time. I and behdad will address the performance as an ongoing work.

If it makes sense, I&apos;ll create a patch to make hb-ng by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726841</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-24 10:57:02 -0700</bug_when>
    <thetext>A 7% regression seems like a lot.  I bet there&apos;s some low hanging fruit.  Can we profile/optimize first then revisit the question of enabling by default?

I think if we switch now, there will be no incentive to make things faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726978</commentid>
    <comment_count>12</comment_count>
    <who name="Behdad Esfahbod">behdad</who>
    <bug_when>2012-09-24 13:59:20 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; A 7% regression seems like a lot.  I bet there&apos;s some low hanging fruit.  Can we profile/optimize first then revisit the question of enabling by default?

Ok, that is indeed cause for concern.  In testing HarfBuzz alone I have not been able to reproduce this.  So, my gut feeling is that it&apos;s coming from the webkit integration layer.

That said, here&apos;s how we can move forward:

1) Confirm whether my results are valid.  Ie. whether we can reproduce the slowdown in HarfBuzz along (with old vs new backends) on someone else&apos;s testing (bashi?).

2) Updating to ICU 50 should give harfbuzz-ng some speedup.  Jungshik, any update on that?  Alternatively, since we are not relying on the normalization features of hb-ng in Chrome yet, maybe we can disable the normalizer for some speedup.

3) Good old profiling.  We may be doing something differently in the callbacks for example.  It&apos;s hard to know what&apos;s going on right now.

 
&gt; I think if we switch now, there will be no incentive to make things faster.

While that&apos;s generally true, I don&apos;t think that would be the case here.  We&apos;re removing code that has been unmaintained for many years, and replacing with something that my fulltime job to work on, and is also used in GNOME and Firefox.  It&apos;s a major part of my job for the next two years to improve ChromeOS&apos;s text rendering, and I know bashi also has similar plans.

BTW, there&apos;s also memory savings to be had by the switch.  Checkout: 

  http://goo.gl/woyty

Someone should confirm that we observe this in Chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726995</commentid>
    <comment_count>13</comment_count>
    <who name="Behdad Esfahbod">behdad</who>
    <bug_when>2012-09-24 14:19:39 -0700</bug_when>
    <thetext>As another example of why switching over sooner than later is a good idea: Myanmar seems to be broken with old HarfBuzz but works fine with new.  This website for example:

  http://mm.myanmars.net/

(Uses a webfont.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727526</commentid>
    <comment_count>14</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-25 05:12:49 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; A 7% regression seems like a lot.  I bet there&apos;s some low hanging fruit.  Can we profile/optimize first then revisit the question of enabling by default?
&gt; 
&gt; I think if we switch now, there will be no incentive to make things faster.

I&apos;m trying to profile with --single-process as http://www.chromium.org/developers/profiling-chromium-and-webkit suggests. It seems that fonts for some scripts (Thai, Devenagari, etc) aren&apos;t available with --single-process so I&apos;m looking for a better way to profile complex text path rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728980</commentid>
    <comment_count>15</comment_count>
    <who name="Behdad Esfahbod">behdad</who>
    <bug_when>2012-09-26 14:31:31 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #11)
&gt; &gt; A 7% regression seems like a lot.  I bet there&apos;s some low hanging fruit.  Can we profile/optimize first then revisit the question of enabling by default?
&gt; &gt; 
&gt; &gt; I think if we switch now, there will be no incentive to make things faster.
&gt; 
&gt; I&apos;m trying to profile with --single-process as http://www.chromium.org/developers/profiling-chromium-and-webkit suggests. It seems that fonts for some scripts (Thai, Devenagari, etc) aren&apos;t available with --single-process so I&apos;m looking for a better way to profile complex text path rendering.

Sounds weird.  Did you make any progress here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728981</commentid>
    <comment_count>16</comment_count>
    <who name="Behdad Esfahbod">behdad</who>
    <bug_when>2012-09-26 14:31:58 -0700</bug_when>
    <thetext>Tony, Evan, given the discussion, can we get an updated opinion from you two?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728987</commentid>
    <comment_count>17</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-26 14:36:53 -0700</bug_when>
    <thetext>My opinion is still the same. I would like to see some profiling/optimization before switching.  We don&apos;t have to get back to the same speed, you just need to show me that you&apos;re interested in making things faster (so far, it seems very hand-wavy).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728991</commentid>
    <comment_count>18</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2012-09-26 14:39:28 -0700</bug_when>
    <thetext>Unfortunately --single-process turns off a lot of code, including some of the code related to complex text.  (As I recall it&apos;s because we have to run a separate subprocess to make fontconfig calls as it has global data structures and the Chrome UI thread also can make fontconfig calls.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729003</commentid>
    <comment_count>19</comment_count>
    <who name="Behdad Esfahbod">behdad</who>
    <bug_when>2012-09-26 14:56:15 -0700</bug_when>
    <thetext>bashi, since getting profiling seems to be challenging, can you make sure we&apos;re not doing excessive work?  Ie. count the number of face and font creations as well as shape calls for old / new harfbuzz?  I&apos;m suspecting that we&apos;re doing something wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729006</commentid>
    <comment_count>20</comment_count>
    <who name="Behdad Esfahbod">behdad</who>
    <bug_when>2012-09-26 15:01:43 -0700</bug_when>
    <thetext>FWIW, I did some fresh measurements with hb-shape with WinXP and Win7 Times New Roman and long Arabic text, and I see solid improvements in new HB.  Here&apos;s my test command:

$ time ./hb-shape ~/fonts/WinXP/times.ttf --text-file test-file --output-file /dev/null --no-glyph-names --shaper {ot|old}

(choose one shaper)

I performed two tests, using text files having:

  * 10,000 lines of the same 24k-byte Persian text,

  * 1000,000 lines of the same 10-byte Persian text,

In both cases, for WinXP times.ttf I see new HB faster than old by about 20%, and with Win7 times.ttf I see it 35% faster.  Given the Arabic numbers we are observing in page cycler, I&apos;m sure we&apos;re doing something wrong in the webkit integration patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729010</commentid>
    <comment_count>21</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-09-26 15:03:41 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; 
&gt; In both cases, for WinXP times.ttf I see new HB faster than old by about 20%, and with Win7 times.ttf I see it 35% faster.  Given the Arabic numbers we are observing in page cycler, I&apos;m sure we&apos;re doing something wrong in the webkit integration patch.

Great. We should fix this before turning on harfbuzz-ng.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729023</commentid>
    <comment_count>22</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-26 15:37:26 -0700</bug_when>
    <thetext>HarfBuzzShaper(hb-ng) do more work than ComplexTextController(hb-old) for correct shaping (e.g. positioning and dividing text run). I doubt we are doing something wrong. At least I&apos;m sure we don&apos;t create extra hb_font and hb_face objects. Anyway I agree with we need to fix performance issue. I&apos;m swampwed other tasks now, but I will try make time for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729068</commentid>
    <comment_count>23</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2012-09-26 16:42:30 -0700</bug_when>
    <thetext>(In reply to comment #12)

&gt; 2) Updating to ICU 50 should give harfbuzz-ng some speedup.  Jungshik, any update on that?  

ICU 50 hasn&apos;t yet been released :-) It&apos;s supposed to be released on Oct 31st. 

&gt; Alternatively, since we are not relying on the normalization features of hb-ng in Chrome yet, maybe we can disable the normalizer for some speedup.

Have we tried that to see if it helps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729091</commentid>
    <comment_count>24</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-26 17:20:05 -0700</bug_when>
    <thetext>(In reply to comment #23)

&gt; &gt; Alternatively, since we are not relying on the normalization features of hb-ng in Chrome yet, maybe we can disable the normalizer for some speedup.
&gt; 
&gt; Have we tried that to see if it helps?

I haven&apos;t. I&apos;ll try. BTW, normalization on HarfBuzzShaper and ComplexTextController is a bit different.
hb-old: http://code.google.com/searchframe#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/platform/graphics/harfbuzz/HarfBuzzShaperBase.cpp&amp;exact_package=chromium&amp;type=cs&amp;l=55

hb-ng: http://code.google.com/searchframe#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzShaper.cpp&amp;type=cs&amp;l=162</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729150</commentid>
    <comment_count>25</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-09-26 19:28:39 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; Have we tried that to see if it helps?

Not calling normalizedCharacters() gains 2%, but &apos;\t&apos;, &apos;\n&apos;, and U+00a0 are displayed with square boxes. These characters should be replaced with spaces in WebKit as normalizedCharacters() did. We can&apos;t remove this conversion and get the gain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729826</commentid>
    <comment_count>26</comment_count>
    <who name="Behdad Esfahbod">behdad</who>
    <bug_when>2012-09-27 13:45:01 -0700</bug_when>
    <thetext>Just to rule out some possibility: what do you get if you use hb_unicode_funcs_get_empty() instead of hb_icu_get_unicode_funcs()?  Results should most be wrong, but I want to see the perf characteristics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738519</commentid>
    <comment_count>27</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-09 21:44:12 -0700</bug_when>
    <thetext>The current performance of page cycler intl2 tests (measured by using WebKit r130840).

- hb-old

iterations	5
pages	30
milliseconds	19620
mean per set	3924.00
mean per page	130.80
timer lag	3278.00
timer lag per page	21.85

iterations	20
pages	30
milliseconds	68783
mean per set	3439.15
mean per page	114.64
timer lag	12589.00
timer lag per page	20.98

- hb-ng

iterations	5
pages	30
milliseconds	20097
mean per set	4019.40
mean per page	133.98
timer lag	3134.00
timer lag per page	20.89

iterations	20
pages	30
milliseconds	70054
mean per set	3502.70
mean per page	116.76
timer lag	11702.00
timer lag per page	19.50

hb-ng is slightly slow. Tony, do you think we should make further improvement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738545</commentid>
    <comment_count>28</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-09 22:08:43 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Just to rule out some possibility: what do you get if you use hb_unicode_funcs_get_empty() instead of hb_icu_get_unicode_funcs()?  Results should most be wrong, but I want to see the perf characteristics.

Here is the result.

iterations	5
pages	30
milliseconds	19376
mean per set	3875.20
mean per page	129.17
timer lag	3083.00
timer lag per page	20.55


iterations	20
pages	30
milliseconds	65751
mean per set	3287.55
mean per page	109.59
timer lag	12176.00
timer lag per page	20.29

It actually became faster, but it also implied that the bottlenecks are in my WebKit side..

BTW, here are some notes about performance regression.
- hb-old implementation does NFC normalization in advance. This contributes to performance. But it causes wrong selection behavior because the character index will be mismatched between the original TextRun and normalized character sequence. For example, you can see an wrong behavior on fast/text/atsui-kerning-and-ligatures.html (Please try to select ameÌt from left to right) hb-ng implementation fixed this issue, but we needed to add further checks whether the font to be used actually has the glyphs for combining characters.
- hb-old implementation directly calls Skia APIs. On the other hand, hb-ng implementation fills glyphs and positions into GlyphBuffer and calls port-independent function to draw glyphs. This is a design choice to make hb-ng implementation be Skia-independent. However, this might affect the performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739057</commentid>
    <comment_count>29</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-10 10:12:16 -0700</bug_when>
    <thetext>This looks much better!  We&apos;re down to a 2-2.5% regression.  Yes, let&apos;s switch.  Thank you for profiling and finding some low hanging fruit first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740360</commentid>
    <comment_count>30</comment_count>
      <attachid>168301</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-11 16:04:33 -0700</bug_when>
    <thetext>Created attachment 168301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740367</commentid>
    <comment_count>31</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-11 16:08:26 -0700</bug_when>
    <thetext>Hi Tony,

Thank you so much for helping this transition.

I&apos;m preparing a patch to switch. Should I also update test expectations in this patch? Or just adding suppressions in TestExpectations and then updating expectations by using garden-o-matic is ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740404</commentid>
    <comment_count>32</comment_count>
      <attachid>168313</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-11 16:35:23 -0700</bug_when>
    <thetext>Created attachment 168313
Add temporary expectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740439</commentid>
    <comment_count>33</comment_count>
      <attachid>168313</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-11 16:54:55 -0700</bug_when>
    <thetext>Comment on attachment 168313
Add temporary expectations

Suppressing in TestExpectations and rebaselining using garden-o-matic is fine.  Please watch the perf bots and be ready to update the expectations file if they go red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740454</commentid>
    <comment_count>34</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-11 17:12:59 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 168313 [details])
&gt; Suppressing in TestExpectations and rebaselining using garden-o-matic is fine.  Please watch the perf bots and be ready to update the expectations file if they go red.

I see.  I&apos;ll keep watch on perf bots after landing. I&apos;ll cq+ later so that I can work together with non-PST gardener.

I guess perf bots may go red. If the regression rate is within a expected range(~2%), I&apos;ll ask perf sheriffs whether we can update the perf expectation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740480</commentid>
    <comment_count>35</comment_count>
      <attachid>168313</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-11 17:55:23 -0700</bug_when>
    <thetext>Comment on attachment 168313
Add temporary expectations

Attachment 168313 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14262313</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740570</commentid>
    <comment_count>36</comment_count>
      <attachid>168313</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-11 20:36:30 -0700</bug_when>
    <thetext>Comment on attachment 168313
Add temporary expectations

Clearing flags on attachment: 168313

Committed r131134: &lt;http://trac.webkit.org/changeset/131134&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740571</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-11 20:36:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168301</attachid>
            <date>2012-10-11 16:04:33 -0700</date>
            <delta_ts>2012-10-11 16:35:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97281-20121012080330.patch</filename>
            <type>text/plain</type>
            <size>5265</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJmM2EyZDA5MTUyMTBl
ZTRiMjY3MGUyOTNlZmRkY2NkMWM4NzZlYy4uMzM4YjRkYmE1NGQzMWU5NjRiYzJlY2MwNjNjYWIx
YzIzMDU3NTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTExICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IFVzZSBoYXJmYnV6ei1uZyBieSBkZWZhdWx0IG9uIExpbnV4CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzI4MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBvbGQgaGFyZmJ1enogdG8gaGFyZmJ1
enotbmcgb24gY2hyb21pdW0gbGludXggcG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIEV4
aXN0aW5nIHRlc3RzIHNob3VsZCBjb3ZlciB0aGlzIHN3aXRjaC4KKyAgICAgICAgVGVzdCBleHBl
Y3RhdGlvbnMgd2lsbCBiZSB1cGRhdGVkLgorCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXA6CisKIDIwMTItMTAtMTEgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBJbmRleGVkREI6IElETCB0eXBlcyBkZWZpbmVkIGluIHNwZWMgc2hvdWxkIGJl
IHZpc2libGUgdG8gc2NyaXB0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4MDNmMDIz
YjcwOWY4NWFlMzA1MTk0MGFlNGZjYjRjY2UzYWU1NWUxLi5jZGI4N2YzYWY4NWY4ODA3ZGEyOGVh
M2ExMjg1YWE2ZWI0ODEyMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEyLTEwLTExICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBoYXJmYnV6ei1uZyBieSBkZWZhdWx0IG9uIExp
bnV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzI4
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmVh
dHVyZXMuZ3lwaTogRW5hYmxlIFdURl9VU0VfSEFSRkJVWlpfTkcgd2hlbiB1c2VfeDExID09IDEu
CisKIDIwMTItMTAtMTEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbQ2hyb21pdW1dIEltcHJvdmUgdGhlIGNvbW1lbnQgZGVzY3JpYmluZyBtYWluV29ybGRTY3Jp
cHRDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGFmYmIz
MWVjM2E3YjhlY2JmNzNkNDU0NWYzYzRkZTQxODQ1ZGFkMWYuLmMyYTgwNzg5NTJmNzcwMDEyODEw
ODU3YTZkM2MzYTIwNmRlYTU2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCkBAIC00OCw4ICs0OCw2IEBACiAKICAgICAnZW5hYmxlX3dleGl0X3RpbWVfZGVzdHJ1Y3Rv
cnMnOiAxLAogCi0gICAgJ3VzZV9oYXJmYnV6el9uZyUnOiAwLAotCiAgICAgJ3dlYmNvcmVfaW5j
bHVkZV9kaXJzJzogWwogICAgICAgJy4uLycsCiAgICAgICAnLi4vLi4nLApAQCAtMjQ4LDcgKzI0
Niw3IEBACiAgICAgICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6JywKICAgICAg
ICAgXSwKICAgICAgIH1dLAotICAgICAgWyd1c2VfeDExPT0xIGFuZCB1c2VfaGFyZmJ1enpfbmc9
PTEnLCB7CisgICAgICBbJ3VzZV94MTE9PTEnLCB7CiAgICAgICAgICd3ZWJjb3JlX2luY2x1ZGVf
ZGlycyc6IFsKICAgICAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcnLAog
ICAgICAgICBdLApAQCAtMTY2MywxMSArMTY2MSwxMiBAQAogICAgICAgICBbJ3VzZV94MTEgPT0g
MScsIHsKICAgICAgICAgICAnc291cmNlcy8nOiBbCiAgICAgICAgICAgICAjIENoZXJyeS1waWNr
IGZpbGVzIGV4Y2x1ZGVkIGJ5IHRoZSBicm9hZGVyIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYWJvdmUu
Ci0gICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29t
cGxleFRleHRDb250cm9sbGVySGFyZkJ1enpcXC5jcHAkJ10sCiAgICAgICAgICAgICBbJ2luY2x1
ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRm9udEhhcmZCdXp6XFwuY3BwJCddLAog
ICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0ZvbnRQ
bGF0Zm9ybURhdGFIYXJmQnV6elxcLmNwcCQnXSwKLSAgICAgICAgICAgIFsnaW5jbHVkZScsICdw
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNraWFcXC5jcHAkJ10sCiAgICAgICAg
ICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFw
ZXJCYXNlXFwuKGNwcHxoKSQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9n
cmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZVxcLihjcHB8aCkkJ10sCisgICAgICAg
ICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpO
R0ZhY2VTa2lhXFwuY3BwJCddLAorICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyXFwuKGNwcHxoKSQnXSwKICAgICAgICAg
ICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
XFwuaCQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YVxcLihjcHB8aCkkJ10sCiAgICAgICAgICAgICBbJ2lu
Y2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9TaW1wbGVGb250RGF0YVNraWFcXC5jcHAk
J10sCkBAIC0xNjc4LDE1ICsxNjc3LDYgQEAKICAgICAgICAgICAgIFsnZXhjbHVkZScsICdIYXJm
YnV6elteL10rXFwuKGNwcHxoKSQnXSwKICAgICAgICAgICBdLAogICAgICAgICB9XSwKLSAgICAg
ICAgWyd1c2VfeDExPT0xIGFuZCB1c2VfaGFyZmJ1enpfbmc9PTEnLCB7Ci0gICAgICAgICAgJ3Nv
dXJjZXMvJzogWwotICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2hh
cmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6XFwuY3BwJCddLAotICAgICAgICAg
ICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2tpYVxc
LmNwcCQnXSwKLSAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9uZy9IYXJmQnV6ek5HRmFjZVxcLihjcHB8aCkkJ10sCi0gICAgICAgICAgICBbJ2luY2x1
ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VTa2lhXFwu
Y3BwJCddLAotICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L25nL0hhcmZCdXp6U2hhcGVyXFwuKGNwcHxoKSQnXSwKLSAgICAgICAgICBdLAotICAgICAg
ICB9XSwKICAgICAgICAgWyd0b29sa2l0X3VzZXNfZ3RrID09IDEnLCB7CiAgICAgICAgICAgJ3Nv
dXJjZXMvJzogWwogICAgICAgICAgICAgIyBDaGVycnktcGljayBmaWxlcyBleGNsdWRlZCBieSB0
aGUgYnJvYWRlciByZWd1bGFyIGV4cHJlc3Npb25zIGFib3ZlLgpAQCAtMTY5Nyw3ICsxNjg3LDEy
IEBACiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnR3RrXFwuY3BwJCddLAogICAgICAgICAgIF0s
CiAgICAgICAgIH1dLAotICAgICAgICBbJ3VzZV94MTE9PTEgb3IgT1M9PSJhbmRyb2lkIicsIHsK
KyAgICAgICAgWyd1c2VfeDExPT0xJywgeworICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9oYXJmYnV6ei1uZy9o
YXJmYnV6ei5neXA6aGFyZmJ1enotbmcnLAorICAgICAgICAgIF0sCisgICAgICAgIH1dLAorICAg
ICAgICBbJ09TPT0iYW5kcm9pZCInLCB7CiAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKICAg
ICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2hhcmZidXp6L2hhcmZi
dXp6Lmd5cDpoYXJmYnV6eicsCiAgICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVy
ZXMuZ3lwaQppbmRleCA0ZWZlYWJjMzBlYzIxODUwYjhmYWQ5YjZmNGY3ZDYxMTA2YWRmMzg4Li5j
YjFlNjM3OTlkNWNiYzAwNjcyYTA3MWM0MTE1MDkyODUyZDE2MWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCkBAIC0xNDAsNyArMTQwLDYgQEAKICAgICAgICdlbmFibGVfdG91
Y2hfZXZlbnRzJSc6IDEsCiAgICAgICAnZW5hYmxlX3RvdWNoX2ljb25fbG9hZGluZyUnIDogMCwK
ICAgICAgICdlbmFibGVfbXV0YXRpb25fb2JzZXJ2ZXJzJSc6IDEsCi0gICAgICAndXNlX2hhcmZi
dXp6X25nJSc6IDAsCiAgICAgfSwKICAgICAndXNlX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nJSc6
ICc8KHVzZV9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyknLAogICAgICdlbmFibGVfc2tpYV90ZXh0
JSc6ICc8KGVuYWJsZV9za2lhX3RleHQpJywKQEAgLTIyMyw3ICsyMjIsNyBAQAogICAgICAgICAg
ICdXVEZfVVNFX1NLSUFfT05fTUFDX0NIUk9NSVVNPTEnLAogICAgICAgICBdLAogICAgICAgfV0s
Ci0gICAgICBbJ3VzZV9oYXJmYnV6el9uZz09MScsIHsKKyAgICAgIFsndXNlX3gxMT09MScsIHsK
ICAgICAgICAgJ2ZlYXR1cmVfZGVmaW5lcyc6IFsKICAgICAgICAgICAnV1RGX1VTRV9IQVJGQlVa
Wl9ORz0xJywKICAgICAgICAgXSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168313</attachid>
            <date>2012-10-11 16:35:23 -0700</date>
            <delta_ts>2012-10-11 20:36:30 -0700</delta_ts>
            <desc>Add temporary expectations</desc>
            <filename>bug-97281-20121012083419.patch</filename>
            <type>text/plain</type>
            <size>11992</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJmM2EyZDA5MTUyMTBl
ZTRiMjY3MGUyOTNlZmRkY2NkMWM4NzZlYy4uMzM4YjRkYmE1NGQzMWU5NjRiYzJlY2MwNjNjYWIx
YzIzMDU3NTk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTExICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IFVzZSBoYXJmYnV6ei1uZyBieSBkZWZhdWx0IG9uIExpbnV4CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzI4MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBvbGQgaGFyZmJ1enogdG8gaGFyZmJ1
enotbmcgb24gY2hyb21pdW0gbGludXggcG9ydC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIEV4
aXN0aW5nIHRlc3RzIHNob3VsZCBjb3ZlciB0aGlzIHN3aXRjaC4KKyAgICAgICAgVGVzdCBleHBl
Y3RhdGlvbnMgd2lsbCBiZSB1cGRhdGVkLgorCisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXA6CisKIDIwMTItMTAtMTEgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBJbmRleGVkREI6IElETCB0eXBlcyBkZWZpbmVkIGluIHNwZWMgc2hvdWxkIGJl
IHZpc2libGUgdG8gc2NyaXB0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4MDNmMDIz
YjcwOWY4NWFlMzA1MTk0MGFlNGZjYjRjY2UzYWU1NWUxLi5jZGI4N2YzYWY4NWY4ODA3ZGEyOGVh
M2ExMjg1YWE2ZWI0ODEyMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEyLTEwLTExICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW1dIFVzZSBoYXJmYnV6ei1uZyBieSBkZWZhdWx0IG9uIExp
bnV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzI4
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmVh
dHVyZXMuZ3lwaTogRW5hYmxlIFdURl9VU0VfSEFSRkJVWlpfTkcgd2hlbiB1c2VfeDExID09IDEu
CisKIDIwMTItMTAtMTEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbQ2hyb21pdW1dIEltcHJvdmUgdGhlIGNvbW1lbnQgZGVzY3JpYmluZyBtYWluV29ybGRTY3Jp
cHRDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGFmYmIz
MWVjM2E3YjhlY2JmNzNkNDU0NWYzYzRkZTQxODQ1ZGFkMWYuLmMyYTgwNzg5NTJmNzcwMDEyODEw
ODU3YTZkM2MzYTIwNmRlYTU2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCkBAIC00OCw4ICs0OCw2IEBACiAKICAgICAnZW5hYmxlX3dleGl0X3RpbWVfZGVzdHJ1Y3Rv
cnMnOiAxLAogCi0gICAgJ3VzZV9oYXJmYnV6el9uZyUnOiAwLAotCiAgICAgJ3dlYmNvcmVfaW5j
bHVkZV9kaXJzJzogWwogICAgICAgJy4uLycsCiAgICAgICAnLi4vLi4nLApAQCAtMjQ4LDcgKzI0
Niw3IEBACiAgICAgICAgICAgJy4uL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6JywKICAgICAg
ICAgXSwKICAgICAgIH1dLAotICAgICAgWyd1c2VfeDExPT0xIGFuZCB1c2VfaGFyZmJ1enpfbmc9
PTEnLCB7CisgICAgICBbJ3VzZV94MTE9PTEnLCB7CiAgICAgICAgICd3ZWJjb3JlX2luY2x1ZGVf
ZGlycyc6IFsKICAgICAgICAgICAnLi4vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcnLAog
ICAgICAgICBdLApAQCAtMTY2MywxMSArMTY2MSwxMiBAQAogICAgICAgICBbJ3VzZV94MTEgPT0g
MScsIHsKICAgICAgICAgICAnc291cmNlcy8nOiBbCiAgICAgICAgICAgICAjIENoZXJyeS1waWNr
IGZpbGVzIGV4Y2x1ZGVkIGJ5IHRoZSBicm9hZGVyIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYWJvdmUu
Ci0gICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29t
cGxleFRleHRDb250cm9sbGVySGFyZkJ1enpcXC5jcHAkJ10sCiAgICAgICAgICAgICBbJ2luY2x1
ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRm9udEhhcmZCdXp6XFwuY3BwJCddLAog
ICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0ZvbnRQ
bGF0Zm9ybURhdGFIYXJmQnV6elxcLmNwcCQnXSwKLSAgICAgICAgICAgIFsnaW5jbHVkZScsICdw
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNraWFcXC5jcHAkJ10sCiAgICAgICAg
ICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFw
ZXJCYXNlXFwuKGNwcHxoKSQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9n
cmFwaGljcy9oYXJmYnV6ei9uZy9IYXJmQnV6ek5HRmFjZVxcLihjcHB8aCkkJ10sCisgICAgICAg
ICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpO
R0ZhY2VTa2lhXFwuY3BwJCddLAorICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L25nL0hhcmZCdXp6U2hhcGVyXFwuKGNwcHxoKSQnXSwKICAgICAgICAg
ICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
XFwuaCQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YVxcLihjcHB8aCkkJ10sCiAgICAgICAgICAgICBbJ2lu
Y2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9TaW1wbGVGb250RGF0YVNraWFcXC5jcHAk
J10sCkBAIC0xNjc4LDE1ICsxNjc3LDYgQEAKICAgICAgICAgICAgIFsnZXhjbHVkZScsICdIYXJm
YnV6elteL10rXFwuKGNwcHxoKSQnXSwKICAgICAgICAgICBdLAogICAgICAgICB9XSwKLSAgICAg
ICAgWyd1c2VfeDExPT0xIGFuZCB1c2VfaGFyZmJ1enpfbmc9PTEnLCB7Ci0gICAgICAgICAgJ3Nv
dXJjZXMvJzogWwotICAgICAgICAgICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2hh
cmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6XFwuY3BwJCddLAotICAgICAgICAg
ICAgWydleGNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2tpYVxc
LmNwcCQnXSwKLSAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9uZy9IYXJmQnV6ek5HRmFjZVxcLihjcHB8aCkkJ10sCi0gICAgICAgICAgICBbJ2luY2x1
ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmcvSGFyZkJ1enpOR0ZhY2VTa2lhXFwu
Y3BwJCddLAotICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L25nL0hhcmZCdXp6U2hhcGVyXFwuKGNwcHxoKSQnXSwKLSAgICAgICAgICBdLAotICAgICAg
ICB9XSwKICAgICAgICAgWyd0b29sa2l0X3VzZXNfZ3RrID09IDEnLCB7CiAgICAgICAgICAgJ3Nv
dXJjZXMvJzogWwogICAgICAgICAgICAgIyBDaGVycnktcGljayBmaWxlcyBleGNsdWRlZCBieSB0
aGUgYnJvYWRlciByZWd1bGFyIGV4cHJlc3Npb25zIGFib3ZlLgpAQCAtMTY5Nyw3ICsxNjg3LDEy
IEBACiAgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnR3RrXFwuY3BwJCddLAogICAgICAgICAgIF0s
CiAgICAgICAgIH1dLAotICAgICAgICBbJ3VzZV94MTE9PTEgb3IgT1M9PSJhbmRyb2lkIicsIHsK
KyAgICAgICAgWyd1c2VfeDExPT0xJywgeworICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9oYXJmYnV6ei1uZy9o
YXJmYnV6ei5neXA6aGFyZmJ1enotbmcnLAorICAgICAgICAgIF0sCisgICAgICAgIH1dLAorICAg
ICAgICBbJ09TPT0iYW5kcm9pZCInLCB7CiAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsKICAg
ICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2hhcmZidXp6L2hhcmZi
dXp6Lmd5cDpoYXJmYnV6eicsCiAgICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVy
ZXMuZ3lwaQppbmRleCA0ZWZlYWJjMzBlYzIxODUwYjhmYWQ5YjZmNGY3ZDYxMTA2YWRmMzg4Li5j
YjFlNjM3OTlkNWNiYzAwNjcyYTA3MWM0MTE1MDkyODUyZDE2MWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCkBAIC0xNDAsNyArMTQwLDYgQEAKICAgICAgICdlbmFibGVfdG91
Y2hfZXZlbnRzJSc6IDEsCiAgICAgICAnZW5hYmxlX3RvdWNoX2ljb25fbG9hZGluZyUnIDogMCwK
ICAgICAgICdlbmFibGVfbXV0YXRpb25fb2JzZXJ2ZXJzJSc6IDEsCi0gICAgICAndXNlX2hhcmZi
dXp6X25nJSc6IDAsCiAgICAgfSwKICAgICAndXNlX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nJSc6
ICc8KHVzZV9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyknLAogICAgICdlbmFibGVfc2tpYV90ZXh0
JSc6ICc8KGVuYWJsZV9za2lhX3RleHQpJywKQEAgLTIyMyw3ICsyMjIsNyBAQAogICAgICAgICAg
ICdXVEZfVVNFX1NLSUFfT05fTUFDX0NIUk9NSVVNPTEnLAogICAgICAgICBdLAogICAgICAgfV0s
Ci0gICAgICBbJ3VzZV9oYXJmYnV6el9uZz09MScsIHsKKyAgICAgIFsndXNlX3gxMT09MScsIHsK
ICAgICAgICAgJ2ZlYXR1cmVfZGVmaW5lcyc6IFsKICAgICAgICAgICAnV1RGX1VTRV9IQVJGQlVa
Wl9ORz0xJywKICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNDgyOTA1Yjg4NmIyMmJmNzQ0Mzk4ODUwNjdi
YWRiNjI2MGFkZjg5Li5kMGNiMjNmMDM2NzEzNGZiNDA0ODY4Mzk4Y2ZhNzAwZGVkODUxMDgxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTAtMTEgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFz
aGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gVXNlIGhhcmZidXp6LW5nIGJ5
IGRlZmF1bHQgb24gTGludXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk3MjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOiBBZGRlZCB0ZW1w
b3JhcnkgZXhwZWN0YXRpb25zLgorCiAyMDEyLTEwLTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgT25lIG1vcmUgYmFzZWxpbmUgdHdlYWsgYWZ0ZXIgdjgtaTE4
biByb2xsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggMjUxN2JiMmZhYTMxZTUwZTVmMGVhZjM5ODkxMDZkNDkwYjhmZWY3Mi4uNGYxYWIy
Njc2ZDkwNDBmMGQ5NDIyYzQyM2JiM2U3OGMxNzEwNTkxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zOTEwLDggKzM5MTAsNjEgQEAg
d2Via2l0Lm9yZy9iLzk2OTYyIGZhc3QvanMvY3Jvc3MtZnJhbWUtcmVhbGx5LWJhZC10aW1lLXdp
dGgtX19wcm90b19fLmh0bWwgWyBGYWkKIAogd2Via2l0Lm9yZy9iLzk3MTc5IGh0dHAvdGVzdHMv
Y3NzL2xpbmstY3NzLWRpc2FibGVkLXZhbHVlLXdpdGgtc2xvdy1sb2FkaW5nLXNoZWV0Lmh0bWwg
WyBGYWlsdXJlIFBhc3MgXQogCi0jIFRoZSB0ZXN0IHNob3VsZCBwYXNzIGFmdGVyIGhhcmZidXp6
IHRyYW5zaXRpb24uCi13ZWJraXQub3JnL2IvOTcyOTYgWyBMaW51eCBXaW4gXSBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9oZWJyZXctc2VsZWN0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi85NzI5NiBbIFdpbiBdIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2hlYnJl
dy1zZWxlY3Rpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorCisjIFRlbXBvcmFyeSBleHBl
Y3RhdGlvbnMgZHVyaW5nIGhhcmZidXp6IHRyYW5zaXRpb24uIFdpbGwgYmUgcmVtb3ZlZCBhZnRl
ciB0aGUgdHJhbnNpdGlvbiBpcyBjb21wbGV0ZWQuCit3ZWJraXQub3JnL2IvOTcyODEgWyBMaW51
eCBdIGNzczMvZm9udC1mZWF0dXJlLXNldHRpbmdzLXJlbmRlcmluZy5odG1sIFsgRmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvOTcyODEgWyBMaW51eCBdIGZhc3QvdGV4dC9hdHN1aS1uZWdhdGl2ZS1z
cGFjaW5nLWZlYXR1cmVzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85
NzI4MSBbIExpbnV4IF0gZmFzdC90ZXh0L2F0c3VpLXNwYWNpbmctZmVhdHVyZXMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBmYXN0L3RleHQv
Y2ctdnMtYXRzdWkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3Mjgx
IFsgTGludXggXSBmYXN0L3RleHQvY29tcGxleC10ZXh0LW9wYWNpdHkuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBmYXN0L3RleHQvZHJhd0Jp
ZGlUZXh0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85NzI4MSBbIExp
bnV4IF0gZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvYXJhYmljLWp1c3RpZnkuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBmYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9oZWJyZXctdm93ZWxzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi85NzI4MSBbIExpbnV4IF0gZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvaGluZGktc3Bh
Y2luZy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTcyODEgWyBMaW51
eCBdIGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RleHQtc3BsaWNlZC1mb250Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85NzI4MSBbIExpbnV4IF0gZmFzdC90ZXh0L2lu
dGVybmF0aW9uYWwvdGhhaS1saW5lLWJyZWFrcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvOTcyODEgWyBMaW51eCBdIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2FyYWJpYy12ZXJ0aWNhbC1vZmZzZXQuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBwbGF0Zm9ybS9jaHJvbWl1
bS1saW51eC9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9jb21wbGV4LWpvaW5pbmctdXNpbmctZ3Bv
cy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTcyODEgWyBMaW51eCBd
IHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L3N2Zy90ZXh0L3RleHQtd2l0aC1nZW9tZXRyaWMtcHJl
Y2lzaW9uLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGlu
dXggXSBzdmcvVzNDLUkxOE4vZy1kaXJMVFItdWJPdmVycmlkZS5zdmcgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThOL2ctZGlyUlRM
LXViT3ZlcnJpZGUuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTcyODEg
WyBMaW51eCBdIHN2Zy9XM0MtSTE4Ti90ZXh0LWFuY2hvci1kaXJMVFItYW5jaG9yRW5kLnN2ZyBb
IEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBzdmcvVzND
LUkxOE4vdGV4dC1hbmNob3ItZGlyTFRSLWFuY2hvck1pZGRsZS5zdmcgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThOL3RleHQtYW5j
aG9yLWRpckxUUi1hbmNob3JTdGFydC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThOL3RleHQtYW5jaG9yLWRpck5vbmUtYW5j
aG9yRW5kLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGlu
dXggXSBzdmcvVzNDLUkxOE4vdGV4dC1hbmNob3ItZGlyTm9uZS1hbmNob3JNaWRkbGUuc3ZnIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTcyODEgWyBMaW51eCBdIHN2Zy9XM0Mt
STE4Ti90ZXh0LWFuY2hvci1kaXJOb25lLWFuY2hvclN0YXJ0LnN2ZyBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBzdmcvVzNDLUkxOE4vdGV4dC1hbmNo
b3ItZGlyUlRMLWFuY2hvckVuZC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi85NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThOL3RleHQtYW5jaG9yLWRpclJUTC1hbmNob3JN
aWRkbGUuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTcyODEgWyBMaW51
eCBdIHN2Zy9XM0MtSTE4Ti90ZXh0LWFuY2hvci1kaXJSVEwtYW5jaG9yU3RhcnQuc3ZnIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvOTcyODEgWyBMaW51eCBdIHN2Zy9XM0MtSTE4
Ti90ZXh0LWFuY2hvci1pbmhlcml0ZWQtZGlyTFRSLWFuY2hvckVuZC5zdmcgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThOL3RleHQt
YW5jaG9yLWluaGVyaXRlZC1kaXJMVFItYW5jaG9yTWlkZGxlLnN2ZyBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBzdmcvVzNDLUkxOE4vdGV4dC1hbmNo
b3ItaW5oZXJpdGVkLWRpckxUUi1hbmNob3JTdGFydC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThOL3RleHQtYW5jaG9yLWlu
aGVyaXRlZC1kaXJSVEwtYW5jaG9yRW5kLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0
Lm9yZy9iLzk3MjgxIFsgTGludXggXSBzdmcvVzNDLUkxOE4vdGV4dC1hbmNob3ItaW5oZXJpdGVk
LWRpclJUTC1hbmNob3JNaWRkbGUuc3ZnIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvOTcyODEgWyBMaW51eCBdIHN2Zy9XM0MtSTE4Ti90ZXh0LWFuY2hvci1pbmhlcml0ZWQtZGly
UlRMLWFuY2hvclN0YXJ0LnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3
MjgxIFsgTGludXggXSBzdmcvVzNDLUkxOE4vdGV4dC1hbmNob3Itbm8tbWFya3VwLnN2ZyBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBzdmcvVzNDLUkx
OE4vdGV4dC1kaXJSVEwtdWJPdmVycmlkZS5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThOL3RzcGFuLWRpckxUUi11YkVtYmVk
LWluLXJ0bC1jb250ZXh0LnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3
MjgxIFsgTGludXggXSBzdmcvVzNDLUkxOE4vdHNwYW4tZGlyTFRSLXViTm9uZS1pbi1ydGwtY29u
dGV4dC5zdmcgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85NzI4MSBbIExpbnV4
IF0gc3ZnL1czQy1JMThOL3RzcGFuLWRpckxUUi11Yk92ZXJyaWRlLWluLXJ0bC1jb250ZXh0LnN2
ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBzdmcv
VzNDLUkxOE4vdHNwYW4tZGlyTm9uZS11Yk92ZXJyaWRlLWluLXJ0bC1jb250ZXh0LnN2ZyBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBzdmcvVzNDLUkx
OE4vdHNwYW4tZGlyUlRMLXViT3ZlcnJpZGUtaW4tZGVmYXVsdC1jb250ZXh0LnN2ZyBbIEltYWdl
T25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBzdmcvVzNDLUkxOE4v
dHNwYW4tZGlyUlRMLXViT3ZlcnJpZGUtaW4tbHRyLWNvbnRleHQuc3ZnIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvOTcyODEgWyBMaW51eCBdIHN2Zy9XM0MtSTE4Ti90c3Bhbi1k
aXJlY3Rpb24tcnRsLnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3Mjgx
IFsgTGludXggXSBzdmcvVzNDLVNWRy0xLjEtU0UvdGV4dC1pbnRyby0wNS10LnN2ZyBbIEltYWdl
T25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBzdmcvVzNDLVNWRy0x
LjEvdGV4dC1pbnRyby0wNS10LnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9i
Lzk3MjgxIFsgTGludXggXSBzdmcvdGV4dC9iaWRpLXRzcGFucy5zdmcgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL3RleHQvdGV4dC1pbnRyby0w
NS10LnN2ZyBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXgg
XSB0cmFuc2Zvcm1zLzJkL2hpbmRpLXJvdGF0ZWQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQor
d2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9raG1l
ci1zZWxlY3Rpb24uaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXgg
XSBzdmcvVzNDLUkxOE4vdGV4dC1kaXJMVFItdWJPdmVycmlkZS5zdmcgWyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThOL3RzcGFuLWRpckxUUi11Yk92
ZXJyaWRlLWluLWRlZmF1bHQtY29udGV4dC5zdmcgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85
NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThOL3RzcGFuLWRpckxUUi11Yk92ZXJyaWRlLWluLWx0
ci1jb250ZXh0LnN2ZyBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzk3MjgxIFsgTGludXggXSBz
dmcvVzNDLUkxOE4vdHNwYW4tZGlyTm9uZS11Yk92ZXJyaWRlLWluLWRlZmF1bHQtY29udGV4dC5z
dmcgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL1czQy1JMThO
L3RzcGFuLWRpck5vbmUtdWJPdmVycmlkZS1pbi1sdHItY29udGV4dC5zdmcgWyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi85NzI4MSBbIExpbnV4IF0gc3ZnL3RleHQvYmlkaS10ZXh0LXF1ZXJ5LnN2
ZyBbIEZhaWx1cmUgXQogCiAjIEV4cGVjdGVkIHRvIGZhaWwgdW50aWwgc3RvcmFnZSBibG9ja2lu
ZyBzZXR0aW5ncyBoYXZlIGEgV2ViS2l0MSBBUEkgaW4gQ2hyb21pdW0uCiB3ZWJraXQub3JnL2Iv
OTc0OTEgaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEu
aHRtbCBbIEZhaWx1cmUgUGFzcyBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>