<?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>35281</bug_id>
          
          <creation_ts>2010-02-22 19:39:07 -0800</creation_ts>
          <short_desc>when deleting lines between lists, we should try to merge the lists</short_desc>
          <delta_ts>2022-12-09 15:33:48 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=248709</see_also>
          <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>19539</dependson>
          <blocked>24362</blocked>
    
    <blocked>36430</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>ahmad.saleem792</cc>
    
    <cc>ayg</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>rniwa</cc>
    
    <cc>shezbaig.wk</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>192758</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-22 19:39:07 -0800</bug_when>
    <thetext>For example:
  *  one
  *  two
  *  ^
  *  four

If the cursor is at ^, pressing enter breaks out of the list and now we have two lists.
  * one
  * two
^
  * four

Pressing backspace next should merge two lists.  Instead we end up with two separate lists with a visible space between the two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192767</commentid>
    <comment_count>1</comment_count>
      <attachid>49262</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-22 20:10:58 -0800</bug_when>
    <thetext>Created attachment 49262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192768</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-22 20:11:45 -0800</bug_when>
    <thetext>Adding Ryosuke, master of editable lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192769</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-22 20:14:45 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=49262) [details]
&gt; Patch

Oh, I&apos;m not sure this is the best place to put the merge code.  I originally tried to put it in the DeleteSelection code, but DeleteSelection gets triggered by lots of places and this caused the calls to canMergeLists in IndentOutdentCommand to break.  I was able to work around this with enough code tweaks, but it seemed like the DeleteSelection code is used in too many places for me to change the behavior safely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197013</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-03-07 09:36:32 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=49262) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Oh, I&apos;m not sure this is the best place to put the merge code.  I originally
&gt; tried to put it in the DeleteSelection code, but DeleteSelection gets triggered
&gt; by lots of places and this caused the calls to canMergeLists in
&gt; IndentOutdentCommand to break.  I was able to work around this with enough code
&gt; tweaks, but it seemed like the DeleteSelection code is used in too many places
&gt; for me to change the behavior safely.

You could not modify IndentOutdentCommand instead?  Is TypingCommand (guessing from the name) triggered from execCommand or events caused by mice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197080</commentid>
    <comment_count>5</comment_count>
      <attachid>50193</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-08 00:05:32 -0800</bug_when>
    <thetext>Created attachment 50193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197081</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-08 00:10:21 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #1)
&gt; &gt; &gt; Created an attachment (id=49262) [details] [details] [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Oh, I&apos;m not sure this is the best place to put the merge code.  I originally
&gt; &gt; tried to put it in the DeleteSelection code, but DeleteSelection gets triggered
&gt; &gt; by lots of places and this caused the calls to canMergeLists in
&gt; &gt; IndentOutdentCommand to break.  I was able to work around this with enough code
&gt; &gt; tweaks, but it seemed like the DeleteSelection code is used in too many places
&gt; &gt; for me to change the behavior safely.
&gt; 
&gt; You could not modify IndentOutdentCommand instead?

I&apos;ve attached a separate patch which does the merge in DeleteSelection.  One test still fails, but if you think that approach is more appropriate, I can try to fix the test and upload a patch for review.

&gt; Is TypingCommand (guessing
&gt; from the name) triggered from execCommand or events caused by mice?

It is triggered by execCommand (see the test) but is not triggered by a cut event.  I&apos;m not sure of any other way to delete a line using the mouse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201708</commentid>
    <comment_count>7</comment_count>
      <attachid>50193</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-03-18 22:48:33 -0700</bug_when>
    <thetext>Comment on attachment 50193
Patch

&gt; -        if (node-&gt;hasTagName(brTag))
&gt; +        if (node-&gt;hasTagName(brTag)) {
&gt; +            VisiblePosition beforePlaceholder = caretAfterDelete.previous(true);
&gt; +            VisiblePosition afterPlaceholder = caretAfterDelete.next(true);
&gt;              removeNodeAndPruneAncestors(node);
&gt; +            HTMLElement* before = enclosingList(beforePlaceholder.deepEquivalent().node());
&gt; +            HTMLElement* after = enclosingList(afterPlaceholder.deepEquivalent().node());
&gt; +            if (canMergeLists(before, after))
&gt; +                mergeIdenticalElements(before, after);
&gt; +        }

This change alone seem to pass your test case.
Why are the other changes also included in this patch?
i.e. Why do we need other changes?
If each other of other changes address other bugs / cases,
then we should also test those as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201711</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-18 22:52:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This change alone seem to pass your test case.
&gt; Why are the other changes also included in this patch?
&gt; i.e. Why do we need other changes?
&gt; If each other of other changes address other bugs / cases,
&gt; then we should also test those as well.

The other changes are to avoid regressing other test cases.  Because we merge the nodes earlier, the DOM structure isn&apos;t what we expect in InsertListCommand and IndentOutdentCommand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201775</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-03-19 01:22:17 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; The other changes are to avoid regressing other test cases.  Because we merge
&gt; the nodes earlier, the DOM structure isn&apos;t what we expect in InsertListCommand
&gt; and IndentOutdentCommand.

I see. Now I see a bunch of tests failing without your other changes. I think I understand most of your fixes but I&apos;m not sure about the last one in TypingCommand.cpp. As far as I analyzed the problem lies in MoveParagraph called in the second block of InsertListCommand::doApply().  MoveParagraph is called to move the contents of ol into the new LI element created but it leaves ol behind.

In particular,

		UL	0x11990a6c0
			LI	0x11a725660
				#text	0x11a726560 &quot;One&quot;
			LI	0x1053e9280
				BR	0x11a7271f0
*		BR	0x11a7264a0
		OL	0x11990aad0
			UL	0x1068d6ec0
				LI	0x1068ee590
					#text	0x1068e4460 &quot;Three&quot;
				LI	0x11a00b7f0
					#text	0x1068e61d0 &quot;Four&quot;

becomes

				UL	0x1068d6ec0
					LI	0x11a725660
						#text	0x11a726560 &quot;One&quot;
					LI	0x1053e9280
						BR	0x11a7271f0
					LI	0x1068ee590
						#text	0x1068e4460 &quot;Three&quot;
					LI	0x11a00b7f0
						#text	0x1068e61d0 &quot;Four&quot;
				OL	0x11990aad0

due to the code you added in cleanupAfterDeletion(). This is a due to a bug in canMergeLists(). We must ensure that the two litss have the same enclosing list when merging. Here, we&apos;re merging un inside of ol and ul even though they belong to the to different levels.  With the following canMergeLists,

bool canMergeLists(Element* firstList, Element* secondList)
{
    if (!firstList || !secondList)
        return false;

    return firstList-&gt;hasTagName(secondList-&gt;tagQName())// make sure the list types match (ol vs. ul)
    &amp;&amp; firstList-&gt;isContentEditable() &amp;&amp; secondList-&gt;isContentEditable()// both lists are editable
    &amp;&amp; firstList-&gt;rootEditableElement() == secondList-&gt;rootEditableElement()// don&apos;t cross editing boundaries
    &amp;&amp; enclosingList(firstList) == enclosingList(secondList)
    &amp;&amp; isVisiblyAdjacent(positionInParentAfterNode(firstList), positionInParentBeforeNode(secondList));
    // Make sure there is no visible content between this li and the previous list
}

TypingCommand does not need to be changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201777</commentid>
    <comment_count>10</comment_count>
      <attachid>51136</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-03-19 01:28:25 -0700</bug_when>
    <thetext>Created attachment 51136
fixes canMergeLists

I attach my svn diff. It passes all editing layout tests locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201780</commentid>
    <comment_count>11</comment_count>
      <attachid>49262</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-19 01:31:52 -0700</bug_when>
    <thetext>Comment on attachment 49262
Patch

Ok, then let&apos;s go with the latter approach.  I will try to fix up the patch on Monday (JST).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202378</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-03-21 16:34:52 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 49262 [details])
&gt; Ok, then let&apos;s go with the latter approach.  I will try to fix up the patch on
&gt; Monday (JST).

My patch for the bug 19539 contains the identical change to InsertListCommand::doApply: nextList &amp;&amp; previousList &gt; canMergeLists(nextList, previousList).  It might make sense to land that patch first because the bug 19539 address the problem in InsertListCommand more directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202886</commentid>
    <comment_count>13</comment_count>
      <attachid>51385</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-22 19:02:25 -0700</bug_when>
    <thetext>Created attachment 51385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202888</commentid>
    <comment_count>14</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-03-22 19:03:45 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=51385) [details]
&gt; Patch

Updated patch with the fix from Ryosuke.  No commit-queue because as mentioned in comment 12, there&apos;s overlap with bug 19539.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215203</commentid>
    <comment_count>15</comment_count>
      <attachid>53932</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-21 02:19:50 -0700</bug_when>
    <thetext>Created attachment 53932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215204</commentid>
    <comment_count>16</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-21 02:20:18 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=53932) [details]
&gt; Patch

Rev&apos;ed the patch now that 19539 has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215206</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-04-21 02:25:32 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Created an attachment (id=53932) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Rev&apos;ed the patch now that 19539 has landed.

Ah... thanks for fixing my mistakes.  I should have paid more attentions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216744</commentid>
    <comment_count>18</comment_count>
      <attachid>53932</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2010-04-24 11:29:04 -0700</bug_when>
    <thetext>Comment on attachment 53932
Patch

The tests aren&apos;t included in this patch.  I actually couldn&apos;t see a visible space when trying to test this manually in TOT, so I&apos;d like to try out the test case to see the behavior difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216863</commentid>
    <comment_count>19</comment_count>
      <attachid>54248</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-25 17:59:52 -0700</bug_when>
    <thetext>Created attachment 54248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216864</commentid>
    <comment_count>20</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-25 18:00:51 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 53932 [details])
&gt; The tests aren&apos;t included in this patch.  I actually couldn&apos;t see a visible
&gt; space when trying to test this manually in TOT, so I&apos;d like to try out the test
&gt; case to see the behavior difference.

Sorry, new patch up with layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217165</commentid>
    <comment_count>21</comment_count>
      <attachid>54248</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-26 09:58:47 -0700</bug_when>
    <thetext>Comment on attachment 54248
Patch

I see five distinct code changes here and only one test case. Does this test case cover all five changes? In other words, if I take out each one of the five changes, is there a test that will fail? If not, I&apos;d like to see additional test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217393</commentid>
    <comment_count>22</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-04-26 17:50:37 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 54248 [details])
&gt; I see five distinct code changes here and only one test case. Does this test
&gt; case cover all five changes? In other words, if I take out each one of the five
&gt; changes, is there a test that will fail? If not, I&apos;d like to see additional
&gt; test cases.

If you take out any one of the five changes either an existing test will fail or the new test will fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240474</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-20 10:50:07 -0700</bug_when>
    <thetext>Ojan or Enrica: Interested in reviewing this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241303</commentid>
    <comment_count>24</comment_count>
      <attachid>54248</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2010-06-22 09:57:46 -0700</bug_when>
    <thetext>Comment on attachment 54248
Patch

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; index 51a4e50..6605887 100644
&gt; --- a/LayoutTests/ChangeLog
&gt; +++ b/LayoutTests/ChangeLog
&gt; @@ -1,3 +1,13 @@
&gt; +2010-04-25  Tony Chang  &lt;tony@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        when deleting lines between lists, we should try to merge the lists
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=35281
&gt; +
&gt; +        * editing/deleting/merge-lists-expected.txt: Added.
&gt; +        * editing/deleting/merge-lists.html: Added.
&gt; +
&gt;  2010-04-25  Andrey Kosyakov  &lt;caseq@chromium.org&gt;
&gt;  
&gt;          Reviewed by Adam Barth.
&gt; diff --git a/LayoutTests/editing/deleting/merge-lists-expected.txt b/LayoutTests/editing/deleting/merge-lists-expected.txt
&gt; new file mode 100644
&gt; index 0000000..1754250
&gt; --- /dev/null
&gt; +++ b/LayoutTests/editing/deleting/merge-lists-expected.txt
&gt; @@ -0,0 +1,9 @@
&gt; +While on an empty list item, pressing enter should break out of the list and pressing delete should then merge the two lists together. There should be a single list below with 3 list items.
&gt; +one
&gt; +two
&gt; +three
&gt; +PASS: 
&gt; +&lt;li&gt;one&lt;/li&gt;
&gt; +&lt;li&gt;two&lt;/li&gt;
&gt; +&lt;li&gt;three&lt;/li&gt;
&gt; +
&gt; diff --git a/LayoutTests/editing/deleting/merge-lists.html b/LayoutTests/editing/deleting/merge-lists.html
&gt; new file mode 100644
&gt; index 0000000..b9d6274
&gt; --- /dev/null
&gt; +++ b/LayoutTests/editing/deleting/merge-lists.html
&gt; @@ -0,0 +1,23 @@
&gt; +&lt;body contentEditable=&quot;true&quot;&gt;
&gt; +&lt;div&gt;While on an empty list item, pressing enter should break out of the list and pressing delete
&gt; +should then merge the two lists together.  There should be a single list below with 3 list items.
&gt; +&lt;ul id=&quot;ul&quot;&gt;
&gt; +  &lt;li&gt;one&lt;/li&gt;
&gt; +  &lt;li&gt;two&lt;/li&gt;
&gt; +  &lt;li id=&quot;test&quot;&gt;&lt;/li&gt;
&gt; +  &lt;li&gt;three&lt;/li&gt;
&gt; +&lt;/ul&gt;
&gt; +&lt;div id=&quot;results&quot;&gt;FAIL&lt;/div&gt;
&gt; +&lt;script src=&quot;../editing.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;script&gt;
&gt; +function editingTest()
&gt; +{
&gt; +    execTypeCharacterCommand(&quot;\n&quot;);
&gt; +    execDeleteCommand();
&gt; +    if (document.getElementsByTagName(&quot;ul&quot;).length != 1)
&gt; +        throw &quot;Wrong number of lists.&quot;
&gt; +    document.getElementById(&quot;results&quot;).innerText = &quot;PASS: &quot; + document.getElementById(&quot;ul&quot;).innerHTML;
&gt; +}
&gt; +
&gt; +runDumpAsTextEditingTest(false);
&gt; +&lt;/script&gt;
&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index e329fc2..f11f803 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,21 @@
&gt; +2010-04-25  Tony Chang  &lt;tony@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        when deleting lines between lists, we should try to merge the lists
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=35281
&gt; +
&gt; +        Test: editing/deleting/merge-lists.html
&gt; +
&gt; +        * editing/CompositeEditCommand.cpp:
&gt; +        (WebCore::CompositeEditCommand::cleanupAfterDeletion): try to merge adjacent lists after a deletion
&gt; +        * editing/IndentOutdentCommand.cpp:
&gt; +        (WebCore::IndentOutdentCommand::tryIndentingAsListItem):
&gt; +        * editing/InsertListCommand.cpp:
&gt; +        (WebCore::InsertListCommand::doApply):
&gt; +        * editing/htmlediting.cpp:
&gt; +        (WebCore::canMergeLists):
&gt; +
&gt;  2010-04-25  Andrey Kosyakov  &lt;caseq@chromium.org&gt;
&gt;  
&gt;          Reviewed by Adam Barth.
&gt; diff --git a/WebCore/editing/CompositeEditCommand.cpp b/WebCore/editing/CompositeEditCommand.cpp
&gt; index 9dc918d..6811563 100644
&gt; --- a/WebCore/editing/CompositeEditCommand.cpp
&gt; +++ b/WebCore/editing/CompositeEditCommand.cpp
&gt; @@ -807,8 +807,15 @@ void CompositeEditCommand::cleanupAfterDeletion()
&gt;          Position position = caretAfterDelete.deepEquivalent().downstream();
&gt;          Node* node = position.node();
&gt;          // Normally deletion will leave a br as a placeholder.
&gt; -        if (node-&gt;hasTagName(brTag))
&gt; +        if (node-&gt;hasTagName(brTag)) {
&gt; +            VisiblePosition beforePlaceholder = caretAfterDelete.previous(true);
&gt; +            VisiblePosition afterPlaceholder = caretAfterDelete.next(true);
&gt;              removeNodeAndPruneAncestors(node);
&gt; +            HTMLElement* before = enclosingList(beforePlaceholder.deepEquivalent().node());
&gt; +            HTMLElement* after = enclosingList(afterPlaceholder.deepEquivalent().node());
&gt; +            if (canMergeLists(before, after))
&gt; +                mergeIdenticalElements(before, after);
&gt; +        }
&gt;          // If the selection to move was empty and in an empty block that 
&gt;          // doesn&apos;t require a placeholder to prop itself open (like a bordered
&gt;          // div or an li), remove it during the move (the list removal code
&gt; diff --git a/WebCore/editing/IndentOutdentCommand.cpp b/WebCore/editing/IndentOutdentCommand.cpp
&gt; index 0f3975b..4e88cd2 100644
&gt; --- a/WebCore/editing/IndentOutdentCommand.cpp
&gt; +++ b/WebCore/editing/IndentOutdentCommand.cpp
&gt; @@ -99,6 +99,8 @@ bool IndentOutdentCommand::tryIndentingAsListItem(const VisiblePosition&amp; endOfCu
&gt;          mergeIdenticalElements(previousList, newList);
&gt;      if (canMergeLists(newList.get(), nextList))
&gt;          mergeIdenticalElements(newList, nextList);
&gt; +    if (canMergeLists(previousList, nextList))
&gt; +        mergeIdenticalElements(previousList, nextList);
&gt;  
&gt;      return true;
&gt;  }
&gt; diff --git a/WebCore/editing/InsertListCommand.cpp b/WebCore/editing/InsertListCommand.cpp
&gt; index cd6838b..2f3f638 100644
&gt; --- a/WebCore/editing/InsertListCommand.cpp
&gt; +++ b/WebCore/editing/InsertListCommand.cpp
&gt; @@ -136,7 +136,7 @@ void InsertListCommand::doApply()
&gt;      Node* listChildNode = enclosingListChild(selectionNode);
&gt;      bool switchListType = false;
&gt;      if (listChildNode) {
&gt; -        // Remove the list chlild.
&gt; +        // Remove the list child.
&gt;          HTMLElement* listNode = enclosingList(listChildNode);
&gt;          if (!listNode)
&gt;              listNode = fixOrphanedListChild(listChildNode);
&gt; @@ -263,12 +263,12 @@ void InsertListCommand::doApply()
&gt;              nextList = outermostEnclosingList(nextPosition.deepEquivalent().node(), enclosingList(listElement.get()));
&gt;          }
&gt;          moveParagraph(start, end, VisiblePosition(Position(placeholder.get(), 0)), true);
&gt; -        if (m_listElement) {
&gt; +        if (m_listElement &amp;&amp; m_listElement-&gt;inDocument()) {
&gt;              if (canMergeLists(previousList, m_listElement.get()))
&gt;                  mergeIdenticalElements(previousList, m_listElement.get());
&gt;              if (canMergeLists(m_listElement.get(), nextList))
&gt;                  mergeIdenticalElements(m_listElement.get(), nextList);
&gt; -        } else if (canMergeLists(nextList, previousList))
&gt; +        } else if (canMergeLists(previousList, nextList))
&gt;              mergeIdenticalElements(previousList, nextList);
&gt;      }
&gt;  }
&gt; diff --git a/WebCore/editing/htmlediting.cpp b/WebCore/editing/htmlediting.cpp
&gt; index b7a062b..bfbf929 100644
&gt; --- a/WebCore/editing/htmlediting.cpp
&gt; +++ b/WebCore/editing/htmlediting.cpp
&gt; @@ -835,6 +835,7 @@ bool canMergeLists(Element* firstList, Element* secondList)
&gt;      return firstList-&gt;hasTagName(secondList-&gt;tagQName())// make sure the list types match (ol vs. ul)
&gt;      &amp;&amp; firstList-&gt;isContentEditable() &amp;&amp; secondList-&gt;isContentEditable()// both lists are editable
&gt;      &amp;&amp; firstList-&gt;rootEditableElement() == secondList-&gt;rootEditableElement()// don&apos;t cross editing boundaries
&gt; +    &amp;&amp; enclosingList(firstList) == enclosingList(secondList)
&gt;      &amp;&amp; isVisiblyAdjacent(positionInParentAfterNode(firstList), positionInParentBeforeNode(secondList));
&gt;      // Make sure there is no visible content between this li and the previous list
&gt;  }

This makes sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256088</commentid>
    <comment_count>25</comment_count>
      <attachid>54248</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-26 10:17:03 -0700</bug_when>
    <thetext>Comment on attachment 54248
Patch

.&gt; diff --git a/LayoutTests/editing/deleting/merge-lists-expected.txt b/LayoutTests/editing/deleting/merge-lists-expected.txt
&gt; new file mode 100644
&gt; index 0000000..1754250
&gt; --- /dev/null
&gt; +++ b/LayoutTests/editing/deleting/merge-lists-expected.txt
&gt; @@ -0,0 +1,9 @@
&gt; +While on an empty list item, pressing enter should break out of the list and pressing delete should then merge the two lists together. There should be a single list below with 3 list items.
&gt; +one
&gt; +two
&gt; +three
&gt; +PASS: 
&gt; +&lt;li&gt;one&lt;/li&gt;
&gt; +&lt;li&gt;two&lt;/li&gt;
&gt; +&lt;li&gt;three&lt;/li&gt;
&gt; +
&gt;

I would like to see the intermediate HTML after you broke out of the list because if that didn&apos;t happen, we won&apos;t be testing what we claim to test.  Or you can start with the HTML after you broke out of the test.  But I prefer adding one more dump for the better test coverage.

&gt; --- a/WebCore/editing/CompositeEditCommand.cpp
&gt; +++ b/WebCore/editing/CompositeEditCommand.cpp
&gt; @@ -807,8 +807,15 @@ void CompositeEditCommand::cleanupAfterDeletion()
&gt;          Position position = caretAfterDelete.deepEquivalent().downstream();
&gt;          Node* node = position.node();
&gt;          // Normally deletion will leave a br as a placeholder.
&gt; -        if (node-&gt;hasTagName(brTag))
&gt; +        if (node-&gt;hasTagName(brTag)) {
&gt; +            VisiblePosition beforePlaceholder = caretAfterDelete.previous(true);
&gt; +            VisiblePosition afterPlaceholder = caretAfterDelete.next(true);
&gt;              removeNodeAndPruneAncestors(node);
&gt; +            HTMLElement* before = enclosingList(beforePlaceholder.deepEquivalent().node());
&gt; +            HTMLElement* after = enclosingList(afterPlaceholder.deepEquivalent().node());

I&apos;m skeptical about this enclosingList business here. What if the list list of the previous or the next lists were inner lists?
For example, if we had &lt;ul&gt;&lt;ul&gt;&lt;li&gt;hello&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;/li&gt; and then did what the reproduction steps describe here, won&apos;t be obtaining the inner list for before and fail to merge?
My patch for https://bugs.webkit.org/show_bug.cgi?id=33668 fixes this problem in InsertListCommand

&gt; +            if (canMergeLists(before, after))
&gt; +                mergeIdenticalElements(before, after);
&gt; +        }

LGTM.

