<?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>216447</bug_id>
          
          <creation_ts>2020-09-12 15:32:06 -0700</creation_ts>
          <short_desc>Replace formatForDebugger() which uses raw char* with debugDescription()</short_desc>
          <delta_ts>2020-09-12 18:32:19 -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 Nightly 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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1688004</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-12 15:32:06 -0700</bug_when>
    <thetext>Replace formatForDebugger() which uses raw char* with debugDescription()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688005</commentid>
    <comment_count>1</comment_count>
      <attachid>408617</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-12 15:33:03 -0700</bug_when>
    <thetext>Created attachment 408617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688006</commentid>
    <comment_count>2</comment_count>
      <attachid>408617</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-12 15:38:15 -0700</bug_when>
    <thetext>Comment on attachment 408617
Patch

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

Looks great!

&gt; Source/WebCore/dom/Node.cpp:1767
&gt;      StringBuilder builder;
&gt; -    builder.append(nodeName(), &quot; 0x&quot;_s, hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase));
&gt; +
&gt; +    auto name = nodeName();
&gt; +    if (name.isEmpty())
&gt; +        name = &quot;&lt;none&gt;&quot;_s;
&gt; +
&gt; +    builder.append(name, &quot; 0x&quot;_s, hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase));
&gt;      return builder.toString();

There’s no need to use a StringBuilder here.

    auto name = nodeName();
    return makeString(name.isEmpty() ? &quot;&lt;none&gt;&quot; : &quot;&quot;, name, &quot; 0x&quot;_s, hex(reinterpret_cast&lt;uintptr_t&gt;(this), Lowercase));

&gt; Source/WebCore/dom/Position.cpp:1395
&gt;      StringBuilder result;
&gt;  
&gt;      if (isNull())
&gt;          result.appendLiteral(&quot;&lt;null&gt;&quot;);
&gt;      else {
&gt; -        char s[1024];
&gt;          result.appendLiteral(&quot;offset &quot;);
&gt;          result.appendNumber(m_offset);
&gt;          result.appendLiteral(&quot; of &quot;);
&gt; -        deprecatedNode()-&gt;formatForDebugger(s, sizeof(s));
&gt; -        result.append(s);
&gt; +        result.append(deprecatedNode()-&gt;debugDescription());
&gt;      }
&gt;  
&gt; -    strncpy(buffer, result.toString().utf8().data(), length - 1);
&gt; +    return result.toString();

There’s no need to use a StringBuilder here:

    if (isNull())
        return &quot;&lt;null&gt;&quot;_s;
    return makeString(&quot;offset &quot;, m_offset, &quot; of &quot;, deprecatedNode()-&gt;debugDescription());

&gt; Source/WebCore/dom/Range.cpp:855
&gt;      StringBuilder result;
&gt;  
&gt; -    const int FormatBufferSize = 1024;
&gt; -    char s[FormatBufferSize];
&gt;      result.appendLiteral(&quot;from offset &quot;);
&gt;      result.appendNumber(m_start.offset());
&gt;      result.appendLiteral(&quot; of &quot;);
&gt; -    startContainer().formatForDebugger(s, FormatBufferSize);
&gt; -    result.append(s);
&gt; +    result.append(startContainer().debugDescription());
&gt;      result.appendLiteral(&quot; to offset &quot;);
&gt;      result.appendNumber(m_end.offset());
&gt;      result.appendLiteral(&quot; of &quot;);
&gt; -    endContainer().formatForDebugger(s, FormatBufferSize);
&gt; -    result.append(s);
&gt; +    result.append(endContainer().debugDescription());
&gt;  
&gt; -    strncpy(buffer, result.toString().utf8().data(), length - 1);
&gt; +    return result.toString();

Again:

    return makeString(&quot;from offset &quot;, m_start.offset(), &quot; of &quot;, startContainer().debugDescription(), &quot; to offset &quot;, m_end.offset(), &quot; of &quot;, endContainer().debugDescription());

&gt; Source/WebCore/editing/VisibleSelection.cpp:691
&gt;      StringBuilder result;
&gt; -    String s;
&gt;  
&gt;      if (isNone()) {
&gt;          result.appendLiteral(&quot;&lt;none&gt;&quot;);
&gt;      } else {
&gt; -        const int FormatBufferSize = 1024;
&gt; -        char s[FormatBufferSize];
&gt;          result.appendLiteral(&quot;from &quot;);
&gt; -        start().formatForDebugger(s, FormatBufferSize);
&gt; -        result.append(s);
&gt; +        result.append(start().debugDescription());
&gt;          result.appendLiteral(&quot; to &quot;);
&gt; -        end().formatForDebugger(s, FormatBufferSize);
&gt; -        result.append(s);
&gt; +        result.append(end().debugDescription());
&gt;      }
&gt;  
&gt; -    strncpy(buffer, result.toString().utf8().data(), length - 1);
&gt; +    return result.toString();

One more time:

    if (isNone())
        return &quot;&lt;none&gt;&quot;_s;
    return makeString(&quot;from &quot;, start().debugDescription(), &quot; to &quot;, end().debugDescription());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688013</commentid>
    <comment_count>3</comment_count>
      <attachid>408622</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-12 15:59:26 -0700</bug_when>
    <thetext>Created attachment 408622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688040</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-12 18:31:32 -0700</bug_when>
    <thetext>Committed r266986: &lt;https://trac.webkit.org/changeset/266986&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408622.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688041</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-12 18:32:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/68783545&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408617</attachid>
            <date>2020-09-12 15:33:03 -0700</date>
            <delta_ts>2020-09-12 15:38:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216447-20200912153302.patch</filename>
            <type>text/plain</type>
            <size>16275</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwZmM3ZWQ3OWFhMjM5
