<?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>211306</bug_id>
          
          <creation_ts>2020-05-01 11:52:59 -0700</creation_ts>
          <short_desc>Change HitTestResult::NodeSet from set of RefPtrs to set of Refs</short_desc>
          <delta_ts>2020-05-01 18:10:37 -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>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1647951</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-01 11:52:59 -0700</bug_when>
    <thetext>Change HitTestResult::NodeSet from set of RefPtrs to set of Refs because the set never contains nullptrs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647956</commentid>
    <comment_count>1</comment_count>
      <attachid>398212</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-01 12:02:21 -0700</bug_when>
    <thetext>Created attachment 398212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648084</commentid>
    <comment_count>2</comment_count>
      <attachid>398212</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-01 15:02:02 -0700</bug_when>
    <thetext>Comment on attachment 398212
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        required me to fix up caretRangeFromPoint(), which lead me to fix up nodeFromPoint() as well.

lead =&gt; led</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648087</commentid>
    <comment_count>3</comment_count>
      <attachid>398212</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-01 15:04:40 -0700</bug_when>
    <thetext>Comment on attachment 398212
Patch

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

&gt; Source/WebCore/dom/TreeScope.cpp:406
&gt; +        RefPtr&lt;Node&gt; node = retargetToScope(listBasedNode);

auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648088</commentid>
    <comment_count>4</comment_count>
      <attachid>398212</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-01 15:09:51 -0700</bug_when>
    <thetext>Comment on attachment 398212
Patch

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

Thanks for the review, Simon.

&gt;&gt; Source/WebCore/dom/TreeScope.cpp:406
&gt;&gt; +        RefPtr&lt;Node&gt; node = retargetToScope(listBasedNode);
&gt; 
&gt; auto?

Intentional; I need a RefPtr from a Ref. I think the new hotness is makeRefPtr(). So, I do that an allow one user-defined conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648093</commentid>
    <comment_count>5</comment_count>
      <attachid>398212</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-01 15:14:58 -0700</bug_when>
    <thetext>Comment on attachment 398212
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/TreeScope.cpp:406
&gt;&gt;&gt; +        RefPtr&lt;Node&gt; node = retargetToScope(listBasedNode);
&gt;&gt; 
&gt;&gt; auto?
&gt; 
&gt; Intentional; I need a RefPtr from a Ref. I think the new hotness is makeRefPtr(). So, I do that an allow one user-defined conversion.

Nope, compiler is not happy with makeRefPtr(). makeRefPtr() expects an l-value. I could fix this.... though it&apos;s turned me off on using makeRefPtr(). Going to do what I have now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648094</commentid>
    <comment_count>6</comment_count>
      <attachid>398212</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-01 15:16:23 -0700</bug_when>
    <thetext>Comment on attachment 398212
Patch

Clearing flags on attachment: 398212

Committed r261028: &lt;https://trac.webkit.org/changeset/261028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648095</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-01 15:16:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648098</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-01 15:17:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/62749289&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648166</commentid>
    <comment_count>9</comment_count>
      <attachid>398212</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-01 18:10:37 -0700</bug_when>
    <thetext>Comment on attachment 398212
Patch

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

&gt; Source/WebCore/rendering/HitTestResult.cpp:103
&gt; -    m_listBasedTestResult = other.m_listBasedTestResult ? makeUnique&lt;NodeSet&gt;(*other.m_listBasedTestResult) : nullptr;
&gt; +    if (other.m_listBasedTestResult) {
&gt; +        m_listBasedTestResult = makeUnique&lt;NodeSet&gt;();
&gt; +        appendToNodeSet(*other.m_listBasedTestResult, *m_listBasedTestResult);
&gt; +    }

This code is definitely getting worse. The fact that you can’t copy a Ref stinks. It was a well meaning decision originally, but it leads to bad stuff like this.

&gt; Source/WebCore/rendering/HitTestResult.cpp:123
&gt; -    m_listBasedTestResult = other.m_listBasedTestResult ? makeUnique&lt;NodeSet&gt;(*other.m_listBasedTestResult) : nullptr;
&gt; +    if (other.m_listBasedTestResult) {
&gt; +        m_listBasedTestResult = makeUnique&lt;NodeSet&gt;();
&gt; +        appendToNodeSet(*other.m_listBasedTestResult, *m_listBasedTestResult);
&gt; +    }

