<?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>28306</bug_id>
          
          <creation_ts>2009-08-14 09:18:15 -0700</creation_ts>
          <short_desc>double-clicking a word inside &lt;b&gt; beside newline select two words</short_desc>
          <delta_ts>2009-12-17 00:53:29 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</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>27204</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="MORITA Hajime">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>michael.vm</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>140246</commentid>
    <comment_count>0</comment_count>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-08-14 09:18:15 -0700</bug_when>
    <thetext>Overview:
Double-clicking a word to select that word 
unexpectedly results two-word selected.

Steps to Reproduce:
1. open attached file
2. double click &quot;selectme&quot;

Actual Result:
&quot;foo selectme&quot; is selected(hilightened)

Expected Result:
&quot;selectme&quot; is selected.

Build Date &amp; Platform: 
trunk r47196, Mac OS 10.5.7

Additional Information:
this bug is from chromium
http://code.google.com/p/chromium/issues/detail?id=6396
(and privately confirmed at Safari and WebKit trunk)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140247</commentid>
    <comment_count>1</comment_count>
      <attachid>34845</attachid>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-08-14 09:19:08 -0700</bug_when>
    <thetext>Created attachment 34845
html to reproduce.

html to reproduce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140250</commentid>
    <comment_count>2</comment_count>
      <attachid>34847</attachid>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-08-14 09:37:20 -0700</bug_when>
    <thetext>Created attachment 34847
a small fix to use string length from RenderText instead of inline box</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140321</commentid>
    <comment_count>3</comment_count>
      <attachid>34847</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-14 13:20:01 -0700</bug_when>
    <thetext>Comment on attachment 34847
a small fix to use string length from RenderText instead of inline box

This does not look like the right fix to me. I don&apos;t have time to study the issue at this time, and I could be wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140359</commentid>
    <comment_count>4</comment_count>
      <attachid>34847</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-14 15:20:09 -0700</bug_when>
    <thetext>Comment on attachment 34847
a small fix to use string length from RenderText instead of inline box

Needs ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140414</commentid>
    <comment_count>5</comment_count>
      <attachid>34883</attachid>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-08-14 19:49:41 -0700</bug_when>
    <thetext>Created attachment 34883
patch update 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140416</commentid>
    <comment_count>6</comment_count>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-08-14 19:52:42 -0700</bug_when>
    <thetext>Thank you for reviewing.
I updated the patch
- including some more tests (for confidence), and
- appending ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140915</commentid>
    <comment_count>7</comment_count>
      <attachid>34883</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 17:29:26 -0700</bug_when>
    <thetext>Comment on attachment 34883
patch update 1

I assume you meant to mark this as a patch. :)  Note that tools like &quot;bugzilla-tool post-diff&quot; or &quot;git-send-bugzilla&quot; will do all the patch/review marking automatically for you. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140916</commentid>
    <comment_count>8</comment_count>
      <attachid>34883</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-17 17:31:12 -0700</bug_when>
    <thetext>Comment on attachment 34883
patch update 1

This change contains a .DS_Store file.  We don&apos;t check those in.

is &quot;MORITA&quot; how you would normally capitalize your name?   I notice that your gmail account has one more r than your name, is either a typo?

There are tabs in the ChangeLog, that will cause the commit to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141108</commentid>
    <comment_count>9</comment_count>
      <attachid>35046</attachid>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-08-18 09:57:55 -0700</bug_when>
    <thetext>Created attachment 35046
patch update 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141113</commentid>
    <comment_count>10</comment_count>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-08-18 10:06:10 -0700</bug_when>
    <thetext>Wow, bugzilla-tool does work! Thank you for your advice, Eric.

this patch
- remove accidentally checked-in .DS_Store files, and
- untabify my ChangeLog entries.

BTW, capitalizing family name is my style, as some other Japanese people does.
- http://www.sljfaq.org/afaq/japanesenames.html
And I choose &quot;morrita&quot; for gmail address just because 
&quot;morita&quot; was already taken;-)
Thanks for the thought, anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141323</commentid>
    <comment_count>11</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-08-18 16:52:21 -0700</bug_when>
    <thetext>An unsolicited comment... It seems that editing/inserting/editable-html-element.html is failing with your patch. If the new behavior is better, you may need to fix the result of the test. Otherwise, it would help bugs of your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141712</commentid>
    <comment_count>12</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-08-19 19:36:03 -0700</bug_when>
    <thetext>Hmm I&apos;m sorry. I&apos;m not seeing the failure now. Maybe I did something wrong... Please just ignore my comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154395</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-13 13:00:39 -0700</bug_when>
    <thetext>What&apos;s the status of this patch?  I don&apos;t know this code, but the patch is correctly formated, looks small, and purpose to change behavior that is definitely buggy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154402</commentid>
    <comment_count>14</comment_count>
      <attachid>35046</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-13 13:13:04 -0700</bug_when>
    <thetext>Comment on attachment 35046
patch update 2

Thanks for tackling this.

I believe this code change is not quite right. It may make the word break work correctly in this case, but it is probably not right in all cases for the backwards text iterator.

The backwards text iterator does need to detect that there&apos;s a word break here, but it is not good for it to do this by just emitting all the trailing whitespace that happens to be in the string. I suspect there are also cases where there could be a line break but no actual whitespace in the string, depending on what element comes after the string. One example I can think of would be a subsequent text node that is entirely whitespace.

We should consider carefully why the forward text iterator has whitespace there and figure out how to do the equivalent for backward. The forward iterator definitely does *not* use the trailing whitespace in the DOM string to do this.

&gt; +    // use str.length() instead of caretMaxOffset()
&gt; +    // because caretMaxOffset() is based on InlineBox and not considering trailing whitespaces,
&gt; +    // which should be handled during word-boundary detection.

There should be a capital &quot;U&quot; on use, and this should be broken into lines of similar length.

&gt; +    if (m_positionEndOffset == 0)
&gt; +      return false;

WebKit style is to use !m_positionEndOffset rather than &quot;== 0&quot; and the second line should be indented four spaces, not two.

review- for now. It may turn out that with more analysis we conclude that this is the best fix, but I suspect that it&apos;s not quite right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166728</commentid>
    <comment_count>15</comment_count>
      <attachid>43924</attachid>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-11-26 07:45:06 -0800</bug_when>
    <thetext>Created attachment 43924
patch revised</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166735</commentid>
    <comment_count>16</comment_count>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-11-26 08:03:41 -0800</bug_when>
    <thetext>Thank you for reviewing. 

I&apos;ve investingated TextIterator, 
And now I feels that it&apos;s hard to make SimplifiedBackwardsTextIterator to follow TextIterator way
because:

- text boundary detection need &quot;real&quot; whitespace inside RenderText object, 
  but TextIterator::emitCharacter() and SimplifiedBackwardsTextIterator::emitCharacter()
  use fake character storage on TextIterator&apos;s instance, 
  which break boundary-to-offset computation, and
- Although TextIterator traverse InlineBox to precisely collect text on the element,
  Doing such on SimplifiedBackwardsTextIterator would make it no longer &quot;simplified&quot;.