NDg2YmU2MDZjYzk5YjJlZTdhYTUyYjU5NS4uYmRkNWU3MTQzNmQ4M2Y1ODVlN2UxYWJmYmQwZWMy
OTEzNjQ5YzYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA5LTEyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgZm9y
bWF0Rm9yRGVidWdnZXIoKSB3aGljaCB1c2VzIHJhdyBjaGFyKiB3aXRoIGRlYnVnRGVzY3JpcHRp
b24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
NDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZm9y
bWF0Rm9yRGVidWdnZXIoKSByZWxpZWQgb24gcmF3IGNoYXIqIGFuZCBidWZmZXIgbGVuZ3Rocy4g
UmVwbGFjZSB3aXRoIGRlYnVnRGVzY3JpcHRpb24oKQorICAgICAgICB3aGljaCByZXR1cm5zIGEg
U3RyaW5nLCBhbmQgaXMgYWxyZWFkeSBhIGNvbnZlbnRpb24gdXNlZCBpbiB2YXJpb3VzIGNsYXNz
ZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
ZGVidWdEZXNjcmlwdGlvbkZvclRleHRNYXJrZXI6XSk6CisgICAgICAgIChmb3JtYXRGb3JEZWJ1
Z2dlcik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6Zm9ybWF0Rm9yRGVidWdnZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9F
bGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpmb3Jt
YXRGb3JEZWJ1Z2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAg
ICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmRl
YnVnRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmZvcm1h
dEZvckRlYnVnZ2VyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoK
KyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmRlYnVn
RGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmZvcm1hdEZvckRl
YnVnZ2VyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vUmFuZ2UuaDoKKyAgICAgICAg
KiBkb20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dl
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjpmb3JtYXRGb3JEZWJ1Z2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6ZGVidWdEZXNjcmlwdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OmZvcm1hdEZvckRlYnVn
Z2VyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5o
OgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246OmZvcm1hdEZvckRlYnVnZ2VyIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKwogMjAyMC0wOS0x
MCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRy
ZXNzIGEgcG9zdC1jb21taXQgcmV2aWV3IGNvbW1lbnQgYWZ0ZXIgcjI2Njg4NwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAxOTViZDc0ZGRjZWM5NzE3OTIzNTk5
NjU2YTlkODFmZGFkNjBjNjU5Li4zYjYyMTU1NjRkNmI2NjgyNTk1ZWVkOGIxNjM5ODhkMmE3MTBj
ZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMzY4OCw5
ICszNjg4LDcgQEAgLSAoTlNEYXRhKilkb0FYUlRGRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKICNp
ZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAtIChOU1N0cmluZyAqKWRlYnVnRGVzY3JpcHRpb25G
b3JUZXh0TWFya2VyOihpZCl0ZXh0TWFya2VyCiB7Ci0gICAgY2hhciBkZXNjcmlwdGlvblsxMDI0
XTsKLSAgICBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdLmZv
cm1hdEZvckRlYnVnZ2VyKGRlc2NyaXB0aW9uLCBzaXplb2YoZGVzY3JpcHRpb24pKTsKLSAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmRlc2NyaXB0aW9uXTsKKyAgICBy
ZXR1cm4gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXS5kZWJ1
Z0Rlc2NyaXB0aW9uKCk7CiAKIH0KIApAQCAtMzcyOCwxNCArMzcyNiwxMCBAQCBzdGF0aWMgdm9p
ZCBmb3JtYXRGb3JEZWJ1Z2dlcihjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYgcmFuZ2UsIGNo
YXIqIGJ1ZmZlciwgdQogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIAotICAgIGNv
bnN0IGludCBGb3JtYXRCdWZmZXJTaXplID0gMTAyNDsKLSAgICBjaGFyIGZvcm1hdFtGb3JtYXRC
dWZmZXJTaXplXTsKICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZnJvbSAiKTsKLSAgICByYW5n
ZS5zdGFydC5mb3JtYXRGb3JEZWJ1Z2dlcihmb3JtYXQsIEZvcm1hdEJ1ZmZlclNpemUpOwotICAg
IHJlc3VsdC5hcHBlbmQoZm9ybWF0KTsKKyAgICByZXN1bHQuYXBwZW5kKHJhbmdlLnN0YXJ0LmRl
YnVnRGVzY3JpcHRpb24oKSk7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB0byAiKTsKLSAg
ICByYW5nZS5lbmQuZm9ybWF0Rm9yRGVidWdnZXIoZm9ybWF0LCBGb3JtYXRCdWZmZXJTaXplKTsK
LSAgICByZXN1bHQuYXBwZW5kKGZvcm1hdCk7CisgICAgcmVzdWx0LmFwcGVuZChyYW5nZS5lbmQu
ZGVidWdEZXNjcmlwdGlvbigpKTsKICAgICAKICAgICBzdHJsY3B5KGJ1ZmZlciwgcmVzdWx0LnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGVuZ3RoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApp
bmRleCA3NDY4ZmE0M2RkYTcyNDRmNDZjMGUzMWIxMGQ4MDM3NWMzMWE0YTJjLi5hZTEzYWZhMGFj
OWYxZDg0NGNkZjcwMDVmYTcyNmQ1ZjJlNzA3NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBA
IC0yNzIyLDM2ICsyNzIyLDYgQEAgU3RyaW5nIEVsZW1lbnQ6OmRlYnVnRGVzY3JpcHRpb24oKSBj
b25zdAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLSNpZiBFTkFCTEUoVFJF
RV9ERUJVR0dJTkcpCi0KLXZvaWQgRWxlbWVudDo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVm
ZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
Ci0gICAgU3RyaW5nIHM7Ci0KLSAgICByZXN1bHQuYXBwZW5kKG5vZGVOYW1lKCkpOwotCi0gICAg
cyA9IGdldElkQXR0cmlidXRlKCk7Ci0gICAgaWYgKHMubGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAg
IGlmIChyZXN1bHQubGVuZ3RoKCkgPiAwKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIjsgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJpZD0iKTsKLSAgICAgICAg
cmVzdWx0LmFwcGVuZChzKTsKLSAgICB9Ci0KLSAgICBzID0gZ2V0QXR0cmlidXRlKGNsYXNzQXR0
cik7Ci0gICAgaWYgKHMubGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgIGlmIChyZXN1bHQubGVuZ3Ro
KCkgPiAwKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIjsgIik7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjbGFzcz0iKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChz
KTsKLSAgICB9Ci0KLSAgICBzdHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgbGVuZ3RoIC0gMSk7Ci19Ci0KLSNlbmRpZgotCiBjb25zdCBWZWN0b3I8UmVmUHRy
PEF0dHI+PiYgRWxlbWVudDo6YXR0ck5vZGVMaXN0KCkKIHsKICAgICBBU1NFUlQoaGFzU3ludGhl
dGljQXR0ckNoaWxkTm9kZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA4ZTA4YjdkYzg3NDFl
OTM1Y2MxZmRhODg2MzRkMDljYTk0YjEyNTQ4Li5hNmRhOTBlNDVkN2QxZTM3ZTIxMzdmODA5YzY0
MmFkMDIxNmRkMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTY5OSwxMCArNjk5LDYgQEAgcHJp
dmF0ZToKICAgICBMYXlvdXRSZWN0IGFic29sdXRlRXZlbnRCb3VuZHMoYm9vbCYgYm91bmRzSW5j
bHVkZUFsbERlc2NlbmRhbnRFbGVtZW50cywgYm9vbCYgaW5jbHVkZXNGaXhlZFBvc2l0aW9uRWxl
bWVudHMpOwogICAgIExheW91dFJlY3QgYWJzb2x1dGVFdmVudEJvdW5kc09mRWxlbWVudEFuZERl
c2NlbmRhbnRzKGJvb2wmIGluY2x1ZGVzRml4ZWRQb3NpdGlvbkVsZW1lbnRzKTsKIAotI2lmIEVO
QUJMRShUUkVFX0RFQlVHR0lORykKLSAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1
ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA1YjFhNGIyNGVk
ZDgyOTYyMjVjMjUzYmFjMTFjMTNjOWVlYmMxNGNjLi5mZTU5ZGE5OWM1NjZhYzk1ODIxMWE5MTA4
MGE2MDFlMzAyNzEzMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNzU4LDcgKzE3NTgsMTIgQEAg
RmxvYXRQb2ludCBOb2RlOjpjb252ZXJ0RnJvbVBhZ2UoY29uc3QgRmxvYXRQb2ludCYgcCkgY29u
c3QKIFN0cmluZyBOb2RlOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQobm9kZU5hbWUoKSwgIiAweCJfcywg
aGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwgTG93ZXJjYXNlKSk7CisKKyAg
ICBhdXRvIG5hbWUgPSBub2RlTmFtZSgpOworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAg
ICAgbmFtZSA9ICI8bm9uZT4iX3M7CisKKyAgICBidWlsZGVyLmFwcGVuZChuYW1lLCAiIDB4Il9z
LCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBMb3dlcmNhc2UpKTsKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCkBAIC0xODg0LDIwICsxODg5LDYgQEAg
dm9pZCBOb2RlOjpzaG93VHJlZUFuZE1hcmsoY29uc3QgTm9kZSogbWFya2VkTm9kZTEsIGNvbnN0
IGNoYXIqIG1hcmtlZExhYmVsMSwgY28KICAgICB0cmF2ZXJzZVRyZWVBbmRNYXJrKHN0YXJ0aW5n
SW5kZW50LCByb290Tm9kZSwgbWFya2VkTm9kZTEsIG1hcmtlZExhYmVsMSwgbWFya2VkTm9kZTIs
IG1hcmtlZExhYmVsMik7CiB9CiAKLXZvaWQgTm9kZTo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciog
YnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHJlc3VsdDsKLSAg
ICBTdHJpbmcgczsKLQotICAgIHMgPSBub2RlTmFtZSgpOwotICAgIGlmIChzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmVzdWx0ID0gIjxub25lPiI7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBz
OwotCi0gICAgc3RybmNweShidWZmZXIsIHJlc3VsdC51dGY4KCkuZGF0YSgpLCBsZW5ndGggLSAx
KTsKLX0KLQogc3RhdGljIENvbnRhaW5lck5vZGUqIHBhcmVudE9yU2hhZG93SG9zdE9yRnJhbWVP
d25lcihjb25zdCBOb2RlKiBub2RlKQogewogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG5v
ZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDQ5YWNhNzcyNGZk
YzhiYzdlNjExYWI2NGQ4OTMwNWVhNWMyM2YwMjcuLmQwMDU1NWRhZGEzYzk0Mzc3MTM3NDcwZjY4
OTNmZWRkNzM1NjZjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDIzLDggKzQyMyw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICNpZiBFTkFC
TEUoVFJFRV9ERUJVR0dJTkcpCi0gICAgdmlydHVhbCB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNo
YXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKLQogICAgIHZvaWQgc2hvd05vZGUo
Y29uc3QgY2hhciogcHJlZml4ID0gIiIpIGNvbnN0OwogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlz
KCkgY29uc3Q7CiAgICAgdm9pZCBzaG93Tm9kZVBhdGhGb3JUaGlzKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAppbmRleCA5NGUwZTljMDUxZGFkYWRhNzNlOWUyZjQ3NDZjOWYzYWQ5YWU3
YWUwLi5jNDU2MTY5NzBlNmRkNTE3NjI1NzYwM2UwNzdhNDkxNjQxNjk3OWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKQEAgLTEzNzksMjIgKzEzNzksMjAgQEAgdm9pZCBQb3NpdGlvbjo6ZGVi
dWdQb3NpdGlvbihjb25zdCBjaGFyKiBtc2cpIGNvbnN0CiAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiUG9zaXRpb24gWyVzXTogJXMgWyVwXSBhdCAlZFxuIiwgbXNnLCBkZXByZWNhdGVkTm9kZSgp
LT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIGRlcHJlY2F0ZWROb2RlKCksIG1fb2Zmc2V0KTsK
IH0KIAotdm9pZCBQb3NpdGlvbjo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNp
Z25lZCBsZW5ndGgpIGNvbnN0CitTdHJpbmcgUG9zaXRpb246OmRlYnVnRGVzY3JpcHRpb24oKSBj
b25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogCiAgICAgaWYgKGlzTnVsbCgpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiPG51bGw+Iik7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGNoYXIgc1sxMDI0XTsKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIm9mZnNldCAi
KTsKICAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX29mZnNldCk7CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmRMaXRlcmFsKCIgb2YgIik7Ci0gICAgICAgIGRlcHJlY2F0ZWROb2RlKCktPmZvcm1h
dEZvckRlYnVnZ2VyKHMsIHNpemVvZihzKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQocyk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoZGVwcmVjYXRlZE5vZGUoKS0+ZGVidWdEZXNjcmlwdGlvbigp
KTsKICAgICB9CiAKLSAgICBzdHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgbGVuZ3RoIC0gMSk7CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQog
CiB2b2lkIFBvc2l0aW9uOjpzaG93QW5jaG9yVHlwZUFuZE9mZnNldCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oCmluZGV4IGY5ODFjYWEwZWVkYWRkYmZhZjY5NWMxMjY2YWE4ZTZmNjBjNzhhNGIu
LmIxZTUwMzI5M2FiMDc4YzNkNTAxZDFiMDlmMjk0ZGQyYTNhYWVkYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWdQb3NpdGlv
bihjb25zdCBjaGFyKiBtc2cgPSAiIikgY29uc3Q7CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCi0gICAgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxl
bmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNob3dBbmNob3JUeXBlQW5kT2Zmc2V0KCkgY29uc3Q7CiAgICAgdm9pZCBzaG93VHJlZUZv
clRoaXMoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggMzYyMjI3OWNjYTAz
ZjExMmJhYzE3NTA0MTg3NDY5ZjViZTE4YzQ5OC4uZTk3ODc2NjE3NTQzMGE4YjYyMWQzODkwMmUy
MTU3YWQxMDQwN2Q1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC04MzksMjQgKzgzOSwyMCBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBSYW5nZTo6c2V0U3RhcnRCZWZvcmUoTm9kZSYgbm9kZSkKIH0KIAog
I2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKLXZvaWQgUmFuZ2U6OmZvcm1hdEZvckRlYnVnZ2Vy
KGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorU3RyaW5nIFJhbmdlOjpkZWJ1
Z0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKIAotICAg
IGNvbnN0IGludCBGb3JtYXRCdWZmZXJTaXplID0gMTAyNDsKLSAgICBjaGFyIHNbRm9ybWF0QnVm
ZmVyU2l6ZV07CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZyb20gb2Zmc2V0ICIpOwogICAg
IHJlc3VsdC5hcHBlbmROdW1iZXIobV9zdGFydC5vZmZzZXQoKSk7CiAgICAgcmVzdWx0LmFwcGVu
ZExpdGVyYWwoIiBvZiAiKTsKLSAgICBzdGFydENvbnRhaW5lcigpLmZvcm1hdEZvckRlYnVnZ2Vy
KHMsIEZvcm1hdEJ1ZmZlclNpemUpOwotICAgIHJlc3VsdC5hcHBlbmQocyk7CisgICAgcmVzdWx0
LmFwcGVuZChzdGFydENvbnRhaW5lcigpLmRlYnVnRGVzY3JpcHRpb24oKSk7CiAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIiB0byBvZmZzZXQgIik7CiAgICAgcmVzdWx0LmFwcGVuZE51bWJlciht
X2VuZC5vZmZzZXQoKSk7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBvZiAiKTsKLSAgICBl
bmRDb250YWluZXIoKS5mb3JtYXRGb3JEZWJ1Z2dlcihzLCBGb3JtYXRCdWZmZXJTaXplKTsKLSAg
ICByZXN1bHQuYXBwZW5kKHMpOworICAgIHJlc3VsdC5hcHBlbmQoZW5kQ29udGFpbmVyKCkuZGVi
dWdEZXNjcmlwdGlvbigpKTsKIAotICAgIHN0cm5jcHkoYnVmZmVyLCByZXN1bHQudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBsZW5ndGggLSAxKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCAxZWM1YWVkNGM1MDAwZjdmNWM5MzQx
NzViN2U5MjNjY2JiMDg0NGRhLi4wMDk3YmJiOTFkYzZiMjc5NjM3MTA0MmE5MzlkMjViZjdjMjJi
YzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHRleHROb2RlU3BsaXQoVGV4dCYgb2xkTm9kZSk7CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCi0gICAgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxl
bmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRp
ZgogCiAgICAgZW51bSBBY3Rpb25UeXBlIDogdWludDhfdCB7IERlbGV0ZSwgRXh0cmFjdCwgQ2xv
bmUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCAxNDAyMDk2OTUzYjgwNzA5NDI4YzI3OGI4MjY0ODkz
YmMzYTZjYmZiLi42NTNmYWExYzEwOTFlODc1NGY3ZTk5YjE5MDUzZTVjZDA0MDZiN2M5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuY3BwCkBAIC0yNDUsMTQgKzI0NSw2IEBAIFN0cmluZyBUZXh0OjpkZWJ1Z0Rlc2Ny
aXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi0jaWYg
RU5BQkxFKFRSRUVfREVCVUdHSU5HKQotdm9pZCBUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFy
KiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKLXsKLSAgICBzdHJuY3B5KGJ1ZmZlciwg
ZGVidWdEZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCksIGxlbmd0aCAtIDEpOwotICAgIGJ1ZmZl
cltsZW5ndGggLSAxXSA9ICdcMCc7Ci19Ci0jZW5kaWYKLQogdm9pZCBUZXh0OjpzZXREYXRhQW5k
VXBkYXRlKGNvbnN0IFN0cmluZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERh
dGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoKQogewogICAgIGF1dG8g
b2xkRGF0YSA9IGRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCmluZGV4IGM1M2RkMTYyOGY1YWFkYjY3NjA2OTg5
NzkyODFjMzk3ZWQwMGUxODEuLjdkYWIwNDFiYjVkZDIyMmEwNTczMmE4MWZlNWViZmQyNWQzNjY2
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuaApAQCAtNzIsMTAgKzcyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIGNo
aWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBS
ZWY8VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKTsKLQotI2lmIEVOQUJMRShUUkVF
X0RFQlVHR0lORykKLSAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgbGVuZ3RoKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRl
eCBiZmNkZDc2YjRhNTA4ZjliODE4NmJlM2ZmYzU3Nzg3MDQ5NWVhMTJjLi44MDUyNmRkZTQ3NGIz
M2NmOWU3NDZhZDAyZGJhNTk0ZDZmYjQwYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcApAQCAtMjQ4Myw5ICsyNDgzLDkgQEAgdm9pZCBGcmFtZVNlbGVjdGlv
bjo6dXBkYXRlQXBwZWFyYW5jZUFmdGVyTGF5b3V0T3JTdHlsZUNoYW5nZSgpCiAKICNpZiBFTkFC
TEUoVFJFRV9ERUJVR0dJTkcpCiAKLXZvaWQgRnJhbWVTZWxlY3Rpb246OmZvcm1hdEZvckRlYnVn
Z2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorU3RyaW5nIEZyYW1lU2Vs
ZWN0aW9uOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBtX3NlbGVjdGlvbi5mb3Jt
YXRGb3JEZWJ1Z2dlcihidWZmZXIsIGxlbmd0aCk7CisgICAgcmV0dXJuIG1fc2VsZWN0aW9uLmRl
YnVnRGVzY3JpcHRpb24oKTsKIH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2hvd1RyZWVGb3JU
aGlzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBh
YjZkMTNlZDAyM2E2N2NjN2FhZjUyZDI2NjNkNDhmMTk3MGU3MzY0Li44OGZkZmU2ZDBiNjU0YWY1
NzE4ZjYxYmY0MTJhZjJlNzkzOTUzM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5oCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlQXBwZWFyYW5jZSgpOwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQot
ICAgIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0OworICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBz
aG93VHJlZUZvclRoaXMoKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggZTg3MmM3NjUyNmZjMGQzMTJlNWYyZjUxMTQzOTM2
ODgwMzY0ZTQ4Ni4uZmUyMWM1OWU1NWYwMjMyNWQ2ZDNkZGRlYjMzNzFjZTZiYzZjNjcwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNjgxLDkgKzY4
MSw5IEBAIHZvaWQgVmlzaWJsZVBvc2l0aW9uOjpkZWJ1Z1Bvc2l0aW9uKGNvbnN0IGNoYXIqIG1z
ZykgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgVmlzaWJsZVBvc2l0aW9uOjpmb3JtYXRGb3JEZWJ1
Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK1N0cmluZyBWaXNpYmxl
UG9zaXRpb246OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIG1fZGVlcFBvc2l0aW9u
LmZvcm1hdEZvckRlYnVnZ2VyKGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbV9kZWVwUG9z
aXRpb24uZGVidWdEZXNjcmlwdGlvbigpOwogfQogCiB2b2lkIFZpc2libGVQb3NpdGlvbjo6c2hv
d1RyZWVGb3JUaGlzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlv
bi5oCmluZGV4IDU2MjY0NDQyYThmNTA5MmUyZWI5YmExYzE4MTUzYWJkOGUzZTE3MTEuLjE3Zjgy
MThmYTJiODkxYWZhNjNhMzBjMzk3MTBiZDNmYTFmZWM5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlUG9zaXRpb24uaApAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAgICAgdm9pZCBkZWJ1Z1Bvc2l0aW9uKGNvbnN0IGNoYXIq
IG1zZyA9ICIiKSBjb25zdDsKLSAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKKyAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigp
IGNvbnN0OwogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29uc3Q7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggNDNkZWUwYTFk
Zjg3ZjA2OGU3MDhlZGNhY2Y3NGJkMDA5Y2FiMTAwNy4uMzlkZWJlNTllNTYxZWNkOTRjMzJiNzUw
NWZjN2YzNzhlZDQwYmFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxl
Y3Rpb24uY3BwCkBAIC02NzUsMjUgKzY3NSwyMCBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OmRl
YnVnUG9zaXRpb24oKSBjb25zdAogICAgIGZwcmludGYoc3RkZXJyLCAiPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT1cbiIpOwogfQogCi12b2lkIFZpc2libGVTZWxlY3Rpb246OmZvcm1h
dEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorU3RyaW5n
IFZpc2libGVTZWxlY3Rpb246OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwotICAgIFN0cmluZyBzOwogCiAgICAgaWYgKGlzTm9uZSgpKSB7CiAg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI8bm9uZT4iKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBjb25zdCBpbnQgRm9ybWF0QnVmZmVyU2l6ZSA9IDEwMjQ7Ci0gICAgICAgIGNoYXIgc1tG
b3JtYXRCdWZmZXJTaXplXTsKICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZyb20gIik7
Ci0gICAgICAgIHN0YXJ0KCkuZm9ybWF0Rm9yRGVidWdnZXIocywgRm9ybWF0QnVmZmVyU2l6ZSk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQocyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhcnQo
KS5kZWJ1Z0Rlc2NyaXB0aW9uKCkpOwogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHRv
ICIpOwotICAgICAgICBlbmQoKS5mb3JtYXRGb3JEZWJ1Z2dlcihzLCBGb3JtYXRCdWZmZXJTaXpl
KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChzKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChlbmQo
KS5kZWJ1Z0Rlc2NyaXB0aW9uKCkpOwogICAgIH0KIAotICAgIHN0cm5jcHkoYnVmZmVyLCByZXN1
bHQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsZW5ndGggLSAxKTsKKyAgICByZXR1cm4gcmVz
dWx0LnRvU3RyaW5nKCk7CiB9CiAKIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2hvd1RyZWVGb3JU
aGlzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNl
bGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKaW5k
ZXggMDNiNjRkYTMzZWYzOGRhMzAyYzMwYTE4MTRjZWY5NTgwZTZjN2I3OS4uYzAxZTFlNDUzN2Zj
YTZkN2Y4MTEwNTZiZTgxYjhlZDIzNTI1ZTBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoVFJFRV9ERUJVR0dJTkcpCiAgICAgdm9pZCBkZWJ1Z1Bvc2l0aW9uKCkgY29uc3Q7Ci0gICAg
dm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29u
c3Q7CisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICB2b2lkIHNob3dU
cmVlRm9yVGhpcygpIGNvbnN0OwogI2VuZGlmCiAK
</data>
<flag name="review"
          id="424065"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408622</attachid>
            <date>2020-09-12 15:59:26 -0700</date>
            <delta_ts>2020-09-12 18:31:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216447-20200912155925.patch</filename>
            <type>text/plain</type>
            <size>16347</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwZmM3ZWQ3OWFhMjM5
