<?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>24009</bug_id>
          
          <creation_ts>2009-02-18 13:59:04 -0800</creation_ts>
          <short_desc>WebKit nests block elements when pasting paragraphs</short_desc>
          <delta_ts>2011-08-16 19:56:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>26483</dup_id>
          
          <bug_file_loc>http://www.mozilla.org/editor/midasdemo/</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>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>enrica</cc>
    
    <cc>jparent</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>michael.vm</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110115</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-18 13:59:04 -0800</bug_when>
    <thetext>Safari can create invalid HTML when pasting paragraphs

I&apos;m not sure I know what the &quot;right&quot; behavior is here, but our current behavior seems &quot;wrong&quot;.

editable content:
&lt;p&gt;test&lt;/p&gt;

Select All (command-a)
Copy
Paste

resulting editable content (in WebKit):
&lt;p&gt;&lt;p&gt;test&lt;/p&gt;&lt;/p&gt;

FF:
&lt;p&gt;test&lt;/p&gt;

I&apos;ve not tested IE yet.

I was using:
http://www.mozilla.org/editor/midasdemo/
for my testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186813</commentid>
    <comment_count>1</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-01 22:39:39 -0800</bug_when>
    <thetext>The original test case doesn&apos;t repro for me, but if I change the editable content to &lt;p&gt;first&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;, I&apos;m able to repro.

Also, this isn&apos;t specific to &lt;p&gt; tags, any block tag will cause this.  E.g.,
&lt;blockquote&gt;first&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br/&gt;&lt;/blockquote&gt; + select all + copy + paste will result in nested blockquotes:
&lt;blockquote&gt;&lt;blockquote&gt;first&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;

For div&apos;s this isn&apos;t as apparent because the nesting is harmless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231581</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-05-27 23:52:02 -0700</bug_when>
    <thetext>*** Bug 39193 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265914</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-17 20:03:18 -0700</bug_when>
    <thetext>*** Bug 32232 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265928</commentid>
    <comment_count>4</comment_count>
      <attachid>64667</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-17 20:53:52 -0700</bug_when>
    <thetext>Created attachment 64667
work in progress (works for very simple case with p tag)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266161</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-18 09:30:23 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=64667) [details]
&gt; work in progress (works for very simple case with p tag)

This sounds similar to https://bugs.webkit.org/show_bug.cgi?id=39866, which is a generalization of https://bugs.webkit.org/show_bug.cgi?id=25002.  See Ojan&apos;s comment on 39866.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266409</commentid>
    <comment_count>6</comment_count>
      <attachid>64780</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-18 15:03:48 -0700</bug_when>
    <thetext>Created attachment 64780
work in progress 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266415</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-18 15:11:09 -0700</bug_when>
    <thetext>areIdenticalElements is copied from ApplyStyleCommand, I&apos;ll be sharing it between ApplyStyleCommand and ReplaceSelectionCommand in my final patch.

This patch currently requires 3 rebaselines: editing/pasteboard/4242293-1.html, editing/pasteboard/copy-paste-bidi.html, and editing/selection/replace-selection-crash.html.  The first two tests need to be converted to dumpAsMarkup or dumpAsText tests first.  But changes are good as far as I looked at the render tree.

This patch does not fix the bug 26483 because of the bug 34564.  We could work-around the issue by handling style spans before pasting.  But the correct thing to do is not to wrap everything with style-spans.  It shouldn&apos;t be too hard to push styles to each element in the fragment and have ReplaceSelectionCommand remove all redundant styles at the pasting stage.  But we should probably do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267634</commentid>
    <comment_count>8</comment_count>
      <attachid>65045</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-21 20:45:37 -0700</bug_when>
    <thetext>Created attachment 65045
needs more test conversion but ready for early review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267635</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-08-21 20:53:12 -0700</bug_when>
    <thetext>My new approach changes the behavior of WebKit so that it doesn&apos;t merge the inserted paragraph and the paragraph in the destination when the inserted content starts with the same block element as the destination.  For this change,
editing/pasteboard/8145-3.html
editing/pasteboard/interchange-newline-2.html
editing/pasteboard/merge-after-delete.html
editing/pasteboard/merge-end-list.html
need to be rebaselined.  All four tests should be converted to dump-as-markup tests first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452077</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-16 19:56:34 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 26483 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64667</attachid>
            <date>2010-08-17 20:53:52 -0700</date>
            <delta_ts>2010-08-18 15:03:44 -0700</delta_ts>
            <desc>work in progress (works for very simple case with p tag)</desc>
            <filename>bug-24009-20100817205351.patch</filename>
            <type>text/plain</type>
            <size>4081</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTU4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgtMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
S2l0IG5lc3RzIGJsb2NrIGVsZW1lbnRzIHdoZW4gcGFzdGluZyBwYXJhZ3JhcGhzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDAwOQorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkp
OgorCiAyMDEwLTA4LTE3ICBBcml5YSBIaWRheWF0ICA8YXJpeWFAc2VuY2hhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY1NDcwKQorKysgV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwMjUyLDcg
KzIwMjUyLDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9
ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nh
bm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2
aXNpb24gNjU0NzApCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxNCArNzQsMTMgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgcmVtb3ZlTm9kZShQYXNzUmVmUHRyPE5vZGU+KTsKICAgICB2b2lkIHJlbW92ZU5vZGVQ
cmVzZXJ2aW5nQ2hpbGRyZW4oTm9kZSopOworICAgIHZvaWQgaW5zZXJ0Tm9kZUJlZm9yZShQYXNz
UmVmUHRyPE5vZGU+IG5vZGUsIE5vZGUqIHJlZk5vZGUpOwogCiBwcml2YXRlOgogICAgIFBhc3NS
ZWZQdHI8Tm9kZT4gaW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKE5vZGUqIGNvbnRleHQp
OwogICAgIHZvaWQgcmVtb3ZlVW5yZW5kZXJlZE5vZGVzKE5vZGUqKTsKICAgICB2b2lkIHJlc3Rv
cmVUZXN0UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KE5vZGUqKTsKICAgICB2b2lkIHJlbW92ZUlu
dGVyY2hhbmdlTm9kZXMoTm9kZSopOwotICAgIAotICAgIHZvaWQgaW5zZXJ0Tm9kZUJlZm9yZShQ
YXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5vZGUqIHJlZk5vZGUpOwogCiAgICAgUmVmUHRyPERvY3Vt
ZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBtX2ZyYWdtZW50
OwpAQCAtOTA5LDcgKzkwOCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBw
bHkoKQogCiAgICAgLy8gRklYTUU6IFdoZW4gcGFzdGluZyByaWNoIGNvbnRlbnQgd2UncmUgb2Z0
ZW4gcHJldmVudGVkIGZyb20gaGVhZGluZyBkb3duIHRoZSBmYXN0IHBhdGggYnkgc3R5bGUgc3Bh
bnMuICBUcnkKICAgICAvLyBhZ2FpbiBoZXJlIGlmIHRoZXkndmUgYmVlbiByZW1vdmVkLgotICAg
IAorCiAgICAgLy8gV2UncmUgZmluaXNoZWQgaWYgdGhlcmUgaXMgbm90aGluZyB0byBhZGQuCiAg
ICAgaWYgKGZyYWdtZW50LmlzRW1wdHkoKSB8fCAhZnJhZ21lbnQuZmlyc3RDaGlsZCgpKQogICAg
ICAgICByZXR1cm47CkBAIC05MjUsMTIgKzkyNCwyMyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyA2KSBTZWxlY3QgdGhlIHJlcGxhY2VtZW50IGlmIHJl
cXVlc3RlZCwgYW5kIG1hdGNoIHN0eWxlIGlmIHJlcXVlc3RlZC4KICAgICAKICAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnRPZkluc2VydGVkQ29udGVudCwgZW5kT2ZJbnNlcnRlZENvbnRlbnQ7Ci0g
ICAgCisKICAgICBSZWZQdHI8Tm9kZT4gcmVmTm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsK
ICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IHJlZk5vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgCiAg
ICAgZnJhZ21lbnQucmVtb3ZlTm9kZShyZWZOb2RlKTsKIAorICAgIE5vZGUqIGJsb2NrRW5jbG9z
aW5nSW5zZXJ0aW9uUG9zID0gZW5jbG9zaW5nQmxvY2soaW5zZXJ0aW9uUG9zLm5vZGUoKSk7Cisg
ICAgTm9kZSogbiA9IGZyYWdtZW50LmZpcnN0Q2hpbGQoKTsKKyAgICBSZWZQdHI8SFRNTEVsZW1l
bnQ+IHBsYWNlaG9sZGVyVG9Bdm9pZEJsb2NrRWxlbWVudHM7CisgICAgaWYgKG4gJiYgbi0+aGFz
VGFnTmFtZShwVGFnKSAmJiBibG9ja0VuY2xvc2luZ0luc2VydGlvblBvcyAmJiBibG9ja0VuY2xv
c2luZ0luc2VydGlvblBvcy0+aGFzVGFnTmFtZShwVGFnKQorICAgICAgICAmJiBibG9ja0VuY2xv
c2luZ0luc2VydGlvblBvcy0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgIFJlZlB0cjxOb2RlPiBp
bnNlcnRpb25BbmNob3IgPSBzcGxpdFRyZWVUb05vZGUoYmxvY2tFbmNsb3NpbmdJbnNlcnRpb25Q
b3MtPmZpcnN0Q2hpbGQoKSwgYmxvY2tFbmNsb3NpbmdJbnNlcnRpb25Qb3MtPnBhcmVudE5vZGUo
KSk7CisgICAgICAgIHBsYWNlaG9sZGVyVG9Bdm9pZEJsb2NrRWxlbWVudHMgPSBjcmVhdGVCcmVh
a0VsZW1lbnQoZG9jdW1lbnQoKSk7CisgICAgICAgIGluc2VydE5vZGVCZWZvcmUocGxhY2Vob2xk
ZXJUb0F2b2lkQmxvY2tFbGVtZW50cywgaW5zZXJ0aW9uQW5jaG9yKTsKKyAgICAgICAgaW5zZXJ0
aW9uUG9zID0gcG9zaXRpb25BZnRlck5vZGUocGxhY2Vob2xkZXJUb0F2b2lkQmxvY2tFbGVtZW50
cy5nZXQoKSk7CisgICAgfQorCiAgICAgTm9kZSogYmxvY2tTdGFydCA9IGVuY2xvc2luZ0Jsb2Nr
KGluc2VydGlvblBvcy5ub2RlKCkpOwogICAgIGlmICgoaXNMaXN0RWxlbWVudChyZWZOb2RlLmdl
dCgpKSB8fCAoaXNTdHlsZVNwYW4ocmVmTm9kZS5nZXQoKSkgJiYgaXNMaXN0RWxlbWVudChyZWZO
b2RlLT5maXJzdENoaWxkKCkpKSkKICAgICAgICAgJiYgYmxvY2tTdGFydC0+cmVuZGVyZXIoKS0+
aXNMaXN0SXRlbSgpKQpAQCAtOTM4LDYgKzk0OCw5IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OmRvQXBwbHkoKQogICAgIGVsc2UKICAgICAgICAgaW5zZXJ0Tm9kZUF0QW5kVXBkYXRl
Tm9kZXNJbnNlcnRlZChyZWZOb2RlLCBpbnNlcnRpb25Qb3MpOwogCisgICAgaWYgKHBsYWNlaG9s
ZGVyVG9Bdm9pZEJsb2NrRWxlbWVudHMgJiYgcGxhY2Vob2xkZXJUb0F2b2lkQmxvY2tFbGVtZW50
cy0+aW5Eb2N1bWVudCgpKQorICAgICAgICByZW1vdmVOb2RlKHBsYWNlaG9sZGVyVG9Bdm9pZEJs
b2NrRWxlbWVudHMpOworCiAgICAgLy8gTXV0YXRpb24gZXZlbnRzIChidWcgMjI2MzQpIG1heSBo
YXZlIGFscmVhZHkgcmVtb3ZlZCB0aGUgaW5zZXJ0ZWQgY29udGVudAogICAgIGlmICghcmVmTm9k
ZS0+aW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64780</attachid>
            <date>2010-08-18 15:03:48 -0700</date>
            <delta_ts>2010-08-21 20:45:33 -0700</delta_ts>
            <desc>work in progress 2</desc>
            <filename>bug-24009-20100818150347.patch</filename>
            <type>text/plain</type>
            <size>9357</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTU4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDgtMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