So I just lookup trailing whitespaces for each text node on
SimplifiedBackwardsTextIterator::handleTextNode(). 
It should be safe because now we inspect the string content to verify trailing whitespaces.
(My old patch didn&apos;t see the string content. It was bad thing.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167372</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:45:30 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 43924 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169350</commentid>
    <comment_count>18</comment_count>
      <attachid>43924</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-07 10:12:01 -0800</bug_when>
    <thetext>Comment on attachment 43924
patch revised

&gt; +	Bug 28306: double-clicking a word inside &lt;b&gt; beside newline select two words

Tab in change log here.

&gt; +static int collapsedSpaceLength(Node* textNode, int textEnd)
&gt; +{
&gt; +    RenderText* renderer = toRenderText(textNode-&gt;renderer());
&gt; +    String str = renderer-&gt;text();
&gt; +    int strLength = static_cast&lt;int&gt;(str.length());
&gt; +    for (int i = textEnd; i &lt; strLength; ++i)
&gt; +        if (!isCollapsibleWhitespace(str[i]))
&gt; +            return i - textEnd;
&gt; +    return strLength - textEnd;
&gt; +}

The implementation of this function is wrong. The fact that whitespace is collapsible is not enough. You need to take style into account. The right way to do that is to call RenderStyle::isCollapsibleWhitespace, which gives the correct answer. It is almost never correct to call the global isCollapsibleWhitespace function.

Also, the two line for body needs to have braces around it.

It is also unnecessarily inefficient to put the text into a string object. I would instead do this:

    const UChar* characters = renderer-&gt;text()-&gt;characters();

And then index directly into the characters array.

Also, for local variables we try to use words rather than abbreviations. The &quot;i&quot; is OK, but &quot;str&quot; is not so great. I also think &quot;length&quot; is fine, since the length is the length of the text.

To test the different whitespace modes, we need test cases that cover editable text with the CSS white-space values, normal, pre, pre-wrap, pre-line, and nowrap, covering both spaces and newline characters, and ideally tabs too, although they should basically work the same as spaces.

&gt; +    // We expand range to include trailing (collapsed) whitespaces, 
&gt; +    // which is required for word-boundary detection.
&gt; +    if (m_node != m_endNode)
&gt; +        m_positionEndOffset += collapsedSpaceLength(m_node, m_positionEndOffset);

I&apos;m not entirely sure this change is OK. It&apos;s kind of strange to hardcode this behavior down at this low level. For example, there can be leading whitespace too. Why include trailing whitespace but not leading? But I&apos;m willing to accept that we need the change if there are enough test cases, including cases where the newline is just before the word, for example. The testing right now is way too light.

review- because of the multiple issues above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171152</commentid>
    <comment_count>19</comment_count>
      <attachid>44748</attachid>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-12-12 19:20:24 -0800</bug_when>
    <thetext>Created attachment 44748
patch update 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171153</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-12 19:22:20 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44748 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171155</commentid>
    <comment_count>21</comment_count>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-12-12 19:31:25 -0800</bug_when>
    <thetext>(In reply to comment #18)

Thank you for your review.
I revised the patch again.

&gt; Tab in change log here.
Fixed.

&gt; The implementation of this function is wrong. The fact that whitespace is
&gt; collapsible is not enough. You need to take style into account. The right way
&gt; to do that is to call RenderStyle::isCollapsibleWhitespace, which gives the
&gt; correct answer. It is almost never correct to call the global
&gt; isCollapsibleWhitespace function.
&gt;
&gt; Also, the two line for body needs to have braces around it.
Fixed. 

And I Added some test cases that fails with last patch.
Using RenderStyle::isCollapsibleWhitespace() resolves the problem. 
Thank you to point it out!

&gt; It is also unnecessarily inefficient to put the text into a string object. I
&gt; would instead do this:
&gt;
&gt;     const UChar* characters = renderer-&gt;text()-&gt;characters();
&gt; 
&gt; And then index directly into the characters array.
Fixed.

&gt; Also, for local variables we try to use words rather than abbreviations. The
&gt; &quot;i&quot; is OK, but &quot;str&quot; is not so great. I also think &quot;length&quot; is fine, since the
&gt; length is the length of the text.
Fixed.

&gt; To test the different whitespace modes, we need test cases that cover editable
&gt; text with the CSS white-space values, normal, pre, pre-wrap, pre-line, and
&gt; nowrap, covering both spaces and newline characters, and ideally tabs too,
&gt; although they should basically work the same as spaces.
Added test cases for differenct white-space style values and some other edge conditions.

&gt; I&apos;m not entirely sure this change is OK. It&apos;s kind of strange to hardcode this
&gt; behavior down at this low level. (snip)
Agreed, and revised the patch trying to clarify the intention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171462</commentid>
    <comment_count>22</comment_count>
      <attachid>44748</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-14 10:24:36 -0800</bug_when>
    <thetext>Comment on attachment 44748
patch update 4

&gt; +static int collapsedSpaceLength(Node* textNode, int textEnd)
&gt; +{
&gt; +    RenderText* renderer = toRenderText(textNode-&gt;renderer());
&gt; +
&gt; +    const UChar* characters = renderer-&gt;text()-&gt;characters();
&gt; +    int length = static_cast&lt;int&gt;(renderer-&gt;text()-&gt;length());

Do we really need a typecast here? Does some compiler generate a warning without it? I&apos;d prefer to see that omitted.

&gt; +    for (int i = textEnd; i &lt; length; ++i) {
&gt; +        if (!renderer-&gt;style()-&gt;isCollapsibleWhiteSpace(characters[i]))
&gt; +            return i - textEnd;
&gt; +    }
&gt; +
&gt; +    return length - textEnd;
&gt; +}
&gt; +
&gt; +// For the purpose of word boundary detection,
&gt; +// we should iterate all visible text and trailing (collapsed) whitespaces. 
&gt; +static int iterableMaxOffset(Node* node)
&gt; +{
&gt; +    int offset = caretMaxOffset(node);
&gt; +
&gt; +    if (node-&gt;renderer() &amp;&amp; node-&gt;renderer()-&gt;isText())
&gt; +        offset += collapsedSpaceLength(node, offset);
&gt; +
&gt; +    return offset;
&gt; +}

The factoring here is a bit strange. The caller gets the renderer and then checks that it&apos;s a RenderText. But then it calls the function passing the Node*. Since it has done the type checking, it should pass a RenderText* in rather than a Node* the type checking and type casting should be in the same function.

&gt; -        m_offset = m_node ? caretMaxOffset(m_node) : 0;
&gt; +        m_offset = m_node ? iterableMaxOffset(m_node) : 0;

I am not a huge fan of the name &quot;iterable&quot; here. It would be useful to write out a couple sentences explaining what the sentence does, and then maybe someone could extract some key words to come up with a good name for the function.

r=me, but maybe consider my comments and revise again? Would be OK to land exactly as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171837</commentid>
    <comment_count>23</comment_count>
      <attachid>44874</attachid>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-12-15 06:00:42 -0800</bug_when>
    <thetext>Created attachment 44874
patch update 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171840</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-15 06:03:08 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44874 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171842</commentid>
    <comment_count>25</comment_count>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-12-15 06:11:28 -0800</bug_when>
    <thetext>Thank you for reviewing quickly!
I&apos;ve posted a revised patch.

&gt; 
&gt; Do we really need a typecast here? Does some compiler generate a warning
&gt; without it? I&apos;d prefer to see that omitted.
Fixed; It was redundant and safely removed. Thank you for pointing it out.

&gt; The factoring here is a bit strange. The caller gets the renderer and then
&gt; checks that it&apos;s a RenderText. But then it calls the function passing the
&gt; Node*. Since it has done the type checking, it should pass a RenderText* in
&gt; rather than a Node* the type checking and type casting should be in the same
&gt; function.
Fixed. 

&gt; I am not a huge fan of the name &quot;iterable&quot; here. It would be useful to write
&gt; out a couple sentences explaining what the sentence does, and then maybe
&gt; someone could extract some key words to come up with a good name for the
&gt; function.
Agreed, and tried a little more verbose name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172606</commentid>
    <comment_count>26</comment_count>
      <attachid>44874</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-16 18:11:27 -0800</bug_when>
    <thetext>Comment on attachment 44874
patch update 5

Rejecting patch 44874 from commit-queue.

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;]&quot; exit_code: 1
Last 500 characters of output:
request failed on &apos;/repository/webkit/trunk&apos;: Commit blocked by pre-commit hook (exit code 1) with output:
svnlook: Can&apos;t write to stream: Broken pipe

    The following files contain tab characters:

        trunk/LayoutTests/ChangeLog
        trunk/LayoutTests/editing/selection/doubleclick-beside-cr-span.html

    Please use spaces instead to indent.
    If you must commit a file with tabs, use svn propset to set the &quot;allow-tabs&quot; property.
 at /usr/local/git/libexec/git-core/git-svn line 558


Full output: http://webkit-commit-queue.appspot.com/results/127701</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172608</commentid>
    <comment_count>27</comment_count>
      <attachid>45030</attachid>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-12-16 18:20:22 -0800</bug_when>
    <thetext>Created attachment 45030
remove tab from ChagneLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172609</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-16 18:21:45 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45030 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172610</commentid>
    <comment_count>29</comment_count>
    <who name="MORITA Hajime">morrita</who>
    <bug_when>2009-12-16 18:24:24 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; 
&gt;         trunk/LayoutTests/ChangeLog
Remove a tab character.
&gt;         trunk/LayoutTests/editing/selection/doubleclick-beside-cr-span.html
Tab characters in this file cannot be removed.
Because the testcase examines that these tabs can be recognized as word boundaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172614</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-16 18:40:31 -0800</bug_when>
    <thetext>Because of bug 27204 svn-apply does not understand how to apply SVN properties.  Thus the commit-queue does not understand how to apply svn properties.  Thus this patch cannot be commit-queue&apos;d.  It will need to be landed manually, or bug 27204 will have to be fixed first. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172638</commentid>
    <comment_count>31</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-16 21:39:37 -0800</bug_when>
    <thetext>I&apos;ll try to check it in manually.

&gt; @@ -2863,7 +2879,6 @@
&gt;          Unskip a bunch of passing http/navigation tests.
&gt;  
&gt;          * platform/qt/Skipped:
&gt; -
&gt;  2009-11-22  Chris Fleizach  &lt;cfleizach@apple.com&gt;
&gt;  
&gt;          Reviewed by Oliver Hunt.

I&apos;ll remove this chunk as this looks a mistake :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172643</commentid>
    <comment_count>32</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-16 22:30:49 -0800</bug_when>
    <thetext>Committed r52235: &lt;http://trac.webkit.org/changeset/52235&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172668</commentid>
    <comment_count>33</comment_count>
      <attachid>45030</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-12-17 00:53:29 -0800</bug_when>
    <thetext>Comment on attachment 45030
remove tab from ChagneLog

Dropping review?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34845</attachid>
            <date>2009-08-14 09:19:08 -0700</date>
            <delta_ts>2009-08-14 09:19:08 -0700</delta_ts>
            <desc>html to reproduce.</desc>
            <filename>reduction-6396.html</filename>
            <type>text/html</type>
            <size>58</size>
            <attacher name="MORITA Hajime">morrita</attacher>
            
              <data encoding="base64">PGRpdiBzdHlsZT0id2lkdGg6MTAiPg0KZm9vIGJhciA8Yj5zZWxlY3RtZSA8L2I+DQo8L2Rpdj4N
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34847</attachid>
            <date>2009-08-14 09:37:20 -0700</date>
            <delta_ts>2009-08-14 19:49:41 -0700</delta_ts>
            <desc>a small fix to use string length from RenderText instead of inline box</desc>
            <filename>28306.diff</filename>
            <type>text/plain</type>
            <size>5680</size>
            <attacher name="MORITA Hajime">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJl
c2lkZS1jci1zcGFuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4yMjc0ZWZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNyBAQAorVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlja2luZyBhIHdv
cmQgdGhhdCBmb2xsb3dzIG5ld2xpbmUgYW5kIHNwYW4KKworYWJjZCBlZmdoIHRvc2VsZWN0CitG
YWlsZWQgdG90ZXN0MQorICBFeHBlY3RlZDogc2VsZWN0CisgIEFjdHVhbDogdG9zZWxlY3QKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVz
aWRlLWNyLXNwYW4uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLWJlc2lkZS1jci1zcGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNzdkNmY5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWwKQEAgLTAsMCArMSw4NiBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGZhbHNlKTsKKyAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCh0cnVl
KTsKK30KKworZnVuY3Rpb24gZ2V0UG9zaXRpb25PZk5vZGUoaWQpCit7CisgICAgdmFyIG4gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgdmFyIHBvcyA9IHt4OiAwLCB5OiAwfTsK
KworICAgIHdoaWxlIChuKSB7CisgICAgICAgIHBvcy54ICs9IG4ub2Zmc2V0TGVmdCArIG4uY2xp
ZW50TGVmdDsKKyAgICAgICAgcG9zLnkgKz0gbi5vZmZzZXRUb3AgKyBuLmNsaWVudFRvcDsKKyAg
ICAgICAgbiA9IG4ub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gcG9zOworfQorCitm
dW5jdGlvbiBkb3VibGVDbGlja05vZGUoaWQpCit7CisgICAgdmFyIHBvcyA9IGdldFBvc2l0aW9u
T2ZOb2RlKGlkKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhwb3MueCArIDIsIHBvcy55
ICsgMik7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubGVh
cEZvcndhcmQoMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVy
LmxlYXBGb3J3YXJkKDEwMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZl
bnRTZW5kZXIubGVhcEZvcndhcmQoMSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQor
CitmdW5jdGlvbiBkb1Rlc3QodGVzdElkLCBleHBlY3RlZFRleHQpCit7CisgICAgLy8gU2ltdWxh
dGUgYSBkb3VibGUgY2xpY2suCisgICAgZG91YmxlQ2xpY2tOb2RlKHRlc3RJZCk7CisKKyAgICAv
LyBHZXQgdGhlIHRleHQgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgorICAgIHZhciBzZWwgPSB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgdmFyIGFjdHVhbFRleHQgPSBzZWwuZ2V0UmFuZ2VB
dCgwKS50b1N0cmluZygpOworCisgICAgaWYgKGV4cGVjdGVkVGV4dCA9PSBhY3R1YWxUZXh0KSB7
CisgICAgICAgIGxvZygiUGFzc2VkICIgKyB0ZXN0SWQpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGxvZygiRmFpbGVkICIgKyB0ZXN0SWQpOworICAgICAgICBsb2coIiAgRXhwZWN0ZWQ6ICIgKyBl
eHBlY3RlZFRleHQpOworICAgICAgICBsb2coIiAgQWN0dWFsOiAiICsgYWN0dWFsVGV4dCk7Cisg
ICAgfQorCit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgdmFyIGwgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnbG9nJyk7CisgICAgbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtc2cpKTsKKyAgICBsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2JyJykpOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpCit7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBkb1Rlc3QoInRvdGVzdDEiLCAic2VsZWN0Iik7
CisgICAgfQorfQorCisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
cygpIj4KKworPHA+CitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNraW5nIGEgd29yZCB0aGF0
IGZvbGxvd3MgbmV3bGluZSBhbmQgc3BhbgorPC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDoxMCI+
CithYmNkIGVmZ2ggPGIgaWQ9InRvdGVzdDEiPnRvc2VsZWN0PC9iPgorPC9kaXY+CisKKzxwcmUg
aWQ9ImxvZyI+Cis8L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAppbmRleCAwOGZkYTE2Li43ZDc0NDkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApA
QCAtOTQ3LDcgKzk0Nyw2IEBAIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBs
aWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIpCiAKICAgICBtX25vZGUg
PSBlbmROb2RlOwogICAgIHNldFVwRnVsbHlDbGlwcGVkU3RhY2sobV9mdWxseUNsaXBwZWRTdGFj
aywgbV9ub2RlKTsgICAgCi0gICAgbV9vZmZzZXQgPSBlbmRPZmZzZXQ7CiAgICAgbV9oYW5kbGVk
Tm9kZSA9IGZhbHNlOwogICAgIG1faGFuZGxlZENoaWxkcmVuID0gZW5kT2Zmc2V0ID09IDA7CiAK
QEAgLTk4MiwxMSArOTgxLDExIEBAIHZvaWQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRv
cjo6YWR2YW5jZSgpCiAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2Rl
LT5yZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1Rl
eHQoKSAmJiBtX25vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKSB7CiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdoYXQgYWJvdXQgQ0RBVEFfU0VDVElPTl9OT0RFPwotICAgICAg
ICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUg
JiYgbV9vZmZzZXQgPiAwKQorICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5v
ZGUgPSBoYW5kbGVUZXh0Tm9kZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJlciAm
JiAocmVuZGVyZXItPmlzSW1hZ2UoKSB8fCByZW5kZXJlci0+aXNXaWRnZXQoKSkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
ICYmIG1fb2Zmc2V0ID4gMCkKLSAgICAgICAgICAgICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGhh
bmRsZVJlcGxhY2VkRWxlbWVudCgpOworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgICAgICAgICAgICAgICAgIG1faGFu
ZGxlZE5vZGUgPSBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsgCiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxlTm9uVGV4dE5vZGUoKTsKICAg
ICAgICAgICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkKQEAgLTEwMzAsNyArMTAyOSw2IEBAIHZvaWQg
U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgIG1fbm9k
ZSA9IG5leHQ7CiAgICAgICAgIGlmIChtX25vZGUpCiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlw
cGVkU3RhdGUobV9mdWxseUNsaXBwZWRTdGFjaywgbV9ub2RlKTsKLSAgICAgICAgbV9vZmZzZXQg
PSBtX25vZGUgPyBjYXJldE1heE9mZnNldChtX25vZGUpIDogMDsKICAgICAgICAgbV9oYW5kbGVk
Tm9kZSA9IGZhbHNlOwogICAgICAgICBtX2hhbmRsZWRDaGlsZHJlbiA9IGZhbHNlOwogICAgICAg
ICAKQEAgLTEwNDksMTEgKzEwNDcsMTUgQEAgYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0
ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgaWYgKCFyZW5kZXJlci0+Zmlyc3RUZXh0Qm94
KCkgJiYgc3RyLmxlbmd0aCgpID4gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX3Bv
c2l0aW9uRW5kT2Zmc2V0ID0gbV9vZmZzZXQ7CisgICAgLy8gdXNlIHN0ci5sZW5ndGgoKSBpbnN0
ZWFkIG9mIGNhcmV0TWF4T2Zmc2V0KCkKKyAgICAvLyBiZWNhdXNlIGNhcmV0TWF4T2Zmc2V0KCkg
aXMgYmFzZWQgb24gSW5saW5lQm94IGFuZCBub3QgY29uc2lkZXJpbmcgdHJhaWxpbmcgd2hpdGVz
cGFjZXMsCisgICAgLy8gd2hpY2ggc2hvdWxkIGJlIGhhbmRsZWQgZHVyaW5nIHdvcmQtYm91bmRh
cnkgZGV0ZWN0aW9uLgorICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSAobV9ub2RlID09IG1fZW5k
Tm9kZSkgPyBtX2VuZE9mZnNldCA6IHN0ci5sZW5ndGgoKTsKKyAgICBpZiAobV9wb3NpdGlvbkVu
ZE9mZnNldCA9PSAwKQorICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9vZmZzZXQgPSAobV9u
b2RlID09IG1fc3RhcnROb2RlKSA/IG1fc3RhcnRPZmZzZXQgOiAwOwogICAgIG1fcG9zaXRpb25O
b2RlID0gbV9ub2RlOwotICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IG1fb2Zmc2V0OworICAg
IG1fcG9zaXRpb25TdGFydE9mZnNldCA9IChtX25vZGUgPT0gbV9zdGFydE5vZGUpID8gbV9zdGFy
dE9mZnNldCA6IDA7CiAgICAgbV90ZXh0TGVuZ3RoID0gbV9wb3NpdGlvbkVuZE9mZnNldCAtIG1f
cG9zaXRpb25TdGFydE9mZnNldDsKICAgICBtX3RleHRDaGFyYWN0ZXJzID0gc3RyLmNoYXJhY3Rl
cnMoKSArIG1fcG9zaXRpb25TdGFydE9mZnNldDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4
IDQ0YWYzZTUuLmI2YjIwZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTE3NSw3ICsxNzUs
NiBAQCBwcml2YXRlOgogICAgIC8vIEN1cnJlbnQgcG9zaXRpb24sIG5vdCBuZWNlc3NhcmlseSBv
ZiB0aGUgdGV4dCBiZWluZyByZXR1cm5lZCwgYnV0IHBvc2l0aW9uCiAgICAgLy8gYXMgd2Ugd2Fs
ayB0aHJvdWdoIHRoZSBET00gdHJlZS4KICAgICBOb2RlKiBtX25vZGU7Ci0gICAgaW50IG1fb2Zm
c2V0OwogICAgIGJvb2wgbV9oYW5kbGVkTm9kZTsKICAgICBib29sIG1faGFuZGxlZENoaWxkcmVu
OwogICAgIEJpdFN0YWNrIG1fZnVsbHlDbGlwcGVkU3RhY2s7Cg==
</data>
<flag name="review"
          id="19042"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34883</attachid>
            <date>2009-08-14 19:49:41 -0700</date>
            <delta_ts>2009-08-18 09:57:51 -0700</delta_ts>
            <desc>patch update 1</desc>
            <filename>28306.diff</filename>
            <type>text/plain</type>
            <size>9563</size>
            <attacher name="MORITA Hajime">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzLy5EU19TdG9yZSBiL0xheW91dFRlc3RzLy5EU19TdG9y
ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTUwNzE0CkJpbmFyeSBmaWxl
cyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvLkRTX1N0b3JlIGRpZmZlcgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM0
OGY5ODcuLjg3OWU1NjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0wOC0xNCAgTU9SSVRB
IEhhamltZSAgPG1vcnJpdGFAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyODMwNjogZG91YmxlLWNsaWNraW5nIGEgd29yZCBp
bnNpZGUgPGI+IGJlc2lkZSBuZXdsaW5lIHNlbGVjdCB0d28gd29yZHMKKwlodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzMDYKKworCVNpbXBsaWZpZWRCYWNrd2FyZHNU
ZXh0SXRlcmF0b3IgbWlzc2VkIHRyYWlsaW5nIHdoaXRlc3BhY2VzIGp1c3QKKwliZWZvcmUgZm9s
ZGluZyBsaW5lLWJyZWFrLCB3aGljaCBpcyB1c2VkIHRvIGRldGVjdCB3b3JkCisJYm91bmRhcmll
cy4gVGhpcyBjaGFuZ2UgZml4IHRvIHVzZSBSZW5kZXJUZXh0Ojp0ZXh0KCkubGVuZ3RoKCkgdG8K
KwlleHRyYWN0IHRleHQgZnJvbSByZW5kZXIgb2JqZWN0cyBiZWNhdXNlIFJlbmRlclRleHQ6OnRl
eHQoKSBjb250YWlucworCXRyYWlsaW5nIHdoaXRlc3BhY2VzIGVnYXJkbGVzcyBvZiBpdHMgbGF5
b3V0IHJlc3VsdC4KKwkKKwlvcmlnaW5hbCBjb2RlIHVzZXMgSW5saW5lVGV4dEJveDo6bGVuKCkg
dmlhIGNhcmV0TWF4T2Zmc2V0KCksCisJd2hpY2ggZG9lcyBub3QgY29udGFpbnMgdHJhaWxpbmcg
d2hpdGVzcGFjZXMuCisJCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2st
YmVzaWRlLWNyLXNwYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi5odG1sOiBBZGRlZC4KKwogMjAwOS0w
OC0xMyAgQXJpeWEgSGlkYXlhdCAgPGFyaXlhLmhpZGF5YXRAbm9raWEuY29tPgogCiAgICAgICAg
IFJ1YmJlci1zdGFtcGVkIGJ5IEdlb3JnZSBTdGFpa29zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy8uRFNfU3RvcmUgYi9MYXlvdXRUZXN0cy9lZGl0aW5nLy5EU19TdG9yZQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGU4ZmIxCkJpbmFyeSBmaWxlcyAvZGV2
L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvZWRpdGluZy8uRFNfU3RvcmUgZGlmZmVyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3It
c3Bhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVj
bGljay1iZXNpZGUtY3Itc3Bhbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZWQ3NDNhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNraW5nIGEgd29yZCB0aGF0
IGZvbGxvd3MgbmV3bGluZSBhbmQgc3BhbgorCittaW5pbXVtIGNhc2UKKworYWJjZCBlZmdoIHNl
bGVjdDEKK3dpdGggYW5vdGhlciB3b3JkIGFmdGVyIHRoZSBzcGFuCisKK2FiY2QgZWZnaCBpamts
IG1ub3Agc2VsZWN0MiBub3R0b3NlbGVjdAord2l0aCBhbm90aGVyIHdvcmQgaW4gc2FtZSB0aGUg
c3BhbgorCithYmNkIGVmZ2ggaWprbCBtbm9wIHNlbGVjdDMgbm90IG5vdHlldAord2l0aCBhbm90
aGVyIHdvcmQgYmVmb3JlIHRoZSBzcGFuLCBpbiB0aGUgc2FtZSBsaW5lCisKK2FiY2QgZWZnaCBp
amtsIG1ub3AgcXJzdCBzZWxlY3Q0IG5vdHlldAorUGFzc2VkIHRvdGVzdDEKK1Bhc3NlZCB0b3Rl
c3QyCitQYXNzZWQgdG90ZXN0MworUGFzc2VkIHRvdGVzdDQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFu
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM3MTJkNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJl
c2lkZS1jci1zcGFuLmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChmYWxzZSk7CisgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9u
IGdldFBvc2l0aW9uT2ZOb2RlKGlkKQoreworICAgIHZhciBuID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaWQpOworICAgIHZhciBwb3MgPSB7eDogMCwgeTogMH07CisKKyAgICB3aGlsZSAobikg
eworICAgICAgICBwb3MueCArPSBuLm9mZnNldExlZnQgKyBuLmNsaWVudExlZnQ7CisgICAgICAg
IHBvcy55ICs9IG4ub2Zmc2V0VG9wICsgbi5jbGllbnRUb3A7CisgICAgICAgIG4gPSBuLm9mZnNl
dFBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIHBvczsKK30KKworZnVuY3Rpb24gZG91YmxlQ2xp
Y2tOb2RlKGlkKQoreworICAgIHZhciBwb3MgPSBnZXRQb3NpdGlvbk9mTm9kZShpZCk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9zLnggKyAyLCBwb3MueSArIDIpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3
YXJkKDEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gZG9UZXN0
KHRlc3RJZCwgZXhwZWN0ZWRUZXh0KQoreworICAgIC8vIFNpbXVsYXRlIGEgZG91YmxlIGNsaWNr
LgorICAgIGRvdWJsZUNsaWNrTm9kZSh0ZXN0SWQpOworCisgICAgLy8gR2V0IHRoZSB0ZXh0IG9m
IHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KKyAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlv
bigpOworICAgIHZhciBhY3R1YWxUZXh0ID0gc2VsLmdldFJhbmdlQXQoMCkudG9TdHJpbmcoKTsK
KworICAgIGlmIChleHBlY3RlZFRleHQgPT0gYWN0dWFsVGV4dCkgeworICAgICAgICBsb2coIlBh
c3NlZCAiICsgdGVzdElkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2coIkZhaWxlZCAiICsg
dGVzdElkKTsKKyAgICAgICAgbG9nKCIgIEV4cGVjdGVkOiAiICsgZXhwZWN0ZWRUZXh0KTsKKyAg
ICAgICAgbG9nKCIgIEFjdHVhbDogIiArIGFjdHVhbFRleHQpOworICAgIH0KKworfQorCitmdW5j
dGlvbiBsb2cobXNnKQoreworICAgIHZhciBsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xv
ZycpOworICAgIGwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnKSk7Cisg
ICAgbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKK30KKworZnVu
Y3Rpb24gcnVuVGVzdHMoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3QxIiwgInNlbGVjdDEiKTsKKyAgICAgICAgLy8gdHJh
aWxpbmcgd2hpdGVzcGFjZXMgYXJlIHVnbHksIGJ1dCB0aGVzZSBhcmUgcHJlZXhpc3RpbmcgCisg
ICAgICAgIC8vIGJlaGF2aW91ciAtIGFsdGhvdWdoIGNvdWxkIGJlIGZpbGVkIGFzIGEgYnVnLgor
ICAgICAgICBkb1Rlc3QoInRvdGVzdDIiLCAic2VsZWN0MiAiKTsKKyAgICAgICAgZG9UZXN0KCJ0
b3Rlc3QzIiwgInNlbGVjdDMgIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0NCIsICJzZWxlY3Q0
ICIpOworICAgIH0KK30KKworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdHMoKSI+CisKKzxwPgorVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlja2luZyBhIHdvcmQg
dGhhdCBmb2xsb3dzIG5ld2xpbmUgYW5kIHNwYW4KKzwvcD4KKworPGgzPm1pbmltdW0gY2FzZTwv
aDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMHB0Ij4KK2FiY2QgZWZnaCA8YiBpZD0idG90ZXN0MSI+
c2VsZWN0MTwvYj4KKzwvZGl2PgorCis8aDM+d2l0aCBhbm90aGVyIHdvcmQgYWZ0ZXIgdGhlIHNw
YW48L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlqa2wgbW5vcCA8
YiBpZD0idG90ZXN0MiI+c2VsZWN0MjwvYj4gbm90dG9zZWxlY3QKKzwvZGl2PgorCis8aDM+d2l0
aCBhbm90aGVyIHdvcmQgaW4gc2FtZSB0aGUgc3BhbjwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDox
MDBwdCI+CithYmNkIGVmZ2ggaWprbCBtbm9wIDxiIGlkPSJ0b3Rlc3QzIj5zZWxlY3QzIG5vdDwv
Yj4gbm90eWV0Cis8L2Rpdj4KKworPGgzPndpdGggYW5vdGhlciB3b3JkIGJlZm9yZSB0aGUgc3Bh
biwgaW4gdGhlIHNhbWUgbGluZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdCI+CithYmNk
IGVmZ2ggaWprbCBtbm9wIHFyc3QgPGIgaWQ9InRvdGVzdDQiPnNlbGVjdDQ8L2I+IG5vdHlldAor
PC9kaXY+CisKKzxwcmUgaWQ9ImxvZyI+Cis8L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YmVl
NTliLi5kYzBlZTcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDA5LTA4LTE0ICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQnVnIDI4MzA2OiBkb3VibGUtY2xpY2tpbmcgYSB3b3JkIGluc2lkZSA8Yj4g
YmVzaWRlIG5ld2xpbmUgc2VsZWN0IHR3byB3b3JkcworCWh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODMwNgorCisJU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRv
ciBtaXNzZWQgdHJhaWxpbmcgd2hpdGVzcGFjZXMganVzdAorCWJlZm9yZSBmb2xkaW5nIGxpbmUt
YnJlYWssIHdoaWNoIGlzIHVzZWQgdG8gZGV0ZWN0IHdvcmQKKwlib3VuZGFyaWVzLiBUaGlzIGNo
YW5nZSBmaXggdG8gdXNlIFJlbmRlclRleHQ6OnRleHQoKS5sZW5ndGgoKSB0bworCWV4dHJhY3Qg
dGV4dCBmcm9tIHJlbmRlciBvYmplY3RzIGJlY2F1c2UgUmVuZGVyVGV4dDo6dGV4dCgpIGNvbnRh
aW5zCisJdHJhaWxpbmcgd2hpdGVzcGFjZXMgZWdhcmRsZXNzIG9mIGl0cyBsYXlvdXQgcmVzdWx0
LgorCQorCW9yaWdpbmFsIGNvZGUgdXNlcyBJbmxpbmVUZXh0Qm94OjpsZW4oKSB2aWEgY2FyZXRN
YXhPZmZzZXQoKSwKKwl3aGljaCBkb2VzIG5vdCBjb250YWlucyB0cmFpbGluZyB3aGl0ZXNwYWNl
cy4KKwkKKyAgICAgICAgVGVzdDogZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRl
LWNyLXNwYW4uaHRtbAorCisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6U2ltcGxpZmll
ZEJhY2t3YXJkc1RleHRJdGVyYXRvcik6CisJcmVtb3ZlIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3I6Om1fb2Zmc2V0CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNr
d2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKwkKKyAgICAgICAgKiBlZGl0aW5n
L1RleHRJdGVyYXRvci5oOiByZW1vdmUKKwkgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0
b3I6Om1fb2Zmc2V0IGRlY2xhcmF0aW9uLCB3aG9zZQorCSAgdmFsdWUgaXMgbm93IGNvbXB1dGVk
IG9uIGRlbWFuZC4KKwogMjAwOS0wOC0xMyAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmVydCByNDcxODUsIHRoZSBmaXggZm9yIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgxODU+LCBhcyBpdCBicm9rZSB0aGUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKaW5kZXggMDhmZGExNi4uN2Q3NDQ5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAKQEAgLTk0Nyw3ICs5NDcsNiBAQCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9y
OjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByKQogCiAgICAg
bV9ub2RlID0gZW5kTm9kZTsKICAgICBzZXRVcEZ1bGx5Q2xpcHBlZFN0YWNrKG1fZnVsbHlDbGlw
cGVkU3RhY2ssIG1fbm9kZSk7ICAgIAotICAgIG1fb2Zmc2V0ID0gZW5kT2Zmc2V0OwogICAgIG1f
aGFuZGxlZE5vZGUgPSBmYWxzZTsKICAgICBtX2hhbmRsZWRDaGlsZHJlbiA9IGVuZE9mZnNldCA9
PSAwOwogCkBAIC05ODIsMTEgKzk4MSwxMSBAQCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0
SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG1fbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJl
ci0+aXNUZXh0KCkgJiYgbV9ub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgewog
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IENEQVRBX1NFQ1RJT05fTk9ERT8K
LSAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBW
SVNJQkxFICYmIG1fb2Zmc2V0ID4gMCkKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0
eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQogICAgICAgICAgICAgICAgICAgICBtX2hh
bmRsZWROb2RlID0gaGFuZGxlVGV4dE5vZGUoKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVu
ZGVyZXIgJiYgKHJlbmRlcmVyLT5pc0ltYWdlKCkgfHwgcmVuZGVyZXItPmlzV2lkZ2V0KCkpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0g
VklTSUJMRSAmJiBtX29mZnNldCA+IDApCi0gICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5v
ZGUgPSBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVy
ZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKQorICAgICAgICAgICAgICAgICAg
ICBtX2hhbmRsZWROb2RlID0gaGFuZGxlUmVwbGFjZWRFbGVtZW50KCk7IAogICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGhhbmRsZU5vblRleHROb2Rl
KCk7CiAgICAgICAgICAgICBpZiAobV9wb3NpdGlvbk5vZGUpCkBAIC0xMDMwLDcgKzEwMjksNiBA
QCB2b2lkIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAg
ICBtX25vZGUgPSBuZXh0OwogICAgICAgICBpZiAobV9ub2RlKQogICAgICAgICAgICAgcHVzaEZ1
bGx5Q2xpcHBlZFN0YXRlKG1fZnVsbHlDbGlwcGVkU3RhY2ssIG1fbm9kZSk7Ci0gICAgICAgIG1f
b2Zmc2V0ID0gbV9ub2RlID8gY2FyZXRNYXhPZmZzZXQobV9ub2RlKSA6IDA7CiAgICAgICAgIG1f
aGFuZGxlZE5vZGUgPSBmYWxzZTsKICAgICAgICAgbV9oYW5kbGVkQ2hpbGRyZW4gPSBmYWxzZTsK
ICAgICAgICAgCkBAIC0xMDQ5LDExICsxMDQ3LDE1IEBAIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJk
c1RleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgIGlmICghcmVuZGVyZXItPmZpcnN0
VGV4dEJveCgpICYmIHN0ci5sZW5ndGgoKSA+IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgbV9wb3NpdGlvbkVuZE9mZnNldCA9IG1fb2Zmc2V0OworICAgIC8vIHVzZSBzdHIubGVuZ3Ro
KCkgaW5zdGVhZCBvZiBjYXJldE1heE9mZnNldCgpCisgICAgLy8gYmVjYXVzZSBjYXJldE1heE9m
ZnNldCgpIGlzIGJhc2VkIG9uIElubGluZUJveCBhbmQgbm90IGNvbnNpZGVyaW5nIHRyYWlsaW5n
IHdoaXRlc3BhY2VzLAorICAgIC8vIHdoaWNoIHNob3VsZCBiZSBoYW5kbGVkIGR1cmluZyB3b3Jk
LWJvdW5kYXJ5IGRldGVjdGlvbi4KKyAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gKG1fbm9kZSA9
PSBtX2VuZE5vZGUpID8gbV9lbmRPZmZzZXQgOiBzdHIubGVuZ3RoKCk7CisgICAgaWYgKG1fcG9z
aXRpb25FbmRPZmZzZXQgPT0gMCkKKyAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fb2Zmc2V0
ID0gKG1fbm9kZSA9PSBtX3N0YXJ0Tm9kZSkgPyBtX3N0YXJ0T2Zmc2V0IDogMDsKICAgICBtX3Bv
c2l0aW9uTm9kZSA9IG1fbm9kZTsKLSAgICBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPSBtX29mZnNl
dDsKKyAgICBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPSAobV9ub2RlID09IG1fc3RhcnROb2RlKSA/
IG1fc3RhcnRPZmZzZXQgOiAwOwogICAgIG1fdGV4dExlbmd0aCA9IG1fcG9zaXRpb25FbmRPZmZz
ZXQgLSBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQ7CiAgICAgbV90ZXh0Q2hhcmFjdGVycyA9IHN0ci5j
aGFyYWN0ZXJzKCkgKyBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQ7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
aAppbmRleCA0NGFmM2U1Li5iNmIyMGY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0xNzUs
NyArMTc1LDYgQEAgcHJpdmF0ZToKICAgICAvLyBDdXJyZW50IHBvc2l0aW9uLCBub3QgbmVjZXNz
YXJpbHkgb2YgdGhlIHRleHQgYmVpbmcgcmV0dXJuZWQsIGJ1dCBwb3NpdGlvbgogICAgIC8vIGFz
IHdlIHdhbGsgdGhyb3VnaCB0aGUgRE9NIHRyZWUuCiAgICAgTm9kZSogbV9ub2RlOwotICAgIGlu
dCBtX29mZnNldDsKICAgICBib29sIG1faGFuZGxlZE5vZGU7CiAgICAgYm9vbCBtX2hhbmRsZWRD
aGlsZHJlbjsKICAgICBCaXRTdGFjayBtX2Z1bGx5Q2xpcHBlZFN0YWNrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35046</attachid>
            <date>2009-08-18 09:57:55 -0700</date>
            <delta_ts>2009-11-26 07:45:00 -0800</delta_ts>
            <desc>patch update 2</desc>
            <filename>bug-28306-20090819015754.patch</filename>
            <type>text/plain</type>
            <size>9384</size>
            <attacher name="MORITA Hajime">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjNDhmOTg3Li5lYjU1YTEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDgt
MTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjgzMDY6IGRvdWJsZS1jbGlja2lu
ZyBhIHdvcmQgaW5zaWRlIDxiPiBiZXNpZGUgbmV3bGluZSBzZWxlY3QgdHdvIHdvcmRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODMwNgorCisgICAg
ICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgbWlzc2VkIHRyYWlsaW5nIHdoaXRl
c3BhY2VzIGp1c3QKKyAgICAgICAgYmVmb3JlIGZvbGRpbmcgbGluZS1icmVhaywgd2hpY2ggaXMg
dXNlZCB0byBkZXRlY3Qgd29yZAorICAgICAgICBib3VuZGFyaWVzLiBUaGlzIGNoYW5nZSBmaXgg
dG8gdXNlIFJlbmRlclRleHQ6OnRleHQoKS5sZW5ndGgoKSB0bworICAgICAgICBleHRyYWN0IHRl
eHQgZnJvbSByZW5kZXIgb2JqZWN0cyBiZWNhdXNlIFJlbmRlclRleHQ6OnRleHQoKSBjb250YWlu
cworICAgICAgICB0cmFpbGluZyB3aGl0ZXNwYWNlcyBlZ2FyZGxlc3Mgb2YgaXRzIGxheW91dCBy
ZXN1bHQuCisgICAgICAgIAorICAgICAgICBvcmlnaW5hbCBjb2RlIHVzZXMgSW5saW5lVGV4dEJv
eDo6bGVuKCkgdmlhIGNhcmV0TWF4T2Zmc2V0KCksCisgICAgICAgIHdoaWNoIGRvZXMgbm90IGNv
bnRhaW5zIHRyYWlsaW5nIHdoaXRlc3BhY2VzLgorICAgICAgICAKKyAgICAgICAgKiBlZGl0aW5n
L3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFu
Lmh0bWw6IEFkZGVkLgorCiAyMDA5LTA4LTEzICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlh
dEBub2tpYS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgR2VvcmdlIFN0YWlrb3Mu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1i
ZXNpZGUtY3Itc3Bhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ3NDNhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNraW5nIGEg
d29yZCB0aGF0IGZvbGxvd3MgbmV3bGluZSBhbmQgc3BhbgorCittaW5pbXVtIGNhc2UKKworYWJj
ZCBlZmdoIHNlbGVjdDEKK3dpdGggYW5vdGhlciB3b3JkIGFmdGVyIHRoZSBzcGFuCisKK2FiY2Qg
ZWZnaCBpamtsIG1ub3Agc2VsZWN0MiBub3R0b3NlbGVjdAord2l0aCBhbm90aGVyIHdvcmQgaW4g
c2FtZSB0aGUgc3BhbgorCithYmNkIGVmZ2ggaWprbCBtbm9wIHNlbGVjdDMgbm90IG5vdHlldAor
d2l0aCBhbm90aGVyIHdvcmQgYmVmb3JlIHRoZSBzcGFuLCBpbiB0aGUgc2FtZSBsaW5lCisKK2Fi
Y2QgZWZnaCBpamtsIG1ub3AgcXJzdCBzZWxlY3Q0IG5vdHlldAorUGFzc2VkIHRvdGVzdDEKK1Bh
c3NlZCB0b3Rlc3QyCitQYXNzZWQgdG90ZXN0MworUGFzc2VkIHRvdGVzdDQKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNw
YW4uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lk
ZS1jci1zcGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM3MTJk
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJs
ZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChmYWxzZSk7CisgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodHJ1ZSk7Cit9CisK
K2Z1bmN0aW9uIGdldFBvc2l0aW9uT2ZOb2RlKGlkKQoreworICAgIHZhciBuID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoaWQpOworICAgIHZhciBwb3MgPSB7eDogMCwgeTogMH07CisKKyAgICB3
aGlsZSAobikgeworICAgICAgICBwb3MueCArPSBuLm9mZnNldExlZnQgKyBuLmNsaWVudExlZnQ7
CisgICAgICAgIHBvcy55ICs9IG4ub2Zmc2V0VG9wICsgbi5jbGllbnRUb3A7CisgICAgICAgIG4g
PSBuLm9mZnNldFBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIHBvczsKK30KKworZnVuY3Rpb24g
ZG91YmxlQ2xpY2tOb2RlKGlkKQoreworICAgIHZhciBwb3MgPSBnZXRQb3NpdGlvbk9mTm9kZShp
ZCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8ocG9zLnggKyAyLCBwb3MueSArIDIpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJk
KDEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9y
d2FyZCgxMDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVy
LmxlYXBGb3J3YXJkKDEpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rp
b24gZG9UZXN0KHRlc3RJZCwgZXhwZWN0ZWRUZXh0KQoreworICAgIC8vIFNpbXVsYXRlIGEgZG91
YmxlIGNsaWNrLgorICAgIGRvdWJsZUNsaWNrTm9kZSh0ZXN0SWQpOworCisgICAgLy8gR2V0IHRo
ZSB0ZXh0IG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KKyAgICB2YXIgc2VsID0gd2luZG93Lmdl
dFNlbGVjdGlvbigpOworICAgIHZhciBhY3R1YWxUZXh0ID0gc2VsLmdldFJhbmdlQXQoMCkudG9T
dHJpbmcoKTsKKworICAgIGlmIChleHBlY3RlZFRleHQgPT0gYWN0dWFsVGV4dCkgeworICAgICAg
ICBsb2coIlBhc3NlZCAiICsgdGVzdElkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2coIkZh
aWxlZCAiICsgdGVzdElkKTsKKyAgICAgICAgbG9nKCIgIEV4cGVjdGVkOiAiICsgZXhwZWN0ZWRU
ZXh0KTsKKyAgICAgICAgbG9nKCIgIEFjdHVhbDogIiArIGFjdHVhbFRleHQpOworICAgIH0KKwor
fQorCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHZhciBsID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2xvZycpOworICAgIGwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bXNnKSk7CisgICAgbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsK
K30KKworZnVuY3Rpb24gcnVuVGVzdHMoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3QxIiwgInNlbGVjdDEiKTsKKyAgICAg
ICAgLy8gdHJhaWxpbmcgd2hpdGVzcGFjZXMgYXJlIHVnbHksIGJ1dCB0aGVzZSBhcmUgcHJlZXhp
c3RpbmcgCisgICAgICAgIC8vIGJlaGF2aW91ciAtIGFsdGhvdWdoIGNvdWxkIGJlIGZpbGVkIGFz
IGEgYnVnLgorICAgICAgICBkb1Rlc3QoInRvdGVzdDIiLCAic2VsZWN0MiAiKTsKKyAgICAgICAg
ZG9UZXN0KCJ0b3Rlc3QzIiwgInNlbGVjdDMgIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0NCIs
ICJzZWxlY3Q0ICIpOworICAgIH0KK30KKworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuVGVzdHMoKSI+CisKKzxwPgorVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlja2lu
ZyBhIHdvcmQgdGhhdCBmb2xsb3dzIG5ld2xpbmUgYW5kIHNwYW4KKzwvcD4KKworPGgzPm1pbmlt
dW0gY2FzZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMHB0Ij4KK2FiY2QgZWZnaCA8YiBpZD0i
dG90ZXN0MSI+c2VsZWN0MTwvYj4KKzwvZGl2PgorCis8aDM+d2l0aCBhbm90aGVyIHdvcmQgYWZ0
ZXIgdGhlIHNwYW48L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlq
a2wgbW5vcCA8YiBpZD0idG90ZXN0MiI+c2VsZWN0MjwvYj4gbm90dG9zZWxlY3QKKzwvZGl2Pgor
Cis8aDM+d2l0aCBhbm90aGVyIHdvcmQgaW4gc2FtZSB0aGUgc3BhbjwvaDM+Cis8ZGl2IHN0eWxl
PSJ3aWR0aDoxMDBwdCI+CithYmNkIGVmZ2ggaWprbCBtbm9wIDxiIGlkPSJ0b3Rlc3QzIj5zZWxl
Y3QzIG5vdDwvYj4gbm90eWV0Cis8L2Rpdj4KKworPGgzPndpdGggYW5vdGhlciB3b3JkIGJlZm9y
ZSB0aGUgc3BhbiwgaW4gdGhlIHNhbWUgbGluZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBw
dCI+CithYmNkIGVmZ2ggaWprbCBtbm9wIHFyc3QgPGIgaWQ9InRvdGVzdDQiPnNlbGVjdDQ8L2I+
IG5vdHlldAorPC9kaXY+CisKKzxwcmUgaWQ9ImxvZyI+Cis8L3ByZT4KKworPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1YmVlNTliLi5kZDI4OTNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDA5LTA4LTE0ICBNT1JJVEEg
SGFqaW1lICA8bW9ycml0YUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQnVnIDI4MzA2OiBkb3VibGUtY2xpY2tpbmcgYSB3b3JkIGlu
c2lkZSA8Yj4gYmVzaWRlIG5ld2xpbmUgc2VsZWN0IHR3byB3b3JkcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgzMDYKKworICAgICAgICBTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIG1pc3NlZCB0cmFpbGluZyB3aGl0ZXNwYWNlcyBqdXN0
CisgICAgICAgIGJlZm9yZSBmb2xkaW5nIGxpbmUtYnJlYWssIHdoaWNoIGlzIHVzZWQgdG8gZGV0
ZWN0IHdvcmQKKyAgICAgICAgYm91bmRhcmllcy4gVGhpcyBjaGFuZ2UgZml4IHRvIHVzZSBSZW5k
ZXJUZXh0Ojp0ZXh0KCkubGVuZ3RoKCkgdG8KKyAgICAgICAgZXh0cmFjdCB0ZXh0IGZyb20gcmVu
ZGVyIG9iamVjdHMgYmVjYXVzZSBSZW5kZXJUZXh0Ojp0ZXh0KCkgY29udGFpbnMKKyAgICAgICAg
dHJhaWxpbmcgd2hpdGVzcGFjZXMgZWdhcmRsZXNzIG9mIGl0cyBsYXlvdXQgcmVzdWx0LgorICAg
ICAgICAKKyAgICAgICAgb3JpZ2luYWwgY29kZSB1c2VzIElubGluZVRleHRCb3g6OmxlbigpIHZp
YSBjYXJldE1heE9mZnNldCgpLAorICAgICAgICB3aGljaCBkb2VzIG5vdCBjb250YWlucyB0cmFp
bGluZyB3aGl0ZXNwYWNlcy4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNU
ZXh0SXRlcmF0b3I6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IpOgorICAgICAgICBy
ZW1vdmUgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6bV9vZmZzZXQKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlVGV4
dE5vZGUpOgorICAgICAgICAKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOiByZW1v
dmUKKyAgICAgICAgICBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjptX29mZnNldCBk
ZWNsYXJhdGlvbiwgd2hvc2UKKyAgICAgICAgICB2YWx1ZSBpcyBub3cgY29tcHV0ZWQgb24gZGVt
YW5kLgorCiAyMDA5LTA4LTEzICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2ZXJ0IHI0NzE4NSwgdGhlIGZpeCBmb3IgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yODE4NT4sIGFzIGl0IGJyb2tlIHRoZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAppbmRleCAwOGZkYTE2Li43ZDc0NDkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApA
QCAtOTQ3LDcgKzk0Nyw2IEBAIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OlNpbXBs
aWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIpCiAKICAgICBtX25vZGUg
PSBlbmROb2RlOwogICAgIHNldFVwRnVsbHlDbGlwcGVkU3RhY2sobV9mdWxseUNsaXBwZWRTdGFj
aywgbV9ub2RlKTsgICAgCi0gICAgbV9vZmZzZXQgPSBlbmRPZmZzZXQ7CiAgICAgbV9oYW5kbGVk
Tm9kZSA9IGZhbHNlOwogICAgIG1faGFuZGxlZENoaWxkcmVuID0gZW5kT2Zmc2V0ID09IDA7CiAK
QEAgLTk4MiwxMSArOTgxLDExIEBAIHZvaWQgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRv
cjo6YWR2YW5jZSgpCiAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2Rl
LT5yZW5kZXJlcigpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1Rl
eHQoKSAmJiBtX25vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKSB7CiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdoYXQgYWJvdXQgQ0RBVEFfU0VDVElPTl9OT0RFPwotICAgICAg
ICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUg
JiYgbV9vZmZzZXQgPiAwKQorICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS0+
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5v
ZGUgPSBoYW5kbGVUZXh0Tm9kZSgpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJlciAm
JiAocmVuZGVyZXItPmlzSW1hZ2UoKSB8fCByZW5kZXJlci0+aXNXaWRnZXQoKSkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
ICYmIG1fb2Zmc2V0ID4gMCkKLSAgICAgICAgICAgICAgICAgICAgbV9oYW5kbGVkTm9kZSA9IGhh
bmRsZVJlcGxhY2VkRWxlbWVudCgpOworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c3R5
bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCisgICAgICAgICAgICAgICAgICAgIG1faGFu
ZGxlZE5vZGUgPSBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsgCiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBtX2hhbmRsZWROb2RlID0gaGFuZGxlTm9uVGV4dE5vZGUoKTsKICAg
ICAgICAgICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkKQEAgLTEwMzAsNyArMTAyOSw2IEBAIHZvaWQg
U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgIG1fbm9k
ZSA9IG5leHQ7CiAgICAgICAgIGlmIChtX25vZGUpCiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlw
cGVkU3RhdGUobV9mdWxseUNsaXBwZWRTdGFjaywgbV9ub2RlKTsKLSAgICAgICAgbV9vZmZzZXQg
PSBtX25vZGUgPyBjYXJldE1heE9mZnNldChtX25vZGUpIDogMDsKICAgICAgICAgbV9oYW5kbGVk
Tm9kZSA9IGZhbHNlOwogICAgICAgICBtX2hhbmRsZWRDaGlsZHJlbiA9IGZhbHNlOwogICAgICAg
ICAKQEAgLTEwNDksMTEgKzEwNDcsMTUgQEAgYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0
ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgaWYgKCFyZW5kZXJlci0+Zmlyc3RUZXh0Qm94
KCkgJiYgc3RyLmxlbmd0aCgpID4gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX3Bv
c2l0aW9uRW5kT2Zmc2V0ID0gbV9vZmZzZXQ7CisgICAgLy8gdXNlIHN0ci5sZW5ndGgoKSBpbnN0
ZWFkIG9mIGNhcmV0TWF4T2Zmc2V0KCkKKyAgICAvLyBiZWNhdXNlIGNhcmV0TWF4T2Zmc2V0KCkg
aXMgYmFzZWQgb24gSW5saW5lQm94IGFuZCBub3QgY29uc2lkZXJpbmcgdHJhaWxpbmcgd2hpdGVz
cGFjZXMsCisgICAgLy8gd2hpY2ggc2hvdWxkIGJlIGhhbmRsZWQgZHVyaW5nIHdvcmQtYm91bmRh
cnkgZGV0ZWN0aW9uLgorICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSAobV9ub2RlID09IG1fZW5k
Tm9kZSkgPyBtX2VuZE9mZnNldCA6IHN0ci5sZW5ndGgoKTsKKyAgICBpZiAobV9wb3NpdGlvbkVu
ZE9mZnNldCA9PSAwKQorICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9vZmZzZXQgPSAobV9u
b2RlID09IG1fc3RhcnROb2RlKSA/IG1fc3RhcnRPZmZzZXQgOiAwOwogICAgIG1fcG9zaXRpb25O
b2RlID0gbV9ub2RlOwotICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IG1fb2Zmc2V0OworICAg
IG1fcG9zaXRpb25TdGFydE9mZnNldCA9IChtX25vZGUgPT0gbV9zdGFydE5vZGUpID8gbV9zdGFy
dE9mZnNldCA6IDA7CiAgICAgbV90ZXh0TGVuZ3RoID0gbV9wb3NpdGlvbkVuZE9mZnNldCAtIG1f
cG9zaXRpb25TdGFydE9mZnNldDsKICAgICBtX3RleHRDaGFyYWN0ZXJzID0gc3RyLmNoYXJhY3Rl
cnMoKSArIG1fcG9zaXRpb25TdGFydE9mZnNldDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4
IDQ0YWYzZTUuLmI2YjIwZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTE3NSw3ICsxNzUs
NiBAQCBwcml2YXRlOgogICAgIC8vIEN1cnJlbnQgcG9zaXRpb24sIG5vdCBuZWNlc3NhcmlseSBv
ZiB0aGUgdGV4dCBiZWluZyByZXR1cm5lZCwgYnV0IHBvc2l0aW9uCiAgICAgLy8gYXMgd2Ugd2Fs
ayB0aHJvdWdoIHRoZSBET00gdHJlZS4KICAgICBOb2RlKiBtX25vZGU7Ci0gICAgaW50IG1fb2Zm
c2V0OwogICAgIGJvb2wgbV9oYW5kbGVkTm9kZTsKICAgICBib29sIG1faGFuZGxlZENoaWxkcmVu
OwogICAgIEJpdFN0YWNrIG1fZnVsbHlDbGlwcGVkU3RhY2s7
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43924</attachid>
            <date>2009-11-26 07:45:06 -0800</date>
            <delta_ts>2009-12-12 19:20:17 -0800</delta_ts>
            <desc>patch revised</desc>
            <filename>bug-28306-20091127004504.patch</filename>
            <type>text/plain</type>
            <size>6856</size>
            <attacher name="MORITA Hajime">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjOTFmYjJiLi5lMDhhNTY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTEt
MjYgIE1PUklUQSBIYWppbWUgPG1vcnJpdGFAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyODMwNjogZG91YmxlLWNsaWNraW5n
IGEgd29yZCBpbnNpZGUgPGI+IGJlc2lkZSBuZXdsaW5lIHNlbGVjdCB0d28gd29yZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MzA2CisJCisgICAg
ICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgbWlzc2VkIHRyYWlsaW5nIHdoaXRl
c3BhY2VzIGp1c3QKKyAgICAgICAgYmVmb3JlIGZvbGRpbmcgbGluZS1icmVhaywgd2hpY2ggaXMg
dXNlZCB0byBkZXRlY3Qgd29yZAorICAgICAgICBib3VuZGFyaWVzLiBUaGlzIGZpeCBjaGVja3Mg
c3RyaW5ncyBvbiBSZW5kZXJUZXh0IGFuZCBleHBhbmQgdGV4dAorICAgICAgICByYW5nZSBvbiBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIHRvIGluY2x1ZGUgdHJhaWxpbmcKKyAgICAg
ICAgd2hpdGVzcGFjZXMgaWYgYXZhaWxibGUuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWw6IEFk
ZGVkLgorCiAyMDA5LTExLTIyICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUt
Y3Itc3Bhbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZWQ3NDNhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBA
CitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNraW5nIGEgd29yZCB0aGF0IGZvbGxvd3MgbmV3
bGluZSBhbmQgc3BhbgorCittaW5pbXVtIGNhc2UKKworYWJjZCBlZmdoIHNlbGVjdDEKK3dpdGgg
YW5vdGhlciB3b3JkIGFmdGVyIHRoZSBzcGFuCisKK2FiY2QgZWZnaCBpamtsIG1ub3Agc2VsZWN0
MiBub3R0b3NlbGVjdAord2l0aCBhbm90aGVyIHdvcmQgaW4gc2FtZSB0aGUgc3BhbgorCithYmNk
IGVmZ2ggaWprbCBtbm9wIHNlbGVjdDMgbm90IG5vdHlldAord2l0aCBhbm90aGVyIHdvcmQgYmVm
b3JlIHRoZSBzcGFuLCBpbiB0aGUgc2FtZSBsaW5lCisKK2FiY2QgZWZnaCBpamtsIG1ub3AgcXJz
dCBzZWxlY3Q0IG5vdHlldAorUGFzc2VkIHRvdGVzdDEKK1Bhc3NlZCB0b3Rlc3QyCitQYXNzZWQg
dG90ZXN0MworUGFzc2VkIHRvdGVzdDQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM3MTJkNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFu
Lmh0bWwKQEAgLTAsMCArMSwxMDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZChmYWxzZSk7CisgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9u
T2ZOb2RlKGlkKQoreworICAgIHZhciBuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwor
ICAgIHZhciBwb3MgPSB7eDogMCwgeTogMH07CisKKyAgICB3aGlsZSAobikgeworICAgICAgICBw
b3MueCArPSBuLm9mZnNldExlZnQgKyBuLmNsaWVudExlZnQ7CisgICAgICAgIHBvcy55ICs9IG4u
b2Zmc2V0VG9wICsgbi5jbGllbnRUb3A7CisgICAgICAgIG4gPSBuLm9mZnNldFBhcmVudDsKKyAg
ICB9CisgICAgcmV0dXJuIHBvczsKK30KKworZnVuY3Rpb24gZG91YmxlQ2xpY2tOb2RlKGlkKQor
eworICAgIHZhciBwb3MgPSBnZXRQb3NpdGlvbk9mTm9kZShpZCk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8ocG9zLnggKyAyLCBwb3MueSArIDIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gZG9UZXN0KHRlc3RJZCwgZXhw
ZWN0ZWRUZXh0KQoreworICAgIC8vIFNpbXVsYXRlIGEgZG91YmxlIGNsaWNrLgorICAgIGRvdWJs
ZUNsaWNrTm9kZSh0ZXN0SWQpOworCisgICAgLy8gR2V0IHRoZSB0ZXh0IG9mIHRoZSBjdXJyZW50
IHNlbGVjdGlvbi4KKyAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHZh
ciBhY3R1YWxUZXh0ID0gc2VsLmdldFJhbmdlQXQoMCkudG9TdHJpbmcoKTsKKworICAgIGlmIChl
eHBlY3RlZFRleHQgPT0gYWN0dWFsVGV4dCkgeworICAgICAgICBsb2coIlBhc3NlZCAiICsgdGVz
dElkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2coIkZhaWxlZCAiICsgdGVzdElkKTsKKyAg
ICAgICAgbG9nKCIgIEV4cGVjdGVkOiAiICsgZXhwZWN0ZWRUZXh0KTsKKyAgICAgICAgbG9nKCIg
IEFjdHVhbDogIiArIGFjdHVhbFRleHQpOworICAgIH0KKworfQorCitmdW5jdGlvbiBsb2cobXNn
KQoreworICAgIHZhciBsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworICAgIGwu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnKSk7CisgICAgbC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKK30KKworZnVuY3Rpb24gcnVuVGVz
dHMoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
ZG9UZXN0KCJ0b3Rlc3QxIiwgInNlbGVjdDEiKTsKKyAgICAgICAgLy8gdHJhaWxpbmcgd2hpdGVz
cGFjZXMgYXJlIHVnbHksIGJ1dCB0aGVzZSBhcmUgcHJlZXhpc3RpbmcgCisgICAgICAgIC8vIGJl
aGF2aW91ciAtIGFsdGhvdWdoIGNvdWxkIGJlIGZpbGVkIGFzIGEgYnVnLgorICAgICAgICBkb1Rl
c3QoInRvdGVzdDIiLCAic2VsZWN0MiAiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3QzIiwgInNl
bGVjdDMgIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0NCIsICJzZWxlY3Q0ICIpOworICAgIH0K
K30KKworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+CisK
KzxwPgorVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlja2luZyBhIHdvcmQgdGhhdCBmb2xsb3dz
IG5ld2xpbmUgYW5kIHNwYW4KKzwvcD4KKworPGgzPm1pbmltdW0gY2FzZTwvaDM+Cis8ZGl2IHN0
eWxlPSJ3aWR0aDoxMHB0Ij4KK2FiY2QgZWZnaCA8YiBpZD0idG90ZXN0MSI+c2VsZWN0MTwvYj4K
KzwvZGl2PgorCis8aDM+d2l0aCBhbm90aGVyIHdvcmQgYWZ0ZXIgdGhlIHNwYW48L2gzPgorPGRp
diBzdHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlqa2wgbW5vcCA8YiBpZD0idG90ZXN0
MiI+c2VsZWN0MjwvYj4gbm90dG9zZWxlY3QKKzwvZGl2PgorCis8aDM+d2l0aCBhbm90aGVyIHdv
cmQgaW4gc2FtZSB0aGUgc3BhbjwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdCI+CithYmNk
IGVmZ2ggaWprbCBtbm9wIDxiIGlkPSJ0b3Rlc3QzIj5zZWxlY3QzIG5vdDwvYj4gbm90eWV0Cis8
L2Rpdj4KKworPGgzPndpdGggYW5vdGhlciB3b3JkIGJlZm9yZSB0aGUgc3BhbiwgaW4gdGhlIHNh
bWUgbGluZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdCI+CithYmNkIGVmZ2ggaWprbCBt
bm9wIHFyc3QgPGIgaWQ9InRvdGVzdDQiPnNlbGVjdDQ8L2I+IG5vdHlldAorPC9kaXY+CisKKzxw
cmUgaWQ9ImxvZyI+Cis8L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YWNhYWRmLi4wZjM3ZDU1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDA5LTExLTI2ICBNT1JJVEEgSGFqaW1lIDxtb3JyaXRhQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCUJ1ZyAyODMw
NjogZG91YmxlLWNsaWNraW5nIGEgd29yZCBpbnNpZGUgPGI+IGJlc2lkZSBuZXdsaW5lIHNlbGVj
dCB0d28gd29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI4MzA2CisJCisgICAgICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgbWlz
c2VkIHRyYWlsaW5nIHdoaXRlc3BhY2VzIGp1c3QKKyAgICAgICAgYmVmb3JlIGZvbGRpbmcgbGlu
ZS1icmVhaywgd2hpY2ggaXMgdXNlZCB0byBkZXRlY3Qgd29yZAorICAgICAgICBib3VuZGFyaWVz
LiBUaGlzIGZpeCBjaGVja3Mgc3RyaW5ncyBvbiBSZW5kZXJUZXh0IGFuZCBleHBhbmQgdGV4dAor
ICAgICAgICByYW5nZSBvbiBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIHRvIGluY2x1
ZGUgdHJhaWxpbmcKKyAgICAgICAgd2hpdGVzcGFjZXMgaWYgYXZhaWxibGUuCisKKyAgICAgICAg
VGVzdDogZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbAor
CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29sbGFwc2VkU3BhY2VMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorCiAyMDA5LTExLTIyICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xp
dmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBi
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGRmMjcxYjYuLjFiMGFhMzYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC03MDUsNiArNzA1LDE3IEBAIHN0YXRpYyBi
b29sIHNob3VsZEVtaXRFeHRyYU5ld2xpbmVGb3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitzdGF0aWMgaW50IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKE5vZGUqIHRleHRO
b2RlLCBpbnQgdGV4dEVuZCkKK3sKKyAgICBSZW5kZXJUZXh0KiByZW5kZXJlciA9IHRvUmVuZGVy
VGV4dCh0ZXh0Tm9kZS0+cmVuZGVyZXIoKSk7CisgICAgU3RyaW5nIHN0ciA9IHJlbmRlcmVyLT50
ZXh0KCk7CisgICAgaW50IHN0ckxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oc3RyLmxlbmd0aCgp
KTsKKyAgICBmb3IgKGludCBpID0gdGV4dEVuZDsgaSA8IHN0ckxlbmd0aDsgKytpKQorICAgICAg
ICBpZiAoIWlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKHN0cltpXSkpCisgICAgICAgICAgICByZXR1
cm4gaSAtIHRleHRFbmQ7CisgICAgcmV0dXJuIHN0ckxlbmd0aCAtIHRleHRFbmQ7Cit9CisKIC8v
IFdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBlbWl0IGEgY2hhcmFjdGVyIGFzIHdlIGVudGVyIG1f
bm9kZSAoaWYgaXQncyBhIGNvbnRhaW5lcikgb3IgYXMgd2UgaGl0IGl0IChpZiBpdCdzIGF0b21p
YykuCiBib29sIFRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFplcm8oKQog
ewpAQCAtMTA0OSw2ICsxMDYwLDEwIEBAIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVy
YXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIG1fcG9z
aXRpb25FbmRPZmZzZXQgPSBtX29mZnNldDsKKyAgICAvLyBXZSBleHBhbmQgcmFuZ2UgdG8gaW5j
bHVkZSB0cmFpbGluZyAoY29sbGFwc2VkKSB3aGl0ZXNwYWNlcywgCisgICAgLy8gd2hpY2ggaXMg
cmVxdWlyZWQgZm9yIHdvcmQtYm91bmRhcnkgZGV0ZWN0aW9uLgorICAgIGlmIChtX25vZGUgIT0g
bV9lbmROb2RlKQorICAgICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ICs9IGNvbGxhcHNlZFNwYWNl
TGVuZ3RoKG1fbm9kZSwgbV9wb3NpdGlvbkVuZE9mZnNldCk7CiAKICAgICBtX29mZnNldCA9ICht
X25vZGUgPT0gbV9zdGFydE5vZGUpID8gbV9zdGFydE9mZnNldCA6IDA7CiAgICAgbV9wb3NpdGlv
bk5vZGUgPSBtX25vZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44748</attachid>
            <date>2009-12-12 19:20:24 -0800</date>
            <delta_ts>2009-12-15 06:00:35 -0800</delta_ts>
            <desc>patch update 4</desc>
            <filename>bug-28306-20091213122022.patch</filename>
            <type>text/plain</type>
            <size>24445</size>
            <attacher name="MORITA Hajime">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOTEwNTU0Li4yZmU3YTE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTIt
MTIgIE1PUklUQSBIYWppbWUgPG1vcnJpdGFAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyODMwNjogZG91YmxlLWNsaWNraW5n
IGEgd29yZCBpbnNpZGUgPGI+IGJlc2lkZSBuZXdsaW5lIHNlbGVjdCB0d28gd29yZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MzA2CisJCisgICAg
ICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgbWlzc2VkIHRyYWlsaW5nIHdoaXRl
c3BhY2VzIGp1c3QKKyAgICAgICAgYmVmb3JlIGZvbGRpbmcgbGluZS1icmVhaywgd2hpY2ggaXMg
dXNlZCB0byBkZXRlY3Qgd29yZAorICAgICAgICBib3VuZGFyaWVzLiBUaGlzIGZpeCBjaGVja3Mg
c3RyaW5ncyBvbiBSZW5kZXJUZXh0IGFuZCBleHBhbmQgdGV4dAorICAgICAgICByYW5nZSBvbiBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIHRvIGluY2x1ZGUgdHJhaWxpbmcKKyAgICAg
ICAgd2hpdGVzcGFjZXMgaWYgYXZhaWxibGUuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWw6IEFk
ZGVkLgorCiAyMDA5LTEyLTEyICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KQEAgLTI4NjMsNyArMjg3OSw2IEBACiAg
ICAgICAgIFVuc2tpcCBhIGJ1bmNoIG9mIHBhc3NpbmcgaHR0cC9uYXZpZ2F0aW9uIHRlc3RzLgog
CiAgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKLQogMjAwOS0xMS0yMiAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZl
ciBIdW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91Ymxl
Y2xpY2stYmVzaWRlLWNyLXNwYW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZTQ4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4NyBAQAorVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlj
a2luZyBhIHdvcmQgdGhhdCBmb2xsb3dzIG5ld2xpbmUgYW5kIHNwYW4KKworY2FzZXMgZm9yIHdo
aXRlLXNwYWNlOiBwcmUKKworTm90ZTogSGVyZSBmb3IgcHJlLCB3ZSBjaGFuZ2Ugd2lkdGggdmFs
dWUgdG8gMjAwIHRvIHByZXZlbnQgbGF5b3V0IGNoYW5nZSBvbiBjb250ZW50RWRpdGFibGUgZW5h
YmxlZC4KKworY2FzZXMgZm9yIHdoaXRlLXNwYWNlOiBwcmUtd3JhcAorCitjYXNlcyBmb3Igd2hp
dGUtc3BhY2U6IHByZS1saW5lCisKK2Nhc2VzIGZvciB3aGl0ZS1zcGFjZTogbm93cmFwCisKK05v
dGU6IEFsdGhvdWdoIGZvbGxvd2luZyBjYXNlcyBoYXZlIG5vIGxpbmUtYnJlYWtzIHRoYXQgaGFk
IGNhdXNlZCBwcm9ibGVtIHJlcG9ydGVkIGJ1ZzI4MDM2LCB3ZSBhZGQgdGhlc2UgZm9yIGNvbXBy
ZWhlbnNpdmVuZXNzLgorCitQYXNzZWQgdG90ZXN0X21pbmltdW0KK1Bhc3NlZCB0b3Rlc3RfbWlu
aW11bSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X2JlZm9yZV9hZnRlcgor
UGFzc2VkIHRvdGVzdF9iZWZvcmVfYWZ0ZXIgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2Vk
IHRvdGVzdF9saW5lYnJlYWtfb3V0CitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19vdXQgKHdpdGgg
Y29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90YWJfb3V0CitQYXNzZWQgdG90ZXN0X3Rh
Yl9vdXQgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0
ZXNwYWNlc19vdXQKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNfb3V0ICh3aXRo
IGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX2luCitQYXNzZWQgdG90
ZXN0X2xpbmVicmVha19pbiAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3Rh
Yl9pbgorUGFzc2VkIHRvdGVzdF90YWJfaW4gKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2Vk
IHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbgorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93
aGl0ZXNwYWNlc19pbiAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X211bHRp
cGxlX3dvcmRfaW5fc3BhbgorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93b3JkX2luX3NwYW4gKHdp
dGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF93b3JkX2JlZm9yZV9oZXJlX2luX2xp
bmUKK1Bhc3NlZCB0b3Rlc3Rfd29yZF9iZWZvcmVfaGVyZV9pbl9saW5lICh3aXRoIGNvbnRlbnRF
ZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3Rfc3Bhbl9maXJzdF9oYWxmCitQYXNzZWQgdG90ZXN0X3Nw
YW5fZmlyc3RfaGFsZiAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3NwYW5f
c2Vjb25kX2hhbGYKK1Bhc3NlZCB0b3Rlc3Rfc3Bhbl9zZWNvbmRfaGFsZiAod2l0aCBjb250ZW50
RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19vdXRfcHJlCitQYXNzZWQgdG90ZXN0
X2xpbmVicmVha19vdXRfcHJlICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3Rf
dGFiX291dF9wcmUKK1Bhc3NlZCB0b3Rlc3RfdGFiX291dF9wcmUgKHdpdGggY29udGVudEVkaXRh
YmxlKQorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfcHJlCitQYXNzZWQg
dG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9wcmUgKHdpdGggY29udGVudEVkaXRhYmxl
KQorUGFzc2VkIHRvdGVzdF9saW5lYnJlYWtfaW5fcHJlCitQYXNzZWQgdG90ZXN0X2xpbmVicmVh
a19pbl9wcmUgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90YWJfaW5fcHJl
CitQYXNzZWQgdG90ZXN0X3RhYl9pbl9wcmUgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2Vk
IHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmUKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlw
bGVfd2hpdGVzcGFjZXNfaW5fcHJlICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rl
c3RfbGluZWJyZWFrX291dF9wcmV3cmFwCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19vdXRfcHJl
d3JhcCAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3RhYl9vdXRfcHJld3Jh
cAorUGFzc2VkIHRvdGVzdF90YWJfb3V0X3ByZXdyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQor
UGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfcHJld3JhcAorUGFzc2VkIHRv
dGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfcHJld3JhcCAod2l0aCBjb250ZW50RWRpdGFi
bGUpCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19pbl9wcmV3cmFwCitQYXNzZWQgdG90ZXN0X2xp
bmVicmVha19pbl9wcmV3cmFwICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3Rf
dGFiX2luX3ByZXdyYXAKK1Bhc3NlZCB0b3Rlc3RfdGFiX2luX3ByZXdyYXAgKHdpdGggY29udGVu
dEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmV3cmFw
CitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX3ByZXdyYXAgKHdpdGggY29u
dGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF9saW5lYnJlYWtfb3V0X3ByZWxpbmUKK1Bhc3Nl
ZCB0b3Rlc3RfbGluZWJyZWFrX291dF9wcmVsaW5lICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bh
c3NlZCB0b3Rlc3RfdGFiX291dF9wcmVsaW5lCitQYXNzZWQgdG90ZXN0X3RhYl9vdXRfcHJlbGlu
ZSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3Bh
Y2VzX291dF9wcmVsaW5lCitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9w
cmVsaW5lICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX2lu
X3ByZWxpbmUKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX2luX3ByZWxpbmUgKHdpdGggY29udGVu
dEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90YWJfaW5fcHJlbGluZQorUGFzc2VkIHRvdGVzdF90
YWJfaW5fcHJlbGluZSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X211bHRp
cGxlX3doaXRlc3BhY2VzX2luX3ByZWxpbmUKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlwbGVfd2hpdGVz
cGFjZXNfaW5fcHJlbGluZSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X2xp
bmVicmVha19vdXRfbm93cmFwCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19vdXRfbm93cmFwICh3
aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfdGFiX291dF9ub3dyYXAKK1Bhc3Nl
ZCB0b3Rlc3RfdGFiX291dF9ub3dyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRv
dGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfbm93cmFwCitQYXNzZWQgdG90ZXN0X211bHRp
cGxlX3doaXRlc3BhY2VzX291dF9ub3dyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2Vk
IHRvdGVzdF9saW5lYnJlYWtfaW5fbm93cmFwCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19pbl9u
b3dyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90YWJfaW5fbm93cmFw
CitQYXNzZWQgdG90ZXN0X3RhYl9pbl9ub3dyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFz
c2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9ub3dyYXAKK1Bhc3NlZCB0b3Rlc3Rf
bXVsdGlwbGVfd2hpdGVzcGFjZXNfaW5fbm93cmFwICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVz
aWRlLWNyLXNwYW4uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLWJlc2lkZS1jci1zcGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYmQ3ZjJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWwKQEAgLTAsMCArMSw1MzEgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChmYWxzZSk7CisgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodHJ1
ZSk7Cit9CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9uT2ZOb2RlKGlkKQoreworICAgIHZhciBuID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgIHZhciBwb3MgPSB7eDogMCwgeTogMH07
CisKKyAgICB3aGlsZSAobikgeworICAgICAgICBwb3MueCArPSBuLm9mZnNldExlZnQgKyBuLmNs
aWVudExlZnQ7CisgICAgICAgIHBvcy55ICs9IG4ub2Zmc2V0VG9wICsgbi5jbGllbnRUb3A7Cisg
ICAgICAgIG4gPSBuLm9mZnNldFBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIHBvczsKK30KKwor
ZnVuY3Rpb24gZG91YmxlQ2xpY2tQb3NpdGlvbihwb3MpCit7CisgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8ocG9zLnggKyAyLCBwb3MueSArIDIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gZGVmb2N1cygpCit7CisgICAgZG91
YmxlQ2xpY2tQb3NpdGlvbih7eDowLCB5OjB9KTsKK30KKworZnVuY3Rpb24gZmluZFBhcmVudERp
dihzcGFuSWQpCit7CisgICAgdmFyIG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzcGFuSWQp
OworICAgIHdoaWxlIChuKSB7CisgICAgICB2YXIgcGFyZW50ID0gbi5wYXJlbnROb2RlOworICAg
ICAgaWYgKHBhcmVudCAmJiBwYXJlbnQudGFnTmFtZSA9PSAiRElWIikKKyAgICAgICAgcmV0dXJu
IHBhcmVudDsKKyAgICAgIG4gPSBwYXJlbnQ7CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7Cit9
CisKK2Z1bmN0aW9uIG1ha2VQYXJlbnRCbG9ja0VkaXRhYmxlKHNwYW5JZCkKK3sKKyAgICB2YXIg
cGFyZW50ID0gZmluZFBhcmVudERpdihzcGFuSWQpOworICAgIHBhcmVudC5jb250ZW50RWRpdGFi
bGUgPSB0cnVlOworfQorCitmdW5jdGlvbiBoaWRlQ2FzZUJsb2NrRm9yKHNwYW5JZCkKK3sKKyAg
ICB2YXIgbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwYW5JZCk7CisgICAgd2hpbGUgKG4p
IHsKKyAgICAgIG4gPSBuLnBhcmVudE5vZGU7CisgICAgICBpZiAobiAmJiBuLmNsYXNzTmFtZSA9
PSAiY2FzZSIpIHsKKyAgICAgICAgbi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICBu
LnN0eWxlLm9mZnNldFRvcDsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgIH0KK30KKwor
ZnVuY3Rpb24gZG9UZXN0KHRlc3RJZCwgZXhwZWN0ZWRUZXh0LCBnaXZlbkNsaWNrUG9zaXRpb24p
Cit7CisgICAgLy8gU2ltdWxhdGUgYSBkb3VibGUgY2xpY2suCisgICAgZGVmb2N1cygpCisgICAg
dmFyIHBvcyA9IGdpdmVuQ2xpY2tQb3NpdGlvbiB8fCBnZXRQb3NpdGlvbk9mTm9kZSh0ZXN0SWQp
OworICAgIGRvdWJsZUNsaWNrUG9zaXRpb24ocG9zKTsKKworICAgIC8vIEdldCB0aGUgdGV4dCBv
ZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKKyAgICB2YXIgYWN0dWFsVGV4dCA9IHNlbC5nZXRSYW5nZUF0KDApLnRvU3RyaW5nKCk7
CisKKyAgICBpZiAoZXhwZWN0ZWRUZXh0ID09IGFjdHVhbFRleHQpIHsKKyAgICAgICAgbG9nKCJQ
YXNzZWQgIiArIHRlc3RJZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKCJGYWlsZWQgIiAr
IHRlc3RJZCk7CisgICAgICAgIGxvZygiICBFeHBlY3RlZDogIiArIGV4cGVjdGVkVGV4dCk7Cisg
ICAgICAgIGxvZygiICBBY3R1YWw6ICIgKyBhY3R1YWxUZXh0KTsKKyAgICB9CisKKyAgICAvLyBS
dW4gdGhlIHNhbWUgY2FzZSB3aXRoIGNvbnRlbnRFZGl0YWJsZSBlbmFibGVkLgorICAgIG1ha2VQ
YXJlbnRCbG9ja0VkaXRhYmxlKHRlc3RJZCk7CisKKyAgICBkZWZvY3VzKCk7CisgICAgZG91Ymxl
Q2xpY2tQb3NpdGlvbihwb3MpOworCisgICAgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwor
ICAgIGFjdHVhbFRleHQgPSBzZWwuZ2V0UmFuZ2VBdCgwKS50b1N0cmluZygpOworCisgICAgaWYg
KGV4cGVjdGVkVGV4dCA9PSBhY3R1YWxUZXh0KSB7CisgICAgICAgIGxvZygiUGFzc2VkICIgKyB0
ZXN0SWQgKyAiICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkiKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBsb2coIkZhaWxlZCAiICsgdGVzdElkICsgIiAod2l0aCBjb250ZW50RWRpdGFibGUpIik7Cisg
ICAgICAgIGxvZygiICBFeHBlY3RlZDogIiArIGV4cGVjdGVkVGV4dCk7CisgICAgICAgIGxvZygi
ICBBY3R1YWw6ICIgKyBhY3R1YWxUZXh0KTsKKyAgICB9CisKKyAgICAvLyBIaWRlIGEgY29udGFp
bmVyIGZvciB0aGUgY2FzZSB0byB3b3JrYXJvdW5kIGxpbWl0ZWQgd2luZG93IHNpemUKKyAgICBo
aWRlQ2FzZUJsb2NrRm9yKHRlc3RJZCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAg
dmFyIGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisgICAgbC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAgICBsLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOworfQorCitmdW5jdGlvbiBpbml0Q29uc3RhbnRzKCkK
K3sKKyAgIHZhciBoZWlnaHRNZWFzdXJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhlaWdo
dE1lYXN1cmUiKTsKKyAgIExJTkVfSEVJR0hUID0gaGVpZ2h0TWVhc3VyZS5vZmZzZXRIZWlnaHQ7
CisgICBMSU5FX0xFRlQgICA9IGhlaWdodE1lYXN1cmUub2Zmc2V0TGVmdCArIGhlaWdodE1lYXN1
cmUuY2xpZW50TGVmdDsKKyAgIENIQVJfV0lEVEggID0gaGVpZ2h0TWVhc3VyZS5vZmZzZXRXaWR0
aDsKKyAgIGhlaWdodE1lYXN1cmUuc3R5bGUuZGlzcGxheSA9ICJub25lIjsgLy8gaGlkZSBmb3Ig
cmVhZGFibGUgdGVzdCByZXN1bHQKK30KKworZnVuY3Rpb24gZ2V0UG9zaXRpb25PZk5leHRMaW5l
SGVhZE9mKHNwYW5JZCkKK3sKKyAgIHZhciBwb3MgPSBnZXRQb3NpdGlvbk9mTm9kZShzcGFuSWQp
CisgICBwb3MueCAgPSBMSU5FX0xFRlQ7CisgICBwb3MueSArPSBMSU5FX0hFSUdIVDsKKyAgIHJl
dHVybiBwb3M7Cit9CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9uRm9yd2FyZChzcGFuSWQsIG5jaGFy
YWN0ZXJzKQoreworICAgdmFyIHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKHNwYW5JZCkKKyAgIHBv
cy54ICs9IENIQVJfV0lEVEgqbmNoYXJhY3RlcnM7CisgICByZXR1cm4gcG9zOworfQorCitmdW5j
dGlvbiBydW5UZXN0cygpCit7CisgICAgaW5pdENvbnN0YW50cygpOworCisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBkb1Rlc3QoInRvdGVzdF9taW5pbXVt
IiwgInNlbGVjdDEiKTsKKyAgICAgICAgLy8gV2UgbWF5IGhhdmUgdG8gbWFrZSBFZGl0b3JDbGll
bnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCBmYWxzZSBvbgorICAgICAgICAv
LyBEdW1wUmVuZGVyVHJlZSB0byBjbGFyaWZ5IGNhc2VzLi4uCisgICAgICAgIGRvVGVzdCgidG90
ZXN0X2JlZm9yZV9hZnRlciIsICJzZWxlY3QyICIpOworCisgICAgICAgIGRvVGVzdCgidG90ZXN0
X2xpbmVicmVha19vdXQiLCAic2VsZWN0M1xuIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X3Rh
Yl9vdXQiLCAic2VsZWN0NFx0Iik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X211bHRpcGxlX3do
aXRlc3BhY2VzX291dCIsICJzZWxlY3Q1ICIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9saW5l
YnJlYWtfaW4iLCAic2VsZWN0NlxuIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X3RhYl9pbiIs
ICJzZWxlY3Q3XHQiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFj
ZXNfaW4iLCAic2VsZWN0OCAiKTsKKworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93
b3JkX2luX3NwYW4iLCAic2VsZWN0OSAiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3Rfd29yZF9i
ZWZvcmVfaGVyZV9pbl9saW5lIiwgInNlbGVjdDEwICIpOworICAgICAgICBkb1Rlc3QoInRvdGVz
dF9zcGFuX2ZpcnN0X2hhbGYiLCAic2VsZWN0MTEgIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0
X3NwYW5fc2Vjb25kX2hhbGYiLCAic2VsZWN0MTIgIik7CisKKyAgICAgICAgZG9UZXN0KCJ0b3Rl
c3RfbGluZWJyZWFrX291dF9wcmUiLCAic2VsZWN0MSIpOworICAgICAgICBkb1Rlc3QoInRvdGVz
dF90YWJfb3V0X3ByZSIsICJzZWxlY3QyXHQiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbXVs
dGlwbGVfd2hpdGVzcGFjZXNfb3V0X3ByZSIsICJzZWxlY3QzICAgICIpOworICAgICAgICBkb1Rl
c3QoInRvdGVzdF9saW5lYnJlYWtfaW5fcHJlIiwgInNlbGVjdDQiLCBnZXRQb3NpdGlvbk9mTmV4
dExpbmVIZWFkT2YoInRvdGVzdF9saW5lYnJlYWtfaW5fcHJlIikpOworICAgICAgICBkb1Rlc3Qo
InRvdGVzdF90YWJfaW5fcHJlIiwgInNlbGVjdDVcdCIpOworICAgICAgICBkb1Rlc3QoInRvdGVz
dF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmUiLCAic2VsZWN0NiAgICAiLCBnZXRQb3NpdGlv
bkZvcndhcmQoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmUiLCAiICAgICIubGVu
Z3RoKSk7CisKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbGluZWJyZWFrX291dF9wcmV3cmFwIiwg
InNlbGVjdDEiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfdGFiX291dF9wcmV3cmFwIiwgInNl
bGVjdDJcdCIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19v
dXRfcHJld3JhcCIsICJzZWxlY3QzICAgICIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9saW5l
YnJlYWtfaW5fcHJld3JhcCIsICJzZWxlY3Q0IiwgZ2V0UG9zaXRpb25PZk5leHRMaW5lSGVhZE9m
KCJ0b3Rlc3RfbGluZWJyZWFrX2luX3ByZXdyYXAiKSk7CisgICAgICAgIGRvVGVzdCgidG90ZXN0
X3RhYl9pbl9wcmV3cmFwIiwgInNlbGVjdDVcdCIsIGdldFBvc2l0aW9uT2ZOZXh0TGluZUhlYWRP
ZigidG90ZXN0X3RhYl9pbl9wcmV3cmFwIikpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0
aXBsZV93aGl0ZXNwYWNlc19pbl9wcmV3cmFwIiwgInNlbGVjdDYgICAgIiwgZ2V0UG9zaXRpb25P
Zk5leHRMaW5lSGVhZE9mKCJ0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNfaW5fcHJld3JhcCIp
KTsKKworICAgICAgICBkb1Rlc3QoInRvdGVzdF9saW5lYnJlYWtfb3V0X3ByZWxpbmUiLCAic2Vs
ZWN0MVxuIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X3RhYl9vdXRfcHJlbGluZSIsICJzZWxl
Y3QyXHQiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNfb3V0
X3ByZWxpbmUiLCAic2VsZWN0MyAiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbGluZWJyZWFr
X2luX3ByZWxpbmUiLCAic2VsZWN0NFxuIiwgZ2V0UG9zaXRpb25PZk5leHRMaW5lSGVhZE9mKCJ0
b3Rlc3RfbGluZWJyZWFrX2luX3ByZWxpbmUiKSk7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X3Rh
Yl9pbl9wcmVsaW5lIiwgInNlbGVjdDVcdCIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0
aXBsZV93aGl0ZXNwYWNlc19pbl9wcmVsaW5lIiwgInNlbGVjdDYgIik7CisKKyAgICAgICAgZG9U
ZXN0KCJ0b3Rlc3RfbGluZWJyZWFrX291dF9ub3dyYXAiLCAic2VsZWN0MVxuIik7CisgICAgICAg
IGRvVGVzdCgidG90ZXN0X3RhYl9vdXRfbm93cmFwIiwgInNlbGVjdDJcdCIpOworICAgICAgICBk
b1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfbm93cmFwIiwgInNlbGVjdDMg
Iik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X2xpbmVicmVha19pbl9ub3dyYXAiLCAic2VsZWN0
NFxuIiwgZ2V0UG9zaXRpb25Gb3J3YXJkKCJ0b3Rlc3RfbGluZWJyZWFrX2luX25vd3JhcCIsIDEp
KTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfdGFiX2luX25vd3JhcCIsICJzZWxlY3Q1XHQiLCBn
ZXRQb3NpdGlvbkZvcndhcmQoInRvdGVzdF90YWJfaW5fbm93cmFwIiwgMSkpOworICAgICAgICBk
b1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9ub3dyYXAiLCAic2VsZWN0NiAi
LCBnZXRQb3NpdGlvbkZvcndhcmQoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9ub3dy
YXAiLCAxKSk7CisKKyAgICB9Cit9CisKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3RzKCkiPgorCis8cD4KK1RoaXMgdGVzdHMgdGhhdCBkb3VibGUtY2xpY2tpbmcg
YSB3b3JkIHRoYXQgZm9sbG93cyBuZXdsaW5lIGFuZCBzcGFuCis8L3A+CisKKzxkaXYgY2xhc3M9
ImNhc2UiPgorPGgzPm1pbmltdW0gY2FzZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdCI+
CithYmNkIGVmZ2ggaWprbCBtbm9wIDxiIGlkPSJ0b3Rlc3RfbWluaW11bSI+c2VsZWN0MTwvYj4K
KzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPndpdGggYW5vdGhlciB3
b3JkIGFmdGVyIHRoZSBzcGFuPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2Qg
ZWZnaCBpamtsIG1ub3AgPGIgaWQ9InRvdGVzdF9iZWZvcmVfYWZ0ZXIiPnNlbGVjdDI8L2I+IG5v
dHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2Ug
bGluZWJyZWFrIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRlIGVsZW1lbnQpPC9oMz4KKzxkaXYg
c3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AKKzxiIGlkPSJ0b3Rlc3Rf
bGluZWJyZWFrX291dCI+c2VsZWN0MzwvYj4KK25vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRz
aWRlIGVsZW1lbnQpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBp
amtsIG1ub3AJPGIgaWQ9InRvdGVzdF90YWJfb3V0Ij5zZWxlY3Q0PC9iPglub3R0b3NlbGVjdAor
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIG11bHRpcGxlIHdo
aXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRlIGVsZW1lbnQpPC9oMz4KKzxkaXYg
c3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgICAgPGIgaWQ9InRvdGVz
dF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXQiPnNlbGVjdDU8L2I+ICAgIG5vdHRvc2VsZWN0Cis8
L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbGluZWJyZWFrIGFz
IHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6
MTAwcHQiPgorYWJjZCBlZmdoIGlqa2wgbW5vcDxiIGlkPSJ0b3Rlc3RfbGluZWJyZWFrX2luIj4K
K3NlbGVjdDYKKzwvYj5ub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0i
Y2FzZSI+Cis8aDM+dXNlIHRhYiBhcyB3b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQpPC9o
Mz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3A8YiBpZD0i
dG90ZXN0X3RhYl9pbiI+CXNlbGVjdDcJPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbXVsdGlwbGUgd2hpdGVzcGFjZXMgYXMgd29y
ZCBzZXBhcmF0b3IgKGluc2lkZSBlbGVtZW50KTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBw
dCI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNl
c19pbiI+ICAgIHNlbGVjdDggICAgPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8
ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz53aXRoIGFub3RoZXIgd29yZCBpbiBzYW1lIHRoZSBzcGFu
PC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgPGIg
aWQ9InRvdGVzdF9tdWx0aXBsZV93b3JkX2luX3NwYW4iPnNlbGVjdDkgbm90PC9iPiBub3R5ZXQK
KzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPndpdGggYW5vdGhlciB3
b3JkIGJlZm9yZSB0aGUgc3BhbiwgaW4gdGhlIHNhbWUgbGluZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3
aWR0aDoxMDBwdCI+CithYmNkIGVmZ2ggaWprbCBtbm9wIHFyc3QgPGIgaWQ9InRvdGVzdF93b3Jk
X2JlZm9yZV9oZXJlX2luX2xpbmUiPnNlbGVjdDEwPC9iPiBub3R5ZXQKKzwvZGl2PgorPC9kaXY+
CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPmEgZmlyc3QgaGFsZiBvZiB3b3JkIGlzIGluc2lk
ZSBiIGVsZW1lbnQ8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlq
a2wgbW5vcCBxcnN0IDxiIGlkPSJ0b3Rlc3Rfc3Bhbl9maXJzdF9oYWxmIj5zZWw8L2I+ZWN0MTEg
bm90eWV0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz5hIHNlY29u
ZCBoYWxmIG9mIHdvcmQgaXMgaW5zaWRlIGIgZWxlbWVudDwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0
aDoxMDBwdCI+CithYmNkIGVmZ2ggaWprbCBtbm9wIHFyc3Qgc2VsPGIgaWQ9InRvdGVzdF9zcGFu
X3NlY29uZF9oYWxmIj5lY3QxMjwvYj4gbm90eWV0Cis8L2Rpdj4KKzwvZGl2PgorCis8aDI+Y2Fz
ZXMgZm9yIHdoaXRlLXNwYWNlOiBwcmU8L2gyPgorPHA+CitOb3RlOiBIZXJlIGZvciBwcmUsIHdl
IGNoYW5nZSB3aWR0aCB2YWx1ZSB0byAyMDAgdG8gcHJldmVudCBsYXlvdXQgY2hhbmdlIG9uIGNv
bnRlbnRFZGl0YWJsZSBlbmFibGVkLgorPC9wPgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51
c2UgbGluZWJyZWFrIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRlIGVsZW1lbnQsIHdoaXRlLXNw
YWNlOnByZSk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MjAwcHQ7d2hpdGUtc3BhY2U6cHJlOyI+
CithYmNkIGVmZ2ggaWprbCBtbm9wCis8YiBpZD0idG90ZXN0X2xpbmVicmVha19vdXRfcHJlIj5z
ZWxlY3QxPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNh
c2UiPgorPGgzPnVzZSB0YWIgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxlbWVudCwgd2hp
dGUtc3BhY2U6cHJlKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpw
cmU7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AJPGIgaWQ9InRvdGVzdF90YWJfb3V0X3ByZSI+c2Vs
ZWN0MjwvYj4Jbm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2Ui
PgorPGgzPnVzZSBtdWx0aXBsZSB3aGl0ZXNwYWNlcyBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lk
ZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjIwMHB0
O3doaXRlLXNwYWNlOnByZTsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcCAgICA8YiBpZD0idG90ZXN0
X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9wcmUiPnNlbGVjdDM8L2I+ICAgIG5vdHRvc2VsZWN0
Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbGluZWJyZWFr
IGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlKTwvaDM+
Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmU7Ij4KK2FiY2QgZWZnaCBp
amtsIG1ub3A8YiBpZD0idG90ZXN0X2xpbmVicmVha19pbl9wcmUiPgorc2VsZWN0NAorPC9iPm5v
dHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2Ug
dGFiIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlKTwv
aDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmU7Ij4KK2FiY2QgZWZn
aCBpamtsIG1ub3A8YiBpZD0idG90ZXN0X3RhYl9pbl9wcmUiPglzZWxlY3Q1CTwvYj5ub3R0b3Nl
bGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIG11bHRp
cGxlIHdoaXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUt
c3BhY2U6cHJlKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmU7
Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3A8YiBpZD0idG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2Vz
X2luX3ByZSI+ICAgIHNlbGVjdDYgICAgPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2Pgor
Cis8aDI+Y2FzZXMgZm9yIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDwvaDI+CisKKzxkaXYgY2xhc3M9
ImNhc2UiPgorPGgzPnVzZSBsaW5lYnJlYWsgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxl
bWVudCwgd2hpdGUtc3BhY2U6cHJlLXdyYXApPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0
O3doaXRlLXNwYWNlOnByZS13cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wCis8YiBpZD0idG90
ZXN0X2xpbmVicmVha19vdXRfcHJld3JhcCI+c2VsZWN0MTwvYj4KK25vdHRvc2VsZWN0Cis8L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2Vw
YXJhdG9yIChvdXRzaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZS13cmFwKTwvaDM+Cis8ZGl2
IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDsiPgorYWJjZCBlZmdoIGlq
a2wgbW5vcAk8YiBpZD0idG90ZXN0X3RhYl9vdXRfcHJld3JhcCI+c2VsZWN0MjwvYj4Jbm90dG9z
ZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBtdWx0
aXBsZSB3aGl0ZXNwYWNlcyBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVtZW50LCB3aGl0
ZS1zcGFjZTpwcmUtd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3Bh
Y2U6cHJlLXdyYXA7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgICAgPGIgaWQ9InRvdGVzdF9tdWx0
aXBsZV93aGl0ZXNwYWNlc19vdXRfcHJld3JhcCI+c2VsZWN0MzwvYj4gICAgbm90dG9zZWxlY3QK
KzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBsaW5lYnJlYWsg
YXMgd29yZCBzZXBhcmF0b3IgKGluc2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUtd3JhcCk8
L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ij4KK2Fi
Y2QgZWZnaCBpamtsIG1ub3A8YiBpZD0idG90ZXN0X2xpbmVicmVha19pbl9wcmV3cmFwIj4KK3Nl
bGVjdDQKKzwvYj5ub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2Fz
ZSI+Cis8aDM+dXNlIHRhYiBhcyB3b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRl
LXNwYWNlOnByZS13cmFwKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFj
ZTpwcmUtd3JhcDsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcDxiIGlkPSJ0b3Rlc3RfdGFiX2luX3By
ZXdyYXAiPglzZWxlY3Q1CTwvYj5ub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBj
bGFzcz0iY2FzZSI+Cis8aDM+dXNlIG11bHRpcGxlIHdoaXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJh
dG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlLXdyYXApPC9oMz4KKzxkaXYgc3R5
bGU9IndpZHRoOjEwMHB0O3doaXRlLXNwYWNlOnByZS13cmFwOyI+CithYmNkIGVmZ2ggaWprbCBt
bm9wPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmV3cmFwIj4gICAgc2Vs
ZWN0NiAgICA8L2I+bm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKworCis8aDI+Y2FzZXMg
Zm9yIHdoaXRlLXNwYWNlOiBwcmUtbGluZTwvaDI+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgz
PnVzZSBsaW5lYnJlYWsgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxlbWVudCwgd2hpdGUt
c3BhY2U6cHJlLWxpbmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0O3doaXRlLXNwYWNl
OnByZS1saW5lOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wCis8YiBpZD0idG90ZXN0X2xpbmVicmVh
a19vdXRfcHJlbGluZSI+c2VsZWN0MTwvYj4KK25vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRz
aWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZS1saW5lKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0
aDoxMDBwdDt3aGl0ZS1zcGFjZTpwcmUtbGluZTsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcAk8YiBp
ZD0idG90ZXN0X3RhYl9vdXRfcHJlbGluZSI+c2VsZWN0MjwvYj4Jbm90dG9zZWxlY3QKKzwvZGl2
PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBtdWx0aXBsZSB3aGl0ZXNw
YWNlcyBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUt
bGluZSk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6cHJlLWxpbmU7
Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgICAgPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0ZXNw
YWNlc19vdXRfcHJlbGluZSI+c2VsZWN0MzwvYj4gICAgbm90dG9zZWxlY3QKKzwvZGl2PgorPC9k
aXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBsaW5lYnJlYWsgYXMgd29yZCBzZXBh
cmF0b3IgKGluc2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUtbGluZSk8L2gzPgorPGRpdiBz
dHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6cHJlLWxpbmU7Ij4KK2FiY2QgZWZnaCBpamts
IG1ub3A8YiBpZD0idG90ZXN0X2xpbmVicmVha19pbl9wcmVsaW5lIj4KK3NlbGVjdDQKKzwvYj5u
b3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNl
IHRhYiBhcyB3b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZS1s
aW5lKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpwcmUtbGluZTsi
PgorYWJjZCBlZmdoIGlqa2wgbW5vcDxiIGlkPSJ0b3Rlc3RfdGFiX2luX3ByZWxpbmUiPglzZWxl
Y3Q1CTwvYj5ub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+
Cis8aDM+dXNlIG11bHRpcGxlIHdoaXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUg
ZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlLWxpbmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEw
MHB0O3doaXRlLXNwYWNlOnByZS1saW5lOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIgaWQ9InRv
dGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmVsaW5lIj4gICAgc2VsZWN0NiAgICA8L2I+
bm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxoMj5jYXNlcyBmb3Igd2hpdGUtc3BhY2U6
IG5vd3JhcDwvaDI+Cis8cD4KK05vdGU6IEFsdGhvdWdoIGZvbGxvd2luZyBjYXNlcyBoYXZlIG5v
IGxpbmUtYnJlYWtzIHRoYXQgaGFkIGNhdXNlZCBwcm9ibGVtIHJlcG9ydGVkIGJ1ZzI4MDM2LAor
d2UgYWRkIHRoZXNlIGZvciBjb21wcmVoZW5zaXZlbmVzcy4KKzwvcD4KKworPGRpdiBjbGFzcz0i
Y2FzZSI+Cis8aDM+dXNlIGxpbmVicmVhayBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVt
ZW50LCB3aGl0ZS1zcGFjZTpub3dyYXApPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0O3do
aXRlLXNwYWNlOm5vd3JhcDsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcAorPGIgaWQ9InRvdGVzdF9s
aW5lYnJlYWtfb3V0X25vd3JhcCI+c2VsZWN0MTwvYj4KK25vdHRvc2VsZWN0Cis8L2Rpdj4KKzwv
ZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2VwYXJhdG9y
IChvdXRzaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOm5vd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0i
d2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6bm93cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wCTxi
IGlkPSJ0b3Rlc3RfdGFiX291dF9ub3dyYXAiPnNlbGVjdDI8L2I+CW5vdHRvc2VsZWN0Cis8L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbXVsdGlwbGUgd2hpdGVz
cGFjZXMgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6bm93
cmFwKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpub3dyYXA7Ij4K
K2FiY2QgZWZnaCBpamtsIG1ub3AgICAgPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNl
c19vdXRfbm93cmFwIj5zZWxlY3QzPC9iPiAgICBub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4K
KworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIGxpbmVicmVhayBhcyB3b3JkIHNlcGFyYXRv
ciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOm5vd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0i
d2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6bm93cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIg
aWQ9InRvdGVzdF9saW5lYnJlYWtfaW5fbm93cmFwIj4KK3NlbGVjdDQKKzwvYj5ub3R0b3NlbGVj
dAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIHRhYiBhcyB3
b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOm5vd3JhcCk8L2gzPgor
PGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6bm93cmFwOyI+CithYmNkIGVmZ2gg
aWprbCBtbm9wPGIgaWQ9InRvdGVzdF90YWJfaW5fbm93cmFwIj4Jc2VsZWN0NQk8L2I+bm90dG9z
ZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBtdWx0
aXBsZSB3aGl0ZXNwYWNlcyBhcyB3b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRl
LXNwYWNlOm5vd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6
bm93cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0
ZXNwYWNlc19pbl9ub3dyYXAiPiAgICBzZWxlY3Q2ICAgIDwvYj5ub3R0b3NlbGVjdAorPC9kaXY+
Cis8L2Rpdj4KKworPCEtLQorCis8aDI+Y2FzZXMgZm9yIHNvdXJjZS1vcmlnaW5hdGVkIGxpbmUt
YnJlYWtzIHdpdGggd2hpdGUtc3BhY2U6IHByZS0qIGZhbWlseTwvaDI+CisKKzxkaXYgY2xhc3M9
ImNhc2UiPgorPGgzPndoaXRlLXNwYWNlOnByZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBw
dDt3aGl0ZS1zcGFjZTpwcmU7YmFja2dyb3VuZC1jb2xvcjpsaWdodGdyYXk7Ij4KK2FiY2QgZWZn
aCBpamtsIG1ub3AKKzxiIGlkPSJ0b3Rlc3Rfc291cmNlYnJlYWtfcHJlIj5zZWxlY3QxPC9iPgor
bm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxoMz53aGl0ZS1zcGFjZTpwcmUtd3JhcDwv
aDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDtiYWNrZ3Jv
dW5kLWNvbG9yOmxpZ2h0Z3JheTsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcAorPGIgaWQ9InRvdGVz
dF9zb3VyY2VicmVha19wcmV3cmFwIj5zZWxlY3QyPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2Pgor
PC9kaXY+CisKKzxoMz53aGl0ZS1zcGFjZTpwcmUtbGluZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0
aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmUtbGluZTtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Z3JheTsi
PgorYWJjZCBlZmdoIGlqa2wgbW5vcAorPGIgaWQ9InRvdGVzdF9zb3VyY2VicmVha19wcmVsaW5l
Ij5zZWxlY3QzPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKy0tPgorCis8ZGl2
PjxzcGFuIGlkPSJoZWlnaHRNZWFzdXJlIj54PC9zcGFuPjwvZGl2PgorCis8cHJlIGlkPSJsb2ci
PgorPC9wcmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmEzOWNkMy4uMDIyMGJmOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAwOS0xMi0xMiAgTU9SSVRBIEhhamltZSA8bW9ycml0YUBnbWFpbC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDI4MzA2OiBk
b3VibGUtY2xpY2tpbmcgYSB3b3JkIGluc2lkZSA8Yj4gYmVzaWRlIG5ld2xpbmUgc2VsZWN0IHR3
byB3b3JkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjgzMDYKKyAgICAgICAgCisgICAgICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3Ig
bWlzc2VkIHRyYWlsaW5nIHdoaXRlc3BhY2VzIGp1c3QKKyAgICAgICAgYmVmb3JlIGZvbGRpbmcg
bGluZS1icmVhaywgd2hpY2ggaXMgdXNlZCB0byBkZXRlY3Qgd29yZAorICAgICAgICBib3VuZGFy
aWVzLiBUaGlzIGZpeCBjaGVja3Mgc3RyaW5ncyBvbiBSZW5kZXJUZXh0IGFuZCBleHBhbmQgdGV4
dAorICAgICAgICByYW5nZSBvbiBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIHRvIGlu
Y2x1ZGUgdHJhaWxpbmcKKyAgICAgICAgd2hpdGVzcGFjZXMgaWYgYXZhaWxibGUuCisgICAgICAg
IAorICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3It
c3Bhbi5odG1sCisgICAgICAgIAorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbGxhcHNlZFNwYWNlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6Oml0ZXJhYmxlTWF4T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNr
d2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorCiAyMDA5LTEyLTEyICBLZW5uZXRoIFJ1c3Nl
bGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggZGYyNzFiNi4uNzMyZWQ4ZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKQEAgLTcwNSw2ICs3MDUsMzIgQEAgc3RhdGljIGJvb2wgc2hvdWxk
RW1pdEV4dHJhTmV3bGluZUZvck5vZGUoTm9kZSogbm9kZSkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3N0YXRpYyBpbnQgY29sbGFwc2VkU3BhY2VMZW5ndGgoTm9kZSogdGV4dE5vZGUsIGludCB0
ZXh0RW5kKQoreworICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gdG9SZW5kZXJUZXh0KHRleHRO
b2RlLT5yZW5kZXJlcigpKTsKKworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gcmVuZGVy
ZXItPnRleHQoKS0+Y2hhcmFjdGVycygpOworICAgIGludCBsZW5ndGggPSBzdGF0aWNfY2FzdDxp
bnQ+KHJlbmRlcmVyLT50ZXh0KCktPmxlbmd0aCgpKTsKKyAgICBmb3IgKGludCBpID0gdGV4dEVu
ZDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghcmVuZGVyZXItPnN0eWxlKCktPmlz
Q29sbGFwc2libGVXaGl0ZVNwYWNlKGNoYXJhY3RlcnNbaV0pKQorICAgICAgICAgICAgcmV0dXJu
IGkgLSB0ZXh0RW5kOworICAgIH0KKworICAgIHJldHVybiBsZW5ndGggLSB0ZXh0RW5kOworfQor
CisvLyBGb3IgdGhlIHB1cnBvc2Ugb2Ygd29yZCBib3VuZGFyeSBkZXRlY3Rpb24sCisvLyB3ZSBz
aG91bGQgaXRlcmF0ZSBhbGwgdmlzaWJsZSB0ZXh0IGFuZCB0cmFpbGluZyAoY29sbGFwc2VkKSB3
aGl0ZXNwYWNlcy4gCitzdGF0aWMgaW50IGl0ZXJhYmxlTWF4T2Zmc2V0KE5vZGUqIG5vZGUpCit7
CisgICAgaW50IG9mZnNldCA9IGNhcmV0TWF4T2Zmc2V0KG5vZGUpOworCisgICAgaWYgKG5vZGUt
PnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpCisgICAgICAgIG9mZnNl
dCArPSBjb2xsYXBzZWRTcGFjZUxlbmd0aChub2RlLCBvZmZzZXQpOworCisgICAgcmV0dXJuIG9m
ZnNldDsKK30KKwogLy8gV2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIGVtaXQgYSBjaGFyYWN0ZXIg
YXMgd2UgZW50ZXIgbV9ub2RlIChpZiBpdCdzIGEgY29udGFpbmVyKSBvciBhcyB3ZSBoaXQgaXQg
KGlmIGl0J3MgYXRvbWljKS4KIGJvb2wgVGV4dEl0ZXJhdG9yOjpzaG91bGRSZXByZXNlbnROb2Rl
T2Zmc2V0WmVybygpCiB7CkBAIC0xMDI5LDcgKzEwNTUsNyBAQCB2b2lkIFNpbXBsaWZpZWRCYWNr
d2FyZHNUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogICAgICAgICBtX25vZGUgPSBuZXh0OwogICAg
ICAgICBpZiAobV9ub2RlKQogICAgICAgICAgICAgcHVzaEZ1bGx5Q2xpcHBlZFN0YXRlKG1fZnVs
bHlDbGlwcGVkU3RhY2ssIG1fbm9kZSk7Ci0gICAgICAgIG1fb2Zmc2V0ID0gbV9ub2RlID8gY2Fy
ZXRNYXhPZmZzZXQobV9ub2RlKSA6IDA7CisgICAgICAgIG1fb2Zmc2V0ID0gbV9ub2RlID8gaXRl
cmFibGVNYXhPZmZzZXQobV9ub2RlKSA6IDA7CiAgICAgICAgIG1faGFuZGxlZE5vZGUgPSBmYWxz
ZTsKICAgICAgICAgbV9oYW5kbGVkQ2hpbGRyZW4gPSBmYWxzZTsKICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44874</attachid>
            <date>2009-12-15 06:00:42 -0800</date>
            <delta_ts>2009-12-16 18:20:14 -0800</delta_ts>
            <desc>patch update 5</desc>
            <filename>bug-28306-20091215230045.patch</filename>
            <type>text/plain</type>
            <size>24440</size>
            <attacher name="MORITA Hajime">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOTEwNTU0Li42YWVkZTEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTIt
MTUgIE1PUklUQSBIYWppbWUgPG1vcnJpdGFAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyODMwNjogZG91YmxlLWNsaWNraW5n
IGEgd29yZCBpbnNpZGUgPGI+IGJlc2lkZSBuZXdsaW5lIHNlbGVjdCB0d28gd29yZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MzA2CisJCisgICAg
ICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgbWlzc2VkIHRyYWlsaW5nIHdoaXRl
c3BhY2VzIGp1c3QKKyAgICAgICAgYmVmb3JlIGZvbGRpbmcgbGluZS1icmVhaywgd2hpY2ggaXMg
dXNlZCB0byBkZXRlY3Qgd29yZAorICAgICAgICBib3VuZGFyaWVzLiBUaGlzIGZpeCBjaGVja3Mg
c3RyaW5ncyBvbiBSZW5kZXJUZXh0IGFuZCBleHBhbmQgdGV4dAorICAgICAgICByYW5nZSBvbiBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIHRvIGluY2x1ZGUgdHJhaWxpbmcKKyAgICAg
ICAgd2hpdGVzcGFjZXMgaWYgYXZhaWxibGUuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWw6IEFk
ZGVkLgorCiAyMDA5LTEyLTEyICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KQEAgLTI4NjMsNyArMjg3OSw2IEBACiAg
ICAgICAgIFVuc2tpcCBhIGJ1bmNoIG9mIHBhc3NpbmcgaHR0cC9uYXZpZ2F0aW9uIHRlc3RzLgog
CiAgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKLQogMjAwOS0xMS0yMiAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZl
ciBIdW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91Ymxl
Y2xpY2stYmVzaWRlLWNyLXNwYW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZTQ4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4NyBAQAorVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlj
a2luZyBhIHdvcmQgdGhhdCBmb2xsb3dzIG5ld2xpbmUgYW5kIHNwYW4KKworY2FzZXMgZm9yIHdo
aXRlLXNwYWNlOiBwcmUKKworTm90ZTogSGVyZSBmb3IgcHJlLCB3ZSBjaGFuZ2Ugd2lkdGggdmFs
dWUgdG8gMjAwIHRvIHByZXZlbnQgbGF5b3V0IGNoYW5nZSBvbiBjb250ZW50RWRpdGFibGUgZW5h
YmxlZC4KKworY2FzZXMgZm9yIHdoaXRlLXNwYWNlOiBwcmUtd3JhcAorCitjYXNlcyBmb3Igd2hp
dGUtc3BhY2U6IHByZS1saW5lCisKK2Nhc2VzIGZvciB3aGl0ZS1zcGFjZTogbm93cmFwCisKK05v
dGU6IEFsdGhvdWdoIGZvbGxvd2luZyBjYXNlcyBoYXZlIG5vIGxpbmUtYnJlYWtzIHRoYXQgaGFk
IGNhdXNlZCBwcm9ibGVtIHJlcG9ydGVkIGJ1ZzI4MDM2LCB3ZSBhZGQgdGhlc2UgZm9yIGNvbXBy
ZWhlbnNpdmVuZXNzLgorCitQYXNzZWQgdG90ZXN0X21pbmltdW0KK1Bhc3NlZCB0b3Rlc3RfbWlu
aW11bSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X2JlZm9yZV9hZnRlcgor
UGFzc2VkIHRvdGVzdF9iZWZvcmVfYWZ0ZXIgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2Vk
IHRvdGVzdF9saW5lYnJlYWtfb3V0CitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19vdXQgKHdpdGgg
Y29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90YWJfb3V0CitQYXNzZWQgdG90ZXN0X3Rh
Yl9vdXQgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0
ZXNwYWNlc19vdXQKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNfb3V0ICh3aXRo
IGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX2luCitQYXNzZWQgdG90
ZXN0X2xpbmVicmVha19pbiAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3Rh
Yl9pbgorUGFzc2VkIHRvdGVzdF90YWJfaW4gKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2Vk
IHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbgorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93
aGl0ZXNwYWNlc19pbiAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X211bHRp
cGxlX3dvcmRfaW5fc3BhbgorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93b3JkX2luX3NwYW4gKHdp
dGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF93b3JkX2JlZm9yZV9oZXJlX2luX2xp
bmUKK1Bhc3NlZCB0b3Rlc3Rfd29yZF9iZWZvcmVfaGVyZV9pbl9saW5lICh3aXRoIGNvbnRlbnRF
ZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3Rfc3Bhbl9maXJzdF9oYWxmCitQYXNzZWQgdG90ZXN0X3Nw
YW5fZmlyc3RfaGFsZiAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3NwYW5f
c2Vjb25kX2hhbGYKK1Bhc3NlZCB0b3Rlc3Rfc3Bhbl9zZWNvbmRfaGFsZiAod2l0aCBjb250ZW50
RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19vdXRfcHJlCitQYXNzZWQgdG90ZXN0
X2xpbmVicmVha19vdXRfcHJlICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3Rf
dGFiX291dF9wcmUKK1Bhc3NlZCB0b3Rlc3RfdGFiX291dF9wcmUgKHdpdGggY29udGVudEVkaXRh
YmxlKQorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfcHJlCitQYXNzZWQg
dG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9wcmUgKHdpdGggY29udGVudEVkaXRhYmxl
KQorUGFzc2VkIHRvdGVzdF9saW5lYnJlYWtfaW5fcHJlCitQYXNzZWQgdG90ZXN0X2xpbmVicmVh
a19pbl9wcmUgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90YWJfaW5fcHJl
CitQYXNzZWQgdG90ZXN0X3RhYl9pbl9wcmUgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2Vk
IHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmUKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlw
bGVfd2hpdGVzcGFjZXNfaW5fcHJlICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rl
c3RfbGluZWJyZWFrX291dF9wcmV3cmFwCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19vdXRfcHJl
d3JhcCAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3RhYl9vdXRfcHJld3Jh
cAorUGFzc2VkIHRvdGVzdF90YWJfb3V0X3ByZXdyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQor
UGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfcHJld3JhcAorUGFzc2VkIHRv
dGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfcHJld3JhcCAod2l0aCBjb250ZW50RWRpdGFi
bGUpCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19pbl9wcmV3cmFwCitQYXNzZWQgdG90ZXN0X2xp
bmVicmVha19pbl9wcmV3cmFwICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3Rf
dGFiX2luX3ByZXdyYXAKK1Bhc3NlZCB0b3Rlc3RfdGFiX2luX3ByZXdyYXAgKHdpdGggY29udGVu
dEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmV3cmFw
CitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX3ByZXdyYXAgKHdpdGggY29u
dGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF9saW5lYnJlYWtfb3V0X3ByZWxpbmUKK1Bhc3Nl
ZCB0b3Rlc3RfbGluZWJyZWFrX291dF9wcmVsaW5lICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bh
c3NlZCB0b3Rlc3RfdGFiX291dF9wcmVsaW5lCitQYXNzZWQgdG90ZXN0X3RhYl9vdXRfcHJlbGlu
ZSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3Bh
Y2VzX291dF9wcmVsaW5lCitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9w
cmVsaW5lICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX2lu
X3ByZWxpbmUKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX2luX3ByZWxpbmUgKHdpdGggY29udGVu
dEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90YWJfaW5fcHJlbGluZQorUGFzc2VkIHRvdGVzdF90
YWJfaW5fcHJlbGluZSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X211bHRp
cGxlX3doaXRlc3BhY2VzX2luX3ByZWxpbmUKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlwbGVfd2hpdGVz
cGFjZXNfaW5fcHJlbGluZSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X2xp
bmVicmVha19vdXRfbm93cmFwCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19vdXRfbm93cmFwICh3
aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfdGFiX291dF9ub3dyYXAKK1Bhc3Nl
ZCB0b3Rlc3RfdGFiX291dF9ub3dyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRv
dGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfbm93cmFwCitQYXNzZWQgdG90ZXN0X211bHRp
cGxlX3doaXRlc3BhY2VzX291dF9ub3dyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2Vk
IHRvdGVzdF9saW5lYnJlYWtfaW5fbm93cmFwCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19pbl9u
b3dyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90YWJfaW5fbm93cmFw
CitQYXNzZWQgdG90ZXN0X3RhYl9pbl9ub3dyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFz
c2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9ub3dyYXAKK1Bhc3NlZCB0b3Rlc3Rf
bXVsdGlwbGVfd2hpdGVzcGFjZXNfaW5fbm93cmFwICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVz
aWRlLWNyLXNwYW4uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNs
aWNrLWJlc2lkZS1jci1zcGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYmQ3ZjJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWwKQEAgLTAsMCArMSw1MzEgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChmYWxzZSk7CisgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQodHJ1
ZSk7Cit9CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9uT2ZOb2RlKGlkKQoreworICAgIHZhciBuID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworICAgIHZhciBwb3MgPSB7eDogMCwgeTogMH07
CisKKyAgICB3aGlsZSAobikgeworICAgICAgICBwb3MueCArPSBuLm9mZnNldExlZnQgKyBuLmNs
aWVudExlZnQ7CisgICAgICAgIHBvcy55ICs9IG4ub2Zmc2V0VG9wICsgbi5jbGllbnRUb3A7Cisg
ICAgICAgIG4gPSBuLm9mZnNldFBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIHBvczsKK30KKwor
ZnVuY3Rpb24gZG91YmxlQ2xpY2tQb3NpdGlvbihwb3MpCit7CisgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8ocG9zLnggKyAyLCBwb3MueSArIDIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDApOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gZGVmb2N1cygpCit7CisgICAgZG91
YmxlQ2xpY2tQb3NpdGlvbih7eDowLCB5OjB9KTsKK30KKworZnVuY3Rpb24gZmluZFBhcmVudERp
dihzcGFuSWQpCit7CisgICAgdmFyIG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzcGFuSWQp
OworICAgIHdoaWxlIChuKSB7CisgICAgICB2YXIgcGFyZW50ID0gbi5wYXJlbnROb2RlOworICAg
ICAgaWYgKHBhcmVudCAmJiBwYXJlbnQudGFnTmFtZSA9PSAiRElWIikKKyAgICAgICAgcmV0dXJu
IHBhcmVudDsKKyAgICAgIG4gPSBwYXJlbnQ7CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7Cit9
CisKK2Z1bmN0aW9uIG1ha2VQYXJlbnRCbG9ja0VkaXRhYmxlKHNwYW5JZCkKK3sKKyAgICB2YXIg
cGFyZW50ID0gZmluZFBhcmVudERpdihzcGFuSWQpOworICAgIHBhcmVudC5jb250ZW50RWRpdGFi
bGUgPSB0cnVlOworfQorCitmdW5jdGlvbiBoaWRlQ2FzZUJsb2NrRm9yKHNwYW5JZCkKK3sKKyAg
ICB2YXIgbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwYW5JZCk7CisgICAgd2hpbGUgKG4p
IHsKKyAgICAgIG4gPSBuLnBhcmVudE5vZGU7CisgICAgICBpZiAobiAmJiBuLmNsYXNzTmFtZSA9
PSAiY2FzZSIpIHsKKyAgICAgICAgbi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICBu
LnN0eWxlLm9mZnNldFRvcDsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgIH0KK30KKwor
ZnVuY3Rpb24gZG9UZXN0KHRlc3RJZCwgZXhwZWN0ZWRUZXh0LCBnaXZlbkNsaWNrUG9zaXRpb24p
Cit7CisgICAgLy8gU2ltdWxhdGUgYSBkb3VibGUgY2xpY2suCisgICAgZGVmb2N1cygpCisgICAg
dmFyIHBvcyA9IGdpdmVuQ2xpY2tQb3NpdGlvbiB8fCBnZXRQb3NpdGlvbk9mTm9kZSh0ZXN0SWQp
OworICAgIGRvdWJsZUNsaWNrUG9zaXRpb24ocG9zKTsKKworICAgIC8vIEdldCB0aGUgdGV4dCBv
ZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKKyAgICB2YXIgYWN0dWFsVGV4dCA9IHNlbC5nZXRSYW5nZUF0KDApLnRvU3RyaW5nKCk7
CisKKyAgICBpZiAoZXhwZWN0ZWRUZXh0ID09IGFjdHVhbFRleHQpIHsKKyAgICAgICAgbG9nKCJQ
YXNzZWQgIiArIHRlc3RJZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKCJGYWlsZWQgIiAr
IHRlc3RJZCk7CisgICAgICAgIGxvZygiICBFeHBlY3RlZDogIiArIGV4cGVjdGVkVGV4dCk7Cisg
ICAgICAgIGxvZygiICBBY3R1YWw6ICIgKyBhY3R1YWxUZXh0KTsKKyAgICB9CisKKyAgICAvLyBS
dW4gdGhlIHNhbWUgY2FzZSB3aXRoIGNvbnRlbnRFZGl0YWJsZSBlbmFibGVkLgorICAgIG1ha2VQ
YXJlbnRCbG9ja0VkaXRhYmxlKHRlc3RJZCk7CisKKyAgICBkZWZvY3VzKCk7CisgICAgZG91Ymxl
Q2xpY2tQb3NpdGlvbihwb3MpOworCisgICAgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwor
ICAgIGFjdHVhbFRleHQgPSBzZWwuZ2V0UmFuZ2VBdCgwKS50b1N0cmluZygpOworCisgICAgaWYg
KGV4cGVjdGVkVGV4dCA9PSBhY3R1YWxUZXh0KSB7CisgICAgICAgIGxvZygiUGFzc2VkICIgKyB0
ZXN0SWQgKyAiICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkiKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBsb2coIkZhaWxlZCAiICsgdGVzdElkICsgIiAod2l0aCBjb250ZW50RWRpdGFibGUpIik7Cisg
ICAgICAgIGxvZygiICBFeHBlY3RlZDogIiArIGV4cGVjdGVkVGV4dCk7CisgICAgICAgIGxvZygi
ICBBY3R1YWw6ICIgKyBhY3R1YWxUZXh0KTsKKyAgICB9CisKKyAgICAvLyBIaWRlIGEgY29udGFp
bmVyIGZvciB0aGUgY2FzZSB0byB3b3JrYXJvdW5kIGxpbWl0ZWQgd2luZG93IHNpemUKKyAgICBo
aWRlQ2FzZUJsb2NrRm9yKHRlc3RJZCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAg
dmFyIGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7CisgICAgbC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAgICBsLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOworfQorCitmdW5jdGlvbiBpbml0Q29uc3RhbnRzKCkK
K3sKKyAgIHZhciBoZWlnaHRNZWFzdXJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhlaWdo
dE1lYXN1cmUiKTsKKyAgIExJTkVfSEVJR0hUID0gaGVpZ2h0TWVhc3VyZS5vZmZzZXRIZWlnaHQ7
CisgICBMSU5FX0xFRlQgICA9IGhlaWdodE1lYXN1cmUub2Zmc2V0TGVmdCArIGhlaWdodE1lYXN1
cmUuY2xpZW50TGVmdDsKKyAgIENIQVJfV0lEVEggID0gaGVpZ2h0TWVhc3VyZS5vZmZzZXRXaWR0
aDsKKyAgIGhlaWdodE1lYXN1cmUuc3R5bGUuZGlzcGxheSA9ICJub25lIjsgLy8gaGlkZSBmb3Ig
cmVhZGFibGUgdGVzdCByZXN1bHQKK30KKworZnVuY3Rpb24gZ2V0UG9zaXRpb25PZk5leHRMaW5l
SGVhZE9mKHNwYW5JZCkKK3sKKyAgIHZhciBwb3MgPSBnZXRQb3NpdGlvbk9mTm9kZShzcGFuSWQp
CisgICBwb3MueCAgPSBMSU5FX0xFRlQ7CisgICBwb3MueSArPSBMSU5FX0hFSUdIVDsKKyAgIHJl
dHVybiBwb3M7Cit9CisKK2Z1bmN0aW9uIGdldFBvc2l0aW9uRm9yd2FyZChzcGFuSWQsIG5jaGFy
YWN0ZXJzKQoreworICAgdmFyIHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKHNwYW5JZCkKKyAgIHBv
cy54ICs9IENIQVJfV0lEVEgqbmNoYXJhY3RlcnM7CisgICByZXR1cm4gcG9zOworfQorCitmdW5j
dGlvbiBydW5UZXN0cygpCit7CisgICAgaW5pdENvbnN0YW50cygpOworCisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBkb1Rlc3QoInRvdGVzdF9taW5pbXVt
IiwgInNlbGVjdDEiKTsKKyAgICAgICAgLy8gV2UgbWF5IGhhdmUgdG8gbWFrZSBFZGl0b3JDbGll
bnQ6OmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCBmYWxzZSBvbgorICAgICAgICAv
LyBEdW1wUmVuZGVyVHJlZSB0byBjbGFyaWZ5IGNhc2VzLi4uCisgICAgICAgIGRvVGVzdCgidG90
ZXN0X2JlZm9yZV9hZnRlciIsICJzZWxlY3QyICIpOworCisgICAgICAgIGRvVGVzdCgidG90ZXN0
X2xpbmVicmVha19vdXQiLCAic2VsZWN0M1xuIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X3Rh
Yl9vdXQiLCAic2VsZWN0NFx0Iik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X211bHRpcGxlX3do
aXRlc3BhY2VzX291dCIsICJzZWxlY3Q1ICIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9saW5l
YnJlYWtfaW4iLCAic2VsZWN0NlxuIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X3RhYl9pbiIs
ICJzZWxlY3Q3XHQiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFj
ZXNfaW4iLCAic2VsZWN0OCAiKTsKKworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93
b3JkX2luX3NwYW4iLCAic2VsZWN0OSAiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3Rfd29yZF9i
ZWZvcmVfaGVyZV9pbl9saW5lIiwgInNlbGVjdDEwICIpOworICAgICAgICBkb1Rlc3QoInRvdGVz
dF9zcGFuX2ZpcnN0X2hhbGYiLCAic2VsZWN0MTEgIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0
X3NwYW5fc2Vjb25kX2hhbGYiLCAic2VsZWN0MTIgIik7CisKKyAgICAgICAgZG9UZXN0KCJ0b3Rl
c3RfbGluZWJyZWFrX291dF9wcmUiLCAic2VsZWN0MSIpOworICAgICAgICBkb1Rlc3QoInRvdGVz
dF90YWJfb3V0X3ByZSIsICJzZWxlY3QyXHQiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbXVs
dGlwbGVfd2hpdGVzcGFjZXNfb3V0X3ByZSIsICJzZWxlY3QzICAgICIpOworICAgICAgICBkb1Rl
c3QoInRvdGVzdF9saW5lYnJlYWtfaW5fcHJlIiwgInNlbGVjdDQiLCBnZXRQb3NpdGlvbk9mTmV4
dExpbmVIZWFkT2YoInRvdGVzdF9saW5lYnJlYWtfaW5fcHJlIikpOworICAgICAgICBkb1Rlc3Qo
InRvdGVzdF90YWJfaW5fcHJlIiwgInNlbGVjdDVcdCIpOworICAgICAgICBkb1Rlc3QoInRvdGVz
dF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmUiLCAic2VsZWN0NiAgICAiLCBnZXRQb3NpdGlv
bkZvcndhcmQoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmUiLCAiICAgICIubGVu
Z3RoKSk7CisKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbGluZWJyZWFrX291dF9wcmV3cmFwIiwg
InNlbGVjdDEiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfdGFiX291dF9wcmV3cmFwIiwgInNl
bGVjdDJcdCIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19v
dXRfcHJld3JhcCIsICJzZWxlY3QzICAgICIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9saW5l
YnJlYWtfaW5fcHJld3JhcCIsICJzZWxlY3Q0IiwgZ2V0UG9zaXRpb25PZk5leHRMaW5lSGVhZE9m
KCJ0b3Rlc3RfbGluZWJyZWFrX2luX3ByZXdyYXAiKSk7CisgICAgICAgIGRvVGVzdCgidG90ZXN0
X3RhYl9pbl9wcmV3cmFwIiwgInNlbGVjdDVcdCIsIGdldFBvc2l0aW9uT2ZOZXh0TGluZUhlYWRP
ZigidG90ZXN0X3RhYl9pbl9wcmV3cmFwIikpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0
aXBsZV93aGl0ZXNwYWNlc19pbl9wcmV3cmFwIiwgInNlbGVjdDYgICAgIiwgZ2V0UG9zaXRpb25P
Zk5leHRMaW5lSGVhZE9mKCJ0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNfaW5fcHJld3JhcCIp
KTsKKworICAgICAgICBkb1Rlc3QoInRvdGVzdF9saW5lYnJlYWtfb3V0X3ByZWxpbmUiLCAic2Vs
ZWN0MVxuIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X3RhYl9vdXRfcHJlbGluZSIsICJzZWxl
Y3QyXHQiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNfb3V0
X3ByZWxpbmUiLCAic2VsZWN0MyAiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbGluZWJyZWFr
X2luX3ByZWxpbmUiLCAic2VsZWN0NFxuIiwgZ2V0UG9zaXRpb25PZk5leHRMaW5lSGVhZE9mKCJ0
b3Rlc3RfbGluZWJyZWFrX2luX3ByZWxpbmUiKSk7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X3Rh
Yl9pbl9wcmVsaW5lIiwgInNlbGVjdDVcdCIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0
aXBsZV93aGl0ZXNwYWNlc19pbl9wcmVsaW5lIiwgInNlbGVjdDYgIik7CisKKyAgICAgICAgZG9U
ZXN0KCJ0b3Rlc3RfbGluZWJyZWFrX291dF9ub3dyYXAiLCAic2VsZWN0MVxuIik7CisgICAgICAg
IGRvVGVzdCgidG90ZXN0X3RhYl9vdXRfbm93cmFwIiwgInNlbGVjdDJcdCIpOworICAgICAgICBk
b1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRfbm93cmFwIiwgInNlbGVjdDMg
Iik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X2xpbmVicmVha19pbl9ub3dyYXAiLCAic2VsZWN0
NFxuIiwgZ2V0UG9zaXRpb25Gb3J3YXJkKCJ0b3Rlc3RfbGluZWJyZWFrX2luX25vd3JhcCIsIDEp
KTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfdGFiX2luX25vd3JhcCIsICJzZWxlY3Q1XHQiLCBn
ZXRQb3NpdGlvbkZvcndhcmQoInRvdGVzdF90YWJfaW5fbm93cmFwIiwgMSkpOworICAgICAgICBk
b1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9ub3dyYXAiLCAic2VsZWN0NiAi
LCBnZXRQb3NpdGlvbkZvcndhcmQoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9ub3dy
YXAiLCAxKSk7CisKKyAgICB9Cit9CisKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3RzKCkiPgorCis8cD4KK1RoaXMgdGVzdHMgdGhhdCBkb3VibGUtY2xpY2tpbmcg
YSB3b3JkIHRoYXQgZm9sbG93cyBuZXdsaW5lIGFuZCBzcGFuCis8L3A+CisKKzxkaXYgY2xhc3M9
ImNhc2UiPgorPGgzPm1pbmltdW0gY2FzZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdCI+
CithYmNkIGVmZ2ggaWprbCBtbm9wIDxiIGlkPSJ0b3Rlc3RfbWluaW11bSI+c2VsZWN0MTwvYj4K
KzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPndpdGggYW5vdGhlciB3
b3JkIGFmdGVyIHRoZSBzcGFuPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2Qg
ZWZnaCBpamtsIG1ub3AgPGIgaWQ9InRvdGVzdF9iZWZvcmVfYWZ0ZXIiPnNlbGVjdDI8L2I+IG5v
dHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2Ug
bGluZWJyZWFrIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRlIGVsZW1lbnQpPC9oMz4KKzxkaXYg
c3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AKKzxiIGlkPSJ0b3Rlc3Rf
bGluZWJyZWFrX291dCI+c2VsZWN0MzwvYj4KK25vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRz
aWRlIGVsZW1lbnQpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBp
amtsIG1ub3AJPGIgaWQ9InRvdGVzdF90YWJfb3V0Ij5zZWxlY3Q0PC9iPglub3R0b3NlbGVjdAor
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIG11bHRpcGxlIHdo
aXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRlIGVsZW1lbnQpPC9oMz4KKzxkaXYg
c3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgICAgPGIgaWQ9InRvdGVz
dF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXQiPnNlbGVjdDU8L2I+ICAgIG5vdHRvc2VsZWN0Cis8
L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbGluZWJyZWFrIGFz
IHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6
MTAwcHQiPgorYWJjZCBlZmdoIGlqa2wgbW5vcDxiIGlkPSJ0b3Rlc3RfbGluZWJyZWFrX2luIj4K
K3NlbGVjdDYKKzwvYj5ub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0i
Y2FzZSI+Cis8aDM+dXNlIHRhYiBhcyB3b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQpPC9o
Mz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3A8YiBpZD0i
dG90ZXN0X3RhYl9pbiI+CXNlbGVjdDcJPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbXVsdGlwbGUgd2hpdGVzcGFjZXMgYXMgd29y
ZCBzZXBhcmF0b3IgKGluc2lkZSBlbGVtZW50KTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBw
dCI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNl
c19pbiI+ICAgIHNlbGVjdDggICAgPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8
ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz53aXRoIGFub3RoZXIgd29yZCBpbiBzYW1lIHRoZSBzcGFu
PC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgPGIg
aWQ9InRvdGVzdF9tdWx0aXBsZV93b3JkX2luX3NwYW4iPnNlbGVjdDkgbm90PC9iPiBub3R5ZXQK
KzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPndpdGggYW5vdGhlciB3
b3JkIGJlZm9yZSB0aGUgc3BhbiwgaW4gdGhlIHNhbWUgbGluZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3
aWR0aDoxMDBwdCI+CithYmNkIGVmZ2ggaWprbCBtbm9wIHFyc3QgPGIgaWQ9InRvdGVzdF93b3Jk
X2JlZm9yZV9oZXJlX2luX2xpbmUiPnNlbGVjdDEwPC9iPiBub3R5ZXQKKzwvZGl2PgorPC9kaXY+
CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPmEgZmlyc3QgaGFsZiBvZiB3b3JkIGlzIGluc2lk
ZSBiIGVsZW1lbnQ8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlq
a2wgbW5vcCBxcnN0IDxiIGlkPSJ0b3Rlc3Rfc3Bhbl9maXJzdF9oYWxmIj5zZWw8L2I+ZWN0MTEg
bm90eWV0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz5hIHNlY29u
ZCBoYWxmIG9mIHdvcmQgaXMgaW5zaWRlIGIgZWxlbWVudDwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0
aDoxMDBwdCI+CithYmNkIGVmZ2ggaWprbCBtbm9wIHFyc3Qgc2VsPGIgaWQ9InRvdGVzdF9zcGFu
X3NlY29uZF9oYWxmIj5lY3QxMjwvYj4gbm90eWV0Cis8L2Rpdj4KKzwvZGl2PgorCis8aDI+Y2Fz
ZXMgZm9yIHdoaXRlLXNwYWNlOiBwcmU8L2gyPgorPHA+CitOb3RlOiBIZXJlIGZvciBwcmUsIHdl
IGNoYW5nZSB3aWR0aCB2YWx1ZSB0byAyMDAgdG8gcHJldmVudCBsYXlvdXQgY2hhbmdlIG9uIGNv
bnRlbnRFZGl0YWJsZSBlbmFibGVkLgorPC9wPgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51
c2UgbGluZWJyZWFrIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRlIGVsZW1lbnQsIHdoaXRlLXNw
YWNlOnByZSk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MjAwcHQ7d2hpdGUtc3BhY2U6cHJlOyI+
CithYmNkIGVmZ2ggaWprbCBtbm9wCis8YiBpZD0idG90ZXN0X2xpbmVicmVha19vdXRfcHJlIj5z
ZWxlY3QxPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNh
c2UiPgorPGgzPnVzZSB0YWIgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxlbWVudCwgd2hp
dGUtc3BhY2U6cHJlKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpw
cmU7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AJPGIgaWQ9InRvdGVzdF90YWJfb3V0X3ByZSI+c2Vs
ZWN0MjwvYj4Jbm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2Ui
PgorPGgzPnVzZSBtdWx0aXBsZSB3aGl0ZXNwYWNlcyBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lk
ZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjIwMHB0
O3doaXRlLXNwYWNlOnByZTsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcCAgICA8YiBpZD0idG90ZXN0
X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9wcmUiPnNlbGVjdDM8L2I+ICAgIG5vdHRvc2VsZWN0
Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbGluZWJyZWFr
IGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlKTwvaDM+
Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmU7Ij4KK2FiY2QgZWZnaCBp
amtsIG1ub3A8YiBpZD0idG90ZXN0X2xpbmVicmVha19pbl9wcmUiPgorc2VsZWN0NAorPC9iPm5v
dHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2Ug
dGFiIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlKTwv
aDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmU7Ij4KK2FiY2QgZWZn
aCBpamtsIG1ub3A8YiBpZD0idG90ZXN0X3RhYl9pbl9wcmUiPglzZWxlY3Q1CTwvYj5ub3R0b3Nl
bGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIG11bHRp
cGxlIHdoaXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUt
c3BhY2U6cHJlKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmU7
Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3A8YiBpZD0idG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2Vz
X2luX3ByZSI+ICAgIHNlbGVjdDYgICAgPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2Pgor
Cis8aDI+Y2FzZXMgZm9yIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDwvaDI+CisKKzxkaXYgY2xhc3M9
ImNhc2UiPgorPGgzPnVzZSBsaW5lYnJlYWsgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxl
bWVudCwgd2hpdGUtc3BhY2U6cHJlLXdyYXApPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0
O3doaXRlLXNwYWNlOnByZS13cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wCis8YiBpZD0idG90
ZXN0X2xpbmVicmVha19vdXRfcHJld3JhcCI+c2VsZWN0MTwvYj4KK25vdHRvc2VsZWN0Cis8L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2Vw
YXJhdG9yIChvdXRzaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZS13cmFwKTwvaDM+Cis8ZGl2
IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDsiPgorYWJjZCBlZmdoIGlq
a2wgbW5vcAk8YiBpZD0idG90ZXN0X3RhYl9vdXRfcHJld3JhcCI+c2VsZWN0MjwvYj4Jbm90dG9z
ZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBtdWx0
aXBsZSB3aGl0ZXNwYWNlcyBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVtZW50LCB3aGl0
ZS1zcGFjZTpwcmUtd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3Bh
Y2U6cHJlLXdyYXA7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgICAgPGIgaWQ9InRvdGVzdF9tdWx0
aXBsZV93aGl0ZXNwYWNlc19vdXRfcHJld3JhcCI+c2VsZWN0MzwvYj4gICAgbm90dG9zZWxlY3QK
KzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBsaW5lYnJlYWsg
YXMgd29yZCBzZXBhcmF0b3IgKGluc2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUtd3JhcCk8
L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ij4KK2Fi
Y2QgZWZnaCBpamtsIG1ub3A8YiBpZD0idG90ZXN0X2xpbmVicmVha19pbl9wcmV3cmFwIj4KK3Nl
bGVjdDQKKzwvYj5ub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2Fz
ZSI+Cis8aDM+dXNlIHRhYiBhcyB3b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRl
LXNwYWNlOnByZS13cmFwKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFj
ZTpwcmUtd3JhcDsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcDxiIGlkPSJ0b3Rlc3RfdGFiX2luX3By
ZXdyYXAiPglzZWxlY3Q1CTwvYj5ub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBj
bGFzcz0iY2FzZSI+Cis8aDM+dXNlIG11bHRpcGxlIHdoaXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJh
dG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlLXdyYXApPC9oMz4KKzxkaXYgc3R5
bGU9IndpZHRoOjEwMHB0O3doaXRlLXNwYWNlOnByZS13cmFwOyI+CithYmNkIGVmZ2ggaWprbCBt
bm9wPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmV3cmFwIj4gICAgc2Vs
ZWN0NiAgICA8L2I+bm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKworCis8aDI+Y2FzZXMg
Zm9yIHdoaXRlLXNwYWNlOiBwcmUtbGluZTwvaDI+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgz
PnVzZSBsaW5lYnJlYWsgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxlbWVudCwgd2hpdGUt
c3BhY2U6cHJlLWxpbmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0O3doaXRlLXNwYWNl
OnByZS1saW5lOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wCis8YiBpZD0idG90ZXN0X2xpbmVicmVh
a19vdXRfcHJlbGluZSI+c2VsZWN0MTwvYj4KK25vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRz
aWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZS1saW5lKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0
aDoxMDBwdDt3aGl0ZS1zcGFjZTpwcmUtbGluZTsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcAk8YiBp
ZD0idG90ZXN0X3RhYl9vdXRfcHJlbGluZSI+c2VsZWN0MjwvYj4Jbm90dG9zZWxlY3QKKzwvZGl2
PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBtdWx0aXBsZSB3aGl0ZXNw
YWNlcyBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUt
bGluZSk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6cHJlLWxpbmU7
Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgICAgPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0ZXNw
YWNlc19vdXRfcHJlbGluZSI+c2VsZWN0MzwvYj4gICAgbm90dG9zZWxlY3QKKzwvZGl2PgorPC9k
aXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBsaW5lYnJlYWsgYXMgd29yZCBzZXBh
cmF0b3IgKGluc2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUtbGluZSk8L2gzPgorPGRpdiBz
dHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6cHJlLWxpbmU7Ij4KK2FiY2QgZWZnaCBpamts
IG1ub3A8YiBpZD0idG90ZXN0X2xpbmVicmVha19pbl9wcmVsaW5lIj4KK3NlbGVjdDQKKzwvYj5u
b3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNl
IHRhYiBhcyB3b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZS1s
aW5lKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpwcmUtbGluZTsi
PgorYWJjZCBlZmdoIGlqa2wgbW5vcDxiIGlkPSJ0b3Rlc3RfdGFiX2luX3ByZWxpbmUiPglzZWxl
Y3Q1CTwvYj5ub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+
Cis8aDM+dXNlIG11bHRpcGxlIHdoaXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUg
ZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlLWxpbmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEw
MHB0O3doaXRlLXNwYWNlOnByZS1saW5lOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIgaWQ9InRv
dGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmVsaW5lIj4gICAgc2VsZWN0NiAgICA8L2I+
bm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxoMj5jYXNlcyBmb3Igd2hpdGUtc3BhY2U6
IG5vd3JhcDwvaDI+Cis8cD4KK05vdGU6IEFsdGhvdWdoIGZvbGxvd2luZyBjYXNlcyBoYXZlIG5v
IGxpbmUtYnJlYWtzIHRoYXQgaGFkIGNhdXNlZCBwcm9ibGVtIHJlcG9ydGVkIGJ1ZzI4MDM2LAor
d2UgYWRkIHRoZXNlIGZvciBjb21wcmVoZW5zaXZlbmVzcy4KKzwvcD4KKworPGRpdiBjbGFzcz0i
Y2FzZSI+Cis8aDM+dXNlIGxpbmVicmVhayBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVt
ZW50LCB3aGl0ZS1zcGFjZTpub3dyYXApPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0O3do
aXRlLXNwYWNlOm5vd3JhcDsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcAorPGIgaWQ9InRvdGVzdF9s
aW5lYnJlYWtfb3V0X25vd3JhcCI+c2VsZWN0MTwvYj4KK25vdHRvc2VsZWN0Cis8L2Rpdj4KKzwv
ZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2VwYXJhdG9y
IChvdXRzaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOm5vd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0i
d2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6bm93cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wCTxi
IGlkPSJ0b3Rlc3RfdGFiX291dF9ub3dyYXAiPnNlbGVjdDI8L2I+CW5vdHRvc2VsZWN0Cis8L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbXVsdGlwbGUgd2hpdGVz
cGFjZXMgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6bm93
cmFwKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpub3dyYXA7Ij4K
K2FiY2QgZWZnaCBpamtsIG1ub3AgICAgPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNl
c19vdXRfbm93cmFwIj5zZWxlY3QzPC9iPiAgICBub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4K
KworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIGxpbmVicmVhayBhcyB3b3JkIHNlcGFyYXRv
ciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOm5vd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0i
d2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6bm93cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIg
aWQ9InRvdGVzdF9saW5lYnJlYWtfaW5fbm93cmFwIj4KK3NlbGVjdDQKKzwvYj5ub3R0b3NlbGVj
dAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIHRhYiBhcyB3
b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOm5vd3JhcCk8L2gzPgor
PGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6bm93cmFwOyI+CithYmNkIGVmZ2gg
aWprbCBtbm9wPGIgaWQ9InRvdGVzdF90YWJfaW5fbm93cmFwIj4Jc2VsZWN0NQk8L2I+bm90dG9z
ZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBtdWx0
aXBsZSB3aGl0ZXNwYWNlcyBhcyB3b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRl
LXNwYWNlOm5vd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6
bm93cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIgaWQ9InRvdGVzdF9tdWx0aXBsZV93aGl0
ZXNwYWNlc19pbl9ub3dyYXAiPiAgICBzZWxlY3Q2ICAgIDwvYj5ub3R0b3NlbGVjdAorPC9kaXY+
Cis8L2Rpdj4KKworPCEtLQorCis8aDI+Y2FzZXMgZm9yIHNvdXJjZS1vcmlnaW5hdGVkIGxpbmUt
YnJlYWtzIHdpdGggd2hpdGUtc3BhY2U6IHByZS0qIGZhbWlseTwvaDI+CisKKzxkaXYgY2xhc3M9
ImNhc2UiPgorPGgzPndoaXRlLXNwYWNlOnByZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBw
dDt3aGl0ZS1zcGFjZTpwcmU7YmFja2dyb3VuZC1jb2xvcjpsaWdodGdyYXk7Ij4KK2FiY2QgZWZn
aCBpamtsIG1ub3AKKzxiIGlkPSJ0b3Rlc3Rfc291cmNlYnJlYWtfcHJlIj5zZWxlY3QxPC9iPgor
bm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxoMz53aGl0ZS1zcGFjZTpwcmUtd3JhcDwv
aDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDtiYWNrZ3Jv
dW5kLWNvbG9yOmxpZ2h0Z3JheTsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcAorPGIgaWQ9InRvdGVz
dF9zb3VyY2VicmVha19wcmV3cmFwIj5zZWxlY3QyPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2Pgor
PC9kaXY+CisKKzxoMz53aGl0ZS1zcGFjZTpwcmUtbGluZTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0
aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmUtbGluZTtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Z3JheTsi
PgorYWJjZCBlZmdoIGlqa2wgbW5vcAorPGIgaWQ9InRvdGVzdF9zb3VyY2VicmVha19wcmVsaW5l
Ij5zZWxlY3QzPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKy0tPgorCis8ZGl2
PjxzcGFuIGlkPSJoZWlnaHRNZWFzdXJlIj54PC9zcGFuPjwvZGl2PgorCis8cHJlIGlkPSJsb2ci
PgorPC9wcmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmEzOWNkMy4uYjNkNzk3ZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAwOS0xMi0xNSBNT1JJVEEgSGFqaW1lIDxtb3JyaXRhQGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMjgzMDY6IGRv
dWJsZS1jbGlja2luZyBhIHdvcmQgaW5zaWRlIDxiPiBiZXNpZGUgbmV3bGluZSBzZWxlY3QgdHdv
IHdvcmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
ODMwNgorICAgICAgICAKKyAgICAgICAgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBt
aXNzZWQgdHJhaWxpbmcgd2hpdGVzcGFjZXMganVzdAorICAgICAgICBiZWZvcmUgZm9sZGluZyBs
aW5lLWJyZWFrLCB3aGljaCBpcyB1c2VkIHRvIGRldGVjdCB3b3JkCisgICAgICAgIGJvdW5kYXJp
ZXMuIFRoaXMgZml4IGNoZWNrcyBzdHJpbmdzIG9uIFJlbmRlclRleHQgYW5kIGV4cGFuZCB0ZXh0
CisgICAgICAgIHJhbmdlIG9uIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgdG8gaW5j
bHVkZSB0cmFpbGluZworICAgICAgICB3aGl0ZXNwYWNlcyBpZiBhdmFpbGJsZS4KKworICAgICAg
ICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi5odG1s
CisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xsYXBzZWRTcGFjZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjptYXhPZmZzZXRJbmNs
dWRpbmdDb2xsYXBzZWRTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3
YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisKIDIwMDktMTItMTIgIEtlbm5ldGggUnVzc2Vs
bCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBkZjI3MWI2Li4xYTc1ZmNmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcApAQCAtNzA1LDYgKzcwNSwyOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRF
bWl0RXh0cmFOZXdsaW5lRm9yTm9kZShOb2RlKiBub2RlKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorc3RhdGljIGludCBjb2xsYXBzZWRTcGFjZUxlbmd0aChSZW5kZXJUZXh0KiByZW5kZXJlciwg
aW50IHRleHRFbmQpCit7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSByZW5kZXJlci0+
dGV4dCgpLT5jaGFyYWN0ZXJzKCk7CisgICAgaW50IGxlbmd0aCA9IHJlbmRlcmVyLT50ZXh0KCkt
Pmxlbmd0aCgpOworICAgIGZvciAoaW50IGkgPSB0ZXh0RW5kOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgaWYgKCFyZW5kZXJlci0+c3R5bGUoKS0+aXNDb2xsYXBzaWJsZVdoaXRlU3BhY2Uo
Y2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICByZXR1cm4gaSAtIHRleHRFbmQ7CisgICAgfQor
CisgICAgcmV0dXJuIGxlbmd0aCAtIHRleHRFbmQ7Cit9CisKK3N0YXRpYyBpbnQgbWF4T2Zmc2V0
SW5jbHVkaW5nQ29sbGFwc2VkU3BhY2VzKE5vZGUqIG5vZGUpCit7CisgICAgaW50IG9mZnNldCA9
IGNhcmV0TWF4T2Zmc2V0KG5vZGUpOworCisgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9k
ZS0+cmVuZGVyZXIoKS0+aXNUZXh0KCkpCisgICAgICAgIG9mZnNldCArPSBjb2xsYXBzZWRTcGFj
ZUxlbmd0aCh0b1JlbmRlclRleHQobm9kZS0+cmVuZGVyZXIoKSksIG9mZnNldCk7CisKKyAgICBy
ZXR1cm4gb2Zmc2V0OworfQorCiAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgZW1pdCBhIGNo
YXJhY3RlciBhcyB3ZSBlbnRlciBtX25vZGUgKGlmIGl0J3MgYSBjb250YWluZXIpIG9yIGFzIHdl
IGhpdCBpdCAoaWYgaXQncyBhdG9taWMpLgogYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZFJlcHJl
c2VudE5vZGVPZmZzZXRaZXJvKCkKIHsKQEAgLTEwMjksNyArMTA1MSw5IEBAIHZvaWQgU2ltcGxp
ZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgIG1fbm9kZSA9IG5l
eHQ7CiAgICAgICAgIGlmIChtX25vZGUpCiAgICAgICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3Rh
dGUobV9mdWxseUNsaXBwZWRTdGFjaywgbV9ub2RlKTsKLSAgICAgICAgbV9vZmZzZXQgPSBtX25v
ZGUgPyBjYXJldE1heE9mZnNldChtX25vZGUpIDogMDsKKyAgICAgICAgLy8gRm9yIHRoZSBwdXJw
b3NlIG9mIHdvcmQgYm91bmRhcnkgZGV0ZWN0aW9uLAorICAgICAgICAvLyB3ZSBzaG91bGQgaXRl
cmF0ZSBhbGwgdmlzaWJsZSB0ZXh0IGFuZCB0cmFpbGluZyAoY29sbGFwc2VkKSB3aGl0ZXNwYWNl
cy4gCisgICAgICAgIG1fb2Zmc2V0ID0gbV9ub2RlID8gbWF4T2Zmc2V0SW5jbHVkaW5nQ29sbGFw
c2VkU3BhY2VzKG1fbm9kZSkgOiAwOwogICAgICAgICBtX2hhbmRsZWROb2RlID0gZmFsc2U7CiAg
ICAgICAgIG1faGFuZGxlZENoaWxkcmVuID0gZmFsc2U7CiAgICAgICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45030</attachid>
            <date>2009-12-16 18:20:22 -0800</date>
            <delta_ts>2009-12-17 00:53:28 -0800</delta_ts>
            <desc>remove tab from ChagneLog</desc>
            <filename>bug-28306-20091217112020.patch</filename>
            <type>text/plain</type>
            <size>24439</size>
            <attacher name="MORITA Hajime">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOTEwNTU0Li4zODhmYmY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTIt
MTUgIE1PUklUQSBIYWppbWUgPG1vcnJpdGFAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyODMwNjogZG91YmxlLWNsaWNraW5n
IGEgd29yZCBpbnNpZGUgPGI+IGJlc2lkZSBuZXdsaW5lIHNlbGVjdCB0d28gd29yZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MzA2CisKKyAgICAg
ICAgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciBtaXNzZWQgdHJhaWxpbmcgd2hpdGVz
cGFjZXMganVzdAorICAgICAgICBiZWZvcmUgZm9sZGluZyBsaW5lLWJyZWFrLCB3aGljaCBpcyB1
c2VkIHRvIGRldGVjdCB3b3JkCisgICAgICAgIGJvdW5kYXJpZXMuIFRoaXMgZml4IGNoZWNrcyBz
dHJpbmdzIG9uIFJlbmRlclRleHQgYW5kIGV4cGFuZCB0ZXh0CisgICAgICAgIHJhbmdlIG9uIFNp
bXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3IgdG8gaW5jbHVkZSB0cmFpbGluZworICAgICAg
ICB3aGl0ZXNwYWNlcyBpZiBhdmFpbGJsZS4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbDogQWRk
ZWQuCisKIDIwMDktMTItMTIgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpAQCAtMjg2Myw3ICsyODc5LDYgQEAKICAg
ICAgICAgVW5za2lwIGEgYnVuY2ggb2YgcGFzc2luZyBodHRwL25hdmlnYXRpb24gdGVzdHMuCiAK
ICAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgotCiAyMDA5LTExLTIyICBDaHJpcyBGbGVp
emFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVy
IEh1bnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVj
bGljay1iZXNpZGUtY3Itc3Bhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZlNDgyZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDg3IEBACitUaGlzIHRlc3RzIHRoYXQgZG91YmxlLWNsaWNr
aW5nIGEgd29yZCB0aGF0IGZvbGxvd3MgbmV3bGluZSBhbmQgc3BhbgorCitjYXNlcyBmb3Igd2hp
dGUtc3BhY2U6IHByZQorCitOb3RlOiBIZXJlIGZvciBwcmUsIHdlIGNoYW5nZSB3aWR0aCB2YWx1
ZSB0byAyMDAgdG8gcHJldmVudCBsYXlvdXQgY2hhbmdlIG9uIGNvbnRlbnRFZGl0YWJsZSBlbmFi
bGVkLgorCitjYXNlcyBmb3Igd2hpdGUtc3BhY2U6IHByZS13cmFwCisKK2Nhc2VzIGZvciB3aGl0
ZS1zcGFjZTogcHJlLWxpbmUKKworY2FzZXMgZm9yIHdoaXRlLXNwYWNlOiBub3dyYXAKKworTm90
ZTogQWx0aG91Z2ggZm9sbG93aW5nIGNhc2VzIGhhdmUgbm8gbGluZS1icmVha3MgdGhhdCBoYWQg
Y2F1c2VkIHByb2JsZW0gcmVwb3J0ZWQgYnVnMjgwMzYsIHdlIGFkZCB0aGVzZSBmb3IgY29tcHJl
aGVuc2l2ZW5lc3MuCisKK1Bhc3NlZCB0b3Rlc3RfbWluaW11bQorUGFzc2VkIHRvdGVzdF9taW5p
bXVtICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfYmVmb3JlX2FmdGVyCitQ
YXNzZWQgdG90ZXN0X2JlZm9yZV9hZnRlciAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQg
dG90ZXN0X2xpbmVicmVha19vdXQKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX291dCAod2l0aCBj
b250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3RhYl9vdXQKK1Bhc3NlZCB0b3Rlc3RfdGFi
X291dCAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRl
c3BhY2VzX291dAorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXQgKHdpdGgg
Y29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF9saW5lYnJlYWtfaW4KK1Bhc3NlZCB0b3Rl
c3RfbGluZWJyZWFrX2luICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfdGFi
X2luCitQYXNzZWQgdG90ZXN0X3RhYl9pbiAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQg
dG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luCitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3do
aXRlc3BhY2VzX2luICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlw
bGVfd29yZF9pbl9zcGFuCitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3dvcmRfaW5fc3BhbiAod2l0
aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3dvcmRfYmVmb3JlX2hlcmVfaW5fbGlu
ZQorUGFzc2VkIHRvdGVzdF93b3JkX2JlZm9yZV9oZXJlX2luX2xpbmUgKHdpdGggY29udGVudEVk
aXRhYmxlKQorUGFzc2VkIHRvdGVzdF9zcGFuX2ZpcnN0X2hhbGYKK1Bhc3NlZCB0b3Rlc3Rfc3Bh
bl9maXJzdF9oYWxmICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3Rfc3Bhbl9z
ZWNvbmRfaGFsZgorUGFzc2VkIHRvdGVzdF9zcGFuX3NlY29uZF9oYWxmICh3aXRoIGNvbnRlbnRF
ZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX291dF9wcmUKK1Bhc3NlZCB0b3Rlc3Rf
bGluZWJyZWFrX291dF9wcmUgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90
YWJfb3V0X3ByZQorUGFzc2VkIHRvdGVzdF90YWJfb3V0X3ByZSAod2l0aCBjb250ZW50RWRpdGFi
bGUpCitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9wcmUKK1Bhc3NlZCB0
b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNfb3V0X3ByZSAod2l0aCBjb250ZW50RWRpdGFibGUp
CitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19pbl9wcmUKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFr
X2luX3ByZSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3RhYl9pbl9wcmUK
K1Bhc3NlZCB0b3Rlc3RfdGFiX2luX3ByZSAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQg
dG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX3ByZQorUGFzc2VkIHRvdGVzdF9tdWx0aXBs
ZV93aGl0ZXNwYWNlc19pbl9wcmUgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVz
dF9saW5lYnJlYWtfb3V0X3ByZXdyYXAKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX291dF9wcmV3
cmFwICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfdGFiX291dF9wcmV3cmFw
CitQYXNzZWQgdG90ZXN0X3RhYl9vdXRfcHJld3JhcCAod2l0aCBjb250ZW50RWRpdGFibGUpCitQ
YXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9wcmV3cmFwCitQYXNzZWQgdG90
ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9wcmV3cmFwICh3aXRoIGNvbnRlbnRFZGl0YWJs
ZSkKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX2luX3ByZXdyYXAKK1Bhc3NlZCB0b3Rlc3RfbGlu
ZWJyZWFrX2luX3ByZXdyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90
YWJfaW5fcHJld3JhcAorUGFzc2VkIHRvdGVzdF90YWJfaW5fcHJld3JhcCAod2l0aCBjb250ZW50
RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX3ByZXdyYXAK
K1Bhc3NlZCB0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNfaW5fcHJld3JhcCAod2l0aCBjb250
ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X2xpbmVicmVha19vdXRfcHJlbGluZQorUGFzc2Vk
IHRvdGVzdF9saW5lYnJlYWtfb3V0X3ByZWxpbmUgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFz
c2VkIHRvdGVzdF90YWJfb3V0X3ByZWxpbmUKK1Bhc3NlZCB0b3Rlc3RfdGFiX291dF9wcmVsaW5l
ICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFj
ZXNfb3V0X3ByZWxpbmUKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNfb3V0X3By
ZWxpbmUgKHdpdGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF9saW5lYnJlYWtfaW5f
cHJlbGluZQorUGFzc2VkIHRvdGVzdF9saW5lYnJlYWtfaW5fcHJlbGluZSAod2l0aCBjb250ZW50
RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3RhYl9pbl9wcmVsaW5lCitQYXNzZWQgdG90ZXN0X3Rh
Yl9pbl9wcmVsaW5lICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlw
bGVfd2hpdGVzcGFjZXNfaW5fcHJlbGluZQorUGFzc2VkIHRvdGVzdF9tdWx0aXBsZV93aGl0ZXNw
YWNlc19pbl9wcmVsaW5lICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkKK1Bhc3NlZCB0b3Rlc3RfbGlu
ZWJyZWFrX291dF9ub3dyYXAKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX291dF9ub3dyYXAgKHdp
dGggY29udGVudEVkaXRhYmxlKQorUGFzc2VkIHRvdGVzdF90YWJfb3V0X25vd3JhcAorUGFzc2Vk
IHRvdGVzdF90YWJfb3V0X25vd3JhcCAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90
ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9ub3dyYXAKK1Bhc3NlZCB0b3Rlc3RfbXVsdGlw
bGVfd2hpdGVzcGFjZXNfb3V0X25vd3JhcCAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQg
dG90ZXN0X2xpbmVicmVha19pbl9ub3dyYXAKK1Bhc3NlZCB0b3Rlc3RfbGluZWJyZWFrX2luX25v
d3JhcCAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNzZWQgdG90ZXN0X3RhYl9pbl9ub3dyYXAK
K1Bhc3NlZCB0b3Rlc3RfdGFiX2luX25vd3JhcCAod2l0aCBjb250ZW50RWRpdGFibGUpCitQYXNz
ZWQgdG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX25vd3JhcAorUGFzc2VkIHRvdGVzdF9t
dWx0aXBsZV93aGl0ZXNwYWNlc19pbl9ub3dyYXAgKHdpdGggY29udGVudEVkaXRhYmxlKQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNp
ZGUtY3Itc3Bhbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xp
Y2stYmVzaWRlLWNyLXNwYW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iZDdmMmY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbApAQCAtMCwwICsxLDUzMSBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGZhbHNlKTsKKyAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCh0cnVl
KTsKK30KKworZnVuY3Rpb24gZ2V0UG9zaXRpb25PZk5vZGUoaWQpCit7CisgICAgdmFyIG4gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgdmFyIHBvcyA9IHt4OiAwLCB5OiAwfTsK
KworICAgIHdoaWxlIChuKSB7CisgICAgICAgIHBvcy54ICs9IG4ub2Zmc2V0TGVmdCArIG4uY2xp
ZW50TGVmdDsKKyAgICAgICAgcG9zLnkgKz0gbi5vZmZzZXRUb3AgKyBuLmNsaWVudFRvcDsKKyAg
ICAgICAgbiA9IG4ub2Zmc2V0UGFyZW50OworICAgIH0KKyAgICByZXR1cm4gcG9zOworfQorCitm
dW5jdGlvbiBkb3VibGVDbGlja1Bvc2l0aW9uKHBvcykKK3sKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhwb3MueCArIDIsIHBvcy55ICsgMik7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMSk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMCk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMSk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBkZWZvY3VzKCkKK3sKKyAgICBkb3Vi
bGVDbGlja1Bvc2l0aW9uKHt4OjAsIHk6MH0pOworfQorCitmdW5jdGlvbiBmaW5kUGFyZW50RGl2
KHNwYW5JZCkKK3sKKyAgICB2YXIgbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwYW5JZCk7
CisgICAgd2hpbGUgKG4pIHsKKyAgICAgIHZhciBwYXJlbnQgPSBuLnBhcmVudE5vZGU7CisgICAg
ICBpZiAocGFyZW50ICYmIHBhcmVudC50YWdOYW1lID09ICJESVYiKQorICAgICAgICByZXR1cm4g
cGFyZW50OworICAgICAgbiA9IHBhcmVudDsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbDsKK30K
KworZnVuY3Rpb24gbWFrZVBhcmVudEJsb2NrRWRpdGFibGUoc3BhbklkKQoreworICAgIHZhciBw
YXJlbnQgPSBmaW5kUGFyZW50RGl2KHNwYW5JZCk7CisgICAgcGFyZW50LmNvbnRlbnRFZGl0YWJs
ZSA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIGhpZGVDYXNlQmxvY2tGb3Ioc3BhbklkKQoreworICAg
IHZhciBuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3BhbklkKTsKKyAgICB3aGlsZSAobikg
eworICAgICAgbiA9IG4ucGFyZW50Tm9kZTsKKyAgICAgIGlmIChuICYmIG4uY2xhc3NOYW1lID09
ICJjYXNlIikgeworICAgICAgICBuLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgIG4u
c3R5bGUub2Zmc2V0VG9wOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorfQorCitm
dW5jdGlvbiBkb1Rlc3QodGVzdElkLCBleHBlY3RlZFRleHQsIGdpdmVuQ2xpY2tQb3NpdGlvbikK
K3sKKyAgICAvLyBTaW11bGF0ZSBhIGRvdWJsZSBjbGljay4KKyAgICBkZWZvY3VzKCkKKyAgICB2
YXIgcG9zID0gZ2l2ZW5DbGlja1Bvc2l0aW9uIHx8IGdldFBvc2l0aW9uT2ZOb2RlKHRlc3RJZCk7
CisgICAgZG91YmxlQ2xpY2tQb3NpdGlvbihwb3MpOworCisgICAgLy8gR2V0IHRoZSB0ZXh0IG9m
IHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KKyAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlv
bigpOworICAgIHZhciBhY3R1YWxUZXh0ID0gc2VsLmdldFJhbmdlQXQoMCkudG9TdHJpbmcoKTsK
KworICAgIGlmIChleHBlY3RlZFRleHQgPT0gYWN0dWFsVGV4dCkgeworICAgICAgICBsb2coIlBh
c3NlZCAiICsgdGVzdElkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2coIkZhaWxlZCAiICsg
dGVzdElkKTsKKyAgICAgICAgbG9nKCIgIEV4cGVjdGVkOiAiICsgZXhwZWN0ZWRUZXh0KTsKKyAg
ICAgICAgbG9nKCIgIEFjdHVhbDogIiArIGFjdHVhbFRleHQpOworICAgIH0KKworICAgIC8vIFJ1
biB0aGUgc2FtZSBjYXNlIHdpdGggY29udGVudEVkaXRhYmxlIGVuYWJsZWQuCisgICAgbWFrZVBh
cmVudEJsb2NrRWRpdGFibGUodGVzdElkKTsKKworICAgIGRlZm9jdXMoKTsKKyAgICBkb3VibGVD
bGlja1Bvc2l0aW9uKHBvcyk7CisKKyAgICBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7Cisg
ICAgYWN0dWFsVGV4dCA9IHNlbC5nZXRSYW5nZUF0KDApLnRvU3RyaW5nKCk7CisKKyAgICBpZiAo
ZXhwZWN0ZWRUZXh0ID09IGFjdHVhbFRleHQpIHsKKyAgICAgICAgbG9nKCJQYXNzZWQgIiArIHRl
c3RJZCArICIgKHdpdGggY29udGVudEVkaXRhYmxlKSIpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGxvZygiRmFpbGVkICIgKyB0ZXN0SWQgKyAiICh3aXRoIGNvbnRlbnRFZGl0YWJsZSkiKTsKKyAg
ICAgICAgbG9nKCIgIEV4cGVjdGVkOiAiICsgZXhwZWN0ZWRUZXh0KTsKKyAgICAgICAgbG9nKCIg
IEFjdHVhbDogIiArIGFjdHVhbFRleHQpOworICAgIH0KKworICAgIC8vIEhpZGUgYSBjb250YWlu
ZXIgZm9yIHRoZSBjYXNlIHRvIHdvcmthcm91bmQgbGltaXRlZCB3aW5kb3cgc2l6ZQorICAgIGhp
ZGVDYXNlQmxvY2tGb3IodGVzdElkKTsKK30KKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAgICB2
YXIgbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKKyAgICBsLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworICAgIGwuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYnInKSk7Cit9CisKK2Z1bmN0aW9uIGluaXRDb25zdGFudHMoKQor
eworICAgdmFyIGhlaWdodE1lYXN1cmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGVpZ2h0
TWVhc3VyZSIpOworICAgTElORV9IRUlHSFQgPSBoZWlnaHRNZWFzdXJlLm9mZnNldEhlaWdodDsK
KyAgIExJTkVfTEVGVCAgID0gaGVpZ2h0TWVhc3VyZS5vZmZzZXRMZWZ0ICsgaGVpZ2h0TWVhc3Vy
ZS5jbGllbnRMZWZ0OworICAgQ0hBUl9XSURUSCAgPSBoZWlnaHRNZWFzdXJlLm9mZnNldFdpZHRo
OworICAgaGVpZ2h0TWVhc3VyZS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOyAvLyBoaWRlIGZvciBy
ZWFkYWJsZSB0ZXN0IHJlc3VsdAorfQorCitmdW5jdGlvbiBnZXRQb3NpdGlvbk9mTmV4dExpbmVI
ZWFkT2Yoc3BhbklkKQoreworICAgdmFyIHBvcyA9IGdldFBvc2l0aW9uT2ZOb2RlKHNwYW5JZCkK
KyAgIHBvcy54ICA9IExJTkVfTEVGVDsKKyAgIHBvcy55ICs9IExJTkVfSEVJR0hUOworICAgcmV0
dXJuIHBvczsKK30KKworZnVuY3Rpb24gZ2V0UG9zaXRpb25Gb3J3YXJkKHNwYW5JZCwgbmNoYXJh
Y3RlcnMpCit7CisgICB2YXIgcG9zID0gZ2V0UG9zaXRpb25PZk5vZGUoc3BhbklkKQorICAgcG9z
LnggKz0gQ0hBUl9XSURUSCpuY2hhcmFjdGVyczsKKyAgIHJldHVybiBwb3M7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3RzKCkKK3sKKyAgICBpbml0Q29uc3RhbnRzKCk7CisKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X21pbmltdW0i
LCAic2VsZWN0MSIpOworICAgICAgICAvLyBXZSBtYXkgaGF2ZSB0byBtYWtlIEVkaXRvckNsaWVu
dDo6aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkIGZhbHNlIG9uCisgICAgICAgIC8v
IER1bXBSZW5kZXJUcmVlIHRvIGNsYXJpZnkgY2FzZXMuLi4KKyAgICAgICAgZG9UZXN0KCJ0b3Rl
c3RfYmVmb3JlX2FmdGVyIiwgInNlbGVjdDIgIik7CisKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3Rf
bGluZWJyZWFrX291dCIsICJzZWxlY3QzXG4iKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfdGFi
X291dCIsICJzZWxlY3Q0XHQiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbXVsdGlwbGVfd2hp
dGVzcGFjZXNfb3V0IiwgInNlbGVjdDUgIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X2xpbmVi
cmVha19pbiIsICJzZWxlY3Q2XG4iKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfdGFiX2luIiwg
InNlbGVjdDdcdCIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNl
c19pbiIsICJzZWxlY3Q4ICIpOworCisgICAgICAgIGRvVGVzdCgidG90ZXN0X211bHRpcGxlX3dv
cmRfaW5fc3BhbiIsICJzZWxlY3Q5ICIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF93b3JkX2Jl
Zm9yZV9oZXJlX2luX2xpbmUiLCAic2VsZWN0MTAgIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0
X3NwYW5fZmlyc3RfaGFsZiIsICJzZWxlY3QxMSAiKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3Rf
c3Bhbl9zZWNvbmRfaGFsZiIsICJzZWxlY3QxMiAiKTsKKworICAgICAgICBkb1Rlc3QoInRvdGVz
dF9saW5lYnJlYWtfb3V0X3ByZSIsICJzZWxlY3QxIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0
X3RhYl9vdXRfcHJlIiwgInNlbGVjdDJcdCIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0
aXBsZV93aGl0ZXNwYWNlc19vdXRfcHJlIiwgInNlbGVjdDMgICAgIik7CisgICAgICAgIGRvVGVz
dCgidG90ZXN0X2xpbmVicmVha19pbl9wcmUiLCAic2VsZWN0NCIsIGdldFBvc2l0aW9uT2ZOZXh0
TGluZUhlYWRPZigidG90ZXN0X2xpbmVicmVha19pbl9wcmUiKSk7CisgICAgICAgIGRvVGVzdCgi
dG90ZXN0X3RhYl9pbl9wcmUiLCAic2VsZWN0NVx0Iik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0
X211bHRpcGxlX3doaXRlc3BhY2VzX2luX3ByZSIsICJzZWxlY3Q2ICAgICIsIGdldFBvc2l0aW9u
Rm9yd2FyZCgidG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX3ByZSIsICIgICAgIi5sZW5n
dGgpKTsKKworICAgICAgICBkb1Rlc3QoInRvdGVzdF9saW5lYnJlYWtfb3V0X3ByZXdyYXAiLCAi
c2VsZWN0MSIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF90YWJfb3V0X3ByZXdyYXAiLCAic2Vs
ZWN0Mlx0Iik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291
dF9wcmV3cmFwIiwgInNlbGVjdDMgICAgIik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X2xpbmVi
cmVha19pbl9wcmV3cmFwIiwgInNlbGVjdDQiLCBnZXRQb3NpdGlvbk9mTmV4dExpbmVIZWFkT2Yo
InRvdGVzdF9saW5lYnJlYWtfaW5fcHJld3JhcCIpKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3Rf
dGFiX2luX3ByZXdyYXAiLCAic2VsZWN0NVx0IiwgZ2V0UG9zaXRpb25PZk5leHRMaW5lSGVhZE9m
KCJ0b3Rlc3RfdGFiX2luX3ByZXdyYXAiKSk7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X211bHRp
cGxlX3doaXRlc3BhY2VzX2luX3ByZXdyYXAiLCAic2VsZWN0NiAgICAiLCBnZXRQb3NpdGlvbk9m
TmV4dExpbmVIZWFkT2YoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19pbl9wcmV3cmFwIikp
OworCisgICAgICAgIGRvVGVzdCgidG90ZXN0X2xpbmVicmVha19vdXRfcHJlbGluZSIsICJzZWxl
Y3QxXG4iKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfdGFiX291dF9wcmVsaW5lIiwgInNlbGVj
dDJcdCIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9tdWx0aXBsZV93aGl0ZXNwYWNlc19vdXRf
cHJlbGluZSIsICJzZWxlY3QzICIpOworICAgICAgICBkb1Rlc3QoInRvdGVzdF9saW5lYnJlYWtf
aW5fcHJlbGluZSIsICJzZWxlY3Q0XG4iLCBnZXRQb3NpdGlvbk9mTmV4dExpbmVIZWFkT2YoInRv
dGVzdF9saW5lYnJlYWtfaW5fcHJlbGluZSIpKTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfdGFi
X2luX3ByZWxpbmUiLCAic2VsZWN0NVx0Iik7CisgICAgICAgIGRvVGVzdCgidG90ZXN0X211bHRp
cGxlX3doaXRlc3BhY2VzX2luX3ByZWxpbmUiLCAic2VsZWN0NiAiKTsKKworICAgICAgICBkb1Rl
c3QoInRvdGVzdF9saW5lYnJlYWtfb3V0X25vd3JhcCIsICJzZWxlY3QxXG4iKTsKKyAgICAgICAg
ZG9UZXN0KCJ0b3Rlc3RfdGFiX291dF9ub3dyYXAiLCAic2VsZWN0Mlx0Iik7CisgICAgICAgIGRv
VGVzdCgidG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX291dF9ub3dyYXAiLCAic2VsZWN0MyAi
KTsKKyAgICAgICAgZG9UZXN0KCJ0b3Rlc3RfbGluZWJyZWFrX2luX25vd3JhcCIsICJzZWxlY3Q0
XG4iLCBnZXRQb3NpdGlvbkZvcndhcmQoInRvdGVzdF9saW5lYnJlYWtfaW5fbm93cmFwIiwgMSkp
OworICAgICAgICBkb1Rlc3QoInRvdGVzdF90YWJfaW5fbm93cmFwIiwgInNlbGVjdDVcdCIsIGdl
dFBvc2l0aW9uRm9yd2FyZCgidG90ZXN0X3RhYl9pbl9ub3dyYXAiLCAxKSk7CisgICAgICAgIGRv
VGVzdCgidG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX25vd3JhcCIsICJzZWxlY3Q2ICIs
IGdldFBvc2l0aW9uRm9yd2FyZCgidG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX25vd3Jh
cCIsIDEpKTsKKworICAgIH0KK30KKworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdHMoKSI+CisKKzxwPgorVGhpcyB0ZXN0cyB0aGF0IGRvdWJsZS1jbGlja2luZyBh
IHdvcmQgdGhhdCBmb2xsb3dzIG5ld2xpbmUgYW5kIHNwYW4KKzwvcD4KKworPGRpdiBjbGFzcz0i
Y2FzZSI+Cis8aDM+bWluaW11bSBjYXNlPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0Ij4K
K2FiY2QgZWZnaCBpamtsIG1ub3AgPGIgaWQ9InRvdGVzdF9taW5pbXVtIj5zZWxlY3QxPC9iPgor
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+d2l0aCBhbm90aGVyIHdv
cmQgYWZ0ZXIgdGhlIHNwYW48L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBl
ZmdoIGlqa2wgbW5vcCA8YiBpZD0idG90ZXN0X2JlZm9yZV9hZnRlciI+c2VsZWN0MjwvYj4gbm90
dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBs
aW5lYnJlYWsgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxlbWVudCk8L2gzPgorPGRpdiBz
dHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlqa2wgbW5vcAorPGIgaWQ9InRvdGVzdF9s
aW5lYnJlYWtfb3V0Ij5zZWxlY3QzPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisK
KzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSB0YWIgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNp
ZGUgZWxlbWVudCk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlq
a2wgbW5vcAk8YiBpZD0idG90ZXN0X3RhYl9vdXQiPnNlbGVjdDQ8L2I+CW5vdHRvc2VsZWN0Cis8
L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbXVsdGlwbGUgd2hp
dGVzcGFjZXMgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxlbWVudCk8L2gzPgorPGRpdiBz
dHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlqa2wgbW5vcCAgICA8YiBpZD0idG90ZXN0
X211bHRpcGxlX3doaXRlc3BhY2VzX291dCI+c2VsZWN0NTwvYj4gICAgbm90dG9zZWxlY3QKKzwv
ZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBsaW5lYnJlYWsgYXMg
d29yZCBzZXBhcmF0b3IgKGluc2lkZSBlbGVtZW50KTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDox
MDBwdCI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIgaWQ9InRvdGVzdF9saW5lYnJlYWtfaW4iPgor
c2VsZWN0NgorPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJj
YXNlIj4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCk8L2gz
PgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlqa2wgbW5vcDxiIGlkPSJ0
b3Rlc3RfdGFiX2luIj4Jc2VsZWN0Nwk8L2I+bm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisK
KzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBtdWx0aXBsZSB3aGl0ZXNwYWNlcyBhcyB3b3Jk
IHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0
Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3A8YiBpZD0idG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2Vz
X2luIj4gICAgc2VsZWN0OCAgICA8L2I+bm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxk
aXYgY2xhc3M9ImNhc2UiPgorPGgzPndpdGggYW5vdGhlciB3b3JkIGluIHNhbWUgdGhlIHNwYW48
L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQiPgorYWJjZCBlZmdoIGlqa2wgbW5vcCA8YiBp
ZD0idG90ZXN0X211bHRpcGxlX3dvcmRfaW5fc3BhbiI+c2VsZWN0OSBub3Q8L2I+IG5vdHlldAor
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+d2l0aCBhbm90aGVyIHdv
cmQgYmVmb3JlIHRoZSBzcGFuLCBpbiB0aGUgc2FtZSBsaW5lPC9oMz4KKzxkaXYgc3R5bGU9Indp
ZHRoOjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgcXJzdCA8YiBpZD0idG90ZXN0X3dvcmRf
YmVmb3JlX2hlcmVfaW5fbGluZSI+c2VsZWN0MTA8L2I+IG5vdHlldAorPC9kaXY+Cis8L2Rpdj4K
KworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+YSBmaXJzdCBoYWxmIG9mIHdvcmQgaXMgaW5zaWRl
IGIgZWxlbWVudDwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdCI+CithYmNkIGVmZ2ggaWpr
bCBtbm9wIHFyc3QgPGIgaWQ9InRvdGVzdF9zcGFuX2ZpcnN0X2hhbGYiPnNlbDwvYj5lY3QxMSBu
b3R5ZXQKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPmEgc2Vjb25k
IGhhbGYgb2Ygd29yZCBpcyBpbnNpZGUgYiBlbGVtZW50PC9oMz4KKzxkaXYgc3R5bGU9IndpZHRo
OjEwMHB0Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AgcXJzdCBzZWw8YiBpZD0idG90ZXN0X3NwYW5f
c2Vjb25kX2hhbGYiPmVjdDEyPC9iPiBub3R5ZXQKKzwvZGl2PgorPC9kaXY+CisKKzxoMj5jYXNl
cyBmb3Igd2hpdGUtc3BhY2U6IHByZTwvaDI+Cis8cD4KK05vdGU6IEhlcmUgZm9yIHByZSwgd2Ug
Y2hhbmdlIHdpZHRoIHZhbHVlIHRvIDIwMCB0byBwcmV2ZW50IGxheW91dCBjaGFuZ2Ugb24gY29u
dGVudEVkaXRhYmxlIGVuYWJsZWQuCis8L3A+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVz
ZSBsaW5lYnJlYWsgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNpZGUgZWxlbWVudCwgd2hpdGUtc3Bh
Y2U6cHJlKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoyMDBwdDt3aGl0ZS1zcGFjZTpwcmU7Ij4K
K2FiY2QgZWZnaCBpamtsIG1ub3AKKzxiIGlkPSJ0b3Rlc3RfbGluZWJyZWFrX291dF9wcmUiPnNl
bGVjdDE8L2I+Citub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2Fz
ZSI+Cis8aDM+dXNlIHRhYiBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVtZW50LCB3aGl0
ZS1zcGFjZTpwcmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjIwMHB0O3doaXRlLXNwYWNlOnBy
ZTsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcAk8YiBpZD0idG90ZXN0X3RhYl9vdXRfcHJlIj5zZWxl
Y3QyPC9iPglub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+
Cis8aDM+dXNlIG11bHRpcGxlIHdoaXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRl
IGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZSk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MjAwcHQ7
d2hpdGUtc3BhY2U6cHJlOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wICAgIDxiIGlkPSJ0b3Rlc3Rf
bXVsdGlwbGVfd2hpdGVzcGFjZXNfb3V0X3ByZSI+c2VsZWN0MzwvYj4gICAgbm90dG9zZWxlY3QK
KzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBsaW5lYnJlYWsg
YXMgd29yZCBzZXBhcmF0b3IgKGluc2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUpPC9oMz4K
KzxkaXYgc3R5bGU9IndpZHRoOjIwMHB0O3doaXRlLXNwYWNlOnByZTsiPgorYWJjZCBlZmdoIGlq
a2wgbW5vcDxiIGlkPSJ0b3Rlc3RfbGluZWJyZWFrX2luX3ByZSI+CitzZWxlY3Q0Cis8L2I+bm90
dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSB0
YWIgYXMgd29yZCBzZXBhcmF0b3IgKGluc2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUpPC9o
Mz4KKzxkaXYgc3R5bGU9IndpZHRoOjIwMHB0O3doaXRlLXNwYWNlOnByZTsiPgorYWJjZCBlZmdo
IGlqa2wgbW5vcDxiIGlkPSJ0b3Rlc3RfdGFiX2luX3ByZSI+CXNlbGVjdDUJPC9iPm5vdHRvc2Vs
ZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbXVsdGlw
bGUgd2hpdGVzcGFjZXMgYXMgd29yZCBzZXBhcmF0b3IgKGluc2lkZSBlbGVtZW50LCB3aGl0ZS1z
cGFjZTpwcmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjIwMHB0O3doaXRlLXNwYWNlOnByZTsi
PgorYWJjZCBlZmdoIGlqa2wgbW5vcDxiIGlkPSJ0b3Rlc3RfbXVsdGlwbGVfd2hpdGVzcGFjZXNf
aW5fcHJlIj4gICAgc2VsZWN0NiAgICA8L2I+bm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisK
KzxoMj5jYXNlcyBmb3Igd2hpdGUtc3BhY2U6IHByZS13cmFwPC9oMj4KKworPGRpdiBjbGFzcz0i
Y2FzZSI+Cis8aDM+dXNlIGxpbmVicmVhayBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVt
ZW50LCB3aGl0ZS1zcGFjZTpwcmUtd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7
d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AKKzxiIGlkPSJ0b3Rl
c3RfbGluZWJyZWFrX291dF9wcmV3cmFwIj5zZWxlY3QxPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2
PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSB0YWIgYXMgd29yZCBzZXBh
cmF0b3IgKG91dHNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlLXdyYXApPC9oMz4KKzxkaXYg
c3R5bGU9IndpZHRoOjEwMHB0O3doaXRlLXNwYWNlOnByZS13cmFwOyI+CithYmNkIGVmZ2ggaWpr
bCBtbm9wCTxiIGlkPSJ0b3Rlc3RfdGFiX291dF9wcmV3cmFwIj5zZWxlY3QyPC9iPglub3R0b3Nl
bGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIG11bHRp
cGxlIHdoaXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRlIGVsZW1lbnQsIHdoaXRl
LXNwYWNlOnByZS13cmFwKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFj
ZTpwcmUtd3JhcDsiPgorYWJjZCBlZmdoIGlqa2wgbW5vcCAgICA8YiBpZD0idG90ZXN0X211bHRp
cGxlX3doaXRlc3BhY2VzX291dF9wcmV3cmFwIj5zZWxlY3QzPC9iPiAgICBub3R0b3NlbGVjdAor
PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIGxpbmVicmVhayBh
cyB3b3JkIHNlcGFyYXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZS13cmFwKTwv
aDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpwcmUtd3JhcDsiPgorYWJj
ZCBlZmdoIGlqa2wgbW5vcDxiIGlkPSJ0b3Rlc3RfbGluZWJyZWFrX2luX3ByZXdyYXAiPgorc2Vs
ZWN0NAorPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNl
Ij4KKzxoMz51c2UgdGFiIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUt
c3BhY2U6cHJlLXdyYXApPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0O3doaXRlLXNwYWNl
OnByZS13cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wPGIgaWQ9InRvdGVzdF90YWJfaW5fcHJl
d3JhcCI+CXNlbGVjdDUJPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNs
YXNzPSJjYXNlIj4KKzxoMz51c2UgbXVsdGlwbGUgd2hpdGVzcGFjZXMgYXMgd29yZCBzZXBhcmF0
b3IgKGluc2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUtd3JhcCk8L2gzPgorPGRpdiBzdHls
ZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ij4KK2FiY2QgZWZnaCBpamtsIG1u
b3A8YiBpZD0idG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX3ByZXdyYXAiPiAgICBzZWxl
Y3Q2ICAgIDwvYj5ub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworCisKKzxoMj5jYXNlcyBm
b3Igd2hpdGUtc3BhY2U6IHByZS1saW5lPC9oMj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+
dXNlIGxpbmVicmVhayBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVtZW50LCB3aGl0ZS1z
cGFjZTpwcmUtbGluZSk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hpdGUtc3BhY2U6
cHJlLWxpbmU7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AKKzxiIGlkPSJ0b3Rlc3RfbGluZWJyZWFr
X291dF9wcmVsaW5lIj5zZWxlY3QxPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2PgorPC9kaXY+CisK
KzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSB0YWIgYXMgd29yZCBzZXBhcmF0b3IgKG91dHNp
ZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlLWxpbmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRo
OjEwMHB0O3doaXRlLXNwYWNlOnByZS1saW5lOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wCTxiIGlk
PSJ0b3Rlc3RfdGFiX291dF9wcmVsaW5lIj5zZWxlY3QyPC9iPglub3R0b3NlbGVjdAorPC9kaXY+
Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIG11bHRpcGxlIHdoaXRlc3Bh
Y2VzIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZS1s
aW5lKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpwcmUtbGluZTsi
PgorYWJjZCBlZmdoIGlqa2wgbW5vcCAgICA8YiBpZD0idG90ZXN0X211bHRpcGxlX3doaXRlc3Bh
Y2VzX291dF9wcmVsaW5lIj5zZWxlY3QzPC9iPiAgICBub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rp
dj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIGxpbmVicmVhayBhcyB3b3JkIHNlcGFy
YXRvciAoaW5zaWRlIGVsZW1lbnQsIHdoaXRlLXNwYWNlOnByZS1saW5lKTwvaDM+Cis8ZGl2IHN0
eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpwcmUtbGluZTsiPgorYWJjZCBlZmdoIGlqa2wg
bW5vcDxiIGlkPSJ0b3Rlc3RfbGluZWJyZWFrX2luX3ByZWxpbmUiPgorc2VsZWN0NAorPC9iPm5v
dHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2Ug
dGFiIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6cHJlLWxp
bmUpPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0O3doaXRlLXNwYWNlOnByZS1saW5lOyI+
CithYmNkIGVmZ2ggaWprbCBtbm9wPGIgaWQ9InRvdGVzdF90YWJfaW5fcHJlbGluZSI+CXNlbGVj
dDUJPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4K
KzxoMz51c2UgbXVsdGlwbGUgd2hpdGVzcGFjZXMgYXMgd29yZCBzZXBhcmF0b3IgKGluc2lkZSBl
bGVtZW50LCB3aGl0ZS1zcGFjZTpwcmUtbGluZSk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAw
cHQ7d2hpdGUtc3BhY2U6cHJlLWxpbmU7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3A8YiBpZD0idG90
ZXN0X211bHRpcGxlX3doaXRlc3BhY2VzX2luX3ByZWxpbmUiPiAgICBzZWxlY3Q2ICAgIDwvYj5u
b3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGgyPmNhc2VzIGZvciB3aGl0ZS1zcGFjZTog
bm93cmFwPC9oMj4KKzxwPgorTm90ZTogQWx0aG91Z2ggZm9sbG93aW5nIGNhc2VzIGhhdmUgbm8g
bGluZS1icmVha3MgdGhhdCBoYWQgY2F1c2VkIHByb2JsZW0gcmVwb3J0ZWQgYnVnMjgwMzYsCit3
ZSBhZGQgdGhlc2UgZm9yIGNvbXByZWhlbnNpdmVuZXNzLgorPC9wPgorCis8ZGl2IGNsYXNzPSJj
YXNlIj4KKzxoMz51c2UgbGluZWJyZWFrIGFzIHdvcmQgc2VwYXJhdG9yIChvdXRzaWRlIGVsZW1l
bnQsIHdoaXRlLXNwYWNlOm5vd3JhcCk8L2gzPgorPGRpdiBzdHlsZT0id2lkdGg6MTAwcHQ7d2hp
dGUtc3BhY2U6bm93cmFwOyI+CithYmNkIGVmZ2ggaWprbCBtbm9wCis8YiBpZD0idG90ZXN0X2xp
bmVicmVha19vdXRfbm93cmFwIj5zZWxlY3QxPC9iPgorbm90dG9zZWxlY3QKKzwvZGl2PgorPC9k
aXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSB0YWIgYXMgd29yZCBzZXBhcmF0b3Ig
KG91dHNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6bm93cmFwKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3
aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpub3dyYXA7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3AJPGIg
aWQ9InRvdGVzdF90YWJfb3V0X25vd3JhcCI+c2VsZWN0MjwvYj4Jbm90dG9zZWxlY3QKKzwvZGl2
PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImNhc2UiPgorPGgzPnVzZSBtdWx0aXBsZSB3aGl0ZXNw
YWNlcyBhcyB3b3JkIHNlcGFyYXRvciAob3V0c2lkZSBlbGVtZW50LCB3aGl0ZS1zcGFjZTpub3dy
YXApPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjEwMHB0O3doaXRlLXNwYWNlOm5vd3JhcDsiPgor
YWJjZCBlZmdoIGlqa2wgbW5vcCAgICA8YiBpZD0idG90ZXN0X211bHRpcGxlX3doaXRlc3BhY2Vz
X291dF9ub3dyYXAiPnNlbGVjdDM8L2I+ICAgIG5vdHRvc2VsZWN0Cis8L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgbGluZWJyZWFrIGFzIHdvcmQgc2VwYXJhdG9y
IChpbnNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6bm93cmFwKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3
aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpub3dyYXA7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3A8YiBp
ZD0idG90ZXN0X2xpbmVicmVha19pbl9ub3dyYXAiPgorc2VsZWN0NAorPC9iPm5vdHRvc2VsZWN0
Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJjYXNlIj4KKzxoMz51c2UgdGFiIGFzIHdv
cmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUtc3BhY2U6bm93cmFwKTwvaDM+Cis8
ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpub3dyYXA7Ij4KK2FiY2QgZWZnaCBp
amtsIG1ub3A8YiBpZD0idG90ZXN0X3RhYl9pbl9ub3dyYXAiPglzZWxlY3Q1CTwvYj5ub3R0b3Nl
bGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iY2FzZSI+Cis8aDM+dXNlIG11bHRp
cGxlIHdoaXRlc3BhY2VzIGFzIHdvcmQgc2VwYXJhdG9yIChpbnNpZGUgZWxlbWVudCwgd2hpdGUt
c3BhY2U6bm93cmFwKTwvaDM+Cis8ZGl2IHN0eWxlPSJ3aWR0aDoxMDBwdDt3aGl0ZS1zcGFjZTpu
b3dyYXA7Ij4KK2FiY2QgZWZnaCBpamtsIG1ub3A8YiBpZD0idG90ZXN0X211bHRpcGxlX3doaXRl
c3BhY2VzX2luX25vd3JhcCI+ICAgIHNlbGVjdDYgICAgPC9iPm5vdHRvc2VsZWN0Cis8L2Rpdj4K
KzwvZGl2PgorCis8IS0tCisKKzxoMj5jYXNlcyBmb3Igc291cmNlLW9yaWdpbmF0ZWQgbGluZS1i
cmVha3Mgd2l0aCB3aGl0ZS1zcGFjZTogcHJlLSogZmFtaWx5PC9oMj4KKworPGRpdiBjbGFzcz0i
Y2FzZSI+Cis8aDM+d2hpdGUtc3BhY2U6cHJlPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRoOjIwMHB0
O3doaXRlLXNwYWNlOnByZTtiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Z3JheTsiPgorYWJjZCBlZmdo
IGlqa2wgbW5vcAorPGIgaWQ9InRvdGVzdF9zb3VyY2VicmVha19wcmUiPnNlbGVjdDE8L2I+Citu
b3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworPGgzPndoaXRlLXNwYWNlOnByZS13cmFwPC9o
Mz4KKzxkaXYgc3R5bGU9IndpZHRoOjIwMHB0O3doaXRlLXNwYWNlOnByZS13cmFwO2JhY2tncm91
bmQtY29sb3I6bGlnaHRncmF5OyI+CithYmNkIGVmZ2ggaWprbCBtbm9wCis8YiBpZD0idG90ZXN0
X3NvdXJjZWJyZWFrX3ByZXdyYXAiPnNlbGVjdDI8L2I+Citub3R0b3NlbGVjdAorPC9kaXY+Cis8
L2Rpdj4KKworPGgzPndoaXRlLXNwYWNlOnByZS1saW5lPC9oMz4KKzxkaXYgc3R5bGU9IndpZHRo
OjIwMHB0O3doaXRlLXNwYWNlOnByZS1saW5lO2JhY2tncm91bmQtY29sb3I6bGlnaHRncmF5OyI+
CithYmNkIGVmZ2ggaWprbCBtbm9wCis8YiBpZD0idG90ZXN0X3NvdXJjZWJyZWFrX3ByZWxpbmUi
PnNlbGVjdDM8L2I+Citub3R0b3NlbGVjdAorPC9kaXY+Cis8L2Rpdj4KKworLS0+CisKKzxkaXY+
PHNwYW4gaWQ9ImhlaWdodE1lYXN1cmUiPng8L3NwYW4+PC9kaXY+CisKKzxwcmUgaWQ9ImxvZyI+
Cis8L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYTM5Y2QzLi5iM2Q3OTdkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDA5LTEyLTE1IE1PUklUQSBIYWppbWUgPG1vcnJpdGFAZ21haWwuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyODMwNjogZG91
YmxlLWNsaWNraW5nIGEgd29yZCBpbnNpZGUgPGI+IGJlc2lkZSBuZXdsaW5lIHNlbGVjdCB0d28g
d29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4
MzA2CisgICAgICAgIAorICAgICAgICBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yIG1p
c3NlZCB0cmFpbGluZyB3aGl0ZXNwYWNlcyBqdXN0CisgICAgICAgIGJlZm9yZSBmb2xkaW5nIGxp
bmUtYnJlYWssIHdoaWNoIGlzIHVzZWQgdG8gZGV0ZWN0IHdvcmQKKyAgICAgICAgYm91bmRhcmll
cy4gVGhpcyBmaXggY2hlY2tzIHN0cmluZ3Mgb24gUmVuZGVyVGV4dCBhbmQgZXhwYW5kIHRleHQK
KyAgICAgICAgcmFuZ2Ugb24gU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvciB0byBpbmNs
dWRlIHRyYWlsaW5nCisgICAgICAgIHdoaXRlc3BhY2VzIGlmIGF2YWlsYmxlLgorCisgICAgICAg
IFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1zcGFuLmh0bWwK
KworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbGxhcHNlZFNwYWNlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Om1heE9mZnNldEluY2x1
ZGluZ0NvbGxhcHNlZFNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dh
cmRzVGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKwogMjAwOS0xMi0xMiAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGRmMjcxYjYuLjFhNzVmY2YgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCkBAIC03MDUsNiArNzA1LDI4IEBAIHN0YXRpYyBib29sIHNob3VsZEVt
aXRFeHRyYU5ld2xpbmVGb3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CitzdGF0aWMgaW50IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKFJlbmRlclRleHQqIHJlbmRlcmVyLCBp
bnQgdGV4dEVuZCkKK3sKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHJlbmRlcmVyLT50
ZXh0KCktPmNoYXJhY3RlcnMoKTsKKyAgICBpbnQgbGVuZ3RoID0gcmVuZGVyZXItPnRleHQoKS0+
bGVuZ3RoKCk7CisgICAgZm9yIChpbnQgaSA9IHRleHRFbmQ7IGkgPCBsZW5ndGg7ICsraSkgewor
ICAgICAgICBpZiAoIXJlbmRlcmVyLT5zdHlsZSgpLT5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShj
aGFyYWN0ZXJzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBpIC0gdGV4dEVuZDsKKyAgICB9CisK
KyAgICByZXR1cm4gbGVuZ3RoIC0gdGV4dEVuZDsKK30KKworc3RhdGljIGludCBtYXhPZmZzZXRJ
bmNsdWRpbmdDb2xsYXBzZWRTcGFjZXMoTm9kZSogbm9kZSkKK3sKKyAgICBpbnQgb2Zmc2V0ID0g
Y2FyZXRNYXhPZmZzZXQobm9kZSk7CisKKyAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSAmJiBub2Rl
LT5yZW5kZXJlcigpLT5pc1RleHQoKSkKKyAgICAgICAgb2Zmc2V0ICs9IGNvbGxhcHNlZFNwYWNl
TGVuZ3RoKHRvUmVuZGVyVGV4dChub2RlLT5yZW5kZXJlcigpKSwgb2Zmc2V0KTsKKworICAgIHJl
dHVybiBvZmZzZXQ7Cit9CisKIC8vIFdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBlbWl0IGEgY2hh
cmFjdGVyIGFzIHdlIGVudGVyIG1fbm9kZSAoaWYgaXQncyBhIGNvbnRhaW5lcikgb3IgYXMgd2Ug
aGl0IGl0IChpZiBpdCdzIGF0b21pYykuCiBib29sIFRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVz
ZW50Tm9kZU9mZnNldFplcm8oKQogewpAQCAtMTAyOSw3ICsxMDUxLDkgQEAgdm9pZCBTaW1wbGlm
aWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICAgICAgbV9ub2RlID0gbmV4
dDsKICAgICAgICAgaWYgKG1fbm9kZSkKICAgICAgICAgICAgIHB1c2hGdWxseUNsaXBwZWRTdGF0
ZShtX2Z1bGx5Q2xpcHBlZFN0YWNrLCBtX25vZGUpOwotICAgICAgICBtX29mZnNldCA9IG1fbm9k
ZSA/IGNhcmV0TWF4T2Zmc2V0KG1fbm9kZSkgOiAwOworICAgICAgICAvLyBGb3IgdGhlIHB1cnBv
c2Ugb2Ygd29yZCBib3VuZGFyeSBkZXRlY3Rpb24sCisgICAgICAgIC8vIHdlIHNob3VsZCBpdGVy
YXRlIGFsbCB2aXNpYmxlIHRleHQgYW5kIHRyYWlsaW5nIChjb2xsYXBzZWQpIHdoaXRlc3BhY2Vz
LiAKKyAgICAgICAgbV9vZmZzZXQgPSBtX25vZGUgPyBtYXhPZmZzZXRJbmNsdWRpbmdDb2xsYXBz
ZWRTcGFjZXMobV9ub2RlKSA6IDA7CiAgICAgICAgIG1faGFuZGxlZE5vZGUgPSBmYWxzZTsKICAg
ICAgICAgbV9oYW5kbGVkQ2hpbGRyZW4gPSBmYWxzZTsKICAgICAgICAgCg==
</data>
<flag name="commit-queue"
          id="26988"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>