<?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>7955</bug_id>
          
          <creation_ts>2006-03-24 00:18:04 -0800</creation_ts>
          <short_desc>REGRESSION: Content with an interchange newline lost when pasted at the end of the document</short_desc>
          <delta_ts>2006-03-24 19:26:16 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Garcia">justin.garcia</reporter>
          <assigned_to name="Justin Garcia">justin.garcia</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>37475</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-24 00:18:04 -0800</bug_when>
    <thetext>ReplaceSelectionCommand sometimes does an InsertParagraphSeparator, which sometimes folds everything from the current insertion point to the end of the document into a div.  This will move the ReplacementFragment&apos;s holder, something I didn&apos;t foresee when I checked in my patch yesterday.  Also the holder can cause isEndOfBlock and isEndOfDocument checks inside ReplaceSelectionCommand to fail erroneously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37479</commentid>
    <comment_count>1</comment_count>
      <attachid>7274</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-24 01:14:40 -0800</bug_when>
    <thetext>Created attachment 7274
testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37482</commentid>
    <comment_count>2</comment_count>
      <attachid>7276</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-24 01:58:29 -0800</bug_when>
    <thetext>Created attachment 7276
patch

Instead of getting rid of isProbablyBlock by keeping the replacement fragment in the document during the paste operation, I keep a map from nodes to RenderingInfos - a class that contains the style that a node had during the test insertion, and a bool for whether or not its renderer was blockFlow during the test insertion.

When I restore styles, I must do so in depth first order, so that restoring the style on a node doesn&apos;t negate restoration I&apos;ve done on its children.  To do this, I traverse the fragment in depth first order during the test insertion, putting nodes into a Vector in addition to putting them into the map.  Then I restore styles to nodes in the order that they occur in the Vector.  At first I tried to avoid using the Vector by passing fixupNodeStyles a range to operate over, and traversing that range in depth first order.  But since style restoration does an ApplyStyleCommand, which moves nodes around, wraps them in new blocks, and splits and merges nodes, I wasn&apos;t completely confident that my code would visit all of the nodes that were pasted.

I could have also left the code as-is and just added a HashMap&lt;Node*, bool&gt; for the isBlockFlow checks, but I thought that paste might eventually need to save even more information about the test insertion, like isInline.

The attached diff is between my tree and a revision before my patch was checked-in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37491</commentid>
    <comment_count>3</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-24 05:59:48 -0800</bug_when>
    <thetext>&gt; When I restore styles, I must do so in depth first order, so that restoring the
&gt; style on a node doesn&apos;t negate restoration I&apos;ve done on its children.  

I meant pre-order traversal.

&gt; restoration does an ApplyStyleCommand, which moves nodes around, wraps them in
&gt; new blocks, and splits and merges nodes, I wasn&apos;t completely confident that my
&gt; code would visit all of the nodes that were pasted.

This isn&apos;t exactly true, I think I just thought the code looked confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37525</commentid>
    <comment_count>4</comment_count>
      <attachid>7276</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-24 17:53:43 -0800</bug_when>
    <thetext>Comment on attachment 7276
patch

dave reviewed this</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7274</attachid>
            <date>2006-03-24 01:14:40 -0800</date>
            <delta_ts>2006-03-24 01:14:40 -0800</delta_ts>
            <desc>testcase</desc>
            <filename>7955.html</filename>
            <type>text/html</type>
            <size>1113</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">PGhlYWQ+CjxzY3JpcHQgc3JjPS4uL2VkaXRpbmcuanMgIHR5cGU9InRleHQvamF2YXNjcmlwdCI+
PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZnVuY3Rpb24gZWRpdGlu
Z1Rlc3QoKSB7CiAgICBtb3ZlU2VsZWN0aW9uRm9yd2FyZEJ5V29yZENvbW1hbmQoKTsKICAgIGV4
dGVuZFNlbGVjdGlvbkZvcndhcmRCeVdvcmRDb21tYW5kKCk7CiAgICBjb3B5Q29tbWFuZCgpOwog
ICAgbW92ZVNlbGVjdGlvbkZvcndhcmRCeUxpbmVDb21tYW5kKCk7CiAgICBwYXN0ZUNvbW1hbmQo
KTsKfQo8L3NjcmlwdD4KPHRpdGxlPlBhc3Rpbmcgc3BhbnMgd2l0aCBkaXNwbGF5OmJsb2NrPC90
aXRsZT4gCjwvaGVhZD4gCjxib2R5PgoKVGhpcyBpcyBhIHRlc3RjYXNlIGZvciB0aGUgZml4IGZv
ciA8YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lk
PTc5NTUiPmh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk1
NTwvYT4uICBCZWZvcmUgdGhlIGZpeCwgY29udGVudCB3aXRoIGFuIGludGVyY2hhbmdlIG5ld2xp
bmUgYXQgdGhlIHN0YXJ0IGlzIGxvc3Qgd2hlbiBpdCdzIHBhc3RlZCBhdCB0aGUgZW5kIG9mIHRo
ZSBkb2N1bWVudC4KPGJyPjxicj4KVGhpcyBhbHNvIGRlbW9uc3RyYXRlcyBhbm90aGVyIGJ1Zywg
PGEgaHJlZj0iaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD03
OTU3Ij5odHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTc5NTc8
L2E+LiAgVGhlIGludGVyY2hhbmdlIG5ld2xpbmUgaXMgbG9zdCBkdXJpbmcgdGhlIHBhc3RlIGJl
Zm9yZS9hZnRlciB0aGUgcGF0Y2guCjxicj4KPGRpdiBzdHlsZT0id2hpdGUtc3BhY2U6cHJlIj4K
WW91IHNob3VsZCBzZWU6CmZvbwpiYXIgYmF6IGJhcgphbmQ6CmZvbwpiYXIgYmF6CmJhcgpXaGVu
IDc5NTcgaXMgZml4ZWQuCjwvZGl2PgoKPGhyPgoKPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRh
YmxlPjxkaXY+Zm9vPC9kaXY+YmFyIGJhejwvZGl2PgoKPHNjcmlwdD5ydW5FZGl0aW5nVGVzdCgp
Ozwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+CgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7276</attachid>
            <date>2006-03-24 01:58:29 -0800</date>
            <delta_ts>2006-03-24 17:53:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>7955-patch.txt</filename>
            <type>text/plain</type>
            <size>20763</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2
