<?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>75083</bug_id>
          
          <creation_ts>2011-12-22 06:10:55 -0800</creation_ts>
          <short_desc>Indirect adjacency combinator has potential sublinear performance</short_desc>
          <delta_ts>2013-05-15 20:42:50 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>nbarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>526215</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2011-12-22 06:10:55 -0800</bug_when>
    <thetext>When evaluating a selector with multiple &quot;indirect adjacency&quot; combinators such as &quot;a ~ b ~ c&quot;, the runtime of of the selector-matcher currently has sublinear performance. Two indirect adjacency combinator will for instance result in O(n^2) element checks, where n is the number of siblings. Three indirect adjacency combinators will result in O(n^3) element checks, etc.

The &quot;indirect adjacency&quot; combinator is very rare in the wild, so the chance of seeing two in the same selector is highly unlikely however. 

The problem can be solved similar to the same issue with multiple ancestor combinators. The recursive selector checker just needs to expanded with a result-type of SelectorFailsAllSiblings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526217</commentid>
    <comment_count>1</comment_count>
      <attachid>120315</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2011-12-22 06:16:54 -0800</bug_when>
    <thetext>Created attachment 120315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526272</commentid>
    <comment_count>2</comment_count>
      <attachid>120315</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-22 08:37:58 -0800</bug_when>
    <thetext>Comment on attachment 120315
Patch

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        Fix rare superlinear runtime of the indirect adjacency combinator

The code change is fine, but it needs a test. Using the techniques from the LayoutTests/perf directory is should be straightforward to demonstrate the problem and the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527635</commentid>
    <comment_count>3</comment_count>
      <attachid>120659</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2011-12-28 05:48:04 -0800</bug_when>
    <thetext>Created attachment 120659
New patch with performance tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527640</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-28 05:56:46 -0800</bug_when>
    <thetext>Attachment 120659 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/perf...&quot; exit_code: 1

LayoutTests/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527670</commentid>
    <comment_count>5</comment_count>
      <attachid>120669</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2011-12-28 07:33:13 -0800</bug_when>
    <thetext>Created attachment 120669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528106</commentid>
    <comment_count>6</comment_count>
      <attachid>120669</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-12-30 02:02:32 -0800</bug_when>
    <thetext>Comment on attachment 120669
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:7
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=75083
&gt; +        Fix rare superlinear runtime of the indirect adjacency combinator
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

You should briefly explain in the ChangeLog what the superlinear case looks like and how this patch fixes it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528744</commentid>
    <comment_count>7</comment_count>
      <attachid>120939</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-03 05:59:05 -0800</bug_when>
    <thetext>Created attachment 120939
Patch

Updates changelog with test and improved description</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528747</commentid>
    <comment_count>8</comment_count>
      <attachid>120939</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-01-03 06:11:00 -0800</bug_when>
    <thetext>Comment on attachment 120939
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +2011-12-28  Allan Sandfeld Jensen  &lt;allan.jensen@nokia.com&gt;
&gt; +
&gt; +        Fix superlinear runtime of the rare case of multiple indirect adjency combinators,
&gt; +        such as &quot;li ~ li ~ li&quot;. The recursive matching algorithm now detects cases
&gt; +        where all siblings have failed a check of a selector.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=75083
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Test: perf/nested-combined-selectors.html

If you look around in the ChangeLog, you see that the standard format is:

Bug title
&lt;Bugzilla URL&gt;

Reviewed by Foo.

Brief description.

Test: for/foo.html

Please follow that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528752</commentid>
    <comment_count>9</comment_count>
      <attachid>120940</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-03 06:42:16 -0800</bug_when>
    <thetext>Created attachment 120940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528888</commentid>
    <comment_count>10</comment_count>
      <attachid>120940</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-01-03 11:21:08 -0800</bug_when>
    <thetext>Comment on attachment 120940
Patch

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

&gt; LayoutTests/ChangeLog:1
&gt; -2012-01-02  Gavin Barraclough  &lt;barraclough@apple.com&gt;
&gt; + 2011-12-28  Allan Sandfeld Jensen  &lt;allan.jensen@nokia.com&gt;

Extra space.

&gt; LayoutTests/ChangeLog:10
&gt; + 2012-01-02  Gavin Barraclough  &lt;barraclough@apple.com&gt;

Extra space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529420</commentid>
    <comment_count>11</comment_count>
      <attachid>121085</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-04 01:43:25 -0800</bug_when>
    <thetext>Created attachment 121085
Patch

One more attempt at perfect Changelog writing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530140</commentid>
    <comment_count>12</comment_count>
      <attachid>121085</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-05 02:57:36 -0800</bug_when>
    <thetext>Comment on attachment 121085
Patch

Clearing flags on attachment: 121085

Committed r104133: &lt;http://trac.webkit.org/changeset/104133&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530141</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-05 02:57:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889660</commentid>
    <comment_count>14</comment_count>
    <who name="Nils Barth">nbarth</who>
    <bug_when>2013-05-15 20:42:50 -0700</bug_when>
    <thetext>This bug appears to still be present.
Allan, if you&apos;re concerned about this, you might want to take a look at the revised tests.

Per revised LayoutTests/perf in Chromium, the test:
perf/nested-combined-selectors.html
...which was flaky before, is now consistently failing, and inspecting the output, as at:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=%5Eperf%2Fnested-combined-selectors.html%24
...shows that it has O(n^2) performance once n &gt;= 32 or so.
(You can download resources/magnitude-perf.js and perf/nested-combined-selectors.html from ToT Chromium and run locally to verify.)

I don&apos;t know if this is an unrealistically large size; description Allan writes:
    The &quot;indirect adjacency&quot; combinator is very rare in the wild,
    so the chance of seeing two in the same selector is highly unlikely however. 

I&apos;ve opened a bug at Chromium regarding this:
Issue 232266: perf/nested-combined-selectors.html fails (on Linux): styling multiple combinators is O(n^2), should be O(n)
https://code.google.com/p/chromium/issues/detail?id=232266</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120315</attachid>
            <date>2011-12-22 06:16:54 -0800</date>
            <delta_ts>2011-12-28 05:48:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>4476</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZTAwZWU4Li4yNzJjNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTEtMTItMjIgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tp