S2l0IG5lc3RzIGJsb2NrIGVsZW1lbnRzIHdoZW4gcGFzdGluZyBwYXJhZ3JhcGhzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDAwOQorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkp
OgorCiAyMDEwLTA4LTE3ICBBcml5YSBIaWRheWF0ICA8YXJpeWFAc2VuY2hhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiA2NTQ3MCkKKysrIFdlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDE0ICs3NCwxMyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCByZW1vdmVOb2RlKFBhc3NSZWZQ
dHI8Tm9kZT4pOwogICAgIHZvaWQgcmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihOb2RlKik7
CisgICAgdm9pZCBpbnNlcnROb2RlQmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgTm9kZSog
cmVmTm9kZSk7CiAKIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRGcmFnbWVu
dEZvclRlc3RSZW5kZXJpbmcoTm9kZSogY29udGV4dCk7CiAgICAgdm9pZCByZW1vdmVVbnJlbmRl
cmVkTm9kZXMoTm9kZSopOwogICAgIHZvaWQgcmVzdG9yZVRlc3RSZW5kZXJpbmdOb2Rlc1RvRnJh
Z21lbnQoTm9kZSopOwogICAgIHZvaWQgcmVtb3ZlSW50ZXJjaGFuZ2VOb2RlcyhOb2RlKik7Ci0g
ICAgCi0gICAgdm9pZCBpbnNlcnROb2RlQmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgTm9k
ZSogcmVmTm9kZSk7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IG1fZnJhZ21lbnQ7CkBAIC03NzcsNiArNzc2LDQxIEBAIHZv
aWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlRW5kSWYKICAgICB9CiB9CiAKK3N0YXRp
YyBib29sIGFyZUlkZW50aWNhbEVsZW1lbnRzKE5vZGUqIGZpcnN0LCBOb2RlKiBzZWNvbmQpCit7
CisgICAgLy8gY2hlY2sgdGhhdCB0YWcgbmFtZSBhbmQgYWxsIGF0dHJpYnV0ZSBuYW1lcyBhbmQg
dmFsdWVzIGFyZSBpZGVudGljYWwKKyAgICAKKyAgICBpZiAoIWZpcnN0LT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIXNlY29uZC0+aXNFbGVt
ZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgRWxlbWVudCogZmly
c3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCogPihmaXJzdCk7CisgICAgRWxlbWVudCog
c2Vjb25kRWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqID4oc2Vjb25kKTsKKyAgICAKKyAg
ICBpZiAoIWZpcnN0RWxlbWVudC0+dGFnUU5hbWUoKS5tYXRjaGVzKHNlY29uZEVsZW1lbnQtPnRh
Z1FOYW1lKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgTmFtZWROb2RlTWFw
KiBmaXJzdE1hcCA9IGZpcnN0RWxlbWVudC0+YXR0cmlidXRlcygpOworICAgIE5hbWVkTm9kZU1h
cCogc2Vjb25kTWFwID0gc2Vjb25kRWxlbWVudC0+YXR0cmlidXRlcygpOworICAgIAorICAgIHVu
c2lnbmVkIGZpcnN0TGVuZ3RoID0gZmlyc3RNYXAtPmxlbmd0aCgpOworICAgIAorICAgIGlmIChm
aXJzdExlbmd0aCAhPSBzZWNvbmRNYXAtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZpcnN0TGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBmaXJzdE1hcC0+YXR0cmlidXRlSXRlbShp
KTsKKyAgICAgICAgQXR0cmlidXRlKiBzZWNvbmRBdHRyaWJ1dGUgPSBzZWNvbmRNYXAtPmdldEF0
dHJpYnV0ZUl0ZW0oYXR0cmlidXRlLT5uYW1lKCkpOworICAgICAgICAKKyAgICAgICAgaWYgKCFz
ZWNvbmRBdHRyaWJ1dGUgfHwgYXR0cmlidXRlLT52YWx1ZSgpICE9IHNlY29uZEF0dHJpYnV0ZS0+
dmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIHRydWU7Cit9CisKIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQog
ewogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCk7CkBA
IC05MDksNyArOTQzLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgp
CiAKICAgICAvLyBGSVhNRTogV2hlbiBwYXN0aW5nIHJpY2ggY29udGVudCB3ZSdyZSBvZnRlbiBw
cmV2ZW50ZWQgZnJvbSBoZWFkaW5nIGRvd24gdGhlIGZhc3QgcGF0aCBieSBzdHlsZSBzcGFucy4g
IFRyeQogICAgIC8vIGFnYWluIGhlcmUgaWYgdGhleSd2ZSBiZWVuIHJlbW92ZWQuCi0gICAgCisK
ICAgICAvLyBXZSdyZSBmaW5pc2hlZCBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIGFkZC4KICAgICBp
ZiAoZnJhZ21lbnQuaXNFbXB0eSgpIHx8ICFmcmFnbWVudC5maXJzdENoaWxkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTkyNSw5ICs5NTksMjkgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgLy8gNikgU2VsZWN0IHRoZSByZXBsYWNlbWVudCBpZiByZXF1ZXN0
ZWQsIGFuZCBtYXRjaCBzdHlsZSBpZiByZXF1ZXN0ZWQuCiAgICAgCiAgICAgVmlzaWJsZVBvc2l0
aW9uIHN0YXJ0T2ZJbnNlcnRlZENvbnRlbnQsIGVuZE9mSW5zZXJ0ZWRDb250ZW50OwotICAgIAor
CiAgICAgUmVmUHRyPE5vZGU+IHJlZk5vZGUgPSBmcmFnbWVudC5maXJzdENoaWxkKCk7CiAgICAg
UmVmUHRyPE5vZGU+IG5vZGUgPSByZWZOb2RlLT5uZXh0U2libGluZygpOworCisgICAgLy8gV2hl
biBwYXN0aW5nIGluc2lkZSBhIGJsb2NrIGVsZW1lbnQsIGRvbid0IG5lc3QgdGhlIGJsb2NrIGVs
ZW1lbnQgd2l0aCBpdHNlbGYuCisgICAgTm9kZSogYmxvY2tFbmNsb3NpbmdJbnNlcnRpb25Qb3Mg
PSBlbmNsb3NpbmdCbG9jayhpbnNlcnRpb25Qb3Mubm9kZSgpKTsKKyAgICBOb2RlKiBmaXJzdE5v
ZGVJbkZyYWdtZW50ID0gZnJhZ21lbnQuZmlyc3RDaGlsZCgpOworICAgIFJlZlB0cjxIVE1MRWxl
bWVudD4gcGxhY2Vob2xkZXJUb0F2b2lkQmxvY2tFbGVtZW50czsKKyAgICAvLyBGSVhNRTogSXQg
c2hvdWxkbid0IG1hdHRlciBpZiBibG9ja0VuY2xvc2luZ0luc2VydGlvblBvcyBoYXMgYSBjaGls
ZCBvciBub3QuCisgICAgaWYgKGZpcnN0Tm9kZUluRnJhZ21lbnQgJiYgZmlyc3ROb2RlSW5GcmFn
bWVudC0+aXNIVE1MRWxlbWVudCgpICYmIGlzQmxvY2soYmxvY2tFbmNsb3NpbmdJbnNlcnRpb25Q
b3MpCisgICAgICAgICYmIGJsb2NrRW5jbG9zaW5nSW5zZXJ0aW9uUG9zICYmIGFyZUlkZW50aWNh
bEVsZW1lbnRzKGJsb2NrRW5jbG9zaW5nSW5zZXJ0aW9uUG9zLCBmaXJzdE5vZGVJbkZyYWdtZW50
KQorICAgICAgICAmJiBibG9ja0VuY2xvc2luZ0luc2VydGlvblBvcy0+cGFyZW50Tm9kZSgpICYm
IGJsb2NrRW5jbG9zaW5nSW5zZXJ0aW9uUG9zLT5wYXJlbnROb2RlKCktPmlzQ29udGVudEVkaXRh
YmxlKCkKKyAgICAgICAgJiYgYmxvY2tFbmNsb3NpbmdJbnNlcnRpb25Qb3MtPmZpcnN0Q2hpbGQo
KSkgeworICAgICAgICBOb2RlKiBub2RlVG9TcGxpdEZyb20gPSBpbnNlcnRpb25Qb3MuY29tcHV0
ZU5vZGVBZnRlclBvc2l0aW9uKCk7CisgICAgICAgIGlmICghbm9kZVRvU3BsaXRGcm9tKQorICAg
ICAgICAgICAgbm9kZVRvU3BsaXRGcm9tID0gaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKTsK
KyAgICAgICAgUmVmUHRyPE5vZGU+IGluc2VydGlvbkFuY2hvciA9IHNwbGl0VHJlZVRvTm9kZShu
b2RlVG9TcGxpdEZyb20sIGJsb2NrRW5jbG9zaW5nSW5zZXJ0aW9uUG9zLT5wYXJlbnROb2RlKCkp
OworICAgICAgICBwbGFjZWhvbGRlclRvQXZvaWRCbG9ja0VsZW1lbnRzID0gY3JlYXRlQnJlYWtF
bGVtZW50KGRvY3VtZW50KCkpOworICAgICAgICBpbnNlcnROb2RlQmVmb3JlKHBsYWNlaG9sZGVy
VG9Bdm9pZEJsb2NrRWxlbWVudHMsIGluc2VydGlvbkFuY2hvcik7CisgICAgICAgIGluc2VydGlv
blBvcyA9IHBvc2l0aW9uQWZ0ZXJOb2RlKHBsYWNlaG9sZGVyVG9Bdm9pZEJsb2NrRWxlbWVudHMu
Z2V0KCkpOworICAgICAgICAvLyBBdm9pZCBtZXJnaW5nIHRoZSBpbnNlcnRlZCBwYXJhZ3JhcGgg
d2l0aCB0aGUgcHJldmlvdXMgcGFyYWdycGFoCisgICAgICAgIHNlbGVjdGlvblN0YXJ0V2FzU3Rh
cnRPZlBhcmFncmFwaCA9IHRydWU7CisgICAgfQogICAgIAogICAgIGZyYWdtZW50LnJlbW92ZU5v
ZGUocmVmTm9kZSk7CiAKQEAgLTkzOCw2ICs5OTIsOSBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KCkKICAgICBlbHNlCiAgICAgICAgIGluc2VydE5vZGVBdEFuZFVwZGF0
ZU5vZGVzSW5zZXJ0ZWQocmVmTm9kZSwgaW5zZXJ0aW9uUG9zKTsKIAorICAgIGlmIChwbGFjZWhv
bGRlclRvQXZvaWRCbG9ja0VsZW1lbnRzICYmIHBsYWNlaG9sZGVyVG9Bdm9pZEJsb2NrRWxlbWVu
dHMtPmluRG9jdW1lbnQoKSkKKyAgICAgICAgcmVtb3ZlTm9kZShwbGFjZWhvbGRlclRvQXZvaWRC
bG9ja0VsZW1lbnRzKTsKKwogICAgIC8vIE11dGF0aW9uIGV2ZW50cyAoYnVnIDIyNjM0KSBtYXkg
aGF2ZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGluc2VydGVkIGNvbnRlbnQKICAgICBpZiAoIXJlZk5v
ZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYmxvY2stZWxlbWVudHMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWJs
b2NrLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWJsb2NrLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyBjb3B5aW5nIGFuZCBwYXN0
aW5nIGJsb2NrIGVsZW1lbnRzIGRvIG5vdCBwcm9kdWNlIG5lc3RlZCBibG9jayBlbGVtZW50cy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgPHA+aGVsbG88L3A+CitQQVNT
IDxwPmhlbGxvPC9wPjxwPndvcmxkPC9wPgorUEFTUyA8YmxvY2txdW90ZT5oZWxsbzwvYmxvY2tx
dW90ZT48ZGl2Pjxicj48L2Rpdj4KK1BBU1MgPGRpdj50ZXN0PC9kaXY+PGRpdj50ZXN0PC9kaXY+
PGRpdj48YnI+PC9kaXY+CitGQUlMIGV4cGVjdGVkIGE8cHJlIGlkPSJ0ZXN0Ij5iYXI+PC9wcmU+
YiBidXQgZ290IGE8cHJlIGlkPSJ0ZXN0Ij48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIg
c3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIj48cHJlIGlk
PSJ0ZXN0Ij5iYXI8L3ByZT48L3NwYW4+PC9wcmU+YgorRkFJTCBleHBlY3RlZCA8ZGl2PjxoMT5o
ZWxsbzwvaDE+PC9kaXY+IGJ1dCBnb3QgPGRpdj48aDE+PGgxIHN0eWxlPSJmb250LXdlaWdodDog
bm9ybWFsOyBmb250LXNpemU6IG1lZGl1bTsgIj5oZWxsbzwvaDE+PC9oMT48L2Rpdj4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQoraGVsbG8KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWJsb2NrLWVsZW1lbnRz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHkt
cGFzdGUtYmxvY2stZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWJsb2NrLWVsZW1lbnRzLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NvcHktcGFzdGUtYmxvY2stZWxlbWVu
dHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3RzL2NvcHktcGFzdGUtYmxvY2stZWxl
bWVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Nj
cmlwdC10ZXN0cy9jb3B5LXBhc3RlLWJsb2NrLWVsZW1lbnRzLmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9jb3B5LXBhc3RlLWJs
b2NrLWVsZW1lbnRzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACitkZXNjcmlwdGlv
bignVGhpcyB0ZXN0cyBjb3B5aW5nIGFuZCBwYXN0aW5nIGJsb2NrIGVsZW1lbnRzIGRvIG5vdCBw
cm9kdWNlIG5lc3RlZCBibG9jayBlbGVtZW50cy4nKTsKKwordmFyIHRlc3RDb250YWluZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK3Rlc3RDb250YWluZXIuY29udGVudEVkaXRh
YmxlID0gdHJ1ZTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdENvbnRhaW5lcik7CisK
K3ZhciBjb250ZW50ID0gJzxwPmhlbGxvPC9wPic7Cit2YXIgZXhwZWN0ZWQgPSAnPHA+aGVsbG88
L3A+JzsKKworZnVuY3Rpb24gdGVzdENvcHlQYXN0ZU9uU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVj
dG9yLCBleHBlY3RlZCkgeworICAgIAorfQorCitmdW5jdGlvbiB0ZXN0Q29weVBhc3RlKGNvbnRl
bnQsIHNlbGVjdG9yRm9yQ29weSwgc2VsZWN0b3JGb3JQYXN0ZSwgZXhwZWN0ZWQpIHsKKyAgICB0
ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9IGNvbnRlbnQ7CisgICAgc2VsZWN0b3JGb3JDb3B5KHRl
c3RDb250YWluZXIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5JywgZmFsc2UsIG51
bGwpOworICAgIHNlbGVjdG9yRm9yUGFzdGUodGVzdENvbnRhaW5lcik7CisgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoJ3Bhc3RlJywgZmFsc2UsIG51bGwpOworCisgICAgaWYgKHRlc3RDb250YWlu
ZXIuaW5uZXJIVE1MID09IGV4cGVjdGVkKQorICAgICAgICB0ZXN0UGFzc2VkKGV4cGVjdGVkKTsK
KyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoJ2V4cGVjdGVkICcrZXhwZWN0ZWQrJyBidXQg
Z290ICcrdGVzdENvbnRhaW5lci5pbm5lckhUTUwpOyAgIAorfQorCitmdW5jdGlvbiBzZWxlY3RB
bGwoY29udGFpbmVyKSB7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNlbGVjdEFsbENoaWxk
cmVuKGNvbnRhaW5lcik7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdG9yQnlJZChpZCkgeworICAgIHJl
dHVybiBmdW5jdGlvbiAoY29udGFpbmVyKSB7IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RB
bGxDaGlsZHJlbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpOyB9Cit9CisKK2Z1bmN0aW9u
IHNlbGVjdEVuZChjb250YWluZXIpIHsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFz
ZUFuZEV4dGVudChjb250YWluZXIsIGNvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCwgY29udGFp
bmVyLCBjb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGgpOworfQorCisvLyBwYXNzZXMKK3Rlc3RD
b3B5UGFzdGUoJzxwPmhlbGxvPC9wPicsIHNlbGVjdEFsbCwgc2VsZWN0QWxsLCAnPHA+aGVsbG88
L3A+Jyk7Cit0ZXN0Q29weVBhc3RlKCc8cD5oZWxsbzwvcD48cD53b3JsZDwvcD4nLCBzZWxlY3RB
bGwsIHNlbGVjdEFsbCwgJzxwPmhlbGxvPC9wPjxwPndvcmxkPC9wPicpOwordGVzdENvcHlQYXN0
ZSgnPGJsb2NrcXVvdGU+aGVsbG88L2Jsb2NrcXVvdGU+PGJsb2NrcXVvdGU+PGJyLz48L2Jsb2Nr
cXVvdGU+Jywgc2VsZWN0QWxsLCBzZWxlY3RBbGwsICc8YmxvY2txdW90ZT5oZWxsbzwvYmxvY2tx
dW90ZT48ZGl2Pjxicj48L2Rpdj4nKTsKK3Rlc3RDb3B5UGFzdGUoJzxkaXY+dGVzdDwvZGl2Pjxk
aXY+PGJyPjwvZGl2PicsIHNlbGVjdEFsbCwgc2VsZWN0RW5kLCAnPGRpdj50ZXN0PC9kaXY+PGRp
dj50ZXN0PC9kaXY+PGRpdj48YnI+PC9kaXY+Jyk7CisKKy8vIGZhaWxzCit0ZXN0Q29weVBhc3Rl
KCdhPHByZSBpZD0idGVzdCI+YmFyPC9wcmU+YicsIHNlbGVjdG9yQnlJZCgndGVzdCcpLCBzZWxl
Y3RvckJ5SWQoJ3Rlc3QnKSwgJ2E8cHJlIGlkPSJ0ZXN0Ij5iYXI+PC9wcmU+YicpOwordGVzdENv
cHlQYXN0ZSgnPGRpdj48aDE+aGVsbG88L2gxPjwvZGl2PicsIHNlbGVjdEFsbCwgc2VsZWN0QWxs
LCAnPGRpdj48aDE+aGVsbG88L2gxPjwvZGl2PicpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65045</attachid>
            <date>2010-08-21 20:45:37 -0700</date>
            <delta_ts>2010-08-21 20:45:37 -0700</delta_ts>
            <desc>needs more test conversion but ready for early review</desc>
            <filename>bug-24009-20100821204536.patch</filename>
            <type>text/plain</type>
            <size>19770</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTc4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMDgtMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