&gt; index 0f3975b..4e88cd2 100644
&gt; --- a/WebCore/editing/IndentOutdentCommand.cpp
&gt; +++ b/WebCore/editing/IndentOutdentCommand.cpp
&gt; @@ -99,6 +99,8 @@ bool IndentOutdentCommand::tryIndentingAsListItem(const VisiblePosition&amp; endOfCu
&gt;          mergeIdenticalElements(previousList, newList);
&gt;      if (canMergeLists(newList.get(), nextList))
&gt;          mergeIdenticalElements(newList, nextList);
&gt; +    if (canMergeLists(previousList, nextList))
&gt; +        mergeIdenticalElements(previousList, nextList);

Are you sure this code path is ever executed?  The only case this will be executed is if both previousList and nextList can be merged with newList.  But then the first if statement will merge previousList and newList and leaves newList.  We then merge newList and nextList. So the code should work as is unless I&apos;m missing something.


&gt; diff --git a/WebCore/editing/InsertListCommand.cpp b/WebCore/editing/InsertListCommand.cpp
&gt; index cd6838b..2f3f638 100644
&gt; --- a/WebCore/editing/InsertListCommand.cpp
&gt; +++ b/WebCore/editing/InsertListCommand.cpp
&gt; @@ -263,12 +263,12 @@ void InsertListCommand::doApply()
&gt;              nextList = outermostEnclosingList(nextPosition.deepEquivalent().node(), enclosingList(listElement.get()));
&gt;          }
&gt;          moveParagraph(start, end, VisiblePosition(Position(placeholder.get(), 0)), true);
&gt; -        if (m_listElement) {
&gt; +        if (m_listElement &amp;&amp; m_listElement-&gt;inDocument()) {

I suppose JavaScript can modify the DOM but shouldn&apos;t the canMergeLists be harmless in that case?

&gt;              if (canMergeLists(previousList, m_listElement.get()))
&gt;                  mergeIdenticalElements(previousList, m_listElement.get());
&gt;              if (canMergeLists(m_listElement.get(), nextList))
&gt;                  mergeIdenticalElements(m_listElement.get(), nextList);
&gt; -        } else if (canMergeLists(nextList, previousList))
&gt; +        } else if (canMergeLists(previousList, nextList))

Oops, my bad.

&gt; --- a/WebCore/editing/htmlediting.cpp
&gt; +++ b/WebCore/editing/htmlediting.cpp
&gt; @@ -835,6 +835,7 @@ bool canMergeLists(Element* firstList, Element* secondList)
&gt;      return firstList-&gt;hasTagName(secondList-&gt;tagQName())// make sure the list types match (ol vs. ul)
&gt;      &amp;&amp; firstList-&gt;isContentEditable() &amp;&amp; secondList-&gt;isContentEditable()// both lists are editable
&gt;      &amp;&amp; firstList-&gt;rootEditableElement() == secondList-&gt;rootEditableElement()// don&apos;t cross editing boundaries
&gt; +    &amp;&amp; enclosingList(firstList) == enclosingList(secondList)
&gt;      &amp;&amp; isVisiblyAdjacent(positionInParentAfterNode(firstList), positionInParentBeforeNode(secondList));
&gt;      // Make sure there is no visible content between this li and the previous list
&gt;  }

Good change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258484</commentid>
    <comment_count>26</comment_count>
      <attachid>54248</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-07-30 17:04:01 -0700</bug_when>
    <thetext>Comment on attachment 54248
Patch

Sounds like this is conflicting with some patches rniwa has in flight.  I will revisit after his patch for issue 33668 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288527</commentid>
    <comment_count>27</comment_count>
      <attachid>69529</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-01 15:40:05 -0700</bug_when>
    <thetext>Created attachment 69529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288533</commentid>
    <comment_count>28</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-01 15:48:25 -0700</bug_when>
    <thetext>The newest patch removes the changes except for the list merging.  I also updated MergeIdenticalElementsCommand to support merging into the first element.  Without this, we would break during moveParagraphsWithClones which expects the new list to exist after calling cleanupAfterDeletion().

I updated the test to show the intermediate HTML.  

&quot;&quot;&quot;I&apos;m skeptical about this enclosingList business here. What if the list list of the previous or the next lists were inner lists?
For example, if we had &lt;ul&gt;&lt;ul&gt;&lt;li&gt;hello&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;/li&gt; and then did what the reproduction steps describe here, won&apos;t be obtaining the inner list for before and fail to merge?&quot;&quot;&quot;

If this is the editable text:

* * Hello
* ^

I&apos;m not sure what we&apos;re merging here.  I added a test for:

* * Hello
* ^
* * World

Where pressing backspace should merge into a single double nested list.  If the lists are at different depths, I don&apos;t think they should merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288548</commentid>
    <comment_count>29</comment_count>
      <attachid>69529</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-01 15:58:35 -0700</bug_when>
    <thetext>Comment on attachment 69529
Patch

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

&gt; WebCore/editing/CompositeEditCommand.h:46
&gt; +    enum MergeDirection {
&gt; +        MergeIntoFirst,
&gt; +        MergeIntoSecond,
&gt; +    };
&gt; +

I&apos;m not sure if MergeDirection is the right name because direction just sounds like it&apos;s related to LTR/RTL.  But I can&apos;t think of a better one.  Maybe ElementToMergeInto?

&gt; WebCore/editing/MergeIdenticalElementsCommand.cpp:84
&gt; +    if (m_direction == MergeIntoFirst)
&gt; +        insertNodeAfter(m_element2.get(), m_element1.get());

It seems like this is the only reason we&apos;re making it inherit from CompositeEditCommand?  We should just call appendChild on its parent when it&apos;s at the end, and call insertBefore otherwise.

