<?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>171731</bug_id>
          
          <creation_ts>2017-05-05 09:31:35 -0700</creation_ts>
          <short_desc>Add StringView.stripWhiteSpace()</short_desc>
          <delta_ts>2017-08-21 22:20:03 -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>Web Template Framework</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=175757</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1305150</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-05 09:31:35 -0700</bug_when>
    <thetext>We should add StringView.stripWhiteSpace() as the analog to String.stripWhiteSpace() to avoid unnecessary allocation and copying of characters at call sites that need a string without leading and trailing whitespace temporarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305156</commentid>
    <comment_count>1</comment_count>
      <attachid>309178</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-05 09:51:44 -0700</bug_when>
    <thetext>Created attachment 309178
Patch and unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305157</commentid>
    <comment_count>2</comment_count>
      <attachid>309178</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-05 09:54:49 -0700</bug_when>
    <thetext>Comment on attachment 309178
Patch and unit tests

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

&gt; Source/WTF/wtf/text/StringCommon.h:54
&gt; +    inline bool operator()(UChar ch) const

I am open to suggestion on the name of this parameter. Otherwise, will rename the parameter to c before landing for consistency with the name of the parameter to isSpaceOrNewline().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305406</commentid>
    <comment_count>3</comment_count>
      <attachid>309178</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-05-05 16:30:41 -0700</bug_when>
    <thetext>Comment on attachment 309178
Patch and unit tests

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

&gt; Source/WTF/ChangeLog:3
&gt; +        Add StringView.stripWhiteSpace()

I don’t think we should do this. We almost never actually want stripWhiteSpace.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1924
&gt; -    return node &amp;&amp; node-&gt;nodeType() == Node::TEXT_NODE &amp;&amp; node-&gt;nodeValue().stripWhiteSpace().length() == 0;
&gt; +    return node &amp;&amp; node-&gt;nodeType() == Node::TEXT_NODE &amp;&amp; StringView(node-&gt;nodeValue()).stripWhiteSpace().isEmpty();

I think this should be stripping HTML spaces, not all whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313318</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-05-26 17:14:55 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 309178 [details]
&gt; Patch and unit tests
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=309178&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:3
&gt; &gt; +        Add StringView.stripWhiteSpace()
&gt; 
&gt; I don’t think we should do this. We almost never actually want
&gt; stripWhiteSpace.

I take it we should be using stripLeadingAndTrailingHTMLSpaces() whenever we want to strip whitespace from a string regardless of whether the string was extracted from markup.

&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1924
&gt; &gt; -    return node &amp;&amp; node-&gt;nodeType() == Node::TEXT_NODE &amp;&amp; node-&gt;nodeValue().stripWhiteSpace().length() == 0;
&gt; &gt; +    return node &amp;&amp; node-&gt;nodeType() == Node::TEXT_NODE &amp;&amp; StringView(node-&gt;nodeValue()).stripWhiteSpace().isEmpty();
&gt; 
&gt; I think this should be stripping HTML spaces, not all whitespace.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340602</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-08-21 08:50:50 -0700</bug_when>
    <thetext>If this is the bug we were referring to where I expressed an objection, it’s an objection to having functions that make use of the concept of Unicode whitespace. I suspect this concept is only very rarely relevant in WebKit, where as the concept of an HTML space is likely relevant in *many* places.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309178</attachid>
            <date>2017-05-05 09:51:44 -0700</date>
            <delta_ts>2017-05-26 17:15:00 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-171731-20170505095143.patch</filename>
            <type>text/plain</type>
            <size>20323</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExMDVjOTJmYTNjYjA5YWY3MDk3OGRm