NDg2YmU2MDZjYzk5YjJlZTdhYTUyYjU5NS4uYjlmYTg5NTliODczMjI1ZTQ3OWQwMzhkZjIyMGNj
OTQzZDkzYmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA5LTEyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgZm9y
bWF0Rm9yRGVidWdnZXIoKSB3aGljaCB1c2VzIHJhdyBjaGFyKiB3aXRoIGRlYnVnRGVzY3JpcHRp
b24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
NDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgZm9ybWF0
Rm9yRGVidWdnZXIoKSByZWxpZWQgb24gcmF3IGNoYXIqIGFuZCBidWZmZXIgbGVuZ3Rocy4gUmVw
bGFjZSB3aXRoIGRlYnVnRGVzY3JpcHRpb24oKQorICAgICAgICB3aGljaCByZXR1cm5zIGEgU3Ry
aW5nLCBhbmQgaXMgYWxyZWFkeSBhIGNvbnZlbnRpb24gdXNlZCBpbiB2YXJpb3VzIGNsYXNzZXMu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZGVi
dWdEZXNjcmlwdGlvbkZvclRleHRNYXJrZXI6XSk6CisgICAgICAgIChmb3JtYXRGb3JEZWJ1Z2dl
cik6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Zm9ybWF0Rm9yRGVidWdnZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9FbGVt
ZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpmb3JtYXRG
b3JEZWJ1Z2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmRlYnVn
RGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmZvcm1hdEZv
ckRlYnVnZ2VyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAg
ICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmRlYnVnRGVz
Y3JpcHRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmZvcm1hdEZvckRlYnVn
Z2VyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vUmFuZ2UuaDoKKyAgICAgICAgKiBk
b20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1RleHQuaDoKKyAgICAgICAgKiBlZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpk
ZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojpmb3JtYXRGb3JEZWJ1Z2dlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6ZGVidWdEZXNjcmlwdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OmZvcm1hdEZvckRlYnVnZ2Vy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oOgor
ICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWaXNpYmxlU2VsZWN0aW9uOjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpc2libGVTZWxlY3Rpb246OmZvcm1hdEZvckRlYnVnZ2VyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKwogMjAyMC0wOS0xMCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNz
IGEgcG9zdC1jb21taXQgcmV2aWV3IGNvbW1lbnQgYWZ0ZXIgcjI2Njg4NwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAxOTViZDc0ZGRjZWM5NzE3OTIzNTk5NjU2
YTlkODFmZGFkNjBjNjU5Li4zYjYyMTU1NjRkNmI2NjgyNTk1ZWVkOGIxNjM5ODhkMmE3MTBjZDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMzY4OCw5ICsz
Njg4LDcgQEAgLSAoTlNEYXRhKilkb0FYUlRGRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKICNpZiBF
TkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAtIChOU1N0cmluZyAqKWRlYnVnRGVzY3JpcHRpb25Gb3JU
ZXh0TWFya2VyOihpZCl0ZXh0TWFya2VyCiB7Ci0gICAgY2hhciBkZXNjcmlwdGlvblsxMDI0XTsK
LSAgICBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdLmZvcm1h
dEZvckRlYnVnZ2VyKGRlc2NyaXB0aW9uLCBzaXplb2YoZGVzY3JpcHRpb24pKTsKLSAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmRlc2NyaXB0aW9uXTsKKyAgICByZXR1
cm4gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXS5kZWJ1Z0Rl
c2NyaXB0aW9uKCk7CiAKIH0KIApAQCAtMzcyOCwxNCArMzcyNiwxMCBAQCBzdGF0aWMgdm9pZCBm
b3JtYXRGb3JEZWJ1Z2dlcihjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYgcmFuZ2UsIGNoYXIq
IGJ1ZmZlciwgdQogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIAotICAgIGNvbnN0
IGludCBGb3JtYXRCdWZmZXJTaXplID0gMTAyNDsKLSAgICBjaGFyIGZvcm1hdFtGb3JtYXRCdWZm
ZXJTaXplXTsKICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZnJvbSAiKTsKLSAgICByYW5nZS5z
dGFydC5mb3JtYXRGb3JEZWJ1Z2dlcihmb3JtYXQsIEZvcm1hdEJ1ZmZlclNpemUpOwotICAgIHJl
c3VsdC5hcHBlbmQoZm9ybWF0KTsKKyAgICByZXN1bHQuYXBwZW5kKHJhbmdlLnN0YXJ0LmRlYnVn
RGVzY3JpcHRpb24oKSk7CiAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB0byAiKTsKLSAgICBy
YW5nZS5lbmQuZm9ybWF0Rm9yRGVidWdnZXIoZm9ybWF0LCBGb3JtYXRCdWZmZXJTaXplKTsKLSAg
ICByZXN1bHQuYXBwZW5kKGZvcm1hdCk7CisgICAgcmVzdWx0LmFwcGVuZChyYW5nZS5lbmQuZGVi
dWdEZXNjcmlwdGlvbigpKTsKICAgICAKICAgICBzdHJsY3B5KGJ1ZmZlciwgcmVzdWx0LnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgbGVuZ3RoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRl
eCA3NDY4ZmE0M2RkYTcyNDRmNDZjMGUzMWIxMGQ4MDM3NWMzMWE0YTJjLi5hZTEzYWZhMGFjOWYx
ZDg0NGNkZjcwMDVmYTcyNmQ1ZjJlNzA3NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0y
NzIyLDM2ICsyNzIyLDYgQEAgU3RyaW5nIEVsZW1lbnQ6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25z
dAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLSNpZiBFTkFCTEUoVFJFRV9E
RUJVR0dJTkcpCi0KLXZvaWQgRWxlbWVudDo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVy
LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0g
ICAgU3RyaW5nIHM7Ci0KLSAgICByZXN1bHQuYXBwZW5kKG5vZGVOYW1lKCkpOwotCi0gICAgcyA9
IGdldElkQXR0cmlidXRlKCk7Ci0gICAgaWYgKHMubGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgIGlm
IChyZXN1bHQubGVuZ3RoKCkgPiAwKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
IjsgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJpZD0iKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChzKTsKLSAgICB9Ci0KLSAgICBzID0gZ2V0QXR0cmlidXRlKGNsYXNzQXR0cik7
Ci0gICAgaWYgKHMubGVuZ3RoKCkgPiAwKSB7Ci0gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKCkg
PiAwKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIjsgIik7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCJjbGFzcz0iKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChzKTsK
LSAgICB9Ci0KLSAgICBzdHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgbGVuZ3RoIC0gMSk7Ci19Ci0KLSNlbmRpZgotCiBjb25zdCBWZWN0b3I8UmVmUHRyPEF0
dHI+PiYgRWxlbWVudDo6YXR0ck5vZGVMaXN0KCkKIHsKICAgICBBU1NFUlQoaGFzU3ludGhldGlj
QXR0ckNoaWxkTm9kZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA4ZTA4YjdkYzg3NDFlOTM1
Y2MxZmRhODg2MzRkMDljYTk0YjEyNTQ4Li5hNmRhOTBlNDVkN2QxZTM3ZTIxMzdmODA5YzY0MmFk
MDIxNmRkMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTY5OSwxMCArNjk5LDYgQEAgcHJpdmF0
ZToKICAgICBMYXlvdXRSZWN0IGFic29sdXRlRXZlbnRCb3VuZHMoYm9vbCYgYm91bmRzSW5jbHVk
ZUFsbERlc2NlbmRhbnRFbGVtZW50cywgYm9vbCYgaW5jbHVkZXNGaXhlZFBvc2l0aW9uRWxlbWVu
dHMpOwogICAgIExheW91dFJlY3QgYWJzb2x1dGVFdmVudEJvdW5kc09mRWxlbWVudEFuZERlc2Nl
bmRhbnRzKGJvb2wmIGluY2x1ZGVzRml4ZWRQb3NpdGlvbkVsZW1lbnRzKTsKIAotI2lmIEVOQUJM
RShUUkVFX0RFQlVHR0lORykKLSAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgotCiAjaWYgRU5BQkxF
KElOVEVSU0VDVElPTl9PQlNFUlZFUikKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA1YjFhNGIyNGVkZDgy
OTYyMjVjMjUzYmFjMTFjMTNjOWVlYmMxNGNjLi5lODdiMDkzODQxOTM3ZDgzNTg4YTE0YTlhMzg1
MWIzNjA2MmRlNGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNzU3LDkgKzE3NTcsOCBAQCBGbG9h
dFBvaW50IE5vZGU6OmNvbnZlcnRGcm9tUGFnZShjb25zdCBGbG9hdFBvaW50JiBwKSBjb25zdAog
CiBTdHJpbmcgTm9kZTo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG5vZGVOYW1lKCksICIgMHgiX3MsIGhl
eChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcyksIExvd2VyY2FzZSkpOwotICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgYXV0byBuYW1lID0gbm9kZU5hbWUoKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZyhuYW1lLmlzRW1wdHkoKSA/ICI8bm9uZT4iIDogIiIsIG5hbWUs
ICIgMHgiX3MsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcyksIExvd2VyY2Fz
ZSkpOwogfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpAQCAtMTg4NCwyMCArMTg4Myw2
IEBAIHZvaWQgTm9kZTo6c2hvd1RyZWVBbmRNYXJrKGNvbnN0IE5vZGUqIG1hcmtlZE5vZGUxLCBj
b25zdCBjaGFyKiBtYXJrZWRMYWJlbDEsIGNvCiAgICAgdHJhdmVyc2VUcmVlQW5kTWFyayhzdGFy
dGluZ0luZGVudCwgcm9vdE5vZGUsIG1hcmtlZE5vZGUxLCBtYXJrZWRMYWJlbDEsIG1hcmtlZE5v
ZGUyLCBtYXJrZWRMYWJlbDIpOwogfQogCi12b2lkIE5vZGU6OmZvcm1hdEZvckRlYnVnZ2VyKGNo
YXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAotewotICAgIFN0cmluZyByZXN1bHQ7
Ci0gICAgU3RyaW5nIHM7Ci0KLSAgICBzID0gbm9kZU5hbWUoKTsKLSAgICBpZiAocy5pc0VtcHR5
KCkpCi0gICAgICAgIHJlc3VsdCA9ICI8bm9uZT4iOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0
ID0gczsKLQotICAgIHN0cm5jcHkoYnVmZmVyLCByZXN1bHQudXRmOCgpLmRhdGEoKSwgbGVuZ3Ro
IC0gMSk7Ci19Ci0KIHN0YXRpYyBDb250YWluZXJOb2RlKiBwYXJlbnRPclNoYWRvd0hvc3RPckZy
YW1lT3duZXIoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQg
PSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA0OWFjYTc3
MjRmZGM4YmM3ZTYxMWFiNjRkODkzMDVlYTVjMjNmMDI3Li5kMDA1NTVkYWRhM2M5NDM3NzEzNzQ3
MGY2ODkzZmVkZDczNTY2Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQyMyw4ICs0MjMsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OwogCiAjaWYg
RU5BQkxFKFRSRUVfREVCVUdHSU5HKQotICAgIHZpcnR1YWwgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dl
cihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7Ci0KICAgICB2b2lkIHNob3dO
b2RlKGNvbnN0IGNoYXIqIHByZWZpeCA9ICIiKSBjb25zdDsKICAgICB2b2lkIHNob3dUcmVlRm9y
VGhpcygpIGNvbnN0OwogICAgIHZvaWQgc2hvd05vZGVQYXRoRm9yVGhpcygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggOTRlMGU5YzA1MWRhZGFkYTczZTllMmY0NzQ2YzlmM2Fk
OWFlN2FlMC4uMmEzNDIxNWQ0MzFmMTg0N2UzNTNiYjg5YzczYTQ5NDc1MzMwMjE1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwCkBAIC0xMzc5LDIyICsxMzc5LDExIEBAIHZvaWQgUG9zaXRpb246
OmRlYnVnUG9zaXRpb24oY29uc3QgY2hhciogbXNnKSBjb25zdAogICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIlBvc2l0aW9uIFslc106ICVzIFslcF0gYXQgJWRcbiIsIG1zZywgZGVwcmVjYXRlZE5v
ZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCBkZXByZWNhdGVkTm9kZSgpLCBtX29mZnNl
dCk7CiB9CiAKLXZvaWQgUG9zaXRpb246OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwg
dW5zaWduZWQgbGVuZ3RoKSBjb25zdAorU3RyaW5nIFBvc2l0aW9uOjpkZWJ1Z0Rlc2NyaXB0aW9u
KCkgY29uc3QKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLQogICAgIGlmIChpc051bGwo
KSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIjxudWxsPiIpOwotICAgIGVsc2Ugewot
ICAgICAgICBjaGFyIHNbMTAyNF07Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJvZmZz
ZXQgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIobV9vZmZzZXQpOwotICAgICAgICBy
ZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOwotICAgICAgICBkZXByZWNhdGVkTm9kZSgpLT5m
b3JtYXRGb3JEZWJ1Z2dlcihzLCBzaXplb2YocykpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHMp
OwotICAgIH0KLQotICAgIHN0cm5jcHkoYnVmZmVyLCByZXN1bHQudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBsZW5ndGggLSAxKTsKKyAgICAgICAgcmV0dXJuICI8bnVsbD4iX3M7CisgICAgcmV0
dXJuIG1ha2VTdHJpbmcoIm9mZnNldCAiLCBtX29mZnNldCwgIiBvZiAiLCBkZXByZWNhdGVkTm9k
ZSgpLT5kZWJ1Z0Rlc2NyaXB0aW9uKCkpOwogfQogCiB2b2lkIFBvc2l0aW9uOjpzaG93QW5jaG9y
VHlwZUFuZE9mZnNldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IGY5ODFjYWEwZWVk
YWRkYmZhZjY5NWMxMjY2YWE4ZTZmNjBjNzhhNGIuLmIxZTUwMzI5M2FiMDc4YzNkNTAxZDFiMDlm
Mjk0ZGQyYTNhYWVkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0xOTMsNyArMTkzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGVidWdQb3NpdGlvbihjb25zdCBjaGFyKiBtc2cgPSAiIikgY29u
c3Q7CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCi0gICAgdm9pZCBmb3JtYXRGb3JEZWJ1
Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRl
YnVnRGVzY3JpcHRpb24oKSBjb25zdDsKICAgICB2b2lkIHNob3dBbmNob3JUeXBlQW5kT2Zmc2V0
KCkgY29uc3Q7CiAgICAgdm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKaW5kZXggMzYyMjI3OWNjYTAzZjExMmJhYzE3NTA0MTg3NDY5ZjViZTE4YzQ5
OC4uYmVlZTM0ZWY5YzEyYWU5M2I5OGYwZmE4YzIxYzBiY2NjODgzYjYwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCkBAIC04MzksMjQgKzgzOSw5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJhbmdlOjpzZXRT
dGFydEJlZm9yZShOb2RlJiBub2RlKQogfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQot
dm9pZCBSYW5nZTo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0CitTdHJpbmcgUmFuZ2U6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogewotICAg
IFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotCi0gICAgY29uc3QgaW50IEZvcm1hdEJ1ZmZlclNpemUg
PSAxMDI0OwotICAgIGNoYXIgc1tGb3JtYXRCdWZmZXJTaXplXTsKLSAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiZnJvbSBvZmZzZXQgIik7Ci0gICAgcmVzdWx0LmFwcGVuZE51bWJlcihtX3N0YXJ0
Lm9mZnNldCgpKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIG9mICIpOwotICAgIHN0YXJ0
Q29udGFpbmVyKCkuZm9ybWF0Rm9yRGVidWdnZXIocywgRm9ybWF0QnVmZmVyU2l6ZSk7Ci0gICAg
cmVzdWx0LmFwcGVuZChzKTsKLSAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIHRvIG9mZnNldCAi
KTsKLSAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG1fZW5kLm9mZnNldCgpKTsKLSAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiIG9mICIpOwotICAgIGVuZENvbnRhaW5lcigpLmZvcm1hdEZvckRlYnVn
Z2VyKHMsIEZvcm1hdEJ1ZmZlclNpemUpOwotICAgIHJlc3VsdC5hcHBlbmQocyk7Ci0KLSAgICBz
dHJuY3B5KGJ1ZmZlciwgcmVzdWx0LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbGVuZ3RoIC0g
MSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImZyb20gb2Zmc2V0ICIsIG1fc3RhcnQub2Zmc2V0
KCksICIgb2YgIiwgc3RhcnRDb250YWluZXIoKS5kZWJ1Z0Rlc2NyaXB0aW9uKCksICIgdG8gb2Zm
c2V0ICIsIG1fZW5kLm9mZnNldCgpLCAiIG9mICIsIGVuZENvbnRhaW5lcigpLmRlYnVnRGVzY3Jp
cHRpb24oKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCAxZWM1YWVkNGM1MDAwZjdm
NWM5MzQxNzViN2U5MjNjY2JiMDg0NGRhLi4wMDk3YmJiOTFkYzZiMjc5NjM3MTA0MmE5MzlkMjVi
ZjdjMjJiYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHRleHROb2RlU3BsaXQoVGV4dCYgb2xkTm9kZSk7CiAKICNpZiBFTkFCTEUoVFJFRV9E
RUJVR0dJTkcpCi0gICAgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2ln
bmVkIGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsK
ICNlbmRpZgogCiAgICAgZW51bSBBY3Rpb25UeXBlIDogdWludDhfdCB7IERlbGV0ZSwgRXh0cmFj
dCwgQ2xvbmUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCAxNDAyMDk2OTUzYjgwNzA5NDI4YzI3OGI4
MjY0ODkzYmMzYTZjYmZiLi42NTNmYWExYzEwOTFlODc1NGY3ZTk5YjE5MDUzZTVjZDA0MDZiN2M5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHQuY3BwCkBAIC0yNDUsMTQgKzI0NSw2IEBAIFN0cmluZyBUZXh0OjpkZWJ1
Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQog
Ci0jaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQotdm9pZCBUZXh0Ojpmb3JtYXRGb3JEZWJ1Z2dl
cihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKLXsKLSAgICBzdHJuY3B5KGJ1
ZmZlciwgZGVidWdEZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCksIGxlbmd0aCAtIDEpOwotICAg
IGJ1ZmZlcltsZW5ndGggLSAxXSA9ICdcMCc7Ci19Ci0jZW5kaWYKLQogdm9pZCBUZXh0OjpzZXRE
YXRhQW5kVXBkYXRlKGNvbnN0IFN0cmluZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBs
YWNlZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoKQogewogICAg
IGF1dG8gb2xkRGF0YSA9IGRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCmluZGV4IGM1M2RkMTYyOGY1YWFkYjY3
NjA2OTg5NzkyODFjMzk3ZWQwMGUxODEuLjdkYWIwNDFiYjVkZDIyMmEwNTczMmE4MWZlNWViZmQy
NWQzNjY2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuaApAQCAtNzIsMTAgKzcyLDYgQEAgcHJpdmF0ZToKICAgICBi
b29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBSZWY8VGV4dD4gdmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmKTsKLQotI2lmIEVOQUJM
RShUUkVFX0RFQlVHR0lORykKLSAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdCBvdmVycmlkZTsKLSNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAppbmRleCBiZmNkZDc2YjRhNTA4ZjliODE4NmJlM2ZmYzU3Nzg3MDQ5NWVhMTJjLi44MDUyNmRk
ZTQ3NGIzM2NmOWU3NDZhZDAyZGJhNTk0ZDZmYjQwYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjQ4Myw5ICsyNDgzLDkgQEAgdm9pZCBGcmFtZVNl
bGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZUFmdGVyTGF5b3V0T3JTdHlsZUNoYW5nZSgpCiAKICNp
ZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAKLXZvaWQgRnJhbWVTZWxlY3Rpb246OmZvcm1hdEZv
ckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAorU3RyaW5nIEZy
YW1lU2VsZWN0aW9uOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBtX3NlbGVjdGlv
bi5mb3JtYXRGb3JEZWJ1Z2dlcihidWZmZXIsIGxlbmd0aCk7CisgICAgcmV0dXJuIG1fc2VsZWN0
aW9uLmRlYnVnRGVzY3JpcHRpb24oKTsKIH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2hvd1Ry
ZWVGb3JUaGlzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaApp
bmRleCBhYjZkMTNlZDAyM2E2N2NjN2FhZjUyZDI2NjNkNDhmMTk3MGU3MzY0Li44OGZkZmU2ZDBi
NjU0YWY1NzE4ZjYxYmY0MTJhZjJlNzkzOTUzM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5oCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdXBkYXRlQXBwZWFyYW5jZSgpOwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdH
SU5HKQotICAgIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBs
ZW5ndGgpIGNvbnN0OworICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAg
dm9pZCBzaG93VHJlZUZvclRoaXMoKSBjb25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggZTg3MmM3NjUyNmZjMGQzMTJlNWYyZjUx
MTQzOTM2ODgwMzY0ZTQ4Ni4uZmUyMWM1OWU1NWYwMjMyNWQ2ZDNkZGRlYjMzNzFjZTZiYzZjNjcw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNjgx
LDkgKzY4MSw5IEBAIHZvaWQgVmlzaWJsZVBvc2l0aW9uOjpkZWJ1Z1Bvc2l0aW9uKGNvbnN0IGNo
YXIqIG1zZykgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgVmlzaWJsZVBvc2l0aW9uOjpmb3JtYXRG
b3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKK1N0cmluZyBW
aXNpYmxlUG9zaXRpb246OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIG1fZGVlcFBv
c2l0aW9uLmZvcm1hdEZvckRlYnVnZ2VyKGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICByZXR1cm4gbV9k
ZWVwUG9zaXRpb24uZGVidWdEZXNjcmlwdGlvbigpOwogfQogCiB2b2lkIFZpc2libGVQb3NpdGlv
bjo6c2hvd1RyZWVGb3JUaGlzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQ
b3NpdGlvbi5oCmluZGV4IDU2MjY0NDQyYThmNTA5MmUyZWI5YmExYzE4MTUzYWJkOGUzZTE3MTEu
LjE3ZjgyMThmYTJiODkxYWZhNjNhMzBjMzk3MTBiZDNmYTFmZWM5NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaApAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAgICAgdm9pZCBkZWJ1Z1Bvc2l0aW9uKGNvbnN0
IGNoYXIqIG1zZyA9ICIiKSBjb25zdDsKLSAgICB2b2lkIGZvcm1hdEZvckRlYnVnZ2VyKGNoYXIq
IGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdDsKKyAgICBTdHJpbmcgZGVidWdEZXNjcmlw
dGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2hvd1RyZWVGb3JUaGlzKCkgY29uc3Q7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggNDNk
ZWUwYTFkZjg3ZjA2OGU3MDhlZGNhY2Y3NGJkMDA5Y2FiMTAwNy4uMWRiOTE5MWFkNjA4ZjMzYmE3
MzY4N2Q5YTdjNDA5NDBmMzVhYzNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uY3BwCkBAIC02NzUsMjUgKzY3NSwxMSBAQCB2b2lkIFZpc2libGVTZWxlY3Rp
b246OmRlYnVnUG9zaXRpb24oKSBjb25zdAogICAgIGZwcmludGYoc3RkZXJyLCAiPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwogfQogCi12b2lkIFZpc2libGVTZWxlY3Rpb246
OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAor
U3RyaW5nIFZpc2libGVTZWxlY3Rpb246OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogewotICAg
IFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIFN0cmluZyBzOwotCi0gICAgaWYgKGlzTm9uZSgp
KSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCI8bm9uZT4iKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBjb25zdCBpbnQgRm9ybWF0QnVmZmVyU2l6ZSA9IDEwMjQ7Ci0gICAgICAgIGNo
YXIgc1tGb3JtYXRCdWZmZXJTaXplXTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZy
b20gIik7Ci0gICAgICAgIHN0YXJ0KCkuZm9ybWF0Rm9yRGVidWdnZXIocywgRm9ybWF0QnVmZmVy
U2l6ZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQocyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRM
aXRlcmFsKCIgdG8gIik7Ci0gICAgICAgIGVuZCgpLmZvcm1hdEZvckRlYnVnZ2VyKHMsIEZvcm1h
dEJ1ZmZlclNpemUpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHMpOwotICAgIH0KLQotICAgIHN0
cm5jcHkoYnVmZmVyLCByZXN1bHQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsZW5ndGggLSAx
KTsKKyAgICBpZiAoaXNOb25lKCkpCisgICAgICAgIHJldHVybiAiPG5vbmU+Il9zOworICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJmcm9tICIsIHN0YXJ0KCkuZGVidWdEZXNjcmlwdGlvbigpLCAiIHRv
ICIsIGVuZCgpLmRlYnVnRGVzY3JpcHRpb24oKSk7CiB9CiAKIHZvaWQgVmlzaWJsZVNlbGVjdGlv
bjo6c2hvd1RyZWVGb3JUaGlzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
U2VsZWN0aW9uLmgKaW5kZXggMDNiNjRkYTMzZWYzOGRhMzAyYzMwYTE4MTRjZWY5NTgwZTZjN2I3
OS4uYzAxZTFlNDUzN2ZjYTZkN2Y4MTEwNTZiZTgxYjhlZDIzNTI1ZTBjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAgICAgdm9pZCBkZWJ1Z1Bvc2l0aW9u
KCkgY29uc3Q7Ci0gICAgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2ln
bmVkIGxlbmd0aCkgY29uc3Q7CisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsK
ICAgICB2b2lkIHNob3dUcmVlRm9yVGhpcygpIGNvbnN0OwogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>