&gt; WebCore/editing/MergeIdenticalElementsCommand.h:33
&gt; -class MergeIdenticalElementsCommand : public SimpleEditCommand {
&gt; +class MergeIdenticalElementsCommand : public CompositeEditCommand {

I don&apos;t think we want to make this command CompositeEditCommand.  If we&apos;re absolutely required to do this, then we should remove doUnapply and doReapply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288552</commentid>
    <comment_count>30</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-01 16:06:20 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; If this is the editable text:
&gt; 
&gt; * * Hello
&gt; * ^
&gt; 
&gt; I&apos;m not sure what we&apos;re merging here.  I added a test for:
&gt; 
&gt; * * Hello
&gt; * ^
&gt; * * World
&gt; 
&gt; Where pressing backspace should merge into a single double nested list.  If the lists are at different depths, I don&apos;t think they should merge.

So you get &lt;ul&gt;&lt;ul&gt;&lt;li&gt;hello&lt;/li&gt;&lt;li&gt;world&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;, right?  That sounds like a correct behavior to me.  Sorry my grammar was really bad in the earlier comment but what I intended to say was that enclosingList incorrectly obtains the inner most list as supposed to the list of the appropriate level.  For example, if we had:

&gt; * * Hello
&gt; ^
&gt; * World

We should be getting

&gt; * * Hello
&gt; * World

Where * Hello and World belongs to the same list: &lt;ul&gt;&lt;ul&gt;&lt;li&gt;Hello&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;World&lt;/li&gt;&lt;/ul&gt;.  With your original patch, I think enclosingList would have grabbed ul wrapping &quot;Hello&quot; and failed to merge the outer list, resulting in &lt;ul&gt;&lt;ul&gt;&lt;li&gt;Hello&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;World&lt;/li&gt;&lt;/ul&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288587</commentid>
    <comment_count>31</comment_count>
      <attachid>69543</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-01 17:05:58 -0700</bug_when>
    <thetext>Created attachment 69543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288596</commentid>
    <comment_count>32</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-01 17:20:49 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; I&apos;m not sure if MergeDirection is the right name because direction just sounds like it&apos;s related to LTR/RTL.  But I can&apos;t think of a better one.  Maybe ElementToMergeInto?

Renamed to MergeIdenticalElementsDirection.

&gt; &gt; WebCore/editing/MergeIdenticalElementsCommand.cpp:84
&gt; &gt; +    if (m_direction == MergeIntoFirst)
&gt; &gt; +        insertNodeAfter(m_element2.get(), m_element1.get());
&gt; 
&gt; It seems like this is the only reason we&apos;re making it inherit from CompositeEditCommand?  We should just call appendChild on its parent when it&apos;s at the end, and call insertBefore otherwise.

Ok, restored it as a SimpleEditCommand.

&gt; For example, if we had:
&gt; 
&gt; &gt; * * Hello
&gt; &gt; ^
&gt; &gt; * World
&gt; 
&gt; We should be getting
&gt; 
&gt; &gt; * * Hello
&gt; &gt; * World
&gt; 
&gt; Where * Hello and World belongs to the same list: &lt;ul&gt;&lt;ul&gt;&lt;li&gt;Hello&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;World&lt;/li&gt;&lt;/ul&gt;.  With your original patch, I think enclosingList would have grabbed ul wrapping &quot;Hello&quot; and failed to merge the outer list, resulting in &lt;ul&gt;&lt;ul&gt;&lt;li&gt;Hello&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;World&lt;/li&gt;&lt;/ul&gt;.

With this patch, we still don&apos;t merge the outer lists.  I&apos;m not 100% convinced we should merge in this case.  I tried it in IE9 and it produced:

* * HelloWorld

But that doesn&apos;t seem much better.  Anyway, I think this case should be a different bug/patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288619</commentid>
    <comment_count>33</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-01 18:05:03 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Ok, restored it as a SimpleEditCommand.

Great!  Do we currently have a test for undoing/redoing MergeIdenticalElements?
If not, could you add one since you&apos;re making a lot of changes?

&gt; &gt; For example, if we had:
&gt; &gt; 
&gt; &gt; &gt; * * Hello
&gt; &gt; &gt; ^
&gt; &gt; &gt; * World
&gt; &gt; 
&gt; &gt; We should be getting
&gt; &gt; 
&gt; &gt; &gt; * * Hello
&gt; &gt; &gt; * World
&gt; &gt; 
&gt; &gt; Where * Hello and World belongs to the same list: &lt;ul&gt;&lt;ul&gt;&lt;li&gt;Hello&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;World&lt;/li&gt;&lt;/ul&gt;.  With your original patch, I think enclosingList would have grabbed ul wrapping &quot;Hello&quot; and failed to merge the outer list, resulting in &lt;ul&gt;&lt;ul&gt;&lt;li&gt;Hello&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;World&lt;/li&gt;&lt;/ul&gt;.
&gt; 
&gt; With this patch, we still don&apos;t merge the outer lists.  I&apos;m not 100% convinced we should merge in this case.  I tried it in IE9 and it produced.

Take a look at mergeWithNeighboringLists in InsertListCommand.cpp.  Using that function should solve this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288628</commentid>
    <comment_count>34</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-01 18:30:05 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; Ok, restored it as a SimpleEditCommand.
&gt; 
&gt; Great!  Do we currently have a test for undoing/redoing MergeIdenticalElements?

editing/undo/undo-indent.html covers this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300006</commentid>
    <comment_count>35</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-26 22:35:59 -0700</bug_when>
    <thetext>Could someone review the patch Tony posted before it gets too old?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300604</commentid>
    <comment_count>36</comment_count>
      <attachid>69543</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-27 14:54:09 -0700</bug_when>
    <thetext>Comment on attachment 69543
Patch

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

I&apos;m confused why direction is needed.

&gt; WebCore/editing/CompositeEditCommand.cpp:807
&gt; +            VisiblePosition beforePlaceholder = caretAfterDelete.previous(true);
&gt; +            VisiblePosition afterPlaceholder = caretAfterDelete.next(true);
&gt;              removeNodeAndPruneAncestors(node);
&gt; +            HTMLElement* before = enclosingList(beforePlaceholder.deepEquivalent().node());
&gt; +            HTMLElement* after = enclosingList(afterPlaceholder.deepEquivalent().node());

Do we need an enclosingList function which takes a visible position?  and/or a canMergeListsAt(visiblePosition) function?

&gt; WebCore/editing/CompositeEditCommand.h:42
&gt; +    enum MergeIdenticalElementsDirection {

Seems this should just be its own header since it&apos;s needed in SimpleEditComand.

&gt; WebCore/editing/MergeIdenticalElementsCommand.h:50
&gt; +    CompositeEditCommand::MergeIdenticalElementsDirection m_direction;

Seems this enum wants its own header...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300792</commentid>
    <comment_count>37</comment_count>
      <attachid>72127</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-27 18:56:40 -0700</bug_when>
    <thetext>Created attachment 72127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300798</commentid>
    <comment_count>38</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-27 18:59:37 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 69543 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69543&amp;action=review
&gt; 
&gt; I&apos;m confused why direction is needed.

Without this, we would break during moveParagraphsWithClones which expects the new list to exist after calling cleanupAfterDeletion().  The old behavior (MergeIntoSecond) is expected by some of the existing callers that try to keep a pointer to the second list.

&gt; Do we need an enclosingList function which takes a visible position?  and/or a canMergeListsAt(visiblePosition) function?

Added.

&gt; Seems this should just be its own header since it&apos;s needed in SimpleEditComand.
&gt; Seems this enum wants its own header...

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324912</commentid>
    <comment_count>39</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-21 01:16:43 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Could someone review the patch Tony posted before it gets too old?

^^^ rniwa?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377077</commentid>
    <comment_count>40</comment_count>
      <attachid>72127</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-03-31 05:22:41 -0700</bug_when>
    <thetext>Comment on attachment 72127
Patch

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

&gt; LayoutTests/ChangeLog:5
&gt; +        when deleting lines between lists, we should try to merge the lists

The subject should start with an upper case letter I believe.

&gt; WebCore/ChangeLog:5
&gt; +        when deleting lines between lists, we should try to merge the lists

Same.

&gt; WebCore/editing/MergeIdenticalElementsDirection.h:2
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

2011?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392874</commentid>
    <comment_count>41</comment_count>
      <attachid>72127</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-26 15:50:03 -0700</bug_when>
    <thetext>Comment on attachment 72127
Patch

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

I like this!  I&apos;m ready to r+ this if updated.

&gt; WebCore/WebCore.xcodeproj/project.pbxproj:1303
&gt; +		53E34AEC127907C20060B999 /* MergeIdenticalElementsDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 53E34AEB127907C20060B999 /* MergeIdenticalElementsDirection.h */; settings = {ATTRIBUTES = (Private, ); }; };

Why does this need to be private instead of project?

&gt; WebCore/editing/MergeIdenticalElementsDirection.h:37
&gt; +typedef enum {
&gt; +    MergeIntoFirst,
&gt; +    MergeIntoSecond,
&gt; +} MergeIdenticalElementsDirection;

Is this modern syntax?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459154</commentid>
    <comment_count>42</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2011-08-30 13:43:53 -0700</bug_when>
    <thetext>The current editing spec has this bug too, which I filed: http://www.w3.org/Bugs/Public/show_bug.cgi?id=13976</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855986</commentid>
    <comment_count>43</comment_count>
    <who name="Shezan Baig">shezbaig.wk</who>
    <bug_when>2013-03-15 07:37:59 -0700</bug_when>
    <thetext>Is this worth pursuing?  It seems like it would remove some editing flexibility.  For example, it wouldn&apos;t allow lists to be siblings without an extra linebreak.  i.e, if I have:
&lt;ul&gt;
    &lt;li&gt;first&lt;/li&gt;
    &lt;li&gt;second&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;[selection-caret]
&lt;ul&gt;
    &lt;li&gt;another first&lt;/li&gt;
    &lt;li&gt;another second&lt;/li&gt;
&lt;/ul&gt;

If this bug is fixed, it would be impossible for an editor to get this markup:

&lt;ul&gt;
    &lt;li&gt;first&lt;/li&gt;
    &lt;li&gt;second&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;another first&lt;/li&gt;
    &lt;li&gt;another second&lt;/li&gt;
&lt;/ul&gt;

Which may be desirable, since &lt;ul&gt;s have margin before and after.  Forcing them to have a &lt;br/&gt; introduces too much spacing between the lists.

I think the lists should only be merged if the user presses backspace at:

&lt;ul&gt;
    &lt;li&gt;first&lt;/li&gt;
    &lt;li&gt;second&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
    &lt;li&gt;[selection-caret]another first&lt;/li&gt;
    &lt;li&gt;another second&lt;/li&gt;
&lt;/ul&gt;

Thoughts?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49262</attachid>
            <date>2010-02-22 20:10:58 -0800</date>
            <delta_ts>2010-03-19 01:31:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35281-20100223131056.patch</filename>
            <type>text/plain</type>
            <size>5869</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNzNmOWNhLi4zMTE2NDNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDIt
MjIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGRlbGV0aW5nIGxpbmVzIGJldHdlZW4g
bGlzdHMsIHdlIHNob3VsZCB0cnkgdG8gbWVyZ2UgdGhlIGxpc3RzLgorICAgICAgICBUaGUgY29t
bW9uIGNhc2UgaXMgd2hlbiByZW1vdmluZyBibGFuayBsaXN0IGl0ZW1zLCByZXBlYXRlZGx5IHBy
ZXNzaW5nCisgICAgICAgIGRlbGV0ZSBzaG91bGQgdHJ5IHRvIG1haW50YWluIGEgc2luZ2xlIGxp
c3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTI4
MQorCisgICAgICAgICogZWRpdGluZy9kZWxldGluZy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDItMjIgIENocmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2VkaXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9kZWxldGluZy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMTc1NDI1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
OSBAQAorV2hpbGUgb24gYW4gZW1wdHkgbGlzdCBpdGVtLCBwcmVzc2luZyBlbnRlciBzaG91bGQg
YnJlYWsgb3V0IG9mIHRoZSBsaXN0IGFuZCBwcmVzc2luZyBkZWxldGUgc2hvdWxkIHRoZW4gbWVy
Z2UgdGhlIHR3byBsaXN0cyB0b2dldGhlci4gVGhlcmUgc2hvdWxkIGJlIGEgc2luZ2xlIGxpc3Qg
YmVsb3cgd2l0aCAzIGxpc3QgaXRlbXMuCitvbmUKK3R3bwordGhyZWUKK1BBU1M6IAorPGxpPm9u
ZTwvbGk+Cis8bGk+dHdvPC9saT4KKzxsaT50aHJlZTwvbGk+CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iOWQ2Mjc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9kZWxldGluZy9tZXJnZS1saXN0cy5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzxib2R5IGNvbnRl
bnRFZGl0YWJsZT0idHJ1ZSI+Cis8ZGl2PldoaWxlIG9uIGFuIGVtcHR5IGxpc3QgaXRlbSwgcHJl
c3NpbmcgZW50ZXIgc2hvdWxkIGJyZWFrIG91dCBvZiB0aGUgbGlzdCBhbmQgcHJlc3NpbmcgZGVs
ZXRlCitzaG91bGQgdGhlbiBtZXJnZSB0aGUgdHdvIGxpc3RzIHRvZ2V0aGVyLiAgVGhlcmUgc2hv
dWxkIGJlIGEgc2luZ2xlIGxpc3QgYmVsb3cgd2l0aCAzIGxpc3QgaXRlbXMuCis8dWwgaWQ9InVs
Ij4KKyAgPGxpPm9uZTwvbGk+CisgIDxsaT50d288L2xpPgorICA8bGkgaWQ9InRlc3QiPjwvbGk+
CisgIDxsaT50aHJlZTwvbGk+Cis8L3VsPgorPGRpdiBpZD0icmVzdWx0cyI+RkFJTDwvZGl2Pgor
PHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9u
IGVkaXRpbmdUZXN0KCkKK3sKKyAgICBleGVjVHlwZUNoYXJhY3RlckNvbW1hbmQoIlxuIik7Cisg
ICAgZXhlY0RlbGV0ZUNvbW1hbmQoKTsKKyAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoInVsIikubGVuZ3RoICE9IDEpCisgICAgICAgIHRocm93ICJXcm9uZyBudW1iZXIgb2Yg
bGlzdHMuIgorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIikuaW5uZXJUZXh0
ID0gIlBBU1M6ICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidWwiKS5pbm5lckhUTUw7Cit9
CisKK3J1bkR1bXBBc1RleHRFZGl0aW5nVGVzdChmYWxzZSk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk1NDE0Ny4u
OWZiMDVjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMi0yMiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gZGVsZXRpbmcgbGluZXMgYmV0d2VlbiBsaXN0cywgd2Ugc2hvdWxkIHRyeSB0byBt
ZXJnZSB0aGUgbGlzdHMuCisgICAgICAgIFRoZSBjb21tb24gY2FzZSBpcyB3aGVuIHJlbW92aW5n
IGJsYW5rIGxpc3QgaXRlbXMsIHJlcGVhdGVkbHkgcHJlc3NpbmcKKyAgICAgICAgZGVsZXRlIHNo
b3VsZCB0cnkgdG8gbWFpbnRhaW4gYSBzaW5nbGUgbGlzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjgxCisKKyAgICAgICAgVGVzdDogZWRpdGlu
Zy9kZWxldGluZy9tZXJnZS1saXN0cy5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6bWVyZ2VBZGphY2Vu
dExpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNz
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVBy
ZXNzZWQpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorCiAyMDEwLTAyLTIy
ICBTdGVwaGFuIEHDn211cyAgPHN1cGVyc3RpcHBpQGdteC5kZT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21t
YW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAxYzlkYjkw
Li5jNjE5YTQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
ICNpbmNsdWRlICJJbnNlcnRMaW5lQnJlYWtDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oIgpAQCAtNDEyLDYgKzQxMywxNiBAQCBib29sIFR5cGlu
Z0NvbW1hbmQ6Om1ha2VFZGl0YWJsZVJvb3RFbXB0eSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
Ky8vIElmIHxzdGFydHwgYW5kIHxlbmR8IGFyZSBjb250YWluZWQgaW4gc2VwYXJhdGUgbGlzdHMs
IHRyeSB0byBtZXJnZSB0aGVtIGludG8gdGhlCisvLyBzYW1lIGxpc3QuCit2b2lkIFR5cGluZ0Nv
bW1hbmQ6Om1lcmdlQWRqYWNlbnRMaXN0cyhWaXNpYmxlUG9zaXRpb24gc3RhcnQsIFZpc2libGVQ
b3NpdGlvbiBlbmQpCit7CisgICAgSFRNTEVsZW1lbnQqIGJlZm9yZUxpc3QgPSBlbmNsb3NpbmdM
aXN0KHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKKyAgICBIVE1MRWxlbWVudCogYWZ0
ZXJMaXN0ID0gZW5jbG9zaW5nTGlzdChlbmQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOworICAg
IGlmIChjYW5NZXJnZUxpc3RzKGJlZm9yZUxpc3QsIGFmdGVyTGlzdCkpCisgICAgICAgIG1lcmdl
SWRlbnRpY2FsRWxlbWVudHMoYmVmb3JlTGlzdCwgYWZ0ZXJMaXN0KTsKK30KKwogdm9pZCBUeXBp
bmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwg
Ym9vbCBraWxsUmluZykKIHsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvblRvRGVsZXRl
OwpAQCAtNTAzLDcgKzUxNCw5IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3Nl
ZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2lsbFJpbmcpCiAgICAgLy8gbW9y
ZSB0ZXh0IHRoYW4geW91IGluc2VydC4gIEluIHRoYXQgY2FzZSBhbGwgb2YgdGhlIHRleHQgdGhh
dCB3YXMgYXJvdW5kIG9yaWdpbmFsbHkgc2hvdWxkIGJlIHNlbGVjdGVkLgogICAgIGlmIChtX29w
ZW5lZEJ5QmFja3dhcmREZWxldGUpCiAgICAgICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKHNlbGVj
dGlvbkFmdGVyVW5kbyk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGggPSBlbmRP
ZlBhcmFncmFwaChzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSkubmV4dCgpOwogICAgIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oc2VsZWN0aW9uVG9EZWxldGUsIG1fc21hcnRE
ZWxldGUpOworICAgIG1lcmdlQWRqYWNlbnRMaXN0cyhzZWxlY3Rpb25Ub0RlbGV0ZS52aXNpYmxl
U3RhcnQoKSwgbmV4dFBhcmFncmFwaCk7CiAgICAgc2V0U21hcnREZWxldGUoZmFsc2UpOwogICAg
IHR5cGluZ0FkZGVkVG9PcGVuQ29tbWFuZChEZWxldGVLZXkpOwogfQpAQCAtNTgzLDcgKzU5Niw5
IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGtpCiAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCkt
PmVkaXRvcigpLT5hZGRUb0tpbGxSaW5nKHNlbGVjdGlvblRvRGVsZXRlLnRvTm9ybWFsaXplZFJh
bmdlKCkuZ2V0KCksIGZhbHNlKTsKICAgICAvLyBtYWtlIHVuZG8gc2VsZWN0IHdoYXQgd2FzIGRl
bGV0ZWQKICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihzZWxlY3Rpb25BZnRlclVuZG8pOworICAg
IFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoID0gZW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9u
VG9EZWxldGUuZW5kKCkpLm5leHQoKTsKICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRl
U2VsZWN0aW9uKHNlbGVjdGlvblRvRGVsZXRlLCBtX3NtYXJ0RGVsZXRlKTsKKyAgICBtZXJnZUFk
amFjZW50TGlzdHMoc2VsZWN0aW9uVG9EZWxldGUudmlzaWJsZVN0YXJ0KCksIG5leHRQYXJhZ3Jh
cGgpOwogICAgIHNldFNtYXJ0RGVsZXRlKGZhbHNlKTsKICAgICB0eXBpbmdBZGRlZFRvT3BlbkNv
bW1hbmQoRm9yd2FyZERlbGV0ZUtleSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcv
VHlwaW5nQ29tbWFuZC5oIGIvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaAppbmRleCA3
Yzg5YTdjLi4wZDBkZTdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKQEAgLTg1LDYgKzg1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZygpOwogICAg
IHZvaWQgdHlwaW5nQWRkZWRUb09wZW5Db21tYW5kKEVUeXBpbmdDb21tYW5kKTsKICAgICBib29s
IG1ha2VFZGl0YWJsZVJvb3RFbXB0eSgpOworICAgIHZvaWQgbWVyZ2VBZGphY2VudExpc3RzKFZp
c2libGVQb3NpdGlvbiBzdGFydCwgVmlzaWJsZVBvc2l0aW9uIGVuZCk7CiAgICAgCiAgICAgRVR5
cGluZ0NvbW1hbmQgbV9jb21tYW5kVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0VG9JbnNlcnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50193</attachid>
            <date>2010-03-08 00:05:32 -0800</date>
            <delta_ts>2010-03-22 19:02:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35281-20100308170530.patch</filename>
            <type>text/plain</type>
            <size>4551</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NjI4NDQwOC4uYjg1NTBkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wMy0wOCAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIHdoZW4gZGVsZXRpbmcgbGluZXMgYmV0d2VlbiBsaXN0cywgd2Ugc2hvdWxk
IHRyeSB0byBtZXJnZSB0aGUgbGlzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM1MjgxCisKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpjbGVh
bnVwQWZ0ZXJEZWxldGlvbik6CisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6dHJ5SW5kZW50
aW5nQXNMaXN0SXRlbSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAg
ICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0Nv
bW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorCiAyMDEwLTAzLTA3ICBNYXJrIFJvd2UgIDxtcm93
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hyb21pdW0gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZTliNjk3MS4uYWNmNmM1NCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC04MDcsOCArODA3LDE1IEBA
IHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKCkKICAgICAg
ICAgUG9zaXRpb24gcG9zaXRpb24gPSBjYXJldEFmdGVyRGVsZXRlLmRlZXBFcXVpdmFsZW50KCku
ZG93bnN0cmVhbSgpOwogICAgICAgICBOb2RlKiBub2RlID0gcG9zaXRpb24ubm9kZSgpOwogICAg
ICAgICAvLyBOb3JtYWxseSBkZWxldGlvbiB3aWxsIGxlYXZlIGEgYnIgYXMgYSBwbGFjZWhvbGRl
ci4KLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpKQorICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShiclRhZykpIHsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBiZWZv
cmVQbGFjZWhvbGRlciA9IGNhcmV0QWZ0ZXJEZWxldGUucHJldmlvdXModHJ1ZSk7CisgICAgICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJQbGFjZWhvbGRlciA9IGNhcmV0QWZ0ZXJEZWxldGUu
bmV4dCh0cnVlKTsKICAgICAgICAgICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhub2Rl
KTsKKyAgICAgICAgICAgIEhUTUxFbGVtZW50KiBiZWZvcmUgPSBlbmNsb3NpbmdMaXN0KGJlZm9y
ZVBsYWNlaG9sZGVyLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKKyAgICAgICAgICAgIEhUTUxF
bGVtZW50KiBhZnRlciA9IGVuY2xvc2luZ0xpc3QoYWZ0ZXJQbGFjZWhvbGRlci5kZWVwRXF1aXZh
bGVudCgpLm5vZGUoKSk7CisgICAgICAgICAgICBpZiAoY2FuTWVyZ2VMaXN0cyhiZWZvcmUsIGFm
dGVyKSkKKyAgICAgICAgICAgICAgICBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKGJlZm9yZSwgYWZ0
ZXIpOworICAgICAgICB9CiAgICAgICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gdG8gbW92ZSB3YXMg
ZW1wdHkgYW5kIGluIGFuIGVtcHR5IGJsb2NrIHRoYXQgCiAgICAgICAgIC8vIGRvZXNuJ3QgcmVx
dWlyZSBhIHBsYWNlaG9sZGVyIHRvIHByb3AgaXRzZWxmIG9wZW4gKGxpa2UgYSBib3JkZXJlZAog
ICAgICAgICAvLyBkaXYgb3IgYW4gbGkpLCByZW1vdmUgaXQgZHVyaW5nIHRoZSBtb3ZlICh0aGUg
bGlzdCByZW1vdmFsIGNvZGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3Bw
CmluZGV4IDBmMzk3NWIuLjRlODhjZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbmRl
bnRPdXRkZW50Q29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRD
b21tYW5kLmNwcApAQCAtOTksNiArOTksOCBAQCBib29sIEluZGVudE91dGRlbnRDb21tYW5kOjp0
cnlJbmRlbnRpbmdBc0xpc3RJdGVtKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZDdQogICAg
ICAgICBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKHByZXZpb3VzTGlzdCwgbmV3TGlzdCk7CiAgICAg
aWYgKGNhbk1lcmdlTGlzdHMobmV3TGlzdC5nZXQoKSwgbmV4dExpc3QpKQogICAgICAgICBtZXJn
ZUlkZW50aWNhbEVsZW1lbnRzKG5ld0xpc3QsIG5leHRMaXN0KTsKKyAgICBpZiAoY2FuTWVyZ2VM
aXN0cyhwcmV2aW91c0xpc3QsIG5leHRMaXN0KSkKKyAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVt
ZW50cyhwcmV2aW91c0xpc3QsIG5leHRMaXN0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKaW5kZXggYmViNWQwOC4uYmRhZmI2ZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9p
ZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICAgICAgc3RhcnQgPSBz
dGFydE9mUGFyYWdyYXBoKG9yaWdpbmFsU3RhcnQpOwogICAgICAgICB9CiAgICAgICAgIG1vdmVQ
YXJhZ3JhcGgoc3RhcnQsIGVuZCwgVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKHBsYWNlaG9sZGVy
LmdldCgpLCAwKSksIHRydWUpOwotICAgICAgICBpZiAobmV4dExpc3QgJiYgcHJldmlvdXNMaXN0
KQorICAgICAgICBpZiAoY2FuTWVyZ2VMaXN0cyhuZXh0TGlzdCwgcHJldmlvdXNMaXN0KSkKICAg
ICAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMocHJldmlvdXNMaXN0LCBuZXh0TGlzdCk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
IGIvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCmluZGV4IDFjOWRiOTAuLmFhNTg1
ODYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAorKysgYi9X
ZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkluc2VydExpbmVCcmVha0NvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnRQYXJhZ3JhcGhT
ZXBhcmF0b3JDb21tYW5kLmgiCkBAIC01MDMsNyArNTA0LDEyIEBAIHZvaWQgVHlwaW5nQ29tbWFu
ZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wga2ls
bFJpbmcpCiAgICAgLy8gbW9yZSB0ZXh0IHRoYW4geW91IGluc2VydC4gIEluIHRoYXQgY2FzZSBh
bGwgb2YgdGhlIHRleHQgdGhhdCB3YXMgYXJvdW5kIG9yaWdpbmFsbHkgc2hvdWxkIGJlIHNlbGVj
dGVkLgogICAgIGlmIChtX29wZW5lZEJ5QmFja3dhcmREZWxldGUpCiAgICAgICAgIHNldFN0YXJ0
aW5nU2VsZWN0aW9uKHNlbGVjdGlvbkFmdGVyVW5kbyk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5l
eHRQYXJhZ3JhcGggPSBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSkubmV4
dCgpOwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oc2VsZWN0aW9u
VG9EZWxldGUsIG1fc21hcnREZWxldGUpOworICAgIEhUTUxFbGVtZW50KiBiZWZvcmVMaXN0ID0g
ZW5jbG9zaW5nTGlzdChzZWxlY3Rpb25Ub0RlbGV0ZS52aXNpYmxlU3RhcnQoKS5kZWVwRXF1aXZh
bGVudCgpLm5vZGUoKSk7CisgICAgSFRNTEVsZW1lbnQqIGFmdGVyTGlzdCA9IGVuY2xvc2luZ0xp
c3QobmV4dFBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSk7CisgICAgaWYgKGNhbk1l
cmdlTGlzdHMoYmVmb3JlTGlzdCwgYWZ0ZXJMaXN0KSkKKyAgICAgICAgbWVyZ2VJZGVudGljYWxF
bGVtZW50cyhiZWZvcmVMaXN0LCBhZnRlckxpc3QpOwogICAgIHNldFNtYXJ0RGVsZXRlKGZhbHNl
KTsKICAgICB0eXBpbmdBZGRlZFRvT3BlbkNvbW1hbmQoRGVsZXRlS2V5KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51136</attachid>
            <date>2010-03-19 01:28:25 -0700</date>
            <delta_ts>2010-03-22 19:02:19 -0700</delta_ts>
            <desc>fixes canMergeLists</desc>
            <filename>bug35281canmergelists</filename>
            <type>text/plain</type>
            <size>3163</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAkocmV2aXNpb24gNTYxOTYp
CisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICAgICAgICAgICAgICBzdGFydCA9IHN0YXJ0T2ZQYXJh
Z3JhcGgob3JpZ2luYWxTdGFydCk7CiAgICAgICAgIH0KICAgICAgICAgbW92ZVBhcmFncmFwaChz
dGFydCwgZW5kLCBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24ocGxhY2Vob2xkZXIuZ2V0KCksIDAp
KSwgdHJ1ZSk7Ci0gICAgICAgIGlmIChuZXh0TGlzdCAmJiBwcmV2aW91c0xpc3QpCisgICAgICAg
IGlmIChjYW5NZXJnZUxpc3RzKG5leHRMaXN0LCBwcmV2aW91c0xpc3QpKQogICAgICAgICAgICAg
bWVyZ2VJZGVudGljYWxFbGVtZW50cyhwcmV2aW91c0xpc3QsIG5leHRMaXN0KTsKICAgICB9CiB9
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9u
IDU2MTk2KQorKysgV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODA3LDggKzgwNywxNSBAQAogICAgICAgICBQb3NpdGlvbiBwb3NpdGlv
biA9IGNhcmV0QWZ0ZXJEZWxldGUuZGVlcEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCk7CiAgICAg
ICAgIE5vZGUqIG5vZGUgPSBwb3NpdGlvbi5ub2RlKCk7CiAgICAgICAgIC8vIE5vcm1hbGx5IGRl
bGV0aW9uIHdpbGwgbGVhdmUgYSBiciBhcyBhIHBsYWNlaG9sZGVyLgotICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShiclRhZykpCisgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJyVGFn
KSkgeworICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGJlZm9yZVBsYWNlaG9sZGVyID0gY2Fy
ZXRBZnRlckRlbGV0ZS5wcmV2aW91cyh0cnVlKTsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlv
biBhZnRlclBsYWNlaG9sZGVyID0gY2FyZXRBZnRlckRlbGV0ZS5uZXh0KHRydWUpOwogICAgICAg
ICAgICAgcmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKG5vZGUpOworICAgICAgICAgICAgSFRN
TEVsZW1lbnQqIGJlZm9yZSA9IGVuY2xvc2luZ0xpc3QoYmVmb3JlUGxhY2Vob2xkZXIuZGVlcEVx
dWl2YWxlbnQoKS5ub2RlKCkpOworICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGFmdGVyID0gZW5j
bG9zaW5nTGlzdChhZnRlclBsYWNlaG9sZGVyLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKKyAg
ICAgICAgICAgIGlmIChjYW5NZXJnZUxpc3RzKGJlZm9yZSwgYWZ0ZXIpKQorICAgICAgICAgICAg
ICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMoYmVmb3JlLCBhZnRlcik7CisgICAgICAgIH0KICAg
ICAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiB0byBtb3ZlIHdhcyBlbXB0eSBhbmQgaW4gYW4gZW1w
dHkgYmxvY2sgdGhhdCAKICAgICAgICAgLy8gZG9lc24ndCByZXF1aXJlIGEgcGxhY2Vob2xkZXIg
dG8gcHJvcCBpdHNlbGYgb3BlbiAobGlrZSBhIGJvcmRlcmVkCiAgICAgICAgIC8vIGRpdiBvciBh
biBsaSksIHJlbW92ZSBpdCBkdXJpbmcgdGhlIG1vdmUgKHRoZSBsaXN0IHJlbW92YWwgY29kZQpJ
bmRleDogV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCShyZXZpc2lvbiA1
NjE5NikKKysrIFdlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk5LDYgKzk5LDggQEAKICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50
cyhwcmV2aW91c0xpc3QsIG5ld0xpc3QpOwogICAgIGlmIChjYW5NZXJnZUxpc3RzKG5ld0xpc3Qu
Z2V0KCksIG5leHRMaXN0KSkKICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhuZXdMaXN0
LCBuZXh0TGlzdCk7CisgICAgaWYgKGNhbk1lcmdlTGlzdHMocHJldmlvdXNMaXN0LCBuZXh0TGlz
dCkpCisgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMocHJldmlvdXNMaXN0LCBuZXh0TGlz
dCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAko
cmV2aXNpb24gNTYxOTYpCisrKyBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MzAsNiArODMwLDcgQEAKICAgICByZXR1cm4gZmlyc3RMaXN0LT5oYXNU
YWdOYW1lKHNlY29uZExpc3QtPnRhZ1FOYW1lKCkpLy8gbWFrZSBzdXJlIHRoZSBsaXN0IHR5cGVz
IG1hdGNoIChvbCB2cy4gdWwpCiAgICAgJiYgZmlyc3RMaXN0LT5pc0NvbnRlbnRFZGl0YWJsZSgp
ICYmIHNlY29uZExpc3QtPmlzQ29udGVudEVkaXRhYmxlKCkvLyBib3RoIGxpc3RzIGFyZSBlZGl0
YWJsZQogICAgICYmIGZpcnN0TGlzdC0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IHNlY29uZExp
c3QtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKS8vIGRvbid0IGNyb3NzIGVkaXRpbmcgYm91bmRhcmll
cworICAgICYmIGVuY2xvc2luZ0xpc3QoZmlyc3RMaXN0KSA9PSBlbmNsb3NpbmdMaXN0KHNlY29u
ZExpc3QpCiAgICAgJiYgaXNWaXNpYmx5QWRqYWNlbnQocG9zaXRpb25JblBhcmVudEFmdGVyTm9k
ZShmaXJzdExpc3QpLCBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShzZWNvbmRMaXN0KSk7CiAg
ICAgLy8gTWFrZSBzdXJlIHRoZXJlIGlzIG5vIHZpc2libGUgY29udGVudCBiZXR3ZWVuIHRoaXMg
bGkgYW5kIHRoZSBwcmV2aW91cyBsaXN0CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51385</attachid>
            <date>2010-03-22 19:02:25 -0700</date>
            <delta_ts>2010-04-21 02:19:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35281-20100323110223.patch</filename>
            <type>text/plain</type>
            <size>6330</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZjFhZGFhLi5hOTlmMGYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MjIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3aGVuIGRlbGV0aW5nIGxpbmVzIGJldHdlZW4g
bGlzdHMsIHdlIHNob3VsZCB0cnkgdG8gbWVyZ2UgdGhlIGxpc3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTI4MQorCisgICAgICAgICogZWRpdGlu
Zy9kZWxldGluZy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbDogQWRkZWQuCisKIDIwMTAtMDMtMjIgIENz
YWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCBza2lwIG5ldyBmYWlsaW5nIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2RlbGV0aW5nL21lcmdlLWxpc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
ZGVsZXRpbmcvbWVyZ2UtbGlzdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjE3NTQyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL2RlbGV0aW5nL21lcmdlLWxpc3RzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1do
aWxlIG9uIGFuIGVtcHR5IGxpc3QgaXRlbSwgcHJlc3NpbmcgZW50ZXIgc2hvdWxkIGJyZWFrIG91
dCBvZiB0aGUgbGlzdCBhbmQgcHJlc3NpbmcgZGVsZXRlIHNob3VsZCB0aGVuIG1lcmdlIHRoZSB0
d28gbGlzdHMgdG9nZXRoZXIuIFRoZXJlIHNob3VsZCBiZSBhIHNpbmdsZSBsaXN0IGJlbG93IHdp
dGggMyBsaXN0IGl0ZW1zLgorb25lCit0d28KK3RocmVlCitQQVNTOiAKKzxsaT5vbmU8L2xpPgor
PGxpPnR3bzwvbGk+Cis8bGk+dGhyZWU8L2xpPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2RlbGV0aW5nL21lcmdlLWxpc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2Rl
bGV0aW5nL21lcmdlLWxpc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjlkNjI3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvbWVyZ2UtbGlzdHMuaHRtbApAQCAtMCwwICsxLDIzIEBACis8Ym9keSBjb250ZW50RWRpdGFi
bGU9InRydWUiPgorPGRpdj5XaGlsZSBvbiBhbiBlbXB0eSBsaXN0IGl0ZW0sIHByZXNzaW5nIGVu
dGVyIHNob3VsZCBicmVhayBvdXQgb2YgdGhlIGxpc3QgYW5kIHByZXNzaW5nIGRlbGV0ZQorc2hv
dWxkIHRoZW4gbWVyZ2UgdGhlIHR3byBsaXN0cyB0b2dldGhlci4gIFRoZXJlIHNob3VsZCBiZSBh
IHNpbmdsZSBsaXN0IGJlbG93IHdpdGggMyBsaXN0IGl0ZW1zLgorPHVsIGlkPSJ1bCI+CisgIDxs
aT5vbmU8L2xpPgorICA8bGk+dHdvPC9saT4KKyAgPGxpIGlkPSJ0ZXN0Ij48L2xpPgorICA8bGk+
dGhyZWU8L2xpPgorPC91bD4KKzxkaXYgaWQ9InJlc3VsdHMiPkZBSUw8L2Rpdj4KKzxzY3JpcHQg
c3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBlZGl0aW5n
VGVzdCgpCit7CisgICAgZXhlY1R5cGVDaGFyYWN0ZXJDb21tYW5kKCJcbiIpOworICAgIGV4ZWNE
ZWxldGVDb21tYW5kKCk7CisgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ1
bCIpLmxlbmd0aCAhPSAxKQorICAgICAgICB0aHJvdyAiV3JvbmcgbnVtYmVyIG9mIGxpc3RzLiIK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVyVGV4dCA9ICJQQVNT
OiAiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVsIikuaW5uZXJIVE1MOworfQorCitydW5E
dW1wQXNUZXh0RWRpdGluZ1Rlc3QoZmFsc2UpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZmMzNmNjAuLjJhNDllMDIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMjIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3aGVu
IGRlbGV0aW5nIGxpbmVzIGJldHdlZW4gbGlzdHMsIHdlIHNob3VsZCB0cnkgdG8gbWVyZ2UgdGhl
IGxpc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NTI4MQorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbAor
CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24pOiB0cnkg
dG8gbWVyZ2UgYWRqYWNlbnQgbGlzdHMgYWZ0ZXIgYSBkZWxldGlvbgorICAgICAgICAqIGVkaXRp
bmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5kZW50T3V0
ZGVudENvbW1hbmQ6OnRyeUluZGVudGluZ0FzTGlzdEl0ZW0pOgorICAgICAgICAqIGVkaXRpbmcv
SW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGlzdENvbW1h
bmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FuTWVyZ2VMaXN0cyk6CisKIDIwMTAtMDMtMjIgIERhcmluIEZpc2hlciAg
PGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCBmZmY3NmE2Li5h
YTkzMDk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTgw
Nyw4ICs4MDcsMTUgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVs
ZXRpb24oKQogICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IGNhcmV0QWZ0ZXJEZWxldGUuZGVl
cEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCk7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBwb3NpdGlv
bi5ub2RlKCk7CiAgICAgICAgIC8vIE5vcm1hbGx5IGRlbGV0aW9uIHdpbGwgbGVhdmUgYSBiciBh
cyBhIHBsYWNlaG9sZGVyLgotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShiclRhZykpCisg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSkgeworICAgICAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIGJlZm9yZVBsYWNlaG9sZGVyID0gY2FyZXRBZnRlckRlbGV0ZS5wcmV2aW91cyh0
cnVlKTsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBhZnRlclBsYWNlaG9sZGVyID0gY2Fy
ZXRBZnRlckRlbGV0ZS5uZXh0KHRydWUpOwogICAgICAgICAgICAgcmVtb3ZlTm9kZUFuZFBydW5l
QW5jZXN0b3JzKG5vZGUpOworICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGJlZm9yZSA9IGVuY2xv
c2luZ0xpc3QoYmVmb3JlUGxhY2Vob2xkZXIuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOworICAg
ICAgICAgICAgSFRNTEVsZW1lbnQqIGFmdGVyID0gZW5jbG9zaW5nTGlzdChhZnRlclBsYWNlaG9s
ZGVyLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChjYW5NZXJnZUxp
c3RzKGJlZm9yZSwgYWZ0ZXIpKQorICAgICAgICAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVu
dHMoYmVmb3JlLCBhZnRlcik7CisgICAgICAgIH0KICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGlv
biB0byBtb3ZlIHdhcyBlbXB0eSBhbmQgaW4gYW4gZW1wdHkgYmxvY2sgdGhhdCAKICAgICAgICAg
Ly8gZG9lc24ndCByZXF1aXJlIGEgcGxhY2Vob2xkZXIgdG8gcHJvcCBpdHNlbGYgb3BlbiAobGlr
ZSBhIGJvcmRlcmVkCiAgICAgICAgIC8vIGRpdiBvciBhbiBsaSksIHJlbW92ZSBpdCBkdXJpbmcg
dGhlIG1vdmUgKHRoZSBsaXN0IHJlbW92YWwgY29kZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHAKaW5kZXggMGYzOTc1Yi4uNGU4OGNkMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
SW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCkBAIC05OSw2ICs5OSw4IEBAIGJvb2wgSW5kZW50T3V0
ZGVudENvbW1hbmQ6OnRyeUluZGVudGluZ0FzTGlzdEl0ZW0oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBlbmRPZkN1CiAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMocHJldmlvdXNMaXN0LCBu
ZXdMaXN0KTsKICAgICBpZiAoY2FuTWVyZ2VMaXN0cyhuZXdMaXN0LmdldCgpLCBuZXh0TGlzdCkp
CiAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMobmV3TGlzdCwgbmV4dExpc3QpOworICAg
IGlmIChjYW5NZXJnZUxpc3RzKHByZXZpb3VzTGlzdCwgbmV4dExpc3QpKQorICAgICAgICBtZXJn
ZUlkZW50aWNhbEVsZW1lbnRzKHByZXZpb3VzTGlzdCwgbmV4dExpc3QpOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQu
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAppbmRleCBiZWI1ZDA4
Li5iZGFmYjZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQu
Y3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKQEAgLTI2MSw3
ICsyNjEsNyBAQCB2b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAg
ICAgICBzdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgob3JpZ2luYWxTdGFydCk7CiAgICAgICAgIH0K
ICAgICAgICAgbW92ZVBhcmFncmFwaChzdGFydCwgZW5kLCBWaXNpYmxlUG9zaXRpb24oUG9zaXRp
b24ocGxhY2Vob2xkZXIuZ2V0KCksIDApKSwgdHJ1ZSk7Ci0gICAgICAgIGlmIChuZXh0TGlzdCAm
JiBwcmV2aW91c0xpc3QpCisgICAgICAgIGlmIChjYW5NZXJnZUxpc3RzKG5leHRMaXN0LCBwcmV2
aW91c0xpc3QpKQogICAgICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhwcmV2aW91c0xp
c3QsIG5leHRMaXN0KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaHRt
bGVkaXRpbmcuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA3MTI3
NTM1Li5lM2I4Yzk4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
CisrKyBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTgzMCw2ICs4MzAsNyBA
QCBib29sIGNhbk1lcmdlTGlzdHMoRWxlbWVudCogZmlyc3RMaXN0LCBFbGVtZW50KiBzZWNvbmRM
aXN0KQogICAgIHJldHVybiBmaXJzdExpc3QtPmhhc1RhZ05hbWUoc2Vjb25kTGlzdC0+dGFnUU5h
bWUoKSkvLyBtYWtlIHN1cmUgdGhlIGxpc3QgdHlwZXMgbWF0Y2ggKG9sIHZzLiB1bCkKICAgICAm
JiBmaXJzdExpc3QtPmlzQ29udGVudEVkaXRhYmxlKCkgJiYgc2Vjb25kTGlzdC0+aXNDb250ZW50
RWRpdGFibGUoKS8vIGJvdGggbGlzdHMgYXJlIGVkaXRhYmxlCiAgICAgJiYgZmlyc3RMaXN0LT5y
b290RWRpdGFibGVFbGVtZW50KCkgPT0gc2Vjb25kTGlzdC0+cm9vdEVkaXRhYmxlRWxlbWVudCgp
Ly8gZG9uJ3QgY3Jvc3MgZWRpdGluZyBib3VuZGFyaWVzCisgICAgJiYgZW5jbG9zaW5nTGlzdChm
aXJzdExpc3QpID09IGVuY2xvc2luZ0xpc3Qoc2Vjb25kTGlzdCkKICAgICAmJiBpc1Zpc2libHlB
ZGphY2VudChwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGZpcnN0TGlzdCksIHBvc2l0aW9uSW5Q
YXJlbnRCZWZvcmVOb2RlKHNlY29uZExpc3QpKTsKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMg
bm8gdmlzaWJsZSBjb250ZW50IGJldHdlZW4gdGhpcyBsaSBhbmQgdGhlIHByZXZpb3VzIGxpc3QK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53932</attachid>
            <date>2010-04-21 02:19:50 -0700</date>
            <delta_ts>2010-04-25 17:59:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35281-20100421181948.patch</filename>
            <type>text/plain</type>
            <size>5677</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NGFlNWY1Li5mYzI3ZWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MjIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3aGVuIGRlbGV0aW5nIGxpbmVzIGJldHdlZW4g
bGlzdHMsIHdlIHNob3VsZCB0cnkgdG8gbWVyZ2UgdGhlIGxpc3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTI4MQorCisgICAgICAgICogZWRpdGlu
Zy9kZWxldGluZy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbDogQWRkZWQuCisKIDIwMTAtMDQtMjAgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNp
ZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNzExYmQxNi4uYTc2NWU2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0y
MiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdoZW4gZGVsZXRpbmcgbGluZXMgYmV0d2VlbiBs
aXN0cywgd2Ugc2hvdWxkIHRyeSB0byBtZXJnZSB0aGUgbGlzdHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjgxCisKKyAgICAgICAgVGVzdDogZWRp
dGluZy9kZWxldGluZy9tZXJnZS1saXN0cy5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21t
YW5kOjpjbGVhbnVwQWZ0ZXJEZWxldGlvbik6IHRyeSB0byBtZXJnZSBhZGphY2VudCBsaXN0cyBh
ZnRlciBhIGRlbGV0aW9uCisgICAgICAgICogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmRlbnRPdXRkZW50Q29tbWFuZDo6dHJ5SW5kZW50aW5n
QXNMaXN0SXRlbSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICog
ZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5NZXJnZUxpc3Rz
KToKKwogMjAxMC0wNC0yMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBKdXN0aW4gR2FyY2lhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKaW5kZXggZmZmNzZhNi4uYWE5MzA5NyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC04MDcsOCArODA3LDE1IEBAIHZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKCkKICAgICAgICAgUG9zaXRpb24g
cG9zaXRpb24gPSBjYXJldEFmdGVyRGVsZXRlLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgp
OwogICAgICAgICBOb2RlKiBub2RlID0gcG9zaXRpb24ubm9kZSgpOwogICAgICAgICAvLyBOb3Jt
YWxseSBkZWxldGlvbiB3aWxsIGxlYXZlIGEgYnIgYXMgYSBwbGFjZWhvbGRlci4KLSAgICAgICAg
aWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpKQorICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFt
ZShiclRhZykpIHsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBiZWZvcmVQbGFjZWhvbGRl
ciA9IGNhcmV0QWZ0ZXJEZWxldGUucHJldmlvdXModHJ1ZSk7CisgICAgICAgICAgICBWaXNpYmxl
UG9zaXRpb24gYWZ0ZXJQbGFjZWhvbGRlciA9IGNhcmV0QWZ0ZXJEZWxldGUubmV4dCh0cnVlKTsK
ICAgICAgICAgICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhub2RlKTsKKyAgICAgICAg
ICAgIEhUTUxFbGVtZW50KiBiZWZvcmUgPSBlbmNsb3NpbmdMaXN0KGJlZm9yZVBsYWNlaG9sZGVy
LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKKyAgICAgICAgICAgIEhUTUxFbGVtZW50KiBhZnRl
ciA9IGVuY2xvc2luZ0xpc3QoYWZ0ZXJQbGFjZWhvbGRlci5kZWVwRXF1aXZhbGVudCgpLm5vZGUo
KSk7CisgICAgICAgICAgICBpZiAoY2FuTWVyZ2VMaXN0cyhiZWZvcmUsIGFmdGVyKSkKKyAgICAg
ICAgICAgICAgICBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKGJlZm9yZSwgYWZ0ZXIpOworICAgICAg
ICB9CiAgICAgICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gdG8gbW92ZSB3YXMgZW1wdHkgYW5kIGlu
IGFuIGVtcHR5IGJsb2NrIHRoYXQgCiAgICAgICAgIC8vIGRvZXNuJ3QgcmVxdWlyZSBhIHBsYWNl
aG9sZGVyIHRvIHByb3AgaXRzZWxmIG9wZW4gKGxpa2UgYSBib3JkZXJlZAogICAgICAgICAvLyBk
aXYgb3IgYW4gbGkpLCByZW1vdmUgaXQgZHVyaW5nIHRoZSBtb3ZlICh0aGUgbGlzdCByZW1vdmFs
IGNvZGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29tbWFuZC5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvSW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCmluZGV4IDBmMzk3
NWIuLjRlODhjZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRkZW50Q29t
bWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcApA
QCAtOTksNiArOTksOCBAQCBib29sIEluZGVudE91dGRlbnRDb21tYW5kOjp0cnlJbmRlbnRpbmdB
c0xpc3RJdGVtKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgZW5kT2ZDdQogICAgICAgICBtZXJnZUlk
ZW50aWNhbEVsZW1lbnRzKHByZXZpb3VzTGlzdCwgbmV3TGlzdCk7CiAgICAgaWYgKGNhbk1lcmdl
TGlzdHMobmV3TGlzdC5nZXQoKSwgbmV4dExpc3QpKQogICAgICAgICBtZXJnZUlkZW50aWNhbEVs
ZW1lbnRzKG5ld0xpc3QsIG5leHRMaXN0KTsKKyAgICBpZiAoY2FuTWVyZ2VMaXN0cyhwcmV2aW91
c0xpc3QsIG5leHRMaXN0KSkKKyAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhwcmV2aW91
c0xpc3QsIG5leHRMaXN0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9JbnNl
cnRMaXN0Q29tbWFuZC5jcHAKaW5kZXggY2Q2ODM4Yi4uMmYzZjYzOCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBJbnNlcnRMaXN0
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgTm9kZSogbGlzdENoaWxkTm9kZSA9IGVuY2xvc2luZ0xp
c3RDaGlsZChzZWxlY3Rpb25Ob2RlKTsKICAgICBib29sIHN3aXRjaExpc3RUeXBlID0gZmFsc2U7
CiAgICAgaWYgKGxpc3RDaGlsZE5vZGUpIHsKLSAgICAgICAgLy8gUmVtb3ZlIHRoZSBsaXN0IGNo
bGlsZC4KKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBsaXN0IGNoaWxkLgogICAgICAgICBIVE1MRWxl
bWVudCogbGlzdE5vZGUgPSBlbmNsb3NpbmdMaXN0KGxpc3RDaGlsZE5vZGUpOwogICAgICAgICBp
ZiAoIWxpc3ROb2RlKQogICAgICAgICAgICAgbGlzdE5vZGUgPSBmaXhPcnBoYW5lZExpc3RDaGls
ZChsaXN0Q2hpbGROb2RlKTsKQEAgLTI2MywxMiArMjYzLDEyIEBAIHZvaWQgSW5zZXJ0TGlzdENv
bW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgbmV4dExpc3QgPSBvdXRlcm1vc3RFbmNsb3Np
bmdMaXN0KG5leHRQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSwgZW5jbG9zaW5nTGlz
dChsaXN0RWxlbWVudC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgICAgIG1vdmVQYXJhZ3JhcGgo
c3RhcnQsIGVuZCwgVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKHBsYWNlaG9sZGVyLmdldCgpLCAw
KSksIHRydWUpOwotICAgICAgICBpZiAobV9saXN0RWxlbWVudCkgeworICAgICAgICBpZiAobV9s
aXN0RWxlbWVudCAmJiBtX2xpc3RFbGVtZW50LT5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgICAg
IGlmIChjYW5NZXJnZUxpc3RzKHByZXZpb3VzTGlzdCwgbV9saXN0RWxlbWVudC5nZXQoKSkpCiAg
ICAgICAgICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhwcmV2aW91c0xpc3QsIG1fbGlz
dEVsZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKGNhbk1lcmdlTGlzdHMobV9saXN0RWxl
bWVudC5nZXQoKSwgbmV4dExpc3QpKQogICAgICAgICAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxl
bWVudHMobV9saXN0RWxlbWVudC5nZXQoKSwgbmV4dExpc3QpOwotICAgICAgICB9IGVsc2UgaWYg
KGNhbk1lcmdlTGlzdHMobmV4dExpc3QsIHByZXZpb3VzTGlzdCkpCisgICAgICAgIH0gZWxzZSBp
ZiAoY2FuTWVyZ2VMaXN0cyhwcmV2aW91c0xpc3QsIG5leHRMaXN0KSkKICAgICAgICAgICAgIG1l
cmdlSWRlbnRpY2FsRWxlbWVudHMocHJldmlvdXNMaXN0LCBuZXh0TGlzdCk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggYjdhMDYyYi4uYmZiZjkyOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvaHRt
bGVkaXRpbmcuY3BwCkBAIC04MzUsNiArODM1LDcgQEAgYm9vbCBjYW5NZXJnZUxpc3RzKEVsZW1l
bnQqIGZpcnN0TGlzdCwgRWxlbWVudCogc2Vjb25kTGlzdCkKICAgICByZXR1cm4gZmlyc3RMaXN0
LT5oYXNUYWdOYW1lKHNlY29uZExpc3QtPnRhZ1FOYW1lKCkpLy8gbWFrZSBzdXJlIHRoZSBsaXN0
IHR5cGVzIG1hdGNoIChvbCB2cy4gdWwpCiAgICAgJiYgZmlyc3RMaXN0LT5pc0NvbnRlbnRFZGl0
YWJsZSgpICYmIHNlY29uZExpc3QtPmlzQ29udGVudEVkaXRhYmxlKCkvLyBib3RoIGxpc3RzIGFy
ZSBlZGl0YWJsZQogICAgICYmIGZpcnN0TGlzdC0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IHNl
Y29uZExpc3QtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKS8vIGRvbid0IGNyb3NzIGVkaXRpbmcgYm91
bmRhcmllcworICAgICYmIGVuY2xvc2luZ0xpc3QoZmlyc3RMaXN0KSA9PSBlbmNsb3NpbmdMaXN0
KHNlY29uZExpc3QpCiAgICAgJiYgaXNWaXNpYmx5QWRqYWNlbnQocG9zaXRpb25JblBhcmVudEFm
dGVyTm9kZShmaXJzdExpc3QpLCBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShzZWNvbmRMaXN0
KSk7CiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGlzIG5vIHZpc2libGUgY29udGVudCBiZXR3ZWVu
IHRoaXMgbGkgYW5kIHRoZSBwcmV2aW91cyBsaXN0CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54248</attachid>
            <date>2010-04-25 17:59:52 -0700</date>
            <delta_ts>2010-10-01 15:40:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35281-20100426095950.patch</filename>
            <type>text/plain</type>
            <size>7175</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MWE0ZTUwLi42NjA1ODg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQt
MjUgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3aGVuIGRlbGV0aW5nIGxpbmVzIGJldHdlZW4g
bGlzdHMsIHdlIHNob3VsZCB0cnkgdG8gbWVyZ2UgdGhlIGxpc3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTI4MQorCisgICAgICAgICogZWRpdGlu
Zy9kZWxldGluZy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbDogQWRkZWQuCisKIDIwMTAtMDQtMjUgIEFu
ZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9t
ZXJnZS1saXN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL21l
cmdlLWxpc3RzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4xNzU0MjUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGlu
Zy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitXaGlsZSBvbiBhbiBl
bXB0eSBsaXN0IGl0ZW0sIHByZXNzaW5nIGVudGVyIHNob3VsZCBicmVhayBvdXQgb2YgdGhlIGxp
c3QgYW5kIHByZXNzaW5nIGRlbGV0ZSBzaG91bGQgdGhlbiBtZXJnZSB0aGUgdHdvIGxpc3RzIHRv
Z2V0aGVyLiBUaGVyZSBzaG91bGQgYmUgYSBzaW5nbGUgbGlzdCBiZWxvdyB3aXRoIDMgbGlzdCBp
dGVtcy4KK29uZQordHdvCit0aHJlZQorUEFTUzogCis8bGk+b25lPC9saT4KKzxsaT50d288L2xp
PgorPGxpPnRocmVlPC9saT4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxl
dGluZy9tZXJnZS1saXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9tZXJn
ZS1saXN0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZDYyNzQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL21lcmdlLWxp
c3RzLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPGJvZHkgY29udGVudEVkaXRhYmxlPSJ0cnVlIj4K
KzxkaXY+V2hpbGUgb24gYW4gZW1wdHkgbGlzdCBpdGVtLCBwcmVzc2luZyBlbnRlciBzaG91bGQg
YnJlYWsgb3V0IG9mIHRoZSBsaXN0IGFuZCBwcmVzc2luZyBkZWxldGUKK3Nob3VsZCB0aGVuIG1l
cmdlIHRoZSB0d28gbGlzdHMgdG9nZXRoZXIuICBUaGVyZSBzaG91bGQgYmUgYSBzaW5nbGUgbGlz
dCBiZWxvdyB3aXRoIDMgbGlzdCBpdGVtcy4KKzx1bCBpZD0idWwiPgorICA8bGk+b25lPC9saT4K
KyAgPGxpPnR3bzwvbGk+CisgIDxsaSBpZD0idGVzdCI+PC9saT4KKyAgPGxpPnRocmVlPC9saT4K
KzwvdWw+Cis8ZGl2IGlkPSJyZXN1bHRzIj5GQUlMPC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vZWRp
dGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gZWRpdGluZ1Rlc3QoKQorewor
ICAgIGV4ZWNUeXBlQ2hhcmFjdGVyQ29tbWFuZCgiXG4iKTsKKyAgICBleGVjRGVsZXRlQ29tbWFu
ZCgpOworICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidWwiKS5sZW5ndGgg
IT0gMSkKKyAgICAgICAgdGhyb3cgIldyb25nIG51bWJlciBvZiBsaXN0cy4iCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5pbm5lclRleHQgPSAiUEFTUzogIiArIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ1bCIpLmlubmVySFRNTDsKK30KKworcnVuRHVtcEFzVGV4dEVk
aXRpbmdUZXN0KGZhbHNlKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMzI5ZmMyLi5mMTFmODAzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEwLTA0LTI1ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2hlbiBkZWxldGluZyBs
aW5lcyBiZXR3ZWVuIGxpc3RzLCB3ZSBzaG91bGQgdHJ5IHRvIG1lcmdlIHRoZSBsaXN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzUyODEKKworICAg
ICAgICBUZXN0OiBlZGl0aW5nL2RlbGV0aW5nL21lcmdlLWxpc3RzLmh0bWwKKworICAgICAgICAq
IGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlRWRpdENvbW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKTogdHJ5IHRvIG1lcmdlIGFk
amFjZW50IGxpc3RzIGFmdGVyIGEgZGVsZXRpb24KKyAgICAgICAgKiBlZGl0aW5nL0luZGVudE91
dGRlbnRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluZGVudE91dGRlbnRDb21tYW5k
Ojp0cnlJbmRlbnRpbmdBc0xpc3RJdGVtKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpc3RD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5
KToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhbk1lcmdlTGlzdHMpOgorCiAyMDEwLTA0LTI1ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDlkYzkxOGQuLjY4MTE1NjMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtODA3LDggKzgwNywx
NSBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpjbGVhbnVwQWZ0ZXJEZWxldGlvbigpCiAg
ICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gY2FyZXRBZnRlckRlbGV0ZS5kZWVwRXF1aXZhbGVu
dCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLm5vZGUoKTsK
ICAgICAgICAgLy8gTm9ybWFsbHkgZGVsZXRpb24gd2lsbCBsZWF2ZSBhIGJyIGFzIGEgcGxhY2Vo
b2xkZXIuCi0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSkKKyAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpKSB7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24g
YmVmb3JlUGxhY2Vob2xkZXIgPSBjYXJldEFmdGVyRGVsZXRlLnByZXZpb3VzKHRydWUpOworICAg
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGFmdGVyUGxhY2Vob2xkZXIgPSBjYXJldEFmdGVyRGVs
ZXRlLm5leHQodHJ1ZSk7CiAgICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMo
bm9kZSk7CisgICAgICAgICAgICBIVE1MRWxlbWVudCogYmVmb3JlID0gZW5jbG9zaW5nTGlzdChi
ZWZvcmVQbGFjZWhvbGRlci5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSk7CisgICAgICAgICAgICBI
VE1MRWxlbWVudCogYWZ0ZXIgPSBlbmNsb3NpbmdMaXN0KGFmdGVyUGxhY2Vob2xkZXIuZGVlcEVx
dWl2YWxlbnQoKS5ub2RlKCkpOworICAgICAgICAgICAgaWYgKGNhbk1lcmdlTGlzdHMoYmVmb3Jl
LCBhZnRlcikpCisgICAgICAgICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhiZWZvcmUs
IGFmdGVyKTsKKyAgICAgICAgfQogICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIHRvIG1vdmUg
d2FzIGVtcHR5IGFuZCBpbiBhbiBlbXB0eSBibG9jayB0aGF0IAogICAgICAgICAvLyBkb2Vzbid0
IHJlcXVpcmUgYSBwbGFjZWhvbGRlciB0byBwcm9wIGl0c2VsZiBvcGVuIChsaWtlIGEgYm9yZGVy
ZWQKICAgICAgICAgLy8gZGl2IG9yIGFuIGxpKSwgcmVtb3ZlIGl0IGR1cmluZyB0aGUgbW92ZSAo
dGhlIGxpc3QgcmVtb3ZhbCBjb2RlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvSW5kZW50
T3V0ZGVudENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5k
LmNwcAppbmRleCAwZjM5NzViLi40ZTg4Y2QyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcv
SW5kZW50T3V0ZGVudENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9JbmRlbnRPdXRk
ZW50Q29tbWFuZC5jcHAKQEAgLTk5LDYgKzk5LDggQEAgYm9vbCBJbmRlbnRPdXRkZW50Q29tbWFu
ZDo6dHJ5SW5kZW50aW5nQXNMaXN0SXRlbShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZE9mQ3UK
ICAgICAgICAgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhwcmV2aW91c0xpc3QsIG5ld0xpc3QpOwog
ICAgIGlmIChjYW5NZXJnZUxpc3RzKG5ld0xpc3QuZ2V0KCksIG5leHRMaXN0KSkKICAgICAgICAg
bWVyZ2VJZGVudGljYWxFbGVtZW50cyhuZXdMaXN0LCBuZXh0TGlzdCk7CisgICAgaWYgKGNhbk1l
cmdlTGlzdHMocHJldmlvdXNMaXN0LCBuZXh0TGlzdCkpCisgICAgICAgIG1lcmdlSWRlbnRpY2Fs
RWxlbWVudHMocHJldmlvdXNMaXN0LCBuZXh0TGlzdCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAgYi9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4IGNkNjgzOGIuLjJmM2Y2Mzgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKKysrIGIv
V2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBA
IHZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQogICAgIE5vZGUqIGxpc3RDaGlsZE5v
ZGUgPSBlbmNsb3NpbmdMaXN0Q2hpbGQoc2VsZWN0aW9uTm9kZSk7CiAgICAgYm9vbCBzd2l0Y2hM
aXN0VHlwZSA9IGZhbHNlOwogICAgIGlmIChsaXN0Q2hpbGROb2RlKSB7Ci0gICAgICAgIC8vIFJl
bW92ZSB0aGUgbGlzdCBjaGxpbGQuCisgICAgICAgIC8vIFJlbW92ZSB0aGUgbGlzdCBjaGlsZC4K
ICAgICAgICAgSFRNTEVsZW1lbnQqIGxpc3ROb2RlID0gZW5jbG9zaW5nTGlzdChsaXN0Q2hpbGRO
b2RlKTsKICAgICAgICAgaWYgKCFsaXN0Tm9kZSkKICAgICAgICAgICAgIGxpc3ROb2RlID0gZml4
T3JwaGFuZWRMaXN0Q2hpbGQobGlzdENoaWxkTm9kZSk7CkBAIC0yNjMsMTIgKzI2MywxMiBAQCB2
b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgIG5leHRMaXN0ID0g
b3V0ZXJtb3N0RW5jbG9zaW5nTGlzdChuZXh0UG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2Rl
KCksIGVuY2xvc2luZ0xpc3QobGlzdEVsZW1lbnQuZ2V0KCkpKTsKICAgICAgICAgfQogICAgICAg
ICBtb3ZlUGFyYWdyYXBoKHN0YXJ0LCBlbmQsIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihwbGFj
ZWhvbGRlci5nZXQoKSwgMCkpLCB0cnVlKTsKLSAgICAgICAgaWYgKG1fbGlzdEVsZW1lbnQpIHsK
KyAgICAgICAgaWYgKG1fbGlzdEVsZW1lbnQgJiYgbV9saXN0RWxlbWVudC0+aW5Eb2N1bWVudCgp
KSB7CiAgICAgICAgICAgICBpZiAoY2FuTWVyZ2VMaXN0cyhwcmV2aW91c0xpc3QsIG1fbGlzdEVs
ZW1lbnQuZ2V0KCkpKQogICAgICAgICAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMocHJl
dmlvdXNMaXN0LCBtX2xpc3RFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmIChjYW5NZXJn
ZUxpc3RzKG1fbGlzdEVsZW1lbnQuZ2V0KCksIG5leHRMaXN0KSkKICAgICAgICAgICAgICAgICBt
ZXJnZUlkZW50aWNhbEVsZW1lbnRzKG1fbGlzdEVsZW1lbnQuZ2V0KCksIG5leHRMaXN0KTsKLSAg
ICAgICAgfSBlbHNlIGlmIChjYW5NZXJnZUxpc3RzKG5leHRMaXN0LCBwcmV2aW91c0xpc3QpKQor
ICAgICAgICB9IGVsc2UgaWYgKGNhbk1lcmdlTGlzdHMocHJldmlvdXNMaXN0LCBuZXh0TGlzdCkp
CiAgICAgICAgICAgICBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKHByZXZpb3VzTGlzdCwgbmV4dExp
c3QpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5j
cHAgYi9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IGI3YTA2MmIuLmJmYmY5
MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcApAQCAtODM1LDYgKzgzNSw3IEBAIGJvb2wgY2Fu
TWVyZ2VMaXN0cyhFbGVtZW50KiBmaXJzdExpc3QsIEVsZW1lbnQqIHNlY29uZExpc3QpCiAgICAg
cmV0dXJuIGZpcnN0TGlzdC0+aGFzVGFnTmFtZShzZWNvbmRMaXN0LT50YWdRTmFtZSgpKS8vIG1h
a2Ugc3VyZSB0aGUgbGlzdCB0eXBlcyBtYXRjaCAob2wgdnMuIHVsKQogICAgICYmIGZpcnN0TGlz
dC0+aXNDb250ZW50RWRpdGFibGUoKSAmJiBzZWNvbmRMaXN0LT5pc0NvbnRlbnRFZGl0YWJsZSgp
Ly8gYm90aCBsaXN0cyBhcmUgZWRpdGFibGUKICAgICAmJiBmaXJzdExpc3QtPnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKSA9PSBzZWNvbmRMaXN0LT5yb290RWRpdGFibGVFbGVtZW50KCkvLyBkb24ndCBj
cm9zcyBlZGl0aW5nIGJvdW5kYXJpZXMKKyAgICAmJiBlbmNsb3NpbmdMaXN0KGZpcnN0TGlzdCkg
PT0gZW5jbG9zaW5nTGlzdChzZWNvbmRMaXN0KQogICAgICYmIGlzVmlzaWJseUFkamFjZW50KHBv
c2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoZmlyc3RMaXN0KSwgcG9zaXRpb25JblBhcmVudEJlZm9y
ZU5vZGUoc2Vjb25kTGlzdCkpOwogICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBubyB2aXNpYmxl
IGNvbnRlbnQgYmV0d2VlbiB0aGlzIGxpIGFuZCB0aGUgcHJldmlvdXMgbGlzdAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69529</attachid>
            <date>2010-10-01 15:40:05 -0700</date>
            <delta_ts>2010-10-01 17:05:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35281-20101001154004.patch</filename>
            <type>text/plain</type>
            <size>13993</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NmU2NmNjOGYwNTgzMTg1ZDJjN2UwODA2ODFjZTdhNDQxYjM4ZTFhLi45N2VkN2Jk
MmRjNDI3YjUyOTMyMWY3NDZmN2UyYzdkODM5YWRiOTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTAtMDEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3aGVuIGRlbGV0aW5nIGxpbmVz
IGJldHdlZW4gbGlzdHMsIHdlIHNob3VsZCB0cnkgdG8gbWVyZ2UgdGhlIGxpc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTI4MQorCisgICAgICAg
ICogZWRpdGluZy9kZWxldGluZy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbDogQWRkZWQuCisKIDIwMTAt
MTAtMDEgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBCdWlsZCBm
aXguIE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvbWVyZ2UtbGlzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGlu
Zy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE5OTI3YzBiMzQ5OGZmYTYz
ZmJlZWFiODY1YTM0MzMzMTA1MzEyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDUgQEAK
K1doaWxlIG9uIGFuIGVtcHR5IGxpc3QgaXRlbSwgcHJlc3NpbmcgZW50ZXIgc2hvdWxkIGJyZWFr
IG91dCBvZiB0aGUgbGlzdCBhbmQgcHJlc3NpbmcgZGVsZXRlIHNob3VsZCB0aGVuIG1lcmdlIHRo
ZSB0d28gbGlzdHMgdG9nZXRoZXIuCisKK1R3byBsaXN0czoKK3wgPHVsPgorfCAgIDxsaT4KK3wg
ICAgICJvbmUiCit8ICAgPGxpPgorfCAgICAgInR3byIKK3wgPGRpdj4KK3wgICA8I3NlbGVjdGlv
bi1jYXJldD4KK3wgICA8YnI+Cit8IDx1bD4KK3wgICA8bGk+Cit8ICAgICAidGhyZWUiCisKK1Np
bmdsZSBtZXJnZWQgbGlzdDoKK3wgPHVsPgorfCAgIDxsaT4KK3wgICAgICJvbmUiCit8ICAgPGxp
PgorfCAgICAgInR3bzwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICA8bGk+Cit8ICAgICAidGhyZWUi
CisKK05lc3RlZCBsaXN0czoKK3wgPHVsPgorfCAgIGlkPSJ1bDIiCit8ICAgPHVsPgorfCAgICAg
PGxpPgorfCAgICAgICAibmVzdGVkIgorfCAgIDxsaT4KK3wgICAgIDwjc2VsZWN0aW9uLWNhcmV0
PgorfCAgICAgPGJyPgorfCAgIDx1bD4KK3wgICAgIDxsaT4KK3wgICAgICAgIm5lc3RlZDIiCisK
K01lcmdlZCBuZXN0ZWQgbGlzdHM6Cit8IDx1bD4KK3wgICBpZD0idWwyIgorfCAgIDx1bD4KK3wg
ICAgIDxsaT4KK3wgICAgICAgIm5lc3RlZDwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICAgIDxsaT4K
K3wgICAgICAgIm5lc3RlZDIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0
aW5nL21lcmdlLWxpc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL21lcmdl
LWxpc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM4NDY5ZThmNTQxYTZmMzYxYWFjNGMwNDRhYjRkZmVj
YmQ1N2RjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcv
bWVyZ2UtbGlzdHMuaHRtbApAQCAtMCwwICsxLDQyIEBACis8Ym9keSBjb250ZW50RWRpdGFibGU9
InRydWUiPgorPGRpdiBpZD0idGVzdDEiPjx1bD48bGk+b25lPC9saT48bGk+dHdvPC9saT48bGkg
aWQ9InRlc3QiPjwvbGk+PGxpPnRocmVlPC9saT48L3VsPjwvZGl2PgorPGRpdiBpZD0idGVzdDIi
Pjx1bCBpZD0idWwyIj48dWw+PGxpPm5lc3RlZDwvbGk+PGxpIGlkPSJzdGFydDIiPjwvbGk+PC91
bD48dWw+PGxpPm5lc3RlZDI8L2xpPjwvdWw+PC91bD48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9l
ZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1h
cy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGVkaXRpbmdUZXN0KCkK
K3sKKyAgICBlZGl0aW5nVGVzdDEoKTsKKyAgICBlZGl0aW5nVGVzdDIoKTsKK30KK2Z1bmN0aW9u
IGVkaXRpbmdUZXN0MSgpCit7CisgICAgTWFya3VwLmRlc2NyaXB0aW9uKCJXaGlsZSBvbiBhbiBl
bXB0eSBsaXN0IGl0ZW0sIHByZXNzaW5nIGVudGVyIHNob3VsZCBicmVhayBvdXQgb2YgdGhlIGxp
c3QgYW5kIHByZXNzaW5nIGRlbGV0ZSBzaG91bGQgdGhlbiBtZXJnZSB0aGUgdHdvIGxpc3RzIHRv
Z2V0aGVyLiIpOworICAgIGV4ZWNUeXBlQ2hhcmFjdGVyQ29tbWFuZCgiXG4iKTsKKyAgICB2YXIg
dGVzdDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDEiKTsKKyAgICBNYXJrdXAuZHVt
cCh0ZXN0MSwgIlR3byBsaXN0cyIpOworCisgICAgZXhlY0RlbGV0ZUNvbW1hbmQoKTsKKyAgICBp
ZiAodGVzdDEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInVsIikubGVuZ3RoICE9IDEpCisgICAgICAg
IHRocm93ICJXcm9uZyBudW1iZXIgb2YgbGlzdHMuIjsKKyAgICBNYXJrdXAuZHVtcCh0ZXN0MSwg
IlNpbmdsZSBtZXJnZWQgbGlzdCIpOworfQorCitmdW5jdGlvbiBlZGl0aW5nVGVzdDIoKQorewor
ICAgIE1hcmt1cC5kZXNjcmlwdGlvbigiQWxzbyB0ZXN0IG5lc3RlZCBsaXN0cy4iKTsKKyAgICB2
YXIgY3Vyc29yU3RhcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQyIik7CisgICAg
c2V0U2VsZWN0aW9uQ29tbWFuZChjdXJzb3JTdGFydCwgMCwgY3Vyc29yU3RhcnQsIDApOworICAg
IGV4ZWNUeXBlQ2hhcmFjdGVyQ29tbWFuZCgiXG4iKTsKKyAgICB2YXIgdGVzdDIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdDIiKTsKKyAgICBNYXJrdXAuZHVtcCh0ZXN0MiwgIk5lc3Rl
ZCBsaXN0cyIpOworCisgICAgZXhlY0RlbGV0ZUNvbW1hbmQoKTsKKyAgICBpZiAoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInVsMiIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ1bCIpLmxlbmd0aCAh
PSAxKQorICAgICAgICB0aHJvdyAiV3JvbmcgbnVtYmVyIG9mIGxpc3RzLiI7CisgICAgTWFya3Vw
LmR1bXAodGVzdDIsICJNZXJnZWQgbmVzdGVkIGxpc3RzIik7Cit9CisKK3J1bkR1bXBBc1RleHRF
ZGl0aW5nVGVzdChmYWxzZSk7Cis8L3NjcmlwdD4KKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTJkMzg0NGRmNGE0YzVkOWRjYWExZWVh
YWNjZDJmNzYwYzY2ZTRhLi4wYTM4OGZmMmUyYjkzOGY4YWE4NzAxZDkwM2I2Mjg1YmQzZDZlNWQw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDEwLTEwLTAxICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2hl
biBkZWxldGluZyBsaW5lcyBiZXR3ZWVuIGxpc3RzLCB3ZSBzaG91bGQgdHJ5IHRvIG1lcmdlIHRo
ZSBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzUyODEKKworICAgICAgICBUZXN0OiBlZGl0aW5nL2RlbGV0aW5nL21lcmdlLWxpc3RzLmh0bWwK
KworICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMpOiBB
bGxvdyBtZXJnaW5nCisgICAgICAgICAgICBpbnRvIHRoZSBmaXJzdCBlbGVtZW50IG9yIHNlY29u
ZCBlbGVtZW50IChwcmV2aW91c2x5LCB3ZSB3b3VsZCBhbHdheXMKKyAgICAgICAgICAgIG1lcmdl
IGludG8gdGhlIHNlY29uZCBlbGVtZW50KQorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRp
dENvbW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5j
cHA6IFRyeSB0byBtZXJnZSBsaXN0cyB3aGVuIGRlbGV0aW5nCisgICAgICAgIChXZWJDb3JlOjpJ
bnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseUZvclNpbmdsZVBhcmFncmFwaCk6CisgICAgICAgICog
ZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHA6IEFsbG93IG1lcmdpbmcg
aW50byBmaXJzdCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6TWVyZ2VJZGVudGljYWxFbGVt
ZW50c0NvbW1hbmQ6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb1VuYXBwbHkpOgorICAg
ICAgICAqIGVkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpjcmVhdGUpOgorCiAyMDEw
LTEwLTAxICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAppbmRleCAzNTZhNzE3MDYyMWExMjg2OGVkMDJkMzk1ZmY1ZGQxNDlmZDZlZjk2Li40MDdj
ZmYyZTlmZDZiYzNjNjBhOGFhNzFiNzIzNTU2NmM0NTE3NDVkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjpzcGxpdEVsZW1lbnQoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBQ
YXNzUmVmUHRyPAogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNwbGl0RWxlbWVudENvbW1h
bmQ6OmNyZWF0ZShlbGVtZW50LCBhdENoaWxkKSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMoUGFzc1JlZlB0cjxFbGVtZW50PiBwcnBGaXJz
dCwgUGFzc1JlZlB0cjxFbGVtZW50PiBwcnBTZWNvbmQpCit2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjptZXJnZUlkZW50aWNhbEVsZW1lbnRzKFBhc3NSZWZQdHI8RWxlbWVudD4gcHJwRmlyc3Qs
IFBhc3NSZWZQdHI8RWxlbWVudD4gcHJwU2Vjb25kLCBNZXJnZURpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGZpcnN0ID0gcHJwRmlyc3Q7CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IHNlY29uZCA9IHBycFNlY29uZDsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptZXJnZUlkZW50aWNhbEVsZW1lbnRzKFBhc3NSZWZQdHI8RWxlbWVu
dD4gcHJwRmlyc3QsCiAgICAgICAgIHJlbW92ZU5vZGUoc2Vjb25kKTsKICAgICAgICAgaW5zZXJ0
Tm9kZUFmdGVyKHNlY29uZCwgZmlyc3QpOwogICAgIH0KLSAgICBhcHBseUNvbW1hbmRUb0NvbXBv
c2l0ZShNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6Y3JlYXRlKGZpcnN0LCBzZWNvbmQp
KTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29t
bWFuZDo6Y3JlYXRlKGZpcnN0LCBzZWNvbmQsIGRpcmVjdGlvbikpOwogfQogCiB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjp3cmFwQ29udGVudHNJbkR1bW15U3BhbihQYXNzUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQpCkBAIC03OTksOCArNzk5LDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKCkKICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBj
YXJldEFmdGVyRGVsZXRlLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOwogICAgICAgICBO
b2RlKiBub2RlID0gcG9zaXRpb24ubm9kZSgpOwogICAgICAgICAvLyBOb3JtYWxseSBkZWxldGlv
biB3aWxsIGxlYXZlIGEgYnIgYXMgYSBwbGFjZWhvbGRlci4KLSAgICAgICAgaWYgKG5vZGUtPmhh
c1RhZ05hbWUoYnJUYWcpKQorICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShiclRhZykpIHsK
KyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBiZWZvcmVQbGFjZWhvbGRlciA9IGNhcmV0QWZ0
ZXJEZWxldGUucHJldmlvdXModHJ1ZSk7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gYWZ0
ZXJQbGFjZWhvbGRlciA9IGNhcmV0QWZ0ZXJEZWxldGUubmV4dCh0cnVlKTsKICAgICAgICAgICAg
IHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhub2RlKTsKKyAgICAgICAgICAgIEhUTUxFbGVt
ZW50KiBiZWZvcmUgPSBlbmNsb3NpbmdMaXN0KGJlZm9yZVBsYWNlaG9sZGVyLmRlZXBFcXVpdmFs
ZW50KCkubm9kZSgpKTsKKyAgICAgICAgICAgIEhUTUxFbGVtZW50KiBhZnRlciA9IGVuY2xvc2lu
Z0xpc3QoYWZ0ZXJQbGFjZWhvbGRlci5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSk7CisgICAgICAg
ICAgICBpZiAoY2FuTWVyZ2VMaXN0cyhiZWZvcmUsIGFmdGVyKSkKKyAgICAgICAgICAgICAgICBt
ZXJnZUlkZW50aWNhbEVsZW1lbnRzKGJlZm9yZSwgYWZ0ZXIsIE1lcmdlSW50b0ZpcnN0KTsKKyAg
ICAgICAgfQogICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIHRvIG1vdmUgd2FzIGVtcHR5IGFu
ZCBpbiBhbiBlbXB0eSBibG9jayB0aGF0IAogICAgICAgICAvLyBkb2Vzbid0IHJlcXVpcmUgYSBw
bGFjZWhvbGRlciB0byBwcm9wIGl0c2VsZiBvcGVuIChsaWtlIGEgYm9yZGVyZWQKICAgICAgICAg
Ly8gZGl2IG9yIGFuIGxpKSwgcmVtb3ZlIGl0IGR1cmluZyB0aGUgbW92ZSAodGhlIGxpc3QgcmVt
b3ZhbCBjb2RlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuaCBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4IGY4Mzlh
NzI4OTg1ZDA2YWM1Yjg5ZWZmYzMzYzFhMWJiOTMyYmY5Y2QuLjJmNWZhYzQ3MDM1MDEzZTEyOThi
MmExMjA4YzdlZjZjYjc2MmUwODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5oCkBAIC0zOSw2ICszOSwxMSBAQCBjbGFzcyBUZXh0OwogCiBjbGFzcyBDb21wb3NpdGVFZGl0
Q29tbWFuZCA6IHB1YmxpYyBFZGl0Q29tbWFuZCB7CiBwdWJsaWM6CisgICAgZW51bSBNZXJnZURp
cmVjdGlvbiB7CisgICAgICAgIE1lcmdlSW50b0ZpcnN0LAorICAgICAgICBNZXJnZUludG9TZWNv
bmQsCisgICAgfTsKKwogICAgIGJvb2wgaXNGaXJzdENvbW1hbmQoRWRpdENvbW1hbmQqIGNvbW1h
bmQpIHsgcmV0dXJuICFtX2NvbW1hbmRzLmlzRW1wdHkoKSAmJiBtX2NvbW1hbmRzLmZpcnN0KCkg
PT0gY29tbWFuZDsgfQogCiBwcm90ZWN0ZWQ6CkBAIC02NSw3ICs3MCw3IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGluc2VydExpbmVCcmVhaygpOwogICAgIHZvaWQgaW5zZXJ0VGV4dEludG9Ob2Rl
KFBhc3NSZWZQdHI8VGV4dD4sIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsK
ICAgICB2b2lkIGpvaW5UZXh0Tm9kZXMoUGFzc1JlZlB0cjxUZXh0PiwgUGFzc1JlZlB0cjxUZXh0
Pik7Ci0gICAgdm9pZCBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKFBhc3NSZWZQdHI8RWxlbWVudD4s
IFBhc3NSZWZQdHI8RWxlbWVudD4pOworICAgIHZvaWQgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhQ
YXNzUmVmUHRyPEVsZW1lbnQ+LCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBNZXJnZURpcmVjdGlvbiA9
IE1lcmdlSW50b1NlY29uZCk7CiAgICAgdm9pZCByZWJhbGFuY2VXaGl0ZXNwYWNlKCk7CiAgICAg
dm9pZCByZWJhbGFuY2VXaGl0ZXNwYWNlQXQoY29uc3QgUG9zaXRpb24mKTsKICAgICB2b2lkIHBy
ZXBhcmVXaGl0ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KFBvc2l0aW9uJik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L0luc2VydExpc3RDb21tYW5kLmNwcAppbmRleCBmOTBkNWQzODFmNjEyMjUwNTZjYzU5NWRmYjk0
OGZlNzA2YjdkZmQ3Li4yMDQ4MzQ1ODkwMDk5ZmJkODAwYWYzZDMwYjk3NzFmOGY3YTkzYzFmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2
b2lkIEluc2VydExpc3RDb21tYW5kOjpkb0FwcGx5Rm9yU2luZ2xlUGFyYWdyYXBoKGJvb2wgZm9y
Y2VDcmVhdGVMaXN0LCBjb25zdCBRdQogICAgIE5vZGUqIGxpc3RDaGlsZE5vZGUgPSBlbmNsb3Np
bmdMaXN0Q2hpbGQoc2VsZWN0aW9uTm9kZSk7CiAgICAgYm9vbCBzd2l0Y2hMaXN0VHlwZSA9IGZh
bHNlOwogICAgIGlmIChsaXN0Q2hpbGROb2RlKSB7Ci0gICAgICAgIC8vIFJlbW92ZSB0aGUgbGlz
dCBjaGxpbGQuCisgICAgICAgIC8vIFJlbW92ZSB0aGUgbGlzdCBjaGlsZC4KICAgICAgICAgUmVm
UHRyPEhUTUxFbGVtZW50PiBsaXN0Tm9kZSA9IGVuY2xvc2luZ0xpc3QobGlzdENoaWxkTm9kZSk7
CiAgICAgICAgIGlmICghbGlzdE5vZGUpIHsKICAgICAgICAgICAgIGxpc3ROb2RlID0gZml4T3Jw
aGFuZWRMaXN0Q2hpbGQobGlzdENoaWxkTm9kZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRp
bmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL01l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcAppbmRleCBmNTZmNzI2ZmEzNmYwOTYzMmRj
OWNhNWJkODBhMzkwY2UwZWE3NmRlLi4yZTQwNTI0ZmQ5NGZiOWE5ZWQ3M2M1YTRkYjdkYjVjZDdk
Mjg3YmE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50
c0NvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRz
Q29tbWFuZC5jcHAKQEAgLTMwLDEwICszMCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LU1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29t
bWFuZChQYXNzUmVmUHRyPEVsZW1lbnQ+IGZpcnN0LCBQYXNzUmVmUHRyPEVsZW1lbnQ+IHNlY29u
ZCkKLSAgICA6IFNpbXBsZUVkaXRDb21tYW5kKGZpcnN0LT5kb2N1bWVudCgpKQorTWVyZ2VJZGVu
dGljYWxFbGVtZW50c0NvbW1hbmQ6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kKFBhc3NS
ZWZQdHI8RWxlbWVudD4gZmlyc3QsIFBhc3NSZWZQdHI8RWxlbWVudD4gc2Vjb25kLCBNZXJnZURp
cmVjdGlvbiBkaXJlY3Rpb24pCisgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChmaXJzdC0+ZG9j
dW1lbnQoKSkKICAgICAsIG1fZWxlbWVudDEoZmlyc3QpCiAgICAgLCBtX2VsZW1lbnQyKHNlY29u
ZCkKKyAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKIHsKICAgICBBU1NFUlQobV9lbGVtZW50
MSk7CiAgICAgQVNTRVJUKG1fZWxlbWVudDIpOwpAQCAtNTAsMTQgKzUxLDE5IEBAIHZvaWQgTWVy
Z2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogCiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGNoaWxkcmVuOwotICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBtX2VsZW1lbnQxLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKQorICAgIE5vZGUqIHNvdXJjZU5vZGUgPSBtX2RpcmVjdGlvbiA9
PSBNZXJnZUludG9GaXJzdCA/IG1fZWxlbWVudDIuZ2V0KCkgOiBtX2VsZW1lbnQxLmdldCgpOwor
ICAgIGZvciAoTm9kZSogY2hpbGQgPSBzb3VyY2VOb2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hp
bGQpOwogCiAgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG1fZWxlbWVudDItPmluc2VydEJlZm9y
ZShjaGlsZHJlbltpXS5yZWxlYXNlKCksIG1fYXRDaGlsZC5nZXQoKSwgZWMpOwotCi0gICAgbV9l
bGVtZW50MS0+cmVtb3ZlKGVjKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgeworICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gTWVyZ2VJbnRvRmlyc3QpCisgICAgICAg
ICAgICBtX2VsZW1lbnQxLT5hcHBlbmRDaGlsZChjaGlsZHJlbltpXS5yZWxlYXNlKCksIGVjKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9lbGVtZW50Mi0+aW5zZXJ0QmVmb3JlKGNoaWxk
cmVuW2ldLnJlbGVhc2UoKSwgbV9hdENoaWxkLmdldCgpLCBlYyk7CisgICAgfQorCisgICAgc291
cmNlTm9kZS0+cmVtb3ZlKGVjKTsKIH0KIAogdm9pZCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29t
bWFuZDo6ZG9VbmFwcGx5KCkKQEAgLTY3LDIzICs3MywzNCBAQCB2b2lkIE1lcmdlSWRlbnRpY2Fs
RWxlbWVudHNDb21tYW5kOjpkb1VuYXBwbHkoKQogCiAgICAgUmVmUHRyPE5vZGU+IGF0Q2hpbGQg
PSBtX2F0Q2hpbGQucmVsZWFzZSgpOwogCi0gICAgTm9kZSogcGFyZW50ID0gbV9lbGVtZW50Mi0+
cGFyZW50KCk7CisgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IG1fZGlyZWN0aW9uID09IE1lcmdlSW50
b0ZpcnN0ID8gbV9lbGVtZW50MS5nZXQoKSA6IG1fZWxlbWVudDIuZ2V0KCk7CisgICAgTm9kZSog
cGFyZW50ID0gdGFyZ2V0Tm9kZS0+cGFyZW50KCk7CiAgICAgaWYgKCFwYXJlbnQgfHwgIXBhcmVu
dC0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAKLSAgICBwYXJlbnQtPmluc2VydEJlZm9yZShtX2VsZW1lbnQxLmdldCgp
LCBtX2VsZW1lbnQyLmdldCgpLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm47Cisg
ICAgaWYgKG1fZGlyZWN0aW9uID09IE1lcmdlSW50b0ZpcnN0KQorICAgICAgICBpbnNlcnROb2Rl
QWZ0ZXIobV9lbGVtZW50Mi5nZXQoKSwgbV9lbGVtZW50MS5nZXQoKSk7CisgICAgZWxzZSB7Cisg
ICAgICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG1fZWxlbWVudDEuZ2V0KCksIG1fZWxlbWVudDIu
Z2V0KCksIGVjKTsKKyAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBjaGlsZHJlbjsKLSAgICBmb3IgKE5vZGUqIGNo
aWxkID0gbV9lbGVtZW50Mi0+Zmlyc3RDaGlsZCgpOyBjaGlsZCAmJiBjaGlsZCAhPSBhdENoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICBjaGlsZHJlbi5hcHBlbmQo
Y2hpbGQpOwotCisgICAgaWYgKG1fZGlyZWN0aW9uID09IE1lcmdlSW50b0ZpcnN0KSB7CisgICAg
ICAgIGZvciAoTm9kZSogY2hpbGQgPSBhdENoaWxkLmdldCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG1fZWxlbWVudDItPmZpcnN0
Q2hpbGQoKTsgY2hpbGQgJiYgY2hpbGQgIT0gYXRDaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkKKyAgICAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7CisgICAgfQorCisg
ICAgTm9kZSogc291cmNlTm9kZSA9IG1fZGlyZWN0aW9uID09IE1lcmdlSW50b0ZpcnN0ID8gbV9l
bGVtZW50Mi5nZXQoKSA6IG1fZWxlbWVudDEuZ2V0KCk7CiAgICAgc2l6ZV90IHNpemUgPSBjaGls
ZHJlbi5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgIG1fZWxlbWVudDEtPmFwcGVuZENoaWxkKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgZWMpOwor
ICAgICAgICBzb3VyY2VOb2RlLT5hcHBlbmRDaGlsZChjaGlsZHJlbltpXS5yZWxlYXNlKCksIGVj
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmggYi9XZWJDb3JlL2VkaXRpbmcvTWVy
Z2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaAppbmRleCAxY2U2MzAyYWVjOTNjZDQ3MGI5YWFi
MzNmZDkzMzYxZjI4ZWQzNGQ3Li5iYTBkMTc4Y2FhOTAxYWM4ZDQ0OGQxYWNjMzA0YWUxNTVhZDEy
ODdlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0Nv
bW1hbmQuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1h
bmQuaApAQCAtMjYsMTkgKzI2LDE5IEBACiAjaWZuZGVmIE1lcmdlSWRlbnRpY2FsRWxlbWVudHND
b21tYW5kX2gKICNkZWZpbmUgTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmRfaAogCi0jaW5j
bHVkZSAiRWRpdENvbW1hbmQuaCIKKyNpbmNsdWRlICJDb21wb3NpdGVFZGl0Q29tbWFuZC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kIHsKK2NsYXNzIE1lcmdlSWRlbnRpY2FsRWxl
bWVudHNDb21tYW5kIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZD4gY3JlYXRl
KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudDEsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVu
dDIpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQ+
IGNyZWF0ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQxLCBQYXNzUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQyLCBNZXJnZURpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kKGVsZW1lbnQxLCBl
bGVtZW50MikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lcmdlSWRlbnRpY2FsRWxl
bWVudHNDb21tYW5kKGVsZW1lbnQxLCBlbGVtZW50MiwgZGlyZWN0aW9uKSk7CiAgICAgfQogCiBw
cml2YXRlOgotICAgIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kKFBhc3NSZWZQdHI8RWxl
bWVudD4sIFBhc3NSZWZQdHI8RWxlbWVudD4pOworICAgIE1lcmdlSWRlbnRpY2FsRWxlbWVudHND
b21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4sIFBhc3NSZWZQdHI8RWxlbWVudD4sIE1lcmdlRGly
ZWN0aW9uKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7CiAgICAgdmlydHVhbCB2b2lk
IGRvVW5hcHBseSgpOwpAQCAtNDYsNiArNDYsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxFbGVt
ZW50PiBtX2VsZW1lbnQxOwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQyOwogICAgIFJl
ZlB0cjxOb2RlPiBtX2F0Q2hpbGQ7CisgICAgTWVyZ2VEaXJlY3Rpb24gbV9kaXJlY3Rpb247CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69543</attachid>
            <date>2010-10-01 17:05:58 -0700</date>
            <delta_ts>2010-10-27 18:56:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35281-20101001170557.patch</filename>
            <type>text/plain</type>
            <size>14366</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NmU2NmNjOGYwNTgzMTg1ZDJjN2UwODA2ODFjZTdhNDQxYjM4ZTFhLi45N2VkN2Jk
MmRjNDI3YjUyOTMyMWY3NDZmN2UyYzdkODM5YWRiOTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTAtMDEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3aGVuIGRlbGV0aW5nIGxpbmVz
IGJldHdlZW4gbGlzdHMsIHdlIHNob3VsZCB0cnkgdG8gbWVyZ2UgdGhlIGxpc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTI4MQorCisgICAgICAg
ICogZWRpdGluZy9kZWxldGluZy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbDogQWRkZWQuCisKIDIwMTAt
MTAtMDEgIEFscGhhIExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBCdWlsZCBm
aXguIE5vdCByZXZpZXdlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvbWVyZ2UtbGlzdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGlu
Zy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE5OTI3YzBiMzQ5OGZmYTYz
ZmJlZWFiODY1YTM0MzMzMTA1MzEyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDUgQEAK
K1doaWxlIG9uIGFuIGVtcHR5IGxpc3QgaXRlbSwgcHJlc3NpbmcgZW50ZXIgc2hvdWxkIGJyZWFr
IG91dCBvZiB0aGUgbGlzdCBhbmQgcHJlc3NpbmcgZGVsZXRlIHNob3VsZCB0aGVuIG1lcmdlIHRo
ZSB0d28gbGlzdHMgdG9nZXRoZXIuCisKK1R3byBsaXN0czoKK3wgPHVsPgorfCAgIDxsaT4KK3wg
ICAgICJvbmUiCit8ICAgPGxpPgorfCAgICAgInR3byIKK3wgPGRpdj4KK3wgICA8I3NlbGVjdGlv
bi1jYXJldD4KK3wgICA8YnI+Cit8IDx1bD4KK3wgICA8bGk+Cit8ICAgICAidGhyZWUiCisKK1Np
bmdsZSBtZXJnZWQgbGlzdDoKK3wgPHVsPgorfCAgIDxsaT4KK3wgICAgICJvbmUiCit8ICAgPGxp
PgorfCAgICAgInR3bzwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICA8bGk+Cit8ICAgICAidGhyZWUi
CisKK05lc3RlZCBsaXN0czoKK3wgPHVsPgorfCAgIGlkPSJ1bDIiCit8ICAgPHVsPgorfCAgICAg
PGxpPgorfCAgICAgICAibmVzdGVkIgorfCAgIDxsaT4KK3wgICAgIDwjc2VsZWN0aW9uLWNhcmV0
PgorfCAgICAgPGJyPgorfCAgIDx1bD4KK3wgICAgIDxsaT4KK3wgICAgICAgIm5lc3RlZDIiCisK
K01lcmdlZCBuZXN0ZWQgbGlzdHM6Cit8IDx1bD4KK3wgICBpZD0idWwyIgorfCAgIDx1bD4KK3wg
ICAgIDxsaT4KK3wgICAgICAgIm5lc3RlZDwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICAgIDxsaT4K
K3wgICAgICAgIm5lc3RlZDIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0
aW5nL21lcmdlLWxpc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL21lcmdl
LWxpc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM4NDY5ZThmNTQxYTZmMzYxYWFjNGMwNDRhYjRkZmVj
YmQ1N2RjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcv
bWVyZ2UtbGlzdHMuaHRtbApAQCAtMCwwICsxLDQyIEBACis8Ym9keSBjb250ZW50RWRpdGFibGU9
InRydWUiPgorPGRpdiBpZD0idGVzdDEiPjx1bD48bGk+b25lPC9saT48bGk+dHdvPC9saT48bGkg
aWQ9InRlc3QiPjwvbGk+PGxpPnRocmVlPC9saT48L3VsPjwvZGl2PgorPGRpdiBpZD0idGVzdDIi
Pjx1bCBpZD0idWwyIj48dWw+PGxpPm5lc3RlZDwvbGk+PGxpIGlkPSJzdGFydDIiPjwvbGk+PC91
bD48dWw+PGxpPm5lc3RlZDI8L2xpPjwvdWw+PC91bD48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9l
ZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1h
cy1tYXJrdXAuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGVkaXRpbmdUZXN0KCkK
K3sKKyAgICBlZGl0aW5nVGVzdDEoKTsKKyAgICBlZGl0aW5nVGVzdDIoKTsKK30KK2Z1bmN0aW9u
IGVkaXRpbmdUZXN0MSgpCit7CisgICAgTWFya3VwLmRlc2NyaXB0aW9uKCJXaGlsZSBvbiBhbiBl
bXB0eSBsaXN0IGl0ZW0sIHByZXNzaW5nIGVudGVyIHNob3VsZCBicmVhayBvdXQgb2YgdGhlIGxp
c3QgYW5kIHByZXNzaW5nIGRlbGV0ZSBzaG91bGQgdGhlbiBtZXJnZSB0aGUgdHdvIGxpc3RzIHRv
Z2V0aGVyLiIpOworICAgIGV4ZWNUeXBlQ2hhcmFjdGVyQ29tbWFuZCgiXG4iKTsKKyAgICB2YXIg
dGVzdDEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDEiKTsKKyAgICBNYXJrdXAuZHVt
cCh0ZXN0MSwgIlR3byBsaXN0cyIpOworCisgICAgZXhlY0RlbGV0ZUNvbW1hbmQoKTsKKyAgICBp
ZiAodGVzdDEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInVsIikubGVuZ3RoICE9IDEpCisgICAgICAg
IHRocm93ICJXcm9uZyBudW1iZXIgb2YgbGlzdHMuIjsKKyAgICBNYXJrdXAuZHVtcCh0ZXN0MSwg
IlNpbmdsZSBtZXJnZWQgbGlzdCIpOworfQorCitmdW5jdGlvbiBlZGl0aW5nVGVzdDIoKQorewor
ICAgIE1hcmt1cC5kZXNjcmlwdGlvbigiQWxzbyB0ZXN0IG5lc3RlZCBsaXN0cy4iKTsKKyAgICB2
YXIgY3Vyc29yU3RhcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQyIik7CisgICAg
c2V0U2VsZWN0aW9uQ29tbWFuZChjdXJzb3JTdGFydCwgMCwgY3Vyc29yU3RhcnQsIDApOworICAg
IGV4ZWNUeXBlQ2hhcmFjdGVyQ29tbWFuZCgiXG4iKTsKKyAgICB2YXIgdGVzdDIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdDIiKTsKKyAgICBNYXJrdXAuZHVtcCh0ZXN0MiwgIk5lc3Rl
ZCBsaXN0cyIpOworCisgICAgZXhlY0RlbGV0ZUNvbW1hbmQoKTsKKyAgICBpZiAoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInVsMiIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ1bCIpLmxlbmd0aCAh
PSAxKQorICAgICAgICB0aHJvdyAiV3JvbmcgbnVtYmVyIG9mIGxpc3RzLiI7CisgICAgTWFya3Vw
LmR1bXAodGVzdDIsICJNZXJnZWQgbmVzdGVkIGxpc3RzIik7Cit9CisKK3J1bkR1bXBBc1RleHRF
ZGl0aW5nVGVzdChmYWxzZSk7Cis8L3NjcmlwdD4KKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTJkMzg0NGRmNGE0YzVkOWRjYWExZWVh
YWNjZDJmNzYwYzY2ZTRhLi4wYTM4OGZmMmUyYjkzOGY4YWE4NzAxZDkwM2I2Mjg1YmQzZDZlNWQw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDEwLTEwLTAxICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2hl
biBkZWxldGluZyBsaW5lcyBiZXR3ZWVuIGxpc3RzLCB3ZSBzaG91bGQgdHJ5IHRvIG1lcmdlIHRo
ZSBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzUyODEKKworICAgICAgICBUZXN0OiBlZGl0aW5nL2RlbGV0aW5nL21lcmdlLWxpc3RzLmh0bWwK
KworICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMpOiBB
bGxvdyBtZXJnaW5nCisgICAgICAgICAgICBpbnRvIHRoZSBmaXJzdCBlbGVtZW50IG9yIHNlY29u
ZCBlbGVtZW50IChwcmV2aW91c2x5LCB3ZSB3b3VsZCBhbHdheXMKKyAgICAgICAgICAgIG1lcmdl
IGludG8gdGhlIHNlY29uZCBlbGVtZW50KQorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRp
dENvbW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5j
cHA6IFRyeSB0byBtZXJnZSBsaXN0cyB3aGVuIGRlbGV0aW5nCisgICAgICAgIChXZWJDb3JlOjpJ
bnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseUZvclNpbmdsZVBhcmFncmFwaCk6CisgICAgICAgICog
ZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHA6IEFsbG93IG1lcmdpbmcg
aW50byBmaXJzdCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6TWVyZ2VJZGVudGljYWxFbGVt
ZW50c0NvbW1hbmQ6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb1VuYXBwbHkpOgorICAg
ICAgICAqIGVkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpjcmVhdGUpOgorCiAyMDEw
LTEwLTAxICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAppbmRleCAzNTZhNzE3MDYyMWExMjg2OGVkMDJkMzk1ZmY1ZGQxNDlmZDZlZjk2Li5hM2Fl
MDQ3Y2M5ZTljZDlhYmY3YzlmMmE0MTU1M2MzNTFjZjUzOWZiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjpzcGxpdEVsZW1lbnQoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBQ
YXNzUmVmUHRyPAogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFNwbGl0RWxlbWVudENvbW1h
bmQ6OmNyZWF0ZShlbGVtZW50LCBhdENoaWxkKSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMoUGFzc1JlZlB0cjxFbGVtZW50PiBwcnBGaXJz
dCwgUGFzc1JlZlB0cjxFbGVtZW50PiBwcnBTZWNvbmQpCit2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjptZXJnZUlkZW50aWNhbEVsZW1lbnRzKFBhc3NSZWZQdHI8RWxlbWVudD4gcHJwRmlyc3Qs
IFBhc3NSZWZQdHI8RWxlbWVudD4gcHJwU2Vjb25kLCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzRGly
ZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gZmlyc3QgPSBwcnBGaXJz
dDsKICAgICBSZWZQdHI8RWxlbWVudD4gc2Vjb25kID0gcHJwU2Vjb25kOwpAQCAtMjc1LDcgKzI3
NSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMo
UGFzc1JlZlB0cjxFbGVtZW50PiBwcnBGaXJzdCwKICAgICAgICAgcmVtb3ZlTm9kZShzZWNvbmQp
OwogICAgICAgICBpbnNlcnROb2RlQWZ0ZXIoc2Vjb25kLCBmaXJzdCk7CiAgICAgfQotICAgIGFw
cGx5Q29tbWFuZFRvQ29tcG9zaXRlKE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpjcmVh
dGUoZmlyc3QsIHNlY29uZCkpOworICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKE1lcmdlSWRl
bnRpY2FsRWxlbWVudHNDb21tYW5kOjpjcmVhdGUoZmlyc3QsIHNlY29uZCwgZGlyZWN0aW9uKSk7
CiB9CiAKIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OndyYXBDb250ZW50c0luRHVtbXlTcGFu
KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKQEAgLTc5OSw4ICs3OTksMTUgQEAgdm9pZCBD
b21wb3NpdGVFZGl0Q29tbWFuZDo6Y2xlYW51cEFmdGVyRGVsZXRpb24oKQogICAgICAgICBQb3Np
dGlvbiBwb3NpdGlvbiA9IGNhcmV0QWZ0ZXJEZWxldGUuZGVlcEVxdWl2YWxlbnQoKS5kb3duc3Ry
ZWFtKCk7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBwb3NpdGlvbi5ub2RlKCk7CiAgICAgICAgIC8v
IE5vcm1hbGx5IGRlbGV0aW9uIHdpbGwgbGVhdmUgYSBiciBhcyBhIHBsYWNlaG9sZGVyLgotICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShiclRhZykpCisgICAgICAgIGlmIChub2RlLT5oYXNU
YWdOYW1lKGJyVGFnKSkgeworICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGJlZm9yZVBsYWNl
aG9sZGVyID0gY2FyZXRBZnRlckRlbGV0ZS5wcmV2aW91cyh0cnVlKTsKKyAgICAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBhZnRlclBsYWNlaG9sZGVyID0gY2FyZXRBZnRlckRlbGV0ZS5uZXh0KHRy
dWUpOwogICAgICAgICAgICAgcmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKG5vZGUpOworICAg
ICAgICAgICAgSFRNTEVsZW1lbnQqIGJlZm9yZSA9IGVuY2xvc2luZ0xpc3QoYmVmb3JlUGxhY2Vo
b2xkZXIuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOworICAgICAgICAgICAgSFRNTEVsZW1lbnQq
IGFmdGVyID0gZW5jbG9zaW5nTGlzdChhZnRlclBsYWNlaG9sZGVyLmRlZXBFcXVpdmFsZW50KCku
bm9kZSgpKTsKKyAgICAgICAgICAgIGlmIChjYW5NZXJnZUxpc3RzKGJlZm9yZSwgYWZ0ZXIpKQor
ICAgICAgICAgICAgICAgIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMoYmVmb3JlLCBhZnRlciwgTWVy
Z2VJbnRvRmlyc3QpOworICAgICAgICB9CiAgICAgICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gdG8g
bW92ZSB3YXMgZW1wdHkgYW5kIGluIGFuIGVtcHR5IGJsb2NrIHRoYXQgCiAgICAgICAgIC8vIGRv
ZXNuJ3QgcmVxdWlyZSBhIHBsYWNlaG9sZGVyIHRvIHByb3AgaXRzZWxmIG9wZW4gKGxpa2UgYSBi
b3JkZXJlZAogICAgICAgICAvLyBkaXYgb3IgYW4gbGkpLCByZW1vdmUgaXQgZHVyaW5nIHRoZSBt
b3ZlICh0aGUgbGlzdCByZW1vdmFsIGNvZGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5oIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmgKaW5kZXggZjgzOWE3Mjg5ODVkMDZhYzViODllZmZjMzNjMWExYmI5MzJiZjljZC4uOGZi
ODNhOWVlNTA3NTAzMmQ3OGYxZjYwNjdiMTQ0N2M4NTFkNWYzZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTM5LDYgKzM5LDExIEBAIGNsYXNzIFRleHQ7CiAKIGNs
YXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kIDogcHVibGljIEVkaXRDb21tYW5kIHsKIHB1YmxpYzoK
KyAgICBlbnVtIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNEaXJlY3Rpb24geworICAgICAgICBNZXJn
ZUludG9GaXJzdCwKKyAgICAgICAgTWVyZ2VJbnRvU2Vjb25kLAorICAgIH07CisKICAgICBib29s
IGlzRmlyc3RDb21tYW5kKEVkaXRDb21tYW5kKiBjb21tYW5kKSB7IHJldHVybiAhbV9jb21tYW5k
cy5pc0VtcHR5KCkgJiYgbV9jb21tYW5kcy5maXJzdCgpID09IGNvbW1hbmQ7IH0KIAogcHJvdGVj
dGVkOgpAQCAtNjUsNyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnNlcnRMaW5lQnJl
YWsoKTsKICAgICB2b2lkIGluc2VydFRleHRJbnRvTm9kZShQYXNzUmVmUHRyPFRleHQ+LCB1bnNp
Z25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CiAgICAgdm9pZCBqb2luVGV4dE5vZGVz
KFBhc3NSZWZQdHI8VGV4dD4sIFBhc3NSZWZQdHI8VGV4dD4pOwotICAgIHZvaWQgbWVyZ2VJZGVu
dGljYWxFbGVtZW50cyhQYXNzUmVmUHRyPEVsZW1lbnQ+LCBQYXNzUmVmUHRyPEVsZW1lbnQ+KTsK
KyAgICB2b2lkIG1lcmdlSWRlbnRpY2FsRWxlbWVudHMoUGFzc1JlZlB0cjxFbGVtZW50PiwgUGFz
c1JlZlB0cjxFbGVtZW50PiwgTWVyZ2VJZGVudGljYWxFbGVtZW50c0RpcmVjdGlvbiA9IE1lcmdl
SW50b1NlY29uZCk7CiAgICAgdm9pZCByZWJhbGFuY2VXaGl0ZXNwYWNlKCk7CiAgICAgdm9pZCBy
ZWJhbGFuY2VXaGl0ZXNwYWNlQXQoY29uc3QgUG9zaXRpb24mKTsKICAgICB2b2lkIHByZXBhcmVX
aGl0ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KFBvc2l0aW9uJik7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dExpc3RDb21tYW5kLmNwcAppbmRleCBmOTBkNWQzODFmNjEyMjUwNTZjYzU5NWRmYjk0OGZlNzA2
YjdkZmQ3Li4yMDQ4MzQ1ODkwMDk5ZmJkODAwYWYzZDMwYjk3NzFmOGY3YTkzYzFmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIElu
c2VydExpc3RDb21tYW5kOjpkb0FwcGx5Rm9yU2luZ2xlUGFyYWdyYXBoKGJvb2wgZm9yY2VDcmVh
dGVMaXN0LCBjb25zdCBRdQogICAgIE5vZGUqIGxpc3RDaGlsZE5vZGUgPSBlbmNsb3NpbmdMaXN0
Q2hpbGQoc2VsZWN0aW9uTm9kZSk7CiAgICAgYm9vbCBzd2l0Y2hMaXN0VHlwZSA9IGZhbHNlOwog
ICAgIGlmIChsaXN0Q2hpbGROb2RlKSB7Ci0gICAgICAgIC8vIFJlbW92ZSB0aGUgbGlzdCBjaGxp
bGQuCisgICAgICAgIC8vIFJlbW92ZSB0aGUgbGlzdCBjaGlsZC4KICAgICAgICAgUmVmUHRyPEhU
TUxFbGVtZW50PiBsaXN0Tm9kZSA9IGVuY2xvc2luZ0xpc3QobGlzdENoaWxkTm9kZSk7CiAgICAg
ICAgIGlmICghbGlzdE5vZGUpIHsKICAgICAgICAgICAgIGxpc3ROb2RlID0gZml4T3JwaGFuZWRM
aXN0Q2hpbGQobGlzdENoaWxkTm9kZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvTWVy
Z2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRl
bnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcAppbmRleCBmNTZmNzI2ZmEzNmYwOTYzMmRjOWNhNWJk
ODBhMzkwY2UwZWE3NmRlLi4zMDZmNzk2NGQ1NTZmODNkZDc5ODJlMDVmZmFkZDA0MzYwMTE2MjYw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1h
bmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFu
ZC5jcHAKQEAgLTMwLDEwICszMCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lcmdl
SWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZChQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGZpcnN0LCBQYXNzUmVmUHRyPEVsZW1lbnQ+IHNlY29uZCkKK01l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFu
ZChQYXNzUmVmUHRyPEVsZW1lbnQ+IGZpcnN0LCBQYXNzUmVmUHRyPEVsZW1lbnQ+IHNlY29uZCwg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNEaXJlY3Rpb24gZGly
ZWN0aW9uKQogICAgIDogU2ltcGxlRWRpdENvbW1hbmQoZmlyc3QtPmRvY3VtZW50KCkpCiAgICAg
LCBtX2VsZW1lbnQxKGZpcnN0KQogICAgICwgbV9lbGVtZW50MihzZWNvbmQpCisgICAgLCBtX2Rp
cmVjdGlvbihkaXJlY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudDEpOwogICAgIEFTU0VS
VChtX2VsZW1lbnQyKTsKQEAgLTUwLDE0ICs1MSwxOSBAQCB2b2lkIE1lcmdlSWRlbnRpY2FsRWxl
bWVudHNDb21tYW5kOjpkb0FwcGx5KCkKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAogICAg
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBjaGlsZHJlbjsKLSAgICBmb3IgKE5vZGUqIGNoaWxkID0g
bV9lbGVtZW50MS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkKKyAgICBOb2RlKiBzb3VyY2VOb2RlID0gbV9kaXJlY3Rpb24gPT0gQ29tcG9zaXRlRWRp
dENvbW1hbmQ6Ok1lcmdlSW50b0ZpcnN0ID8gbV9lbGVtZW50Mi5nZXQoKSA6IG1fZWxlbWVudDEu
Z2V0KCk7CisgICAgZm9yIChOb2RlKiBjaGlsZCA9IHNvdXJjZU5vZGUtPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkcmVuLmFw
cGVuZChjaGlsZCk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9lbGVtZW50Mi0+aW5z
ZXJ0QmVmb3JlKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgbV9hdENoaWxkLmdldCgpLCBlYyk7Ci0K
LSAgICBtX2VsZW1lbnQxLT5yZW1vdmUoZWMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6TWVyZ2VJbnRvRmlyc3QpCisgICAgICAgICAgICBtX2VsZW1lbnQxLT5hcHBlbmRDaGls
ZChjaGlsZHJlbltpXS5yZWxlYXNlKCksIGVjKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bV9lbGVtZW50Mi0+aW5zZXJ0QmVmb3JlKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgbV9hdENoaWxk
LmdldCgpLCBlYyk7CisgICAgfQorCisgICAgc291cmNlTm9kZS0+cmVtb3ZlKGVjKTsKIH0KIAog
dm9pZCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9VbmFwcGx5KCkKQEAgLTY3LDIz
ICs3MywzNyBAQCB2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb1VuYXBwbHko
KQogCiAgICAgUmVmUHRyPE5vZGU+IGF0Q2hpbGQgPSBtX2F0Q2hpbGQucmVsZWFzZSgpOwogCi0g
ICAgTm9kZSogcGFyZW50ID0gbV9lbGVtZW50Mi0+cGFyZW50KCk7CisgICAgTm9kZSogdGFyZ2V0
Tm9kZSA9IG1fZGlyZWN0aW9uID09IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpNZXJnZUludG9GaXJz
dCA/IG1fZWxlbWVudDEuZ2V0KCkgOiBtX2VsZW1lbnQyLmdldCgpOworICAgIE5vZGUqIHBhcmVu
dCA9IHRhcmdldE5vZGUtPnBhcmVudCgpOwogICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlz
Q29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogCi0gICAgcGFyZW50LT5pbnNlcnRCZWZvcmUobV9lbGVtZW50MS5nZXQoKSwgbV9l
bGVtZW50Mi5nZXQoKSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuOworICAgIGlm
IChtX2RpcmVjdGlvbiA9PSBDb21wb3NpdGVFZGl0Q29tbWFuZDo6TWVyZ2VJbnRvRmlyc3QpIHsK
KyAgICAgICAgaWYgKHBhcmVudC0+bGFzdENoaWxkKCkgPT0gbV9lbGVtZW50MS5nZXQoKSkKKyAg
ICAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQobV9lbGVtZW50Mi5nZXQoKSwgZWMpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwYXJlbnQtPmluc2VydEJlZm9yZShtX2VsZW1lbnQyLmdl
dCgpLCBtX2VsZW1lbnQxLT5uZXh0U2libGluZygpLCBlYyk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcGFyZW50LT5pbnNlcnRCZWZvcmUobV9lbGVtZW50MS5nZXQoKSwgbV9lbGVtZW50Mi5nZXQo
KSwgZWMpOworICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGNoaWxkcmVuOwotICAgIGZvciAoTm9kZSogY2hpbGQg
PSBtX2VsZW1lbnQyLT5maXJzdENoaWxkKCk7IGNoaWxkICYmIGNoaWxkICE9IGF0Q2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGls
ZCk7Ci0KKyAgICBpZiAobV9kaXJlY3Rpb24gPT0gQ29tcG9zaXRlRWRpdENvbW1hbmQ6Ok1lcmdl
SW50b0ZpcnN0KSB7CisgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBhdENoaWxkLmdldCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIGNoaWxkcmVu
LmFwcGVuZChjaGlsZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9
IG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKTsgY2hpbGQgJiYgY2hpbGQgIT0gYXRDaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChj
aGlsZCk7CisgICAgfQorCisgICAgTm9kZSogc291cmNlTm9kZSA9IG1fZGlyZWN0aW9uID09IENv
bXBvc2l0ZUVkaXRDb21tYW5kOjpNZXJnZUludG9GaXJzdCA/IG1fZWxlbWVudDIuZ2V0KCkgOiBt
X2VsZW1lbnQxLmdldCgpOwogICAgIHNpemVfdCBzaXplID0gY2hpbGRyZW4uc2l6ZSgpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBtX2VsZW1lbnQxLT5h
cHBlbmRDaGlsZChjaGlsZHJlbltpXS5yZWxlYXNlKCksIGVjKTsKKyAgICAgICAgc291cmNlTm9k
ZS0+YXBwZW5kQ2hpbGQoY2hpbGRyZW5baV0ucmVsZWFzZSgpLCBlYyk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNh
bEVsZW1lbnRzQ29tbWFuZC5oIGIvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVu
dHNDb21tYW5kLmgKaW5kZXggMWNlNjMwMmFlYzkzY2Q0NzBiOWFhYjMzZmQ5MzM2MWYyOGVkMzRk
Ny4uYTMzNGQ5OWEwNDYyZjBhYTFlNWE2NzQ5NTUxNTA5NGQxM2EzZmI0MSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgKKysrIGIvV2Vi
Q29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgKQEAgLTI2LDE5ICsy
NiwyMCBAQAogI2lmbmRlZiBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZF9oCiAjZGVmaW5l
IE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kX2gKIAorI2luY2x1ZGUgIkNvbXBvc2l0ZUVk
aXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiRWRpdENvbW1hbmQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZCA6IHB1YmxpYyBTaW1w
bGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVyZ2VJZGVu
dGljYWxFbGVtZW50c0NvbW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQx
LCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxFbGVtZW50PiBl
bGVtZW50MSwgUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50MiwgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZChl
bGVtZW50MSwgZWxlbWVudDIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXJnZUlk
ZW50aWNhbEVsZW1lbnRzQ29tbWFuZChlbGVtZW50MSwgZWxlbWVudDIsIGRpcmVjdGlvbikpOwog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZChQYXNz
UmVmUHRyPEVsZW1lbnQ+LCBQYXNzUmVmUHRyPEVsZW1lbnQ+KTsKKyAgICBNZXJnZUlkZW50aWNh
bEVsZW1lbnRzQ29tbWFuZChQYXNzUmVmUHRyPEVsZW1lbnQ+LCBQYXNzUmVmUHRyPEVsZW1lbnQ+
LCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6TWVyZ2VJZGVudGljYWxFbGVtZW50c0RpcmVjdGlvbik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBw
bHkoKTsKQEAgLTQ2LDYgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudD4gbV9l
bGVtZW50MTsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50MjsKICAgICBSZWZQdHI8Tm9k
ZT4gbV9hdENoaWxkOworICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpNZXJnZUlkZW50aWNhbEVs
ZW1lbnRzRGlyZWN0aW9uIG1fZGlyZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72127</attachid>
            <date>2010-10-27 18:56:40 -0700</date>
            <delta_ts>2011-04-26 15:50:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35281-20101027185639.patch</filename>
            <type>text/plain</type>
            <size>23878</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjNzBjNjMzNjA1ZDU5NzllZjRjNzc3MzMzZTNkNDk0MDMzNmNmOTg0Li44ZjAzNjM2
ZDVlMTdlYjBkMGQ0ZTE3MzJhMTUwM2QwMjVmOThiZjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTAtMjcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3aGVuIGRlbGV0aW5nIGxpbmVz
IGJldHdlZW4gbGlzdHMsIHdlIHNob3VsZCB0cnkgdG8gbWVyZ2UgdGhlIGxpc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTI4MQorCisgICAgICAg
ICogZWRpdGluZy9kZWxldGluZy9tZXJnZS1saXN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvbWVyZ2UtbGlzdHMuaHRtbDogQWRkZWQuCisKIDIwMTAt
MTAtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5n
L21lcmdlLWxpc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcv
bWVyZ2UtbGlzdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxOTkyN2MwYjM0OThmZmE2M2Zi
ZWVhYjg2NWEzNDMzMzEwNTMxMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL2RlbGV0aW5nL21lcmdlLWxpc3RzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ1IEBACitX
aGlsZSBvbiBhbiBlbXB0eSBsaXN0IGl0ZW0sIHByZXNzaW5nIGVudGVyIHNob3VsZCBicmVhayBv
dXQgb2YgdGhlIGxpc3QgYW5kIHByZXNzaW5nIGRlbGV0ZSBzaG91bGQgdGhlbiBtZXJnZSB0aGUg
dHdvIGxpc3RzIHRvZ2V0aGVyLgorCitUd28gbGlzdHM6Cit8IDx1bD4KK3wgICA8bGk+Cit8ICAg
ICAib25lIgorfCAgIDxsaT4KK3wgICAgICJ0d28iCit8IDxkaXY+Cit8ICAgPCNzZWxlY3Rpb24t
Y2FyZXQ+Cit8ICAgPGJyPgorfCA8dWw+Cit8ICAgPGxpPgorfCAgICAgInRocmVlIgorCitTaW5n
bGUgbWVyZ2VkIGxpc3Q6Cit8IDx1bD4KK3wgICA8bGk+Cit8ICAgICAib25lIgorfCAgIDxsaT4K
K3wgICAgICJ0d288I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgPGxpPgorfCAgICAgInRocmVlIgor
CitOZXN0ZWQgbGlzdHM6Cit8IDx1bD4KK3wgICBpZD0idWwyIgorfCAgIDx1bD4KK3wgICAgIDxs
aT4KK3wgICAgICAgIm5lc3RlZCIKK3wgICA8bGk+Cit8ICAgICA8I3NlbGVjdGlvbi1jYXJldD4K
K3wgICAgIDxicj4KK3wgICA8dWw+Cit8ICAgICA8bGk+Cit8ICAgICAgICJuZXN0ZWQyIgorCitN
ZXJnZWQgbmVzdGVkIGxpc3RzOgorfCA8dWw+Cit8ICAgaWQ9InVsMiIKK3wgICA8dWw+Cit8ICAg
ICA8bGk+Cit8ICAgICAgICJuZXN0ZWQ8I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgICA8bGk+Cit8
ICAgICAgICJuZXN0ZWQyIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGlu
Zy9tZXJnZS1saXN0cy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9tZXJnZS1s
aXN0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzODQ2OWU4ZjU0MWE2ZjM2MWFhYzRjMDQ0YWI0ZGZlY2Jk
NTdkYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL21l
cmdlLWxpc3RzLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPGJvZHkgY29udGVudEVkaXRhYmxlPSJ0
cnVlIj4KKzxkaXYgaWQ9InRlc3QxIj48dWw+PGxpPm9uZTwvbGk+PGxpPnR3bzwvbGk+PGxpIGlk
PSJ0ZXN0Ij48L2xpPjxsaT50aHJlZTwvbGk+PC91bD48L2Rpdj4KKzxkaXYgaWQ9InRlc3QyIj48
dWwgaWQ9InVsMiI+PHVsPjxsaT5uZXN0ZWQ8L2xpPjxsaSBpZD0ic3RhcnQyIj48L2xpPjwvdWw+
PHVsPjxsaT5uZXN0ZWQyPC9saT48L3VsPjwvdWw+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vZWRp
dGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMt
bWFya3VwLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBlZGl0aW5nVGVzdCgpCit7
CisgICAgZWRpdGluZ1Rlc3QxKCk7CisgICAgZWRpdGluZ1Rlc3QyKCk7Cit9CitmdW5jdGlvbiBl
ZGl0aW5nVGVzdDEoKQoreworICAgIE1hcmt1cC5kZXNjcmlwdGlvbigiV2hpbGUgb24gYW4gZW1w
dHkgbGlzdCBpdGVtLCBwcmVzc2luZyBlbnRlciBzaG91bGQgYnJlYWsgb3V0IG9mIHRoZSBsaXN0
IGFuZCBwcmVzc2luZyBkZWxldGUgc2hvdWxkIHRoZW4gbWVyZ2UgdGhlIHR3byBsaXN0cyB0b2dl
dGhlci4iKTsKKyAgICBleGVjVHlwZUNoYXJhY3RlckNvbW1hbmQoIlxuIik7CisgICAgdmFyIHRl
c3QxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QxIik7CisgICAgTWFya3VwLmR1bXAo
dGVzdDEsICJUd28gbGlzdHMiKTsKKworICAgIGV4ZWNEZWxldGVDb21tYW5kKCk7CisgICAgaWYg
KHRlc3QxLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ1bCIpLmxlbmd0aCAhPSAxKQorICAgICAgICB0
aHJvdyAiV3JvbmcgbnVtYmVyIG9mIGxpc3RzLiI7CisgICAgTWFya3VwLmR1bXAodGVzdDEsICJT
aW5nbGUgbWVyZ2VkIGxpc3QiKTsKK30KKworZnVuY3Rpb24gZWRpdGluZ1Rlc3QyKCkKK3sKKyAg
ICBNYXJrdXAuZGVzY3JpcHRpb24oIkFsc28gdGVzdCBuZXN0ZWQgbGlzdHMuIik7CisgICAgdmFy
IGN1cnNvclN0YXJ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0MiIpOworICAgIHNl
dFNlbGVjdGlvbkNvbW1hbmQoY3Vyc29yU3RhcnQsIDAsIGN1cnNvclN0YXJ0LCAwKTsKKyAgICBl
eGVjVHlwZUNoYXJhY3RlckNvbW1hbmQoIlxuIik7CisgICAgdmFyIHRlc3QyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QyIik7CisgICAgTWFya3VwLmR1bXAodGVzdDIsICJOZXN0ZWQg
bGlzdHMiKTsKKworICAgIGV4ZWNEZWxldGVDb21tYW5kKCk7CisgICAgaWYgKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ1bDIiKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidWwiKS5sZW5ndGggIT0g
MSkKKyAgICAgICAgdGhyb3cgIldyb25nIG51bWJlciBvZiBsaXN0cy4iOworICAgIE1hcmt1cC5k
dW1wKHRlc3QyLCAiTWVyZ2VkIG5lc3RlZCBsaXN0cyIpOworfQorCitydW5EdW1wQXNUZXh0RWRp
dGluZ1Rlc3QoZmFsc2UpOworPC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FjYjdhYjllYjZkMmRlNGY2MmUwMGYyYzA3
OGIyMTYwOGY2ZTY0Ni4uNWMxMWRjMmMyY2UwNmQxMWY4Mzg4NTBlYjA2NDJkNzI2OGU5OTU1NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNiBAQAorMjAxMC0xMC0yNyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdoZW4g
ZGVsZXRpbmcgbGluZXMgYmV0d2VlbiBsaXN0cywgd2Ugc2hvdWxkIHRyeSB0byBtZXJnZSB0aGUg
bGlzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1
MjgxCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9kZWxldGluZy9tZXJnZS1saXN0cy5odG1sCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1lcmdlSWRlbnRpY2FsRWxlbWVudHMpOiBBbGxvdyBtZXJn
aW5nCisgICAgICAgICAgICBpbnRvIHRoZSBmaXJzdCBlbGVtZW50IG9yIHNlY29uZCBlbGVtZW50
IChwcmV2aW91c2x5LCB3ZSB3b3VsZCBhbHdheXMKKyAgICAgICAgICAgIG1lcmdlIGludG8gdGhl
IHNlY29uZCBlbGVtZW50KQorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6
OmNsZWFudXBBZnRlckRlbGV0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHA6IFRyeSB0
byBtZXJnZSBsaXN0cyB3aGVuIGRlbGV0aW5nCisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRMaXN0
Q29tbWFuZDo6ZG9BcHBseUZvclNpbmdsZVBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9N
ZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHA6IEFsbG93IG1lcmdpbmcgaW50byBmaXJz
dCBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1h
bmQ6Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb1VuYXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRp
bmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0RpcmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ0xpc3Qp
OgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuaDoKKwogMjAxMC0xMC0yNiAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IGUzZmRmOTRlMTA5YmUxNGQyMWQ0NDU1MTlhNTRjMjEyNTg5NjgzY2YuLjRi
MDFjNTViNjNiZDY5ODQxYjNiYTIwMjZjYTQ3Y2U4Y2ZiZTc2ZDAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTMyMiw2
ICsxMzIyLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2VkaXRpbmcvTWFya3Vw
QWNjdW11bGF0b3IuaCBcCiAJV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHND
b21tYW5kLmNwcCBcCiAJV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kLmggXAorCVdlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzRGlyZWN0aW9u
LmggXAogCVdlYkNvcmUvZWRpdGluZy9Nb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwIFwKIAlX
ZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggXAogCVdlYkNvcmUvZWRp
dGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzYmY4NTI0MWM0MmU4NTZiNjE3
MDA4YmExZDcyMWZiYWIxMDEzZDJhLi5jNzExMmE4ZjdjMmYwMzdiNDUzNGQ1YjhiNjJmNTQ1ZmRl
ZWQyY2FlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMTQwMyw2ICsxNDAzLDcgQEAKICAgICAgICAgICAgICdlZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvTWVyZ2VJZGVudGljYWxF
bGVtZW50c0NvbW1hbmQuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL01lcmdlSWRlbnRpY2Fs
RWxlbWVudHNDb21tYW5kLmgnLAorICAgICAgICAgICAgJ2VkaXRpbmcvTWVyZ2VJZGVudGljYWxF
bGVtZW50c0RpcmVjdGlvbi5oJywKICAgICAgICAgICAgICdlZGl0aW5nL01vZGlmeVNlbGVjdGlv
bkxpc3RMZXZlbC5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlz
dExldmVsLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
JywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJv
CmluZGV4IGVlM2I5ZDRhMmJhZTc5ZjJmM2ZkNDUyZDQ4Yzk3ZTJhZjk0YTU5Y2IuLjlmMDVjMjEy
NDIyNDI4MjVhOWE0N2UzNzk0ODM1NzViNDk0YTgwYTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTcwMyw2ICsxNzAzLDcgQEAg
SEVBREVSUyArPSBcCiAgICAgZWRpdGluZy9Kb2luVGV4dE5vZGVzQ29tbWFuZC5oIFwKICAgICBl
ZGl0aW5nL21hcmt1cC5oIFwKICAgICBlZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kLmggXAorICAgIGVkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0RpcmVjdGlvbi5oIFwK
ICAgICBlZGl0aW5nL01vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIFwKICAgICBlZGl0aW5nL01v
dmVTZWxlY3Rpb25Db21tYW5kLmggXAogICAgIGVkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21t
YW5kLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNmVhM2U1Nzdj
MmFjZmQxM2VmZTI4NzllMmIwMTE4OWU4ZGI4YzdjZC4uZWU1NjU1YzlhOGFjZWYzYWMwMmNlNDg3
ODQ4MzY3NjI5YmQwZGI4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC00NzA0NCw2ICs0NzA0NCwxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXE1lcmdlSWRlbnRpY2FsRWxlbWVudHNEaXJlY3Rp
b24uaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGVkaXRpbmdcTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCINCiAJCQkJPg0KIAkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGU5YmVkYjJiNTI3MzYzOTA0NzQwMzcyOGRkNTlkMjdhMGE0YTE1ZjEuLmVjYzNk
NzEyNjg1ZWM1YzcwOTE2ZjYzNDg5Y2YyZTVlYzA0NTk5MjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzAwLDYgKzEzMDAsNyBAQAogCQk1MUZBRkUz
NDBDRUNCRjJEMDBCQjNGMjQgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBRkUzMzBDRUNCRjJEMDBCQjNG
MjQgLyogRGF0YWJhc2VUcmFja2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTIxRDQ2RjYxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxS
aW5nTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTIxRDQ2RjUxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxSaW5nTWFjLm1tICovOyB9OwogCQk1MjFE
NDZGODExQUVDOUIxMDA1MTQ2MTMgLyogS2lsbFJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMUQ0NkY3MTFBRUM5QjEwMDUxNDYxMyAvKiBLaWxs
UmluZy5oICovOyB9OworCQk1M0UzNEFFQzEyNzkwN0MyMDA2MEI5OTkgLyogTWVyZ2VJZGVudGlj
YWxFbGVtZW50c0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNFMzRBRUIxMjc5MDdDMjAwNjBCOTk5IC8qIE1lcmdlSWRlbnRpY2FsRWxl
bWVudHNEaXJlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1NEM1MEY3QjBFODAxREYzMDA5ODMyQTAgLyogWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU0QzUwRjdBMEU4MDFERjMwMDk4MzJBMCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
ICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC03NDA4LDYgKzc0MDksNyBAQAogCQk1MUZBRkUzMzBDRUNCRjJEMDBCQjNGMjQgLyogRGF0
YWJhc2VUcmFja2VyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGFiYXNlVHJhY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjFE
NDZGNTExQUVDOTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLaWxsUmluZ01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTIxRDQ2RjcxMUFFQzlCMTAwNTE0NjEzIC8qIEtpbGxSaW5nLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtpbGxSaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUzRTM0QUVCMTI3OTA3QzIwMDYwQjk5OSAvKiBNZXJnZUlkZW50aWNhbEVs
ZW1lbnRzRGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lcmdl
SWRlbnRpY2FsRWxlbWVudHNEaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTRDNTBGN0EwRTgwMURGMzAwOTgzMkEwIC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2
MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEw
QkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xNDQ4
Myw2ICsxNDQ4NSw3IEBACiAJCQkJOTcyOEMzMTIxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFj
Y3VtdWxhdG9yLmggKi8sCiAJCQkJOTMzMDlEQUEwOTlFNjQ5MTAwNTZFNTgxIC8qIE1lcmdlSWRl
bnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOURBQjA5OUU2NDkxMDA1NkU1
ODEgLyogTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaCAqLywKKwkJCQk1M0UzNEFFQjEy
NzkwN0MyMDA2MEI5OTkgLyogTWVyZ2VJZGVudGljYWxFbGVtZW50c0RpcmVjdGlvbi5oICovLAog
CQkJCUM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwu
Y3BwICovLAogCQkJCUM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuaCAqLywKIAkJCQk5MzMwOURBQzA5OUU2NDkxMDA1NkU1ODEgLyogTW92ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwICovLApAQCAtMjAzMDMsNiArMjAzMDYsNyBAQAogCQkJCTRFMTk1OTJF
MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
RkZFM0U3QjExQjU5QzVEMDAzNzg3NEUgLyogTWVtb3J5SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMzMDlERkEwOTlFNjQ5MjAwNTZFNTgxIC8qIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0UzNEFFQzEyNzkwN0MyMDA2MEI5OTkgLyogTWVy
Z2VJZGVudGljYWxFbGVtZW50c0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBREVD
Q0UwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3NhZ2VDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUFERUNCRjBFNzZBQ0YxMDA0QTFBNUUgLyogTWVzc2FnZVBvcnQuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcCBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggNmY0
N2ZiNGRjZmYzMGI4M2M3YWFhM2M3Zjk3MDQ0MTA2ODg4MGMwNi4uZTlkOWU3OTA5OWVhM2YwOWI0
NjJkNzg4YzIyOTY1ZTY3MDcwNTgxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
c3BsaXRFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgUGFzc1JlZlB0cjwKICAg
ICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShTcGxpdEVsZW1lbnRDb21tYW5kOjpjcmVhdGUoZWxl
bWVudCwgYXRDaGlsZCkpOwogfQogCi12b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptZXJnZUlk
ZW50aWNhbEVsZW1lbnRzKFBhc3NSZWZQdHI8RWxlbWVudD4gcHJwRmlyc3QsIFBhc3NSZWZQdHI8
RWxlbWVudD4gcHJwU2Vjb25kKQordm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bWVyZ2VJZGVu
dGljYWxFbGVtZW50cyhQYXNzUmVmUHRyPEVsZW1lbnQ+IHBycEZpcnN0LCBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IHBycFNlY29uZCwgTWVyZ2VJZGVudGljYWxFbGVtZW50c0RpcmVjdGlvbiBkaXJlY3Rp
b24pCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGZpcnN0ID0gcHJwRmlyc3Q7CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IHNlY29uZCA9IHBycFNlY29uZDsKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjptZXJnZUlkZW50aWNhbEVsZW1lbnRzKFBhc3NSZWZQdHI8RWxl
bWVudD4gcHJwRmlyc3QsCiAgICAgICAgIHJlbW92ZU5vZGUoc2Vjb25kKTsKICAgICAgICAgaW5z
ZXJ0Tm9kZUFmdGVyKHNlY29uZCwgZmlyc3QpOwogICAgIH0KLSAgICBhcHBseUNvbW1hbmRUb0Nv
bXBvc2l0ZShNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6Y3JlYXRlKGZpcnN0LCBzZWNv
bmQpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShNZXJnZUlkZW50aWNhbEVsZW1lbnRz
Q29tbWFuZDo6Y3JlYXRlKGZpcnN0LCBzZWNvbmQsIGRpcmVjdGlvbikpOwogfQogCiB2b2lkIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjp3cmFwQ29udGVudHNJbkR1bW15U3BhbihQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGVsZW1lbnQpCkBAIC04MDMsOCArODAzLDE1IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OmNsZWFudXBBZnRlckRlbGV0aW9uKCkKICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24g
PSBjYXJldEFmdGVyRGVsZXRlLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOwogICAgICAg
ICBOb2RlKiBub2RlID0gcG9zaXRpb24ubm9kZSgpOwogICAgICAgICAvLyBOb3JtYWxseSBkZWxl
dGlvbiB3aWxsIGxlYXZlIGEgYnIgYXMgYSBwbGFjZWhvbGRlci4KLSAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUoYnJUYWcpKQorICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShiclRhZykp
IHsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBiZWZvcmVQbGFjZWhvbGRlciA9IGNhcmV0
QWZ0ZXJEZWxldGUucHJldmlvdXModHJ1ZSk7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24g
YWZ0ZXJQbGFjZWhvbGRlciA9IGNhcmV0QWZ0ZXJEZWxldGUubmV4dCh0cnVlKTsKICAgICAgICAg
ICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhub2RlKTsKKyAgICAgICAgICAgIEhUTUxF
bGVtZW50KiBiZWZvcmUgPSBlbmNsb3NpbmdMaXN0KGJlZm9yZVBsYWNlaG9sZGVyKTsKKyAgICAg
ICAgICAgIEhUTUxFbGVtZW50KiBhZnRlciA9IGVuY2xvc2luZ0xpc3QoYWZ0ZXJQbGFjZWhvbGRl
cik7CisgICAgICAgICAgICBpZiAoY2FuTWVyZ2VMaXN0cyhiZWZvcmUsIGFmdGVyKSkKKyAgICAg
ICAgICAgICAgICBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKGJlZm9yZSwgYWZ0ZXIsIE1lcmdlSW50
b0ZpcnN0KTsKKyAgICAgICAgfQogICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIHRvIG1vdmUg
d2FzIGVtcHR5IGFuZCBpbiBhbiBlbXB0eSBibG9jayB0aGF0IAogICAgICAgICAvLyBkb2Vzbid0
IHJlcXVpcmUgYSBwbGFjZWhvbGRlciB0byBwcm9wIGl0c2VsZiBvcGVuIChsaWtlIGEgYm9yZGVy
ZWQKICAgICAgICAgLy8gZGl2IG9yIGFuIGxpKSwgcmVtb3ZlIGl0IGR1cmluZyB0aGUgbW92ZSAo
dGhlIGxpc3QgcmVtb3ZhbCBjb2RlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuaCBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
CmluZGV4IGI0YzNiMmQ3NzY3ZmJkY2QyODNhMTE4N2FhODgyN2NjODBhOWMyODIuLjg2ZDZiNDJj
MmFjMDMwYmMwYjNiZGZmY2M5NzllM2IwODk0MzkyNzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJFZGl0Q29tbWFu
ZC5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJNZXJnZUlkZW50
aWNhbEVsZW1lbnRzRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw3ICs2OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGlu
c2VydExpbmVCcmVhaygpOwogICAgIHZvaWQgaW5zZXJ0VGV4dEludG9Ob2RlKFBhc3NSZWZQdHI8
VGV4dD4sIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKICAgICB2b2lkIGpv
aW5UZXh0Tm9kZXMoUGFzc1JlZlB0cjxUZXh0PiwgUGFzc1JlZlB0cjxUZXh0Pik7Ci0gICAgdm9p
ZCBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKFBhc3NSZWZQdHI8RWxlbWVudD4sIFBhc3NSZWZQdHI8
RWxlbWVudD4pOworICAgIHZvaWQgbWVyZ2VJZGVudGljYWxFbGVtZW50cyhQYXNzUmVmUHRyPEVs
ZW1lbnQ+LCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzRGlyZWN0
aW9uID0gTWVyZ2VJbnRvU2Vjb25kKTsKICAgICB2b2lkIHJlYmFsYW5jZVdoaXRlc3BhY2UoKTsK
ICAgICB2b2lkIHJlYmFsYW5jZVdoaXRlc3BhY2VBdChjb25zdCBQb3NpdGlvbiYpOwogICAgIHZv
aWQgcHJlcGFyZVdoaXRlc3BhY2VBdFBvc2l0aW9uRm9yU3BsaXQoUG9zaXRpb24mKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAgYi9XZWJDb3JlL2Vk
aXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4IGY5MGQ1ZDM4MWY2MTIyNTA1NmNjNTk1
ZGZiOTQ4ZmU3MDZiN2RmZDcuLjIwNDgzNDU4OTAwOTlmYmQ4MDBhZjNkMzBiOTc3MWY4ZjdhOTNj
MWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKKysr
IGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcApAQCAtMTkwLDcgKzE5MCw3
IEBAIHZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHlGb3JTaW5nbGVQYXJhZ3JhcGgoYm9v
bCBmb3JjZUNyZWF0ZUxpc3QsIGNvbnN0IFF1CiAgICAgTm9kZSogbGlzdENoaWxkTm9kZSA9IGVu
Y2xvc2luZ0xpc3RDaGlsZChzZWxlY3Rpb25Ob2RlKTsKICAgICBib29sIHN3aXRjaExpc3RUeXBl
ID0gZmFsc2U7CiAgICAgaWYgKGxpc3RDaGlsZE5vZGUpIHsKLSAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBsaXN0IGNobGlsZC4KKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBsaXN0IGNoaWxkLgogICAgICAg
ICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGxpc3ROb2RlID0gZW5jbG9zaW5nTGlzdChsaXN0Q2hpbGRO
b2RlKTsKICAgICAgICAgaWYgKCFsaXN0Tm9kZSkgewogICAgICAgICAgICAgbGlzdE5vZGUgPSBm
aXhPcnBoYW5lZExpc3RDaGlsZChsaXN0Q2hpbGROb2RlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRp
bmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCmluZGV4IGExY2I3OWZhMTBhMTVi
NGY0YmMyN2U3MDRkODhmOThhZmM5ODcyZjAuLjgwZDU0OTVjY2I0YTcwODMwZjQ4YjI0NDg3Yjg2
MGM0ZjRiMmJkMzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVs
ZW1lbnRzQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxl
bWVudHNDb21tYW5kLmNwcApAQCAtMjUsMTUgKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oIgorI2luY2x1ZGUg
Ik1lcmdlSWRlbnRpY2FsRWxlbWVudHNEaXJlY3Rpb24uaCIKIAogI2luY2x1ZGUgIkVsZW1lbnQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFu
ZDo6TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50PiBmaXJz
dCwgUGFzc1JlZlB0cjxFbGVtZW50PiBzZWNvbmQpCitNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29t
bWFuZDo6TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50PiBm
aXJzdCwgUGFzc1JlZlB0cjxFbGVtZW50PiBzZWNvbmQsIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNE
aXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIDogU2ltcGxlRWRpdENvbW1hbmQoZmlyc3QtPmRvY3Vt
ZW50KCkpCiAgICAgLCBtX2VsZW1lbnQxKGZpcnN0KQogICAgICwgbV9lbGVtZW50MihzZWNvbmQp
CisgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fZWxlbWVudDEp
OwogICAgIEFTU0VSVChtX2VsZW1lbnQyKTsKQEAgLTUwLDE0ICs1MiwxOSBAQCB2b2lkIE1lcmdl
SWRlbnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb0FwcGx5KCkKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKIAogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBjaGlsZHJlbjsKLSAgICBmb3IgKE5v
ZGUqIGNoaWxkID0gbV9lbGVtZW50MS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkKKyAgICBOb2RlKiBzb3VyY2VOb2RlID0gbV9kaXJlY3Rpb24gPT0g
TWVyZ2VJbnRvRmlyc3QgPyBtX2VsZW1lbnQyLmdldCgpIDogbV9lbGVtZW50MS5nZXQoKTsKKyAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gc291cmNlTm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGNoaWxk
KTsKIAogICAgIHNpemVfdCBzaXplID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBtX2VsZW1lbnQyLT5pbnNlcnRCZWZvcmUo
Y2hpbGRyZW5baV0ucmVsZWFzZSgpLCBtX2F0Q2hpbGQuZ2V0KCksIGVjKTsKLQotICAgIG1fZWxl
bWVudDEtPnJlbW92ZShlYyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IE1lcmdlSW50b0ZpcnN0KQorICAgICAgICAg
ICAgbV9lbGVtZW50MS0+YXBwZW5kQ2hpbGQoY2hpbGRyZW5baV0ucmVsZWFzZSgpLCBlYyk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZWxlbWVudDItPmluc2VydEJlZm9yZShjaGlsZHJl
bltpXS5yZWxlYXNlKCksIG1fYXRDaGlsZC5nZXQoKSwgZWMpOworICAgIH0KKworICAgIHNvdXJj
ZU5vZGUtPnJlbW92ZShlYyk7CiB9CiAKIHZvaWQgTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1h
bmQ6OmRvVW5hcHBseSgpCkBAIC02NywyMyArNzQsMzggQEAgdm9pZCBNZXJnZUlkZW50aWNhbEVs
ZW1lbnRzQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIAogICAgIFJlZlB0cjxOb2RlPiBhdENoaWxkID0g
bV9hdENoaWxkLnJlbGVhc2UoKTsKIAotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG1fZWxl
bWVudDItPnBhcmVudCgpOworICAgIE5vZGUqIHRhcmdldE5vZGUgPSBtX2RpcmVjdGlvbiA9PSBN
ZXJnZUludG9GaXJzdCA/IG1fZWxlbWVudDEuZ2V0KCkgOiBtX2VsZW1lbnQyLmdldCgpOworICAg
IENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHRhcmdldE5vZGUtPnBhcmVudCgpOwogICAgIGlmICgh
cGFyZW50IHx8ICFwYXJlbnQtPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAgcGFyZW50LT5pbnNlcnRCZWZvcmUo
bV9lbGVtZW50MS5nZXQoKSwgbV9lbGVtZW50Mi5nZXQoKSwgZWMpOwotICAgIGlmIChlYykKLSAg
ICAgICAgcmV0dXJuOworICAgIGlmIChtX2RpcmVjdGlvbiA9PSBNZXJnZUludG9GaXJzdCkgewor
ICAgICAgICBpZiAocGFyZW50LT5sYXN0Q2hpbGQoKSA9PSBtX2VsZW1lbnQxLmdldCgpKQorICAg
ICAgICAgICAgcGFyZW50LT5hcHBlbmRDaGlsZChtX2VsZW1lbnQyLmdldCgpLCBlYyk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG1fZWxlbWVudDIuZ2V0
KCksIG1fZWxlbWVudDEtPm5leHRTaWJsaW5nKCksIGVjKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBwYXJlbnQtPmluc2VydEJlZm9yZShtX2VsZW1lbnQxLmdldCgpLCBtX2VsZW1lbnQyLmdldCgp
LCBlYyk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gY2hpbGRyZW47Ci0gICAgZm9yIChOb2RlKiBjaGlsZCA9
IG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKTsgY2hpbGQgJiYgY2hpbGQgIT0gYXRDaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGNoaWxk
KTsKIAorICAgIGlmIChtX2RpcmVjdGlvbiA9PSBNZXJnZUludG9GaXJzdCkgeworICAgICAgICBm
b3IgKE5vZGUqIGNoaWxkID0gYXRDaGlsZC5nZXQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCkpCisgICAgICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBtX2VsZW1lbnQyLT5maXJzdENoaWxk
KCk7IGNoaWxkICYmIGNoaWxkICE9IGF0Q2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpCisgICAgICAgICAgICBjaGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIH0KKworICAgIE5v
ZGUqIHNvdXJjZU5vZGUgPSBtX2RpcmVjdGlvbiA9PSBNZXJnZUludG9GaXJzdCA/IG1fZWxlbWVu
dDIuZ2V0KCkgOiBtX2VsZW1lbnQxLmdldCgpOwogICAgIHNpemVfdCBzaXplID0gY2hpbGRyZW4u
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBt
X2VsZW1lbnQxLT5hcHBlbmRDaGlsZChjaGlsZHJlbltpXS5yZWxlYXNlKCksIGVjKTsKKyAgICAg
ICAgc291cmNlTm9kZS0+YXBwZW5kQ2hpbGQoY2hpbGRyZW5baV0ucmVsZWFzZSgpLCBlYyk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9N
ZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oIGIvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRl
bnRpY2FsRWxlbWVudHNDb21tYW5kLmgKaW5kZXggMWNlNjMwMmFlYzkzY2Q0NzBiOWFhYjMzZmQ5
MzM2MWYyOGVkMzRkNy4uZjUxYzQ3ZjgzMjYwMjQzZjVkOTIyMDg2NDI3OGMxOGMwMDk2M2VlNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5k
LmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgK
QEAgLTI3LDE4ICsyNywxOSBAQAogI2RlZmluZSBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFu
ZF9oCiAKICNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgorI2luY2x1ZGUgIk1lcmdlSWRlbnRpY2Fs
RWxlbWVudHNEaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZXJn
ZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29tbWFuZCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1h
bmQ+IGNyZWF0ZShQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQxLCBQYXNzUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lcmdlSWRlbnRpY2FsRWxlbWVu
dHNDb21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50MSwgUGFzc1JlZlB0
cjxFbGVtZW50PiBlbGVtZW50MiwgTWVyZ2VJZGVudGljYWxFbGVtZW50c0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lcmdlSWRlbnRpY2Fs
RWxlbWVudHNDb21tYW5kKGVsZW1lbnQxLCBlbGVtZW50MikpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kKGVsZW1lbnQxLCBlbGVtZW50
MiwgZGlyZWN0aW9uKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIE1lcmdlSWRlbnRpY2FsRWxl
bWVudHNDb21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4sIFBhc3NSZWZQdHI8RWxlbWVudD4pOwor
ICAgIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4sIFBh
c3NSZWZQdHI8RWxlbWVudD4sIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNEaXJlY3Rpb24pOwogCiAg
ICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5KCk7
CkBAIC00Niw2ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVu
dDE7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDI7CiAgICAgUmVmUHRyPE5vZGU+IG1f
YXRDaGlsZDsKKyAgICBNZXJnZUlkZW50aWNhbEVsZW1lbnRzRGlyZWN0aW9uIG1fZGlyZWN0aW9u
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0
aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNEaXJlY3Rpb24uaCBiL1dlYkNvcmUvZWRpdGluZy9N
ZXJnZUlkZW50aWNhbEVsZW1lbnRzRGlyZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM1MDM1ODU0OTI5
NmRkN2RiZGZmNDJhMzcwMmQwZmY4N2ViMjVjOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzRGlyZWN0aW9uLmgKQEAgLTAsMCArMSw0MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWVyZ2VJZGVudGljYWxFbGVtZW50c0RpcmVjdGlvbl9oCisjZGVmaW5lIE1l
cmdlSWRlbnRpY2FsRWxlbWVudHNEaXJlY3Rpb25faAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3R5cGVkZWYgZW51bSB7CisgICAgTWVyZ2VJbnRvRmlyc3QsCisgICAgTWVyZ2VJbnRvU2Vjb25k
LAorfSBNZXJnZUlkZW50aWNhbEVsZW1lbnRzRGlyZWN0aW9uOworCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1dlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHAKaW5kZXggZjhmMDJiOTRhMTc3NDcwZTQ4NDc0YmM1ZDEyY2I0YTZk
MmE4ZDdjZi4uOWMwYzU0MDUwZjk2YzRjYzRkZWU5Mjc1ZmNhYWIwYWE5YjI5OTUzYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAorKysgYi9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwCkBAIC03MTYsNiArNzE2LDExIEBAIEhUTUxFbGVtZW50KiBlbmNs
b3NpbmdMaXN0KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKK0hUTUxFbGVtZW50KiBl
bmNsb3NpbmdMaXN0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAgcmV0
dXJuIGVuY2xvc2luZ0xpc3QocG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOworfQor
CiBIVE1MRWxlbWVudCogZW5jbG9zaW5nTGlzdENoaWxkKE5vZGUgKm5vZGUpCiB7CiAgICAgaWYg
KCFub2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmggYi9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAppbmRleCAxODkyMzU3YTMyZDY4NjJkNDY0MmE2OGZm
OWVmNzAyNzkzODY5YTFjLi5kNDc5Mzk4N2JiNGFiOTRjNmYxYmEyZDEzZmVkZTZkMDE5Y2UwMGY1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvaHRtbGVkaXRpbmcuaApAQCAtMTk0LDYgKzE5NCw3IEBAIFBhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlSFRNTEVsZW1lbnQoRG9jdW1lbnQq
LCBjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogSFRNTEVsZW1lbnQqIGVuY2xvc2luZ0xpc3QoTm9k
ZSopOworSFRNTEVsZW1lbnQqIGVuY2xvc2luZ0xpc3QoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7
CiBIVE1MRWxlbWVudCogb3V0ZXJtb3N0RW5jbG9zaW5nTGlzdChOb2RlKiwgTm9kZSogcm9vdExp
c3QgPSAwKTsKIEhUTUxFbGVtZW50KiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSopOwogCg==
</data>
<flag name="review"
          id="62316"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>