<?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>26483</bug_id>
          
          <creation_ts>2009-06-17 10:36:12 -0700</creation_ts>
          <short_desc>select-all, copy, paste of specialAncestorElements (e.g. pre, h1, etc) nests the element inside itself</short_desc>
          <delta_ts>2011-11-25 16:37:22 -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>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>34564</dependson>
    
    <dependson>44220</dependson>
    
    <dependson>65804</dependson>
    
    <dependson>66396</dependson>
    
    <dependson>66416</dependson>
    
    <dependson>66420</dependson>
    
    <dependson>66440</dependson>
    
    <dependson>66443</dependson>
    
    <dependson>66448</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>adele</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>126486</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-06-17 10:36:12 -0700</bug_when>
    <thetext>&lt;pre contentEditable id=bar&gt;foo&lt;/pre&gt;

If you select all, then copy/paste the above, you get:
&lt;pre contentEditable id=bar&gt;&lt;span ...&gt;&lt;pre contentEditable id=bar&gt;foo&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;

Which is clearly wrong. :) You get the same for headers and a few other tags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126491</commentid>
    <comment_count>1</comment_count>
      <attachid>31423</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-06-17 11:01:10 -0700</bug_when>
    <thetext>Created attachment 31423
Don&apos;t treat editable elements as special ancestor blocks.

 7 files changed, 88 insertions(+), 10 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130073</commentid>
    <comment_count>2</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-07-06 18:07:01 -0700</bug_when>
    <thetext>Actually, I think this is the wrong change. There&apos;s a more general bug that should be fixed and then this would go away. 

&lt;div contentEditable&gt;
  a
  &lt;pre id=foo&gt;bar&lt;/pre&gt;
  b
&lt;/div&gt;

Select &quot;bar&quot;. Then copy and paste over it. You get 

&lt;div contentEditable&gt;
  a
  &lt;pre id=&quot;foo&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: verdana; white-space: normal; &quot;&gt;&lt;pre id=&quot;foo&quot;&gt;bar&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;
  b
&lt;/div&gt;

Which is also wrong. The contents should be unmodified if you copy and then paste over what you just copied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130074</commentid>
    <comment_count>3</comment_count>
      <attachid>31423</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-07-06 18:07:33 -0700</bug_when>
    <thetext>Comment on attachment 31423
Don&apos;t treat editable elements as special ancestor blocks.

Doesn&apos;t fix the general case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136459</commentid>
    <comment_count>4</comment_count>
      <attachid>31423</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-08-01 09:04:35 -0700</bug_when>
    <thetext>Comment on attachment 31423
Don&apos;t treat editable elements as special ancestor blocks.

Removing r+ to get out of approved patches queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140286</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-14 11:32:10 -0700</bug_when>
    <thetext>I haven&apos;t looked into the bug, but my intuition is that copying special ancestor block is fine.  It&apos;s just that we need to delete them when we are pasting.  i.e. we shouldn&apos;t be pasting pre/h2 when the same element wraps the selection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202277</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-03-21 01:47:46 -0700</bug_when>
    <thetext>+tony since this bug seems to be related to the bug 26937 and the bug 34564.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412542</commentid>
    <comment_count>7</comment_count>
      <attachid>95414</attachid>
    <who name="Garry Yao">yaojun85</who>
    <bug_when>2011-05-31 03:59:37 -0700</bug_when>
    <thetext>Created attachment 95414
Reduced HTML sample to reproduce</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412544</commentid>
    <comment_count>8</comment_count>
      <attachid>95414</attachid>
    <who name="Garry Yao">yaojun85</who>
    <bug_when>2011-05-31 04:02:23 -0700</bug_when>
    <thetext>Comment on attachment 95414
Reduced HTML sample to reproduce

Sorry, head to the wrong ticket.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445982</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 11:55:39 -0700</bug_when>
    <thetext>*** Bug 65591 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446076</commentid>
    <comment_count>10</comment_count>
      <attachid>102823</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 14:08:42 -0700</bug_when>
    <thetext>Created attachment 102823
not comlete but fixes the bug in many cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446102</commentid>
    <comment_count>11</comment_count>
      <attachid>102823</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-03 14:50:26 -0700</bug_when>
    <thetext>Comment on attachment 102823
not comlete but fixes the bug in many cases

Attachment 102823 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9306097

New failing tests:
editing/pasteboard/paste-text-011.html
editing/pasteboard/paste-pre-001.html
editing/pasteboard/paste-pre-002.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446109</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 14:55:42 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 102823 [details])
&gt; Attachment 102823 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/9306097
&gt; 
&gt; New failing tests:
&gt; editing/pasteboard/paste-text-011.html
&gt; editing/pasteboard/paste-pre-001.html
&gt; editing/pasteboard/paste-pre-002.html

These are failing because they need rebaselines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446110</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 14:56:14 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; These are failing because they need rebaselines.

Chromium Windows/Linux specific rebaselines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446205</commentid>
    <comment_count>14</comment_count>
      <attachid>102823</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-08-03 16:32:18 -0700</bug_when>
    <thetext>Comment on attachment 102823
not comlete but fixes the bug in many cases