aXNpb24gMTM0NDUpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTAgKzExOCw2IEBACiAgICAgICAgIHJlbW92ZU5v
ZGUobmV3bGluZUF0RW5kTm9kZSk7CiAgICAgCiAgICAgUmVmUHRyPE5vZGU+IGhvbGRlciA9IGlu
c2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZygpOwotICAgIGlmICghbV9tYXRjaFN0eWxlKQot
ICAgICAgICBjb21wdXRlU3R5bGVzVXNpbmdUZXN0UmVuZGVyaW5nKGhvbGRlci5nZXQoKSk7Ci0g
ICAgcmVtb3ZlVW5yZW5kZXJlZE5vZGVzVXNpbmdUZXN0UmVuZGVyaW5nKGhvbGRlci5nZXQoKSk7
Ci0gICAgbV9oYXNNb3JlVGhhbk9uZUJsb2NrID0gY291bnRSZW5kZXJlZEJsb2Nrcyhob2xkZXIu
Z2V0KCkpID4gMTsKICAgICAKICAgICAvLyBTZW5kIGtodG1sQmVmb3JlVGV4dEluc2VydGVkRXZl
bnQuICBUaGUgZXZlbnQgaGFuZGxlciB3aWxsIHVwZGF0ZSB0ZXh0IGlmIG5lY2Vzc2FyeS4KICAg
ICBpZiAobV9kb2N1bWVudC0+ZnJhbWUoKSkgewpAQCAtMTQwLDE0ICsxMzYsMTMgQEAKICAgICAg
ICAgICAgICAgICBtX2ZyYWdtZW50LT5hcHBlbmRDaGlsZChuZXcgVGV4dChtX2RvY3VtZW50Lmdl
dCgpLCBuZXdUZXh0KSwgZWMpOwogICAgICAgICAgICAgICAgIHJlbW92ZU5vZGUoaG9sZGVyKTsK
ICAgICAgICAgICAgICAgICBob2xkZXIgPSBpbnNlcnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmco
KTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fbWF0Y2hTdHlsZSkKLSAgICAgICAgICAgICAgICAg
ICAgY29tcHV0ZVN0eWxlc1VzaW5nVGVzdFJlbmRlcmluZyhob2xkZXIuZ2V0KCkpOwotICAgICAg
ICAgICAgICAgIHJlbW92ZVVucmVuZGVyZWROb2Rlc1VzaW5nVGVzdFJlbmRlcmluZyhob2xkZXIu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIG1faGFzTW9yZVRoYW5PbmVCbG9jayA9IGNvdW50UmVu
ZGVyZWRCbG9ja3MoaG9sZGVyLmdldCgpKSA+IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCisgICAgc2F2ZVJlbmRlcmluZ0luZm8oaG9sZGVyLmdldCgpKTsKKyAgICBy
ZW1vdmVVbnJlbmRlcmVkTm9kZXMoaG9sZGVyLmdldCgpKTsKKyAgICBtX2hhc01vcmVUaGFuT25l
QmxvY2sgPSByZW5kZXJlZEJsb2Nrcyhob2xkZXIuZ2V0KCkpID4gMTsKICAgICByZXN0b3JlVGVz
dFJlbmRlcmluZ05vZGVzVG9GcmFnbWVudChob2xkZXIuZ2V0KCkpOwogICAgIHJlbW92ZU5vZGUo
aG9sZGVyKTsKICAgICByZW1vdmVTdHlsZU5vZGVzKCk7CkBAIC0xNjcsMzQgKzE2Miw2IEBACiAg
ICAgcmV0dXJuICBtX2ZyYWdtZW50LT5sYXN0Q2hpbGQoKTsgCiB9CiAKLXN0YXRpYyBib29sIGlz
UHJvYmFibHlCbG9jayhjb25zdCBOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNlZW1z
IHJlYWxseSBicm9rZW4gdG8gbWUuICBJdCBpc24ndCBldmVuIGluY2x1ZGluZyBhbGwgdGhlIGJs
b2NrLWxldmVsIGVsZW1lbnRzLgotICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKGJsb2NrcXVv
dGVUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoZGRUYWcpCi0gICAgICAgIHx8IG5v
ZGUtPmhhc1RhZ05hbWUoZGl2VGFnKQotICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGRsVGFn
KQotICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGR0VGFnKQotICAgICAgICB8fCBub2RlLT5o
YXNUYWdOYW1lKGgxVGFnKQotICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGgyVGFnKQotICAg
ICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGgzVGFnKQotICAgICAgICB8fCBub2RlLT5oYXNUYWdO
YW1lKGg0VGFnKQotICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGg1VGFnKQotICAgICAgICB8
fCBub2RlLT5oYXNUYWdOYW1lKGg2VGFnKQotICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGhy
VGFnKQotICAgICAgICB8fCBub2RlLT5oYXNUYWdOYW1lKGxpVGFnKQotICAgICAgICB8fCBub2Rl
LT5oYXNUYWdOYW1lKGxpc3RpbmdUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUob2xU
YWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUocFRhZykKLSAgICAgICAgfHwgbm9kZS0+
aGFzVGFnTmFtZShwcmVUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUodGRUYWcpCi0g
ICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUodGhUYWcpCi0gICAgICAgIHx8IG5vZGUtPmhhc1Rh
Z05hbWUodWxUYWcpOwotfQotCiBzdGF0aWMgYm9vbCBpc01haWxQYXN0ZUFzUXVvdGF0aW9uTm9k
ZShjb25zdCBOb2RlICpub2RlKQogewogICAgIHJldHVybiBub2RlICYmIHN0YXRpY19jYXN0PGNv
bnN0IEVsZW1lbnQgKj4obm9kZSktPmdldEF0dHJpYnV0ZSgiY2xhc3MiKSA9PSBBcHBsZVBhc3Rl
QXNRdW90YXRpb247CkBAIC0yMDMsNyArMTcwLDcgQEAKIE5vZGUgKlJlcGxhY2VtZW50RnJhZ21l
bnQ6Om1lcmdlU3RhcnROb2RlKCkgY29uc3QKIHsKICAgICBOb2RlICpub2RlID0gbV9mcmFnbWVu
dC0+Zmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChub2RlICYmIGlzUHJvYmFibHlCbG9jayhub2Rl
KSAmJiAhaXNNYWlsUGFzdGVBc1F1b3RhdGlvbk5vZGUobm9kZSkpCisgICAgd2hpbGUgKG5vZGUg
JiYgaXNCbG9ja0Zsb3cobm9kZSkgJiYgIWlzTWFpbFBhc3RlQXNRdW90YXRpb25Ob2RlKG5vZGUp
KQogICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOwogICAgIHJldHVybiBu
b2RlOwogfQpAQCAtMjI0LDcgKzE5MSw3IEBACiAKIE5vZGUgKlJlcGxhY2VtZW50RnJhZ21lbnQ6
OmVuY2xvc2luZ0Jsb2NrKE5vZGUgKm5vZGUpIGNvbnN0CiB7Ci0gICAgd2hpbGUgKG5vZGUgJiYg
IWlzUHJvYmFibHlCbG9jayhub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXNCbG9ja0Zsb3co
bm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7ICAgIAogICAgIHJldHVy
biBub2RlID8gbm9kZSA6IG1fZnJhZ21lbnQuZ2V0KCk7CiB9CkBAIC0zMDMsNiArMjcwLDEyIEBA
CiAgICAgfQogfQogCitib29sIFJlcGxhY2VtZW50RnJhZ21lbnQ6OmlzQmxvY2tGbG93KE5vZGUq
IG5vZGUpIGNvbnN0Cit7CisgICAgUmVmUHRyPFJlbmRlcmluZ0luZm8+IGluZm8gPSBtX3JlbmRl
cmluZ0luZm8uZ2V0KG5vZGUpOworICAgIHJldHVybiBpbmZvID8gaW5mby0+aXNCbG9ja0Zsb3co
KSA6IGZhbHNlOworfQorCiBzdGF0aWMgU3RyaW5nICZtYXRjaE5lYXJlc3RCbG9ja3F1b3RlQ29s
b3JTdHJpbmcoKQogewogICAgIHN0YXRpYyBTdHJpbmcgbWF0Y2hOZWFyZXN0QmxvY2txdW90ZUNv
bG9yU3RyaW5nID0gIm1hdGNoIjsKQEAgLTMyNCwxNyArMjk3LDE3IEBACiAgICAgfQogfQogCi12
b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpmaXh1cE5vZGVTdHlsZXMoY29uc3QgRGVwcmVj
YXRlZFZhbHVlTGlzdDxOb2RlRGVzaXJlZFN0eWxlPiAmbGlzdCkKK3ZvaWQgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OmZpeHVwTm9kZVN0eWxlcyhjb25zdCBOb2RlVmVjdG9yJiBub2RlcywgY29u
c3QgUmVuZGVyaW5nSW5mb01hcCYgcmVuZGVyaW5nSW5mbykKIHsKICAgICAvLyBUaGlzIGZ1bmN0
aW9uIHVzZXMgdGhlIG1hcHBlZCAiZGVzaXJlZCBzdHlsZSIgdG8gYXBwbHkgdGhlIGFkZGl0aW9u
YWwgc3R5bGUgbmVlZGVkLCBpZiBhbnksCiAgICAgLy8gdG8gbWFrZSB0aGUgbm9kZSBoYXZlIHRo
ZSBkZXNpcmVkIHN0eWxlLgogCiAgICAgdXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBEZXByZWNhdGVk
VmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxOb2RlRGVzaXJlZFN0eWxlPiBpdDsKLSAgICBmb3IgKGl0
ID0gbGlzdC5iZWdpbigpOyBpdCAhPSBsaXN0LmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIE5vZGUg
Km5vZGUgPSAoKml0KS5ub2RlKCk7Ci0gICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
ICpkZXNpcmVkU3R5bGUgPSAoKml0KS5zdHlsZSgpOworICAgIAorICAgIE5vZGVWZWN0b3I6OmNv
bnN0X2l0ZXJhdG9yIGUgPSBub2Rlcy5lbmQoKTsKKyAgICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbm9kZXMuYmVnaW4oKTsgaXQgIT0gZTsgKytpdCkgeworICAgICAgICBO
b2RlICpub2RlID0gKCppdCkuZ2V0KCk7CisgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uICpkZXNpcmVkU3R5bGUgPSByZW5kZXJpbmdJbmZvLmdldChub2RlKS0+c3R5bGUoKTsKICAg
ICAgICAgQVNTRVJUKGRlc2lyZWRTdHlsZSk7CiAKICAgICAgICAgaWYgKCFub2RlLT5pbkRvY3Vt
ZW50KCkpCkBAIC0zNzMsMTQgKzM0NiwxMyBAQAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgY29t
cHV0ZUFuZFN0b3JlTm9kZURlc2lyZWRTdHlsZShXZWJDb3JlOjpOb2RlICpub2RlLCBEZXByZWNh
dGVkVmFsdWVMaXN0PE5vZGVEZXNpcmVkU3R5bGU+ICZsaXN0KQorc3RhdGljIFBhc3NSZWZQdHI8
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRm9yTm9kZShOb2RlICpub2RlKQogewog
ICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aW5Eb2N1bWVudCgpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiAwOwogICAgICAgICAKICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlID0gUG9zaXRpb24obm9kZSwgMCkuY29tcHV0ZWRTdHls
ZSgpOwogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBjb21w
dXRlZFN0eWxlLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7Ci0gICAgbGlzdC5hcHBlbmQo
Tm9kZURlc2lyZWRTdHlsZShub2RlLCBzdHlsZSkpOwogCiAgICAgLy8gSW4gZWl0aGVyIG9mIHRo
ZSBjb2xvci1tYXRjaGluZyB0ZXN0cyBiZWxvdywgc2V0IHRoZSBjb2xvciB0byBhIHBzZXVkby1j
b2xvciB0aGF0IHdpbGwKICAgICAvLyBtYWtlIHRoZSBjb250ZW50IHRha2Ugb24gdGhlIGNvbG9y
IG9mIHRoZSBuZWFyZXN0LWVuY2xvc2luZyBibG9ja3F1b3RlIChpZiBhbnkpIGFmdGVyCkBAIC0z
OTAsNyArMzYyLDcgQEAKICAgICAgICAgYm9vbCBtYXRjaCA9IChibG9ja3F1b3RlU3R5bGUtPmdl
dFByb3BlcnR5VmFsdWUoQ1NTX1BST1BfQ09MT1IpID09IHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVl
KENTU19QUk9QX0NPTE9SKSk7CiAgICAgICAgIGlmIChtYXRjaCkgewogICAgICAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU19QUk9QX19LSFRNTF9NQVRDSF9ORUFSRVNUX01BSUxfQkxPQ0tR
VU9URV9DT0xPUiwgbWF0Y2hOZWFyZXN0QmxvY2txdW90ZUNvbG9yU3RyaW5nKCkpOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKICAgICAg
ICAgfQogICAgIH0KICAgICBOb2RlICpkb2N1bWVudEVsZW1lbnQgPSBub2RlLT5nZXREb2N1bWVu
dCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKQEAgLTM5OCwyMCArMzcwLDI5IEBACiAgICAgYm9vbCBt
YXRjaCA9IChkb2N1bWVudFN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKENTU19QUk9QX0NPTE9SKSA9
PSBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NfUFJPUF9DT0xPUikpOwogICAgIGlmIChtYXRj
aCkKICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU19QUk9QX19LSFRNTF9NQVRDSF9ORUFS
RVNUX01BSUxfQkxPQ0tRVU9URV9DT0xPUiwgbWF0Y2hOZWFyZXN0QmxvY2txdW90ZUNvbG9yU3Ry
aW5nKCkpOworICAgICAgICAKKyAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgpOwogfQogCi12b2lk
IFJlcGxhY2VtZW50RnJhZ21lbnQ6OmNvbXB1dGVTdHlsZXNVc2luZ1Rlc3RSZW5kZXJpbmcoTm9k
ZSAqaG9sZGVyKQordm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjpzYXZlUmVuZGVyaW5nSW5mbyhO
b2RlICpob2xkZXIpCiB7CiAgICAgaWYgKCFob2xkZXIpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0g
ICAgZm9yIChOb2RlICpub2RlID0gaG9sZGVyLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT50cmF2ZXJzZU5leHROb2RlKGhvbGRlcikpCi0gICAgICAgIGNvbXB1dGVBbmRTdG9yZU5v
ZGVEZXNpcmVkU3R5bGUobm9kZSwgbV9zdHlsZXMpOworICAgIGlmIChtX21hdGNoU3R5bGUpCisg
ICAgICAgIC8vIE5vIHN0eWxlIHJlc3RvcmF0aW9uIHdpbGwgYmUgZG9uZSwgc28gd2UgZG9uJ3Qg
bmVlZCB0byBzYXZlIHN0eWxlcyBvciBrZWVwIGEgbm9kZSB2ZWN0b3IuCisgICAgICAgIGZvciAo
Tm9kZSAqbm9kZSA9IGhvbGRlci0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJh
dmVyc2VOZXh0Tm9kZShob2xkZXIpKQorICAgICAgICAgICAgbV9yZW5kZXJpbmdJbmZvLmFkZChu
b2RlLCBuZXcgUmVuZGVyaW5nSW5mbygwLCBub2RlLT5pc0Jsb2NrRmxvdygpKSk7CisgICAgZWxz
ZQorICAgICAgICBmb3IgKE5vZGUgKm5vZGUgPSBob2xkZXItPmZpcnN0Q2hpbGQoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoaG9sZGVyKSkgeworICAgICAgICAgICAgbV9y
ZW5kZXJpbmdJbmZvLmFkZChub2RlLCBuZXcgUmVuZGVyaW5nSW5mbyhzdHlsZUZvck5vZGUobm9k
ZSksIG5vZGUtPmlzQmxvY2tGbG93KCkpKTsKKyAgICAgICAgICAgIG1fbm9kZXMuYXBwZW5kKG5v
ZGUpOworICAgICAgICB9CiB9CiAKLXZvaWQgUmVwbGFjZW1lbnRGcmFnbWVudDo6cmVtb3ZlVW5y
ZW5kZXJlZE5vZGVzVXNpbmdUZXN0UmVuZGVyaW5nKE5vZGUgKmhvbGRlcikKK3ZvaWQgUmVwbGFj
ZW1lbnRGcmFnbWVudDo6cmVtb3ZlVW5yZW5kZXJlZE5vZGVzKE5vZGUgKmhvbGRlcikKIHsKICAg
ICBpZiAoIWhvbGRlcikKICAgICAgICAgcmV0dXJuOwpAQCAtNDI3LDcgKzQwOCw3IEBACiAgICAg
ICAgIHJlbW92ZU5vZGUoaXQuY3VycmVudCgpKTsKIH0KIAotaW50IFJlcGxhY2VtZW50RnJhZ21l
bnQ6OmNvdW50UmVuZGVyZWRCbG9ja3MoTm9kZSAqaG9sZGVyKQoraW50IFJlcGxhY2VtZW50RnJh
Z21lbnQ6OnJlbmRlcmVkQmxvY2tzKE5vZGUgKmhvbGRlcikKIHsKICAgICBpZiAoIWhvbGRlcikK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC00OTIsOCArNDczLDggQEAKICAgICB9CiB9CiAKLU5vZGVE
ZXNpcmVkU3R5bGU6Ok5vZGVEZXNpcmVkU3R5bGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBQYXNz
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSkgCi0gICAgOiBtX25vZGUo
bm9kZSksIG1fc3R5bGUoc3R5bGUpCitSZW5kZXJpbmdJbmZvOjpSZW5kZXJpbmdJbmZvKFBhc3NS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlLCBib29sIGlzQmxvY2tGbG93
ID0gZmFsc2UpCisgICAgOiBtX3N0eWxlKHN0eWxlKSwgbV9pc0Jsb2NrRmxvdyhpc0Jsb2NrRmxv
dykKIHsKIH0KIApAQCAtNjgwLDcgKzY2MSw3IEBACiAgICAgICAgICAgICBOb2RlICpwYXJlbnQg
PSByZWZOb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgICAgICBOb2RlICpub2RlID0gcmVmTm9k
ZS0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIGluc2VydE5vZGVBdEFuZFVwZGF0ZU5vZGVz
SW5zZXJ0ZWQocmVmTm9kZSwgc3RhcnRQb3Mubm9kZSgpLCBzdGFydFBvcy5vZmZzZXQoKSk7Ci0g
ICAgICAgICAgICB3aGlsZSAobm9kZSAmJiAhaXNQcm9iYWJseUJsb2NrKG5vZGUpKSB7CisgICAg
ICAgICAgICB3aGlsZSAobm9kZSAmJiAhbV9mcmFnbWVudC5pc0Jsb2NrRmxvdyhub2RlKSkgewog
ICAgICAgICAgICAgICAgIE5vZGUgKm5leHQgPSBub2RlLT5uZXh0U2libGluZygpOwogICAgICAg
ICAgICAgICAgIGluc2VydE5vZGVBZnRlckFuZFVwZGF0ZU5vZGVzSW5zZXJ0ZWQobm9kZSwgcmVm
Tm9kZSk7CiAgICAgICAgICAgICAgICAgcmVmTm9kZSA9IG5vZGU7CkBAIC03MDksMTIgKzY5MCwx
MSBAQAogICAgICAgICBOb2RlICppbnNlcnRpb25CbG9jayA9IGluc2VydGlvblBvcy5ub2RlKCkt
PmVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoKTsKICAgICAgICAgYm9vbCBpbnNlcnRpb25CbG9j
a0lzUm9vdCA9IGluc2VydGlvbkJsb2NrID09IGluc2VydGlvbkJsb2NrLT5yb290RWRpdGFibGVF
bGVtZW50KCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKGluc2VydGlvblBv
cywgRE9XTlNUUkVBTSk7Ci0gICAgICAgIGlmICghaW5zZXJ0aW9uQmxvY2tJc1Jvb3QgJiYgaXNQ
cm9iYWJseUJsb2NrKHJlZk5vZGUpICYmIGlzU3RhcnRPZkJsb2NrKHZpc2libGVQb3MpKQorICAg
ICAgICBpZiAoIWluc2VydGlvbkJsb2NrSXNSb290ICYmIG1fZnJhZ21lbnQuaXNCbG9ja0Zsb3co
cmVmTm9kZSkgJiYgaXNTdGFydE9mQmxvY2sodmlzaWJsZVBvcykpCiAgICAgICAgICAgICBpbnNl
cnROb2RlQmVmb3JlQW5kVXBkYXRlTm9kZXNJbnNlcnRlZChyZWZOb2RlLCBpbnNlcnRpb25CbG9j
ayk7Ci0gICAgICAgIGVsc2UgaWYgKCFpbnNlcnRpb25CbG9ja0lzUm9vdCAmJiBpc1Byb2JhYmx5
QmxvY2socmVmTm9kZSkgJiYgaXNFbmRPZkJsb2NrKHZpc2libGVQb3MpKSB7CisgICAgICAgIGVs
c2UgaWYgKCFpbnNlcnRpb25CbG9ja0lzUm9vdCAmJiBtX2ZyYWdtZW50LmlzQmxvY2tGbG93KHJl
Zk5vZGUpICYmIGlzRW5kT2ZCbG9jayh2aXNpYmxlUG9zKSkgewogICAgICAgICAgICAgaW5zZXJ0
Tm9kZUFmdGVyQW5kVXBkYXRlTm9kZXNJbnNlcnRlZChyZWZOb2RlLCBpbnNlcnRpb25CbG9jayk7
Ci0gICAgICAgIC8vIEluc2VydCB0aGUgcmVzdCBvZiB0aGUgZnJhZ21lbnQgYXQgdGhlIE5FWFQg
dmlzaWJsZSBwb3NpdGlvbiBPTkxZIElGIHBhcnQgb2YgdGhlIGZyYWdtZW50IHdhcyBhbHJlYWR5
IG1lcmdlZCBBTkQgIWlzUHJvYmFibHlCbG9jawotICAgICAgICB9IGVsc2UgaWYgKG1fbGFzdE5v
ZGVJbnNlcnRlZCAmJiAhaXNQcm9iYWJseUJsb2NrKHJlZk5vZGUpKSB7CisgICAgICAgIH0gZWxz
ZSBpZiAobV9sYXN0Tm9kZUluc2VydGVkICYmICFtX2ZyYWdtZW50LmlzQmxvY2tGbG93KHJlZk5v
ZGUpKSB7CiAgICAgICAgICAgICBQb3NpdGlvbiBwb3MgPSB2aXNpYmxlUG9zLm5leHQoKS5kZWVw
RXF1aXZhbGVudCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgICAgIGluc2VydE5vZGVBdEFuZFVw
ZGF0ZU5vZGVzSW5zZXJ0ZWQocmVmTm9kZSwgcG9zLm5vZGUoKSwgcG9zLm9mZnNldCgpKTsKICAg
ICAgICAgfSBlbHNlIHsKQEAgLTc3OCw3ICs3NTgsNyBAQAogICAgICAgICAgICAgYm9vbCBpbnNl
cnRQYXJhZ3JhcGggPSBmYWxzZTsKICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3MoaW5z
ZXJ0aW9uUG9zLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKIAotICAgICAgICAgICAgaWYgKHN0YXJ0
QmxvY2sgPT0gZW5kQmxvY2sgJiYgIWlzUHJvYmFibHlCbG9jayhtX2xhc3RUb3BOb2RlSW5zZXJ0
ZWQuZ2V0KCkpKSB7CisgICAgICAgICAgICBpZiAoc3RhcnRCbG9jayA9PSBlbmRCbG9jayAmJiAh
bV9mcmFnbWVudC5pc0Jsb2NrRmxvdyhtX2xhc3RUb3BOb2RlSW5zZXJ0ZWQuZ2V0KCkpKSB7CiAg
ICAgICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoID0gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGVuZC1vZi1kb2N1bWVudCBjYXNlLgpAQCAt
ODE2LDcgKzc5Niw4IEBACiAKICAgICAgICAgaWYgKGJleW9uZEVuZE5vZGUpIHsKICAgICAgICAg
ICAgIHVwZGF0ZUxheW91dCgpOwotICAgICAgICAgICAgRGVwcmVjYXRlZFZhbHVlTGlzdDxOb2Rl
RGVzaXJlZFN0eWxlPiBzdHlsZXM7CisgICAgICAgICAgICBSZW5kZXJpbmdJbmZvTWFwIHJlbmRl
cmluZ0luZm87CisgICAgICAgICAgICBOb2RlVmVjdG9yIG5vZGVzOwogICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJleW9uZEVuZE5vZGUtPmVuY2xvc2luZ0lubGluZUVsZW1lbnQoKTsKICAgICAg
ICAgICAgIE5vZGUqIHJlZk5vZGUgPSBtX2xhc3ROb2RlSW5zZXJ0ZWQuZ2V0KCk7CiAgICAgICAg
ICAgICAKQEAgLTgyNSw3ICs4MDYsOCBAQAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZSAqbmV4dCA9IG5vZGUtPm5l
eHRTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgY29tcHV0ZUFuZFN0b3JlTm9kZURlc2lyZWRT
dHlsZShub2RlLCBzdHlsZXMpOworICAgICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChub2RlKTsK
KyAgICAgICAgICAgICAgICByZW5kZXJpbmdJbmZvLmFkZChub2RlLCBuZXcgUmVuZGVyaW5nSW5m
byhzdHlsZUZvck5vZGUobm9kZSkpKTsKICAgICAgICAgICAgICAgICByZW1vdmVOb2RlQW5kUHJ1
bmVBbmNlc3RvcnMobm9kZSk7CiAgICAgICAgICAgICAgICAgLy8gTm8gbmVlZCB0byB1cGRhdGUg
aW5zZXJ0ZWQgbm9kZSB2YXJpYWJsZXMuCiAgICAgICAgICAgICAgICAgaW5zZXJ0Tm9kZUFmdGVy
KG5vZGUsIHJlZk5vZGUpOwpAQCAtODM2LDEyICs4MTgsMTIgQEAKICAgICAgICAgICAgICAgICBu
b2RlID0gbmV4dDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZml4dXBOb2RlU3R5bGVz
KHN0eWxlcyk7CisgICAgICAgICAgICBmaXh1cE5vZGVTdHlsZXMobm9kZXMsIHJlbmRlcmluZ0lu
Zm8pOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICghbV9tYXRjaFN0eWxlKQotICAg
ICAgICBmaXh1cE5vZGVTdHlsZXMobV9mcmFnbWVudC5kZXNpcmVkU3R5bGVzKCkpOworICAgICAg
ICBmaXh1cE5vZGVTdHlsZXMobV9mcmFnbWVudC5ub2RlcygpLCBtX2ZyYWdtZW50LnJlbmRlcmlu
Z0luZm8oKSk7CiAgICAgY29tcGxldGVIVE1MUmVwbGFjZW1lbnQobGFzdFBvc2l0aW9uVG9TZWxl
Y3QpOwogICAgIAogICAgIC8vIHN0ZXAgNSA6IG1vcCB1cApJbmRleDogV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlzaW9uIDEzNDQ1KQorKysgV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDIz
ICsyOCwyNyBAQAogCiAjaW5jbHVkZSAiQ29tcG9zaXRlRWRpdENvbW1hbmQuaCIKICNpbmNsdWRl
IDxreG1sY29yZS9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8a3htbGNvcmUvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPGt4bWxjb3JlL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIERvY3VtZW50RnJhZ21lbnQ7CiAKLWNsYXNzIE5vZGVEZXNpcmVkU3R5bGUgeworY2xhc3Mg
UmVuZGVyaW5nSW5mbyA6IHB1YmxpYyBTaGFyZWQ8UmVuZGVyaW5nSW5mbz4gewogcHVibGljOgot
ICAgIE5vZGVEZXNpcmVkU3R5bGUoUGFzc1JlZlB0cjxOb2RlPiwgUGFzc1JlZlB0cjxDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbj4pOworICAgIFJlbmRlcmluZ0luZm8oUGFzc1JlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4sIGJvb2wpOwogICAgIAotICAgIE5vZGUqIG5vZGUoKSBj
b25zdCB7IHJldHVybiBtX25vZGUuZ2V0KCk7IH0KICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLmdldCgpOyB9Ci0KKyAgICBib29s
IGlzQmxvY2tGbG93KCkgY29uc3QgeyByZXR1cm4gbV9pc0Jsb2NrRmxvdzsgfQogcHJpdmF0ZToK
LSAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gbV9zdHlsZTsKKyAgICBib29sIG1faXNCbG9ja0Zsb3c7CiB9OwogCit0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBOb2RlVmVjdG9yOwordHlwZWRlZiBIYXNoTWFwPE5vZGUq
LCBSZWZQdHI8UmVuZGVyaW5nSW5mbz4gPiBSZW5kZXJpbmdJbmZvTWFwOworCiAvLyAtLS0gUmVw
bGFjZW1lbnRGcmFnbWVudCBoZWxwZXIgY2xhc3MKIAogY2xhc3MgUmVwbGFjZW1lbnRGcmFnbWVu
dApAQCAtNjEsNyArNjUsOCBAQAogCiAgICAgTm9kZSAqbWVyZ2VTdGFydE5vZGUoKSBjb25zdDsK
IAotICAgIGNvbnN0IERlcHJlY2F0ZWRWYWx1ZUxpc3Q8Tm9kZURlc2lyZWRTdHlsZT4gJmRlc2ly
ZWRTdHlsZXMoKSB7IHJldHVybiBtX3N0eWxlczsgfQorICAgIGNvbnN0IFJlbmRlcmluZ0luZm9N
YXAmIHJlbmRlcmluZ0luZm8oKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0luZm87IH0KKyAg
ICBjb25zdCBOb2RlVmVjdG9yJiBub2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXM7IH0KIAog
ICAgIEVGcmFnbWVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBFbXB0eUZyYWdtZW50OyB9CkBA
IC03MSw2ICs3Niw4IEBACiAgICAgYm9vbCBoYXNNb3JlVGhhbk9uZUJsb2NrKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNNb3JlVGhhbk9uZUJsb2NrOyB9CiAgICAgYm9vbCBoYXNJbnRlcmNoYW5nZU5l
d2xpbmVBdFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdFN0
YXJ0OyB9CiAgICAgYm9vbCBoYXNJbnRlcmNoYW5nZU5ld2xpbmVBdEVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQ7IH0KKyAgICAKKyAgICBib29sIGlzQmxv
Y2tGbG93KE5vZGUqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICAvLyBubyBjb3B5IGNvbnN0cnVj
dGlvbiBvciBhc3NpZ25tZW50CkBAIC04MSwxMCArODgsMTEgQEAKICAgICBzdGF0aWMgYm9vbCBp
c0ludGVyY2hhbmdlQ29udmVydGVkU3BhY2VTcGFuKGNvbnN0IE5vZGUgKik7CiAKICAgICBQYXNz
UmVmUHRyPE5vZGU+IGluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZygpOwotICAgIHZvaWQg
cmVzdG9yZVRlc3RSZW5kZXJpbmdOb2Rlc1RvRnJhZ21lbnQoTm9kZSAqKTsKLSAgICB2b2lkIGNv
bXB1dGVTdHlsZXNVc2luZ1Rlc3RSZW5kZXJpbmcoTm9kZSAqKTsKLSAgICB2b2lkIHJlbW92ZVVu
cmVuZGVyZWROb2Rlc1VzaW5nVGVzdFJlbmRlcmluZyhOb2RlICopOwotICAgIGludCBjb3VudFJl
bmRlcmVkQmxvY2tzKE5vZGUgKmhvbGRlcik7CisgICAgdm9pZCBzYXZlUmVuZGVyaW5nSW5mbyhO
b2RlKik7CisgICAgdm9pZCBjb21wdXRlU3R5bGVzVXNpbmdUZXN0UmVuZGVyaW5nKE5vZGUqKTsK
KyAgICB2b2lkIHJlbW92ZVVucmVuZGVyZWROb2RlcyhOb2RlKik7CisgICAgdm9pZCByZXN0b3Jl
VGVzdFJlbmRlcmluZ05vZGVzVG9GcmFnbWVudChOb2RlKik7CisgICAgaW50IHJlbmRlcmVkQmxv
Y2tzKE5vZGUqKTsKICAgICB2b2lkIHJlbW92ZVN0eWxlTm9kZXMoKTsKIAogICAgIC8vIEEgY291
cGxlIHNpbXBsZSBET00gaGVscGVycwpAQCAtOTYsNyArMTA0LDggQEAKICAgICBFRnJhZ21lbnRU
eXBlIG1fdHlwZTsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IG1fZnJhZ21lbnQ7Ci0gICAgRGVwcmVjYXRlZFZhbHVlTGlzdDxO
b2RlRGVzaXJlZFN0eWxlPiBtX3N0eWxlczsKKyAgICBSZW5kZXJpbmdJbmZvTWFwIG1fcmVuZGVy
aW5nSW5mbzsKKyAgICBOb2RlVmVjdG9yIG1fbm9kZXM7CiAgICAgYm9vbCBtX21hdGNoU3R5bGU7
CiAgICAgYm9vbCBtX2hhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQ7CiAgICAgYm9vbCBtX2hh
c0ludGVyY2hhbmdlTmV3bGluZUF0RW5kOwpAQCAtMTIwLDcgKzEyOSw3IEBACiAgICAgdm9pZCBp
bnNlcnROb2RlQmVmb3JlQW5kVXBkYXRlTm9kZXNJbnNlcnRlZChOb2RlICppbnNlcnRDaGlsZCwg
Tm9kZSAqcmVmQ2hpbGQpOwogCiAgICAgdm9pZCB1cGRhdGVOb2Rlc0luc2VydGVkKE5vZGUgKik7
Ci0gICAgdm9pZCBmaXh1cE5vZGVTdHlsZXMoY29uc3QgRGVwcmVjYXRlZFZhbHVlTGlzdDxOb2Rl
RGVzaXJlZFN0eWxlPiAmKTsKKyAgICB2b2lkIGZpeHVwTm9kZVN0eWxlcyhjb25zdCBOb2RlVmVj
dG9yJiwgY29uc3QgUmVuZGVyaW5nSW5mb01hcCYpOwogICAgIHZvaWQgcmVtb3ZlTGluZVBsYWNl
aG9sZGVySWZOZWVkZWQoTm9kZSAqKTsKICAgICB2b2lkIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2Vz
dG9ycyhOb2RlKik7CiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC83OTU1
LWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC83OTU1LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkLzc5NTUtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEgQEAKK2M1NmY5MjNmYzcyM2FlNzdkMGY2MzMxNzA0NDA4N2EwClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
Lzc5NTUtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJl
YW0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC83
OTU1LWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvNzk1NS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkLzc5NTUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkLzc5NTUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU4IEBACitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9mIERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
QmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KK0VESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTog
c2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFu
Z2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBv
ZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZp
ZXdJbnNlcnRBY3Rpb25QYXN0ZWQKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
RE9NUmFuZ2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gNCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHg5MAorICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE5N3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDE5NzogIlRoaXMgaXMgYSB0ZXN0Y2FzZSBmb3IgdGhlIGZpeCBmb3IgIgorICAg
ICAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgMzQzeDE4IFtjb2xvcj0jMDAwMEVF
XQorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgxOTcsMCkgc2l6ZSAzNDN4MTgKKyAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgxOTcsMCkgd2lkdGggMzQzOiAiaHR0cDovL2J1Z3ppbGxh
Lm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD03OTU1IgorICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoNTQwLDApIHNpemUgNzQweDM2CisgICAgICAgICAgdGV4dCBydW4gYXQgKDU0
MCwwKSB3aWR0aCA4OiAiLiAiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDU0OCwwKSB3aWR0aCAx
OTI6ICJCZWZvcmUgdGhlIGZpeCwgY29udGVudCB3aXRoIGFuIgorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDE4KSB3aWR0aCA1MTg6ICJpbnRlcmNoYW5nZSBuZXdsaW5lIGF0IHRoZSBzdGFydCBp
cyBsb3N0IHdoZW4gaXQncyBwYXN0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuICIKKyAg
ICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJCUiB7
QlJ9IGF0ICgwLDM2KSBzaXplIDB4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
NTQpIHNpemUgMjMweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNTQpIHdpZHRoIDIzMDog
IlRoaXMgYWxzbyBkZW1vbnN0cmF0ZXMgYW5vdGhlciBidWcsICIKKyAgICAgICAgUmVuZGVySW5s
aW5lIHtBfSBhdCAoMCwwKSBzaXplIDM0M3gxOCBbY29sb3I9IzAwMDBFRV0KKyAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMjMwLDU0KSBzaXplIDM0M3gxOAorICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDIzMCw1NCkgd2lkdGggMzQzOiAiaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4u
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTU3IgorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
NTczLDU0KSBzaXplIDc3N3gzNgorICAgICAgICAgIHRleHQgcnVuIGF0ICg1NzMsNTQpIHdpZHRo
IDg6ICIuICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTgxLDU0KSB3aWR0aCAxOTY6ICJUaGUg
aW50ZXJjaGFuZ2UgbmV3bGluZSBpcyBsb3N0IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDcy
KSB3aWR0aCAyNDU6ICJkdXJpbmcgdGhlIHBhc3RlIGJlZm9yZS9hZnRlciB0aGUgcGF0Y2guICIK
KyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsOTApIHNpemUgNzg0eDE2MgorICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMCwxOCkgc2l6ZSAxMjh4MTQ0CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdp
ZHRoIDEwMjogIllvdSBzaG91bGQgc2VlOiIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNikg
d2lkdGggMjE6ICJmb28iCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNTQpIHdpZHRoIDcwOiAi
YmFyIGJheiBiYXIiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNzIpIHdpZHRoIDI3OiAiYW5k
OiIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw5MCkgd2lkdGggMjE6ICJmb28iCisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTA4KSB3aWR0aCA0NjogImJhciBiYXoiCisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMTI2KSB3aWR0aCAyMDogImJhciIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwxNDQpIHdpZHRoIDEyODogIldoZW4gNzk1NyBpcyBmaXhlZC4iCisgICAgICBSZW5kZXJCbG9j
ayB7SFJ9IGF0ICgwLDI2MCkgc2l6ZSA3ODR4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDAp
XQorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMjcwKSBzaXplIDc4NHgzNgorICAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMjF4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDIxOiAiZm9vIgorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoMCwxOCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDQ2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0NjogImJh
ciBiYXoiCisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDQ2LDApIHNpemUgMjR4MTgK
KyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg0NiwwKSB3aWR0aCAyNDogIiBiYXIiCitjYXJldDog
cG9zaXRpb24gNCBvZiBjaGlsZCAyIHtURVhUfSBvZiBjaGlsZCAxNCB7RElWfSBvZiBjaGlsZCAx
IHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudApJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkLzc5NTUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvNzk1NS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkLzc5NTUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBA
QAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi9lZGl0aW5nLmpzICB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24g
ZWRpdGluZ1Rlc3QoKSB7CisgICAgbW92ZVNlbGVjdGlvbkZvcndhcmRCeVdvcmRDb21tYW5kKCk7
CisgICAgZXh0ZW5kU2VsZWN0aW9uRm9yd2FyZEJ5V29yZENvbW1hbmQoKTsKKyAgICBjb3B5Q29t
bWFuZCgpOworICAgIG1vdmVTZWxlY3Rpb25Gb3J3YXJkQnlMaW5lQ29tbWFuZCgpOworICAgIHBh
c3RlQ29tbWFuZCgpOworfQorPC9zY3JpcHQ+Cis8dGl0bGU+UGFzdGluZyBzcGFucyB3aXRoIGRp
c3BsYXk6YmxvY2s8L3RpdGxlPiAKKzwvaGVhZD4gCis8Ym9keT4KKworVGhpcyBpcyBhIHRlc3Rj
YXNlIGZvciB0aGUgZml4IGZvciA8YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5v
cmcvc2hvd19idWcuY2dpP2lkPTc5NTUiPmh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzk1NTwvYT4uICBCZWZvcmUgdGhlIGZpeCwgY29udGVudCB3aXRoIGFu
IGludGVyY2hhbmdlIG5ld2xpbmUgYXQgdGhlIHN0YXJ0IGlzIGxvc3Qgd2hlbiBpdCdzIHBhc3Rl
ZCBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4KKzxicj48YnI+CitUaGlzIGFsc28gZGVtb25z
dHJhdGVzIGFub3RoZXIgYnVnLCA8YSBocmVmPSJodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5v
cmcvc2hvd19idWcuY2dpP2lkPTc5NTciPmh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzk1NzwvYT4uICBUaGUgaW50ZXJjaGFuZ2UgbmV3bGluZSBpcyBsb3N0
IGR1cmluZyB0aGUgcGFzdGUgYmVmb3JlL2FmdGVyIHRoZSBwYXRjaC4KKzxicj4KKzxkaXYgc3R5
bGU9IndoaXRlLXNwYWNlOnByZSI+CitZb3Ugc2hvdWxkIHNlZToKK2ZvbworYmFyIGJheiBiYXIK
K2FuZDoKK2ZvbworYmFyIGJhegorYmFyCitXaGVuIDc5NTcgaXMgZml4ZWQuCis8L2Rpdj4KKwor
PGhyPgorCis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PGRpdj5mb288L2Rpdj5iYXIg
YmF6PC9kaXY+CisKKzxzY3JpcHQ+cnVuRWRpdGluZ1Rlc3QoKTs8L3NjcmlwdD4KKworPC9ib2R5
PgorPC9odG1sPgorCisK
</data>
<flag name="review"
          id="1935"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
      

    </bug>

</bugzilla>