<?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>95294</bug_id>
          
          <creation_ts>2012-08-28 23:41:28 -0700</creation_ts>
          <short_desc>Deploy emptyString() in dom, css, and editing</short_desc>
          <delta_ts>2012-09-12 16:40:43 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>benjamin</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>707137</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 23:41:28 -0700</bug_when>
    <thetext>Deploy emptyString() in dom, css, and editing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707139</commentid>
    <comment_count>1</comment_count>
      <attachid>161147</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 23:43:13 -0700</bug_when>
    <thetext>Created attachment 161147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707165</commentid>
    <comment_count>2</comment_count>
      <attachid>161147</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-29 00:14:22 -0700</bug_when>
    <thetext>Comment on attachment 161147
Patch

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

Adam, do you mind keeping this one on hold of a day of two? I would like to make sure we are doing the best thing for emptyString().

&gt; Source/WebCore/ChangeLog:9
&gt; +        emptyString() is more efficient than String(&quot;&quot;) because it saves calls
&gt; +        to malloc. There are tons of uses of String(&quot;&quot;) in WebCore. This patch

We actually have early return in StringImpl to make sure we do not allocate anything in those cases.

Something to check is whether or not emptyString() generate less instructions than String(&quot;&quot;). 
String(&quot;&quot;) is likely around 64bits for the pointer + 1 function call.
emptyString() is one function call + the inline ref.

It is possible emptyString() is less compact than String(&quot;&quot;). In which case we should consider having an &quot;empty string constructor&quot;.

&gt; Source/WebCore/editing/HTMLInterchange.cpp:40
&gt; +    DEFINE_STATIC_LOCAL(String, convertedSpaceString, (String(ASCIILiteral(&quot;&lt;span class=\&quot;&quot; AppleConvertedSpace &quot;\&quot;&gt;&quot;)) + noBreakSpace + &quot;&lt;/span&gt;&quot;));

Do you need?
String(ASCIILiteral(&quot;&lt;span class=\&quot;&quot; AppleConvertedSpace &quot;\&quot;&gt;&quot;))?

If
    &quot;&lt;span class=\&quot;&quot; AppleConvertedSpace &quot;\&quot;&gt;&quot; + noBreakSpace + &quot;&lt;/span&gt;&quot;
does not work, that may be a bug in StringOperators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707169</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 00:18:21 -0700</bug_when>
    <thetext>&gt; Adam, do you mind keeping this one on hold of a day of two? I would like to make sure we are doing the best thing for emptyString().

Sure.  I&apos;m in no rush.  Do you want me to split out the non-emptyString parts into a separate patch?

&gt; Do you need?
&gt; String(ASCIILiteral(&quot;&lt;span class=\&quot;&quot; AppleConvertedSpace &quot;\&quot;&gt;&quot;))?

Yes.  It&apos;s needed to make the type system happy.

&gt; If
&gt;     &quot;&lt;span class=\&quot;&quot; AppleConvertedSpace &quot;\&quot;&gt;&quot; + noBreakSpace + &quot;&lt;/span&gt;&quot;
&gt; does not work, that may be a bug in StringOperators.

I didn&apos;t look up the type of noBreakSpace, but StringOperations didn&apos;t like it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707175</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-08-29 00:30:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Adam, do you mind keeping this one on hold of a day of two? I would like to make sure we are doing the best thing for emptyString().
&gt; 
&gt; Sure.  I&apos;m in no rush.  Do you want me to split out the non-emptyString parts into a separate patch?

Splitting is a good idea, the other parts are pretty straightforward.

&gt; &gt; Do you need?
&gt; &gt; String(ASCIILiteral(&quot;&lt;span class=\&quot;&quot; AppleConvertedSpace &quot;\&quot;&gt;&quot;))?
&gt; 
&gt; Yes.  It&apos;s needed to make the type system happy.
&gt; 
&gt; &gt; If
&gt; &gt;     &quot;&lt;span class=\&quot;&quot; AppleConvertedSpace &quot;\&quot;&gt;&quot; + noBreakSpace + &quot;&lt;/span&gt;&quot;
&gt; &gt; does not work, that may be a bug in StringOperators.
&gt; 
&gt; I didn&apos;t look up the type of noBreakSpace, but StringOperations didn&apos;t like it.

Your change is already an improvement over the existing code. Let&apos;s keep it.

I opened https://bugs.webkit.org/show_bug.cgi?id=95301 for myself to check why operator+ does not mach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707189</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 00:45:33 -0700</bug_when>
    <thetext>The obvious stuff is happening in https://bugs.webkit.org/show_bug.cgi?id=95304</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161147</attachid>
            <date>2012-08-28 23:43:13 -0700</date>
            <delta_ts>2012-08-29 00:14:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95294-20120828234304.patch</filename>
            <type>text/plain</type>
            <size>29404</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjIxNDYzMTNjZTBiYTYx
ZjdjYWM5OTRkYmI1NjkyYzBjNzJiNGY0OS4uOWZiNzRlMDI5NGU5NGQ1MWEzYzAwZTc5MTM0ZDUw
MjAzYTc1MDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcyIEBACiAyMDEyLTA4LTI4ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgRGVwbG95IGVtcHR5U3RyaW5n
KCkgaW4gZG9tLCBjc3MsIGFuZCBlZGl0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGVtcHR5U3RyaW5nKCkgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBT
dHJpbmcoIiIpIGJlY2F1c2UgaXQgc2F2ZXMgY2FsbHMKKyAgICAgICAgdG8gbWFsbG9jLiBUaGVy
ZSBhcmUgdG9ucyBvZiB1c2VzIG9mIFN0cmluZygiIikgaW4gV2ViQ29yZS4gVGhpcyBwYXRjaAor
ICAgICAgICBkZXBsb3lzIGVtcHR5U3RyaW5nKCkgdG8gdGhlIGRvbSwgY3NzLCBhbmQgZWRpdGlu
ZyBkaXJlY3Rvcmllcy4KKworICAgICAgICBBbG9uZyB0aGUgd2F5LCBJJ3ZlIGFsc28gZml4ZWQg
dXAgYSBmZXcgb3RoZXIgaW5lZmZpY2llbnQgc3RyaW5nIHBhdHRlcm5zLgorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlQcmlvcml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5U2hvcnRoYW5kKToKKyAgICAgICAgKiBjc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlOjpjdXN0b21Dc3NUZXh0
KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3Rl
Q1NTU3RyaW5nKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5U291cmNlRGF0YTo6Q1NTUHJvcGVydHlTb3VyY2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5U291cmNlRGF0YTo6dG9TdHJpbmcp
OgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeVNldDo6bWVkaWFUZXh0KToKKyAgICAgICAgKiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246OmdldFByb3BlcnR5UHJpb3JpdHkpOgorICAgICAgICAqIGNzcy9TaGFkb3dWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCk6Cisg
ICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yTGlzdCk6CisgICAgICAgICogZG9tL01pY3JvRGF0YUl0ZW1MaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1pY3JvRGF0YUl0ZW1MaXN0Ojp1bmRlZmluZWRJdGVtVHlwZSk6Cisg
ICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd05vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd1RyZWVGb3JUaGlzQWNyb3NzRnJhbWUpOgor
ICAgICAgICAqIGRvbS9UZXh0RXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50
OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKToKKyAgICAgICAgKiBlZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6bWFya2VyRGVzY3JpcHRpb25Gb3JBcHBsaWVkQWx0ZXJuYXRpdmVUZXh0KToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFs
dWVGb3JtYXRCbG9jayk6CisgICAgICAgICogZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydGVkU3BhY2VTdHJpbmcpOgorICAgICAgICAqIGVkaXRp
bmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0VGV4dENv
bW1hbmQ6OnBvc2l0aW9uSW5zaWRlVGV4dE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKToKKyAgICAgICAgKiBlZGl0aW5n
L1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGFpblRleHQpOgorICAgICAg
ICAqIGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdD
b21tYW5kOjpkZWxldGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6ZGVsZXRlS2V5UHJlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpm
b3J3YXJkRGVsZXRlS2V5UHJlc3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5k
OjppbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6aW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1R5cGluZ0NvbW1hbmQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmNyZWF0ZSk6CisgICAgICAgICog
ZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToKKwor
MjAxMi0wOC0yOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIERl
cGxveSBBU0NJSUxpdGVyYWwgYW5kIFN0cmluZ0J1aWxkZXIgaW4gbW9yZSBwbGFjZXMgaW4gV2Vi
Q29yZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUy
OTEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCAwNzA4YzIzYmFiOGQ1MGE4YmU5MWRhMTMzZDg0NzMzODhjODI3ZWI4Li5i
MjQ0ZGQxYTIwMjhhNjgwMjMxNjRkZWI4NmNhMmJjNDVkMTNhZTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjYxMyw3
ICsyNjEzLDcgQEAgU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIGMKICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKICAgICBpZiAodmFsdWUp
CiAgICAgICAgIHJldHVybiB2YWx1ZS0+Y3NzVGV4dCgpOwotICAgIHJldHVybiAiIjsKKyAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogCkBAIC0yNjMzLDcgKzI2MzMsNyBAQCB1bnNpZ25l
ZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omxlbmd0aCgpIGNvbnN0CiBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKHVuc2lnbmVkIGkpIGNvbnN0CiB7CiAgICAg
aWYgKGkgPj0gbGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKGNvbXB1dGVk
UHJvcGVydGllc1tpXSk7CiB9CkBAIC0yNzQ1LDEyICsyNzQ1LDEyIEBAIFN0cmluZyBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nICZwcm9w
ZXJ0eU5hbWUpCiBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0
eVByaW9yaXR5KGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gQWxsIGNvbXB1dGVkIHN0eWxlcyBo
YXZlIGEgcHJpb3JpdHkgb2Ygbm90ICJpbXBvcnRhbnQiLgotICAgIHJldHVybiAiIjsKKyAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4g
IiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGJvb2wgQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjppc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcAppbmRleCA4NWYzODVkNzFl
MTQzYWFiNGU4Njk5N2UzMGY5ZThiOWIwZGY5ODlmLi5mOWUzZGI1MGNiMGI5OTI3YTlmOGZiYjQ5
OGRlNDNmM2RkMmNlYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJv
eENvbnRhaW5WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250
YWluVmFsdWUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKICNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwzNyArNDEsMzcgQEAgQ1NTTGluZUJveENvbnRhaW5W
YWx1ZTo6Q1NTTGluZUJveENvbnRhaW5WYWx1ZSh1bnNpZ25lZCB2YWx1ZSkKIAogU3RyaW5nIENT
U0xpbmVCb3hDb250YWluVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogewotICAgIFN0cmlu
ZyB0ZXh0KCIiKTsKKyAgICBTdHJpbmdCdWlsZGVyIHRleHQ7CiAKICAgICBpZiAobV92YWx1ZSAm
IExpbmVCb3hDb250YWluQmxvY2spCi0gICAgICAgIHRleHQgKz0gImJsb2NrIjsKKyAgICAgICAg
dGV4dC5hcHBlbmRMaXRlcmFsKCJibG9jayIpOwogICAgIGlmIChtX3ZhbHVlICYgTGluZUJveENv
bnRhaW5JbmxpbmUpIHsKICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHRleHQgKz0gIiAiOwotICAgICAgICB0ZXh0ICs9ICJpbmxpbmUiOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgdGV4dC5hcHBlbmRMaXRlcmFsKCJpbmxpbmUiKTsKICAg
ICB9CiAgICAgaWYgKG1fdmFsdWUgJiBMaW5lQm94Q29udGFpbkZvbnQpIHsKICAgICAgICAgaWYg
KCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRleHQgKz0gIiAiOwotICAgICAgICB0ZXh0
ICs9ICJmb250IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgIHRleHQu
YXBwZW5kTGl0ZXJhbCgiZm9udCIpOwogICAgIH0KICAgICBpZiAobV92YWx1ZSAmIExpbmVCb3hD
b250YWluR2x5cGhzKSB7CiAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgdGV4dCArPSAiZ2x5cGhzIjsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCcgJyk7CisgICAgICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiZ2x5cGhzIik7CiAg
ICAgfQogICAgIGlmIChtX3ZhbHVlICYgTGluZUJveENvbnRhaW5SZXBsYWNlZCkgewogICAgICAg
ICBpZiAoIXRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGV4dCArPSAiICI7Ci0gICAgICAg
IHRleHQgKz0gInJlcGxhY2VkIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAg
ICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgicmVwbGFjZWQiKTsKICAgICB9CiAgICAgaWYgKG1fdmFs
dWUgJiBMaW5lQm94Q29udGFpbklubGluZUJveCkgewogICAgICAgICBpZiAoIXRleHQuaXNFbXB0
eSgpKQotICAgICAgICAgICAgdGV4dCArPSAiICI7Ci0gICAgICAgIHRleHQgKz0gImlubGluZS1i
b3giOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgdGV4dC5hcHBlbmRM
aXRlcmFsKCJpbmxpbmUtYm94Iik7CiAgICAgfQogCi0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0
dXJuIHRleHQudG9TdHJpbmcoKTsKIH0KIAogdm9pZCBDU1NMaW5lQm94Q29udGFpblZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOGNhMDM0YWZkMTBiNTBm
YzJkZTI4M2FjNDg5ZWM1ZTY3ZDM3ZDhmMC4uOTM5NzRjNDU5MmViMjlhNGI3MzRjNWNkMjRmZWM4
NDg3NTI3OTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTEwMjc0LDcgKzEwMjc0
LDcgQEAgU3RyaW5nIHF1b3RlQ1NTU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIC8v
IFRoaXMgZnVuY3Rpb24gZXhwYW5kcyBlYWNoIGNoYXJhY3RlciB0byBhdCBtb3N0IDMgY2hhcmFj
dGVycyAoJ1x1MDAxMCcgLT4gJ1wnICcxJyAnMCcpIGFzIHdlbGwgYXMgYWRkcwogICAgIC8vIDIg
cXVvdGUgY2hhcmFjdGVycyAoYmVmb3JlIGFuZCBhZnRlcikuIE1ha2Ugc3VyZSB0aGUgcmVzdWx0
aW5nIHNpemUgKDMgKiBsZW5ndGggKyAyKSB3aWxsIG5vdCBvdmVyZmxvdyB1bnNpZ25lZC4KICAg
ICBpZiAoc3RyaW5nLmxlbmd0aCgpID49IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkgLyAzKSAtIDIpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAKICAgICAvLyBGb3IgZWZmaWNpZW5jeSwgd2UgZmlyc3QgcHJlLWNhbGN1bGF0
ZSB0aGUgbGVuZ3RoIG9mIHRoZSBxdW90ZWQgc3RyaW5nLCB0aGVuIHdlIGJ1aWxkIHRoZSBhY3R1
YWwgb25lLgogICAgIC8vIFBsZWFzZSBzZWUgYmVsb3cgZm9yIHRoZSBhY3R1YWwgbG9naWMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwCmluZGV4IDk2ZmEx
MjFjODk1NjYyNWMzMDg3NjllMjc0NTQ5NjA1ZjQ4MTJiOWQuLmNkZjI3ODVjODQxMDQ2MTUyOWYy
NTk1NjYwNDM0NmVmZjQ3NTZiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eVNvdXJjZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eVNvdXJjZURhdGEuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9TdGF0aWNDb25zdHJ1Y3RvcnMuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OCw4ICs3OSw4IEBAIENTU1Byb3BlcnR5U291
cmNlRGF0YTo6Q1NTUHJvcGVydHlTb3VyY2VEYXRhKGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0
YSYgb3RoZXIpCiB9CiAKIENTU1Byb3BlcnR5U291cmNlRGF0YTo6Q1NTUHJvcGVydHlTb3VyY2VE
YXRhKCkKLSAgICA6IG5hbWUoIiIpCi0gICAgLCB2YWx1ZSgiIikKKyAgICA6IG5hbWUoZW1wdHlT
dHJpbmcoKSkKKyAgICAsIHZhbHVlKGVtcHR5U3RyaW5nKCkpCiAgICAgLCBpbXBvcnRhbnQoZmFs
c2UpCiAgICAgLCBwYXJzZWRPayhmYWxzZSkKICAgICAsIHJhbmdlKFNvdXJjZVJhbmdlKDAsIDAp
KQpAQCAtOTMsMTMgKzk0LDE0IEBAIFN0cmluZyBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OnRvU3Ry
aW5nKCkgY29uc3QKICAgICBpZiAoIW5hbWUgJiYgdmFsdWUgPT0gZW1wdHlWYWx1ZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgU3RyaW5nIHJlc3VsdCA9IG5hbWU7Ci0gICAgcmVz
dWx0ICs9ICI6ICI7Ci0gICAgcmVzdWx0ICs9IHZhbHVlOworICAgIFN0cmluZ0J1aWxkZXIgcmVz
dWx0OworICAgIHJlc3VsdC5hcHBlbmQobmFtZSk7CisgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IjogIik7CisgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZSk7CiAgICAgaWYgKGltcG9ydGFudCkKLSAg
ICAgICAgcmVzdWx0ICs9IGltcG9ydGFudFN1ZmZpeDsKLSAgICByZXN1bHQgKz0gIjsiOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoaW1wb3J0YW50U3VmZml4KTsK
KyAgICByZXN1bHQuYXBwZW5kKCc7Jyk7CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwog
fQogCiB1bnNpZ25lZCBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6Omhhc2goKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmNwcAppbmRleCA1YmE3MzQxZWI1MDkxOTRhOTJmNDM2ZjRiNjIxMWYzNGNj
N2MyNjBjLi42N2E2ZDVlMmZlZDY2ZDQyM2RjZTIyMjZjOTU5NTA2ZDI0ZTRiZGY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk1lZGlhUXVl
cnkuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhwLmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5OCwxNyArMTk5LDE3IEBAIHZvaWQgTWVkaWFRdWVyeVNl
dDo6YWRkTWVkaWFRdWVyeShQYXNzT3duUHRyPE1lZGlhUXVlcnk+IG1lZGlhUXVlcnkpCiAKIFN0
cmluZyBNZWRpYVF1ZXJ5U2V0OjptZWRpYVRleHQoKSBjb25zdAogewotICAgIFN0cmluZyB0ZXh0
KCIiKTsKKyAgICBTdHJpbmdCdWlsZGVyIHRleHQ7CiAgICAgCiAgICAgYm9vbCBmaXJzdCA9IHRy
dWU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3F1ZXJpZXMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgaWYgKCFmaXJzdCkKLSAgICAgICAgICAgIHRleHQgKz0gIiwgIjsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Zmlyc3QgPSBmYWxzZTsKLSAgICAgICAgdGV4dCArPSBtX3F1ZXJpZXNbaV0tPmNzc1RleHQoKTsK
KyAgICAgICAgdGV4dC5hcHBlbmQobV9xdWVyaWVzW2ldLT5jc3NUZXh0KCkpOwogICAgIH0KLSAg
ICByZXR1cm4gdGV4dDsKKyAgICByZXR1cm4gdGV4dC50b1N0cmluZygpOwogfQogCiB2b2lkIE1l
ZGlhUXVlcnlTZXQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDVmYzJkMzgwMzU1YTkzOGVhMGVlZDdkM2U0
NDAxODZlNGI5MTdiNzguLmYxZGFmMWU1ZGVjMDhiYTUyNGFjN2ZjYWU1MWE3NGI4YWYxN2ZiYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdW5zaWduZWQgUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOjpsZW5ndGgoKSBjb25zdAogU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6aXRlbSh1bnNpZ25lZCBpKSBjb25zdAogewogICAgIGlmIChpID49IG1f
cHJvcGVydHlTZXQtPnByb3BlcnR5Q291bnQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+cHJvcGVy
dHlBdChpKS5jc3NOYW1lKCk7CiB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBTdHJpbmcgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmlu
ZyYgcHJvcGVydAogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQo
cHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLSAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+cHJvcGVydHlJc0ltcG9ydGFudChwcm9w
ZXJ0eUlEKSA/ICJpbXBvcnRhbnQiIDogIiI7CisgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPnBy
b3BlcnR5SXNJbXBvcnRhbnQocHJvcGVydHlJRCkgPyBBU0NJSUxpdGVyYWwoImltcG9ydGFudCIp
IDogZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcAppbmRleCA1ZGIwMDM2NTFkODMyNTRkMzE0ZWIyZmE2
ODJjNjQ4NWEyMGU5ZDc0Li4zMTFlOWIxOTEzMGI3MzQwNDk0YTJhNzdkNGUxMjExZDZhOTdiMmRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDM3ICs0NiwzNyBA
QCBTaGFkb3dWYWx1ZTo6U2hhZG93VmFsdWUoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
X3gsCiAKIFN0cmluZyBTaGFkb3dWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAg
U3RyaW5nIHRleHQoIiIpOworICAgIFN0cmluZ0J1aWxkZXIgdGV4dDsKIAogICAgIGlmIChjb2xv
cikKLSAgICAgICAgdGV4dCArPSBjb2xvci0+Y3NzVGV4dCgpOworICAgICAgICB0ZXh0LmFwcGVu
ZChjb2xvci0+Y3NzVGV4dCgpKTsKICAgICBpZiAoeCkgewogICAgICAgICBpZiAoIXRleHQuaXNF
bXB0eSgpKQotICAgICAgICAgICAgdGV4dCArPSAiICI7Ci0gICAgICAgIHRleHQgKz0geC0+Y3Nz
VGV4dCgpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgdGV4dC5hcHBl
bmQoeC0+Y3NzVGV4dCgpKTsKICAgICB9CiAgICAgaWYgKHkpIHsKICAgICAgICAgaWYgKCF0ZXh0
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRleHQgKz0gIiAiOwotICAgICAgICB0ZXh0ICs9IHkt
PmNzc1RleHQoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgIHRleHQu
YXBwZW5kKHktPmNzc1RleHQoKSk7CiAgICAgfQogICAgIGlmIChibHVyKSB7CiAgICAgICAgIGlm
ICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgdGV4
dCArPSBibHVyLT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAg
ICAgICB0ZXh0LmFwcGVuZChibHVyLT5jc3NUZXh0KCkpOwogICAgIH0KICAgICBpZiAoc3ByZWFk
KSB7CiAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0ZXh0ICs9ICIg
IjsKLSAgICAgICAgdGV4dCArPSBzcHJlYWQtPmNzc1RleHQoKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCcgJyk7CisgICAgICAgIHRleHQuYXBwZW5kKHNwcmVhZC0+Y3NzVGV4dCgpKTsKICAg
ICB9CiAgICAgaWYgKHN0eWxlKSB7CiAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgdGV4dCArPSBzdHlsZS0+Y3NzVGV4dCgpOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgdGV4dC5hcHBlbmQoc3R5bGUt
PmNzc1RleHQoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIHRleHQu
dG9TdHJpbmcoKTsKIH0KIAogdm9pZCBTaGFkb3dWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggMTk2ODliOTEzM2I3MTcyMjE5YTVm
M2UyZWRhOTRmMWVlODM0YmI5Yy4uZGI2ZjgzYTYwOWZhZDkwNmM0ZTZkNWQ3ZDVmMmE4YjUxM2Qz
NDQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtNTAwLDE0
ICs1MDAsMTQgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGUKICAgICBpZiAocmVtb3ZlU2hvcnRo
YW5kUHJvcGVydHkocHJvcGVydHlJRCkpIHsKICAgICAgICAgLy8gRklYTUU6IFJldHVybiBhbiBl
cXVpdmFsZW50IHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLgogICAgICAgICBpZiAocmV0dXJuVGV4
dCkKLSAgICAgICAgICAgICpyZXR1cm5UZXh0ID0gIiI7CisgICAgICAgICAgICAqcmV0dXJuVGV4
dCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIENT
U1Byb3BlcnR5KiBmb3VuZFByb3BlcnR5ID0gZmluZFByb3BlcnR5V2l0aElkKHByb3BlcnR5SUQp
OwogICAgIGlmICghZm91bmRQcm9wZXJ0eSkgewogICAgICAgICBpZiAocmV0dXJuVGV4dCkKLSAg
ICAgICAgICAgICpyZXR1cm5UZXh0ID0gIiI7CisgICAgICAgICAgICAqcmV0dXJuVGV4dCA9IGVt
cHR5U3RyaW5nKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAxNWRlM2E3OThjMDUxNDU2NjQ5NTY4NjM0NTIyY2Uy
YjE3ZTA0Yzg3Li5lMDc5NzhhYTRjNDQwMmRhODQ3MDJlZTVmMWUyN2NkY2ZlY2U1ODFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zMTQ0LDcgKzMxNDQsNyBAQCBib29s
IFN0eWxlUmVzb2x2ZXI6OmlzRmlyc3RQYWdlKGludCBwYWdlSW5kZXgpIGNvbnN0CiBTdHJpbmcg
U3R5bGVSZXNvbHZlcjo6cGFnZU5hbWUoaW50IC8qIHBhZ2VJbmRleCAqLykgY29uc3QKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHBhZ2UgaW5kZXggdG8gcGFnZSBuYW1lIG1hcHBpbmcuCi0g
ICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgTGlzdFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm9EYXRh
SXRlbUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvRGF0YUl0ZW1MaXN0LmNwcApp
bmRleCA1MzRjMGQwYjQzZjExYTNkZTg3ZWY0Njk4MjVhNGYzN2M5YmRlYTc1Li45MWFiOTgyNjdh
M2M2MWI3YWEyMzdmNTY4Y2JmY2M1NzE0OWUzN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWljcm9EYXRhSXRlbUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNy
b0RhdGFJdGVtTGlzdC5jcHAKQEAgLTQwLDkgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogY29uc3QgU3RyaW5nJiBNaWNyb0RhdGFJdGVtTGlzdDo6dW5kZWZpbmVkSXRlbVR5
cGUoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB1bmRlZmluZWRJdGVtVHlw
ZVN0cmluZywgKCIiKSk7Ci0gICAgLy8gRklYTUU6IFdoeSBub3QganVzdCByZXR1cm4gZW1wdHlT
dHJpbmcoKTsgPwotICAgIHJldHVybiB1bmRlZmluZWRJdGVtVHlwZVN0cmluZzsKKyAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogTWljcm9EYXRhSXRlbUxpc3Q6Ok1pY3JvRGF0YUl0ZW1M
aXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IFN0cmluZyYgdHlwZU5hbWVzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCmluZGV4IGEyYzlhMWRjMmJmYTY3YzdlYTkzMGQ5N2I2YWM5ZDcxNGNiMDA4
OWIuLjM0ZGNlZGE5OTBmMGE3YjYyOWM4NDI5YzYyZWM1NGMzNzhhMjkyNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKQEAgLTIxMDUsMTQgKzIxMDUsMTQgQEAgc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRl
RGVzYyhjb25zdCBOb2RlKiBub2RlLCBTdHJpbmcmIHN0cmluZywgY29uc3QgUXVhbGlmaWUKIHZv
aWQgTm9kZTo6c2hvd05vZGUoY29uc3QgY2hhciogcHJlZml4KSBjb25zdAogewogICAgIGlmICgh
cHJlZml4KQotICAgICAgICBwcmVmaXggPSAiIjsKKyAgICAgICAgcHJlZml4ID0gZW1wdHlTdHJp
bmcoKTsKICAgICBpZiAoaXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG5v
ZGVWYWx1ZSgpOwogICAgICAgICB2YWx1ZS5yZXBsYWNlKCdcXCcsICJcXFxcIik7CiAgICAgICAg
IHZhbHVlLnJlcGxhY2UoJ1xuJywgIlxcbiIpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz
JXNcdCVwIFwiJXNcIlxuIiwgcHJlZml4LCBub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIHRoaXMs
IHZhbHVlLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBhdHRy
cyA9ICIiOworICAgICAgICBTdHJpbmcgYXR0cnMgPSBlbXB0eVN0cmluZygpOwogICAgICAgICBh
cHBlbmRBdHRyaWJ1dGVEZXNjKHRoaXMsIGF0dHJzLCBjbGFzc0F0dHIsICIgQ0xBU1M9Iik7CiAg
ICAgICAgIGFwcGVuZEF0dHJpYnV0ZURlc2ModGhpcywgYXR0cnMsIHN0eWxlQXR0ciwgIiBTVFlM
RT0iKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyVzXHQlcCVzXG4iLCBwcmVmaXgsIG5v
ZGVOYW1lKCkudXRmOCgpLmRhdGEoKSwgdGhpcywgYXR0cnMudXRmOCgpLmRhdGEoKSk7CkBAIC0y
MjU0LDcgKzIyNTQsNyBAQCB2b2lkIE5vZGU6OnNob3dUcmVlRm9yVGhpc0Fjcm9zc0ZyYW1lKCkg
Y29uc3QKICAgICBOb2RlKiByb290Tm9kZSA9IGNvbnN0X2Nhc3Q8Tm9kZSo+KHRoaXMpOwogICAg
IHdoaWxlIChwYXJlbnRPckhvc3RPckZyYW1lT3duZXIocm9vdE5vZGUpKQogICAgICAgICByb290
Tm9kZSA9IHBhcmVudE9ySG9zdE9yRnJhbWVPd25lcihyb290Tm9kZSk7Ci0gICAgc2hvd1N1YlRy
ZWVBY3Jvc3NGcmFtZShyb290Tm9kZSwgdGhpcywgIiIpOworICAgIHNob3dTdWJUcmVlQWNyb3Nz
RnJhbWUocm9vdE5vZGUsIHRoaXMsIGVtcHR5U3RyaW5nKCkpOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHRFdmVudC5jcHAKaW5kZXggZDhlYTczODkxYzdhZmQxM2VjODNlNjAzZWY5NTc3YWI1
MDJjN2VmMC4uNzliMTgwYWE1YmQzOTA1MGIwNDBhZjJkZmJjYzk1MjM0MDZmZmYxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHRFdmVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUGFzc1JlZlB0cjxUZXh0RXZl
bnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUGFzc1JlZlB0cjxBYnN0cmFj
dFZpZXcKIAogUGFzc1JlZlB0cjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21l
bnRQYXN0ZShQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRj
aFN0eWxlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dEV2ZW50KHZpZXcsICIiLCBk
YXRhLCBzaG91bGRTbWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFRleHRFdmVudCh2aWV3LCBlbXB0eVN0cmluZygpLCBkYXRhLCBzaG91bGRT
bWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUpKTsKIH0KIAogUGFzc1JlZlB0cjxUZXh0RXZl
bnQ+IFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmll
dywgY29uc3QgU3RyaW5nJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggNWRjZmJkMzgzYmE4YWNiMGVmNGIy
MWZlYTk3MmVlODkxODU4OTI5Yi4uYzllZmVjZGE4MTQ5MGQxYmM0YThhZmE2ZWViMjI2NzI4NmUy
NDRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIuY3BwCkBAIC02ODQsNyArNjg0LDcgQEAgU3RyaW5nIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI6Om1hcmtlckRlc2NyaXB0aW9uRm9yQXBwbGllZEFsdGVybmF0aXZlVGV4dChB
bHQKIAogICAgIGlmIChhbHRlcm5hdGl2ZVRleHRUeXBlICE9IEFsdGVybmF0aXZlVGV4dFR5cGVS
ZXZlcnNpb24gJiYgYWx0ZXJuYXRpdmVUZXh0VHlwZSAhPSBBbHRlcm5hdGl2ZVRleHRUeXBlRGlj
dGF0aW9uQWx0ZXJuYXRpdmVzICYmIChtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpSZXBs
YWNlbWVudCB8fCBtYXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpBdXRvY29ycmVjdGVkKSkK
ICAgICAgICAgcmV0dXJuIG1fYWx0ZXJuYXRpdmVUZXh0SW5mby5vcmlnaW5hbFRleHQ7Ci0gICAg
cmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDQyZTE1ZWJiMmI0Zjg4NjA0
Y2Q1NzZiMmM4MTNkZjViYjE3M2NhYzUuLjhjZjlkZTYyNzZkMDhkMGM1YzMzMzI2ZDI5MzU5OTU2
YjNhMWIwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAt
MTQyNCwxMCArMTQyNCwxMCBAQCBzdGF0aWMgU3RyaW5nIHZhbHVlRm9ybWF0QmxvY2soRnJhbWUq
IGZyYW1lLCBFdmVudCopCiB7CiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsKICAgICBpZiAoIXNlbGVjdGlvbi5p
c05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkgfHwgIXNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJs
ZSgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
ICAgIEVsZW1lbnQqIGZvcm1hdEJsb2NrRWxlbWVudCA9IEZvcm1hdEJsb2NrQ29tbWFuZDo6ZWxl
bWVudEZvckZvcm1hdEJsb2NrQ29tbWFuZChzZWxlY3Rpb24uZmlyc3RSYW5nZSgpLmdldCgpKTsK
ICAgICBpZiAoIWZvcm1hdEJsb2NrRWxlbWVudCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICByZXR1cm4gZm9ybWF0QmxvY2tFbGVtZW50LT5s
b2NhbE5hbWUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1M
SW50ZXJjaGFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2Uu
Y3BwCmluZGV4IGI5MjQ3MmZlZjYxNTM0MmY2MzM0Y2I5NjE0MWIyYWQ4YjE0OWZiOGUuLmZkZWZh
NDM3YWM1Y2Q1YjFiZjZiM2EwYTA5ZGFjZDlkOGQ3NTQzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSFRNTEludGVyY2hhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0hUTUxJbnRlcmNoYW5nZS5jcHAKQEAgLTM1LDIzICszNSwxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSB7Ci0KLVN0cmluZyBjb252ZXJ0ZWRTcGFjZVN0cmlu
ZygpCitzdGF0aWMgU3RyaW5nIGNvbnZlcnRlZFNwYWNlU3RyaW5nKCkKIHsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgY29udmVydGVkU3BhY2VTdHJpbmcsICgpKTsKLSAgICBpZiAo
Y29udmVydGVkU3BhY2VTdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgY29udmVydGVkU3BhY2VT
dHJpbmcgPSAiPHNwYW4gY2xhc3M9XCIiOwotICAgICAgICBjb252ZXJ0ZWRTcGFjZVN0cmluZyAr
PSBBcHBsZUNvbnZlcnRlZFNwYWNlOwotICAgICAgICBjb252ZXJ0ZWRTcGFjZVN0cmluZyArPSAi
XCI+IjsKLSAgICAgICAgY29udmVydGVkU3BhY2VTdHJpbmcuYXBwZW5kKG5vQnJlYWtTcGFjZSk7
Ci0gICAgICAgIGNvbnZlcnRlZFNwYWNlU3RyaW5nICs9ICI8L3NwYW4+IjsKLSAgICB9CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnZlcnRlZFNwYWNlU3RyaW5nLCAoU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiPHNwYW4gY2xhc3M9XCIiIEFwcGxlQ29udmVydGVkU3BhY2UgIlwiPiIp
KSArIG5vQnJlYWtTcGFjZSArICI8L3NwYW4+IikpOwogICAgIHJldHVybiBjb252ZXJ0ZWRTcGFj
ZVN0cmluZzsKIH0KIAotfSAvLyBlbmQgYW5vbnltb3VzIG5hbWVzcGFjZQotCiBTdHJpbmcgY29u
dmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChjb25zdCBTdHJpbmcmIGluLCBjb25zdCBU
ZXh0KiBub2RlKQogewogICAgIC8vIEFzc3VtZSBhbGwgdGhlIHRleHQgY29tZXMgZnJvbSBub2Rl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAppbmRleCBh
YzViNmVmOTRmMzUyNDNmMTFhZGJkZmIzMzhjZWI4ODVkYzkzMmYwLi41ZjNhNDQ4OTY2NzJlMWIw
MzU3NjlhMmUwN2JjN2E3YTI0MmE4NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydFRleHRDb21tYW5kLmNwcApAQCAtNTksNyArNTksNyBAQCBQb3NpdGlvbiBJbnNlcnRUZXh0
Q29tbWFuZDo6cG9zaXRpb25JbnNpZGVUZXh0Tm9kZShjb25zdCBQb3NpdGlvbiYgcCkKIHsKICAg
ICBQb3NpdGlvbiBwb3MgPSBwOwogICAgIGlmIChpc1RhYlNwYW5UZXh0Tm9kZShwb3MuYW5jaG9y
Tm9kZSgpKSkgewotICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUgPSBkb2N1bWVudCgpLT5j
cmVhdGVFZGl0aW5nVGV4dE5vZGUoIiIpOworICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUg
PSBkb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoZW1wdHlTdHJpbmcoKSk7CiAgICAg
ICAgIGluc2VydE5vZGVBdFRhYlNwYW5Qb3NpdGlvbih0ZXh0Tm9kZS5nZXQoKSwgcG9zKTsKICAg
ICAgICAgcmV0dXJuIGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dE5vZGUuZ2V0KCkpOwogICAgIH0K
QEAgLTY3LDcgKzY3LDcgQEAgUG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6OnBvc2l0aW9uSW5z
aWRlVGV4dE5vZGUoY29uc3QgUG9zaXRpb24mIHApCiAgICAgLy8gUHJlcGFyZSBmb3IgdGV4dCBp
bnB1dCBieSBsb29raW5nIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCiAgICAgLy8gSXQgbWF5
IGJlIG5lY2Vzc2FyeSB0byBpbnNlcnQgYSB0ZXh0IG5vZGUgdG8gcmVjZWl2ZSBjaGFyYWN0ZXJz
LgogICAgIGlmICghcG9zLmNvbnRhaW5lck5vZGUoKS0+aXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAg
IFJlZlB0cjxOb2RlPiB0ZXh0Tm9kZSA9IGRvY3VtZW50KCktPmNyZWF0ZUVkaXRpbmdUZXh0Tm9k
ZSgiIik7CisgICAgICAgIFJlZlB0cjxOb2RlPiB0ZXh0Tm9kZSA9IGRvY3VtZW50KCktPmNyZWF0
ZUVkaXRpbmdUZXh0Tm9kZShlbXB0eVN0cmluZygpKTsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KHRl
eHROb2RlLmdldCgpLCBwb3MpOwogICAgICAgICByZXR1cm4gZmlyc3RQb3NpdGlvbkluTm9kZSh0
ZXh0Tm9kZS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwCmluZGV4IGQ1NTM4MzAzZDBiYzdiOWY3NDNmNTJmODk4ZWJhYjUzYjIy
MDM3MWEuLmFjMTEyNGFhOGEzNzU1OGJhNThmNmI4YjhlNzYzN2U2Mjk2NTYxYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTI5Nyw3ICsy
OTcsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhp
bnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwogU3RyaW5nIFRleHRDaGVja2luZ0hlbHBl
cjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJv
b2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFp
bCYgb3V0R3JhbW1hckRldGFpbCkKIHsKICAgICBpZiAoIXVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIFN0cmluZyBmaXJzdEZvdW5kSXRlbTsKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7
CkBAIC0zMTAsNyArMzEwLDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0
TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICBvdXRHcmFt
bWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7CiAgICAgb3V0R3JhbW1hckRldGFpbC5sZW5ndGggPSAw
OwogICAgIG91dEdyYW1tYXJEZXRhaWwuZ3Vlc3Nlcy5jbGVhcigpOwotICAgIG91dEdyYW1tYXJE
ZXRhaWwudXNlckRlc2NyaXB0aW9uID0gIiI7CisgICAgb3V0R3JhbW1hckRldGFpbC51c2VyRGVz
Y3JpcHRpb24gPSBlbXB0eVN0cmluZygpOwogICAgIAogICAgIC8vIEV4cGFuZCB0aGUgc2VhcmNo
IHJhbmdlIHRvIGVuY29tcGFzcyBlbnRpcmUgcGFyYWdyYXBocywgc2luY2UgdGV4dCBjaGVja2lu
ZyBuZWVkcyB0aGF0IG11Y2ggY29udGV4dC4KICAgICAvLyBEZXRlcm1pbmUgdGhlIGNoYXJhY3Rl
ciBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2Yg
dGhlIG9yaWdpbmFsIHNlYXJjaCByYW5nZSwKQEAgLTQ3Myw3ICs0NzMsNyBAQCBTdHJpbmcgVGV4
dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdy
YW1tYXJEZXRhaWwsCiAgICAgb3V0R3JhbW1hckRldGFpbC5sb2NhdGlvbiA9IC0xOwogICAgIG91
dEdyYW1tYXJEZXRhaWwubGVuZ3RoID0gMDsKICAgICBvdXRHcmFtbWFyRGV0YWlsLmd1ZXNzZXMu
Y2xlYXIoKTsKLSAgICBvdXRHcmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbiA9ICIiOworICAg
IG91dEdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uID0gZW1wdHlTdHJpbmcoKTsKICAgICBv
dXRHcmFtbWFyUGhyYXNlT2Zmc2V0ID0gMDsKICAgICAKICAgICBTdHJpbmcgZmlyc3RCYWRHcmFt
bWFyUGhyYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDc4
OWEzZmFiYjhlNDAzYjA2NmMxODBhMGE1ZDUxNzZhODMxNmQ2OWEuLjNmZDc4YjJhMTk2YjYyNmEz
OGY1MGRiMDU0YjdmYjdhMWMxZjljOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKQEAgLTI2MDEsNyArMjYwMSw3IEBAIFN0cmluZyBwbGFpblRleHQoY29uc3QgUmFu
Z2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvcikKICAgICB1bnNpZ25l
ZCBsZW5ndGg7CiAgICAgVUNoYXIqIGJ1ZiA9IHBsYWluVGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVm
ZmVyKHIsIGxlbmd0aCwgZmFsc2UsIGRlZmF1bHRCZWhhdmlvcik7CiAgICAgaWYgKCFidWYpCi0g
ICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgU3Ry
aW5nIHJlc3VsdChidWYsIGxlbmd0aCk7CiAgICAgZnJlZShidWYpOwogICAgIHJldHVybiByZXN1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRleCAxYzBhYTc4
OTczZmE1YTkyOGNlNWJkNTE2NzRmMTM0ZDEzNTI0YzdlLi4zYzU0OGFlOTJhNjQ2MjFiYTNjNTdi
YmM0YjkzNmRlYzQ0ODVjOWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5
cGluZ0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5jcHAKQEAgLTEwNywxMCArMTA3LDEwIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2Vs
ZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25zKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBEZWxldGVT
ZWxlY3Rpb24sICIiLCBvcHRpb25zKS0+YXBwbHkoKTsKKyAgICBUeXBpbmdDb21tYW5kOjpjcmVh
dGUoZG9jdW1lbnQsIERlbGV0ZVNlbGVjdGlvbiwgZW1wdHlTdHJpbmcoKSwgb3B0aW9ucyktPmFw
cGx5KCk7CiB9CiAKLXZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVu
dCAqZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQordm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKERvY3VtZW50KiBkb2N1bWVu
dCwgT3B0aW9ucyBvcHRpb25zLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAg
QVNTRVJUKGRvY3VtZW50KTsKICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVs
YXJpdHkpIHsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtl
eVByZXNzZWQoRG9jdW1lbnQgKmRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMsIFRleHRHcgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBEZWxl
dGVLZXksICIiLCBvcHRpb25zLCBncmFudWxhcml0eSktPmFwcGx5KCk7CisgICAgVHlwaW5nQ29t
bWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBEZWxldGVLZXksIGVtcHR5U3RyaW5nKCksIG9wdGlvbnMs
IGdyYW51bGFyaXR5KS0+YXBwbHkoKTsKIH0KIAogdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJk
RGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCAqZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgVHlwaW5n
Q29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQgKmRvY3VtZW50LCBPcHRp
b25zIG9wdGlvbnMsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBUeXBpbmdDb21tYW5kOjpjcmVh
dGUoZG9jdW1lbnQsIEZvcndhcmREZWxldGVLZXksICIiLCBvcHRpb25zLCBncmFudWxhcml0eSkt
PmFwcGx5KCk7CisgICAgVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBGb3J3YXJkRGVs
ZXRlS2V5LCBlbXB0eVN0cmluZygpLCBvcHRpb25zLCBncmFudWxhcml0eSktPmFwcGx5KCk7CiB9
CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6dXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9tQ3Vy
cmVudFNlbGVjdGlvbihUeXBpbmdDb21tYW5kKiB0eXBpbmdDb21tYW5kLCBGcmFtZSogZnJhbWUp
CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWso
RG9jdW1lbnQgKmRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhcHBseUNvbW1hbmQoVHlwaW5nQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50LCBJ
bnNlcnRMaW5lQnJlYWssICIiLCBvcHRpb25zKSk7CisgICAgYXBwbHlDb21tYW5kKFR5cGluZ0Nv
bW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0TGluZUJyZWFrLCBlbXB0eVN0cmluZygpLCBv
cHRpb25zKSk7CiB9CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9ySW5RdW90ZWRDb250ZW50KERvY3VtZW50ICpkb2N1bWVudCkKQEAgLTIzMCw3ICsyMzAsNyBA
QCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvcihEb2N1bWVudCAq
ZG9jdW1lbnQsIE9wdGlvbnMgb3B0aW9ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXBwbHlDb21tYW5kKFR5cGluZ0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCwgSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yLCAiIiwgb3B0aW9ucykpOworICAgIGFwcGx5Q29tbWFuZChUeXBpbmdDb21t
YW5kOjpjcmVhdGUoZG9jdW1lbnQsIEluc2VydFBhcmFncmFwaFNlcGFyYXRvciwgZW1wdHlTdHJp
bmcoKSwgb3B0aW9ucykpOwogfQogCiBQYXNzUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IFR5cGluZ0Nv
bW1hbmQ6Omxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoRnJhbWUqIGZyYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaAppbmRleCA5NTBlZWM4MGEzYmEw
YmFiMDA3YTQ0ODdkMmJmNDQzMTI5NTUzZGQxLi44NzBlM2M3OWViNjIyMThkMWRmOTljZjU2MDUx
MjMzNmE0MTNjMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuaApAQCAt
NzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb21wb3NpdGlvblR5cGUoVGV4dENv
bXBvc2l0aW9uVHlwZSB0eXBlKSB7IG1fY29tcG9zaXRpb25UeXBlID0gdHlwZTsgfQogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGNyZWF0ZShEb2N1bWVu
dCogZG9jdW1lbnQsIEVUeXBpbmdDb21tYW5kIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgdGV4dCA9
ICIiLCBPcHRpb25zIG9wdGlvbnMgPSAwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBD
aGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUeXBpbmdDb21tYW5k
PiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBFVHlwaW5nQ29tbWFuZCBjb21tYW5kLCBjb25z
dCBTdHJpbmcmIHRleHQgPSBlbXB0eVN0cmluZygpLCBPcHRpb25zIG9wdGlvbnMgPSAwLCBUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVHlwaW5nQ29tbWFuZChkb2N1bWVudCwgY29tbWFu
ZCwgdGV4dCwgb3B0aW9ucywgZ3JhbnVsYXJpdHksIFRleHRDb21wb3NpdGlvbk5vbmUpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggOWFmMTg4M2Y3NzQzZDVjMzAyZDIy
YmNjNTE0YzU1YzE4ZDEyNzFhNC4uYTlmYzY4YWU3MjYyZDc5ZDA4YWU2ZDNkZjJjYzJjM2FjZGRk
MThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNTUyLDExICs1NTIsMTEgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5v
ZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nLCAoIjxiciBjbGFzcz1cIiIgQXBwbGVJbnRl
cmNoYW5nZU5ld2xpbmUgIlwiPiIpKTsKIAogICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVy
biAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSByYW5nZS0+b3duZXJEb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICAvLyBE
aXNhYmxlIHRoZSBkZWxldGUgYnV0dG9uIHNvIGl0J3MgZWxlbWVudHMgYXJlIG5vdCBzZXJpYWxp
emVkIGludG8gdGhlIG1hcmt1cCwKICAgICAvLyBidXQgbWFrZSBzdXJlIG5laXRoZXIgZW5kcG9p
bnQgaXMgaW5zaWRlIHRoZSBkZWxldGUgdXNlciBpbnRlcmZhY2UuCkBAIC01NjQsNyArNTY0LDcg
QEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4q
IG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKICAgICBEZWxldGVCdXR0b25Db250cm9sbGVyKiBk
ZWxldGVCdXR0b24gPSBmcmFtZSA/IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJv
bGxlcigpIDogMDsKICAgICBSZWZQdHI8UmFuZ2U+IHVwZGF0ZWRSYW5nZSA9IGF2b2lkSW50ZXJz
ZWN0aW9uV2l0aE5vZGUocmFuZ2UsIGRlbGV0ZUJ1dHRvbiA/IGRlbGV0ZUJ1dHRvbi0+Y29udGFp
bmVyRWxlbWVudCgpIDogMCk7CiAgICAgaWYgKCF1cGRhdGVkUmFuZ2UpCi0gICAgICAgIHJldHVy
biAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBpZiAoZGVsZXRlQnV0
dG9uKQogICAgICAgICBkZWxldGVCdXR0b24tPmRpc2FibGUoKTsKQEAgLTU3MywxMSArNTczLDEx
IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+
KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjCiAgICAgYm9vbCBjb2xsYXBzZWQgPSB1cGRhdGVk
UmFuZ2UtPmNvbGxhcHNlZChlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiAgICAgaWYgKGNvbGxhcHNl
ZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAg
ICBOb2RlKiBjb21tb25BbmNlc3RvciA9IHVwZGF0ZWRSYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250
YWluZXIoZWMpOwogICAgIEFTU0VSVCghZWMpOwogICAgIGlmICghY29tbW9uQW5jZXN0b3IpCi0g
ICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBk
b2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTc2
NiwxMyArNzY2LDEzIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwV2l0aENvbnRleHQoRG9jdW1lbnQqIGRvY3VtCiBTdHJpbmcgY3JlYXRlTWFy
a3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVDaGlsZHJlbk9ubHkgY2hpbGRyZW5Pbmx5LCBWZWN0b3I8
Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcywgVmVjdG9yPFF1
YWxpZmllZE5hbWU+KiB0YWdOYW1lc1RvU2tpcCkKIHsKICAgICBpZiAoIW5vZGUpCi0gICAgICAg
IHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBIVE1MRWxl
bWVudCogZGVsZXRlQnV0dG9uQ29udGFpbmVyRWxlbWVudCA9IDA7CiAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgZGVsZXRlQnV0dG9u
Q29udGFpbmVyRWxlbWVudCA9IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlQnV0dG9uQ29udHJvbGxl
cigpLT5jb250YWluZXJFbGVtZW50KCk7CiAgICAgICAgIGlmIChub2RlLT5pc0Rlc2NlbmRhbnRP
ZihkZWxldGVCdXR0b25Db250YWluZXJFbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiAiIjsK
KyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIAogICAgIE1hcmt1cEFj
Y3VtdWxhdG9yIGFjY3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>