NjE4ZGI2MDAxYzVkOTc2Y2EuLjI1N2FjZjk2NzIzMDcxZTZmOWRkY2E0ZGUxZTM4ZmIxYmEzZjk1
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDUtMDUgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTdHJpbmdWaWV3LnN0cmlwV2hpdGVTcGFjZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE3MzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgc3VwcG9ydCBmb3IgcmVtb3Zpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGZyb20gYSBTdHJp
bmdWaWV3LgorICAgICAgICBTdHJpbmdWaWV3LnN0cmlwV2hpdGVTcGFjZSgpIGlzIG1vcmUgZWZm
aWNpZW50IHRoYW4gaXRzIFN0cmluZyBjb3VudGVycGFydAorICAgICAgICBhcyBpdCBvbmx5IHVw
ZGF0ZXMgc3RhcnRzIGFuZCBlbmQgb2Zmc2V0cy4gSW4gY29udHJhc3QgU3RyaW5nLnN0cmlwV2hp
dGVTcGFjZSgpCisgICAgICAgIHJlcXVpcmVzIGEgbWFsbG9jIGFuZCBjb3B5IG9mIHRoZSB1bmRl
cmx5aW5nIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBmb3IKKyAgICAgICAgbm9uLXRyaXZpYWwg
c3RyaW5ncy4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oOgorICAgICAgICAo
V1RGOjppc1NwYWNlT3JOZXdsaW5lKTogTW92ZWQgZnJvbSB3dGYvdGV4dC9TdHJpbmdJbXBsLmgu
CisgICAgICAgIChXVEY6OlNwYWNlT3JOZXdsaW5lUHJlZGljYXRlOjpvcGVyYXRvcigpKTogTW92
ZWQgZnJvbSB3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcC4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6U3BhY2VPck5ld2xpbmVQcmVkaWNhdGU6Om9wZXJh
dG9yKCkpOiBNb3ZlZCB0byB3dGYvdGV4dC9TdHJpbmdDb21tb24uaC4KKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OmlzU3BhY2VPck5ld2xpbmUpOiBEaXR0
by4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmlu
Z1ZpZXc6OnN0cmlwV2hpdGVTcGFjZSk6IEFkZGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3
OjpzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKTogQWRkZWQuCisKIDIwMTctMDUtMDIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIg
PGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTYxMDI+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTY3ZjExMDQ1YjkwYWZkY2U4ZWQyMmMwODRmMGI0OTY1OWI0ZWJjNC4uMzc4OGI3YjM0NmFjMTEx
YTE2YTMwZjhlOWI2YzM1MTlkY2I3ZDkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDE3LTA1LTA1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgU3RyaW5nVmlldy5zdHJpcFdoaXRlU3BhY2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHNvbWUgY29kZSB0byB1c2UgU3RyaW5nVmll
dy5zdHJpcFdoaXRlU3BhY2UoKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aXNXaGl0ZXNw
YWNlKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrTWVkaWFUeXBlKToKKwogMjAxNy0wNS0w
MyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmRlclNlYXJj
aEZpZWxkIHNob3VsZCBub3QgdXNlIGlzVGV4dEZpZWxkKCkgaW4gU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19SRU5ERVJfT0JKRUNUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbW1vbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAppbmRleCBiYjY2
NGFlYTk4YzI5MmZkODMzMjdhOTQ5MDNlZDA2ZTA3OWQ1ODIzLi4xYWMyMzViOGVjNjAwMzIyMjAz
MmMyMzUyNWY5ZGE0NTE3Mzk2ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0NvbW1vbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Miw2ICs0MiwyMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB1bnNpZ25l
ZCBsb3dlcmNhc2VMZXR0ZXJzTGVuZ3RoPiBib29sIGVxdWFsTGV0dAogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBTdHJpbmdDbGFzcywgdW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiwgY29uc3QgY2hhciAoJmxvd2Vy
Y2FzZUxldHRlcnMpW2xlbmd0aF0pOwogCitpbmxpbmUgYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVD
aGFyIGMpCit7CisgICAgLy8gVXNlIGlzQVNDSUlTcGFjZSgpIGZvciBiYXNpYyBMYXRpbi0xLiBU
aGlzIHdpbGwgaW5jbHVkZSBuZXdsaW5lcywgd2hpY2ggYXJlbid0CisgICAgLy8gaW5jbHVkZWQg
aW4gVW5pY29kZSBEaXJXUy4KKyAgICByZXR1cm4gYyA8PSAweDdGID8gaXNBU0NJSVNwYWNlKGMp
IDogdV9jaGFyRGlyZWN0aW9uKGMpID09IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDsKK30KKworY2xh
c3MgU3BhY2VPck5ld2xpbmVQcmVkaWNhdGUgeworcHVibGljOgorICAgIGlubGluZSBib29sIG9w
ZXJhdG9yKCkoVUNoYXIgY2gpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNTcGFjZU9y
TmV3bGluZShjaCk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGlubGluZSBU
IGxvYWRVbmFsaWduZWQoY29uc3QgY2hhciogcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCmluZGV4IGVlNjZkYWYyNWM5MjFjODYzOTdlODY2ODRiMzI2Y2U4ODMxMmFkYTAuLjFhNzUx
MTgyZjE5OTk4ODA2YjdmOWMwYTMzZGVlM2EzMmYyYWQyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcApAQCAtNzY2LDE0ICs3NjYsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IENoYXJh
Y3Rlck1hdGNoRnVuY3Rpb25QdHIgbV9mdW5jdGlvbjsKIH07CiAKLWNsYXNzIFNwYWNlT3JOZXds
aW5lUHJlZGljYXRlIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKFVDaGFy
IGNoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3BhY2VPck5ld2xpbmUoY2gpOwot
ICAgIH0KLX07Ci0KIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcFdoaXRlU3BhY2Uo
KQogewogICAgIHJldHVybiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFNwYWNlT3JOZXdsaW5lUHJl
ZGljYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBlZTkzODY3MDhhYmE0NDdi
NmE3MjQxNzRjMWYxMmRhNjYwYjU1MmJmLi5lN2NkNGExMjI2MmU3NDk1MjE0ZTRjMTU1NGEyMzVl
ZmFjNzFhZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTA2MCwxMyArMTA2MCw2
IEBAIGlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcx
LCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyCiAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUx
NihzdHJpbmcxLCBzdHJpbmcyKTsKIH0KIAotaW5saW5lIGJvb2wgaXNTcGFjZU9yTmV3bGluZShV
Q2hhciBjKQotewotICAgIC8vIFVzZSBpc0FTQ0lJU3BhY2UoKSBmb3IgYmFzaWMgTGF0aW4tMS4K
LSAgICAvLyBUaGlzIHdpbGwgaW5jbHVkZSBuZXdsaW5lcywgd2hpY2ggYXJlbid0IGluY2x1ZGVk
IGluIFVuaWNvZGUgRGlyV1MuCi0gICAgcmV0dXJuIGMgPD0gMHg3RiA/IGlzQVNDSUlTcGFjZShj
KSA6IHVfY2hhckRpcmVjdGlvbihjKSA9PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7Ci19Ci0KIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZO
dWxsVGVybWluYXRlZFN0cmluZyhjb25zdCBDaGFyYWN0ZXJUeXBlKiBzdHJpbmcpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDZjZTU0MjA4ZTE4OTBiM2E1NTk0ZGFjNjIwZDM3NGNi
Y2M0ZGQ5NjIuLmRjMTg4ODZlNDIwNzQxNGM1Y2E2ZjA1NThkMzJmNWQ3OTY5NWE1MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMTksNiArMTE5LDggQEAgcHVibGljOgogICAgIFN0
cmluZ1ZpZXcgbGVmdCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBs
ZW4pOyB9CiAgICAgU3RyaW5nVmlldyByaWdodCh1bnNpZ25lZCBsZW4pIGNvbnN0IHsgcmV0dXJu
IHN1YnN0cmluZyhsZW5ndGgoKSAtIGxlbiwgbGVuKTsgfQogCisgICAgU3RyaW5nVmlldyBzdHJp
cFdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFNwYWNl
T3JOZXdsaW5lUHJlZGljYXRlKCkpOyB9CisKICAgICBjbGFzcyBTcGxpdFJlc3VsdDsKICAgICBT
cGxpdFJlc3VsdCBzcGxpdChVQ2hhcikgY29uc3Q7CiAKQEAgLTE2OCw2ICsxNzAsOSBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgdm9pZCBjbGVhcigpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VUNoYXJQcmVkaWNhdGU+IFN0cmluZ1ZpZXcKKyAgICBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFVD
aGFyUHJlZGljYXRlKSBjb25zdDsKKwogICAgIGNvbnN0IHZvaWQqIG1fY2hhcmFjdGVycyB7IG51
bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2xlbmd0aCB7IDAgfTsKICAgICBib29sIG1faXM4Qml0
IHsgdHJ1ZSB9OwpAQCAtOTQwLDYgKzk0NSwzMyBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+
IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgcwog
ICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihzdHJpbmcsIGxv
d2VyY2FzZUxldHRlcnMpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBVQ2hhclByZWRpY2F0ZT4K
K2lubGluZSBTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN0cmlwTWF0Y2hlZENoYXJhY3RlcnMoVUNo
YXJQcmVkaWNhdGUgcHJlZGljYXRlKSBjb25zdAoreworICAgIGlmICghbV9sZW5ndGgpCisgICAg
ICAgIHJldHVybiAqdGhpczsKKworICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKKyAgICB1bnNpZ25l
ZCBlbmQgPSBtX2xlbmd0aCAtIDE7CisKKyAgICAvLyBTa2lwIG1hdGNoZWQgY2hhcmFjdGVycyBm
cm9tIHN0YXJ0CisgICAgd2hpbGUgKHN0YXJ0IDw9IGVuZCAmJiBwcmVkaWNhdGUoaXM4Qml0KCkg
PyBjaGFyYWN0ZXJzOCgpW3N0YXJ0XSA6IGNoYXJhY3RlcnMxNigpW3N0YXJ0XSkpCisgICAgICAg
ICsrc3RhcnQ7CisKKyAgICAvLyBPbmx5IGNvbnRhaW5lZCBtYXRjaGVkIGNoYXJhY3RlcnMKKyAg
ICBpZiAoc3RhcnQgPiBlbmQpCisgICAgICAgIHJldHVybiBlbXB0eSgpOworCisgICAgLy8gU2tp
cCBtYXRjaGVkIGNoYXJhY3RlcnMgZnJvbSBlbmQKKyAgICB3aGlsZSAoZW5kICYmIHByZWRpY2F0
ZShpczhCaXQoKSA/IGNoYXJhY3RlcnM4KClbZW5kXSA6IGNoYXJhY3RlcnMxNigpW2VuZF0pKQor
ICAgICAgICAtLWVuZDsKKworICAgIGlmICghc3RhcnQgJiYgZW5kID09IG1fbGVuZ3RoIC0gMSkK
KyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgcmV0dXJuIHN1YnN0cmluZyhzdGFydCwgZW5k
ICsgMSAtIHN0YXJ0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBw
ZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggMWM5NjU5MTcwNTljMTMzMTVmOWYwMWFjMDg0NmVhNThkNzExNDM2Yi4uMGRkOWJhNjI2
MDEyZGM2YTQ5OTE5YTc0NzFmZDFjMWY1ODk0ZTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xOTIxLDcgKzE5MjEsNyBAQCBOb2Rl
KiBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKE5vZGUqIG5vZGUpCiBib29sIElu
c3BlY3RvckRPTUFnZW50Ojppc1doaXRlc3BhY2UoTm9kZSogbm9kZSkKIHsKICAgICAvL1RPRE86
IHB1bGwgaWdub3JlV2hpdGVzcGFjZSBzZXR0aW5nIGZyb20gdGhlIGZyb250ZW5kIGFuZCB1c2Ug
aGVyZS4KLSAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRf
Tk9ERSAmJiBub2RlLT5ub2RlVmFsdWUoKS5zdHJpcFdoaXRlU3BhY2UoKS5sZW5ndGgoKSA9PSAw
OworICAgIHJldHVybiBub2RlICYmIG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RF
ICYmIFN0cmluZ1ZpZXcobm9kZS0+bm9kZVZhbHVlKCkpLnN0cmlwV2hpdGVTcGFjZSgpLmlzRW1w
dHkoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bWFpbkZyYW1lRE9NQ29udGVudExv
YWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCmluZGV4IDRiZGM2ZjFkMjg5NWFlMTBh
NDhkMGUyMjdjNjliYTgyMTVkYmZmMzkuLjM2MWY0OWJkMGU3NzVlZGJiYTVjOTc0NzMwODhmYWU1
ZWFkNDdiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja0ZyYW1lQW5jZXN0b3JzKENvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3REaXJlY3RpdmUqCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCBjaGVja01lZGlhVHlwZShDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3RE
aXJlY3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5
cGVBdHRyaWJ1dGUpCitzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tNZWRpYVR5cGUoQ29udGVudFNl
Y3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYg
dHlwZSwgU3RyaW5nVmlldyB0eXBlQXR0cmlidXRlKQogewogICAgIGlmICghZGlyZWN0aXZlKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBlMTExYTI5ZDhhZDkwZTJmNzZiNTVhYWMwODY3NmE0YzFkOTk2ZjNi
Li5lMzQ3YTJjZjc4M2NiYzVjZDE1ZjhiYWYwMjcwOWNiMDJjNTA1ZjczIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MTctMDUtMDUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTdHJpbmdWaWV3LnN0cmlwV2hpdGVTcGFjZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE3MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBmb3IgU3RyaW5nVmlldy5zdHJpcFdoaXRl
U3BhY2UoKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c3RyaW5nVmlld0Zyb21VVEY4KTogRml4IHNv
bWUgc3R5bGUgbml0cywgaW5jbHVkaW5nCisgICAgICAgIGZpeGVkIHBsYWNlbWVudCBvZiAmIGlu
IGZpcnN0IHBhcmFtZXRlciBhbmQgcmVuYW1lZCBpdCBmcm9tIHJlZiB0bworICAgICAgICByZWZl
cmVuY2UuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzdHJpbmdWaWV3RnJvbVVURjE2TGl0ZXJh
bCk6IENyZWF0ZXMgYSBTdHJpbmdWaWV3IG9iamVjdAorICAgICAgICBmcm9tIGEgVVRGLTE2IHN0
cmluZyBsaXRlcmFsLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICAg
ICAtIFdURi5TdHJpbmdWaWV3UmlnaHRCYXNpYygpOiBNb2RpZmllZCBjb2RlIHRvIHVzZSBFWFBF
Q1RfRVEoKSBmb3IKKyAgICAgICAgICAgIHByZXR0eS1wcmludGVkIG91dHB1dCBvZiB0aGUgYWN0
dWFsIGFuZCBleHBlY3Qgc3RyaW5ncyBzaG91bGQgdGhleQorICAgICAgICAgICAgZGlmZmVyLgor
ICAgICAgICAgICAgLSBXVEYuU3RyaW5nVmlld0xlZnRCYXNpYygpOiBEaXR0by4KKyAgICAgICAg
ICAgIC0gV1RGLlN0cmluZ1ZpZXdTdHJpcFdoaXRlU3BhY2UoKTogQWRkZWQgdGVzdHMgZm9yIFN0
cmluZ1ZpZXcuc3RyaXBXaGl0ZVNwYWNlKCkuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9XVEZT
dHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdURjo6b3BlcmF0b3I8PCk6IEFkZCBpbnNlcnRp
b24gb3BlcmF0b3Igb3ZlcmxvYWQgZm9yIFN0cmluZ1ZpZXcgYW5kCisgICAgICAgIEF0b21pY1N0
cmluZyBzbyB0aGF0IHdlIGNhbiBtYWtlIHVzZSBvZiBHb29nbGUgdGVzdCBFWFBFQ1RfRVEoKSB0
bworICAgICAgICBjb21wYXJlIHRoZXNlIHR5cGVzLCByZXNwZWN0aXZlbHkuCisKIDIwMTctMDUt
MDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBFeHRl
bmQgcHJvY2Vzc0RpZENyYXNoIGRlbGVnYXRlIHRvIGxldCB0aGUgY2xpZW50IGtub3cgdGhlIHJl
YXNvbiBmb3IgdGhlIGNyYXNoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmlu
Z1ZpZXcuY3BwCmluZGV4IDkzNTkyODM0YTliZTg4NjhhYzEwZDU0YzBlMTVjMGQzNjUwZTI0ODgu
LjUwYjczYWM4ZWJkYmVlNjVkNDJmOTQ0MGJlYTQ5ZTMxYmY3NTczZjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaD4KIApAQCAtMzUsMTAgKzM2LDE3IEBAIFN0cmluZ1ZpZXcgc3RyaW5nVmlld0Zyb21M
aXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCiAgICAgcmV0dXJuIFN0cmluZ1ZpZXcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBzdHJsZW4oY2hhcmFjdGVy
cykpOwogfQogCi1TdHJpbmdWaWV3IHN0cmluZ1ZpZXdGcm9tVVRGOChTdHJpbmcgJnJlZiwgY29u
c3QgY2hhciogY2hhcmFjdGVycykKK1N0cmluZ1ZpZXcgc3RyaW5nVmlld0Zyb21VVEY4KFN0cmlu
ZyYgcmVmZXJlbmNlLCBjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogewotICAgIHJlZiA9IFN0cmlu
Zzo6ZnJvbVVURjgoY2hhcmFjdGVycyk7Ci0gICAgcmV0dXJuIHJlZjsKKyAgICByZWZlcmVuY2Ug
PSBTdHJpbmc6OmZyb21VVEY4KGNoYXJhY3RlcnMpOworICAgIHJldHVybiByZWZlcmVuY2U7Cit9
CisKK3RlbXBsYXRlPHNpemVfdCBsZW5ndGg+CitpbmxpbmUgU3RyaW5nVmlldyBzdHJpbmdWaWV3
RnJvbVVURjE2TGl0ZXJhbChTdHJpbmcmIHJlZmVyZW5jZSwgY29uc3QgY2hhcjE2X3QgKCZjaGFy
YWN0ZXJzKVtsZW5ndGhdKQoreworICAgIHJlZmVyZW5jZSA9IHV0ZjE2U3RyaW5nKGNoYXJhY3Rl
cnMpOworICAgIHJldHVybiByZWZlcmVuY2U7CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdWaWV3RW1w
dHlWc051bGwpCkBAIC04ODAsMzMgKzg4OCwzMyBAQCBURVNUKFdURiwgU3RyaW5nVmlldzhCaXQp
CiBURVNUKFdURiwgU3RyaW5nVmlld1JpZ2h0QmFzaWMpCiB7CiAgICAgYXV0byByZWZlcmVuY2Ug
PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNhcHB1Y2Npbm8iKTsKLSAgICBFWFBFQ1RfVFJVRShy
ZWZlcmVuY2UucmlnaHQoMCkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCIiKSk7Ci0gICAgRVhQ
RUNUX1RSVUUocmVmZXJlbmNlLnJpZ2h0KDEpID09IHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgibyIp
KTsKLSAgICBFWFBFQ1RfVFJVRShyZWZlcmVuY2UucmlnaHQoMikgPT0gc3RyaW5nVmlld0Zyb21M
aXRlcmFsKCJubyIpKTsKLSAgICBFWFBFQ1RfVFJVRShyZWZlcmVuY2UucmlnaHQoMykgPT0gc3Ry
aW5nVmlld0Zyb21MaXRlcmFsKCJpbm8iKSk7Ci0gICAgRVhQRUNUX1RSVUUocmVmZXJlbmNlLnJp
Z2h0KDQpID09IHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiY2lubyIpKTsKLSAgICBFWFBFQ1RfVFJV
RShyZWZlcmVuY2UucmlnaHQoNSkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJjY2lubyIpKTsK
LSAgICBFWFBFQ1RfVFJVRShyZWZlcmVuY2UucmlnaHQoNikgPT0gc3RyaW5nVmlld0Zyb21MaXRl
cmFsKCJ1Y2Npbm8iKSk7Ci0gICAgRVhQRUNUX1RSVUUocmVmZXJlbmNlLnJpZ2h0KDcpID09IHN0
cmluZ1ZpZXdGcm9tTGl0ZXJhbCgicHVjY2lubyIpKTsKLSAgICBFWFBFQ1RfVFJVRShyZWZlcmVu
Y2UucmlnaHQoOCkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJwcHVjY2lubyIpKTsKLSAgICBF
WFBFQ1RfVFJVRShyZWZlcmVuY2UucmlnaHQoOSkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJh
cHB1Y2Npbm8iKSk7Ci0gICAgRVhQRUNUX1RSVUUocmVmZXJlbmNlLnJpZ2h0KDEwKSA9PSBzdHJp
bmdWaWV3RnJvbUxpdGVyYWwoIkNhcHB1Y2Npbm8iKSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1Zp
ZXdGcm9tTGl0ZXJhbCgiIiksIHJlZmVyZW5jZS5yaWdodCgwKSk7CisgICAgRVhQRUNUX0VRKHN0
cmluZ1ZpZXdGcm9tTGl0ZXJhbCgibyIpLCByZWZlcmVuY2UucmlnaHQoMSkpOworICAgIEVYUEVD
VF9FUShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIm5vIiksIHJlZmVyZW5jZS5yaWdodCgyKSk7Cisg
ICAgRVhQRUNUX0VRKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiaW5vIiksIHJlZmVyZW5jZS5yaWdo
dCgzKSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiY2lubyIpLCByZWZl
cmVuY2UucmlnaHQoNCkpOworICAgIEVYUEVDVF9FUShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoImNj
aW5vIiksIHJlZmVyZW5jZS5yaWdodCg1KSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1ZpZXdGcm9t
TGl0ZXJhbCgidWNjaW5vIiksIHJlZmVyZW5jZS5yaWdodCg2KSk7CisgICAgRVhQRUNUX0VRKHN0
cmluZ1ZpZXdGcm9tTGl0ZXJhbCgicHVjY2lubyIpLCByZWZlcmVuY2UucmlnaHQoNykpOworICAg
IEVYUEVDVF9FUShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoInBwdWNjaW5vIiksIHJlZmVyZW5jZS5y
aWdodCg4KSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiYXBwdWNjaW5v
IiksIHJlZmVyZW5jZS5yaWdodCg5KSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1ZpZXdGcm9tTGl0
ZXJhbCgiQ2FwcHVjY2lubyIpLCByZWZlcmVuY2UucmlnaHQoMTApKTsKIH0KIAogVEVTVChXVEYs
IFN0cmluZ1ZpZXdMZWZ0QmFzaWMpCiB7CiAgICAgYXV0byByZWZlcmVuY2UgPSBzdHJpbmdWaWV3
RnJvbUxpdGVyYWwoIkNhcHB1Y2Npbm8iKTsKLSAgICBFWFBFQ1RfVFJVRShyZWZlcmVuY2UubGVm
dCgwKSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIiIpKTsKLSAgICBFWFBFQ1RfVFJVRShyZWZl
cmVuY2UubGVmdCgxKSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkMiKSk7Ci0gICAgRVhQRUNU
X1RSVUUocmVmZXJlbmNlLmxlZnQoMikgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDYSIpKTsK
LSAgICBFWFBFQ1RfVFJVRShyZWZlcmVuY2UubGVmdCgzKSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVy
YWwoIkNhcCIpKTsKLSAgICBFWFBFQ1RfVFJVRShyZWZlcmVuY2UubGVmdCg0KSA9PSBzdHJpbmdW
aWV3RnJvbUxpdGVyYWwoIkNhcHAiKSk7Ci0gICAgRVhQRUNUX1RSVUUocmVmZXJlbmNlLmxlZnQo
NSkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDYXBwdSIpKTsKLSAgICBFWFBFQ1RfVFJVRShy
ZWZlcmVuY2UubGVmdCg2KSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNhcHB1YyIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShyZWZlcmVuY2UubGVmdCg3KSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwo
IkNhcHB1Y2MiKSk7Ci0gICAgRVhQRUNUX1RSVUUocmVmZXJlbmNlLmxlZnQoOCkgPT0gc3RyaW5n
Vmlld0Zyb21MaXRlcmFsKCJDYXBwdWNjaSIpKTsKLSAgICBFWFBFQ1RfVFJVRShyZWZlcmVuY2Uu
bGVmdCg5KSA9PSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNhcHB1Y2NpbiIpKTsKLSAgICBFWFBF
Q1RfVFJVRShyZWZlcmVuY2UubGVmdCgxMCkgPT0gc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDYXBw
dWNjaW5vIikpOworICAgIEVYUEVDVF9FUShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIiIpLCByZWZl
cmVuY2UubGVmdCgwKSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQyIp
LCByZWZlcmVuY2UubGVmdCgxKSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1ZpZXdGcm9tTGl0ZXJh
bCgiQ2EiKSwgcmVmZXJlbmNlLmxlZnQoMikpOworICAgIEVYUEVDVF9FUShzdHJpbmdWaWV3RnJv
bUxpdGVyYWwoIkNhcCIpLCByZWZlcmVuY2UubGVmdCgzKSk7CisgICAgRVhQRUNUX0VRKHN0cmlu
Z1ZpZXdGcm9tTGl0ZXJhbCgiQ2FwcCIpLCByZWZlcmVuY2UubGVmdCg0KSk7CisgICAgRVhQRUNU
X0VRKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQ2FwcHUiKSwgcmVmZXJlbmNlLmxlZnQoNSkpOwor
ICAgIEVYUEVDVF9FUShzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNhcHB1YyIpLCByZWZlcmVuY2Uu
bGVmdCg2KSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQ2FwcHVjYyIp
LCByZWZlcmVuY2UubGVmdCg3KSk7CisgICAgRVhQRUNUX0VRKHN0cmluZ1ZpZXdGcm9tTGl0ZXJh
bCgiQ2FwcHVjY2kiKSwgcmVmZXJlbmNlLmxlZnQoOCkpOworICAgIEVYUEVDVF9FUShzdHJpbmdW
aWV3RnJvbUxpdGVyYWwoIkNhcHB1Y2NpbiIpLCByZWZlcmVuY2UubGVmdCg5KSk7CisgICAgRVhQ
RUNUX0VRKHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiQ2FwcHVjY2lubyIpLCByZWZlcmVuY2UubGVm
dCgxMCkpOwogfQogCiBURVNUKFdURiwgU3RyaW5nVmlld1JldmVyc2VGaW5kQmFzaWMpCkBAIC05
MjUsNCArOTMzLDYzIEBAIFRFU1QoV1RGLCBTdHJpbmdWaWV3UmV2ZXJzZUZpbmRCYXNpYykKICAg
ICBFWFBFQ1RfRVEocmVmZXJlbmNlLnJldmVyc2VGaW5kKCdjJywgNCksIG5vdEZvdW5kKTsKIH0K
IAorVEVTVChXVEYsIFN0cmluZ1ZpZXdTdHJpcFdoaXRlU3BhY2UpCit7CisgICAgU3RyaW5nIHJl
ZmVyZW5jZTsKKyAgICBhdXRvIGNhcHB1Y2Npbm8gPSBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNh
cHB1Y2Npbm8iKTsKKworICAgIEVYUEVDVF9FUShTdHJpbmdWaWV3KCksIFN0cmluZ1ZpZXcoKS5z
dHJpcFdoaXRlU3BhY2UoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZ1ZpZXc6OmVtcHR5KCksIHN0
cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiIikuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgIEVYUEVDVF9F
UShTdHJpbmdWaWV3OjplbXB0eSgpLCBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIiAgICIpLnN0cmlw
V2hpdGVTcGFjZSgpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nVmlldzo6ZW1wdHkoKSwgc3RyaW5n
Vmlld0Zyb21MaXRlcmFsKCJcdFx0IFxyXG4gIikuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgIEVY
UEVDVF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNhcHB1Y2Npbm8iKS5z
dHJpcFdoaXRlU3BhY2UoKSk7CisgICAgRVhQRUNUX0VRKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdG
cm9tTGl0ZXJhbCgiICBDYXBwdWNjaW5vIikuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgIEVYUEVD
VF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNhcHB1Y2Npbm8gICIpLnN0
cmlwV2hpdGVTcGFjZSgpKTsKKyAgICBFWFBFQ1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zy
b21MaXRlcmFsKCIgIENhcHB1Y2Npbm8gICIpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICBFWFBF
Q1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJcdFx0Q2FwcHVjY2lubyIp
LnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICBFWFBFQ1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmll
d0Zyb21MaXRlcmFsKCJDYXBwdWNjaW5vXHRcdCIpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICBF
WFBFQ1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJcdFx0Q2FwcHVjY2lu
b1x0XHQiKS5zdHJpcFdoaXRlU3BhY2UoKSk7CisgICAgRVhQRUNUX0VRKGNhcHB1Y2Npbm8sIHN0
cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiICBcdCBDYXBwdWNjaW5vIFx0ICAiKS5zdHJpcFdoaXRlU3Bh
Y2UoKSk7CisgICAgRVhQRUNUX0VRKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgi
XHJDYXBwdWNjaW5vIikuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgIEVYUEVDVF9FUShjYXBwdWNj
aW5vLCBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIkNhcHB1Y2Npbm9cciIpLnN0cmlwV2hpdGVTcGFj
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJc
ckNhcHB1Y2Npbm9cciIpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICBFWFBFQ1RfRVEoY2FwcHVj
Y2lubywgc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJcbkNhcHB1Y2Npbm8iKS5zdHJpcFdoaXRlU3Bh
Y2UoKSk7CisgICAgRVhQRUNUX0VRKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgi
Q2FwcHVjY2lub1xuIikuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgIEVYUEVDVF9FUShjYXBwdWNj
aW5vLCBzdHJpbmdWaWV3RnJvbUxpdGVyYWwoIlxuQ2FwcHVjY2lub1xuIikuc3RyaXBXaGl0ZVNw
YWNlKCkpOworICAgIEVYUEVDVF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbUxpdGVyYWwo
Ilx2Q2FwcHVjY2lubyIpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICBFWFBFQ1RfRVEoY2FwcHVj
Y2lubywgc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDYXBwdWNjaW5vXHYiKS5zdHJpcFdoaXRlU3Bh
Y2UoKSk7CisgICAgRVhQRUNUX0VRKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgi
XHZDYXBwdWNjaW5vXHYiKS5zdHJpcFdoaXRlU3BhY2UoKSk7CisgICAgRVhQRUNUX0VRKGNhcHB1
Y2Npbm8sIHN0cmluZ1ZpZXdGcm9tTGl0ZXJhbCgiXGZDYXBwdWNjaW5vIikuc3RyaXBXaGl0ZVNw
YWNlKCkpOworICAgIEVYUEVDVF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbUxpdGVyYWwo
IkNhcHB1Y2Npbm9cZiIpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICBFWFBFQ1RfRVEoY2FwcHVj
Y2lubywgc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJcZkNhcHB1Y2Npbm9cZiIpLnN0cmlwV2hpdGVT
cGFjZSgpKTsKKyAgICBFWFBFQ1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21MaXRlcmFs
KCJcZiBcciBcbiBcdENhcHB1Y2Npbm9cblxuICAgICAiKS5zdHJpcFdoaXRlU3BhY2UoKSk7CisK
KyAgICAvLyBGcm9tIDxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9VQ0QvbGF0ZXN0L3Vj
ZC9Qcm9wTGlzdC50eHQ+CisgICAgRVhQRUNUX0VRKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdGcm9t
VVRGMTZMaXRlcmFsKHJlZmVyZW5jZSwgdSJcdTE2ODBDYXBwdWNjaW5vXHUxNjgwIikuc3RyaXBX
aGl0ZVNwYWNlKCkpOworICAgIEVYUEVDVF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbVVU
RjE2TGl0ZXJhbChyZWZlcmVuY2UsIHUiXHUyMDAwQ2FwcHVjY2lub1x1MjAwMCIpLnN0cmlwV2hp
dGVTcGFjZSgpKTsKKyAgICBFWFBFQ1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21VVEYx
NkxpdGVyYWwocmVmZXJlbmNlLCB1Ilx1MjAwMUNhcHB1Y2Npbm9cdTIwMDEiKS5zdHJpcFdoaXRl
U3BhY2UoKSk7CisgICAgRVhQRUNUX0VRKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdGcm9tVVRGMTZM
aXRlcmFsKHJlZmVyZW5jZSwgdSJcdTIwMDJDYXBwdWNjaW5vXHUyMDAyIikuc3RyaXBXaGl0ZVNw
YWNlKCkpOworICAgIEVYUEVDVF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbVVURjE2TGl0
ZXJhbChyZWZlcmVuY2UsIHUiXHUyMDAzQ2FwcHVjY2lub1x1MjAwMyIpLnN0cmlwV2hpdGVTcGFj
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21VVEYxNkxpdGVy
YWwocmVmZXJlbmNlLCB1Ilx1MjAwNENhcHB1Y2Npbm9cdTIwMDQiKS5zdHJpcFdoaXRlU3BhY2Uo
KSk7CisgICAgRVhQRUNUX0VRKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdGcm9tVVRGMTZMaXRlcmFs
KHJlZmVyZW5jZSwgdSJcdTIwMDVDYXBwdWNjaW5vXHUyMDA1Iikuc3RyaXBXaGl0ZVNwYWNlKCkp
OworICAgIEVYUEVDVF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbVVURjE2TGl0ZXJhbChy
ZWZlcmVuY2UsIHUiXHUyMDA2Q2FwcHVjY2lub1x1MjAwNiIpLnN0cmlwV2hpdGVTcGFjZSgpKTsK
KyAgICBFWFBFQ1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21VVEYxNkxpdGVyYWwocmVm
ZXJlbmNlLCB1Ilx1MjAwN0NhcHB1Y2Npbm9cdTIwMDciKS5zdHJpcFdoaXRlU3BhY2UoKSk7Cisg
ICAgRVhQRUNUX0VRKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdGcm9tVVRGMTZMaXRlcmFsKHJlZmVy
ZW5jZSwgdSJcdTIwMDhDYXBwdWNjaW5vXHUyMDA4Iikuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAg
IEVYUEVDVF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbVVURjE2TGl0ZXJhbChyZWZlcmVu
Y2UsIHUiXHUyMDA5Q2FwcHVjY2lub1x1MjAwOSIpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICBF
WFBFQ1RfRVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21VVEYxNkxpdGVyYWwocmVmZXJlbmNl
LCB1Ilx1MjAwQUNhcHB1Y2Npbm9cdTIwMEEiKS5zdHJpcFdoaXRlU3BhY2UoKSk7CisgICAgRVhQ
RUNUX0VRKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdGcm9tVVRGMTZMaXRlcmFsKHJlZmVyZW5jZSwg
dSJcdTIwMjhDYXBwdWNjaW5vXHUyMDI4Iikuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgIEVYUEVD
VF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbVVURjE2TGl0ZXJhbChyZWZlcmVuY2UsIHUi
XHUyMDVGQ2FwcHVjY2lub1x1MjA1RiIpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21VVEYxNkxpdGVyYWwocmVmZXJlbmNlLCB1Ilx1
MzAwMENhcHB1Y2Npbm9cdTMwMDAiKS5zdHJpcFdoaXRlU3BhY2UoKSk7CisKKyAgICAvLyBGSVhN
RTogRm9yIHNvbWUgcmVhc29uIElDVSB1X2NoYXJEaXJlY3Rpb24oYykgIT0gVV9XSElURV9TUEFD
RV9ORVVUUkFMIGZvciB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4KKyAgICAvLyB0aGUgZm9sbG93
aW5nIHN0cmluZ3MuCisgICAgRVhQRUNUX05FKGNhcHB1Y2Npbm8sIHN0cmluZ1ZpZXdGcm9tVVRG
MTZMaXRlcmFsKHJlZmVyZW5jZSwgdSJcdTAwQTBDYXBwdWNjaW5vXHUwMEEwIikuc3RyaXBXaGl0
ZVNwYWNlKCkpOworICAgIEVYUEVDVF9ORShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJvbVVURjE2
TGl0ZXJhbChyZWZlcmVuY2UsIHUiXHUyMDJGQ2FwcHVjY2lub1x1MjAyRiIpLnN0cmlwV2hpdGVT
cGFjZSgpKTsKKyAgICBFWFBFQ1RfTkUoY2FwcHVjY2lubywgc3RyaW5nVmlld0Zyb21VVEYxNkxp
dGVyYWwocmVmZXJlbmNlLCB1Ilx1MjAyOUNhcHB1Y2Npbm9cdTIwMjkiKS5zdHJpcFdoaXRlU3Bh
Y2UoKSk7CisKKyAgICBFWFBFQ1RfRVEoc3RyaW5nVmlld0Zyb21MaXRlcmFsKCJDYXBwdWMgICAg
IGNpbm8iKSwgc3RyaW5nVmlld0Zyb21MaXRlcmFsKCIgIENhcHB1YyAgICAgY2lubyIpLnN0cmlw
V2hpdGVTcGFjZSgpKTsKKworICAgIEVYUEVDVF9FUShjYXBwdWNjaW5vLCBzdHJpbmdWaWV3RnJv
bVVURjE2TGl0ZXJhbChyZWZlcmVuY2UsIHUiXHUyMDA5ICAgXHUyMDAxXHRDYXBwdWNjaW5vXHUy
MDA5ICAgICIpLnN0cmlwV2hpdGVTcGFjZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9XVEZTdHJpbmdVdGlsaXRp
ZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmgKaW5kZXggZWNi
YTljNGIyNzkxNzI1ODE2MTljNmZiZWFiNTNjMTgxYTIyMmNkYy4uYjM0MGUwZmQ3ZjZkZmJiY2Jm
ZDFmMDkxZjA0NmRhNDk3MzA1YzMyNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9X
VEZTdHJpbmdVdGlsaXRpZXMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0
aWxpdGllcy5oCkBAIC00Miw2ICs0MiwxNiBAQCBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRv
cjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBv
cyA8PCBzdHJpbmcudXRmOCgpLmRhdGEoKTsKIH0KIAoraW5saW5lIHN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKK3sK
KyAgICByZXR1cm4gb3MgPDwgc3RyaW5nLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7Cit9CisKK2lu
bGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgU3RyaW5nVmll
dyBzdHJpbmcpCit7CisgICAgcmV0dXJuIG9zIDw8IHN0cmluZy51dGY4KCkuZGF0YSgpOworfQor
CiB9CiAKIHRlbXBsYXRlPHNpemVfdCBsZW5ndGg+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>