S2l0IG5lc3RzIGJsb2NrIGVsZW1lbnRzIHdoZW4gcGFzdGluZyBwYXJhZ3JhcGhzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDAwOQorCisgICAgICAg
IFRoZSBidWcgd2FzIGNhdXNlZCBieSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZCBub3QgcHJvcGVy
bHkgcHJldmVudGluZyBuZXN0aW5nIG9mIGJsb2NrIGVsZW1lbnRzCisgICAgICAgIHdoZW4gdGhl
IHNlbGVjdGlvbiBpcyBhIHJhbmdlLiBBZGRlZCBhIG5ldyBsb2dpYyB0byBwcmV2ZW50IG5lc3Rp
bmcgYmxvY2sgZWxlbWVudCB3aXRoIGl0c2VsZiBieQorICAgICAgICBzcGxpdHRpbmcgdGhlIHRy
ZWUgZnJvbSB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uIHRvIHRoZSB0aGUgcGFyZW50IG9mIHRoZSBz
dGFydEJsb2NrCisgICAgICAgIGFuZCBwbGFjaW5nIHRoZSBpbnNlcnRpb24gcG9zaXRpb24gYmVm
b3JlIHRoZSBzcGxpdCBibG9jayBlbGVtZW50LgorCisgICAgICAgIEJlY2F1c2UgdGhpcyBjYXVz
ZXMgdGhlIGluc2VydGVkIHBhcmFncmFwaCB0byBiZSBtZXJnZWQgd2l0aCBwcmV2aW91cyBwYXJh
Z3JhcGgKKyAgICAgICAgaW4gY2VydGFpbiBjYXNlcywgYWRkZWQgYSBuZXcgYXJndW1lbnQgYmxv
Y2tOZXN0aW5nV2FzUHJldmVudGVkIHRvIHNob3VsZE1lcmdlU3RhcnQKKyAgICAgICAgdG8gYXZv
aWQgbWVyZ2luZyBwYXJhZ3JhcGhzIHdoZW5ldmVyIG5ldyBsb2dpYyBpcyBleGVjdXRlZC4KKwor
ICAgICAgICBUZXN0OiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1ibG9jay1lbGVtZW50
cy5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpzaG91bGRNZXJnZVN0YXJ0KTogUmV0dXJucyBm
YWxzZSBpZiBibG9ja05lc3RpbmdXYXNQcmV2ZW50ZWQgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KTogU2VlIGFib3ZlLgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5n
L2h0bWxlZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFyZUlkZW50aWNhbEVsZW1lbnRz
KTogTW92ZWQgZnJvbSBBcHBseVN0eWxlQ29tbWFuZC5jcHAuCisgICAgICAgICogZWRpdGluZy9o
dG1sZWRpdGluZy5oOgorCiAyMDEwLTA4LTIxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDY1Nzc5KQorKysgV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYw
OSw0MSArMTYwOSw2IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OmlzVmFsaWRDYXJldFBvc2kK
ICAgICByZXR1cm4gKG9mZnNldEluVGV4dCA+IGNhcmV0TWluT2Zmc2V0KG5vZGUpICYmIG9mZnNl
dEluVGV4dCA8IGNhcmV0TWF4T2Zmc2V0KG5vZGUpKTsKIH0KIAotc3RhdGljIGJvb2wgYXJlSWRl
bnRpY2FsRWxlbWVudHMoTm9kZSAqZmlyc3QsIE5vZGUgKnNlY29uZCkKLXsKLSAgICAvLyBjaGVj
ayB0aGF0IHRhZyBuYW1lIGFuZCBhbGwgYXR0cmlidXRlIG5hbWVzIGFuZCB2YWx1ZXMgYXJlIGlk
ZW50aWNhbAotCi0gICAgaWYgKCFmaXJzdC0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKCFzZWNvbmQtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRWxlbWVudCAqZmlyc3RFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCAqPihmaXJzdCk7Ci0gICAgRWxlbWVudCAqc2Vjb25kRWxlbWVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQgKj4oc2Vjb25kKTsKLSAgICAKLSAgICBpZiAoIWZpcnN0RWxlbWVudC0+
dGFnUU5hbWUoKS5tYXRjaGVzKHNlY29uZEVsZW1lbnQtPnRhZ1FOYW1lKCkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBOYW1lZE5vZGVNYXAgKmZpcnN0TWFwID0gZmlyc3RFbGVtZW50
LT5hdHRyaWJ1dGVzKCk7Ci0gICAgTmFtZWROb2RlTWFwICpzZWNvbmRNYXAgPSBzZWNvbmRFbGVt
ZW50LT5hdHRyaWJ1dGVzKCk7Ci0KLSAgICB1bnNpZ25lZCBmaXJzdExlbmd0aCA9IGZpcnN0TWFw
LT5sZW5ndGgoKTsKLQotICAgIGlmIChmaXJzdExlbmd0aCAhPSBzZWNvbmRNYXAtPmxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Zmlyc3RMZW5ndGg7IGkrKykgewotICAgICAgICBBdHRyaWJ1dGUgKmF0dHJpYnV0ZSA9IGZpcnN0
TWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICBBdHRyaWJ1dGUgKnNlY29uZEF0dHJpYnV0
ZSA9IHNlY29uZE1hcC0+Z2V0QXR0cmlidXRlSXRlbShhdHRyaWJ1dGUtPm5hbWUoKSk7Ci0KLSAg
ICAgICAgaWYgKCFzZWNvbmRBdHRyaWJ1dGUgfHwgYXR0cmlidXRlLT52YWx1ZSgpICE9IHNlY29u
ZEF0dHJpYnV0ZS0+dmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdl
U3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0
IFBvc2l0aW9uICZlbmQpCiB7CiAgICAgTm9kZSAqc3RhcnROb2RlID0gc3RhcnQubm9kZSgpOwpJ
bmRleDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZp
c2lvbiA2NTc3OSkKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MCw3ICszNjAsNyBAQCBzdGF0aWMgYm9vbCBoYXNNYXRj
aGluZ1F1b3RlTGV2ZWwoVmlzaWJsCiAgICAgcmV0dXJuIGlzSW5zaWRlTWFpbEJsb2NrcXVvdGUg
JiYgKG51bUVuY2xvc2luZ01haWxCbG9ja3F1b3RlcyhleGlzdGluZykgPT0gbnVtRW5jbG9zaW5n
TWFpbEJsb2NrcXVvdGVzKGluc2VydGVkKSk7CiB9CiAKLWJvb2wgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OnNob3VsZE1lcmdlU3RhcnQoYm9vbCBzZWxlY3Rpb25TdGFydFdhc1N0YXJ0T2ZQYXJh
Z3JhcGgsIGJvb2wgZnJhZ21lbnRIYXNJbnRlcmNoYW5nZU5ld2xpbmVBdFN0YXJ0LCBib29sIHNl
bGVjdGlvblN0YXJ0V2FzSW5zaWRlTWFpbEJsb2NrcXVvdGUpCitib29sIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpzaG91bGRNZXJnZVN0YXJ0KGJvb2wgc2VsZWN0aW9uU3RhcnRXYXNTdGFydE9m
UGFyYWdyYXBoLCBib29sIGJsb2NrTmVzdGluZ1dhc1ByZXZlbnRlZCwgYm9vbCBmcmFnbWVudEhh
c0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQsIGJvb2wgc2VsZWN0aW9uU3RhcnRXYXNJbnNpZGVN
YWlsQmxvY2txdW90ZSkKIHsKICAgICBpZiAobV9tb3ZpbmdQYXJhZ3JhcGgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTM3OCwxMSArMzc4LDEyIEBAIGJvb2wgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OnNob3VsZE1lcmcKICAgICBpZiAoaXNTdGFydE9mUGFyYWdyYXBoKHN0YXJ0T2ZJbnNl
cnRlZENvbnRlbnQpICYmIHNlbGVjdGlvblN0YXJ0V2FzSW5zaWRlTWFpbEJsb2NrcXVvdGUgJiYg
aGFzTWF0Y2hpbmdRdW90ZUxldmVsKHByZXYsIHBvc2l0aW9uQXRFbmRPZkluc2VydGVkQ29udGVu
dCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gIXNlbGVjdGlvblN0YXJ0
V2FzU3RhcnRPZlBhcmFncmFwaCAmJiAKLSAgICAgICAgICAgIWZyYWdtZW50SGFzSW50ZXJjaGFu
Z2VOZXdsaW5lQXRTdGFydCAmJgotICAgICAgICAgICBpc1N0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRP
Zkluc2VydGVkQ29udGVudCkgJiYgCi0gICAgICAgICAgICFzdGFydE9mSW5zZXJ0ZWRDb250ZW50
LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5oYXNUYWdOYW1lKGJyVGFnKSAmJgotICAgICAgICAg
ICBzaG91bGRNZXJnZShzdGFydE9mSW5zZXJ0ZWRDb250ZW50LCBwcmV2KTsKKyAgICByZXR1cm4g
IXNlbGVjdGlvblN0YXJ0V2FzU3RhcnRPZlBhcmFncmFwaAorICAgICAgICAgICAmJiAhYmxvY2tO
ZXN0aW5nV2FzUHJldmVudGVkCisgICAgICAgICAgICYmICFmcmFnbWVudEhhc0ludGVyY2hhbmdl
TmV3bGluZUF0U3RhcnQKKyAgICAgICAgICAgJiYgaXNTdGFydE9mUGFyYWdyYXBoKHN0YXJ0T2ZJ
bnNlcnRlZENvbnRlbnQpCisgICAgICAgICAgICYmICFzdGFydE9mSW5zZXJ0ZWRDb250ZW50LmRl
ZXBFcXVpdmFsZW50KCkubm9kZSgpLT5oYXNUYWdOYW1lKGJyVGFnKQorICAgICAgICAgICAmJiBz
aG91bGRNZXJnZShzdGFydE9mSW5zZXJ0ZWRDb250ZW50LCBwcmV2KTsKIH0KIAogYm9vbCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hvdWxkTWVyZ2VFbmQoYm9vbCBzZWxlY3Rpb25FbmRXYXNF
bmRPZlBhcmFncmFwaCkKQEAgLTgwNiw3ICs4MDcsOCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KCkKICAgICAKICAgICBQb3NpdGlvbiBpbnNlcnRpb25Qb3MgPSBzZWxl
Y3Rpb24uc3RhcnQoKTsKICAgICBib29sIHN0YXJ0SXNJbnNpZGVNYWlsQmxvY2txdW90ZSA9IG5l
YXJlc3RNYWlsQmxvY2txdW90ZShpbnNlcnRpb25Qb3Mubm9kZSgpKTsKLSAgICAKKworICAgIGJv
b2wgcHJldmVudEJsb2NrTmVzdFdpdGhJdHNlbGYgPSBtX3ByZXZlbnROZXN0aW5nOwogICAgIGlm
ICgoc2VsZWN0aW9uU3RhcnRXYXNTdGFydE9mUGFyYWdyYXBoICYmIHNlbGVjdGlvbkVuZFdhc0Vu
ZE9mUGFyYWdyYXBoICYmICFzdGFydElzSW5zaWRlTWFpbEJsb2NrcXVvdGUpIHx8CiAgICAgICAg
IHN0YXJ0QmxvY2sgPT0gY3VycmVudFJvb3QgfHwgaXNMaXN0SXRlbShzdGFydEJsb2NrKSB8fCBz
ZWxlY3Rpb25Jc1BsYWluVGV4dCkKICAgICAgICAgbV9wcmV2ZW50TmVzdGluZyA9IGZhbHNlOwpA
QCAtOTA5LDcgKzkxMSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHko
KQogCiAgICAgLy8gRklYTUU6IFdoZW4gcGFzdGluZyByaWNoIGNvbnRlbnQgd2UncmUgb2Z0ZW4g
cHJldmVudGVkIGZyb20gaGVhZGluZyBkb3duIHRoZSBmYXN0IHBhdGggYnkgc3R5bGUgc3BhbnMu
ICBUcnkKICAgICAvLyBhZ2FpbiBoZXJlIGlmIHRoZXkndmUgYmVlbiByZW1vdmVkLgotICAgIAor
CiAgICAgLy8gV2UncmUgZmluaXNoZWQgaWYgdGhlcmUgaXMgbm90aGluZyB0byBhZGQuCiAgICAg
aWYgKGZyYWdtZW50LmlzRW1wdHkoKSB8fCAhZnJhZ21lbnQuZmlyc3RDaGlsZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC05MjUsOSArOTI3LDI4IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OmRvQXBwbHkoKQogICAgIC8vIDYpIFNlbGVjdCB0aGUgcmVwbGFjZW1lbnQgaWYgcmVxdWVz
dGVkLCBhbmQgbWF0Y2ggc3R5bGUgaWYgcmVxdWVzdGVkLgogICAgIAogICAgIFZpc2libGVQb3Np
dGlvbiBzdGFydE9mSW5zZXJ0ZWRDb250ZW50LCBlbmRPZkluc2VydGVkQ29udGVudDsKLSAgICAK
KwogICAgIFJlZlB0cjxOb2RlPiByZWZOb2RlID0gZnJhZ21lbnQuZmlyc3RDaGlsZCgpOwogICAg
IFJlZlB0cjxOb2RlPiBub2RlID0gcmVmTm9kZS0+bmV4dFNpYmxpbmcoKTsKKworICAgIC8vIFdo
ZW4gcGFzdGluZyBpbnNpZGUgYSBibG9jayBlbGVtZW50LCBkb24ndCBuZXN0IHRoZSBibG9jayBl
bGVtZW50IHdpdGggaXRzZWxmLgorICAgIE5vZGUqIGZpcnN0Tm9kZUluRnJhZ21lbnQgPSBmcmFn
bWVudC5maXJzdENoaWxkKCk7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBwbGFjZWhvbGRlclRv
QXZvaWROZXN0aW5nOworICAgIGJvb2wgYmxvY2tOZXN0aW5nV2FzUHJldmVudGVkID0gZmFsc2U7
CisgICAgLy8gRklYTUU6IEl0IHNob3VsZG4ndCBtYXR0ZXIgaWYgYmxvY2tFbmNsb3NpbmdJbnNl
cnRpb25Qb3MgaGFzIGEgY2hpbGQgb3Igbm90LgorICAgIGlmIChwcmV2ZW50QmxvY2tOZXN0V2l0
aEl0c2VsZiAmJiBmaXJzdE5vZGVJbkZyYWdtZW50ICYmIGZpcnN0Tm9kZUluRnJhZ21lbnQtPmlz
SFRNTEVsZW1lbnQoKQorICAgICAgICAmJiBzdGFydEJsb2NrICYmIGFyZUlkZW50aWNhbEVsZW1l
bnRzKHN0YXJ0QmxvY2ssIGZpcnN0Tm9kZUluRnJhZ21lbnQpCisgICAgICAgICYmIHN0YXJ0Qmxv
Y2stPnBhcmVudE5vZGUoKSAmJiBzdGFydEJsb2NrLT5wYXJlbnROb2RlKCktPmlzQ29udGVudEVk
aXRhYmxlKCkpIHsKKyAgICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBwbGFjZWhvbGRlckZvclNw
bGl0dGluZyA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgaW5zZXJ0
Tm9kZUF0KHBsYWNlaG9sZGVyRm9yU3BsaXR0aW5nLCBpbnNlcnRpb25Qb3MpOworICAgICAgICBS
ZWZQdHI8Tm9kZT4gaW5zZXJ0aW9uQW5jaG9yID0gc3BsaXRUcmVlVG9Ob2RlKHBsYWNlaG9sZGVy
Rm9yU3BsaXR0aW5nLmdldCgpLCBzdGFydEJsb2NrLT5wYXJlbnROb2RlKCkpOworICAgICAgICBw
bGFjZWhvbGRlclRvQXZvaWROZXN0aW5nID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkp
OworICAgICAgICBpbnNlcnROb2RlQmVmb3JlKHBsYWNlaG9sZGVyVG9Bdm9pZE5lc3RpbmcsIGlu
c2VydGlvbkFuY2hvcik7CisgICAgICAgIGluc2VydGlvblBvcyA9IFBvc2l0aW9uKHBsYWNlaG9s
ZGVyVG9Bdm9pZE5lc3RpbmcuZ2V0KCksIDApOworICAgICAgICByZW1vdmVOb2RlQW5kUHJ1bmVB
bmNlc3RvcnMocGxhY2Vob2xkZXJGb3JTcGxpdHRpbmcuZ2V0KCkpOworICAgICAgICAvLyBBdm9p
ZCBtZXJnaW5nIHRoZSBpbnNlcnRlZCBwYXJhZ3JhcGggd2l0aCB0aGUgcHJldmlvdXMgcGFyYWdy
cGFoCisgICAgICAgIGJsb2NrTmVzdGluZ1dhc1ByZXZlbnRlZCA9IHRydWU7CisgICAgfQogICAg
IAogICAgIGZyYWdtZW50LnJlbW92ZU5vZGUocmVmTm9kZSk7CiAKQEAgLTkzOCw2ICs5NTksOSBA
QCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICBlbHNlCiAgICAg
ICAgIGluc2VydE5vZGVBdEFuZFVwZGF0ZU5vZGVzSW5zZXJ0ZWQocmVmTm9kZSwgaW5zZXJ0aW9u
UG9zKTsKIAorICAgIGlmIChwbGFjZWhvbGRlclRvQXZvaWROZXN0aW5nICYmIHBsYWNlaG9sZGVy
VG9Bdm9pZE5lc3RpbmctPmluRG9jdW1lbnQoKSkKKyAgICAgICAgcmVtb3ZlTm9kZShwbGFjZWhv
bGRlclRvQXZvaWROZXN0aW5nKTsKKwogICAgIC8vIE11dGF0aW9uIGV2ZW50cyAoYnVnIDIyNjM0
KSBtYXkgaGF2ZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGluc2VydGVkIGNvbnRlbnQKICAgICBpZiAo
IXJlZk5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTg5LDcgKzEwMTMs
NyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyB0aGUg
c3RhcnQgbWVyZ2Ugc28gdGhhdCB0aGUgc3RhcnQgbWVyZ2UgZG9lc24ndCBlZmZlY3Qgb3VyIGRl
Y2lzaW9uLgogICAgIG1fc2hvdWxkTWVyZ2VFbmQgPSBzaG91bGRNZXJnZUVuZChzZWxlY3Rpb25F
bmRXYXNFbmRPZlBhcmFncmFwaCk7CiAgICAgCi0gICAgaWYgKHNob3VsZE1lcmdlU3RhcnQoc2Vs
ZWN0aW9uU3RhcnRXYXNTdGFydE9mUGFyYWdyYXBoLCBmcmFnbWVudC5oYXNJbnRlcmNoYW5nZU5l
d2xpbmVBdFN0YXJ0KCksIHN0YXJ0SXNJbnNpZGVNYWlsQmxvY2txdW90ZSkpIHsKKyAgICBpZiAo
c2hvdWxkTWVyZ2VTdGFydChzZWxlY3Rpb25TdGFydFdhc1N0YXJ0T2ZQYXJhZ3JhcGgsIGJsb2Nr
TmVzdGluZ1dhc1ByZXZlbnRlZCwgZnJhZ21lbnQuaGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRTdGFy
dCgpLCBzdGFydElzSW5zaWRlTWFpbEJsb2NrcXVvdGUpKSB7CiAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBkZXN0aW5hdGlvbiA9IHN0YXJ0T2ZJbnNlcnRlZENvbnRlbnQucHJldmlvdXMoKTsKICAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUgPSBzdGFydE9mSW5z
ZXJ0ZWRDb250ZW50OwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5oCShyZXZpc2lvbiA2NTc3OSkKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB1cGRhdGVOb2Rlc0luc2VydGVkKE5vZGUqKTsKICAgICBib29sIHNo
b3VsZFJlbW92ZUVuZEJSKE5vZGUqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKICAgICAKLSAg
ICBib29sIHNob3VsZE1lcmdlU3RhcnQoYm9vbCwgYm9vbCwgYm9vbCk7CisgICAgYm9vbCBzaG91
bGRNZXJnZVN0YXJ0KGJvb2wgc2VsZWN0aW9uU3RhcnRXYXNTdGFydE9mUGFyYWdyYXBoLCBib29s
IGJsb2NrTmVzdGluZ1dhc1ByZXZlbnRlZCwgYm9vbCBmcmFnbWVudEhhc0ludGVyY2hhbmdlTmV3
bGluZUF0U3RhcnQsIGJvb2wgc2VsZWN0aW9uU3RhcnRXYXNJbnNpZGVNYWlsQmxvY2txdW90ZSk7
CiAgICAgYm9vbCBzaG91bGRNZXJnZUVuZChib29sIHNlbGVjdEVuZFdhc0VuZE9mUGFyYWdyYXBo
KTsKICAgICBib29sIHNob3VsZE1lcmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOwogICAgIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZp
c2lvbiA2NTc3OSkKKysrIFdlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyNyw2ICs4MjcsNDEgQEAgSFRNTEVsZW1lbnQqIG91dGVybW9zdEVuY2xvc2lu
Z0xpc3QoTm9kZQogICAgIHJldHVybiBsaXN0OwogfQogCitib29sIGFyZUlkZW50aWNhbEVsZW1l
bnRzKE5vZGUgKmZpcnN0LCBOb2RlICpzZWNvbmQpCit7CisgICAgLy8gY2hlY2sgdGhhdCB0YWcg
bmFtZSBhbmQgYWxsIGF0dHJpYnV0ZSBuYW1lcyBhbmQgdmFsdWVzIGFyZSBpZGVudGljYWwKKwor
ICAgIGlmICghZmlyc3QtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFzZWNvbmQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgRWxlbWVudCAqZmlyc3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihm
aXJzdCk7CisgICAgRWxlbWVudCAqc2Vjb25kRWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQg
Kj4oc2Vjb25kKTsKKworICAgIGlmICghZmlyc3RFbGVtZW50LT50YWdRTmFtZSgpLm1hdGNoZXMo
c2Vjb25kRWxlbWVudC0+dGFnUU5hbWUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IE5hbWVkTm9kZU1hcCAqZmlyc3RNYXAgPSBmaXJzdEVsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKKyAg
ICBOYW1lZE5vZGVNYXAgKnNlY29uZE1hcCA9IHNlY29uZEVsZW1lbnQtPmF0dHJpYnV0ZXMoKTsK
KworICAgIHVuc2lnbmVkIGZpcnN0TGVuZ3RoID0gZmlyc3RNYXAtPmxlbmd0aCgpOworCisgICAg
aWYgKGZpcnN0TGVuZ3RoICE9IHNlY29uZE1hcC0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmaXJzdExlbmd0aDsgaSsrKSB7
CisgICAgICAgIEF0dHJpYnV0ZSAqYXR0cmlidXRlID0gZmlyc3RNYXAtPmF0dHJpYnV0ZUl0ZW0o
aSk7CisgICAgICAgIEF0dHJpYnV0ZSAqc2Vjb25kQXR0cmlidXRlID0gc2Vjb25kTWFwLT5nZXRB
dHRyaWJ1dGVJdGVtKGF0dHJpYnV0ZS0+bmFtZSgpKTsKKworICAgICAgICBpZiAoIXNlY29uZEF0
dHJpYnV0ZSB8fCBhdHRyaWJ1dGUtPnZhbHVlKCkgIT0gc2Vjb25kQXR0cmlidXRlLT52YWx1ZSgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCiBib29sIGNhbk1lcmdlTGlzdHMoRWxlbWVudCogZmlyc3RMaXN0LCBFbGVtZW50KiBzZWNv
bmRMaXN0KQogewogICAgIGlmICghZmlyc3RMaXN0IHx8ICFzZWNvbmRMaXN0IHx8ICFmaXJzdExp
c3QtPmlzSFRNTEVsZW1lbnQoKSB8fCAhc2Vjb25kTGlzdC0+aXNIVE1MRWxlbWVudCgpKQpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJldmlzaW9uIDY1Nzc5KQorKysgV2ViQ29yZS9lZGl0aW5n
L2h0bWxlZGl0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw3ICsyMTIsNyBAQCBFbGVtZW50
KiBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihjb25zdCBQCiBFbGVtZW50KiB1bnNwbGl0dGFibGVF
bGVtZW50Rm9yUG9zaXRpb24oY29uc3QgUG9zaXRpb24mKTsKIAogLy8gQm9vbGVhbiBmdW5jdGlv
bnMgb24gRWxlbWVudAotICAgIAorYm9vbCBhcmVJZGVudGljYWxFbGVtZW50cyhOb2RlICpmaXJz
dCwgTm9kZSAqc2Vjb25kKTsKIGJvb2wgY2FuTWVyZ2VMaXN0cyhFbGVtZW50KiBmaXJzdExpc3Qs
IEVsZW1lbnQqIHNlY29uZExpc3QpOwogICAgIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNjU3ODEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0wOC0yMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWJLaXQgbmVzdHMgYmxvY2sgZWxlbWVudHMgd2hlbiBwYXN0aW5nIHBhcmFncmFwaHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDA5CisKKyAg
ICAgICAgQWRkZWQgYSB0ZXN0IHRvIGVuc3VyZSBXZWJLaXQgZG9lc24ndCBuZXN0IGJsb2NrIGVs
ZW1lbnQgd2l0aCBpdHNlbGYKKyAgICAgICAgd2hlbiBjb3B5aW5nICYgcGFzdGluZyB0aGUgc2Ft
ZSBwYXJhZ3JhcGguCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDI0MjI5My0xLWV4
cGVjdGVkLnR4dDogTmVzdGVkIGRpdiBoYXMgYmVlbiByZW1vdmVkIGFzIGRlc2lyZWQuCisgICAg
ICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYmlkaS1leHBlY3RlZC50eHQ6IE5l
c3RlZCBkaXYgaGFzIGJlZW4gcmVtb3ZlZCBhcyBkZXNpcmVkLgorICAgICAgICAqIGVkaXRpbmcv
cGFzdGVib2FyZC9jb3B5LXBhc3RlLWJsb2NrLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYmxvY2stZWxlbWVudHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9j
b3B5LXBhc3RlLWJsb2NrLWVsZW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RDb3B5UGFz
dGUpOgorICAgICAgICAoc2VsZWN0QWxsKToKKyAgICAgICAgKHNlbGVjdEVuZCk6CisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vcmVwbGFjZS1zZWxlY3Rpb24tY3Jhc2gtZXhwZWN0ZWQudHh0
OiBJbnNlcnRlZCBwYXJhZ3JhcGggaXMgbm8gbG9uZ2VyIG1lcmdlZAorICAgICAgICB3aXRoIHRo
ZSBwcmV2aW91cyBwYXJhZ3JhcGguCisKIDIwMTAtMDgtMjEgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4K
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80MjQyMjkzLTEtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80MjQyMjkz
LTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NTc3OSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC80MjQyMjkzLTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3
ICsxMSw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmcKIEVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01S
YW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAzIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rp
b246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3Rp
bGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6
V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCkBA
IC0yOCw2ICsyOCw1IEBAIGZpcnN0IHJlZ2lvbiAoYmFyIGFuZCBiYXogYXJlIGNvcGllZCk6CiBz
ZWNvbmQgcmVnaW9uIChiYXIgYW5kIGJheiBhcmUgcGFzdGVkKToKIHwgImZvbyIKIHwgPGRpdj4K
LXwgICA8ZGl2PgotfCAgICAgImJhciIKLXwgICAiYmF6PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAg
ICJiYXIiCit8ICJiYXo8I3NlbGVjdGlvbi1jYXJldD4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1iaWRpLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1iaWRpLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNjU3NzkpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
Y29weS1wYXN0ZS1iaWRpLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTAgKzIz
LDkgQEAgc2Vjb25kIHRlc3QgLSBhZnRlcjoKIHwgIgogIgogfCA8ZGl2PgotfCAgIDxkaXY+Ci18
ICAgICAiMTIzNNep15PXktebOiIKLXwgICA8ZGl2PgotfCAgICAgc3R5bGU9ImRpcmVjdGlvbjog
cnRsOyAiCi18ICAgICAiMTIzNNep15PXktebOjwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICAiMTIz
NNep15PXktebOiIKK3wgPGRpdj4KK3wgICBzdHlsZT0iZGlyZWN0aW9uOiBydGw7ICIKK3wgICAi
MTIzNNep15PXktebOjwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgIgogIgpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYmxvY2stZWxlbWVudHMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBh
c3RlLWJsb2NrLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWJsb2NrLWVsZW1lbnRzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyBjb3B5aW5nIGFu
ZCBwYXN0aW5nIGJsb2NrIGVsZW1lbnRzIGRvIG5vdCBwcm9kdWNlIG5lc3RlZCBibG9jayBlbGVt
ZW50cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgPHA+aGVsbG88L3A+
CitQQVNTIDxwPmhlbGxvPC9wPjxwPndvcmxkPC9wPgorUEFTUyA8YmxvY2txdW90ZT5oZWxsbzwv
YmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj4KK1BBU1MgPGRpdj50ZXN0PC9kaXY+PGRpdj50ZXN0
PC9kaXY+PGRpdj48YnI+PC9kaXY+CitGQUlMIGV4cGVjdGVkIGE8cHJlIGlkPSJ0ZXN0Ij5iYXI+
PC9wcmU+YiBidXQgZ290IGE8cHJlIGlkPSJ0ZXN0Ij48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUt
c3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIj48
cHJlIGlkPSJ0ZXN0Ij5iYXI8L3ByZT48L3NwYW4+PC9wcmU+YgorRkFJTCBleHBlY3RlZCA8ZGl2
PjxoMT5oZWxsbzwvaDE+PC9kaXY+IGJ1dCBnb3QgPGRpdj48aDE+PGgxIHN0eWxlPSJmb250LXdl
aWdodDogbm9ybWFsOyBmb250LXNpemU6IG1lZGl1bTsgIj5oZWxsbzwvaDE+PC9oMT48L2Rpdj4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQoraGVsbG8K
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWJsb2NrLWVs
ZW1lbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2NvcHktcGFzdGUtYmxvY2stZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWJsb2NrLWVsZW1lbnRzLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2NvcHktcGFzdGUtYmxvY2st
ZWxlbWVudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2NyaXB0LXRlc3RzL2NvcHktcGFzdGUtYmxv
Y2stZWxlbWVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL3NjcmlwdC10ZXN0cy9jb3B5LXBhc3RlLWJsb2NrLWVsZW1lbnRzLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NjcmlwdC10ZXN0cy9jb3B5LXBh
c3RlLWJsb2NrLWVsZW1lbnRzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACitkZXNj
cmlwdGlvbignVGhpcyB0ZXN0cyBjb3B5aW5nIGFuZCBwYXN0aW5nIGJsb2NrIGVsZW1lbnRzIGRv
IG5vdCBwcm9kdWNlIG5lc3RlZCBibG9jayBlbGVtZW50cy4nKTsKKwordmFyIHRlc3RDb250YWlu
ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK3Rlc3RDb250YWluZXIuY29udGVu
dEVkaXRhYmxlID0gdHJ1ZTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdENvbnRhaW5l
cik7CisKK3ZhciBjb250ZW50ID0gJzxwPmhlbGxvPC9wPic7Cit2YXIgZXhwZWN0ZWQgPSAnPHA+
aGVsbG88L3A+JzsKKworZnVuY3Rpb24gdGVzdENvcHlQYXN0ZU9uU2VsZWN0aW9uKGNvbnRlbnQs
IHNlbGVjdG9yLCBleHBlY3RlZCkgeworICAgIAorfQorCitmdW5jdGlvbiB0ZXN0Q29weVBhc3Rl
KGNvbnRlbnQsIHNlbGVjdG9yRm9yQ29weSwgc2VsZWN0b3JGb3JQYXN0ZSwgZXhwZWN0ZWQpIHsK
KyAgICB0ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9IGNvbnRlbnQ7CisgICAgc2VsZWN0b3JGb3JD
b3B5KHRlc3RDb250YWluZXIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5JywgZmFs
c2UsIG51bGwpOworICAgIHNlbGVjdG9yRm9yUGFzdGUodGVzdENvbnRhaW5lcik7CisgICAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoJ3Bhc3RlJywgZmFsc2UsIG51bGwpOworCisgICAgaWYgKHRlc3RD
b250YWluZXIuaW5uZXJIVE1MID09IGV4cGVjdGVkKQorICAgICAgICB0ZXN0UGFzc2VkKGV4cGVj
dGVkKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoJ2V4cGVjdGVkICcrZXhwZWN0ZWQr
JyBidXQgZ290ICcrdGVzdENvbnRhaW5lci5pbm5lckhUTUwpOyAgIAorfQorCitmdW5jdGlvbiBz
ZWxlY3RBbGwoY29udGFpbmVyKSB7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNlbGVjdEFs
bENoaWxkcmVuKGNvbnRhaW5lcik7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdG9yQnlJZChpZCkgewor
ICAgIHJldHVybiBmdW5jdGlvbiAoY29udGFpbmVyKSB7IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5z
ZWxlY3RBbGxDaGlsZHJlbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkpOyB9Cit9CisKK2Z1
bmN0aW9uIHNlbGVjdEVuZChjb250YWluZXIpIHsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
c2V0QmFzZUFuZEV4dGVudChjb250YWluZXIsIGNvbnRhaW5lci5jaGlsZE5vZGVzLmxlbmd0aCwg
Y29udGFpbmVyLCBjb250YWluZXIuY2hpbGROb2Rlcy5sZW5ndGgpOworfQorCisvLyBwYXNzZXMK
K3Rlc3RDb3B5UGFzdGUoJzxwPmhlbGxvPC9wPicsIHNlbGVjdEFsbCwgc2VsZWN0QWxsLCAnPHA+
aGVsbG88L3A+Jyk7Cit0ZXN0Q29weVBhc3RlKCc8cD5oZWxsbzwvcD48cD53b3JsZDwvcD4nLCBz
ZWxlY3RBbGwsIHNlbGVjdEFsbCwgJzxwPmhlbGxvPC9wPjxwPndvcmxkPC9wPicpOwordGVzdENv
cHlQYXN0ZSgnPGJsb2NrcXVvdGU+aGVsbG88L2Jsb2NrcXVvdGU+PGJsb2NrcXVvdGU+PGJyLz48
L2Jsb2NrcXVvdGU+Jywgc2VsZWN0QWxsLCBzZWxlY3RBbGwsICc8YmxvY2txdW90ZT5oZWxsbzwv
YmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj4nKTsKK3Rlc3RDb3B5UGFzdGUoJzxkaXY+dGVzdDwv
ZGl2PjxkaXY+PGJyPjwvZGl2PicsIHNlbGVjdEFsbCwgc2VsZWN0RW5kLCAnPGRpdj50ZXN0PC9k
aXY+PGRpdj50ZXN0PC9kaXY+PGRpdj48YnI+PC9kaXY+Jyk7CisKKy8vIGZhaWxzCit0ZXN0Q29w
eVBhc3RlKCdhPHByZSBpZD0idGVzdCI+YmFyPC9wcmU+YicsIHNlbGVjdG9yQnlJZCgndGVzdCcp
LCBzZWxlY3RvckJ5SWQoJ3Rlc3QnKSwgJ2E8cHJlIGlkPSJ0ZXN0Ij5iYXI+PC9wcmU+YicpOwor
dGVzdENvcHlQYXN0ZSgnPGRpdj48aDE+aGVsbG88L2gxPjwvZGl2PicsIHNlbGVjdEFsbCwgc2Vs
ZWN0QWxsLCAnPGRpdj48aDE+aGVsbG88L2gxPjwvZGl2PicpOworCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3JlcGxh
Y2Utc2VsZWN0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXBsYWNlLXNlbGVjdGlvbi1jcmFzaC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDY1Nzc5KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVwbGFj
ZS1zZWxlY3Rpb24tY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogCiAgICAgICAgIDxkaXYgY29udGVudGVkaXRhYmxlPSIiPgotICAgICAgICAgICAgPHA+
PHNwYW4gY2xhc3M9IkFwcGxlLXRhYi1zcGFuIiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIj4gICAg
PGJyPjwvc3Bhbj5ObyBjcmFzaCEmbmJzcDs8L3A+CisgICAgICAgICAgICA8cD48c3BhbiBjbGFz
cz0iQXBwbGUtdGFiLXNwYW4iIHN0eWxlPSJ3aGl0ZS1zcGFjZTpwcmUiPiAgICA8L3NwYW4+PC9w
PjxwPk5vIGNyYXNoISZuYnNwOzwvcD4KICAgICAgICAgPC9kaXY+CiAgICAgCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>