YS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc1MDgzCisgICAgICAgIEZpeCByYXJlIHN1cGVybGluZWFyIHJ1bnRpbWUgb2YgdGhlIGluZGly
ZWN0IGFkamFjZW5jeSBjb21iaW5hdG9yCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6IFJldHVybiBTZWxlY3RvckZh
aWxzQWxsU2libGluZ3Mgd2hlbgorICAgICAgICBhbGwgc2libGluZ3MgaGF2ZSBmYWlsZWQgYSBz
ZWxlY3RvciBjb21wb25lbnQuCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOiBBZGQg
U2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIGVudW0gdmFsdWUKKwogMjAxMS0xMi0yMCAgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5MjYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggZDRmMjcxMC4uMzVkNTE1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTQ0NSwxMCArNDQ1LDExIEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjppc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciog
c2VsZWN0b3IpCiB9CiAKIC8vIFJlY3Vyc2l2ZSBjaGVjayBvZiBzZWxlY3RvcnMgYW5kIGNvbWJp
bmF0b3JzCi0vLyBJdCBjYW4gcmV0dXJuIDMgZGlmZmVyZW50IHZhbHVlczoKLS8vICogU2VsZWN0
b3JNYXRjaGVzICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCi0v
LyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUg
ZWxlbWVudCBlCi0vLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZh
aWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCisvLyBJdCBjYW4gcmV0
dXJuIDQgZGlmZmVyZW50IHZhbHVlczoKKy8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgIC0g
dGhlIHNlbGVjdG9yIG1hdGNoZXMgdGhlIGVsZW1lbnQgZQorLy8gKiBTZWxlY3RvckZhaWxzTG9j
YWxseSAgICAgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIHRoZSBlbGVtZW50IGUKKy8vICogU2Vs
ZWN0b3JGYWlsc0FsbFNpYmxpbmdzIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkg
c2libGluZyBvZiBlCisvLyAqIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5ICAtIHRoZSBzZWxlY3Rv
ciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQogU2VsZWN0b3JD
aGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NT
ZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBp
c1N1YlNlbGVjdG9yLCBWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUsIFJlbmRlclN0
eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0
CiB7CiAjaWYgRU5BQkxFKFNWRykKQEAgLTQ4OCw3ICs0ODksNyBAQCBTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9y
KiBzZWwsCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5Owog
ICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKICAgICAgICAgICAgIFNl
bGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywg
ZmFsc2UsIHZpc2l0ZWRNYXRjaFR5cGUpOwotICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVj
dG9yRmFpbHNMb2NhbGx5KQorICAgICAgICAgICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hl
cyB8fCBtYXRjaCA9PSBTZWxlY3RvckZhaWxzQ29tcGxldGVseSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWF0Y2g7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC01MTEsNyArNTEyLDcg
QEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tT
ZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLAogICAgICAgICAgICAgd2hpbGUgKG4gJiYgIW4tPmlz
RWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCk7
CiAgICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFp
bHNMb2NhbGx5OworICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQWxsU2libGlu
Z3M7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwogICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgdmlz
aXRlZE1hdGNoVHlwZSk7CiAgICAgICAgIH0KQEAgLTUyNiwxMCArNTI3LDEwIEBAIFNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NT
U2VsZWN0b3IqIHNlbCwKICAgICAgICAgICAgIHdoaWxlIChuICYmICFuLT5pc0VsZW1lbnROb2Rl
KCkpCiAgICAgICAgICAgICAgICAgbiA9IG4tPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAg
ICAgaWYgKCFuKQotICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzOwogICAgICAg
ICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKICAgICAgICAgICAgIFNlbGVjdG9y
TWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFsc2Us
IHZpc2l0ZWRNYXRjaFR5cGUpOwotICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFp
bHNMb2NhbGx5KQorICAgICAgICAgICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcyB8fCBt
YXRjaCA9PSBTZWxlY3RvckZhaWxzQWxsU2libGluZ3MgfHwgbWF0Y2ggPT0gU2VsZWN0b3JGYWls
c0NvbXBsZXRlbHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICB9Owog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA0OGE2
ZDliLi5kNjZkZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC00OSw3
ICs0OSw3IEBAIGNsYXNzIFNlbGVjdG9yQ2hlY2tlciB7CiBwdWJsaWM6CiAgICAgU2VsZWN0b3JD
aGVja2VyKERvY3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsKIAotICAgIGVudW0gU2VsZWN0
b3JNYXRjaCB7IFNlbGVjdG9yTWF0Y2hlcywgU2VsZWN0b3JGYWlsc0xvY2FsbHksIFNlbGVjdG9y
RmFpbHNDb21wbGV0ZWx5IH07CisgICAgZW51bSBTZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRj
aGVzLCBTZWxlY3RvckZhaWxzTG9jYWxseSwgU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzLCBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseSB9OwogICAgIGVudW0gVmlzaXRlZE1hdGNoVHlwZSB7IFZpc2l0
ZWRNYXRjaERpc2FibGVkLCBWaXNpdGVkTWF0Y2hFbmFibGVkIH07CiAgICAgYm9vbCBjaGVja1Nl
bGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0
b3IgPSBmYWxzZSkgY29uc3Q7CiAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1Nl
bGVjdG9yKiwgRWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2Vs
ZWN0b3IsIFZpc2l0ZWRNYXRjaFR5cGUsIFJlbmRlclN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBl
bGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120659</attachid>
            <date>2011-12-28 05:48:04 -0800</date>
            <delta_ts>2011-12-28 07:33:06 -0800</delta_ts>
            <desc>New patch with performance tests</desc>
            <filename>Patch2</filename>
            <type>text/plain</type>
            <size>7102</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OGJmNWE3Li40YmViYzNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTIt
MjggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgQWRkIHRlc3QgZm9yIHN0eWxpbmcgcGVyZm9ybWFuY2Ugb2YgQ1NTIHNlbGVjdG9ycyB3
aXRoCisgICAgICAgIG11bHRpcGxlIGluZGlyZWN0IGNvbWJpbmF0b3JzLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGVyZi9uZXN0ZWQtY29tYmlu
ZWQtc2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDExLTEyLTI3ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBwYXNzL2NyYXNoIGV4cGVjdGF0aW9uIGZv
ciBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTUyLXQuc3ZnCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wZXJmL25lc3RlZC1jb21iaW5lZC1zZWxlY3RvcnMuaHRtbCBiL0xheW91dFRlc3Rz
L3BlcmYvbmVzdGVkLWNvbWJpbmVkLXNlbGVjdG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmViZGVjZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
ZXJmL25lc3RlZC1jb21iaW5lZC1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSdzYW5kYm94Jz48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWduaXR1
ZGUtcGVyZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFy
IGxpc3Q7Cit2YXIgc3RhY2s7Cit2YXIgc2FuZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzYW5kYm94Jyk7CisKKy8vIENoZWNrIHRoYXQgbG9uZyBzZXF1ZW5jZXMgb2YgY29tYmluZWQg
c2VsZWN0b3JzIGhhcyBsaW5lYXIgcGVyZm9ybWFuY2UgKHBlciBzdHlsZWQgZWxlbWVudCkKKwor
ZnVuY3Rpb24gc2V0dXBMaXN0KG1hZ25pdHVkZSkKK3sKKyAgICBpZiAoc2FuZGJveC5maXJzdENo
aWxkKQorICAgICAgICBzYW5kYm94LnJlbW92ZUNoaWxkKHNhbmRib3guZmlyc3RDaGlsZCk7Cisg
ICAgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG1hZ25pdHVkZTsgKytpKSB7CisgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICAgICAgIGxpLnNldEF0dHJpYnV0ZSgnaWQnLCd1bmlxdWUn
K2kpOyAvLyBhZGQgdW5pcXVlIGlkIGVuc3VyZSB0aGUgc3R5bGVzIGFyZSBub3QgYXV0by1zaGFy
ZWQKKyAgICAgICAgbGlzdC5hcHBlbmRDaGlsZChsaSk7CisgICAgfQorICAgIHNhbmRib3guYXBw
ZW5kQ2hpbGQobGlzdCk7Cit9CisKK2Z1bmN0aW9uIHNldHVwU3RhY2sobWFnbml0dWRlKQorewor
ICAgIGlmIChzYW5kYm94LmZpcnN0Q2hpbGQpCisgICAgICAgIHNhbmRib3gucmVtb3ZlQ2hpbGQo
c2FuZGJveC5maXJzdENoaWxkKTsKKyAgICBzdGFjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHZhciBjdXIgPSBzdGFjazsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bWFnbml0dWRlOyArK2kpIHsKKyAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdpZCcsJ3VuaXF1ZScraSk7Cisg
ICAgICAgIGN1ci5hcHBlbmRDaGlsZChkaXYpOworICAgICAgICBjdXIgPSBkaXY7CisgICAgfQor
ICAgIHNhbmRib3guYXBwZW5kQ2hpbGQoc3RhY2spOworfQorCitmdW5jdGlvbiB0ZXN0TGlzdFN0
eWxpbmcobWFnbml0dWRlKQoreworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImxhIH4g
bGkgfiBsaSIpOworfQorCitmdW5jdGlvbiB0ZXN0U3RhY2tTdHlsaW5nKG1hZ25pdHVkZSkKK3sK
KyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkYXYgZGl2IGRpdiIpOworfQorCitNYWdu
aXR1ZGUuZGVzY3JpcHRpb24oJ1Rlc3RzIHN0eWxpbmcgbXVsdGlwbGUgY29tYmluYXRvcnMgaGF2
ZSBsaW5lYXIgcGVyZm9ybWFuY2UnKTsKK01hZ25pdHVkZS5ydW4oc2V0dXBTdGFjaywgdGVzdFN0
YWNrU3R5bGluZywgTWFnbml0dWRlLkxJTkVBUik7CitzYW5kYm94LnJlbW92ZUNoaWxkKHNhbmRi
b3guZmlyc3RDaGlsZCk7CitNYWduaXR1ZGUuX251bVBvaW50cz05OyAvLyBMaW1pdCB0aGUgbWF4
IHRlc3QgbWFnbml0dWRlIHNpbmNlIGl0IHRyaWdnZXJzIGEgdGVzdCB0aW1lb3V0CitNYWduaXR1
ZGUucnVuKHNldHVwTGlzdCwgdGVzdExpc3RTdHlsaW5nLCBNYWduaXR1ZGUuTElORUFSKTsKK3Nh
bmRib3gucmVtb3ZlQ2hpbGQoc2FuZGJveC5maXJzdENoaWxkKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc0MDU3MmUuLjc5YWY3ZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMS0xMi0yMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4u
amVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzUwODMKKyAgICAgICAgRml4IHJhcmUgc3VwZXJsaW5lYXIgcnVudGltZSBv
ZiB0aGUgaW5kaXJlY3QgYWRqYWNlbmN5IGNvbWJpbmF0b3IKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTogUmV0dXJu
IFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5ncyB3aGVuCisgICAgICAgIGFsbCBzaWJsaW5ncyBoYXZl
IGZhaWxlZCBhIHNlbGVjdG9yIGNvbXBvbmVudC4KKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVj
a2VyLmg6IEFkZCBTZWxlY3RvckZhaWxzQWxsU2libGluZ3MgZW51bSB2YWx1ZQorCiAyMDExLTEy
LTI3ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBjb21wbGV0ZSBhbm5vdGF0aW5nIFNESyBjb21wb25lbnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IGQ0ZjI3MTAuLjM1ZDUxNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC00NDUsMTAgKzQ0NSwxMSBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yKQogfQogCiAvLyBSZWN1cnNpdmUgY2hlY2sgb2Ygc2VsZWN0b3JzIGFuZCBj
b21iaW5hdG9ycwotLy8gSXQgY2FuIHJldHVybiAzIGRpZmZlcmVudCB2YWx1ZXM6Ci0vLyAqIFNl
bGVjdG9yTWF0Y2hlcyAgICAgICAgIC0gdGhlIHNlbGVjdG9yIG1hdGNoZXMgdGhlIGVsZW1lbnQg
ZQotLy8gKiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3Ig
dGhlIGVsZW1lbnQgZQotLy8gKiBTZWxlY3RvckZhaWxzQ29tcGxldGVseSAtIHRoZSBzZWxlY3Rv
ciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQorLy8gSXQgY2Fu
IHJldHVybiA0IGRpZmZlcmVudCB2YWx1ZXM6CisvLyAqIFNlbGVjdG9yTWF0Y2hlcyAgICAgICAg
ICAtIHRoZSBzZWxlY3RvciBtYXRjaGVzIHRoZSBlbGVtZW50IGUKKy8vICogU2VsZWN0b3JGYWls
c0xvY2FsbHkgICAgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCisvLyAq
IFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5ncyAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgZSBhbmQg
YW55IHNpYmxpbmcgb2YgZQorLy8gKiBTZWxlY3RvckZhaWxzQ29tcGxldGVseSAgLSB0aGUgc2Vs
ZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9yIGFuY2VzdG9yIG9mIGUKIFNlbGVj
dG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJv
b2wgaXNTdWJTZWxlY3RvciwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBlLCBSZW5k
ZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBj
b25zdAogewogI2lmIEVOQUJMRShTVkcpCkBAIC00ODgsNyArNDg5LDcgQEAgU2VsZWN0b3JDaGVj
a2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxl
Y3Rvciogc2VsLAogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVs
eTsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAgICAg
ICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1
ZG8sIGZhbHNlLCB2aXNpdGVkTWF0Y2hUeXBlKTsKLSAgICAgICAgICAgIGlmIChtYXRjaCAhPSBT
ZWxlY3RvckZhaWxzTG9jYWxseSkKKyAgICAgICAgICAgIGlmIChtYXRjaCA9PSBTZWxlY3Rvck1h
dGNoZXMgfHwgbWF0Y2ggPT0gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNTExLDcgKzUx
Miw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwKICAgICAgICAgICAgIHdoaWxlIChuICYmICFu
LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgbiA9IG4tPnByZXZpb3VzU2libGlu
ZygpOwogICAgICAgICAgICAgaWYgKCFuKQotICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3Rv
ckZhaWxzTG9jYWxseTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0FsbFNp
YmxpbmdzOwogICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKICAgICAg
ICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFsc2Us
IHZpc2l0ZWRNYXRjaFR5cGUpOwogICAgICAgICB9CkBAIC01MjYsMTAgKzUyNywxMCBAQCBTZWxl
Y3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9y
KENTU1NlbGVjdG9yKiBzZWwsCiAgICAgICAgICAgICB3aGlsZSAobiAmJiAhbi0+aXNFbGVtZW50
Tm9kZSgpKQogICAgICAgICAgICAgICAgIG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAg
ICAgICAgIGlmICghbikKLSAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2Fs
bHk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5nczsKICAg
ICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAgICAgICBTZWxl
Y3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGZh
bHNlLCB2aXNpdGVkTWF0Y2hUeXBlKTsKLSAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3Rv
ckZhaWxzTG9jYWxseSkKKyAgICAgICAgICAgIGlmIChtYXRjaCA9PSBTZWxlY3Rvck1hdGNoZXMg
fHwgbWF0Y2ggPT0gU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIHx8IG1hdGNoID09IFNlbGVjdG9y
RmFpbHNDb21wbGV0ZWx5KQogICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAg
fTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXgg
NDhhNmQ5Yi4uZDY2ZGU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAt
NDksNyArNDksNyBAQCBjbGFzcyBTZWxlY3RvckNoZWNrZXIgewogcHVibGljOgogICAgIFNlbGVj
dG9yQ2hlY2tlcihEb2N1bWVudCosIGJvb2wgc3RyaWN0UGFyc2luZyk7CiAKLSAgICBlbnVtIFNl
bGVjdG9yTWF0Y2ggeyBTZWxlY3Rvck1hdGNoZXMsIFNlbGVjdG9yRmFpbHNMb2NhbGx5LCBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseSB9OworICAgIGVudW0gU2VsZWN0b3JNYXRjaCB7IFNlbGVjdG9y
TWF0Y2hlcywgU2VsZWN0b3JGYWlsc0xvY2FsbHksIFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5ncywg
U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgfTsKICAgICBlbnVtIFZpc2l0ZWRNYXRjaFR5cGUgeyBW
aXNpdGVkTWF0Y2hEaXNhYmxlZCwgVmlzaXRlZE1hdGNoRW5hYmxlZCB9OwogICAgIGJvb2wgY2hl
Y2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzRmFzdENoZWNrYWJsZVNl
bGVjdG9yID0gZmFsc2UpIGNvbnN0OwogICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihD
U1NTZWxlY3RvciosIEVsZW1lbnQqLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1
YlNlbGVjdG9yLCBWaXNpdGVkTWF0Y2hUeXBlLCBSZW5kZXJTdHlsZSogPSAwLCBSZW5kZXJTdHls
ZSogZWxlbWVudFBhcmVudFN0eWxlID0gMCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120669</attachid>
            <date>2011-12-28 07:33:13 -0800</date>
            <delta_ts>2012-01-03 05:59:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75083-20111228163150.patch</filename>
            <type>text/plain</type>
            <size>7515</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwNTcyZTJmNzM0MWU3