The change looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446213</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 16:36:53 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 102823 [details])
&gt; The change looks good to me

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446221</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 16:42:30 -0700</bug_when>
    <thetext>Committed r92330: &lt;http://trac.webkit.org/changeset/92330&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446223</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-03 16:42:59 -0700</bug_when>
    <thetext>I&apos;ll really appreciate if you could also review my patch for https://bugs.webkit.org/show_bug.cgi?id=34564.  The patch will eliminate the wrapping span in most cases and pave the way to get rid of Apple style span.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447528</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 18:38:02 -0700</bug_when>
    <thetext>Oops, I realized that this patch caused a bunch of regression while I was working on the bug 34564 :(

e.g. It will ignore styles set on block elements such as div. In the following example, if you copy &quot;world&quot; into &quot;hello&quot;, the text is no longer aligned to the right.
http://simple-rte.rniwa.com/?editor=%3Cp%20style%3D%22text-align%3A%20right%3B%22%3E%3Cbr%3E%3C/p%3E%0A%3Cp%3Eworld%3C/p%3E&amp;designmode=false&amp;script=document.getElementById%28%27editor%27%29.focus%28%29%3B

I&apos;m going to rollout the patch, and I think about how to fix it properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447531</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 18:41:44 -0700</bug_when>
    <thetext>Basically, we need a function like below to make sure the element we&apos;re splitting doesn&apos;t have attributes to preserve.

static bool hasIdenticalWrapper(Node* startNode, HTMLElement* element)
{
    if (!startNode)
        return false;

    for (Node* wrapper = startNode; wrapper; wrapper = wrapper-&gt;firstChild() == wrapper-&gt;lastChild() ? wrapper-&gt;firstChild() : 0) {
        if (!wrapper-&gt;hasTagName(element-&gt;tagQName()) || !wrapper-&gt;isHTMLElement())
            continue;

        NamedNodeMap* attributesOnElement = element-&gt;attributeMap();
        if (!attributesOnElement)
            return true;

        bool checkStyle = false;
        unsigned i;
        for (i = 0; i &lt; attributesOnElement-&gt;length(); i++) {
            Attribute* attribute = attributesOnElement-&gt;attributeItem(i);
            if (attribute-&gt;name() == styleAttr) {
                checkStyle = true;
                continue;
            }
            if (attribute-&gt;value() != element-&gt;getAttribute(attribute-&gt;name()))
                break;
        }
        if (i &gt;= attributesOnElement-&gt;length()) {
            if (checkStyle) {
                RefPtr&lt;CSSMutableStyleDeclaration&gt; styleOfWrapper = static_cast&lt;HTMLElement*&gt;(wrapper)-&gt;inlineStyleDecl();
                RefPtr&lt;CSSMutableStyleDeclaration&gt; styleOfElement = element-&gt;getInlineStyleDecl();
                if (styleOfWrapper &amp;&amp; styleOfWrapper-&gt;length()) {
                    if (!styleOfElement || styleOfElement-&gt;length())
                        continue;
                    styleOfWrapper = styleOfWrapper-&gt;copy();
                    styleOfElement-&gt;diff(styleOfWrapper.get());
                    if (styleOfWrapper-&gt;length())
                        continue;
                }
            }
            return true;
        }
    }

    return false;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447536</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 18:47:31 -0700</bug_when>
    <thetext>Now that I think about it more carefully, the trick I thought I can use to fix this bug was based on a false assumption, and this bug indeed depends on the bug 34564.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452078</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-16 19:56:34 -0700</bug_when>
    <thetext>*** Bug 24009 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452080</commentid>
    <comment_count>22</comment_count>
      <attachid>104141</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-16 20:00:52 -0700</bug_when>
    <thetext>Created attachment 104141
work in progress

Now that the bug 34564 has been fixed, I can tackle this bug again.   I still have to add logic to preserve styles of removed block elements, and about 15 tests still fail but this is a good start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462915</commentid>
    <comment_count>23</comment_count>
      <attachid>102823</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-06 15:29:36 -0700</bug_when>
    <thetext>Comment on attachment 102823
not comlete but fixes the bug in many cases

Cleared Enrica Casucci&apos;s review+ from obsolete attachment 102823 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509295</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-25 16:37:22 -0800</bug_when>
    <thetext>I believe this bug has been fixed by my other patches.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31423</attachid>
            <date>2009-06-17 11:01:10 -0700</date>
            <delta_ts>2009-08-01 09:04:35 -0700</delta_ts>
            <desc>Don&apos;t treat editable elements as special ancestor blocks.</desc>
            <filename>Don-t-treat-editable-elements-as-special-ancestor-blocks..patch</filename>
            <type>text/plain</type>
            <size>6799</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">NjJhNTc1NWE5ZjMzMzAyMzM4ZGYzZmM4NzRhMjMxYzljNmU5OGY5MgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFjOWVhNDEu
LjM3YjAzNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wNi0xNyAgT2phbiBWYWZhaSAg
PG9qYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERvbid0IHRyZWF0IGVkaXRhYmxlIGVsZW1lbnRzIGFzIHNwZWNpYWwgYW5j
ZXN0b3IgYmxvY2tzLiBTcGVjaWFsIGFuY2VzdG9yIGJsb2NrcyBhcmUKKyAgICAgICAgaW5jbHVk
ZWQgaW4gdGhlIEhUTUwgdGhhdCBnZXRzIHNlbnQgdG8gdGhlIGNsaXBib2FyZCwgc28gd2Ugd291
bGQgaW5jb3JyZWN0bHkgcHV0CisgICAgICAgIHRoZSBjb250ZW50RWRpdGFibGUgbm9kZSBpdHNl
bGYgb24gdGhlIGNsaXBib2FyZC4gVGhpcyBjYXVzZXMgbG90cyBvZiBwcm9ibGVtcywgZS5nLiwK
KyAgICAgICAgaWYgeW91IHNlbGVjdC1hbGwrY29weStwYXN0ZSBpbiBhIGNvbnRlbnRFZGl0YWJs
ZSBwcmUgdGFnLCB0aGUgY29udGVudEVkaXRhYmxlIGVsZW1lbnQKKyAgICAgICAgZ2V0cyBkdXBs
aWNhdGVkIGFuZCBwbGFjZWQgaW5zaWRlIGl0c2VsZi4KKyAgICAgICAgCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ4MworCisgICAgICAgICogZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtZWRpdGFibGUtc3BlY2lhbC1hbmNlc3Rvci1jb250
YWluZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJk
L2NvcHktcGFzdGUtZWRpdGFibGUtc3BlY2lhbC1hbmNlc3Rvci1jb250YWluZXJzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9yZXNvdXJjZXMvY29weS1wYXN0ZS1l
ZGl0YWJsZS1zcGVjaWFsLWFuY2VzdG9yLWNvbnRhaW5lcnMuanM6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTAyNzg1Ny1leHBlY3RlZC50eHQ6CisK
IDIwMDktMDYtMTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBTa2lwcGVkIGZpbGUgZm9ybWF0IGFmdGVyIHI0NDUxOQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtZWRpdGFibGUtc3BlY2lhbC1hbmNlc3Rv
ci1jb250YWluZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9jb3B5LXBhc3RlLWVkaXRhYmxlLXNwZWNpYWwtYW5jZXN0b3ItY29udGFpbmVycy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdiMWQyNwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWVk
aXRhYmxlLXNwZWNpYWwtYW5jZXN0b3ItY29udGFpbmVycy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorVGVzdHMgdGhhdCBzcGVjaWFsIGFuY2VzdG9yIGNvbnRhaW5lciBub2RlcyB0aGF0
IGFyZSBjb250ZW50RWRpdGFibGUgZG9uJ3QgZ2V0IGFkZGVkIHRvIHRoZSBjbGlwYm9hcmQuIENh
bm5vdCBiZSBydW4gbWFudWFsbHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIFNVQ0NFU1M6IHByZQorUEFTUyBTVUNDRVNTOiBoMQorUEFTUyBTVUNDRVNTOiB4bXAKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1lZGl0YWJsZS1z
cGVjaWFsLWFuY2VzdG9yLWNvbnRhaW5lcnMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9jb3B5LXBhc3RlLWVkaXRhYmxlLXNwZWNpYWwtYW5jZXN0b3ItY29udGFpbmVycy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YzBjZWYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1lZGl0
YWJsZS1zcGVjaWFsLWFuY2VzdG9yLWNvbnRhaW5lcnMuaHRtbApAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9jb3B5LXBhc3RlLWVkaXRhYmxlLXNwZWNpYWwtYW5jZXN0b3ItY29udGFpbmVycy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9yZXNvdXJjZXMvY29weS1wYXN0ZS1lZGl0YWJsZS1z
cGVjaWFsLWFuY2VzdG9yLWNvbnRhaW5lcnMuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcmVzb3VyY2VzL2NvcHktcGFzdGUtZWRpdGFibGUtc3BlY2lhbC1hbmNlc3Rvci1jb250
YWluZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwOTZlZTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcmVzb3VyY2Vz
L2NvcHktcGFzdGUtZWRpdGFibGUtc3BlY2lhbC1hbmNlc3Rvci1jb250YWluZXJzLmpzCkBAIC0w
LDAgKzEsMjUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNwZWNpYWwgYW5jZXN0b3IgY29u
dGFpbmVyIG5vZGVzIHRoYXQgYXJlIGNvbnRlbnRFZGl0YWJsZSBkb24ndCBnZXQgYWRkZWQgdG8g
dGhlIGNsaXBib2FyZC4gQ2Fubm90IGJlIHJ1biBtYW51YWxseS4iKTsKKwordmFyIHdyYXBwZXIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQod3JhcHBlcik7CisKK3ZhciB0YWdzID0gWydwcmUnLCAnaDEnLCAneG1wJ107CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgdGFncy5sZW5ndGg7IGkrKykgeworICAgIHZhciB0YWcgPSB0YWdzW2ld
OworICAgIHZhciBodG1sID0gJzwnICsgdGFnICsgJyBpZD0iZWRpdGFibGUiIGNvbnRlbnRlZGl0
YWJsZT0iIj5mb288LycgKyB0YWcgKyAnPic7CisgICAgd3JhcHBlci5pbm5lckhUTUwgPSBodG1s
OworICAgIGVkaXRhYmxlLmZvY3VzKCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVj
dEFsbCIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDb3B5Iik7CisgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIlBhc3RlIik7CisKKyAgICBpZiAod3JhcHBlci5pbm5lckhUTUwgPT0gaHRt
bCkKKyAgICAgICAgdGVzdFBhc3NlZCgiU1VDQ0VTUzogIiArIHRhZyk7CisgICAgZWxzZQorICAg
ICAgICB0ZXN0RmFpbGVkKCJQYXN0ZWQgaHRtbCB3YXM6ICIgKyB3cmFwcGVyLmlubmVySFRNTCAr
ICIgU2hvdWxkIGJlOiAiICsgaHRtbCk7Cit9CisKK2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
d3JhcHBlcik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC81MDI3ODU3LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTAy
Nzg1Ny1leHBlY3RlZC50eHQKaW5kZXggMjllNjk4MS4uZjA2N2E5MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC81MDI3ODU3LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkLzUw
Mjc4NTctZXhwZWN0ZWQudHh0CkBAIC0xMCwxMiArMTAsNiBAQCBsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMTM0OiAiZm9ybSBv
ZiB0aGF0IG1hcmt1cC4gIgogICAgICAgICAgIHRleHQgcnVuIGF0ICgxMzQsMTgpIHdpZHRoIDMz
MzogIllvdSBzaG91bGQgc2VlIG1hcmt1cCBpbiB0aGUgZWRpdGFibGUgcmVnaW9uIGJlbG93LiIK
ICAgICAgIFJlbmRlckJsb2NrIHtQUkV9IGF0ICgwLDUyKSBzaXplIDc4NHgxNQotICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgwCi0gICAgICAgICAgUmVu
ZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJCbG9jayAo
YW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgxNQotICAgICAgICAgIFJlbmRlckJsb2NrIHtQ
UkV9IGF0ICgwLDApIHNpemUgNzg0eDE1Ci0gICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAzMjh4MTUKLSAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMzI4OiAiPGlucHV0IHR5cGU9J2J1dHRvbic+Zm9vPGJyPmJhcjxiPmJhejwvYj4iCi0gICAg
ICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDI4KSBzaXplIDc4NHgwCi0gICAgICAg
ICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotY2FyZXQ6IHBvc2l0aW9u
IDQxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtQUkV9IG9mIGNoaWxkIDAge1NQQU59
IG9mIGNoaWxkIDIge1BSRX0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2Yg
ZG9jdW1lbnQKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzI4eDE1
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzI4OiAiPGlucHV0IHR5cGU9J2J1
dHRvbic+Zm9vPGJyPmJhcjxiPmJhejwvYj4iCitjYXJldDogcG9zaXRpb24gNDEgb2YgY2hpbGQg
MCB7I3RleHR9IG9mIGNoaWxkIDIge1BSRX0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7
SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNzQzZjM1Ny4uMDUwN2NlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0w
Ni0xNyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvbid0IHRyZWF0IGVkaXRhYmxlIGVsZW1l
bnRzIGFzIHNwZWNpYWwgYW5jZXN0b3IgYmxvY2tzLiBTcGVjaWFsIGFuY2VzdG9yIGJsb2NrcyBh
cmUKKyAgICAgICAgaW5jbHVkZWQgaW4gdGhlIEhUTUwgdGhhdCBnZXRzIHNlbnQgdG8gdGhlIGNs
aXBib2FyZCwgc28gd2Ugd291bGQgaW5jb3JyZWN0bHkgcHV0CisgICAgICAgIHRoZSBjb250ZW50
RWRpdGFibGUgbm9kZSBpdHNlbGYgb24gdGhlIGNsaXBib2FyZC4gVGhpcyBjYXVzZXMgbG90cyBv
ZiBwcm9ibGVtcywgZS5nLiwKKyAgICAgICAgaWYgeW91IHNlbGVjdC1hbGwrY29weStwYXN0ZSBp
biBhIGNvbnRlbnRFZGl0YWJsZSBwcmUgdGFnLCB0aGUgY29udGVudEVkaXRhYmxlIGVsZW1lbnQK
KyAgICAgICAgZ2V0cyBkdXBsaWNhdGVkIGFuZCBwbGFjZWQgaW5zaWRlIGl0c2VsZi4KKyAgICAg
ICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ4
MworCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWVkaXRhYmxl
LXNwZWNpYWwtYW5jZXN0b3ItY29udGFpbmVycy5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1NwZWNpYWxBbmNlc3RvckJsb2NrKToKKwog
MjAwOS0wNi0xNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBkNmZlMWNlLi5mNGQ4
MjMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzM4LDcgKzczOCw3IEBAIHN0YXRpYyBTdHJpbmcgam9p
bk1hcmt1cHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHByZU1hcmt1cHMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+CiAKIHN0YXRpYyBib29sIGlzU3BlY2lhbEFuY2VzdG9yQmxvY2soTm9kZSogbm9kZSkK
IHsKLSAgICBpZiAoIW5vZGUgfHwgIWlzQmxvY2sobm9kZSkpCisgICAgaWYgKCFub2RlIHx8ICFp
c0Jsb2NrKG5vZGUpIHx8IG5vZGUgPT0gbm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1l
KGxpc3RpbmdUYWcpIHx8Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>95414</attachid>
            <date>2011-05-31 03:59:37 -0700</date>
            <delta_ts>2011-05-31 04:02:23 -0700</delta_ts>
            <desc>Reduced HTML sample to reproduce</desc>
            <filename>61997.html</filename>
            <type>text/html</type>
            <size>1345</size>
            <attacher name="Garry Yao">yaojun85</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KCTx0aXRsZT5SZXByb2R1Y2UgV2Via2l0
IEJ1ZyAtICM2MTc3OTwvdGl0bGU+DQoJPHN0eWxlPg0KCQl0ZXh0YXJlYQ0KCQl7DQoJCQl3aWR0
aDozMDBweDsNCgkJCWhlaWdodDoxMDBweDsNCgkJfQ0KCTwvc3R5bGU+DQoJPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPg0KCSB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gb25GcmFtZUxv
YWQoKQ0KCXsNCgkJdmFyIHd5c2l3eWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid3lzaXd5
ZyIpOw0KCQl2YXIgZG9jID0gd3lzaXd5Zy5jb250ZW50V2luZG93LmRvY3VtZW50Ow0KCQlkb2Mu
d3JpdGUoJzxodG1sIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+
PHN0eWxlPiBib2R5eyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB9PC9zdHlsZT48L2hlYWQ+PHA+
cGFyYWdyYXBoMTwvcD48cD5wYXJhZ3JhcGgyPC9wPjwvaHRtbD4nKTsNCgkJZG9jLmNsb3NlKCk7
DQoJfQ0KPC9zY3JpcHQ+DQo8L2hlYWQ+DQo8Ym9keT4NCjxvbD4NCgk8bGk+UHV0IGN1cnNvciBp
bnNpZGUgdGhlIGJlbG93IGlmcmFtZSBkb2N1bWVudDs8L2xpPg0KCTxsaT5DdHJsLUMgYWxsIGNv
bnRlbnQgdG8gY2xpcGJvYXJkIGFmdGVyIHNlbGVjdGluZyB3aXRoIEN0cmwtQTs8L2xpPg0KCTxs
aT5Nb3ZlIGN1cnNvciBhdCB0aGUgZW5kIG9mIGlmcmFtZSBkb2N1bWVudDs8L2xpPg0KCTxsaT5Q
YXN0ZSB3aXRoIEN0cmwtVi48L2xpPg0KCTxsaT5DaGVjayBpZnJhbWUgY29udGVudCB3aXRoIGlu
c3BlY3RvcjwvbGk+DQo8L29sPg0KPHVsPg0KCTxsaT5FeHBlY3RlZCBSZXN1bHQ6PGJyIC8+DQoJ
CTx0ZXh0YXJlYT48Ym9keT48cD5wYXJhZ3JhcGgxPC9wPjxwPnBhcmFncmFwaDJwYXJhZ3JhcGgx
PC9wPjxwPnBhcmFncmFwaDI8L3A+PC9ib2R5PjwvdGV4dGFyZWE+DQoJPC9saT4NCgk8bGk+QWN0
dWFsIFJlc3VsdDogTGFzdCBwYXJhZ3JhcGggaXMgd3JhcHBlZCBpbiBhbiBleHRyYSBkaXYgY2Fy
cmllcyB0aGUgY29tcHV0ZWQgc3R5bGUgb2YgYm9keSBlbGVtZW50LjxiciAvPg0KCQk8dGV4dGFy
ZWE+PGJvZHk+PHA+cGFyYWdyYXBoMTwvcD48cD5wYXJhZ3JhcGgycGFyYWdyYXBoMTwvcD48ZGl2
IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7ICI+PHA+cGFyYWdy
YXBoMjwvcD48L2Rpdj48L2JvZHk+PC90ZXh0YXJlYT4NCgk8L2xpPg0KPC91bD4NCjxpZnJhbWUg
aWQ9Ind5c2l3eWciIHNyYz0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmxvYWQ9Im9uRnJhbWVMb2Fk
KCk7Ij48L2lmcmFtZT4NCjwvYm9keT4NCjwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102823</attachid>
            <date>2011-08-03 14:08:42 -0700</date>
            <delta_ts>2011-09-06 15:29:36 -0700</delta_ts>
            <desc>not comlete but fixes the bug in many cases</desc>
            <filename>bug-26483-20110803140841.patch</filename>
            <type>text/plain</type>
            <size>18050</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMzA5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgc2VsZWN0LWFsbCwgY29weSwgcGFz
dGUgb2Ygc3BlY2lhbEFuY2VzdG9yRWxlbWVudHMgKGUuZy4gcHJlLCBoMSwgZXRjKSBuZXN0cyB0
aGUgZWxlbWVudCBpbnNpZGUgaXRzZWxmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjQ4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBXZWJLaXQgc2VyaWFsaXppbmcg
cHJlLCBoMSwgZXRjLi4uIHRvIHJldGFpbiBzdHJ1Y3R1cmUgYW5kIGFwcGVhcmFuY2Ugd2hlbiBj
b3B5aW5nCisgICAgICAgIHJpY2ggY29udGVudCBhbmQgcGFzdGluZyBkaWQgbm90IHJlbW92ZSBz
dWNoIG5vZGVzIHdyYXBwaW5nIHRoZSBjb3BpZWQgY29udGVudHMuCisKKyAgICAgICAgRml4ZWQg
dGhlIGJ1ZyBieSBleHRlbmRpbmcgcjgxODg3IGFuZCByODMzMjIgdG8gcmVtb3ZlIHRob3NlIGVs
ZW1lbnRzIGZyb20gd2hlcmUgV2ViS2l0IHBhc3RlcyBpbnRvLgorCisgICAgICAgIFRlc3Q6IGVk
aXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLXRleHQtaW4taDEuaHRtbAorCisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpu
b2RlSGFzQXR0cmlidXRlc1RvUHJlc2VydmUpOiBFeHRyYWN0ZWQgZnJvbSBpc0lubGluZU5vZGVX
aXRoU3R5bGUuCisgICAgICAgIChXZWJDb3JlOjppc0lubGluZU5vZGVXaXRoU3R5bGUpOiBDYWxs
cyBub2RlSGFzQXR0cmlidXRlc1RvUHJlc2VydmUuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6IENhbGxzIGFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1
cmVBbmRBcHBlYXJhbmNlLgorICAgICAgICBSZW1vdmUgbm9kZXMgY29waWVkIGJ5IGFuY2VzdG9y
VG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlIGF0IGluc2VydGlvblBvcyBiZWZvcmUgcGFz
dGluZyB0aGUgZnJhZ21lbnQuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuZEFwcGVhcmFuY2UpOiBUYWtl
cyBTaG91bGRJbmNsdWRlUGFyYWdyYXBoU2VwYXJhdG9ycy4KKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5oOgorCiAyMDExLTA4LTAzICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggQ2hyb21pbXVtIGFuZCBRdCBidWlsZHMgYWZ0ZXIgcjkyMzA4LgpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAJKHJldmlzaW9uIDkyMjg5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw2ICs3NjAsMTIgQEAgc3Rh
dGljIE5vZGUqIGVuY2xvc2luZ0lubGluZShOb2RlKiBub2RlKQogICAgIHJldHVybiBub2RlOwog
fQogCitzdGF0aWMgYm9vbCBub2RlSGFzQXR0cmlidXRlc1RvUHJlc2VydmUoY29uc3QgSFRNTEVs
ZW1lbnQqIGVsZW1lbnQpCit7CisgICAgY29uc3QgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAg
PSBlbGVtZW50LT5hdHRyaWJ1dGVNYXAoKTsKKyAgICByZXR1cm4gYXR0cmlidXRlTWFwICYmICFh
dHRyaWJ1dGVNYXAtPmlzRW1wdHkoKSAmJiAoYXR0cmlidXRlTWFwLT5sZW5ndGgoKSA+IDEgfHwg
IWVsZW1lbnQtPmhhc0F0dHJpYnV0ZShzdHlsZUF0dHIpKTsKK30KKwogc3RhdGljIGJvb2wgaXNJ
bmxpbmVOb2RlV2l0aFN0eWxlKGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBza2lwIG92ZXIgYW55IGJsb2NrIGVsZW1lbnRzLgpAQCAtNzgxLDExICs3ODcsNyBA
QCBzdGF0aWMgYm9vbCBpc0lubGluZU5vZGVXaXRoU3R5bGUoY29uc3QgCiAKICAgICAvLyBXZSBj
YW4gc2tpcCBpbmxpbmUgZWxlbWVudHMgdGhhdCBkb24ndCBoYXZlIGF0dHJpYnV0ZXMgb3Igd2hv
c2Ugb25seQogICAgIC8vIGF0dHJpYnV0ZSBpcyB0aGUgc3R5bGUgYXR0cmlidXRlLgotICAgIGNv
bnN0IE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gZWxlbWVudC0+YXR0cmlidXRlTWFwKCk7
Ci0gICAgaWYgKCFhdHRyaWJ1dGVNYXAgfHwgYXR0cmlidXRlTWFwLT5pc0VtcHR5KCkgfHwgKGF0
dHJpYnV0ZU1hcC0+bGVuZ3RoKCkgPT0gMSAmJiBlbGVtZW50LT5oYXNBdHRyaWJ1dGUoc3R5bGVB
dHRyKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiAhbm9kZUhhc0F0dHJpYnV0ZXNUb1ByZXNlcnZlKHN0YXRpY19jYXN0PGNvbnN0IEhUTUxF
bGVtZW50Kj4obm9kZSkpOwogfQogICAgIAogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
ZG9BcHBseSgpCkBAIC05MzcsMTYgKzkzOSwyMSBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpkb0FwcGx5KCkKICAgICAvLyBXZSBjYW4gc2tpcCB0aGlzIG9wdGltaXphdGlvbiBmb3Ig
ZnJhZ21lbnRzIG5vdCB3cmFwcGVkIGluIG9uZSBvZgogICAgIC8vIG91ciBzdHlsZSBzcGFucyBh
bmQgZm9yIHBvc2l0aW9ucyBpbnNpZGUgbGlzdCBpdGVtcwogICAgIC8vIHNpbmNlIGluc2VydEFz
TGlzdEl0ZW1zIGFscmVhZHkgZG9lcyB0aGUgcmlnaHQgdGhpbmcuCi0gICAgaWYgKCFtX21hdGNo
U3R5bGUgJiYgIWVuY2xvc2luZ0xpc3QoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKSkgJiYg
aXNTdHlsZVNwYW4oZnJhZ21lbnQuZmlyc3RDaGlsZCgpKSkgeworICAgIGlmICghbV9tYXRjaFN0
eWxlICYmICFlbmNsb3NpbmdMaXN0KGluc2VydGlvblBvcy5jb250YWluZXJOb2RlKCkpICYmIGlz
U3R5bGVTcGFuKGZyYWdtZW50LmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgJiYgVmlzaWJsZVBvc2l0
aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKSkpID09
IFZpc2libGVQb3NpdGlvbihsYXN0UG9zaXRpb25Jbk5vZGUoaW5zZXJ0aW9uUG9zLmNvbnRhaW5l
ck5vZGUoKSkpKSB7CiAgICAgICAgIGlmIChpbnNlcnRpb25Qb3MuY29udGFpbmVyTm9kZSgpLT5p
c1RleHROb2RlKCkgJiYgaW5zZXJ0aW9uUG9zLm9mZnNldEluQ29udGFpbmVyTm9kZSgpICYmICFp
bnNlcnRpb25Qb3MuYXRMYXN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpKSB7CiAgICAgICAgICAg
ICBzcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lclRl
eHQoKSwgaW5zZXJ0aW9uUG9zLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKICAgICAgICAgICAg
IGluc2VydGlvblBvcyA9IGZpcnN0UG9zaXRpb25Jbk5vZGUoaW5zZXJ0aW9uUG9zLmNvbnRhaW5l
ck5vZGUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogaXNJbmxpbmVOb2RlV2l0
aFN0eWxlIGRvZXMgbm90IGNoZWNrIGVkaXRhYmlsaXR5LgotICAgICAgICBpZiAoUmVmUHRyPE5v
ZGU+IG5vZGVUb1NwbGl0VG8gPSBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Q
b3MsIGlzSW5saW5lTm9kZVdpdGhTdHlsZSkpIHsKLSAgICAgICAgICAgIGlmIChpbnNlcnRpb25Q
b3MuY29udGFpbmVyTm9kZSgpICE9IG5vZGVUb1NwbGl0VG8pIHsKLSAgICAgICAgICAgICAgICBu
b2RlVG9TcGxpdFRvID0gc3BsaXRUcmVlVG9Ob2RlKGluc2VydGlvblBvcy5hbmNob3JOb2RlKCks
IG5vZGVUb1NwbGl0VG8uZ2V0KCksIHRydWUpLmdldCgpOworICAgICAgICBSZWZQdHI8Tm9kZT4g
bm9kZVRvU3BsaXRUbyA9IGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGluc2VydGlvblBvcywg
aXNJbmxpbmVOb2RlV2l0aFN0eWxlKTsKKyAgICAgICAgaWYgKEhUTUxFbGVtZW50KiBhbmNlc3Rv
ciA9IGFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlKG5vZGVUb1NwbGl0VG8g
PyBub2RlVG9TcGxpdFRvLmdldCgpIDogaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKSwgSW5j
bHVkZVBhcmFncmFwaFNlcGFyYXRvcnMpKSB7CisgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPnBh
cmVudE5vZGUoKSAmJiB1bnNwbGl0dGFibGVFbGVtZW50Rm9yUG9zaXRpb24oaW5zZXJ0aW9uUG9z
KS0+Y29udGFpbnMoYW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgJiYgIW5vZGVIYXNBdHRyaWJ1dGVz
VG9QcmVzZXJ2ZShhbmNlc3RvcikpCisgICAgICAgICAgICAgICAgbm9kZVRvU3BsaXRUbyA9IGFu
Y2VzdG9yOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlVG9TcGxpdFRvKSB7CisgICAgICAg
ICAgICBpZiAoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKSAhPSBub2RlVG9TcGxpdFRvLT5w
YXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlVG9TcGxpdFRvID0gc3BsaXRUcmVl
VG9Ob2RlKGluc2VydGlvblBvcy5hbmNob3JOb2RlKCksIG5vZGVUb1NwbGl0VG8tPnBhcmVudE5v
ZGUoKSkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uUG9zID0gcG9zaXRpb25JblBh
cmVudEJlZm9yZU5vZGUobm9kZVRvU3BsaXRUby5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJldmlzaW9uIDkyMjg5KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTAsNyArMzUwLDcgQEAgTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZQog
ICAgIHJldHVybiBsYXN0Q2xvc2VkOwogfQogCi1zdGF0aWMgTm9kZSogYW5jZXN0b3JUb1JldGFp
blN0cnVjdHVyZUFuZEFwcGVhcmFuY2UoTm9kZSogY29tbW9uQW5jZXN0b3IpCitIVE1MRWxlbWVu
dCogYW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuZEFwcGVhcmFuY2UoTm9kZSogY29tbW9uQW5j
ZXN0b3IsIFNob3VsZEluY2x1ZGVQYXJhZ3JhcGhTZXBhcmF0b3JzIHNob3VsZEluY2x1ZGVQYXJh
Z3JhcGhTZXBhcmF0b3JzKQogewogICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9yQmxvY2sgPSBlbmNs
b3NpbmdCbG9jayhjb21tb25BbmNlc3Rvcik7CiAKQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0aWMg
Tm9kZSogYW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuCiAgICAgICAgIHdoaWxlICh0YWJsZSAm
JiAhdGFibGUtPmhhc1RhZ05hbWUodGFibGVUYWcpKQogICAgICAgICAgICAgdGFibGUgPSB0YWJs
ZS0+cGFyZW50Tm9kZSgpOwogCi0gICAgICAgIHJldHVybiB0YWJsZTsKKyAgICAgICAgcmV0dXJu
IHRvSFRNTEVsZW1lbnQodGFibGUpOwogICAgIH0KIAogICAgIGlmIChjb21tb25BbmNlc3RvckJs
b2NrLT5oYXNUYWdOYW1lKGxpc3RpbmdUYWcpCkBAIC0zNzYsNyArMzc2LDExIEBAIHN0YXRpYyBO
b2RlKiBhbmNlc3RvclRvUmV0YWluU3RydWN0dXJlQW4KICAgICAgICAgfHwgY29tbW9uQW5jZXN0
b3JCbG9jay0+aGFzVGFnTmFtZShoM1RhZykKICAgICAgICAgfHwgY29tbW9uQW5jZXN0b3JCbG9j
ay0+aGFzVGFnTmFtZShoNFRhZykKICAgICAgICAgfHwgY29tbW9uQW5jZXN0b3JCbG9jay0+aGFz
VGFnTmFtZShoNVRhZykpCi0gICAgICAgIHJldHVybiBjb21tb25BbmNlc3RvckJsb2NrOworICAg
ICAgICByZXR1cm4gdG9IVE1MRWxlbWVudChjb21tb25BbmNlc3RvckJsb2NrKTsKKworICAgIGlm
IChzaG91bGRJbmNsdWRlUGFyYWdyYXBoU2VwYXJhdG9ycyA9PSBJbmNsdWRlUGFyYWdyYXBoU2Vw
YXJhdG9ycworICAgICAgICAmJiAoY29tbW9uQW5jZXN0b3JCbG9jay0+aGFzVGFnTmFtZShwVGFn
KSB8fCBjb21tb25BbmNlc3RvckJsb2NrLT5oYXNUYWdOYW1lKGRpdlRhZykpKQorICAgICAgICBy
ZXR1cm4gdG9IVE1MRWxlbWVudChjb21tb25BbmNlc3RvckJsb2NrKTsKIAogICAgIHJldHVybiAw
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCShyZXZpc2lvbiA5MjI4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMxICsz
MywzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBEb2N1bWVudDsKLSAg
ICBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwotICAgIGNsYXNzIEVsZW1lbnQ7Ci0gICAgY2xhc3Mg
S1VSTDsKLSAgICBjbGFzcyBOb2RlOwotICAgIGNsYXNzIFJhbmdlOwotCi0gICAgZW51bSBFQ2hp
bGRyZW5Pbmx5IHsgSW5jbHVkZU5vZGUsIENoaWxkcmVuT25seSB9OwotICAgIGVudW0gRUFic29s
dXRlVVJMcyB7IERvTm90UmVzb2x2ZVVSTHMsIEFic29sdXRlVVJMcyB9OwotCi0gICAgUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KFJhbmdlKiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBtYXJr
dXAsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0g
RnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKERvY3VtZW50KiwgY29uc3QgVmVjdG9yPE5vZGUq
PiYpOwotCi0gICAgYm9vbCBpc1BsYWluVGV4dE1hcmt1cChOb2RlICpub2RlKTsKLQotICAgIFN0
cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqLAotICAgICAgICBWZWN0b3I8Tm9kZSo+KiA9
IDAsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdl
LCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgPSBmYWxzZSwgRUFic29sdXRlVVJMcyA9IERv
Tm90UmVzb2x2ZVVSTHMpOwotICAgIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSosIEVD
aGlsZHJlbk9ubHkgPSBJbmNsdWRlTm9kZSwgVmVjdG9yPE5vZGUqPiogPSAwLCBFQWJzb2x1dGVV
UkxzID0gRG9Ob3RSZXNvbHZlVVJMcyk7Ci0gICAgCi0gICAgU3RyaW5nIGNyZWF0ZUZ1bGxNYXJr
dXAoY29uc3QgTm9kZSopOwotICAgIFN0cmluZyBjcmVhdGVGdWxsTWFya3VwKGNvbnN0IFJhbmdl
Kik7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIERvY3VtZW50RnJhZ21lbnQ7CitjbGFzcyBFbGVt
ZW50OworY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBLVVJMOworY2xhc3MgTm9kZTsKK2NsYXNz
IFJhbmdlOworCitlbnVtIEVDaGlsZHJlbk9ubHkgeyBJbmNsdWRlTm9kZSwgQ2hpbGRyZW5Pbmx5
IH07CitlbnVtIEVBYnNvbHV0ZVVSTHMgeyBEb05vdFJlc29sdmVVUkxzLCBBYnNvbHV0ZVVSTHMg
fTsKKworUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0
KFJhbmdlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpOworUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoRG9jdW1lbnQqLCBjb25zdCBTdHJp
bmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOworUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Ob2RlcyhEb2N1bWVudCosIGNvbnN0IFZlY3RvcjxO
b2RlKj4mKTsKKworYm9vbCBpc1BsYWluVGV4dE1hcmt1cChOb2RlKik7CisKK1N0cmluZyBjcmVh
dGVNYXJrdXAoY29uc3QgUmFuZ2UqLCBWZWN0b3I8Tm9kZSo+KiA9IDAsIEVBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBib29sIGNvbnZlcnRCbG9j
a3NUb0lubGluZXMgPSBmYWxzZSwgRUFic29sdXRlVVJMcyA9IERvTm90UmVzb2x2ZVVSTHMpOwor
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlKiwgRUNoaWxkcmVuT25seSA9IEluY2x1ZGVO
b2RlLCBWZWN0b3I8Tm9kZSo+KiA9IDAsIEVBYnNvbHV0ZVVSTHMgPSBEb05vdFJlc29sdmVVUkxz
KTsKKworU3RyaW5nIGNyZWF0ZUZ1bGxNYXJrdXAoY29uc3QgTm9kZSopOworU3RyaW5nIGNyZWF0
ZUZ1bGxNYXJrdXAoY29uc3QgUmFuZ2UqKTsKKworU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKK1N0cmluZyBpbWFnZVRvTWFya3VwKGNvbnN0IEtV
UkwmLCBFbGVtZW50Kik7CisKK2VudW0gU2hvdWxkSW5jbHVkZVBhcmFncmFwaFNlcGFyYXRvcnMg
eyBEb05vdEluY2x1ZGVQYXJhZ3JhcGhTZXBhcmF0b3JzLCBJbmNsdWRlUGFyYWdyYXBoU2VwYXJh
dG9ycyB9OworSFRNTEVsZW1lbnQqIGFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJh
bmNlKE5vZGUqLCBTaG91bGRJbmNsdWRlUGFyYWdyYXBoU2VwYXJhdG9ycyA9IERvTm90SW5jbHVk
ZVBhcmFncmFwaFNlcGFyYXRvcnMpOwogCi0gICAgU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICBTdHJpbmcgaW1hZ2VUb01hcmt1cChjb25z
dCBLVVJMJiwgRWxlbWVudCopOwogfQogCiAjZW5kaWYgLy8gbWFya3VwX2gKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDkyMzA5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgc2VsZWN0LWFsbCwgY29weSwgcGFzdGUgb2Ygc3BlY2lhbEFuY2VzdG9y
RWxlbWVudHMgKGUuZy4gcHJlLCBoMSwgZXRjKSBuZXN0cyB0aGUgZWxlbWVudCBpbnNpZGUgaXRz
ZWxmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRp
dGluZy9wYXN0ZWJvYXJkLzUwNjU2MDUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcv
cGFzdGVib2FyZC9jb3B5LXBhc3RlLXRleHQtaW4taDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS10ZXh0LWluLWgxLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kaXNwbGF5LWJsb2NrLW9uLXNwYW5z
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAw
MS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0w
MDItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0
LTAxMS1leHBlY3RlZC50eHQ6CisKIDIwMTEtMDgtMDMgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYW4gZXJyb3IgaW4gdGVzdF9leHBlY3Rh
dGlvbnMudHh0LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzUwNjU2MDUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC81MDY1NjA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTIyODkpCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvNTA2NTYwNS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTIxLDcgKzIxLDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdAog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZp
Y2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFn
bWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyNCBvZiAjdGV4dCA+IEZPTlQgPiBESVYg
PiBTUEFOID4gRk9OVCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDI0
IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+IFNQQU4gPiBGT05UID4gRElWID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyNCBvZiAjdGV4dCA+IEZP
TlQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyNCBvZiAjdGV4dCA+
IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1Nl
bGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZp
ZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMzYs
MTkgKzM2LDEyIEBAIFRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIHRleHQgY29waWVkIHcKIHwg
ICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgogfCAgICAgY29sb3I9IiNmZjAwMDAiCiB8ICAg
ICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuIgorfCA8Zm9udD4KK3wgICBjbGFzcz0iQXBwbGUt
c3R5bGUtc3BhbiIKK3wgICBjb2xvcj0iI2ZmMDAwMCIKK3wgICAiVGhpcyB0ZXh0IHNob3VsZCBi
ZSByZWQuIgogfCA8ZGl2PgogfCAgIDxmb250PgogfCAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNw
YW4iCiB8ICAgICBjb2xvcj0iI2ZmMDAwMCIKLXwgICAgIDxzcGFuPgotfCAgICAgICBjbGFzcz0i
QXBwbGUtc3R5bGUtc3BhbiIKLXwgICAgICAgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7ICIK
LXwgICAgICAgPGZvbnQ+Ci18ICAgICAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCi18ICAg
ICAgICAgY29sb3I9IiNmZjAwMDAiCi18ICAgICAgICAgIlRoaXMgdGV4dCBzaG91bGQgYmUgcmVk
LiIKLXwgICAgICAgPGRpdj4KLXwgICAgICAgICA8Zm9udD4KLXwgICAgICAgICAgIGNsYXNzPSJB
cHBsZS1zdHlsZS1zcGFuIgotfCAgICAgICAgICAgY29sb3I9IiNmZjAwMDAiCi18ICAgICAgICAg
ICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgICAgIlRo
aXMgdGV4dCBzaG91bGQgYmUgcmVkLjwjc2VsZWN0aW9uLWNhcmV0PiIKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLXRleHQtaW4taDEtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3Rl
LXRleHQtaW4taDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtdGV4dC1pbi1oMS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdHMgY29weWluZyBhbmQgcGFzdGluZyB0
ZXh0IGluIGgxLiBXZWJLaXQgc2hvdWxkIG5vdCBuZXN0IGgxcy4KK1RvIG1hbnVhbGx5IHRlc3Qs
IGNvcHkgYW5kIHBhc3RlICJoZWxsbyB3b3JsZCIuIFlvdSBzaG91bGQgc2VlIHNpbmdsZSBib3Jk
ZXIgYXJvdW5kICJoZWxsbyB3b3JsZCIuCit8ICIKKyIKK3wgPGgxPgorfCAgICJoZWxsbyIKK3wg
ICAiwqAiCit8ICAgPGVtPgorfCAgICAgIndvcmxkPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiCisi
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS10ZXh0LWlu
LWgxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Nv
cHktcGFzdGUtdGV4dC1pbi1oMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtdGV4dC1pbi1oMS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+
CitoMSB7IGJvcmRlcjogc29saWQgMXB4IGJsYWNrOyBwYWRkaW5nOiA1cHg7IH0KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyBjb3B5aW5n
IGFuZCBwYXN0aW5nIHRleHQgaW4gaDEuIFdlYktpdCBzaG91bGQgbm90IG5lc3QgaDFzLgorVG8g
bWFudWFsbHkgdGVzdCwgY29weSBhbmQgcGFzdGUgImhlbGxvIHdvcmxkIi4gWW91IHNob3VsZCBz
ZWUgc2luZ2xlIGJvcmRlciBhcm91bmQgImhlbGxvIHdvcmxkIi48L3A+Cis8ZGl2IGlkPSJ0ZXN0
IiBjb250ZW50ZWRpdGFibGU+Cis8aDE+aGVsbG8gPGVtPndvcmxkPC9lbT48L2gxPgorPC9kaXY+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK3ZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qn
KTsKK3Rlc3QuZm9jdXMoKTsKKworTWFya3VwLmRlc2NyaXB0aW9uKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdkZXNjcmlwdGlvbicpLnRleHRDb250ZW50KTsKKworZG9jdW1lbnQuZXhlY0NvbW1h
bmQoJ1NlbGVjdEFsbCcsIGZhbHNlLCBudWxsKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdDb3B5
JywgZmFsc2UsIG51bGwpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1Bhc3RlJywgZmFsc2UsIG51
bGwpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIE1hcmt1cC5kdW1w
KHRlc3QpOworZWxzZQorICAgIE1hcmt1cC5ub0F1dG9EdW1wKCk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Rpc3Bs
YXktYmxvY2stb24tc3BhbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kaXNwbGF5LWJsb2NrLW9uLXNwYW5zLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gOTIyODkpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGlzcGxh
eS1ibG9jay1vbi1zcGFucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5
LDExIEBAIGFmdGVyOgogfCA8c3Bhbj4KIHwgICBzdHlsZT0iZGlzcGxheTpibG9jayIKIHwgICA8
Yj4KLXwgICAgICJUaGlzPCNzZWxlY3Rpb24tY2FyZXQ+IgotfCAgIDxiPgorfCAgICAgPHNwYW4+
Cit8ICAgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgorfCAgICAgICBzdHlsZT0iZm9udC13
ZWlnaHQ6IG5vcm1hbDsgIgorfCAgICAgICA8Yj4KK3wgICAgICAgICAiVGhpczwjc2VsZWN0aW9u
LWNhcmV0PiIKIHwgICAgICLCoGlzIGFub3RoZXIgcGFyYWdyYXBoLiIKIHwgICA8YnI+CiB8ICIK
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyMjg5KQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03LDQgKzcsNCBAQCBiYXIKIGZvbwogYmFyCiBleGVjQ3V0Q29tbWFuZDogPGRpdiBp
ZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxicj48L3ByZT4gPC9kaXY+Ci1leGVjUGFz
dGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHNwYW4gY2xh
c3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNw
YWNlOiBub3JtYWw7ICI+PHByZT5mb28gYmFyPC9wcmU+PC9zcGFuPjwvcHJlPiA8L2Rpdj4KK2V4
ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT5mb28g
YmFyPC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLXByZS0wMDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTIyODkp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNCArMiw0IEBAIFRoaXMgaXMgYSBsYXlvdXQgdGVz
dCBmb3IgcmRhcjovL3Byb2JsZW0KIGZvbwogYmFyCiBleGVjQ29weUNvbW1hbmQ6IDxkaXYgaWQ9
InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT5mb28gYmFyPC9wcmU+IDwvZGl2PgotZXhlY1Bh
c3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNs
YXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1z
cGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJhcjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+Citl
eGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+Zm9v
IGJhcjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTIy
ODkpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQCBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IEIg
PiBGT05UID4gUCA+IFNQQU4gPiBCID4gRk9OVCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BBTiA+IEIgPiBGT05UID4gUCA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+
IEIgPiBGT05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBC
ID4gRk9OVCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRD
aGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMzAsMTkgKzMw
LDEyIEBAIFRoZSBjb250ZW50IHdhcyBpbnNlcnRlZCBhdCB0aGUgc3RhcnQgb2YKIHwgICA8Zm9u
dD4KIHwgICAgIGZhY2U9Ik1vbmFjbyIKIHwgICAgIDxiPgotfCAgICAgICA8c3Bhbj4KLXwgICAg
ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKLXwgICAgICAgICBzdHlsZT0iZm9udC1mYW1p
bHk6IFRpbWVzOyBmb250LXdlaWdodDogbm9ybWFsOyAiCi18ICAgICAgICAgPHA+Ci18ICAgICAg
ICAgICA8Zm9udD4KLXwgICAgICAgICAgICAgZmFjZT0iTW9uYWNvIgotfCAgICAgICAgICAgICA8
Yj4KLXwgICAgICAgICAgICAgICAiaGVsbG8iCi18ICAgICAgICAgPHA+Ci18ICAgICAgICAgICA8
Zm9udD4KLXwgICAgICAgICAgICAgZmFjZT0iTW9uYWNvIgotfCAgICAgICAgICAgICA8Yj4KLXwg
ICAgICAgICAgICAgICAidGhlcmU8I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgICAgICJoZWxsbyIK
K3wgPHA+Cit8ICAgPGZvbnQ+Cit8ICAgICBmYWNlPSJNb25hY28iCit8ICAgICA8Yj4KK3wgICAg
ICAgInRoZXJlPCNzZWxlY3Rpb24tY2FyZXQ+IgogfCAiCiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104141</attachid>
            <date>2011-08-16 20:00:52 -0700</date>
            <delta_ts>2011-08-16 20:00:52 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip26483</filename>
            <type>text/plain</type>
            <size>13715</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kby1ub3QtY29weS11bm5lY2Vz
c2FyeS1zdHlsZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9kby1ub3QtY29weS11bm5lY2Vzc2FyeS1zdHlsZXMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA5MzE4MykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kby1u
b3QtY29weS11bm5lY2Vzc2FyeS1zdHlsZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0zLDcgKzMsNyBAQAogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgV2ViS2l0IGRvZXMgbm90IGVy
cm9uZW91c2x5IGNsb25lIG5vZGVzIGhpZXJhcmNoeSB3aGVuIGNvcHlpbmcgdGV4dCB3aXRoIGJh
Y2tncm91bmQgY29sb3IuCiBUbyBtYW51YWxseSB0aGlzIHRlc3QsIHNlbGVjdCB0aGUgdGV4dCBp
bnNpZGUgdGhlIGRpdiB3aXRoIHRoZSBib3JkZXIsIGN1dCBhbmQgcGFzdGUgaXQgYmFjay4gWW91
IHNob3VsZCBub3Qgc2VlIGFuIGFkZGl0aW9uYWwgcmVkIGJvcmRlci4KIDxkaXYgc3R5bGU9ImJv
cmRlcjogMnB4IHNvbGlkIHJlZCI+Ci08ZGl2IGlkPSJ0ZXN0Ij48c3BhbiBzdHlsZT0iYmFja2dy
b3VuZC1jb2xvcjogcmdiKDE4NywgMTg3LCAxODcpOyAiPlNlbGVjdCB0aGlzIHRleHQ8L3NwYW4+
PGJyPjwvZGl2PgorPGRpdiBpZD0idGVzdCI+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IHJnYigxODcsIDE4NywgMTg3KTsgIj5TZWxlY3QgdGhpcyB0ZXh0PC9zcGFuPjwvZGl2PgogPC9k
aXY+CiA8L2Rpdj4KIApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHkt
cGFzdGUtYmlkaS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYmlkaS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkzMTgz
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYmlkaS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIyLDExICsyMiwxMCBAQAogc2Vjb25kIHRlc3Qg
LSBhZnRlcjoKIHwgIgogIgotfCA8ZGl2PgotfCAgIDxkaXY+Ci18ICAgICAiMTIzNNep15PXkteb
OiIKLXwgICA8ZGl2PgotfCAgICAgc3R5bGU9ImRpcmVjdGlvbjogcnRsOyAiCi18ICAgICAiMTIz
NNep15PXktebOjwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgIgogIgorfCA8ZGl2PgorfCAgICIxMjM0
16nXk9eS15s6IgorfCA8ZGl2PgorfCAgIHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsgIgorfCAgICIx
MjM016nXk9eS15s6PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRhYmxlLTAwMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRhYmxlLTAwMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDkzMTgzKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLXRhYmxlLTAwMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwLDExICsxMCwx
MSBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdl
Tm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVu
dC1mcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFz
dGVkCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0
ZXh0ID4gRElWID4gRElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NSBvZiAjdGV4dCA+IERJViA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihu
dWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IERJViA+IERJViA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBESVYgPiBESVYgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93
bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmlj
YXRpb24KIFByb2JsZW06IGNvcHkvcGFzdGluZyBzb21lIEhUTUwgaW5jbHVkaW5nIHRhYmxlcyBj
YW4gZ2l2ZSByaXNlIHRvIGEgPGRpdj4gZWxlbWVudCBhcyB0aGUgZmlyc3QgY2hpbGQgb2YgdGhl
IHRhYmxlIGVsZW1lbnQuIFRoaXMgaXMgaW52YWxpZC4KIGFiY2RlZgogZm9vCWJhcgogZ2hpamsK
LTxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPGRpdj5hYmNkZWY8ZGl2IHN0eWxlPSJ0
ZXh0LWFsaWduOiBjZW50ZXI7ICI+PHRhYmxlPjx0Ym9keT48dHI+PHRkPmZvbzwvdGQ+PHRkPmJh
cjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+Z2hpams8L2Rpdj4gPC9kaXY+IDwvZGl2PgorPGRp
diBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiBhYmNkZWY8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWdu
OiBjZW50ZXI7ICI+PHRhYmxlPjx0Ym9keT48dHI+PHRkPmZvbzwvdGQ+PHRkPmJhcjwvdGQ+PC90
cj48L3Rib2R5PjwvdGFibGU+Z2hpams8L2Rpdj48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDkzMTgzKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDQgKzIsNCBAQAog
Zm9vCiBiYXIKIGV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmci
PiA8cHJlPmZvbyBiYXI8L3ByZT4gPC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0
ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHByZT5mb28gYmFyPC9wcmU+PC9wcmU+IDwvZGl2
PgorZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJl
PmZvbyBiYXI8L3ByZT48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkz
MTgzKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDQgKzcsNCBAQAogZm9vCiBiYXIKIGV4ZWND
dXRDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PGJyPjwvcHJl
PiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5n
Ij4gPHByZT48cHJlPmZvbyBiYXI8L3ByZT48L3ByZT4gPC9kaXY+CitleGVjUGFzdGVDb21tYW5k
OiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+Zm9vIGJhcjwvcHJlPjwvZGl2
PgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAJKHJldmlzaW9uIDkzMTgzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwxMSArMjI2LDExIEBACiAg
ICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNv
bW1hbmQ6OmNyZWF0ZShub2RlKSk7CiB9CiAKLXZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJl
bW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhQYXNzUmVmUHRyPE5vZGU+IG5vZGUpCitQb3NpdGlv
biBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKFBhc3NS
ZWZQdHI8Tm9kZT4gbm9kZSkKIHsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50ID0g
bm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIHJlbW92ZU5vZGUobm9kZSk7Ci0gICAgcHJ1bmUocGFy
ZW50LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIHBydW5lKHBhcmVudC5yZWxlYXNlKCkpOwogfQog
CiBIVE1MRWxlbWVudCogQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VFbGVtZW50V2l0aFNw
YW5QcmVzZXJ2aW5nQ2hpbGRyZW5BbmRBdHRyaWJ1dGVzKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+
IG5vZGUpCkBAIC0yNTgsMjAgKzI1OCwyNSBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cHJ1bmUoUGFzc1JlZlB0cjxOb2RlPiBwcnBOb2RlKQor
UG9zaXRpb24gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnBydW5lKFBhc3NSZWZQdHI8Tm9kZT4gcHJw
Tm9kZSkKIHsKICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IHBycE5vZGU7CisgICAgUG9zaXRpb24g
cHJ1bmVkUG9zaXRpb247CiAKICAgICB3aGlsZSAobm9kZSkgewogICAgICAgICAvLyBJZiB5b3Ug
Y2hhbmdlIHRoaXMgcnVsZSB5b3UgbWF5IGhhdmUgdG8gYWRkIGFuIHVwZGF0ZUxheW91dCgpIGhl
cmUuCiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwog
ICAgICAgICBpZiAocmVuZGVyZXIgJiYgKCFyZW5kZXJlci0+Y2FuSGF2ZUNoaWxkcmVuKCkgfHwg
aGFzQVJlbmRlcmVkRGVzY2VuZGFudChub2RlLmdldCgpKSB8fCBub2RlLT5yb290RWRpdGFibGVF
bGVtZW50KCkgPT0gbm9kZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKKyAg
ICAgICAgICAgIHJldHVybiBwcnVuZWRQb3NpdGlvbjsKKwogICAgICAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gbmV4dCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgcHJ1bmVkUG9zaXRp
b24gPSBub2RlLT5uZXh0U2libGluZygpID8gcG9zaXRpb25CZWZvcmVOb2RlKG5vZGUtPm5leHRT
aWJsaW5nKCkpIDogbGFzdFBvc2l0aW9uSW5Ob2RlKG5leHQuZ2V0KCkpOworCiAgICAgICAgIHJl
bW92ZU5vZGUobm9kZSk7CiAgICAgICAgIG5vZGUgPSBuZXh0OwogICAgIH0KKworICAgIHJldHVy
biBQb3NpdGlvbigpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzcGxpdFRleHRO
b2RlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zmc2V0KQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkocmV2aXNpb24gOTMxODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMCw2ICsxMzAsOCBAQAogfTsKIAogYm9vbCBpc0xlZ2FjeUFwcGxlU3R5bGVTcGFu
KGNvbnN0IE5vZGUqKTsKK2VudW0gU2hvdWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5IHsgQWxsb3dO
b25FbXB0eVN0eWxlQXR0cmlidXRlLCBTdHlsZUF0dHJpYnV0ZVNob3VsZEJlRW1wdHkgfTsKK2Jv
b2wgaGFzTm9BdHRyaWJ1dGVPck9ubHlTdHlsZUF0dHJpYnV0ZShjb25zdCBTdHlsZWRFbGVtZW50
KiBlbGVtZW50LCBTaG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkgc2hvdWxkU3R5bGVBdHRyaWJ1
dGVCZUVtcHR5KTsKIGJvb2wgaXNTdHlsZVNwYW5PclNwYW5XaXRoT25seVN0eWxlQXR0cmlidXRl
KGNvbnN0IEVsZW1lbnQqKTsKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVN0eWxlU3Bh
bkVsZW1lbnQoRG9jdW1lbnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAkocmV2aXNpb24gOTMxODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDcgKzgzLDcgQEAKICAgICB2b2lkIGhhbmRsZVBhc3RlQXNRdW90YXRpb25Ob2RlKCk7
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oTm9k
ZSopOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMoTm9kZSop
OworICAgIHZpcnR1YWwgUG9zaXRpb24gcmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKE5vZGUq
KTsKICAgICAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BdFN0YXJ0T2ZJbnNlcnRlZENv
bnRlbnQoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25BdEVuZE9mSW5zZXJ0ZWRDb250
ZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gOTMxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIyLDIw
ICs0MjIsMjIgQEAKIH0KIAogLy8gV3JhcCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9k
ZUFuZFBydW5lQW5jZXN0b3JzKCkgc28gd2UgY2FuIHVwZGF0ZSB0aGUgbm9kZXMgd2UgdHJhY2sK
LXZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9y
cyhOb2RlKiBub2RlKQorUG9zaXRpb24gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZU5v
ZGVBbmRQcnVuZUFuY2VzdG9ycyhOb2RlKiBub2RlKQogewogICAgIC8vIHByZXBhcmUgaW4gY2Fz
ZSBtX2ZpcnN0Tm9kZUluc2VydGVkIGFuZC9vciBtX2xhc3RMZWFmSW5zZXJ0ZWQgZ2V0IHJlbW92
ZWQKICAgICAvLyBGSVhNRTogc2hvdWxkbid0IG1fbGFzdExlYWZJbnNlcnRlZCBiZSBhZGp1c3Rl
ZCB1c2luZyB0cmF2ZXJzZVByZXZpb3VzTm9kZSgpPwogICAgIE5vZGUqIGFmdGVyRmlyc3QgPSBt
X2ZpcnN0Tm9kZUluc2VydGVkID8gbV9maXJzdE5vZGVJbnNlcnRlZC0+dHJhdmVyc2VOZXh0U2li
bGluZygpIDogMDsKICAgICBOb2RlKiBhZnRlckxhc3QgPSBtX2xhc3RMZWFmSW5zZXJ0ZWQgPyBt
X2xhc3RMZWFmSW5zZXJ0ZWQtPnRyYXZlcnNlTmV4dFNpYmxpbmcoKSA6IDA7CiAgICAgCi0gICAg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhub2RlKTsK
KyAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZW1vdmVOb2Rl
QW5kUHJ1bmVBbmNlc3RvcnMobm9kZSk7CiAgICAgCiAgICAgLy8gYWRqdXN0IG1fZmlyc3ROb2Rl
SW5zZXJ0ZWQgYW5kIG1fbGFzdExlYWZJbnNlcnRlZCBzaW5jZSBlaXRoZXIgb3IgYm90aCBtYXkg
aGF2ZSBiZWVuIHJlbW92ZWQKICAgICBpZiAobV9sYXN0TGVhZkluc2VydGVkICYmICFtX2xhc3RM
ZWFmSW5zZXJ0ZWQtPmluRG9jdW1lbnQoKSkKICAgICAgICAgbV9sYXN0TGVhZkluc2VydGVkID0g
YWZ0ZXJMYXN0OwogICAgIGlmIChtX2ZpcnN0Tm9kZUluc2VydGVkICYmICFtX2ZpcnN0Tm9kZUlu
c2VydGVkLT5pbkRvY3VtZW50KCkpCiAgICAgICAgIG1fZmlyc3ROb2RlSW5zZXJ0ZWQgPSBtX2xh
c3RMZWFmSW5zZXJ0ZWQgJiYgbV9sYXN0TGVhZkluc2VydGVkLT5pbkRvY3VtZW50KCkgPyBhZnRl
ckZpcnN0IDogMDsKKworICAgIHJldHVybiBwb3NpdGlvbjsKIH0KIAogc3RhdGljIGJvb2wgaXNI
ZWFkZXJFbGVtZW50KE5vZGUqIGEpCkBAIC04NDEsNyArODQzLDcgQEAKICAgICBQb3NpdGlvbiBp
bnNlcnRpb25Qb3MgPSBzZWxlY3Rpb24uc3RhcnQoKTsKICAgICBib29sIHN0YXJ0SXNJbnNpZGVN
YWlsQmxvY2txdW90ZSA9IGVuY2xvc2luZ05vZGVPZlR5cGUoaW5zZXJ0aW9uUG9zLCBpc01haWxC
bG9ja3F1b3RlLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAKLSAgICBpZiAoKHNlbGVjdGlv
blN0YXJ0V2FzU3RhcnRPZlBhcmFncmFwaCAmJiBzZWxlY3Rpb25FbmRXYXNFbmRPZlBhcmFncmFw
aCAmJiAhc3RhcnRJc0luc2lkZU1haWxCbG9ja3F1b3RlKSB8fAorICAgIGlmICgvLyhzZWxlY3Rp
b25TdGFydFdhc1N0YXJ0T2ZQYXJhZ3JhcGggJiYgc2VsZWN0aW9uRW5kV2FzRW5kT2ZQYXJhZ3Jh
cGggJiYgIXN0YXJ0SXNJbnNpZGVNYWlsQmxvY2txdW90ZSkgfHwKICAgICAgICAgc3RhcnRCbG9j
ayA9PSBjdXJyZW50Um9vdCB8fCBpc0xpc3RJdGVtKHN0YXJ0QmxvY2spIHx8IHNlbGVjdGlvbklz
UGxhaW5UZXh0KQogICAgICAgICBtX3ByZXZlbnROZXN0aW5nID0gZmFsc2U7CiAgICAgCkBAIC04
ODUsNyArODg3LDcgQEAKICAgICAgICAgfQogICAgICAgICBpbnNlcnRpb25Qb3MgPSBlbmRpbmdT
ZWxlY3Rpb24oKS5zdGFydCgpOwogICAgIH0KLSAgICAKKwogICAgIC8vIFdlIGRvbid0IHdhbnQg
YW55IG9mIHRoZSBwYXN0ZWQgY29udGVudCB0byBlbmQgdXAgbmVzdGVkIGluIGEgTWFpbCBibG9j
a3F1b3RlLCBzbyBmaXJzdCBicmVhayAKICAgICAvLyBvdXQgb2YgYW55IHN1cnJvdW5kaW5nIE1h
aWwgYmxvY2txdW90ZXMuIFVubGVzcyB3ZSdyZSBpbnNlcnRpbmcgaW4gYSB0YWJsZSwgaW4gd2hp
Y2ggY2FzZQogICAgIC8vIGJyZWFraW5nIHRoZSBibG9ja3F1b3RlIHdpbGwgcHJldmVudCB0aGUg
Y29udGVudCBmcm9tIGFjdHVhbGx5IGJlaW5nIGluc2VydGVkIGluIHRoZSB0YWJsZS4KQEAgLTkx
OCwxMyArOTIwLDI1IEBACiAgICAgCiAgICAgLy8gQWRqdXN0IGluc2VydGlvblBvcyB0byBwcmV2
ZW50IG5lc3RpbmcuCiAgICAgLy8gSWYgdGhlIHN0YXJ0IHdhcyBpbiBhIE1haWwgYmxvY2txdW90
ZSwgd2Ugd2lsbCBoYXZlIGFscmVhZHkgaGFuZGxlZCBhZGp1c3RpbmcgaW5zZXJ0aW9uUG9zIGFi
b3ZlLgotICAgIGlmIChtX3ByZXZlbnROZXN0aW5nICYmIHN0YXJ0QmxvY2sgJiYgIXN0YXJ0SXNJ
bnNpZGVNYWlsQmxvY2txdW90ZSkgewotICAgICAgICBBU1NFUlQoc3RhcnRCbG9jayAhPSBjdXJy
ZW50Um9vdCk7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlSW5zZXJ0aW9uUG9zKGlu
c2VydGlvblBvcyk7Ci0gICAgICAgIGlmIChpc0VuZE9mQmxvY2sodmlzaWJsZUluc2VydGlvblBv
cykgJiYgIShpc1N0YXJ0T2ZCbG9jayh2aXNpYmxlSW5zZXJ0aW9uUG9zKSAmJiBmcmFnbWVudC5o
YXNJbnRlcmNoYW5nZU5ld2xpbmVBdEVuZCgpKSkKLSAgICAgICAgICAgIGluc2VydGlvblBvcyA9
IHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoc3RhcnRCbG9jayk7Ci0gICAgICAgIGVsc2UgaWYg
KGlzU3RhcnRPZkJsb2NrKHZpc2libGVJbnNlcnRpb25Qb3MpKQotICAgICAgICAgICAgaW5zZXJ0
aW9uUG9zID0gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoc3RhcnRCbG9jayk7CisgICAgaWYg
KG1fcHJldmVudE5lc3RpbmcgJiYgc3RhcnRCbG9jayAmJiBzdGFydEJsb2NrICE9IGN1cnJlbnRS
b290ICYmICFzdGFydElzSW5zaWRlTWFpbEJsb2NrcXVvdGUpIHsKKyAgICAgICAgaWYgKHN0YXJ0
T2ZCbG9jayhpbnNlcnRpb25Qb3MpID09IGVuZE9mQmxvY2soaW5zZXJ0aW9uUG9zKSAmJiBpbnNl
cnRpb25Qb3MuYW5jaG9yTm9kZSgpLT5oYXNUYWdOYW1lKGJyVGFnKSkgeworICAgICAgICAgICAg
UmVmUHRyPE5vZGU+IG5vZGUgPSBpbnNlcnRpb25Qb3MuYW5jaG9yTm9kZSgpOworICAgICAgICAg
ICAgd2hpbGUgKG5vZGUgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpICYmIGhhc05vQXR0cmlidXRl
T3JPbmx5U3R5bGVBdHRyaWJ1dGUoc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlLmdldCgp
KSwgQWxsb3dOb25FbXB0eVN0eWxlQXR0cmlidXRlKSkgeworICAgICAgICAgICAgICAgIFJlZlB0
cjxDb250YWluZXJOb2RlPiBuZXh0ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICAgICAg
ICAgIGluc2VydGlvblBvcyA9IG5vZGUtPm5leHRTaWJsaW5nKCkgPyBwb3NpdGlvbkJlZm9yZU5v
ZGUobm9kZS0+bmV4dFNpYmxpbmcoKSkgOiBsYXN0UG9zaXRpb25Jbk5vZGUobmV4dC5nZXQoKSk7
CisgICAgICAgICAgICAgICAgcmVtb3ZlTm9kZShub2RlKTsKKyAgICAgICAgICAgICAgICBkb2N1
bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgICAgICAgICBub2RlID0gbmV4dDsKKyAg
ICAgICAgICAgICAgICBpZiAoIWlzQmxvY2sobm9kZS5nZXQoKSkgJiYgKG1fbWF0Y2hTdHlsZSB8
fCAhaXNJbmxpbmVOb2RlV2l0aFN0eWxlKG5vZGUuZ2V0KCkpKSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZUluc2VydGlvblBvcyhpbnNlcnRpb25Qb3MpOworICAgICAg
ICAgICAgaWYgKGlzRW5kT2ZCbG9jayh2aXNpYmxlSW5zZXJ0aW9uUG9zKSAmJiAhKGlzU3RhcnRP
ZkJsb2NrKHZpc2libGVJbnNlcnRpb25Qb3MpICYmIGZyYWdtZW50Lmhhc0ludGVyY2hhbmdlTmV3
bGluZUF0RW5kKCkpKQorICAgICAgICAgICAgICAgIGluc2VydGlvblBvcyA9IHBvc2l0aW9uSW5Q
YXJlbnRBZnRlck5vZGUoc3RhcnRCbG9jayk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1N0YXJ0
T2ZCbG9jayh2aXNpYmxlSW5zZXJ0aW9uUG9zKSkKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25Q
b3MgPSBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShzdGFydEJsb2NrKTsKKyAgICAgICAgfQog
ICAgIH0KICAgICAKICAgICAvLyBQYXN0ZSBhdCBzdGFydCBvciBlbmQgb2YgbGluayBnb2VzIG91
dHNpZGUgb2YgbGluay4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA5MzE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3MCw3IEBACiAg
ICAgcmV0dXJuIGVsZW0tPmhhc0xvY2FsTmFtZShzcGFuQXR0cikgJiYgZWxlbS0+Z2V0QXR0cmli
dXRlKGNsYXNzQXR0cikgPT0gc3R5bGVTcGFuQ2xhc3NTdHJpbmcoKTsKIH0KIAotZW51bSBTaG91
bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkgeyBBbGxvd05vbkVtcHR5U3R5bGVBdHRyaWJ1dGUsIFN0
eWxlQXR0cmlidXRlU2hvdWxkQmVFbXB0eSB9Owotc3RhdGljIGJvb2wgaGFzTm9BdHRyaWJ1dGVP
ck9ubHlTdHlsZUF0dHJpYnV0ZShjb25zdCBTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBTaG91bGRT
dHlsZUF0dHJpYnV0ZUJlRW1wdHkgc2hvdWxkU3R5bGVBdHRyaWJ1dGVCZUVtcHR5KQorYm9vbCBo
YXNOb0F0dHJpYnV0ZU9yT25seVN0eWxlQXR0cmlidXRlKGNvbnN0IFN0eWxlZEVsZW1lbnQqIGVs
ZW1lbnQsIFNob3VsZFN0eWxlQXR0cmlidXRlQmVFbXB0eSBzaG91bGRTdHlsZUF0dHJpYnV0ZUJl
RW1wdHkpCiB7CiAgICAgY29uc3QgYm9vbCByZWFkb25seSA9IHRydWU7CiAgICAgTmFtZWROb2Rl
TWFwKiBtYXAgPSBlbGVtZW50LT5hdHRyaWJ1dGVzKHJlYWRvbmx5KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJldmlzaW9uIDkzMTgz
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw4ICs3OSw4IEBACiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU5vZGUo
UGFzc1JlZlB0cjxOb2RlPik7CiAgICAgSFRNTEVsZW1lbnQqIHJlcGxhY2VFbGVtZW50V2l0aFNw
YW5QcmVzZXJ2aW5nQ2hpbGRyZW5BbmRBdHRyaWJ1dGVzKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+
KTsKICAgICB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oUGFzc1JlZlB0cjxOb2Rl
Pik7Ci0gICAgdm9pZCByZW1vdmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMoUGFzc1JlZlB0cjxOb2Rl
Pik7Ci0gICAgdm9pZCBwcnVuZShQYXNzUmVmUHRyPE5vZGU+KTsKKyAgICBQb3NpdGlvbiByZW1v
dmVOb2RlQW5kUHJ1bmVBbmNlc3RvcnMoUGFzc1JlZlB0cjxOb2RlPik7CisgICAgUG9zaXRpb24g
cHJ1bmUoUGFzc1JlZlB0cjxOb2RlPik7CiAgICAgdm9pZCByZXBsYWNlVGV4dEluTm9kZShQYXNz
UmVmUHRyPFRleHQ+LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50VGV4dCk7CiAgICAgUG9zaXRpb24gcmVwbGFjZVNlbGVjdGVkVGV4dElu
Tm9kZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlcGxhY2VUZXh0SW5Ob2RlUHJlc2Vydmlu
Z01hcmtlcnMoUGFzc1JlZlB0cjxUZXh0PiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3Vu
dCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>