Ditto.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398212</attachid>
            <date>2020-05-01 12:02:21 -0700</date>
            <delta_ts>2020-05-01 15:16:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211306-20200501120220.patch</filename>
            <type>text/plain</type>
            <size>14472</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMzOTM4ZWI0NGFjYTVl
YjNlYmE1MGIwZjJkYjNhNDYxOTY4N2U5YS4uZWQ4ZGQ2ZmU1ODYzMDc2YmIyM2Q1ZmYwYTdhYTc1
NzZhMjAyYWQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA1LTAxICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgSGl0VGVzdFJl
c3VsdDo6Tm9kZVNldCBmcm9tIHNldCBvZiBSZWZQdHJzIHRvIHNldCBvZiBSZWZzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIaXRUZXN0UmVzdWx0Ojps
aXN0QmFzZWRUZXN0UmVzdWx0KCkgbmV2ZXIgcmV0dXJucyBhIHNldCB3aXRoIG51bGxwdHJzIGlu
IGl0LgorICAgICAgICBTbywgY2hhbmdlIHRoZSBzZXQgZGVjbGFyYXRpb24gZnJvbSBMaXN0SGFz
aFNldDxSZWZQdHI8Tm9kZT4+IHRvIExpc3RIYXNoU2V0PFJlZjxOb2RlPj4uCisgICAgICAgIFRo
aXMgd2F5IHBlb3BsZSBhcmUgbm90IHRlbXB0ZWQgdG8gdW5uZWNlc3NhcmlseSBudWxsIGNoZWNr
IHRoZSBub2RlcyBpbiB0aGUgc2V0LgorCisgICAgICAgIEFzIEkgbWFkZSB0aGlzIGNoYW5nZSB0
byBUcmVlU2NvcGU6OmVsZW1lbnRzRnJvbVBvaW50KCkgSSBub3RpY2VkIHRoYXQgcmV0YXJnZXRU
b1Njb3BlKCksCisgICAgICAgIHdoaWNoIGlzIGNhbGxlZCBieSBpdCwgcmV0dXJuZWQgYSBOb2Rl
Ji4gU28sIEkgY2hhbmdlZCBpdCB0byByZXR1cm4gYSBSZWY8Tm9kZT4uIFRoYXQKKyAgICAgICAg
cmVxdWlyZWQgbWUgdG8gZml4IHVwIGNhcmV0UmFuZ2VGcm9tUG9pbnQoKSwgd2hpY2ggbGVhZCBt
ZSB0byBmaXggdXAgbm9kZUZyb21Qb2ludCgpIGFzIHdlbGwuCisKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9p
bnQpOgorICAgICAgICAqIGRvbS9FdmVudFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVs
YXRlZE5vZGVSZXRhcmdldGVyOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiBkb20vVHJl
ZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6cmV0YXJnZXRUb1Njb3Bl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bm9kZUZyb21Qb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmVsZW1lbnRGcm9tUG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VHJlZVNjb3BlOjplbGVtZW50c0Zyb21Qb2ludCk6CisgICAgICAgICogZG9tL1Ry
ZWVTY29wZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjplZGl0YWJsZUVsZW1lbnRzSW5SZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRUb05vZGVTZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdENvbW1vbik6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphcHBlbmQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0IGNvbnN0KToKKwogMjAyMC0w
NC0zMCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGZvciBjcmFzaCBpbiBBWExvZ2dlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGM2
ZDk1OGIyNWQxYmY1MzZjMjc0YjdlNTJmOWM1M2I1YWYyYjVmMGMuLmY5YTZjNmRkZjJjMDAzMmM4
YzdlOGFiZmMzNWRmZjg2NjQ4YzA0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTUx
MiwyMyArMTUxMiwyMyBAQCBSZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjYXJldFJhbmdlRnJvbVBv
aW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBMYXlvdXRQb2ludCBsb2NhbFBvaW50OwotICAgIE5vZGUqIG5vZGUgPSBub2Rl
RnJvbVBvaW50KGNsaWVudFBvaW50LCAmbG9jYWxQb2ludCk7CisgICAgYXV0byBub2RlID0gbm9k
ZUZyb21Qb2ludChjbGllbnRQb2ludCwgJmxvY2FsUG9pbnQpOwogICAgIGlmICghbm9kZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9k
ZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUG9zaXRpb24g
cmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2Fs
UG9pbnQpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOworICAgIGF1dG8gcmFuZ2VDb21wbGlh
bnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGlmIChyYW5nZUNvbXBsaWFudFBvc2l0aW9uLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHVuc2lnbmVkIG9mZnNldCA9
IHJhbmdlQ29tcGxpYW50UG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCk7Ci0gICAgbm9k
ZSA9ICZyZXRhcmdldFRvU2NvcGUoKnJhbmdlQ29tcGxpYW50UG9zaXRpb24uY29udGFpbmVyTm9k
ZSgpKTsKKyAgICBhdXRvIG9mZnNldCA9IHJhbmdlQ29tcGxpYW50UG9zaXRpb24ub2Zmc2V0SW5D
b250YWluZXJOb2RlKCk7CisgICAgbm9kZSA9IHJldGFyZ2V0VG9TY29wZSgqcmFuZ2VDb21wbGlh
bnRQb3NpdGlvbi5jb250YWluZXJOb2RlKCkpOwogICAgIGlmIChub2RlICE9IHJhbmdlQ29tcGxp
YW50UG9zaXRpb24uY29udGFpbmVyTm9kZSgpKQogICAgICAgICBvZmZzZXQgPSAwOwogCi0gICAg
cmV0dXJuIFJhbmdlOjpjcmVhdGUoKnRoaXMsIG5vZGUsIG9mZnNldCwgbm9kZSwgb2Zmc2V0KTsK
KyAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZSgqdGhpcywgbm9kZS5nZXQoKSwgb2Zmc2V0LCBub2Rl
LmdldCgpLCBvZmZzZXQpOwogfQogCiBib29sIERvY3VtZW50Ojppc0JvZHlQb3RlbnRpYWxseVNj
cm9sbGFibGUoSFRNTEJvZHlFbGVtZW50JiBib2R5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcApp
bmRleCBkYzg5ZjM0NTA4Mjc2ZDQ2ODU1OWZhYmZjZTNjYWRiNDFjYWZiNWI2Li43ZGU1MDRmMzIz
NTcyOTRmODU4MzM1ZjczYjE1M2Q5NDNlYzY4YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNw
cApAQCAtNDUxLDcgKzQ1MSw3IEBAIHZvaWQgUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpjaGVja0Nv
bnNpc3RlbmN5KE5vZGUmIGN1cnJlbnRUYXJnZXQpCiAgICAgaWYgKCFtX3JldGFyZ2V0ZWRSZWxh
dGVkTm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCghY3VycmVudFRhcmdldC5pc0Ns
b3NlZFNoYWRvd0hpZGRlbigqbV9yZXRhcmdldGVkUmVsYXRlZE5vZGUpKTsKLSAgICBBU1NFUlQo
bV9yZXRhcmdldGVkUmVsYXRlZE5vZGUgPT0gJmN1cnJlbnRUYXJnZXQudHJlZVNjb3BlKCkucmV0
YXJnZXRUb1Njb3BlKG1fcmVsYXRlZE5vZGUpKTsKKyAgICBBU1NFUlQobV9yZXRhcmdldGVkUmVs
YXRlZE5vZGUgPT0gY3VycmVudFRhcmdldC50cmVlU2NvcGUoKS5yZXRhcmdldFRvU2NvcGUobV9y
ZWxhdGVkTm9kZSkucHRyKCkpOwogfQogCiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggMzBlZDlmM2Y2MWY0MDNkYmI5NGU4ZTNlMmY3OWZmODk3
ZTE3MmFkNS4uMDhjNWYzNjczODcyNmE0N2RjOTk3MzEyZjkyNGJmMzMyYjQ4ODYyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFRyZWVTY29wZTo6
cmVtb3ZlRWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYg
ZWxlbWVudAogfQogCiAKLU5vZGUmIFRyZWVTY29wZTo6cmV0YXJnZXRUb1Njb3BlKE5vZGUmIG5v
ZGUpIGNvbnN0CitSZWY8Tm9kZT4gVHJlZVNjb3BlOjpyZXRhcmdldFRvU2NvcGUoTm9kZSYgbm9k
ZSkgY29uc3QKIHsKICAgICBhdXRvJiBzY29wZSA9IG5vZGUudHJlZVNjb3BlKCk7CiAgICAgaWYg
KExJS0VMWSh0aGlzID09ICZzY29wZSB8fCAhbm9kZS5pc0luU2hhZG93VHJlZSgpKSkKQEAgLTE5
Niw4ICsxOTYsOCBAQCBOb2RlJiBUcmVlU2NvcGU6OnJldGFyZ2V0VG9TY29wZShOb2RlJiBub2Rl
KSBjb25zdAogICAgIGZvciAoYXV0byogY3VycmVudFNjb3BlID0gdGhpczsgY3VycmVudFNjb3Bl
OyBjdXJyZW50U2NvcGUgPSBjdXJyZW50U2NvcGUtPnBhcmVudFRyZWVTY29wZSgpKQogICAgICAg
ICBhbmNlc3RvclNjb3Blcy5hcHBlbmQoY3VycmVudFNjb3BlKTsKIAotICAgIHNpemVfdCBpID0g
bm9kZVRyZWVTY29wZXMuc2l6ZSgpOwotICAgIHNpemVfdCBqID0gYW5jZXN0b3JTY29wZXMuc2l6
ZSgpOworICAgIGF1dG8gaSA9IG5vZGVUcmVlU2NvcGVzLnNpemUoKTsKKyAgICBhdXRvIGogPSBh
bmNlc3RvclNjb3Blcy5zaXplKCk7CiAgICAgd2hpbGUgKGkgPiAwICYmIGogPiAwICYmIG5vZGVU
cmVlU2NvcGVzW2kgLSAxXSA9PSBhbmNlc3RvclNjb3Blc1tqIC0gMV0pIHsKICAgICAgICAgLS1p
OwogICAgICAgICAtLWo7CkBAIC0yMDcsNyArMjA3LDcgQEAgTm9kZSYgVHJlZVNjb3BlOjpyZXRh
cmdldFRvU2NvcGUoTm9kZSYgbm9kZSkgY29uc3QKICAgICBpZiAobm9kZUlzSW5PdXRlclRyZWVT
Y29wZSkKICAgICAgICAgcmV0dXJuIG5vZGU7CiAKLSAgICBTaGFkb3dSb290JiBzaGFkb3dSb290
SW5Mb3dlc3RDb21tb25UcmVlU2NvcGUgPSBkb3duY2FzdDxTaGFkb3dSb290Pihub2RlVHJlZVNj
b3Blc1tpIC0gMV0tPnJvb3ROb2RlKCkpOworICAgIGF1dG8mIHNoYWRvd1Jvb3RJbkxvd2VzdENv
bW1vblRyZWVTY29wZSA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KG5vZGVUcmVlU2NvcGVzW2kgLSAx
XS0+cm9vdE5vZGUoKSk7CiAgICAgcmV0dXJuICpzaGFkb3dSb290SW5Mb3dlc3RDb21tb25UcmVl
U2NvcGUuaG9zdCgpOwogfQogCkBAIC0zNDksNyArMzQ5LDcgQEAgc3RhdGljIE9wdGlvbmFsPExh
eW91dFBvaW50PiBhYnNvbHV0ZVBvaW50SWZOb3RDbGlwcGVkKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1Ob2RlKiBUcmVlU2NvcGU6Om5v
ZGVGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50LCBMYXlvdXRQb2ludCog
bG9jYWxQb2ludCkKK1JlZlB0cjxOb2RlPiBUcmVlU2NvcGU6Om5vZGVGcm9tUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIGNsaWVudFBvaW50LCBMYXlvdXRQb2ludCogbG9jYWxQb2ludCkKIHsKICAg
ICBhdXRvIGFic29sdXRlUG9pbnQgPSBhYnNvbHV0ZVBvaW50SWZOb3RDbGlwcGVkKGRvY3VtZW50
U2NvcGUoKSwgY2xpZW50UG9pbnQpOwogICAgIGlmICghYWJzb2x1dGVQb2ludCkKQEAgLTM2OCwx
OSArMzY4LDE5IEBAIFJlZlB0cjxFbGVtZW50PiBUcmVlU2NvcGU6OmVsZW1lbnRGcm9tUG9pbnQo
ZG91YmxlIGNsaWVudFgsIGRvdWJsZSBjbGllbnRZKQogICAgIGlmICghZG9jdW1lbnQuaGFzTGl2
aW5nUmVuZGVyVHJlZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIE5vZGUqIG5v
ZGUgPSBub2RlRnJvbVBvaW50KExheW91dFBvaW50KGNsaWVudFgsIGNsaWVudFkpLCBudWxscHRy
KTsKKyAgICBhdXRvIG5vZGUgPSBub2RlRnJvbVBvaW50KExheW91dFBvaW50IHsgY2xpZW50WCwg
Y2xpZW50WSB9LCBudWxscHRyKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgbm9kZSA9ICZyZXRhcmdldFRvU2NvcGUoKm5vZGUpOworICAgIG5vZGUgPSBy
ZXRhcmdldFRvU2NvcGUoKm5vZGUpOwogICAgIHdoaWxlICghaXM8RWxlbWVudD4oKm5vZGUpKSB7
CiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRJbkNvbXBvc2VkVHJlZSgpOwogICAgICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgbm9kZSA9ICZyZXRhcmdldFRv
U2NvcGUoKm5vZGUpOworICAgICAgICBub2RlID0gcmV0YXJnZXRUb1Njb3BlKCpub2RlKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CisgICAgcmV0dXJuIHN0
YXRpY19wb2ludGVyX2Nhc3Q8RWxlbWVudD4obm9kZSk7CiB9CiAKIFZlY3RvcjxSZWZQdHI8RWxl
bWVudD4+IFRyZWVTY29wZTo6ZWxlbWVudHNGcm9tUG9pbnQoZG91YmxlIGNsaWVudFgsIGRvdWJs
ZSBjbGllbnRZKQpAQCAtMzk5LDE1ICszOTksMTYgQEAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4g
VHJlZVNjb3BlOjplbGVtZW50c0Zyb21Qb2ludChkb3VibGUgY2xpZW50WCwgZG91YmxlIGNsaWUK
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCB7IGFic29sdXRlUG9pbnQudmFsdWUoKSB9OwogICAg
IGRvY3VtZW50U2NvcGUoKS5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAKLSAgICBOb2RlKiBs
YXN0Tm9kZSA9IG51bGxwdHI7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBsaXN0QmFzZWROb2RlIDog
cmVzdWx0Lmxpc3RCYXNlZFRlc3RSZXN1bHQoKSkgewotICAgICAgICBOb2RlKiBub2RlID0gbGlz
dEJhc2VkTm9kZS5nZXQoKTsKLSAgICAgICAgbm9kZSA9ICZyZXRhcmdldFRvU2NvcGUoKm5vZGUp
OwotICAgICAgICB3aGlsZSAoIWlzPEVsZW1lbnQ+KCpub2RlKSkgeworICAgIFJlZlB0cjxOb2Rl
PiBsYXN0Tm9kZTsKKyAgICBhdXRvJiBub2RlU2V0ID0gcmVzdWx0Lmxpc3RCYXNlZFRlc3RSZXN1
bHQoKTsKKyAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5vZGVTZXQuc2l6ZSgp
KTsKKyAgICBmb3IgKGF1dG8mIGxpc3RCYXNlZE5vZGUgOiBub2RlU2V0KSB7CisgICAgICAgIFJl
ZlB0cjxOb2RlPiBub2RlID0gcmV0YXJnZXRUb1Njb3BlKGxpc3RCYXNlZE5vZGUpOworICAgICAg
ICB3aGlsZSAoIWlzPEVsZW1lbnQ+KG5vZGUpKSB7CiAgICAgICAgICAgICBub2RlID0gbm9kZS0+
cGFyZW50SW5Db21wb3NlZFRyZWUoKTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG5vZGUgPSAmcmV0YXJnZXRUb1Njb3BlKCpub2Rl
KTsKKyAgICAgICAgICAgIG5vZGUgPSByZXRhcmdldFRvU2NvcGUoKm5vZGUpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFub2RlKQpAQCAtNDIxLDcgKzQyMiw3IEBAIFZlY3RvcjxSZWZQdHI8
RWxlbWVudD4+IFRyZWVTY29wZTo6ZWxlbWVudHNGcm9tUG9pbnQoZG91YmxlIGNsaWVudFgsIGRv
dWJsZSBjbGllCiAgICAgICAgIGlmIChub2RlID09IGxhc3ROb2RlKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUp
KTsKKyAgICAgICAgZWxlbWVudHMuYXBwZW5kKHN0YXRpY19wb2ludGVyX2Nhc3Q8RWxlbWVudD4o
bm9kZSkpOwogICAgICAgICBsYXN0Tm9kZSA9IG5vZGU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmgKaW5kZXggNWQ2ZTg2ODBmMzkyZGI3YmJlYjZkZTI0NDJiZjMzOTczODE1NmYyZS4uOTJi
MmM0ODZkOWFjY2UyNTM2ZGNiYWZhNGNkZjUwMDEwZjQ3MTM2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGUuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHB0cmRpZmZfdCBkb2N1
bWVudFNjb3BlTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFRyZWVTY29w
ZSwgbV9kb2N1bWVudFNjb3BlKTsgfQogCiAgICAgLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNyZXRhcmdldAotICAgIE5vZGUmIHJldGFyZ2V0VG9TY29wZShOb2RlJikgY29uc3Q7Cisg
ICAgUmVmPE5vZGU+IHJldGFyZ2V0VG9TY29wZShOb2RlJikgY29uc3Q7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBOb2RlKiBhbmNlc3Rvck5vZGVJblRoaXNTY29wZShOb2RlKikgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgRWxlbWVudCogYW5jZXN0b3JFbGVtZW50SW5UaGlzU2NvcGUoRWxlbWVu
dCopIGNvbnN0OwpAQCAtMTIzLDcgKzEyMyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9kb2N1
bWVudFNjb3BlID0gZG9jdW1lbnQ7CiAgICAgfQogCi0gICAgTm9kZSogbm9kZUZyb21Qb2ludChj
b25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBvaW50KiBsb2NhbFBvaW50KTsK
KyAgICBSZWZQdHI8Tm9kZT4gbm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50
UG9pbnQsIExheW91dFBvaW50KiBsb2NhbFBvaW50KTsKIAogcHJpdmF0ZToKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggMzgzMDU5YjU4YTlhNmRjMTY5NTMxMTRhMzBlYTk5MmNmYmE5MDJmZS4uZDk3
MjAxZjVjNTc5ODRkOGZhYTBkZDJjMWFlZWMwMjc0NjExODVlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC05NDIsOSArOTQyLDkgQEAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gUGFnZTo6ZWRpdGFibGVF
bGVtZW50c0luUmVjdChjb25zdCBGbG9hdFJlY3QmIHNlYXJjaFJlY3RJblIKICAgICBhdXRvJiBu
b2RlU2V0ID0gaGl0VGVzdFJlc3VsdC5saXN0QmFzZWRUZXN0UmVzdWx0KCk7CiAgICAgcmVzdWx0
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobm9kZVNldC5zaXplKCkpOwogICAgIGZvciAoYXV0byYg
bm9kZSA6IG5vZGVTZXQpIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpICYmIGlzRWRp
dGFibGVUZXh0SW5wdXRFbGVtZW50KGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKSkpIHsKLSAgICAg
ICAgICAgIEFTU0VSVChzZWFyY2hSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzLmludGVyc2VjdHMo
ZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmNsaWVudFJlY3QoKSkpOwotICAgICAgICAgICAgcmVz
dWx0LnVuY2hlY2tlZEFwcGVuZChkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkpOworICAgICAgICBp
ZiAoaXM8RWxlbWVudD4obm9kZSkgJiYgaXNFZGl0YWJsZVRleHRJbnB1dEVsZW1lbnQoZG93bmNh
c3Q8RWxlbWVudD4obm9kZS5nZXQoKSkpKSB7CisgICAgICAgICAgICBBU1NFUlQoc2VhcmNoUmVj
dEluUm9vdFZpZXdDb29yZGluYXRlcy5pbnRlcnNlY3RzKGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUu
Z2V0KCkpLmNsaWVudFJlY3QoKSkpOworICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVu
ZChzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RWxlbWVudD4obm9kZSkpOwogICAgICAgICB9CiAgICAg
fQogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHAKaW5kZXggZGUxM2YxOWEwYTEyNzA0ZDVkOGJjNDI3ODczNWQ1ZDk4ZTFkZDgwMi4u
NTY0N2Q1NTE4YmQ5YjUxYTliMjI3YTAxNTk3Njg5ZjhjNGZiM2IwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNTQsNiArNTQsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitzdGF0aWMgaW5s
aW5lIHZvaWQgYXBwZW5kVG9Ob2RlU2V0KGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIHNv
dXJjZSwgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgZGVzdGluYXRpb24pCit7CisgICAgZm9yIChh
dXRvJiBub2RlIDogc291cmNlKQorICAgICAgICBkZXN0aW5hdGlvbi5hZGQobm9kZS5jb3B5UmVm
KCkpOworfQorCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KCkgPSBkZWZhdWx0OwogCiBI
aXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKQEAg
LTkxLDcgKzk3LDEwIEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVz
dFJlc3VsdCYgb3RoZXIpCiAgICAgLCBtX2lzT3ZlcldpZGdldChvdGhlci5pc092ZXJXaWRnZXQo
KSkKIHsKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0IGhpdCB0
ZXN0LgotICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJl
c3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkg
OiBudWxscHRyOworICAgIGlmIChvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIHsKKyAgICAg
ICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gbWFrZVVuaXF1ZTxOb2RlU2V0PigpOworICAgICAg
ICBhcHBlbmRUb05vZGVTZXQoKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCwgKm1fbGlzdEJh
c2VkVGVzdFJlc3VsdCk7CisgICAgfQogfQogCiBIaXRUZXN0UmVzdWx0Ojp+SGl0VGVzdFJlc3Vs
dCgpID0gZGVmYXVsdDsKQEAgLTEwOCw3ICsxMTcsMTAgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVz
dFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIG1faXNP
dmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CiAKICAgICAvLyBPbmx5IGNvcHkgdGhl
IE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0IGhpdCB0ZXN0LgotICAgIG1fbGlzdEJhc2VkVGVzdFJl
c3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4o
Km90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOworICAgIGlmIChvdGhlci5t
X2xpc3RCYXNlZFRlc3RSZXN1bHQpIHsKKyAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0g
bWFrZVVuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBhcHBlbmRUb05vZGVTZXQoKm90aGVyLm1f
bGlzdEJhc2VkVGVzdFJlc3VsdCwgKm1fbGlzdEJhc2VkVGVzdFJlc3VsdCk7CisgICAgfQogCiAg
ICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjM0LDcgKzY0Niw3IEBAIGlubGluZSBIaXRUZXN0UHJv
Z3Jlc3MgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdENvbW1vbihO
b2RlKiBuCiAgICAgaWYgKHJlcXVlc3QuZGlzYWxsb3dzVXNlckFnZW50U2hhZG93Q29udGVudCgp
ICYmIG5vZGUtPmlzSW5Vc2VyQWdlbnRTaGFkb3dUcmVlKCkpCiAgICAgICAgIG5vZGUgPSBub2Rl
LT5kb2N1bWVudCgpLmFuY2VzdG9yTm9kZUluVGhpc1Njb3BlKG5vZGUpOwogCi0gICAgbXV0YWJs
ZUxpc3RCYXNlZFRlc3RSZXN1bHQoKS5hZGQobm9kZSk7CisgICAgbXV0YWJsZUxpc3RCYXNlZFRl
c3RSZXN1bHQoKS5hZGQoKm5vZGUpOwogCiAgICAgaWYgKHJlcXVlc3QuaW5jbHVkZXNBbGxFbGVt
ZW50c1VuZGVyUG9pbnQoKSkKICAgICAgICAgcmV0dXJuIEhpdFRlc3RQcm9ncmVzczo6Q29udGlu
dWU7CkBAIC02NjcsMTEgKzY3OSw4IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0
IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxCiAgICAgICAg
IG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CiAgICAgfQogCi0gICAgaWYg
KG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkgewotICAgICAgICBOb2RlU2V0JiBzZXQgPSBt
dXRhYmxlTGlzdEJhc2VkVGVzdFJlc3VsdCgpOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG5v
ZGUgOiAqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICAgICAgc2V0LmFkZChu
b2RlLmdldCgpKTsKLSAgICB9CisgICAgaWYgKG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkK
KyAgICAgICAgYXBwZW5kVG9Ob2RlU2V0KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQsIG11
dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KCkpOwogfQogCiBjb25zdCBIaXRUZXN0UmVzdWx0OjpO
b2RlU2V0JiBIaXRUZXN0UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IDI1ZjkyMDM5NjcyZDA3NDc5
ZTFkMDExMGMxMTMxZWVkNmQ1NjAyNmEuLjk2NzFjNmQ2OWE0ZTBiOTRiZWI4MzBlMDk5MThhYzE3
NTFiZjVmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAt
NDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIEhpdFRlc3RQcm9ncmVzcyB7IFN0b3AsIENvbnRpbnVl
IH07CiBjbGFzcyBIaXRUZXN0UmVzdWx0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICB1c2luZyBOb2RlU2V0ID0gTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+PjsK
KyAgICB1c2luZyBOb2RlU2V0ID0gTGlzdEhhc2hTZXQ8UmVmPE5vZGU+PjsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIEhpdFRlc3RSZXN1bHQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBI
aXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggZjExNjRhZTljMWFjM2JmMDE2ODk2YjlmNGRkZWExZmMzNGY2NzkwYS4u
ZTZjNzA0ZTM1M2JlMmNlMTE1ZDIwN2Q3NTJlYzM2ZDA5ODNkNDRkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjIyNywxMiArMjIyNyw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxOb2RlTGlzdD4+IEludGVybmFsczo6bm9kZXNGcm9tUmVjdChEb2N1bWVudCYgZG9jdW1l
bnQsIGludCBjCiAKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgdG9wUGFkZGluZywg
cmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZyk7CiAgICAgZG9jdW1lbnQu
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotICAgIGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5vZGVT
ZXQmIG5vZGVTZXQgPSByZXN1bHQubGlzdEJhc2VkVGVzdFJlc3VsdCgpOwotICAgIFZlY3RvcjxS
ZWY8Tm9kZT4+IG1hdGNoZXM7Ci0gICAgbWF0Y2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5v
ZGVTZXQuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlU2V0KQotICAgICAgICBt
YXRjaGVzLnVuY2hlY2tlZEFwcGVuZCgqbm9kZSk7Ci0KKyAgICBhdXRvIG1hdGNoZXMgPSBXVEY6
Om1hcChyZXN1bHQubGlzdEJhc2VkVGVzdFJlc3VsdCgpLCBbXShjb25zdCBhdXRvJiBub2RlKSB7
IHJldHVybiBub2RlLmNvcHlSZWYoKTsgfSk7CiAgICAgcmV0dXJuIFJlZlB0cjxOb2RlTGlzdD4g
eyBTdGF0aWNOb2RlTGlzdDo6Y3JlYXRlKFdURk1vdmUobWF0Y2hlcykpIH07CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>