NGZhZTM0MWM4N2MwY2JmMjIwYmJhNzBhYy4uNjE3NmYzMDc5ODdmMzgxNzE2MTNhM2YxYTg3MzY5
ZjNkZGQzY2UxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEyLTI4ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTA4MworICAgICAgICBGaXgg
cmFyZSBzdXBlcmxpbmVhciBydW50aW1lIG9mIHRoZSBpbmRpcmVjdCBhZGphY2VuY3kgY29tYmlu
YXRvcgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrU2VsZWN0b3IpOiBSZXR1cm4gU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIHdoZW4K
KyAgICAgICAgYWxsIHNpYmxpbmdzIGhhdmUgZmFpbGVkIGEgc2VsZWN0b3IgY29tcG9uZW50Lgor
ICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDogQWRkIFNlbGVjdG9yRmFpbHNBbGxTaWJs
aW5ncyBlbnVtIHZhbHVlCisKIDIwMTEtMTItMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBn
b29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbXBsZXRlIGFubm90YXRpbmcg
U0RLIGNvbXBvbmVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXgg
ZDRmMjcxMDUxYTEwNmE3MTY2MzI5NDQyMWU5NGYxYTUxZWI2OTM5OS4uMzVkNTE1NDZiZTk5YWY2
NmUzZDdjMGE1YzUzNTBjYWIwMWRmNWYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHAKQEAgLTQ0NSwxMCArNDQ1LDExIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjppc0Zh
c3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiB9CiAKIC8v
IFJlY3Vyc2l2ZSBjaGVjayBvZiBzZWxlY3RvcnMgYW5kIGNvbWJpbmF0b3JzCi0vLyBJdCBjYW4g
cmV0dXJuIDMgZGlmZmVyZW50IHZhbHVlczoKLS8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAg
LSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCi0vLyAqIFNlbGVjdG9yRmFpbHNM
b2NhbGx5ICAgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCi0vLyAqIFNl
bGVjdG9yRmFpbHNDb21wbGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkg
c2libGluZyBvciBhbmNlc3RvciBvZiBlCisvLyBJdCBjYW4gcmV0dXJuIDQgZGlmZmVyZW50IHZh
bHVlczoKKy8vICogU2VsZWN0b3JNYXRjaGVzICAgICAgICAgIC0gdGhlIHNlbGVjdG9yIG1hdGNo
ZXMgdGhlIGVsZW1lbnQgZQorLy8gKiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAgLSB0aGUgc2Vs
ZWN0b3IgZmFpbHMgZm9yIHRoZSBlbGVtZW50IGUKKy8vICogU2VsZWN0b3JGYWlsc0FsbFNpYmxp
bmdzIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvZiBlCisvLyAq
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5ICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgZSBhbmQg
YW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQogU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1h
dGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVt
ZW50KiBlLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBWaXNp
dGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUsIFJlbmRlclN0eWxlKiBlbGVtZW50U3R5bGUs
IFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNW
RykKQEAgLTQ4OCw3ICs0ODksNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAgICAgICAgICAgZSA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2gg
PSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFsc2UsIHZpc2l0ZWRNYXRj
aFR5cGUpOwotICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFpbHNMb2NhbGx5KQor
ICAgICAgICAgICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcyB8fCBtYXRjaCA9PSBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC01MTEsNyArNTEyLDcgQEAgU2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rv
ciogc2VsLAogICAgICAgICAgICAgd2hpbGUgKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAg
ICAgICAgICAgICAgICBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICBpZiAo
IW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OworICAgICAg
ICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQWxsU2libGluZ3M7CiAgICAgICAgICAgICBl
ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwogICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2Vs
ZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgdmlzaXRlZE1hdGNoVHlwZSk7CiAg
ICAgICAgIH0KQEAgLTUyNiwxMCArNTI3LDEwIEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JN
YXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwKICAg
ICAgICAgICAgIHdoaWxlIChuICYmICFuLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAg
ICAgbiA9IG4tPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAgICAgaWYgKCFuKQotICAgICAg
ICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzOwogICAgICAgICAgICAgZSA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihuKTsKICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVj
a1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFsc2UsIHZpc2l0ZWRNYXRjaFR5cGUp
OwotICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFpbHNMb2NhbGx5KQorICAgICAg
ICAgICAgaWYgKG1hdGNoID09IFNlbGVjdG9yTWF0Y2hlcyB8fCBtYXRjaCA9PSBTZWxlY3RvckZh
aWxzQWxsU2libGluZ3MgfHwgbWF0Y2ggPT0gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICB9OwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCA0OGE2ZDliYThhYTQxZmZmYTVkZDkx
NGU2MTkyYmFiOGZlNzg0NzM1Li5kNjZkZTg4ZWE2MzAwMWMwMDg0YTY4MmI2MTY5MDNmYmZhZWYw
YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC00OSw3ICs0OSw3IEBA
IGNsYXNzIFNlbGVjdG9yQ2hlY2tlciB7CiBwdWJsaWM6CiAgICAgU2VsZWN0b3JDaGVja2VyKERv
Y3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsKIAotICAgIGVudW0gU2VsZWN0b3JNYXRjaCB7
IFNlbGVjdG9yTWF0Y2hlcywgU2VsZWN0b3JGYWlsc0xvY2FsbHksIFNlbGVjdG9yRmFpbHNDb21w
bGV0ZWx5IH07CisgICAgZW51bSBTZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzLCBTZWxl
Y3RvckZhaWxzTG9jYWxseSwgU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzLCBTZWxlY3RvckZhaWxz
Q29tcGxldGVseSB9OwogICAgIGVudW0gVmlzaXRlZE1hdGNoVHlwZSB7IFZpc2l0ZWRNYXRjaERp
c2FibGVkLCBWaXNpdGVkTWF0Y2hFbmFibGVkIH07CiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENT
U1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxz
ZSkgY29uc3Q7CiAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwg
RWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIFZp
c2l0ZWRNYXRjaFR5cGUsIFJlbmRlclN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFy
ZW50U3R5bGUgPSAwKSBjb25zdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OGJmNWE3OTA3OTU3ZWE0MzgzZDg0YTM2YzRk
ZWI1YTU1NTdlM2JlLi5lM2UwZGQ2MTA1MTM4ODUxOGYzOTUzOWFjNzljZjZhYzc1OWQ1NzRjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMjggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAg
PGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc1MDgzCisgICAgICAgIEFkZCB0ZXN0IGZvciBzdHlsaW5nIHBl
cmZvcm1hbmNlIG9mIENTUyBzZWxlY3RvcnMgd2l0aAorICAgICAgICBtdWx0aXBsZSBpbmRpcmVj
dCBjb21iaW5hdG9ycy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBlcmYvbmVzdGVkLWNvbWJpbmVkLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwog
MjAxMS0xMi0yNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBB
ZGQgcGFzcy9jcmFzaCBleHBlY3RhdGlvbiBmb3Igc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxl
bS01Mi10LnN2ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGVyZi9uZXN0ZWQtY29tYmluZWQt
c2VsZWN0b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9wZXJmL25lc3RlZC1jb21iaW5lZC1zZWxlY3Rv
cnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYmRlY2YyOGQ4ZDhkMGU1OGRkN2Q2YmRjZTQ2YmVlODc3NGJk
N2MzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGVyZi9uZXN0ZWQtY29tYmluZWQt
c2VsZWN0b3JzLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPGRpdiBpZD0nc2FuZGJveCc+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFnbml0dWRlLXBlcmYuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBsaXN0OwordmFyIHN0YWNrOwor
dmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJveCcpOworCisvLyBD
aGVjayB0aGF0IGxvbmcgc2VxdWVuY2VzIG9mIGNvbWJpbmVkIHNlbGVjdG9ycyBoYXMgbGluZWFy
IHBlcmZvcm1hbmNlIChwZXIgc3R5bGVkIGVsZW1lbnQpCisKK2Z1bmN0aW9uIHNldHVwTGlzdCht
YWduaXR1ZGUpCit7CisgICAgaWYgKHNhbmRib3guZmlyc3RDaGlsZCkKKyAgICAgICAgc2FuZGJv
eC5yZW1vdmVDaGlsZChzYW5kYm94LmZpcnN0Q2hpbGQpOworICAgIGxpc3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCd1bCcpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYWduaXR1ZGU7
ICsraSkgeworICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwor
ICAgICAgICBsaS5zZXRBdHRyaWJ1dGUoJ2lkJywndW5pcXVlJytpKTsgLy8gYWRkIHVuaXF1ZSBp
ZCBlbnN1cmUgdGhlIHN0eWxlcyBhcmUgbm90IGF1dG8tc2hhcmVkCisgICAgICAgIGxpc3QuYXBw
ZW5kQ2hpbGQobGkpOworICAgIH0KKyAgICBzYW5kYm94LmFwcGVuZENoaWxkKGxpc3QpOworfQor
CitmdW5jdGlvbiBzZXR1cFN0YWNrKG1hZ25pdHVkZSkKK3sKKyAgICBpZiAoc2FuZGJveC5maXJz
dENoaWxkKQorICAgICAgICBzYW5kYm94LnJlbW92ZUNoaWxkKHNhbmRib3guZmlyc3RDaGlsZCk7
CisgICAgc3RhY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIgY3Vy
ID0gc3RhY2s7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hZ25pdHVkZTsgKytpKSB7Cisg
ICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
ZGl2LnNldEF0dHJpYnV0ZSgnaWQnLCd1bmlxdWUnK2kpOworICAgICAgICBjdXIuYXBwZW5kQ2hp
bGQoZGl2KTsKKyAgICAgICAgY3VyID0gZGl2OworICAgIH0KKyAgICBzYW5kYm94LmFwcGVuZENo
aWxkKHN0YWNrKTsKK30KKworZnVuY3Rpb24gdGVzdExpc3RTdHlsaW5nKG1hZ25pdHVkZSkKK3sK
KyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJsYSB+IGxpIH4gbGkiKTsKK30KKworZnVu
Y3Rpb24gdGVzdFN0YWNrU3R5bGluZyhtYWduaXR1ZGUpCit7CisgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgiZGF2IGRpdiBkaXYiKTsKK30KKworTWFnbml0dWRlLmRlc2NyaXB0aW9uKCdU
ZXN0cyBzdHlsaW5nIG11bHRpcGxlIGNvbWJpbmF0b3JzIGhhdmUgbGluZWFyIHBlcmZvcm1hbmNl
Jyk7CitNYWduaXR1ZGUucnVuKHNldHVwU3RhY2ssIHRlc3RTdGFja1N0eWxpbmcsIE1hZ25pdHVk
ZS5MSU5FQVIpOworc2FuZGJveC5yZW1vdmVDaGlsZChzYW5kYm94LmZpcnN0Q2hpbGQpOworTWFn
bml0dWRlLl9udW1Qb2ludHM9OTsgLy8gTGltaXQgdGhlIG1heCB0ZXN0IG1hZ25pdHVkZSBzaW5j
ZSBpdCB0cmlnZ2VycyBhIHRlc3QgdGltZW91dAorTWFnbml0dWRlLnJ1bihzZXR1cExpc3QsIHRl
c3RMaXN0U3R5bGluZywgTWFnbml0dWRlLkxJTkVBUik7CitzYW5kYm94LnJlbW92ZUNoaWxkKHNh
bmRib3guZmlyc3RDaGlsZCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="120984"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120939</attachid>
            <date>2012-01-03 05:59:05 -0800</date>
            <delta_ts>2012-01-03 06:42:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch6</filename>
            <type>text/plain</type>
            <size>7523</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNmMzNTc4Li5iNmE0MDQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDQgKzEsMTQgQEAKLTIwMTItMDEt
MDIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorIDIwMTEtMTIt
MjggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDgzCisgICAg
ICAgIEFkZCB0ZXN0IGZvciBzdHlsaW5nIHBlcmZvcm1hbmNlIG9mIENTUyBzZWxlY3RvcnMgd2l0
aAorICAgICAgICBtdWx0aXBsZSBpbmRpcmVjdCBjb21iaW5hdG9ycy4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBlcmYvbmVzdGVkLWNvbWJpbmVk
LXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKworIDIwMTItMDEtMDIgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NTQ1MgogICAgICAgICBJZiBhcmd1bWVudCB0byBFcnJvciBp
cyB1bmRlZmluZWQsIG1lc3NhZ2UgaXMgbm90IHNldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGVyZi9uZXN0ZWQtY29tYmluZWQtc2VsZWN0b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9wZXJmL25l
c3RlZC1jb21iaW5lZC1zZWxlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lYmRlY2YyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGVyZi9uZXN0
ZWQtY29tYmluZWQtc2VsZWN0b3JzLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0nc2FuZGJveCc+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvbWFnbml0dWRlLXBlcmYu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBsaXN0Owor
dmFyIHN0YWNrOwordmFyIHNhbmRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eCcpOworCisvLyBDaGVjayB0aGF0IGxvbmcgc2VxdWVuY2VzIG9mIGNvbWJpbmVkIHNlbGVjdG9y
cyBoYXMgbGluZWFyIHBlcmZvcm1hbmNlIChwZXIgc3R5bGVkIGVsZW1lbnQpCisKK2Z1bmN0aW9u
IHNldHVwTGlzdChtYWduaXR1ZGUpCit7CisgICAgaWYgKHNhbmRib3guZmlyc3RDaGlsZCkKKyAg
ICAgICAgc2FuZGJveC5yZW1vdmVDaGlsZChzYW5kYm94LmZpcnN0Q2hpbGQpOworICAgIGxpc3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtYWduaXR1ZGU7ICsraSkgeworICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdsaScpOworICAgICAgICBsaS5zZXRBdHRyaWJ1dGUoJ2lkJywndW5pcXVlJytpKTsgLy8g
YWRkIHVuaXF1ZSBpZCBlbnN1cmUgdGhlIHN0eWxlcyBhcmUgbm90IGF1dG8tc2hhcmVkCisgICAg
ICAgIGxpc3QuYXBwZW5kQ2hpbGQobGkpOworICAgIH0KKyAgICBzYW5kYm94LmFwcGVuZENoaWxk
KGxpc3QpOworfQorCitmdW5jdGlvbiBzZXR1cFN0YWNrKG1hZ25pdHVkZSkKK3sKKyAgICBpZiAo
c2FuZGJveC5maXJzdENoaWxkKQorICAgICAgICBzYW5kYm94LnJlbW92ZUNoaWxkKHNhbmRib3gu
Zmlyc3RDaGlsZCk7CisgICAgc3RhY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICB2YXIgY3VyID0gc3RhY2s7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hZ25pdHVk
ZTsgKytpKSB7CisgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnaWQnLCd1bmlxdWUnK2kpOworICAgICAgICBj
dXIuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICAgICAgY3VyID0gZGl2OworICAgIH0KKyAgICBzYW5k
Ym94LmFwcGVuZENoaWxkKHN0YWNrKTsKK30KKworZnVuY3Rpb24gdGVzdExpc3RTdHlsaW5nKG1h
Z25pdHVkZSkKK3sKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJsYSB+IGxpIH4gbGki
KTsKK30KKworZnVuY3Rpb24gdGVzdFN0YWNrU3R5bGluZyhtYWduaXR1ZGUpCit7CisgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgiZGF2IGRpdiBkaXYiKTsKK30KKworTWFnbml0dWRlLmRl
c2NyaXB0aW9uKCdUZXN0cyBzdHlsaW5nIG11bHRpcGxlIGNvbWJpbmF0b3JzIGhhdmUgbGluZWFy
IHBlcmZvcm1hbmNlJyk7CitNYWduaXR1ZGUucnVuKHNldHVwU3RhY2ssIHRlc3RTdGFja1N0eWxp
bmcsIE1hZ25pdHVkZS5MSU5FQVIpOworc2FuZGJveC5yZW1vdmVDaGlsZChzYW5kYm94LmZpcnN0
Q2hpbGQpOworTWFnbml0dWRlLl9udW1Qb2ludHM9OTsgLy8gTGltaXQgdGhlIG1heCB0ZXN0IG1h
Z25pdHVkZSBzaW5jZSBpdCB0cmlnZ2VycyBhIHRlc3QgdGltZW91dAorTWFnbml0dWRlLnJ1bihz
ZXR1cExpc3QsIHRlc3RMaXN0U3R5bGluZywgTWFnbml0dWRlLkxJTkVBUik7CitzYW5kYm94LnJl
bW92ZUNoaWxkKHNhbmRib3guZmlyc3RDaGlsZCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBjOTgwMTdmLi5iMzc5MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTEtMTItMjggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBu
b2tpYS5jb20+CisKKyAgICAgICAgRml4IHN1cGVybGluZWFyIHJ1bnRpbWUgb2YgdGhlIHJhcmUg
Y2FzZSBvZiBtdWx0aXBsZSBpbmRpcmVjdCBhZGplbmN5IGNvbWJpbmF0b3JzLAorICAgICAgICBz
dWNoIGFzICJsaSB+IGxpIH4gbGkiLiBUaGUgcmVjdXJzaXZlIG1hdGNoaW5nIGFsZ29yaXRobSBu
b3cgZGV0ZWN0cyBjYXNlcworICAgICAgICB3aGVyZSBhbGwgc2libGluZ3MgaGF2ZSBmYWlsZWQg
YSBjaGVjayBvZiBhIHNlbGVjdG9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzUwODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBwZXJmL25lc3RlZC1jb21iaW5lZC1zZWxlY3RvcnMuaHRtbAor
CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IpOiBSZXR1cm4gU2VsZWN0b3JGYWlsc0FsbFNp
YmxpbmdzIHdoZW4KKyAgICAgICAgYWxsIHNpYmxpbmdzIGhhdmUgZmFpbGVkIGEgc2VsZWN0b3Ig
Y29tcG9uZW50LgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDogQWRkIFNlbGVjdG9y
RmFpbHNBbGxTaWJsaW5ncyBlbnVtIHZhbHVlCisKIDIwMTItMDEtMDMgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBnZGtfc2Ny
ZWVuX2dldF9tb25pdG9yX3dvcmthcmVhKCkgd2hlbiBhdmFpbGFibGUgZm9yIHNjcmVlbkF2YWls
YWJsZVJlY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBkNGYy
NzEwLi4zNWQ1MTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAt
NDQ1LDEwICs0NDUsMTEgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNl
bGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIH0KIAogLy8gUmVjdXJzaXZlIGNo
ZWNrIG9mIHNlbGVjdG9ycyBhbmQgY29tYmluYXRvcnMKLS8vIEl0IGNhbiByZXR1cm4gMyBkaWZm
ZXJlbnQgdmFsdWVzOgotLy8gKiBTZWxlY3Rvck1hdGNoZXMgICAgICAgICAtIHRoZSBzZWxlY3Rv
ciBtYXRjaGVzIHRoZSBlbGVtZW50IGUKLS8vICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAgLSB0
aGUgc2VsZWN0b3IgZmFpbHMgZm9yIHRoZSBlbGVtZW50IGUKLS8vICogU2VsZWN0b3JGYWlsc0Nv
bXBsZXRlbHkgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9yIGFu
Y2VzdG9yIG9mIGUKKy8vIEl0IGNhbiByZXR1cm4gNCBkaWZmZXJlbnQgdmFsdWVzOgorLy8gKiBT
ZWxlY3Rvck1hdGNoZXMgICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVu
dCBlCisvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBm
b3IgdGhlIGVsZW1lbnQgZQorLy8gKiBTZWxlY3RvckZhaWxzQWxsU2libGluZ3MgLSB0aGUgc2Vs
ZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9mIGUKKy8vICogU2VsZWN0b3JGYWls
c0NvbXBsZXRlbHkgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBv
ciBhbmNlc3RvciBvZiBlCiBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JD
aGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVk
b0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIFZpc2l0ZWRNYXRjaFR5cGUg
dmlzaXRlZE1hdGNoVHlwZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUq
IGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1ZHKQpAQCAtNDg4LDcg
KzQ4OSw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwKICAgICAgICAgICAgICAgICByZXR1cm4g
U2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG4pOwogICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0
b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgdmlzaXRlZE1hdGNoVHlwZSk7Ci0gICAg
ICAgICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCisgICAgICAgICAgICBp
ZiAobWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNDb21w
bGV0ZWx5KQogICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKQEAgLTUxMSw3ICs1MTIsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0
Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsCiAgICAg
ICAgICAgICB3aGlsZSAobiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAg
IG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAgIGlmICghbikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5nczsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obik7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUs
IGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCB2aXNpdGVkTWF0Y2hUeXBlKTsKICAgICAgICAgfQpAQCAt
NTI2LDEwICs1MjcsMTAgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLAogICAgICAgICAgICAgd2hp
bGUgKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBuID0gbi0+cHJl
dmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OworICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3Rv
ckZhaWxzQWxsU2libGluZ3M7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG4pOwogICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2Vs
LCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgdmlzaXRlZE1hdGNoVHlwZSk7Ci0gICAgICAgICAg
ICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCisgICAgICAgICAgICBpZiAobWF0
Y2ggPT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5n
cyB8fCBtYXRjaCA9PSBTZWxlY3RvckZhaWxzQ29tcGxldGVseSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWF0Y2g7CiAgICAgICAgIH07CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5oCmluZGV4IDQ4YTZkOWIuLmQ2NmRlODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU2VsZWN0b3JDaGVja2Vy
IHsKIHB1YmxpYzoKICAgICBTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29sIHN0cmljdFBh
cnNpbmcpOwogCi0gICAgZW51bSBTZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzLCBTZWxl
Y3RvckZhaWxzTG9jYWxseSwgU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgfTsKKyAgICBlbnVtIFNl
bGVjdG9yTWF0Y2ggeyBTZWxlY3Rvck1hdGNoZXMsIFNlbGVjdG9yRmFpbHNMb2NhbGx5LCBTZWxl
Y3RvckZhaWxzQWxsU2libGluZ3MsIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IH07CiAgICAgZW51
bSBWaXNpdGVkTWF0Y2hUeXBlIHsgVmlzaXRlZE1hdGNoRGlzYWJsZWQsIFZpc2l0ZWRNYXRjaEVu
YWJsZWQgfTsKICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50Kiwg
Ym9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKICAgICBTZWxlY3Rv
ck1hdGNoIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgVmlzaXRlZE1hdGNoVHlwZSwgUmVuZGVy
U3R5bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0Owo=
</data>
<flag name="review"
          id="121299"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="121300"
          type_id="3"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120940</attachid>
            <date>2012-01-03 06:42:16 -0800</date>
            <delta_ts>2012-01-04 01:43:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch7</filename>
            <type>text/plain</type>
            <size>7685</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNmMzNTc4Li44NzY3OWEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDQgKzEsMTMgQEAKLTIwMTItMDEt
MDIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorIDIwMTEtMTIt
MjggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCBvZiBzdHlsaW5nIHBlcmZvcm1hbmNlIG9mIHNlbGVjdG9ycyB3aXRoIG11bHRp
cGxlIGluZGlyZWN0IGNvbWJpbmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTA4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGVyZi9uZXN0ZWQtY29tYmluZWQtc2VsZWN0b3JzLmh0bWw6IEFk
ZGVkLgorCisgMjAxMi0wMS0wMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc1NDUyCiAgICAgICAgIElmIGFyZ3VtZW50IHRvIEVycm9yIGlzIHVuZGVmaW5lZCwgbWVzc2Fn
ZSBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wZXJmL25lc3RlZC1jb21iaW5l
ZC1zZWxlY3RvcnMuaHRtbCBiL0xheW91dFRlc3RzL3BlcmYvbmVzdGVkLWNvbWJpbmVkLXNlbGVj
dG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZGVjZjIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wZXJmL25lc3RlZC1jb21iaW5lZC1zZWxlY3Rv
cnMuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+
Cis8ZGl2IGlkPSdzYW5kYm94Jz48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWduaXR1ZGUtcGVyZi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGxpc3Q7Cit2YXIgc3RhY2s7Cit2YXIgc2Fu
ZGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CisKKy8vIENoZWNrIHRo
YXQgbG9uZyBzZXF1ZW5jZXMgb2YgY29tYmluZWQgc2VsZWN0b3JzIGhhcyBsaW5lYXIgcGVyZm9y
bWFuY2UgKHBlciBzdHlsZWQgZWxlbWVudCkKKworZnVuY3Rpb24gc2V0dXBMaXN0KG1hZ25pdHVk
ZSkKK3sKKyAgICBpZiAoc2FuZGJveC5maXJzdENoaWxkKQorICAgICAgICBzYW5kYm94LnJlbW92
ZUNoaWxkKHNhbmRib3guZmlyc3RDaGlsZCk7CisgICAgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3VsJyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hZ25pdHVkZTsgKytpKSB7
CisgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICAgICAg
IGxpLnNldEF0dHJpYnV0ZSgnaWQnLCd1bmlxdWUnK2kpOyAvLyBhZGQgdW5pcXVlIGlkIGVuc3Vy
ZSB0aGUgc3R5bGVzIGFyZSBub3QgYXV0by1zaGFyZWQKKyAgICAgICAgbGlzdC5hcHBlbmRDaGls
ZChsaSk7CisgICAgfQorICAgIHNhbmRib3guYXBwZW5kQ2hpbGQobGlzdCk7Cit9CisKK2Z1bmN0
aW9uIHNldHVwU3RhY2sobWFnbml0dWRlKQoreworICAgIGlmIChzYW5kYm94LmZpcnN0Q2hpbGQp
CisgICAgICAgIHNhbmRib3gucmVtb3ZlQ2hpbGQoc2FuZGJveC5maXJzdENoaWxkKTsKKyAgICBz
dGFjayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBjdXIgPSBzdGFj
azsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFnbml0dWRlOyArK2kpIHsKKyAgICAgICAg
dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuc2V0
QXR0cmlidXRlKCdpZCcsJ3VuaXF1ZScraSk7CisgICAgICAgIGN1ci5hcHBlbmRDaGlsZChkaXYp
OworICAgICAgICBjdXIgPSBkaXY7CisgICAgfQorICAgIHNhbmRib3guYXBwZW5kQ2hpbGQoc3Rh
Y2spOworfQorCitmdW5jdGlvbiB0ZXN0TGlzdFN0eWxpbmcobWFnbml0dWRlKQoreworICAgIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImxhIH4gbGkgfiBsaSIpOworfQorCitmdW5jdGlvbiB0
ZXN0U3RhY2tTdHlsaW5nKG1hZ25pdHVkZSkKK3sKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCJkYXYgZGl2IGRpdiIpOworfQorCitNYWduaXR1ZGUuZGVzY3JpcHRpb24oJ1Rlc3RzIHN0
eWxpbmcgbXVsdGlwbGUgY29tYmluYXRvcnMgaGF2ZSBsaW5lYXIgcGVyZm9ybWFuY2UnKTsKK01h
Z25pdHVkZS5ydW4oc2V0dXBTdGFjaywgdGVzdFN0YWNrU3R5bGluZywgTWFnbml0dWRlLkxJTkVB
Uik7CitzYW5kYm94LnJlbW92ZUNoaWxkKHNhbmRib3guZmlyc3RDaGlsZCk7CitNYWduaXR1ZGUu
X251bVBvaW50cz05OyAvLyBMaW1pdCB0aGUgbWF4IHRlc3QgbWFnbml0dWRlIHNpbmNlIGl0IHRy
aWdnZXJzIGEgdGVzdCB0aW1lb3V0CitNYWduaXR1ZGUucnVuKHNldHVwTGlzdCwgdGVzdExpc3RT
dHlsaW5nLCBNYWduaXR1ZGUuTElORUFSKTsKK3NhbmRib3gucmVtb3ZlQ2hpbGQoc2FuZGJveC5m
aXJzdENoaWxkKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM5
ODAxN2YuLmJjZTM1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMi0yOCAg
QWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAg
ICBGaXggcG90ZW50aWFsIHN1cGVybGluZWFyIHJ1bnRpbWUgb2YgbXVsdGlwbGUgaW5kaXJlY3Qg
YWRqZW5jZW55IGNvbWJpbmF0b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzUwODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBIHNlcXVlbmNlIG9mIGluZGlyZWN0IGFkamVuY2VuY3kgY29tYmluYXRv
ciBzdWNoIGFzICJsaSB+IGxpIH4gbGEiIGNvdWxkIHdpdGggdGhlCisgICAgICAgIGZvcm1lciBh
bGdvcml0aG0gcG90ZW50aWFsbHkgZG8gYW4gcXVhZHJhdGljIG51bWJlciBvZiBlbGVtZW50IG1h
dGNoZXMuCisgICAgICAgIFRoZSByZWN1cnNpdmUgbWF0Y2hpbmcgYWxnb3JpdGhtIG5vdyBkZXRl
Y3RzIGNhc2VzIHdoZXJlIGFsbCBzaWJsaW5ncyBoYXZlCisgICAgICAgIGZhaWxlZCBvbmUgaW5k
aXJlY3Qgc2libGluZyBtYXRjaCBhbmQgZmFpbHMgdGhlIGVudGlyZSBzZWxlY3Rvci4KKworICAg
ICAgICBUZXN0OiBwZXJmL25lc3RlZC1jb21iaW5lZC1zZWxlY3RvcnMuaHRtbAorCisgICAgICAg
ICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrU2VsZWN0b3IpOiBSZXR1cm4gU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIHdo
ZW4KKyAgICAgICAgYWxsIHNpYmxpbmdzIGhhdmUgZmFpbGVkIGEgc2VsZWN0b3IgY29tcG9uZW50
LgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDogQWRkIFNlbGVjdG9yRmFpbHNBbGxT
aWJsaW5ncyBlbnVtIHZhbHVlCisKIDIwMTItMDEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBnZGtfc2NyZWVuX2dldF9t
b25pdG9yX3dvcmthcmVhKCkgd2hlbiBhdmFpbGFibGUgZm9yIHNjcmVlbkF2YWlsYWJsZVJlY3Qo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBkNGYyNzEwLi4zNWQ1
MTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDQ1LDEwICs0
NDUsMTEgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIH0KIAogLy8gUmVjdXJzaXZlIGNoZWNrIG9mIHNl
bGVjdG9ycyBhbmQgY29tYmluYXRvcnMKLS8vIEl0IGNhbiByZXR1cm4gMyBkaWZmZXJlbnQgdmFs
dWVzOgotLy8gKiBTZWxlY3Rvck1hdGNoZXMgICAgICAgICAtIHRoZSBzZWxlY3RvciBtYXRjaGVz
IHRoZSBlbGVtZW50IGUKLS8vICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAgLSB0aGUgc2VsZWN0
b3IgZmFpbHMgZm9yIHRoZSBlbGVtZW50IGUKLS8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkg
LSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9yIGFuY2VzdG9yIG9m
IGUKKy8vIEl0IGNhbiByZXR1cm4gNCBkaWZmZXJlbnQgdmFsdWVzOgorLy8gKiBTZWxlY3Rvck1h
dGNoZXMgICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCisvLyAq
IFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgdGhlIGVs
ZW1lbnQgZQorLy8gKiBTZWxlY3RvckZhaWxzQWxsU2libGluZ3MgLSB0aGUgc2VsZWN0b3IgZmFp
bHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9mIGUKKy8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRl
bHkgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvciBhbmNlc3Rv
ciBvZiBlCiBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpj
aGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIFZpc2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1h
dGNoVHlwZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQ
YXJlbnRTdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1ZHKQpAQCAtNDg4LDcgKzQ4OSw3IEBA
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Vs
ZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwKICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JG
YWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4p
OwogICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBl
LCBkeW5hbWljUHNldWRvLCBmYWxzZSwgdmlzaXRlZE1hdGNoVHlwZSk7Ci0gICAgICAgICAgICBp
ZiAobWF0Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCisgICAgICAgICAgICBpZiAobWF0Y2gg
PT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KQog
ICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
QEAgLTUxMSw3ICs1MTIsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0
b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsCiAgICAgICAgICAgICB3
aGlsZSAobiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIG4gPSBuLT5w
cmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAgIGlmICghbikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVj
dG9yRmFpbHNBbGxTaWJsaW5nczsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obik7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQ
c2V1ZG8sIGZhbHNlLCB2aXNpdGVkTWF0Y2hUeXBlKTsKICAgICAgICAgfQpAQCAtNTI2LDEwICs1
MjcsMTAgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6
Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLAogICAgICAgICAgICAgd2hpbGUgKG4gJiYg
IW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBuID0gbi0+cHJldmlvdXNTaWJs
aW5nKCk7CiAgICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVj
dG9yRmFpbHNMb2NhbGx5OworICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQWxs
U2libGluZ3M7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwogICAg
ICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5h
bWljUHNldWRvLCBmYWxzZSwgdmlzaXRlZE1hdGNoVHlwZSk7Ci0gICAgICAgICAgICBpZiAobWF0
Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCisgICAgICAgICAgICBpZiAobWF0Y2ggPT0gU2Vs
ZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5ncyB8fCBtYXRj
aCA9PSBTZWxlY3RvckZhaWxzQ29tcGxldGVseSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWF0
Y2g7CiAgICAgICAgIH07CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCmluZGV4IDQ4YTZkOWIuLmQ2NmRlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU2VsZWN0b3JDaGVja2VyIHsKIHB1Ymxp
YzoKICAgICBTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29sIHN0cmljdFBhcnNpbmcpOwog
Ci0gICAgZW51bSBTZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzLCBTZWxlY3RvckZhaWxz
TG9jYWxseSwgU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgfTsKKyAgICBlbnVtIFNlbGVjdG9yTWF0
Y2ggeyBTZWxlY3Rvck1hdGNoZXMsIFNlbGVjdG9yRmFpbHNMb2NhbGx5LCBTZWxlY3RvckZhaWxz
QWxsU2libGluZ3MsIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IH07CiAgICAgZW51bSBWaXNpdGVk
TWF0Y2hUeXBlIHsgVmlzaXRlZE1hdGNoRGlzYWJsZWQsIFZpc2l0ZWRNYXRjaEVuYWJsZWQgfTsK
ICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc0Zh
c3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKICAgICBTZWxlY3Rvck1hdGNoIGNo
ZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1
ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgVmlzaXRlZE1hdGNoVHlwZSwgUmVuZGVyU3R5bGUqID0g
MCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0Owo=
</data>
<flag name="review"
          id="121302"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121085</attachid>
            <date>2012-01-04 01:43:25 -0800</date>
            <delta_ts>2012-01-05 02:57:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch7</filename>
            <type>text/plain</type>
            <size>7520</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MzIzYzZhLi5lY2FjOTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTIt
MjggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICBUZXN0IG9mIHN0eWxpbmcgcGVyZm9ybWFuY2Ugb2Ygc2VsZWN0b3JzIHdpdGggbXVsdGlw
bGUgaW5kaXJlY3QgY29tYmluYXRvcnMKKyAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzUwODMKKworICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgKiBwZXJmL25lc3RlZC1jb21iaW5lZC1zZWxlY3RvcnMuaHRtbDogQWRkZWQu
CisKIDIwMTItMDEtMDMgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5v
cmc+CiAKICAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSBmb3Igb3V0bGluZSBpcyBub3QgaW1wbGVt
ZW50ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wZXJmL25lc3RlZC1jb21iaW5lZC1zZWxl
Y3RvcnMuaHRtbCBiL0xheW91dFRlc3RzL3BlcmYvbmVzdGVkLWNvbWJpbmVkLXNlbGVjdG9ycy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZGVjZjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wZXJmL25lc3RlZC1jb21iaW5lZC1zZWxlY3RvcnMuaHRt
bApAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2
IGlkPSdzYW5kYm94Jz48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9tYWduaXR1ZGUtcGVyZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGxpc3Q7Cit2YXIgc3RhY2s7Cit2YXIgc2FuZGJveCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW5kYm94Jyk7CisKKy8vIENoZWNrIHRoYXQgbG9u
ZyBzZXF1ZW5jZXMgb2YgY29tYmluZWQgc2VsZWN0b3JzIGhhcyBsaW5lYXIgcGVyZm9ybWFuY2Ug
KHBlciBzdHlsZWQgZWxlbWVudCkKKworZnVuY3Rpb24gc2V0dXBMaXN0KG1hZ25pdHVkZSkKK3sK
KyAgICBpZiAoc2FuZGJveC5maXJzdENoaWxkKQorICAgICAgICBzYW5kYm94LnJlbW92ZUNoaWxk
KHNhbmRib3guZmlyc3RDaGlsZCk7CisgICAgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3VsJyk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hZ25pdHVkZTsgKytpKSB7CisgICAg
ICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7CisgICAgICAgIGxpLnNl
dEF0dHJpYnV0ZSgnaWQnLCd1bmlxdWUnK2kpOyAvLyBhZGQgdW5pcXVlIGlkIGVuc3VyZSB0aGUg
c3R5bGVzIGFyZSBub3QgYXV0by1zaGFyZWQKKyAgICAgICAgbGlzdC5hcHBlbmRDaGlsZChsaSk7
CisgICAgfQorICAgIHNhbmRib3guYXBwZW5kQ2hpbGQobGlzdCk7Cit9CisKK2Z1bmN0aW9uIHNl
dHVwU3RhY2sobWFnbml0dWRlKQoreworICAgIGlmIChzYW5kYm94LmZpcnN0Q2hpbGQpCisgICAg
ICAgIHNhbmRib3gucmVtb3ZlQ2hpbGQoc2FuZGJveC5maXJzdENoaWxkKTsKKyAgICBzdGFjayA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBjdXIgPSBzdGFjazsKKwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFnbml0dWRlOyArK2kpIHsKKyAgICAgICAgdmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuc2V0QXR0cmli
dXRlKCdpZCcsJ3VuaXF1ZScraSk7CisgICAgICAgIGN1ci5hcHBlbmRDaGlsZChkaXYpOworICAg
ICAgICBjdXIgPSBkaXY7CisgICAgfQorICAgIHNhbmRib3guYXBwZW5kQ2hpbGQoc3RhY2spOwor
fQorCitmdW5jdGlvbiB0ZXN0TGlzdFN0eWxpbmcobWFnbml0dWRlKQoreworICAgIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoImxhIH4gbGkgfiBsaSIpOworfQorCitmdW5jdGlvbiB0ZXN0U3Rh
Y2tTdHlsaW5nKG1hZ25pdHVkZSkKK3sKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJk
YXYgZGl2IGRpdiIpOworfQorCitNYWduaXR1ZGUuZGVzY3JpcHRpb24oJ1Rlc3RzIHN0eWxpbmcg
bXVsdGlwbGUgY29tYmluYXRvcnMgaGF2ZSBsaW5lYXIgcGVyZm9ybWFuY2UnKTsKK01hZ25pdHVk
ZS5ydW4oc2V0dXBTdGFjaywgdGVzdFN0YWNrU3R5bGluZywgTWFnbml0dWRlLkxJTkVBUik7Citz
YW5kYm94LnJlbW92ZUNoaWxkKHNhbmRib3guZmlyc3RDaGlsZCk7CitNYWduaXR1ZGUuX251bVBv
aW50cz05OyAvLyBMaW1pdCB0aGUgbWF4IHRlc3QgbWFnbml0dWRlIHNpbmNlIGl0IHRyaWdnZXJz
IGEgdGVzdCB0aW1lb3V0CitNYWduaXR1ZGUucnVuKHNldHVwTGlzdCwgdGVzdExpc3RTdHlsaW5n
LCBNYWduaXR1ZGUuTElORUFSKTsKK3NhbmRib3gucmVtb3ZlQ2hpbGQoc2FuZGJveC5maXJzdENo
aWxkKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQyZDQyMzUu
Ljg3MWNmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMi0yOCAgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBGaXgg
cG90ZW50aWFsIHN1cGVybGluZWFyIHJ1bnRpbWUgb2YgbXVsdGlwbGUgaW5kaXJlY3QgYWRqZW5j
ZW55IGNvbWJpbmF0b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzUwODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIHNlcXVlbmNlIG9mIGluZGlyZWN0IGFkamVuY2VuY3kgY29tYmluYXRvciBzdWNo
IGFzICJsaSB+IGxpIH4gbGEiIGNvdWxkIHdpdGggdGhlCisgICAgICAgIGZvcm1lciBhbGdvcml0
aG0gcG90ZW50aWFsbHkgZG8gYW4gcXVhZHJhdGljIG51bWJlciBvZiBlbGVtZW50IG1hdGNoZXMu
CisgICAgICAgIFRoZSByZWN1cnNpdmUgbWF0Y2hpbmcgYWxnb3JpdGhtIG5vdyBkZXRlY3RzIGNh
c2VzIHdoZXJlIGFsbCBzaWJsaW5ncyBoYXZlCisgICAgICAgIGZhaWxlZCBvbmUgaW5kaXJlY3Qg
c2libGluZyBtYXRjaCBhbmQgZmFpbHMgdGhlIGVudGlyZSBzZWxlY3Rvci4KKworICAgICAgICBU
ZXN0OiBwZXJmL25lc3RlZC1jb21iaW5lZC1zZWxlY3RvcnMuaHRtbAorCisgICAgICAgICogY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IpOiBSZXR1cm4gU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIHdoZW4KKyAg
ICAgICAgYWxsIHNpYmxpbmdzIGhhdmUgZmFpbGVkIGEgc2VsZWN0b3IgY29tcG9uZW50LgorICAg
ICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDogQWRkIFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5n
cyBlbnVtIHZhbHVlCisKIDIwMTItMDEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBzY3JvbGxiYXJzIHNpemUgd2l0aCBH
VEsrIDMueApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBkNGYyNzEw
Li4zNWQ1MTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDQ1
LDEwICs0NDUsMTEgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVj
dG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIH0KIAogLy8gUmVjdXJzaXZlIGNoZWNr
IG9mIHNlbGVjdG9ycyBhbmQgY29tYmluYXRvcnMKLS8vIEl0IGNhbiByZXR1cm4gMyBkaWZmZXJl
bnQgdmFsdWVzOgotLy8gKiBTZWxlY3Rvck1hdGNoZXMgICAgICAgICAtIHRoZSBzZWxlY3RvciBt
YXRjaGVzIHRoZSBlbGVtZW50IGUKLS8vICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAgLSB0aGUg
c2VsZWN0b3IgZmFpbHMgZm9yIHRoZSBlbGVtZW50IGUKLS8vICogU2VsZWN0b3JGYWlsc0NvbXBs
ZXRlbHkgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9yIGFuY2Vz
dG9yIG9mIGUKKy8vIEl0IGNhbiByZXR1cm4gNCBkaWZmZXJlbnQgdmFsdWVzOgorLy8gKiBTZWxl
Y3Rvck1hdGNoZXMgICAgICAgICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBl
CisvLyAqIFNlbGVjdG9yRmFpbHNMb2NhbGx5ICAgICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3Ig
dGhlIGVsZW1lbnQgZQorLy8gKiBTZWxlY3RvckZhaWxzQWxsU2libGluZ3MgLSB0aGUgc2VsZWN0
b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9mIGUKKy8vICogU2VsZWN0b3JGYWlsc0Nv
bXBsZXRlbHkgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvciBh
bmNlc3RvciBvZiBlCiBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVj
a2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVkb0lk
JiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIFZpc2l0ZWRNYXRjaFR5cGUgdmlz
aXRlZE1hdGNoVHlwZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVs
ZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoU1ZHKQpAQCAtNDg4LDcgKzQ4
OSw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwKICAgICAgICAgICAgICAgICByZXR1cm4gU2Vs
ZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG4pOwogICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Io
c2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgdmlzaXRlZE1hdGNoVHlwZSk7Ci0gICAgICAg
ICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCisgICAgICAgICAgICBpZiAo
bWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNDb21wbGV0
ZWx5KQogICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKQEAgLTUxMSw3ICs1MTIsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2gg
U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsCiAgICAgICAg
ICAgICB3aGlsZSAobiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIG4g
PSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAgIGlmICghbikKLSAgICAgICAgICAg
ICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5nczsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obik7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIGR5
bmFtaWNQc2V1ZG8sIGZhbHNlLCB2aXNpdGVkTWF0Y2hUeXBlKTsKICAgICAgICAgfQpAQCAtNTI2
LDEwICs1MjcsMTAgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLAogICAgICAgICAgICAgd2hpbGUg
KG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBuID0gbi0+cHJldmlv
dXNTaWJsaW5nKCk7CiAgICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFNlbGVjdG9yRmFpbHNMb2NhbGx5OworICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZh
aWxzQWxsU2libGluZ3M7CiAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4p
OwogICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBl
LCBkeW5hbWljUHNldWRvLCBmYWxzZSwgdmlzaXRlZE1hdGNoVHlwZSk7Ci0gICAgICAgICAgICBp
ZiAobWF0Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCisgICAgICAgICAgICBpZiAobWF0Y2gg
PT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFpbHNBbGxTaWJsaW5ncyB8
fCBtYXRjaCA9PSBTZWxlY3RvckZhaWxzQ29tcGxldGVseSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbWF0Y2g7CiAgICAgICAgIH07CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5oCmluZGV4IDQ4YTZkOWIuLmQ2NmRlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU2VsZWN0b3JDaGVja2VyIHsK
IHB1YmxpYzoKICAgICBTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29sIHN0cmljdFBhcnNp
bmcpOwogCi0gICAgZW51bSBTZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzLCBTZWxlY3Rv
ckZhaWxzTG9jYWxseSwgU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgfTsKKyAgICBlbnVtIFNlbGVj
dG9yTWF0Y2ggeyBTZWxlY3Rvck1hdGNoZXMsIFNlbGVjdG9yRmFpbHNMb2NhbGx5LCBTZWxlY3Rv
ckZhaWxzQWxsU2libGluZ3MsIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IH07CiAgICAgZW51bSBW
aXNpdGVkTWF0Y2hUeXBlIHsgVmlzaXRlZE1hdGNoRGlzYWJsZWQsIFZpc2l0ZWRNYXRjaEVuYWJs
ZWQgfTsKICAgICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9v
bCBpc0Zhc3RDaGVja2FibGVTZWxlY3RvciA9IGZhbHNlKSBjb25zdDsKICAgICBTZWxlY3Rvck1h
dGNoIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgUHNldWRvSWQmIGR5bmFt
aWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgVmlzaXRlZE1hdGNoVHlwZSwgUmVuZGVyU3R5
bGUqID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>