<?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>235873</bug_id>
          
          <creation_ts>2022-01-30 12:44:41 -0800</creation_ts>
          <short_desc>CSP: Improve compatibility of source matching</short_desc>
          <delta_ts>2022-04-02 10:24:26 -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="Patrick Griffis">pgriffis</reporter>
          <assigned_to name="Patrick Griffis">pgriffis</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>kris</cc>
    
    <cc>laurens.von.assel</cc>
    
    <cc>m.kurz+webkitbugs</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkitbugs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835396</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-01-30 12:44:41 -0800</bug_when>
    <thetext>CSP: Improve compatibility of source matching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835397</commentid>
    <comment_count>1</comment_count>
      <attachid>450365</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-01-30 12:45:22 -0800</bug_when>
    <thetext>Created attachment 450365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835398</commentid>
    <comment_count>2</comment_count>
      <attachid>450366</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-01-30 13:04:03 -0800</bug_when>
    <thetext>Created attachment 450366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835402</commentid>
    <comment_count>3</comment_count>
      <attachid>450366</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-30 13:56:39 -0800</bug_when>
    <thetext>Comment on attachment 450366
Patch

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

Generally good; room for improvement

&gt; Source/WebCore/page/csp/ContentSecurityPolicy.cpp:240
&gt; +    m_selfSource = makeUnique&lt;ContentSecurityPolicySource&gt;(*this, m_selfSourceProtocol, securityOrigin.host(), effectivePort, emptyString(), false, false, true);

This “false, false, true” is not a good pattern: difficult to spot mistakes. This is why we end up using the cumbersome techniques that involve enumerations. Otherwise there is just super subtle code like this.

&gt; Source/WebCore/page/csp/ContentSecurityPolicy.h:173
&gt; +    const String&amp; selfScheme() const { return m_selfSourceProtocol; };

Why mix terminology between “scheme“ and “protocol“?

&gt; Source/WebCore/page/csp/ContentSecurityPolicySource.cpp:61
&gt; +    const String&amp; scheme = m_scheme.isEmpty() ? m_policy.selfScheme() : m_scheme;

auto&amp;

&gt; Source/WebCore/page/csp/ContentSecurityPolicySource.cpp:62
&gt; +    String urlScheme = url.protocol().convertToASCIILowercase();

auto

&gt; Source/WebCore/page/csp/ContentSecurityPolicySource.cpp:120
&gt; +    bool isUpgradeSecure = (port &amp;&amp; port.value() == 443) || (!port &amp;&amp; WTF::isDefaultPortForProtocol(443, url.protocol()));

“port == 443” should so the same thing as “port &amp;&amp; port.value() == 443”

&gt; Source/WebCore/page/csp/ContentSecurityPolicySource.cpp:121
&gt; +    bool isCurrentUpgradable = (m_port &amp;&amp; m_port.value() == 80) || (m_scheme == &quot;http&quot; &amp;&amp; (!m_port || m_port.value() == 443));

Same thing here. “m_port == 80”

By the way, could also do m_port.value_or(443) == 443 or just leave out .value().

&gt; Source/WebCore/page/csp/ContentSecurityPolicySource.h:39
&gt; +    ContentSecurityPolicySource(const ContentSecurityPolicy&amp;, const String&amp; scheme, const String&amp; host, std::optional&lt;uint16_t&gt; port, const String&amp; path, bool hostHasWildcard, bool portHasWildcard, bool isSelfSource);

This new argument should be an enumeration, not a bool. All callers are passing constant values, and this is just the situation where WebKit style calls for enumerations so that you can see at the call site what the value means.

&gt; LayoutTests/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-websocket-self.sub-expected.txt:2
&gt; +PASS Expecting logs: [&quot;allowed&quot;, &quot;allowed&quot;]

Not enough test coverage. This progression is great, but we need tests covering all the improvements this patch makes.

If not already in WPT, then add to WPT or at least to WebKit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836129</commentid>
    <comment_count>4</comment_count>
      <attachid>450564</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-02-01 13:46:48 -0800</bug_when>
    <thetext>Created attachment 450564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836130</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-02-01 13:49:28 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)

I applied all of your fixes.

&gt; Not enough test coverage. This progression is great, but we need tests
&gt; covering all the improvements this patch makes.
&gt; 
&gt; If not already in WPT, then add to WPT or at least to WebKit tests.

I ended up limiting this patch is scope a bit by removing the default port changes, as WebKit tests asserted otherwise and I honestly think its correct. I&apos;ll try to have a discussion with some Chromium folks about this.

In the end the test cases covers http-&gt;wss and http-&gt;ws which is the majority of this change. I don&apos;t see an obvious way to set up WPT to use non-http custom protocols that can upgrade to https.

If that sounds reasonable to you I&apos;ll commit it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836138</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-01 14:02:50 -0800</bug_when>
    <thetext>It’s always risky to make improvements that don’t have regression tests.

In past, when that happened, we expanded the capabilities of WebKit regression tests so we could test the improvements, sometimes using tests written in C++ or Objective-C if we couldn’t do them in LayoutTests-style tests.

But that would not block landing the fix. It’s important follow-through for the health of the product, though. We don’t want a future contributor to unknowingly break this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836140</commentid>
    <comment_count>7</comment_count>
      <attachid>450564</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-01 14:05:54 -0800</bug_when>
    <thetext>Comment on attachment 450564
Patch

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

&gt; Source/WebCore/page/csp/ContentSecurityPolicySource.cpp:120
&gt; +    bool isUpgradeSecure = (port == 443) || (!port &amp;&amp; WTF::isDefaultPortForProtocol(443, url.protocol()));

I don’t think the WTF:: prefix is needed here.

&gt; Source/WebCore/page/csp/ContentSecurityPolicySourceList.h:64
&gt; -        bool hasWildcard { false };
&gt; +        HasWildcard hasWildcard { HasWildcard::No };

Is this change helpful? I don’t strongly object, after all it’s consistent with what we have to do to make function arguments look good, and is helpful if we are using structure initialization syntax, but I’m not sure how you decided.

&gt; Source/WebCore/page/csp/ContentSecurityPolicySourceList.h:68
&gt; -        bool hasWildcard { false };
&gt; +        HasWildcard hasWildcard { HasWildcard::No };

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836240</commentid>
    <comment_count>8</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-02-01 16:52:14 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Is this change helpful? I don’t strongly object, after all it’s consistent
&gt; with what we have to do to make function arguments look good, and is helpful
&gt; if we are using structure initialization syntax, but I’m not sure how you
&gt; decided.

It was only for consistency in the area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836247</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-01 16:56:45 -0800</bug_when>
    <thetext>Well the data member is just a bool, not a HasWildcard, so it’t not completely consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836266</commentid>
    <comment_count>10</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-02-01 17:46:25 -0800</bug_when>
    <thetext>Alright, I&apos;ll change it back.

Also found bug 235992 while in the area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836469</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-02-02 09:09:11 -0800</bug_when>
    <thetext>rdar://83788668</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848454</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-04 16:59:19 -0800</bug_when>
    <thetext>(In reply to Patrick Griffis from comment #10)
&gt; Alright, I&apos;ll change it back.
&gt; 
&gt; Also found bug 235992 while in the area.

Did you intend to do more here? I&apos;m not sure if we should review either of these patches, or if the work was done elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848525</commentid>
    <comment_count>13</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-03-05 07:42:37 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #12)
&gt; (In reply to Patrick Griffis from comment #10)
&gt; &gt; Alright, I&apos;ll change it back.
&gt; &gt; 
&gt; &gt; Also found bug 235992 while in the area.
&gt; 
&gt; Did you intend to do more here? I&apos;m not sure if we should review either of
&gt; these patches, or if the work was done elsewhere?

I was intending for another revision. Just got sick and pulled to other tasks. It&apos;s on my list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851474</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-15 13:37:53 -0700</bug_when>
    <thetext>*** Bug 201591 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857325</commentid>
    <comment_count>15</comment_count>
      <attachid>456375</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-04-01 11:09:54 -0700</bug_when>
    <thetext>Created attachment 456375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857326</commentid>
    <comment_count>16</comment_count>
      <attachid>456376</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-04-01 11:13:09 -0700</bug_when>
    <thetext>Created attachment 456376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857335</commentid>
    <comment_count>17</comment_count>
      <attachid>456376</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-04-01 11:35:42 -0700</bug_when>
    <thetext>Comment on attachment 456376
Patch

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

Looks good! I see Darin already reviewed it but I just had one spec question.

&gt; Source/WebCore/page/csp/ContentSecurityPolicySource.cpp:70
&gt; +        return true;

I&apos;m looking at the spec:

&quot;
More formally, two ASCII strings (A and B) are said to scheme-part match if the following algorithm returns &quot;Matches&quot;:

1. If one of the following is true, return &quot;Matches&quot;:
    1. A is an ASCII case-insensitive match for B.
    2. A is an ASCII case-insensitive match for &quot;http&quot;, and B is an ASCII case-insensitive match for &quot;https&quot;.
    3. A is an ASCII case-insensitive match for &quot;ws&quot;, and B is an ASCII case-insensitive match for &quot;wss&quot;, &quot;http&quot;, or &quot;https&quot;.
    4. A is an ASCII case-insensitive match for &quot;wss&quot;, and B is an ASCII case-insensitive match for &quot;https&quot;.

2. Return &quot;Does Not Match&quot;.
&quot;

It seems we directly cover (1) with the first check of (scheme == urlScheme). We cover (2) with (scheme == &quot;http&quot; &amp;&amp; urlScheme == &quot;https&quot;). And we cover part of (3) with (scheme == &quot;ws&quot; &amp;&amp; urlScheme == &quot;wss&quot;). Do we also need a check for scheme == &apos;ws&apos; &amp;&amp; urlScheme == &apos;http&apos;/&apos;https&apos; and (4)?

&gt; Source/WebCore/page/csp/ContentSecurityPolicySourceList.cpp:125
&gt; +    // Also not allowed by the Content Security Policy Level 3 spec., we allow a data URL to match

Tiny nit that already existed before your patch: we usually try to make comments full sentences with periods at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857362</commentid>
    <comment_count>18</comment_count>
      <attachid>456390</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-04-01 12:28:40 -0700</bug_when>
    <thetext>Created attachment 456390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857363</commentid>
    <comment_count>19</comment_count>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2022-04-01 12:29:44 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #17)
&gt; It seems we directly cover (1) with the first check of (scheme ==
&gt; urlScheme). We cover (2) with (scheme == &quot;http&quot; &amp;&amp; urlScheme == &quot;https&quot;).
&gt; And we cover part of (3) with (scheme == &quot;ws&quot; &amp;&amp; urlScheme == &quot;wss&quot;). Do we
&gt; also need a check for scheme == &apos;ws&apos; &amp;&amp; urlScheme == &apos;http&apos;/&apos;https&apos; and (4)?

You&apos;re right. Updated to handle this.

&gt; &gt; Source/WebCore/page/csp/ContentSecurityPolicySourceList.cpp:125
&gt; &gt; +    // Also not allowed by the Content Security Policy Level 3 spec., we allow a data URL to match
&gt; 
&gt; Tiny nit that already existed before your patch: we usually try to make
&gt; comments full sentences with periods at the end.

This was a multi-line comment that ended with a period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857365</commentid>
    <comment_count>20</comment_count>
      <attachid>456390</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-04-01 12:35:27 -0700</bug_when>
    <thetext>Comment on attachment 456390
Patch

&gt; &gt; Source/WebCore/page/csp/ContentSecurityPolicySourceList.cpp:125
&gt; &gt; &gt; +    // Also not allowed by the Content Security Policy Level 3 spec., we allow a data URL to match
&gt; &gt;
&gt; &gt; Tiny nit that already existed before your patch: we usually try to make
&gt; &gt; comments full sentences with periods at the end.

&gt; This was a multi-line comment that ended with a period.

Nice! I missed the second line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857584</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-02 09:23:29 -0700</bug_when>
    <thetext>Committed r292266 (249164@main): &lt;https://commits.webkit.org/249164@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456390.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450365</attachid>
            <date>2022-01-30 12:45:22 -0800</date>
            <delta_ts>2022-01-30 13:04:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235873-20220130144521.patch</filename>
            <type>text/plain</type>
            <size>13183</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhjNzQ1MzMxMzJlMGMw
MDgxZWM0MTRiOWU3Y2QyNjg4MzdiNjgyMi4uMDljOWU5NWU1NDkwYTI1YjljMTA0ZjIxNTczYTE4
YjM4NTYzODViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTAxLTMwICBQYXRy
aWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENTUDogSW1wcm92
ZSBjb21wYXRpYmlsaXR5IG9mIHNvdXJjZSBtYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYWlubHkgaW50cm9kdWNlcyB0d28gbmV3
IGNoYW5nZXM6CisKKyAgICAgICAgLSBUaGUgc2VsZiBzb3VyY2Ugd2lsbCBpbmNsdWRlIHRoZSBk
ZWZhdWx0IHBvcnQgZm9yIGl0cyBwcm90b2NvbCBpZiB1bnNwZWNpZmllZC4KKyAgICAgICAgICBU
aGlzIGlzIENocm9taXVtJ3MgYmVoYXZpb3IgYW5kIGZpeGVkIGEgV1BUIGZhaWx1cmUuIEhvd2V2
ZXIgSSBkaWQgbm90IGZpbmQgdGhpcworICAgICAgICAgIGluIHRoZSBzcGVjLgorCisgICAgICAg
IC0gSW1wcm92ZWQgaGFuZGxpbmcgb2YgcHJvdG9jb2wgY2hhbmdlczoKKyAgICAgICAgICAtIEZv
ciBob3N0IGFuZCBzZWxmIHNvdXJjZXMgZGlyZWN0IHVwZ3JhZGVzIGFyZSBhbGxvd2VkICh3cy0+
d3NzKSAoaHR0cC0+aHR0cHMgYWxyZWFkeSB3b3JrZWQpLgorICAgICAgICAgIC0gRm9yIHNlbGYg
c291cmNlcyBzaWRlIGdyYWRlcyBhcmUgbm93IGFsbG93ZWQgKGh0dHAtPndzKS4KKyAgICAgICAg
ICAtIEZvciBzZWxmIHNvdXJjZXMgdXBncmFkZXMgYXJlIGFsd2F5cyBhbGxvd2VkICgqLT5odHRw
cywgKi0+d3NzKS4gICAgICAgICAgCisgICAgICAgIFRoaXMgaXMgZG9jdW1lbnRlZCBoZXJlOiBo
dHRwczovL3d3dy53My5vcmcvVFIvQ1NQMy8jbWF0Y2gtdXJsLXRvLXNvdXJjZS1leHByZXNzaW9u
CisKKyAgICAgICAgSSBhbHNvIGluY2x1ZGVkIHNvbWUgbWlub3IgY2xlYW51cHMgYW5kIGFkZGlu
ZyBvZiBjb21tZW50cy4KKworICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZGF0ZVNv
dXJjZVNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojpwcm90
b2NvbE1hdGNoZXNTZWxmIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6c2VsZlNjaGVtZSBjb25zdCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnNjaGVtZU1hdGNoZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpwb3J0
TWF0Y2hlcyBjb25zdCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0Ojppc1Byb3RvY29sQWxsb3dlZEJ5U3RhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZSk6CisKIDIwMjItMDEtMjkgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRGVsZXRlIEV2ZW50UXVl
dWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKaW5kZXggYjUyNWNiNmJlZTc0ZjM3ZGYwMTlhZjUyZThhYTI2YmMzYmZhODFmMy4uNTNh
ZTU4YjI3NmI4NzUzNjU4NWI4NWZhODUzZDY1ZDgwNTg0NGIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0yMzQsOCArMjM0
LDEwIEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0
IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5Ojp1cGRhdGVTb3VyY2VTZWxmKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdp
bikKIHsKLSAgICBtX3NlbGZTb3VyY2VQcm90b2NvbCA9IHNlY3VyaXR5T3JpZ2luLnByb3RvY29s
KCk7Ci0gICAgbV9zZWxmU291cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2U+KCp0aGlzLCBtX3NlbGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgp
LCBzZWN1cml0eU9yaWdpbi5wb3J0KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7Cisg
ICAgbV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgLy8gVGhlIENTUDMgc3BlYyBpcyB1bmNsZWFyIGFi
b3V0IHRoaXMgaG93ZXZlciBDaHJvbWl1bSBhbHdheXMgY3JlYXRlcyBpdHMgQ1NQU291cmNlcyB3
aXRoIHRoZSBlZmZlY3RpdmUgZGVmYXVsdCBwb3J0LgorICAgIGF1dG8gZWZmZWN0aXZlUG9ydCA9
IHNlY3VyaXR5T3JpZ2luLnBvcnQoKSA/IHNlY3VyaXR5T3JpZ2luLnBvcnQoKSA6IFdURjo6ZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChtX3NlbGZTb3VyY2VQcm90b2NvbCk7CisgICAgbV9zZWxmU291
cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3Nl
bGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBlZmZlY3RpdmVQb3J0LCBl
bXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UsIHRydWUpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpAQCAtMjkw
LDEzICsyOTIsNiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVByb3RvYwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnByb3RvY29sTWF0Y2hlc1NlbGYoY29u
c3QgVVJMJiB1cmwpIGNvbnN0Ci17Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1fc2VsZlNvdXJjZVByb3RvY29sLCAiaHR0cCIpKQotICAgICAgICByZXR1cm4gdXJsLnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKTsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZSh1cmwucHJvdG9jb2woKSwgbV9zZWxmU291cmNlUHJvdG9jb2wpOwotfQotCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwhc3RkOjppc19jb252ZXJ0aWJsZTxQcmVkaWNhdGUsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6VmlvbGF0ZWREaXJlY3RpdmVDYWxsYmFjaz46OnZhbHVlLCBib29sPjo6dHlwZSBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzV2l0aERpc3Bvc2l0aW9uQWxsb3coRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgQXJncyYmLi4uIGFyZ3MpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5oCmluZGV4IDUzZDExNzAzYjIwNDk2MjdmZDEwMmU5NWI0M2E5MGQ1ODQxYmFhNjUuLmM4ODY1
MmE1ODdhMDI4MGM5ZmI3ZDNlYTMzMTczMmE2N2ZmY2NmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBAIC0xNzAsNyArMTcwLDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIC8vIFVzZWQgYnkgQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlCi0gICAgYm9vbCBwcm90b2NvbE1hdGNoZXNTZWxmKGNvbnN0IFVSTCYpIGNvbnN0OworICAg
IGNvbnN0IFN0cmluZyYgc2VsZlNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZlNvdXJjZVBy
b3RvY29sOyB9OwogCiAgICAgdm9pZCBzZXRVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0cyhib29sKTsK
ICAgICBib29sIHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV91cGdy
YWRlSW5zZWN1cmVSZXF1ZXN0czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggZDFkMGU3OTNmMWMwODU2
ZGY1NjU4NDg3Y2Q1YWRjNTJkMTg5ZjRmNC4uYjM3NjJjMGFlNGQ4YzEyOTkxMmMxOWUzOGI1Zjk3
NjQxNTNlNGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0
IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJvb2wg
cG9ydEhhc1dpbGRjYXJkKQorQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNv
bnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJv
b2wgcG9ydEhhc1dpbGRjYXJkLCBib29sIGlzU2VsZlNvdXJjZSkKICAgICA6IG1fcG9saWN5KHBv
bGljeSkKICAgICAsIG1fc2NoZW1lKHNjaGVtZSkKICAgICAsIG1faG9zdChob3N0KQpAQCAtNDIs
MTEgKzQyLDEzIEBAIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvCiAgICAgLCBtX3BvcnQocG9ydCkK
ICAgICAsIG1faG9zdEhhc1dpbGRjYXJkKGhvc3RIYXNXaWxkY2FyZCkKICAgICAsIG1fcG9ydEhh
c1dpbGRjYXJkKHBvcnRIYXNXaWxkY2FyZCkKKyAgICAsIG1faXNTZWxmU291cmNlKGlzU2VsZlNv
dXJjZSkKIHsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6Om1hdGNoZXMo
Y29uc3QgVVJMJiB1cmwsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0CiB7
CisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUDMvI21hdGNoLXVybC10by1zb3VyY2Ut
ZXhwcmVzc2lvbi4KICAgICBpZiAoIXNjaGVtZU1hdGNoZXModXJsKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmIChpc1NjaGVtZU9ubHkoKSkKQEAgLTU2LDExICs1OCwyNCBAQCBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6bWF0Y2hlcyhjb25zdCBVUkwmIHVybCwgYm9v
bCBkaWRSZWNlaXZlUmVkaXJlYwogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6
c2NoZW1lTWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAobV9zY2hlbWUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbV9wb2xpY3kucHJvdG9jb2xNYXRjaGVzU2VsZih1
cmwpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX3NjaGVtZSwgImh0
dHAiKSkKLSAgICAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCk7Ci0gICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29sKCksIG1fc2NoZW1lKTsK
KyAgICBjb25zdCBTdHJpbmcmIHNjaGVtZSA9IG1fc2NoZW1lLmlzRW1wdHkoKSA/IG1fcG9saWN5
LnNlbGZTY2hlbWUoKSA6IG1fc2NoZW1lOworICAgIFN0cmluZyB1cmxTY2hlbWUgPSB1cmwucHJv
dG9jb2woKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworCisgICAgaWYgKHNjaGVtZSA9PSB1
cmxTY2hlbWUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaG9zdC1zb3VyY2VzIGFu
ZCBzZWxmLXNvdXJjZXMgY2FuIGRvIGRpcmVjdCB1cGdyYWRlcy4KKyAgICBpZiAoKHNjaGVtZSA9
PSAiaHR0cCIgJiYgdXJsU2NoZW1lID09ICJodHRwcyIpCisgICAgICAgIHx8IChzY2hlbWUgPT0g
IndzIiAmJiB1cmxTY2hlbWUgPT0gIndzcyIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIHNlbGYtc291cmNlcyBjYW4gYWx3YXlzIHVwZ3JhZGUgdG8gc2VjdXJlIHByb3RvY29scyBv
ciBzaWRlLWdyYWRlLgorICAgIGlmIChtX2lzU2VsZlNvdXJjZQorICAgICAgICAmJiAoKHVybFNj
aGVtZSA9PSAiaHR0cHMiIHx8IHVybFNjaGVtZSA9PSAid3NzIikKKyAgICAgICAgICAgIHx8IChz
Y2hlbWUgPT0gImh0dHAiICYmIHVybFNjaGVtZSA9PSAid3MiKSkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9vbCB3aWxkY2FyZE1hdGNo
ZXMoU3RyaW5nVmlldyBob3N0LCBjb25zdCBTdHJpbmcmIGhvc3RXaXRoV2lsZGNhcmQpCkBAIC0x
MDEsNyArMTE2LDEwIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpwb3J0TWF0
Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBpZiAocG9ydCA9PSBtX3BvcnQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnBy
b3RvY29sSXMoImh0dHBzIikpIHx8IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQudmFsdWUoKSwgImh0dHBzIikpKSkKKyAgICAvLyBob3N0LXNvdXJjZSBhbmQgc2Vs
Zi1zb3VyY2UgYWxsb3dzIHVwZ3JhZGluZyB0byBhIG1vcmUgc2VjdXJlIHNjaGVtZSB3aGljaCBh
bGxvd3MgZm9yIGRpZmZlcmVudCBwb3J0cy4KKyAgICBib29sIGlzVXBncmFkZVNlY3VyZSA9IChw
b3J0ICYmIHBvcnQudmFsdWUoKSA9PSA0NDMpIHx8ICghcG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCg0NDMsIHVybC5wcm90b2NvbCgpKSk7CisgICAgYm9vbCBpc0N1cnJlbnRV
cGdyYWRhYmxlID0gKG1fcG9ydCAmJiBtX3BvcnQudmFsdWUoKSA9PSA4MCkgfHwgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fc2NoZW1lLCAiaHR0cCIpICYmICghbV9wb3J0IHx8IG1f
cG9ydC52YWx1ZSgpID09IDQ0MykpOworICAgIGlmIChpc1VwZ3JhZGVTZWN1cmUgJiYgaXNDdXJy
ZW50VXBncmFkYWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXBvcnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZS5oCmluZGV4IGEyZGI1MDQzODk4ZjJlNjk0N2JjN2IwYTJkZDY0NDNhYjUxNDM4ZDAuLmRl
M2VkNTc1ZDhhZmQ1YzVkNzA4ODgwYzY4YTRlNjEwZWYyN2Y5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCkBAIC0z
Niw3ICszNiw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBjbGFzcyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3kmLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dp
bGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYsIGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIGNvbnN0
IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJvb2wgcG9ydEhhc1dpbGRjYXJk
LCBib29sIGlzU2VsZlNvdXJjZSk7CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgVVJMJiwgYm9v
bCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSA9IGZhbHNlKSBjb25zdDsKIApAQCAtNTcsNiAr
NTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2hvc3RIYXNXaWxkY2FyZDsKICAgICBib29s
IG1fcG9ydEhhc1dpbGRjYXJkOworICAgIGJvb2wgbV9pc1NlbGZTb3VyY2U7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCmluZGV4IDVhNTIwODM3YWI3
MTBiMjQ0OTIzMGJhMzQxYTZjYTA5ZWVjZGNiZWIuLjI1ZmMyMTUxNjY2NjNhMmQ0OTVkMDE4YzJl
OTc2YmUxNzIwNzJlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCkBAIC0xMTgsOSArMTE4LDEw
IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6aXNQcm90b2NvbEFsbG93
ZWRCeVN0YXIoY29uc3QgVVJMJiB1cmwpIGNvCiAgICAgaWYgKG1fcG9saWN5LmFsbG93Q29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlU3RhclRvTWF0Y2hBbnlQcm90b2NvbCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIC8vIEFsdGhvdWdoIG5vdCBhbGxvd2VkIGJ5IHRoZSBDb250ZW50
IFNlY3VyaXR5IFBvbGljeSBMZXZlbCAzIHNwZWMuLCB3ZSBhbGxvdyBhIGRhdGEgVVJMIHRvIG1h
dGNoCisgICAgLy8gVGhpcyBpcyBjb3VudGVyIHRvIHRoZSBDU1AzIHNwZWMgd2hpY2ggb25seSBh
bGxvd3MgSFRUUFMgYnV0IENocm9taXVtIGFsc28gYWxsb3dzIGl0LgorICAgIGJvb2wgaXNBbGxv
d2VkID0gdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCB1cmwucHJvdG9jb2xJcygid3Mi
KSB8fCB1cmwucHJvdG9jb2xJcygid3NzIikgfHwgdXJsLnByb3RvY29sSXMobV9wb2xpY3kuc2Vs
ZlNjaGVtZSgpKTsKKyAgICAvLyBBbHNvIG5vdCBhbGxvd2VkIGJ5IHRoZSBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSBMZXZlbCAzIHNwZWMuLCB3ZSBhbGxvdyBhIGRhdGEgVVJMIHRvIG1hdGNoCiAg
ICAgLy8gImltZy1zcmMgKiIgYW5kIGVpdGhlciBhIGRhdGEgVVJMIG9yIGJsb2IgVVJMIHRvIG1h
dGNoICJtZWRpYS1zcmMgKiIgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgotICAgIGJvb2wgaXNBbGxv
d2VkID0gdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCB1cmwucHJvdG9jb2xJcygid3Mi
KSB8fCB1cmwucHJvdG9jb2xJcygid3NzIikgfHwgbV9wb2xpY3kucHJvdG9jb2xNYXRjaGVzU2Vs
Zih1cmwpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZlTmFtZSwg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmltZ1NyYykpCiAgICAgICAgIGlz
QWxsb3dlZCB8PSB1cmwucHJvdG9jb2xJc0RhdGEoKTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZlTmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXM6Om1lZGlhU3JjKSkKQEAgLTIwNSw3ICsyMDYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBh
cnNlKFN0cgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGlzQ1NQ
RGlyZWN0aXZlTmFtZShzb3VyY2UtPmhvc3QudmFsdWUpKQogICAgICAgICAgICAgICAgIG1fcG9s
aWN5LnJlcG9ydERpcmVjdGl2ZUFzU291cmNlRXhwcmVzc2lvbihtX2RpcmVjdGl2ZU5hbWUsIHNv
dXJjZS0+aG9zdC52YWx1ZSk7Ci0gICAgICAgICAgICBtX2xpc3QuYXBwZW5kKENvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZShtX3BvbGljeSwgc291cmNlLT5zY2hlbWUsIHNvdXJjZS0+aG9zdC52
YWx1ZSwgc291cmNlLT5wb3J0LnZhbHVlLCBzb3VyY2UtPnBhdGgsIHNvdXJjZS0+aG9zdC5oYXNX
aWxkY2FyZCwgc291cmNlLT5wb3J0Lmhhc1dpbGRjYXJkKSk7CisgICAgICAgICAgICBtX2xpc3Qu
YXBwZW5kKENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShtX3BvbGljeSwgc291cmNlLT5zY2hl
bWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgc291cmNlLT5ob3N0LnZhbHVlLCBzb3VyY2Ut
PnBvcnQudmFsdWUsIHNvdXJjZS0+cGF0aCwgc291cmNlLT5ob3N0Lmhhc1dpbGRjYXJkLCBzb3Vy
Y2UtPnBvcnQuaGFzV2lsZGNhcmQsIGZhbHNlKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgbV9wb2xpY3kucmVwb3J0SW52YWxpZFNvdXJjZUV4cHJlc3Npb24obV9kaXJlY3RpdmVOYW1l
LCBTdHJpbmcoYmVnaW5Tb3VyY2UsIGJ1ZmZlci5wb3NpdGlvbigpIC0gYmVnaW5Tb3VyY2UpKTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNDExNDFhOWJmNmY5ZDdiMmQ3OTlh
MjIzZDdjZmE3OGRlMTc4YWIxMi4uZWU1ZjJjZDg0MDhlNTI3ZjI4NjZlYjRiMzE2NGJlNmFjMTRl
NmU3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjItMDEtMzAgIFBhdHJpY2sgR3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgQ1NQOiBJbXByb3ZlIGNvbXBhdGliaWxpdHkgb2Ygc291cmNlIG1hdGNoaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU4NzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwZWN0YXRp
b24gYXMgcGFzc2luZy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9jb25uZWN0LXNyYy13ZWJzb2NrZXQtc2VsZi5zdWIt
ZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTI5ICBQYXRyaWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIENTUDogUHJvcGVybHkgYmxvY2sgaW1hZ2UgY29udGVudCBp
biBvYmplY3QgZWxlbWVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvY29u
bmVjdC1zcmMtd2Vic29ja2V0LXNlbGYuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29u
bmVjdC1zcmMvY29ubmVjdC1zcmMtd2Vic29ja2V0LXNlbGYuc3ViLWV4cGVjdGVkLnR4dAppbmRl
eCA1YWVlYzA1MDY2MTZjZmEwMjJiNDMyZjQ0OGQ2ODIwMjY5ZWZjNzMzLi5kNWE3ZDQ4MWEyYmZm
ODJhZWI0NjZhYTM0ZDJkZWZmNTEzODU1N2Y5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5l
Y3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1Yi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9jb25uZWN0LXNyYy9jb25uZWN0LXNyYy13ZWJzb2NrZXQtc2VsZi5zdWItZXhw
ZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlMIEV4cGVjdGluZyBsb2dzOiBbImFsbG93
ZWQiLCAiYWxsb3dlZCJdIGFzc2VydF91bnJlYWNoZWQ6IHVuZXhwZWN0ZWQgbG9nOiBibG9ja2Vk
IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorUEFTUyBFeHBlY3RpbmcgbG9nczogWyJhbGxvd2Vk
IiwgImFsbG93ZWQiXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450366</attachid>
            <date>2022-01-30 13:04:03 -0800</date>
            <delta_ts>2022-04-01 11:09:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235873-20220130150402.patch</filename>
            <type>text/plain</type>
            <size>13154</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhjNzQ1MzMxMzJlMGMw
MDgxZWM0MTRiOWU3Y2QyNjg4MzdiNjgyMi4uMDljOWU5NWU1NDkwYTI1YjljMTA0ZjIxNTczYTE4
YjM4NTYzODViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTAxLTMwICBQYXRy
aWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENTUDogSW1wcm92
ZSBjb21wYXRpYmlsaXR5IG9mIHNvdXJjZSBtYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYWlubHkgaW50cm9kdWNlcyB0d28gbmV3
IGNoYW5nZXM6CisKKyAgICAgICAgLSBUaGUgc2VsZiBzb3VyY2Ugd2lsbCBpbmNsdWRlIHRoZSBk
ZWZhdWx0IHBvcnQgZm9yIGl0cyBwcm90b2NvbCBpZiB1bnNwZWNpZmllZC4KKyAgICAgICAgICBU
aGlzIGlzIENocm9taXVtJ3MgYmVoYXZpb3IgYW5kIGZpeGVkIGEgV1BUIGZhaWx1cmUuIEhvd2V2
ZXIgSSBkaWQgbm90IGZpbmQgdGhpcworICAgICAgICAgIGluIHRoZSBzcGVjLgorCisgICAgICAg
IC0gSW1wcm92ZWQgaGFuZGxpbmcgb2YgcHJvdG9jb2wgY2hhbmdlczoKKyAgICAgICAgICAtIEZv
ciBob3N0IGFuZCBzZWxmIHNvdXJjZXMgZGlyZWN0IHVwZ3JhZGVzIGFyZSBhbGxvd2VkICh3cy0+
d3NzKSAoaHR0cC0+aHR0cHMgYWxyZWFkeSB3b3JrZWQpLgorICAgICAgICAgIC0gRm9yIHNlbGYg
c291cmNlcyBzaWRlIGdyYWRlcyBhcmUgbm93IGFsbG93ZWQgKGh0dHAtPndzKS4KKyAgICAgICAg
ICAtIEZvciBzZWxmIHNvdXJjZXMgdXBncmFkZXMgYXJlIGFsd2F5cyBhbGxvd2VkICgqLT5odHRw
cywgKi0+d3NzKS4gICAgICAgICAgCisgICAgICAgIFRoaXMgaXMgZG9jdW1lbnRlZCBoZXJlOiBo
dHRwczovL3d3dy53My5vcmcvVFIvQ1NQMy8jbWF0Y2gtdXJsLXRvLXNvdXJjZS1leHByZXNzaW9u
CisKKyAgICAgICAgSSBhbHNvIGluY2x1ZGVkIHNvbWUgbWlub3IgY2xlYW51cHMgYW5kIGFkZGlu
ZyBvZiBjb21tZW50cy4KKworICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZGF0ZVNv
dXJjZVNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojpwcm90
b2NvbE1hdGNoZXNTZWxmIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6c2VsZlNjaGVtZSBjb25zdCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnNjaGVtZU1hdGNoZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpwb3J0
TWF0Y2hlcyBjb25zdCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0Ojppc1Byb3RvY29sQWxsb3dlZEJ5U3RhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZSk6CisKIDIwMjItMDEtMjkgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRGVsZXRlIEV2ZW50UXVl
dWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKaW5kZXggYjUyNWNiNmJlZTc0ZjM3ZGYwMTlhZjUyZThhYTI2YmMzYmZhODFmMy4uNTNh
ZTU4YjI3NmI4NzUzNjU4NWI4NWZhODUzZDY1ZDgwNTg0NGIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0yMzQsOCArMjM0
LDEwIEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0
IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5Ojp1cGRhdGVTb3VyY2VTZWxmKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdp
bikKIHsKLSAgICBtX3NlbGZTb3VyY2VQcm90b2NvbCA9IHNlY3VyaXR5T3JpZ2luLnByb3RvY29s
KCk7Ci0gICAgbV9zZWxmU291cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2U+KCp0aGlzLCBtX3NlbGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgp
LCBzZWN1cml0eU9yaWdpbi5wb3J0KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7Cisg
ICAgbV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgLy8gVGhlIENTUDMgc3BlYyBpcyB1bmNsZWFyIGFi
b3V0IHRoaXMgaG93ZXZlciBDaHJvbWl1bSBhbHdheXMgY3JlYXRlcyBpdHMgQ1NQU291cmNlcyB3
aXRoIHRoZSBlZmZlY3RpdmUgZGVmYXVsdCBwb3J0LgorICAgIGF1dG8gZWZmZWN0aXZlUG9ydCA9
IHNlY3VyaXR5T3JpZ2luLnBvcnQoKSA/IHNlY3VyaXR5T3JpZ2luLnBvcnQoKSA6IFdURjo6ZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChtX3NlbGZTb3VyY2VQcm90b2NvbCk7CisgICAgbV9zZWxmU291
cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3Nl
bGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBlZmZlY3RpdmVQb3J0LCBl
bXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UsIHRydWUpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpAQCAtMjkw
LDEzICsyOTIsNiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVByb3RvYwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnByb3RvY29sTWF0Y2hlc1NlbGYoY29u
c3QgVVJMJiB1cmwpIGNvbnN0Ci17Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1fc2VsZlNvdXJjZVByb3RvY29sLCAiaHR0cCIpKQotICAgICAgICByZXR1cm4gdXJsLnBy
b3RvY29sSXNJbkhUVFBGYW1pbHkoKTsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZSh1cmwucHJvdG9jb2woKSwgbV9zZWxmU291cmNlUHJvdG9jb2wpOwotfQotCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjwhc3RkOjppc19jb252ZXJ0aWJsZTxQcmVkaWNhdGUsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6VmlvbGF0ZWREaXJlY3RpdmVDYWxsYmFjaz46OnZhbHVlLCBib29sPjo6dHlwZSBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzV2l0aERpc3Bvc2l0aW9uQWxsb3coRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgQXJncyYmLi4uIGFyZ3MpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5oCmluZGV4IDUzZDExNzAzYjIwNDk2MjdmZDEwMmU5NWI0M2E5MGQ1ODQxYmFhNjUuLmM4ODY1
MmE1ODdhMDI4MGM5ZmI3ZDNlYTMzMTczMmE2N2ZmY2NmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBAIC0xNzAsNyArMTcwLDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIC8vIFVzZWQgYnkgQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlCi0gICAgYm9vbCBwcm90b2NvbE1hdGNoZXNTZWxmKGNvbnN0IFVSTCYpIGNvbnN0OworICAg
IGNvbnN0IFN0cmluZyYgc2VsZlNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZlNvdXJjZVBy
b3RvY29sOyB9OwogCiAgICAgdm9pZCBzZXRVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0cyhib29sKTsK
ICAgICBib29sIHVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV91cGdy
YWRlSW5zZWN1cmVSZXF1ZXN0czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggZDFkMGU3OTNmMWMwODU2
ZGY1NjU4NDg3Y2Q1YWRjNTJkMTg5ZjRmNC4uOWZmZjFkNjdhZmVlYjdlYTcyY2RhOWIyNTc1NzNm
MmNmMzM1MmY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0
IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJvb2wg
cG9ydEhhc1dpbGRjYXJkKQorQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNv
bnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJv
b2wgcG9ydEhhc1dpbGRjYXJkLCBib29sIGlzU2VsZlNvdXJjZSkKICAgICA6IG1fcG9saWN5KHBv
bGljeSkKICAgICAsIG1fc2NoZW1lKHNjaGVtZSkKICAgICAsIG1faG9zdChob3N0KQpAQCAtNDIs
MTEgKzQyLDEzIEBAIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvCiAgICAgLCBtX3BvcnQocG9ydCkK
ICAgICAsIG1faG9zdEhhc1dpbGRjYXJkKGhvc3RIYXNXaWxkY2FyZCkKICAgICAsIG1fcG9ydEhh
c1dpbGRjYXJkKHBvcnRIYXNXaWxkY2FyZCkKKyAgICAsIG1faXNTZWxmU291cmNlKGlzU2VsZlNv
dXJjZSkKIHsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6Om1hdGNoZXMo
Y29uc3QgVVJMJiB1cmwsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpIGNvbnN0CiB7
CisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUDMvI21hdGNoLXVybC10by1zb3VyY2Ut
ZXhwcmVzc2lvbi4KICAgICBpZiAoIXNjaGVtZU1hdGNoZXModXJsKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmIChpc1NjaGVtZU9ubHkoKSkKQEAgLTU2LDExICs1OCwyNCBAQCBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6bWF0Y2hlcyhjb25zdCBVUkwmIHVybCwgYm9v
bCBkaWRSZWNlaXZlUmVkaXJlYwogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6
c2NoZW1lTWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAobV9zY2hlbWUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbV9wb2xpY3kucHJvdG9jb2xNYXRjaGVzU2VsZih1
cmwpOwotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX3NjaGVtZSwgImh0
dHAiKSkKLSAgICAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCk7Ci0gICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29sKCksIG1fc2NoZW1lKTsK
KyAgICBjb25zdCBTdHJpbmcmIHNjaGVtZSA9IG1fc2NoZW1lLmlzRW1wdHkoKSA/IG1fcG9saWN5
LnNlbGZTY2hlbWUoKSA6IG1fc2NoZW1lOworICAgIFN0cmluZyB1cmxTY2hlbWUgPSB1cmwucHJv
dG9jb2woKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworCisgICAgaWYgKHNjaGVtZSA9PSB1
cmxTY2hlbWUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gaG9zdC1zb3VyY2VzIGFu
ZCBzZWxmLXNvdXJjZXMgY2FuIGRvIGRpcmVjdCB1cGdyYWRlcy4KKyAgICBpZiAoKHNjaGVtZSA9
PSAiaHR0cCIgJiYgdXJsU2NoZW1lID09ICJodHRwcyIpCisgICAgICAgIHx8IChzY2hlbWUgPT0g
IndzIiAmJiB1cmxTY2hlbWUgPT0gIndzcyIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IC8vIHNlbGYtc291cmNlcyBjYW4gYWx3YXlzIHVwZ3JhZGUgdG8gc2VjdXJlIHByb3RvY29scyBv
ciBzaWRlLWdyYWRlLgorICAgIGlmIChtX2lzU2VsZlNvdXJjZQorICAgICAgICAmJiAoKHVybFNj
aGVtZSA9PSAiaHR0cHMiIHx8IHVybFNjaGVtZSA9PSAid3NzIikKKyAgICAgICAgICAgIHx8IChz
Y2hlbWUgPT0gImh0dHAiICYmIHVybFNjaGVtZSA9PSAid3MiKSkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9vbCB3aWxkY2FyZE1hdGNo
ZXMoU3RyaW5nVmlldyBob3N0LCBjb25zdCBTdHJpbmcmIGhvc3RXaXRoV2lsZGNhcmQpCkBAIC0x
MDEsNyArMTE2LDEwIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpwb3J0TWF0
Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBpZiAocG9ydCA9PSBtX3BvcnQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKChtX3BvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2wobV9wb3J0LnZhbHVlKCksICJodHRwIikpICYmICgoIXBvcnQgJiYgdXJsLnBy
b3RvY29sSXMoImh0dHBzIikpIHx8IChwb3J0ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKHBvcnQudmFsdWUoKSwgImh0dHBzIikpKSkKKyAgICAvLyBob3N0LXNvdXJjZSBhbmQgc2Vs
Zi1zb3VyY2UgYWxsb3dzIHVwZ3JhZGluZyB0byBhIG1vcmUgc2VjdXJlIHNjaGVtZSB3aGljaCBh
bGxvd3MgZm9yIGRpZmZlcmVudCBwb3J0cy4KKyAgICBib29sIGlzVXBncmFkZVNlY3VyZSA9IChw
b3J0ICYmIHBvcnQudmFsdWUoKSA9PSA0NDMpIHx8ICghcG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbCg0NDMsIHVybC5wcm90b2NvbCgpKSk7CisgICAgYm9vbCBpc0N1cnJlbnRV
cGdyYWRhYmxlID0gKG1fcG9ydCAmJiBtX3BvcnQudmFsdWUoKSA9PSA4MCkgfHwgKG1fc2NoZW1l
ID09ICJodHRwIiAmJiAoIW1fcG9ydCB8fCBtX3BvcnQudmFsdWUoKSA9PSA0NDMpKTsKKyAgICBp
ZiAoaXNVcGdyYWRlU2VjdXJlICYmIGlzQ3VycmVudFVwZ3JhZGFibGUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgaWYgKCFwb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAppbmRleCBhMmRiNTA0Mzg5OGYyZTY5
NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQwLi5kZTNlZDU3NWQ4YWZkNWM1ZDcwODg4MGM2OGE0ZTYx
MGVmMjdmOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlP
cmlnaW5EYXRhOwogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiwgY29uc3QgU3RyaW5nJiBzY2hlbWUs
IGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQp
OworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3kmLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9w
dGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dp
bGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCwgYm9vbCBpc1NlbGZTb3VyY2UpOwogCiAgICAg
Ym9vbCBtYXRjaGVzKGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2Ug
PSBmYWxzZSkgY29uc3Q7CiAKQEAgLTU3LDYgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV9ob3N0SGFzV2lsZGNhcmQ7CiAgICAgYm9vbCBtX3BvcnRIYXNXaWxkY2FyZDsKKyAgICBib29s
IG1faXNTZWxmU291cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcAppbmRleCA1YTUyMDgzN2FiNzEwYjI0NDkyMzBiYTM0MWE2Y2EwOWVlY2RjYmVi
Li4yNWZjMjE1MTY2NjYzYTJkNDk1ZDAxOGMyZTk3NmJlMTcyMDcyZTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0LmNwcApAQCAtMTE4LDkgKzExOCwxMCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3Q6OmlzUHJvdG9jb2xBbGxvd2VkQnlTdGFyKGNvbnN0IFVSTCYgdXJsKSBjbwog
ICAgIGlmIChtX3BvbGljeS5hbGxvd0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZVN0YXJUb01h
dGNoQW55UHJvdG9jb2woKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBBbHRob3Vn
aCBub3QgYWxsb3dlZCBieSB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgTGV2ZWwgMyBzcGVj
Liwgd2UgYWxsb3cgYSBkYXRhIFVSTCB0byBtYXRjaAorICAgIC8vIFRoaXMgaXMgY291bnRlciB0
byB0aGUgQ1NQMyBzcGVjIHdoaWNoIG9ubHkgYWxsb3dzIEhUVFBTIGJ1dCBDaHJvbWl1bSBhbHNv
IGFsbG93cyBpdC4KKyAgICBib29sIGlzQWxsb3dlZCA9IHVybC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkgfHwgdXJsLnByb3RvY29sSXMoIndzIikgfHwgdXJsLnByb3RvY29sSXMoIndzcyIpIHx8
IHVybC5wcm90b2NvbElzKG1fcG9saWN5LnNlbGZTY2hlbWUoKSk7CisgICAgLy8gQWxzbyBub3Qg
YWxsb3dlZCBieSB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgTGV2ZWwgMyBzcGVjLiwgd2Ug
YWxsb3cgYSBkYXRhIFVSTCB0byBtYXRjaAogICAgIC8vICJpbWctc3JjICoiIGFuZCBlaXRoZXIg
YSBkYXRhIFVSTCBvciBibG9iIFVSTCB0byBtYXRjaCAibWVkaWEtc3JjICoiIGZvciB3ZWIgY29t
cGF0aWJpbGl0eS4KLSAgICBib29sIGlzQWxsb3dlZCA9IHVybC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkgfHwgdXJsLnByb3RvY29sSXMoIndzIikgfHwgdXJsLnByb3RvY29sSXMoIndzcyIpIHx8
IG1fcG9saWN5LnByb3RvY29sTWF0Y2hlc1NlbGYodXJsKTsKICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShtX2RpcmVjdGl2ZU5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjppbWdTcmMpKQogICAgICAgICBpc0FsbG93ZWQgfD0gdXJsLnByb3RvY29sSXNEYXRh
KCk7CiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2RpcmVjdGl2ZU5hbWUs
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjptZWRpYVNyYykpCkBAIC0yMDUs
NyArMjA2LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBDb250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpwYXJzZShTdHIKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIGlmIChpc0NTUERpcmVjdGl2ZU5hbWUoc291cmNlLT5ob3N0LnZh
bHVlKSkKICAgICAgICAgICAgICAgICBtX3BvbGljeS5yZXBvcnREaXJlY3RpdmVBc1NvdXJjZUV4
cHJlc3Npb24obV9kaXJlY3RpdmVOYW1lLCBzb3VyY2UtPmhvc3QudmFsdWUpOwotICAgICAgICAg
ICAgbV9saXN0LmFwcGVuZChDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UobV9wb2xpY3ksIHNv
dXJjZS0+c2NoZW1lLCBzb3VyY2UtPmhvc3QudmFsdWUsIHNvdXJjZS0+cG9ydC52YWx1ZSwgc291
cmNlLT5wYXRoLCBzb3VyY2UtPmhvc3QuaGFzV2lsZGNhcmQsIHNvdXJjZS0+cG9ydC5oYXNXaWxk
Y2FyZCkpOworICAgICAgICAgICAgbV9saXN0LmFwcGVuZChDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2UobV9wb2xpY3ksIHNvdXJjZS0+c2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCks
IHNvdXJjZS0+aG9zdC52YWx1ZSwgc291cmNlLT5wb3J0LnZhbHVlLCBzb3VyY2UtPnBhdGgsIHNv
dXJjZS0+aG9zdC5oYXNXaWxkY2FyZCwgc291cmNlLT5wb3J0Lmhhc1dpbGRjYXJkLCBmYWxzZSkp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydEludmFsaWRTb3Vy
Y2VFeHByZXNzaW9uKG1fZGlyZWN0aXZlTmFtZSwgU3RyaW5nKGJlZ2luU291cmNlLCBidWZmZXIu
cG9zaXRpb24oKSAtIGJlZ2luU291cmNlKSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CmluZGV4IDQxMTQxYTliZjZmOWQ3YjJkNzk5YTIyM2Q3Y2ZhNzhkZTE3OGFiMTIuLmVlNWYyY2Q4
NDA4ZTUyN2YyODY2ZWI0YjMxNjRiZTZhYzE0ZTZlN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTMwICBQYXRyaWNrIEdyaWZmaXMgIDxw
Z3JpZmZpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENTUDogSW1wcm92ZSBjb21wYXRpYmlsaXR5
IG9mIHNvdXJjZSBtYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1ODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGV4cGVjdGF0aW9uIGFzIHBhc3NpbmcuCisKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvY29u
bmVjdC1zcmMtd2Vic29ja2V0LXNlbGYuc3ViLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wMS0yOSAg
UGF0cmljayBHcmlmZmlzICA8cGdyaWZmaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBDU1A6IFBy
b3Blcmx5IGJsb2NrIGltYWdlIGNvbnRlbnQgaW4gb2JqZWN0IGVsZW1lbnRzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1Yi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tl
dC1zZWxmLnN1Yi1leHBlY3RlZC50eHQKaW5kZXggNWFlZWMwNTA2NjE2Y2ZhMDIyYjQzMmY0NDhk
NjgyMDI2OWVmYzczMy4uZDVhN2Q0ODFhMmJmZjgyYWViNDY2YWEzNGQyZGVmZjUxMzg1NTdmOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
b250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9jb25uZWN0LXNyYy13ZWJzb2NrZXQt
c2VsZi5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvY29ubmVj
dC1zcmMtd2Vic29ja2V0LXNlbGYuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAot
RkFJTCBFeHBlY3RpbmcgbG9nczogWyJhbGxvd2VkIiwgImFsbG93ZWQiXSBhc3NlcnRfdW5yZWFj
aGVkOiB1bmV4cGVjdGVkIGxvZzogYmxvY2tlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BB
U1MgRXhwZWN0aW5nIGxvZ3M6IFsiYWxsb3dlZCIsICJhbGxvd2VkIl0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450564</attachid>
            <date>2022-02-01 13:46:48 -0800</date>
            <delta_ts>2022-04-01 11:09:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235873-20220201154647.patch</filename>
            <type>text/plain</type>
            <size>14741</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzhjNzQ1MzMxMzJlMGMw
MDgxZWM0MTRiOWU3Y2QyNjg4MzdiNjgyMi4uODI5ZTEwZDNjNDk1ZmI1YTRhZDdkMGFkMDYxMTk5
MjQzZGE2NWIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIyLTAxLTMwICBQYXRy
aWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENTUDogSW1wcm92
ZSBjb21wYXRpYmlsaXR5IG9mIHNvdXJjZSBtYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhpcyBtYWlubHkgaW1wcm92ZXMgaGFuZGxpbmcgb2Yg
cHJvdG9jb2wgY2hhbmdlczoKKyAgICAgICAgICAtIEZvciBob3N0IGFuZCBzZWxmIHNvdXJjZXMg
ZGlyZWN0IHVwZ3JhZGVzIGFyZSBhbGxvd2VkICh3cy0+d3NzKSAoaHR0cC0+aHR0cHMgYWxyZWFk
eSB3b3JrZWQpLgorICAgICAgICAgIC0gRm9yIHNlbGYgc291cmNlcyBzaWRlIGdyYWRlcyBhcmUg
bm93IGFsbG93ZWQgKGh0dHAtPndzKS4KKyAgICAgICAgICAtIEZvciBzZWxmIHNvdXJjZXMgdXBn
cmFkZXMgYXJlIGFsd2F5cyBhbGxvd2VkICgqLT5odHRwcywgKi0+d3NzKS4gCisgICAgICAgIFRo
aXMgaXMgZG9jdW1lbnRlZCBoZXJlOiBodHRwczovL3d3dy53My5vcmcvVFIvQ1NQMy8jbWF0Y2gt
dXJsLXRvLXNvdXJjZS1leHByZXNzaW9uCisKKyAgICAgICAgSSBhbHNvIGluY2x1ZGVkIHNvbWUg
bWlub3IgY2xlYW51cHMgYW5kIGFkZGluZyBvZiBjb21tZW50cy4KKworICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6cHJvdG9jb2xNYXRjaGVzU2VsZiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnNlbGZTb3VyY2VQcm90b2NvbCBjb25z
dCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZTo6bWF0Y2hlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2U6OnNjaGVtZU1hdGNoZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjpwb3J0TWF0Y2hlcyBjb25zdCk6CisgICAg
ICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmg6CisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0Ojppc1Byb3RvY29sQWxsb3dl
ZEJ5U3RhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0OjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0OjpwYXJzZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VQb3J0KToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0Lmg6CisKIDIwMjItMDEtMjkgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRGVsZXRlIEV2ZW50UXVldWUuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5k
ZXggYjUyNWNiNmJlZTc0ZjM3ZGYwMTlhZjUyZThhYTI2YmMzYmZhODFmMy4uNDQ0NzM1MjBmOGQx
NzI2Y2VjZTE3ZGYyMGQ0MDU0ODVkMDE0MGUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0yMjYsNyArMjI2LDYgQEAgdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBo
ZWFkZXIsIENvbnRlbnRTZWN1cmkKICAgICAgICAgICAgIGJlZ2luID0gYnVmZmVyLnBvc2l0aW9u
KCk7CiAgICAgICAgIH0KICAgICB9KTsKLSAgICAKIAogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCiAgICAgICAgIGFwcGx5UG9saWN5VG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CkBAIC0yMzQsOCArMjMzLDggQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2Vp
dmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cmkKIAogdm9pZCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnVwZGF0ZVNvdXJjZVNlbGYoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHNlY3VyaXR5T3JpZ2luKQogewotICAgIG1fc2VsZlNvdXJjZVByb3RvY29sID0gc2VjdXJpdHlP
cmlnaW4ucHJvdG9jb2woKTsKLSAgICBtX3NlbGZTb3VyY2UgPSBtYWtlVW5pcXVlPENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0
eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFs
c2UsIGZhbHNlKTsKKyAgICBtX3NlbGZTb3VyY2VQcm90b2NvbCA9IHNlY3VyaXR5T3JpZ2luLnBy
b3RvY29sKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKKyAgICBtX3NlbGZTb3VyY2UgPSBt
YWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJj
ZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwg
ZW1wdHlTdHJpbmcoKSwgSGFzV2lsZGNhcmQ6Ok5vLCBIYXNXaWxkY2FyZDo6Tm8sIElzU2VsZlNv
dXJjZTo6WWVzKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFwcGx5UG9saWN5
VG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKQEAgLTI5MCwxMyArMjg5LDYgQEAgYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlU3RhclRv
TWF0Y2hBbnlQcm90b2MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5Ojpwcm90b2NvbE1hdGNoZXNTZWxmKGNvbnN0IFVSTCYgdXJsKSBjb25zdAotewot
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX3NlbGZTb3VyY2VQcm90b2Nv
bCwgImh0dHAiKSkKLSAgICAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCk7
Ci0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodXJsLnByb3RvY29sKCksIG1fc2Vs
ZlNvdXJjZVByb3RvY29sKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlLCB0eXBl
bmFtZS4uLiBBcmdzPgogdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfY29udmVydGli
bGU8UHJlZGljYXRlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlZpb2xhdGVkRGlyZWN0aXZlQ2Fs
bGJhY2s+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xp
Y2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KERpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBQcmVkaWNh
dGUmJiBwcmVkaWNhdGUsIEFyZ3MmJi4uLiBhcmdzKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA1M2QxMTcwM2IyMDQ5
NjI3ZmQxMDJlOTViNDNhOTBkNTg0MWJhYTY1Li43NDQyZDQ0MjNlNzE0NjFiMjVlNjRhYjYzMGRk
MzU0ZjdjMTM2N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuaApAQCAtMTcwLDcgKzE3MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAv
LyBVc2VkIGJ5IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZQotICAgIGJvb2wgcHJvdG9jb2xN
YXRjaGVzU2VsZihjb25zdCBVUkwmKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHNlbGZTb3Vy
Y2VQcm90b2NvbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZlNvdXJjZVByb3RvY29sOyB9OwogCiAg
ICAgdm9pZCBzZXRVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0cyhib29sKTsKICAgICBib29sIHVwZ3Jh
ZGVJbnNlY3VyZVJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV91cGdyYWRlSW5zZWN1cmVSZXF1
ZXN0czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggZDFkMGU3OTNmMWMwODU2ZGY1NjU4NDg3Y2Q1YWRj
NTJkMTg5ZjRmNC4uNjg4M2UxODMxODIwYzlkOTBjOGEyOWExMGJiYWZjZjFlMTdkMGZlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuY3BwCkBAIC0zNCwxOSArMzQsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBzY2hl
bWUsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNh
cmQpCitDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBz
Y2hlbWUsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBIYXNXaWxkY2FyZCBob3N0SGFzV2lsZGNhcmQsIEhhc1dpbGRj
YXJkIHBvcnRIYXNXaWxkY2FyZCwgSXNTZWxmU291cmNlIGlzU2VsZlNvdXJjZSkKICAgICA6IG1f
cG9saWN5KHBvbGljeSkKICAgICAsIG1fc2NoZW1lKHNjaGVtZSkKICAgICAsIG1faG9zdChob3N0
KQogICAgICwgbV9wYXRoKHBhdGgpCiAgICAgLCBtX3BvcnQocG9ydCkKLSAgICAsIG1faG9zdEhh
c1dpbGRjYXJkKGhvc3RIYXNXaWxkY2FyZCkKLSAgICAsIG1fcG9ydEhhc1dpbGRjYXJkKHBvcnRI
YXNXaWxkY2FyZCkKKyAgICAsIG1faG9zdEhhc1dpbGRjYXJkKGhvc3RIYXNXaWxkY2FyZCA9PSBI
YXNXaWxkY2FyZDo6WWVzKQorICAgICwgbV9wb3J0SGFzV2lsZGNhcmQocG9ydEhhc1dpbGRjYXJk
ID09IEhhc1dpbGRjYXJkOjpZZXMpCisgICAgLCBtX2lzU2VsZlNvdXJjZShpc1NlbGZTb3VyY2Ug
PT0gSXNTZWxmU291cmNlOjpZZXMpCiB7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjptYXRjaGVzKGNvbnN0IFVSTCYgdXJsLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKSBjb25zdAogeworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzLyNtYXRj
aC11cmwtdG8tc291cmNlLWV4cHJlc3Npb24uCiAgICAgaWYgKCFzY2hlbWVNYXRjaGVzKHVybCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaXNTY2hlbWVPbmx5KCkpCkBAIC01Niwx
MSArNTgsMjQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6Om1hdGNoZXMoY29u
c3QgVVJMJiB1cmwsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWMKIAogYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2U6OnNjaGVtZU1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fc2NoZW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fcG9saWN5LnByb3Rv
Y29sTWF0Y2hlc1NlbGYodXJsKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobV9zY2hlbWUsICJodHRwIikpCi0gICAgICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5wcm90b2Nv
bCgpLCBtX3NjaGVtZSk7CisgICAgYXV0byYgc2NoZW1lID0gbV9zY2hlbWUuaXNFbXB0eSgpID8g
bV9wb2xpY3kuc2VsZlNvdXJjZVByb3RvY29sKCkgOiBtX3NjaGVtZTsKKyAgICBhdXRvIHVybFNj
aGVtZSA9IHVybC5wcm90b2NvbCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisKKyAgICBp
ZiAoc2NoZW1lID09IHVybFNjaGVtZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBo
b3N0LXNvdXJjZXMgYW5kIHNlbGYtc291cmNlcyBjYW4gZG8gZGlyZWN0IHVwZ3JhZGVzLgorICAg
IGlmICgoc2NoZW1lID09ICJodHRwIiAmJiB1cmxTY2hlbWUgPT0gImh0dHBzIikKKyAgICAgICAg
fHwgKHNjaGVtZSA9PSAid3MiICYmIHVybFNjaGVtZSA9PSAid3NzIikpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgLy8gc2VsZi1zb3VyY2VzIGNhbiBhbHdheXMgdXBncmFkZSB0byBzZWN1
cmUgcHJvdG9jb2xzIG9yIHNpZGUtZ3JhZGUuCisgICAgaWYgKG1faXNTZWxmU291cmNlCisgICAg
ICAgICYmICgodXJsU2NoZW1lID09ICJodHRwcyIgfHwgdXJsU2NoZW1lID09ICJ3c3MiKQorICAg
ICAgICAgICAgfHwgKHNjaGVtZSA9PSAiaHR0cCIgJiYgdXJsU2NoZW1lID09ICJ3cyIpKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29s
IHdpbGRjYXJkTWF0Y2hlcyhTdHJpbmdWaWV3IGhvc3QsIGNvbnN0IFN0cmluZyYgaG9zdFdpdGhX
aWxkY2FyZCkKQEAgLTEwMSw3ICsxMTYsMTAgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2U6OnBvcnRNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChwb3J0ID09
IG1fcG9ydCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBXVEY6
OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQudmFsdWUoKSwgImh0dHAiKSkgJiYgKCgh
cG9ydCAmJiB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSkgfHwgKHBvcnQgJiYgV1RGOjppc0RlZmF1
bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCAiaHR0cHMiKSkpKQorICAgIC8vIGhvc3Qt
c291cmNlIGFuZCBzZWxmLXNvdXJjZSBhbGxvd3MgdXBncmFkaW5nIHRvIGEgbW9yZSBzZWN1cmUg
c2NoZW1lIHdoaWNoIGFsbG93cyBmb3IgZGlmZmVyZW50IHBvcnRzLgorICAgIGJvb2wgaXNVcGdy
YWRlU2VjdXJlID0gKHBvcnQgPT0gNDQzKSB8fCAoIXBvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woNDQzLCB1cmwucHJvdG9jb2woKSkpOworICAgIGJvb2wgaXNDdXJyZW50VXBn
cmFkYWJsZSA9IChwb3J0ID09IDgwKSB8fCAobV9zY2hlbWUgPT0gImh0dHAiICYmICghbV9wb3J0
IHx8IG1fcG9ydCA9PSA0NDMpKTsKKyAgICBpZiAoaXNVcGdyYWRlU2VjdXJlICYmIGlzQ3VycmVu
dFVwZ3JhZGFibGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFwb3J0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UuaAppbmRleCBhMmRiNTA0Mzg5OGYyZTY5NDdiYzdiMGEyZGQ2NDQzYWI1MTQzOGQwLi5mNzM4
MDI3M2JmMjlhMDZkOTIxZjYxMGUyMjk0M2I0MmJiYzVkMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaApAQCAtMzMs
MTAgKzMzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeTsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKK2VudW0gY2xhc3MgSGFzV2lsZGNh
cmQgOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBJc1NlbGZTb3VyY2UgOiBib29sIHsg
Tm8sIFllcyB9OworCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHNjaGVt
ZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25z
dCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2Fy
ZCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeSYsIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6
b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgSGFzV2lsZGNhcmQg
aG9zdEhhc1dpbGRjYXJkLCBIYXNXaWxkY2FyZCBwb3J0SGFzV2lsZGNhcmQsIElzU2VsZlNvdXJj
ZSk7CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgVVJMJiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSA9IGZhbHNlKSBjb25zdDsKIApAQCAtNTcsNiArNjAsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBtX2hvc3RIYXNXaWxkY2FyZDsKICAgICBib29sIG1fcG9ydEhhc1dpbGRjYXJk
OworICAgIGJvb2wgbV9pc1NlbGZTb3VyY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3QuY3BwCmluZGV4IDVhNTIwODM3YWI3MTBiMjQ0OTIzMGJhMzQxYTZj
YTA5ZWVjZGNiZWIuLjU0NzE1OWU5ZGQ5Mjg3ZGE3MmFkMGQ4NGJmNjcwMWVjOGFkZjczODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3QuY3BwCkBAIC0xMTgsOSArMTE4LDEwIEBAIGJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdDo6aXNQcm90b2NvbEFsbG93ZWRCeVN0YXIoY29uc3QgVVJM
JiB1cmwpIGNvCiAgICAgaWYgKG1fcG9saWN5LmFsbG93Q29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlU3RhclRvTWF0Y2hBbnlQcm90b2NvbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IC8vIEFsdGhvdWdoIG5vdCBhbGxvd2VkIGJ5IHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBM
ZXZlbCAzIHNwZWMuLCB3ZSBhbGxvdyBhIGRhdGEgVVJMIHRvIG1hdGNoCisgICAgLy8gVGhpcyBp
cyBjb3VudGVyIHRvIHRoZSBDU1AzIHNwZWMgd2hpY2ggb25seSBhbGxvd3MgSFRUUFMgYnV0IENo
cm9taXVtIGFsc28gYWxsb3dzIGl0LgorICAgIGJvb2wgaXNBbGxvd2VkID0gdXJsLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSB8fCB1cmwucHJvdG9jb2xJ
cygid3NzIikgfHwgdXJsLnByb3RvY29sSXMobV9wb2xpY3kuc2VsZlNvdXJjZVByb3RvY29sKCkp
OworICAgIC8vIEFsc28gbm90IGFsbG93ZWQgYnkgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IExldmVsIDMgc3BlYy4sIHdlIGFsbG93IGEgZGF0YSBVUkwgdG8gbWF0Y2gKICAgICAvLyAiaW1n
LXNyYyAqIiBhbmQgZWl0aGVyIGEgZGF0YSBVUkwgb3IgYmxvYiBVUkwgdG8gbWF0Y2ggIm1lZGlh
LXNyYyAqIiBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCi0gICAgYm9vbCBpc0FsbG93ZWQgPSB1cmwu
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzKCJ3cyIpIHx8IHVybC5w
cm90b2NvbElzKCJ3c3MiKSB8fCBtX3BvbGljeS5wcm90b2NvbE1hdGNoZXNTZWxmKHVybCk7CiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9kaXJlY3RpdmVOYW1lLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6aW1nU3JjKSkKICAgICAgICAgaXNBbGxvd2VkIHw9
IHVybC5wcm90b2NvbElzRGF0YSgpOwogICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobV9kaXJlY3RpdmVOYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
bWVkaWFTcmMpKQpAQCAtMjA1LDcgKzIwNiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2UoU3RyCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoaXNDU1BEaXJlY3RpdmVO
YW1lKHNvdXJjZS0+aG9zdC52YWx1ZSkpCiAgICAgICAgICAgICAgICAgbV9wb2xpY3kucmVwb3J0
RGlyZWN0aXZlQXNTb3VyY2VFeHByZXNzaW9uKG1fZGlyZWN0aXZlTmFtZSwgc291cmNlLT5ob3N0
LnZhbHVlKTsKLSAgICAgICAgICAgIG1fbGlzdC5hcHBlbmQoQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlKG1fcG9saWN5LCBzb3VyY2UtPnNjaGVtZSwgc291cmNlLT5ob3N0LnZhbHVlLCBzb3Vy
Y2UtPnBvcnQudmFsdWUsIHNvdXJjZS0+cGF0aCwgc291cmNlLT5ob3N0Lmhhc1dpbGRjYXJkLCBz
b3VyY2UtPnBvcnQuaGFzV2lsZGNhcmQpKTsKKyAgICAgICAgICAgIG1fbGlzdC5hcHBlbmQoQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlKG1fcG9saWN5LCBzb3VyY2UtPnNjaGVtZS5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpLCBzb3VyY2UtPmhvc3QudmFsdWUsIHNvdXJjZS0+cG9ydC52YWx1
ZSwgc291cmNlLT5wYXRoLCBzb3VyY2UtPmhvc3QuaGFzV2lsZGNhcmQsIHNvdXJjZS0+cG9ydC5o
YXNXaWxkY2FyZCwgSXNTZWxmU291cmNlOjpObykpOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG1fcG9saWN5LnJlcG9ydEludmFsaWRTb3VyY2VFeHByZXNzaW9uKG1fZGlyZWN0aXZlTmFt
ZSwgU3RyaW5nKGJlZ2luU291cmNlLCBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luU291cmNlKSk7
CiAKQEAgLTQxMSw3ICs0MTIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OgogICAgIEhvc3Qg
aG9zdDsKIAogICAgIGlmIChza2lwRXhhY3RseShidWZmZXIsICcqJykpIHsKLSAgICAgICAgaG9z
dC5oYXNXaWxkY2FyZCA9IHRydWU7CisgICAgICAgIGhvc3QuaGFzV2lsZGNhcmQgPSBIYXNXaWxk
Y2FyZDo6WWVzOwogCiAgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkKICAgICAgICAgICAgIHJl
dHVybiBob3N0OwpAQCAtNDY4LDcgKzQ2OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6CiAg
ICAgCiAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA9PSAxICYmICpidWZmZXIgPT0g
JyonKSB7CiAgICAgICAgIFBvcnQgcG9ydDsKLSAgICAgICAgcG9ydC5oYXNXaWxkY2FyZCA9IHRy
dWU7CisgICAgICAgIHBvcnQuaGFzV2lsZGNhcmQgPSBIYXNXaWxkY2FyZDo6WWVzOwogICAgICAg
ICByZXR1cm4gcG9ydDsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgKaW5kZXggZTRmOGM4
NzljNTQwM2Y1OTFkZjIzNGU2YTFjOGFiOWZhNTU5Y2NmOC4uMmM5ODE2MWU1MGI5YTgzOWVhNWEy
ZDU2M2JlNDc2Yjk3YjQwMDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaApAQCAtNjEsMTEgKzYxLDEx
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgc3RydWN0IEhvc3QgewogICAgICAgICBTdHJpbmcg
dmFsdWU7Ci0gICAgICAgIGJvb2wgaGFzV2lsZGNhcmQgeyBmYWxzZSB9OworICAgICAgICBIYXNX
aWxkY2FyZCBoYXNXaWxkY2FyZCB7IEhhc1dpbGRjYXJkOjpObyB9OwogICAgIH07CiAgICAgc3Ry
dWN0IFBvcnQgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiB2YWx1ZTsKLSAgICAg
ICAgYm9vbCBoYXNXaWxkY2FyZCB7IGZhbHNlIH07CisgICAgICAgIEhhc1dpbGRjYXJkIGhhc1dp
bGRjYXJkIHsgSGFzV2lsZGNhcmQ6Ok5vIH07CiAgICAgfTsKICAgICBzdHJ1Y3QgU291cmNlIHsK
ICAgICAgICAgU3RyaW5nIHNjaGVtZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IDQxMTQxYTliZjZmOWQ3YjJkNzk5YTIyM2Q3Y2ZhNzhkZTE3OGFiMTIuLjQzMzhlNzJhYjc3YmVl
NmFlOGE5YTQ2MmY4ZWYyNTQ4OWRhOTM2MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTMwICBQYXRyaWNrIEdyaWZmaXMgIDxwZ3JpZmZp
c0BpZ2FsaWEuY29tPgorCisgICAgICAgIENTUDogSW1wcm92ZSBjb21wYXRpYmlsaXR5IG9mIHNv
dXJjZSBtYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1ODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgVXBkYXRlIGV4cGVjdGF0aW9uIGFzIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvY29ubmVjdC1zcmMt
d2Vic29ja2V0LXNlbGYuc3ViLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wMS0yOSAgUGF0cmljayBH
cmlmZmlzICA8cGdyaWZmaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBDU1A6IFByb3Blcmx5IGJs
b2NrIGltYWdlIGNvbnRlbnQgaW4gb2JqZWN0IGVsZW1lbnRzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1Yi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQt
c2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1
Yi1leHBlY3RlZC50eHQKaW5kZXggNWFlZWMwNTA2NjE2Y2ZhMDIyYjQzMmY0NDhkNjgyMDI2OWVm
YzczMy4uZDVhN2Q0ODFhMmJmZjgyYWViNDY2YWEzNGQyZGVmZjUxMzg1NTdmOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNl
Y3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9jb25uZWN0LXNyYy13ZWJzb2NrZXQtc2VsZi5zdWIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvY29ubmVjdC1zcmMtd2Vi
c29ja2V0LXNlbGYuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBFeHBl
Y3RpbmcgbG9nczogWyJhbGxvd2VkIiwgImFsbG93ZWQiXSBhc3NlcnRfdW5yZWFjaGVkOiB1bmV4
cGVjdGVkIGxvZzogYmxvY2tlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1MgRXhwZWN0
aW5nIGxvZ3M6IFsiYWxsb3dlZCIsICJhbGxvd2VkIl0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456375</attachid>
            <date>2022-04-01 11:09:54 -0700</date>
            <delta_ts>2022-04-01 11:13:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235873-20220401130953.patch</filename>
            <type>text/plain</type>
            <size>13036</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1ODIxZDAzMzNmNjk1
YTJhNGZmYTI1MmUxMmVkNWQwYjM1YmI0Ni4uNTQwOGU3MTRmMGI4NTRkNzhkODhhODE2Mzc2YjMx
YTQzYWYyYjEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIyLTAzLTI5ICBQYXRy
aWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENTUDogSW1wcm92
ZSBjb21wYXRpYmlsaXR5IG9mIHNvdXJjZSBtYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgLSBJbXByb3ZlZCBoYW5kbGluZyBvZiBwcm90b2NvbCBj
aGFuZ2VzOgorICAgICAgICAgIC0gRm9yIGhvc3QgYW5kIHNlbGYgc291cmNlcyBkaXJlY3QgdXBn
cmFkZXMgYXJlIGFsbG93ZWQgKHdzLT53c3MpIChodHRwLT5odHRwcyBhbHJlYWR5IHdvcmtlZCku
CisgICAgICAgICAgLSBGb3Igc2VsZiBzb3VyY2VzIHNpZGUgZ3JhZGVzIGFyZSBub3cgYWxsb3dl
ZCAoaHR0cC0+d3MpLgorICAgICAgICAgIC0gRm9yIHNlbGYgc291cmNlcyB1cGdyYWRlcyBhcmUg
YWx3YXlzIGFsbG93ZWQgKCotPmh0dHBzLCAqLT53c3MpLiAgICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBkb2N1bWVudGVkIGhlcmU6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzLyNtYXRjaC11
cmwtdG8tc291cmNlLWV4cHJlc3Npb24KKworICAgICAgICBJIGFsc28gaW5jbHVkZWQgc29tZSBt
aW5vciBjbGVhbnVwcyBhbmQgYWRkaW5nIG9mIGNvbW1lbnRzLgorCisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnByb3RvY29sTWF0Y2hlc1NlbGYgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpzZWxmUHJvdG9jb2wgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6
Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjpzY2hlbWVNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6aXNQcm90b2NvbEFsbG93ZWRCeVN0YXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6
cGFyc2UpOgorCiAyMDIyLTAzLTI5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFttYWNPU10gTXV0ZWQgdmlkZW8gaXMgc29tZXRpbWVzIHBhdXNlZCB3
aGVuIGVudGVyaW5nIGZ1bGxzY3JlZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGNmNjY5YTA1NTZiZDc2NDQ0NzBhZGQ5YWI2
MDk4ODZkNDk1ZGNiM2EuLjQxN2ExNGU0YmMwMGJlZjQzNjA3Y2IzNDdiMzQ1Mzc4NWQzZTFkZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcApAQCAtMjM0LDggKzIzNCw4IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRS
ZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiAKIHZvaWQg
Q29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBtX3NlbGZTb3VyY2VQcm90b2NvbCA9IHNlY3Vy
aXR5T3JpZ2luLnByb3RvY29sKCk7Ci0gICAgbV9zZWxmU291cmNlID0gbWFrZVVuaXF1ZTxDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3NlbGZTb3VyY2VQcm90b2NvbCwgc2Vj
dXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdpbi5wb3J0KCksIGVtcHR5U3RyaW5nKCks
IGZhbHNlLCBmYWxzZSk7CisgICAgbV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1cml0eU9yaWdp
bi5wcm90b2NvbCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgbV9zZWxmU291cmNl
ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3NlbGZT
b3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdpbi5wb3J0
KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSwgSXNTZWxmU291cmNlOjpZZXMpOwogfQog
CiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKQpAQCAtMjkwLDEzICsyOTAsNiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVByb3RvYwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnByb3Rv
Y29sTWF0Y2hlc1NlbGYoY29uc3QgVVJMJiB1cmwpIGNvbnN0Ci17Ci0gICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fc2VsZlNvdXJjZVByb3RvY29sLCAiaHR0cCIpKQotICAg
ICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKTsKLSAgICByZXR1cm4gZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwucHJvdG9jb2woKSwgbV9zZWxmU291cmNlUHJvdG9jb2wp
OwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19jb252ZXJ0aWJsZTxQcmVkaWNhdGUsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6VmlvbGF0ZWREaXJlY3RpdmVDYWxsYmFjaz46OnZhbHVlLCBi
b29sPjo6dHlwZSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzV2l0aERpc3Bvc2l0
aW9uQWxsb3coRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwg
QXJncyYmLi4uIGFyZ3MpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IGRiMDAxNmQ3MzI2Y2JkZjY1MGQ5NzVlZTQ4MGRl
ZjA1N2FmMzg2YzEuLjBkYmEwZmUyYjFkZDUzYmYzNTgwMGJiMjk4ZTEwYzBmYzY1NjcwOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBA
IC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIFVzZWQgYnkgQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlCi0gICAgYm9vbCBwcm90b2NvbE1hdGNoZXNTZWxmKGNvbnN0
IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgc2VsZlByb3RvY29sKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWxmU291cmNlUHJvdG9jb2w7IH07CiAKICAgICB2b2lkIHNldFVwZ3JhZGVJbnNl
Y3VyZVJlcXVlc3RzKGJvb2wpOwogICAgIGJvb2wgdXBncmFkZUluc2VjdXJlUmVxdWVzdHMoKSBj
b25zdCB7IHJldHVybiBtX3VwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcApp
bmRleCA3MWRjNmNhMjM0M2EwM2ViMjc1YzkxYjRlZTExYmNjY2ZhZDY4Mjc3Li4wNzQwMTlkZDll
M2I4NDFkYjc3OWE0MGIxZDJiMjZjNDAyMDNmMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgaG9zdCwg
c3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGhv
c3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQpCitDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgaG9z
dCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29s
IGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQsIElzU2VsZlNvdXJjZSBpc1Nl
bGZTb3VyY2UpCiAgICAgOiBtX3BvbGljeShwb2xpY3kpCiAgICAgLCBtX3NjaGVtZShzY2hlbWUp
CiAgICAgLCBtX2hvc3QoaG9zdCkKQEAgLTQyLDExICs0MiwxMyBAQCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2Vj
dXJpdHlQbwogICAgICwgbV9wb3J0KHBvcnQpCiAgICAgLCBtX2hvc3RIYXNXaWxkY2FyZChob3N0
SGFzV2lsZGNhcmQpCiAgICAgLCBtX3BvcnRIYXNXaWxkY2FyZChwb3J0SGFzV2lsZGNhcmQpCisg
ICAgLCBtX2lzU2VsZlNvdXJjZShpc1NlbGZTb3VyY2UgPT0gSXNTZWxmU291cmNlOjpZZXMpCiB7
CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOjptYXRjaGVzKGNvbnN0IFVS
TCYgdXJsLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSBjb25zdAogeworICAgIC8v
IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzLyNtYXRjaC11cmwtdG8tc291cmNlLWV4cHJlc3Np
b24uCiAgICAgaWYgKCFzY2hlbWVNYXRjaGVzKHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoaXNTY2hlbWVPbmx5KCkpCkBAIC01NiwxMSArNTgsMjQgQEAgYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2U6Om1hdGNoZXMoY29uc3QgVVJMJiB1cmwsIGJvb2wgZGlkUmVj
ZWl2ZVJlZGlyZWMKIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnNjaGVtZU1h
dGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2NoZW1lLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG1fcG9saWN5LnByb3RvY29sTWF0Y2hlc1NlbGYodXJsKTsKLSAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobV9zY2hlbWUsICJodHRwIikpCi0g
ICAgICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpOwotICAgIHJldHVybiBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5wcm90b2NvbCgpLCBtX3NjaGVtZSk7CisgICAgY29u
c3QgYXV0byYgc2NoZW1lID0gbV9zY2hlbWUuaXNFbXB0eSgpID8gbV9wb2xpY3kuc2VsZlByb3Rv
Y29sKCkgOiBtX3NjaGVtZTsKKyAgICBhdXRvIHVybFNjaGVtZSA9IHVybC5wcm90b2NvbCgpLmNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisKKyAgICBpZiAoc2NoZW1lID09IHVybFNjaGVtZSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBob3N0LXNvdXJjZXMgYW5kIHNlbGYtc291
cmNlcyBjYW4gZG8gZGlyZWN0IHVwZ3JhZGVzLgorICAgIGlmICgoc2NoZW1lID09ICJodHRwIiAm
JiB1cmxTY2hlbWUgPT0gImh0dHBzIikKKyAgICAgICAgfHwgKHNjaGVtZSA9PSAid3MiICYmIHVy
bFNjaGVtZSA9PSAid3NzIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gc2VsZi1z
b3VyY2VzIGNhbiBhbHdheXMgdXBncmFkZSB0byBzZWN1cmUgcHJvdG9jb2xzIG9yIHNpZGUtZ3Jh
ZGUuCisgICAgaWYgKG1faXNTZWxmU291cmNlCisgICAgICAgICYmICgodXJsU2NoZW1lID09ICJo
dHRwcyIgfHwgdXJsU2NoZW1lID09ICJ3c3MiKQorICAgICAgICAgICAgfHwgKHNjaGVtZSA9PSAi
aHR0cCIgJiYgdXJsU2NoZW1lID09ICJ3cyIpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29sIHdpbGRjYXJkTWF0Y2hlcyhTdHJpbmdW
aWV3IGhvc3QsIGNvbnN0IFN0cmluZyYgaG9zdFdpdGhXaWxkY2FyZCkKQEAgLTEwMyw3ICsxMTgs
MTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVzKGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChwb3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2Nv
bChtX3BvcnQudmFsdWUoKSwgImh0dHAiKSkgJiYgKCghcG9ydCAmJiB1cmwucHJvdG9jb2xJcygi
aHR0cHMiKSkgfHwgKHBvcnQgJiYgV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52
YWx1ZSgpLCAiaHR0cHMiKSkpKQorICAgIC8vIGhvc3Qtc291cmNlIGFuZCBzZWxmLXNvdXJjZSBh
bGxvd3MgdXBncmFkaW5nIHRvIGEgbW9yZSBzZWN1cmUgc2NoZW1lIHdoaWNoIGFsbG93cyBmb3Ig
ZGlmZmVyZW50IHBvcnRzLgorICAgIGF1dG8gZGVmYXVsdFNlY3VyZVBvcnQgPSBXVEY6OmRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWVfb3IoNDQzKTsKKyAgICBhdXRvIGRlZmF1
bHRJbnNlY3VyZVBvcnQgPSBXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHAiKS52YWx1
ZV9vcig4MCk7CisgICAgYm9vbCBpc1VwZ3JhZGVTZWN1cmUgPSAocG9ydCA9PSBkZWZhdWx0U2Vj
dXJlUG9ydCkgfHwgKCFwb3J0ICYmICh1cmwucHJvdG9jb2woKSA9PSAiaHR0cHMiIHx8IHVybC5w
cm90b2NvbCgpID09ICJ3c3MiKSk7CisgICAgYm9vbCBpc0N1cnJlbnRVcGdyYWRhYmxlID0gKG1f
cG9ydCA9PSBkZWZhdWx0SW5zZWN1cmVQb3J0KSB8fCAobV9zY2hlbWUgPT0gImh0dHAiICYmICgh
bV9wb3J0IHx8IG1fcG9ydCA9PSBkZWZhdWx0U2VjdXJlUG9ydCkpOworICAgIGlmIChpc1VwZ3Jh
ZGVTZWN1cmUgJiYgaXNDdXJyZW50VXBncmFkYWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBpZiAoIXBvcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCmluZGV4IGEyZGI1MDQzODk4ZjJlNjk0N2JjN2IwYTJk
ZDY0NDNhYjUxNDM4ZDAuLjU1OTI3Yjg5NWNiZWRhMGMxYzcyNzAwZTBhMTg4MDczMGIwZjA3OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZS5oCkBAIC0zMywxMCArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAor
ZW51bSBjbGFzcyBJc1NlbGZTb3VyY2UgOiBib29sIHsgTm8sIFllcyB9OworCiBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9z
dEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCk7CisgICAgQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYsIGNvbnN0IFN0cmluZyYg
c2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQs
IGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2lsZGNhcmQsIGJvb2wgcG9ydEhhc1dp
bGRjYXJkLCBJc1NlbGZTb3VyY2UpOwogCiAgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVSTCYsIGJv
b2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgPSBmYWxzZSkgY29uc3Q7CiAKQEAgLTU3LDYg
KzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9ob3N0SGFzV2lsZGNhcmQ7CiAgICAgYm9v
bCBtX3BvcnRIYXNXaWxkY2FyZDsKKyAgICBib29sIG1faXNTZWxmU291cmNlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAppbmRleCBlZDUwODBmMTAy
ZjhlMWZkZjM2MDZhZDgxOTEwZGQ2NTg5NDY4ZjFhLi4wYzk0MDllNDJhZDYxZTg3N2Q4YTliNTFl
ZjFlNGI1ZjE3Y2MyODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcApAQCAtMTE4LDkgKzExOCwx
MCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OmlzUHJvdG9jb2xBbGxv
d2VkQnlTdGFyKGNvbnN0IFVSTCYgdXJsKSBjbwogICAgIGlmIChtX3BvbGljeS5hbGxvd0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZVN0YXJUb01hdGNoQW55UHJvdG9jb2woKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICAvLyBBbHRob3VnaCBub3QgYWxsb3dlZCBieSB0aGUgQ29udGVu
dCBTZWN1cml0eSBQb2xpY3kgTGV2ZWwgMyBzcGVjLiwgd2UgYWxsb3cgYSBkYXRhIFVSTCB0byBt
YXRjaAorICAgIC8vIFRoaXMgaXMgY291bnRlciB0byB0aGUgQ1NQMyBzcGVjIHdoaWNoIG9ubHkg
YWxsb3dzIEhUVFBTIGJ1dCBDaHJvbWl1bSBhbHNvIGFsbG93cyBpdC4KKyAgICBib29sIGlzQWxs
b3dlZCA9IHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgdXJsLnByb3RvY29sSXMoIndz
IikgfHwgdXJsLnByb3RvY29sSXMoIndzcyIpIHx8IHVybC5wcm90b2NvbElzKG1fcG9saWN5LnNl
bGZQcm90b2NvbCgpKTsKKyAgICAvLyBBbHNvIG5vdCBhbGxvd2VkIGJ5IHRoZSBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeSBMZXZlbCAzIHNwZWMuLCB3ZSBhbGxvdyBhIGRhdGEgVVJMIHRvIG1hdGNo
CiAgICAgLy8gImltZy1zcmMgKiIgYW5kIGVpdGhlciBhIGRhdGEgVVJMIG9yIGJsb2IgVVJMIHRv
IG1hdGNoICJtZWRpYS1zcmMgKiIgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgotICAgIGJvb2wgaXNB
bGxvd2VkID0gdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCB1cmwucHJvdG9jb2xJcygi
d3MiKSB8fCB1cmwucHJvdG9jb2xJcygid3NzIikgfHwgbV9wb2xpY3kucHJvdG9jb2xNYXRjaGVz
U2VsZih1cmwpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZlTmFt
ZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmltZ1NyYykpCiAgICAgICAg
IGlzQWxsb3dlZCB8PSB1cmwucHJvdG9jb2xJc0RhdGEoKTsKICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZlTmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXM6Om1lZGlhU3JjKSkKQEAgLTIwNSw3ICsyMDYsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6
OnBhcnNlKFN0cgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGlz
Q1NQRGlyZWN0aXZlTmFtZShzb3VyY2UtPmhvc3QudmFsdWUpKQogICAgICAgICAgICAgICAgIG1f
cG9saWN5LnJlcG9ydERpcmVjdGl2ZUFzU291cmNlRXhwcmVzc2lvbihtX2RpcmVjdGl2ZU5hbWUs
IHNvdXJjZS0+aG9zdC52YWx1ZSk7Ci0gICAgICAgICAgICBtX2xpc3QuYXBwZW5kKENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZShtX3BvbGljeSwgc291cmNlLT5zY2hlbWUudG9TdHJpbmcoKSwg
c291cmNlLT5ob3N0LnZhbHVlLnRvU3RyaW5nKCksIHNvdXJjZS0+cG9ydC52YWx1ZSwgc291cmNl
LT5wYXRoLCBzb3VyY2UtPmhvc3QuaGFzV2lsZGNhcmQsIHNvdXJjZS0+cG9ydC5oYXNXaWxkY2Fy
ZCkpOworICAgICAgICAgICAgbV9saXN0LmFwcGVuZChDb250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UobV9wb2xpY3ksIHNvdXJjZS0+c2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIHNv
dXJjZS0+aG9zdC52YWx1ZS50b1N0cmluZygpLCBzb3VyY2UtPnBvcnQudmFsdWUsIHNvdXJjZS0+
cGF0aCwgc291cmNlLT5ob3N0Lmhhc1dpbGRjYXJkLCBzb3VyY2UtPnBvcnQuaGFzV2lsZGNhcmQs
IElzU2VsZlNvdXJjZTo6Tm8pKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3BvbGlj
eS5yZXBvcnRJbnZhbGlkU291cmNlRXhwcmVzc2lvbihtX2RpcmVjdGl2ZU5hbWUsIFN0cmluZyhi
ZWdpblNvdXJjZSwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpblNvdXJjZSkpOwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiZTI2YjAxNWQ5NGU0MGNkMTg0ZjJmOWNjZTMxZmM2
NDkwNWM3MjVlLi5iZGQ2ODRlNzUzMjYyNDEyN2ZmM2E4OWE0NDJmNzYzMjY0NDMzZDFjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0yOSAg
UGF0cmljayBHcmlmZmlzICA8cGdyaWZmaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBDU1A6IElt
cHJvdmUgY29tcGF0aWJpbGl0eSBvZiBzb3VyY2UgbWF0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVwZGF0ZSBleHBlY3RhdGlvbiBhcyBwYXNzaW5n
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1Yi1leHBlY3RlZC50eHQ6
CisKIDIwMjItMDMtMjkgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDU1MgQ29udGFpbmVyIFF1ZXJpZXNdIFN1cHBvcnQgQ1NTT00KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVudC1zZWN1cml0
eS1wb2xpY3kvY29ubmVjdC1zcmMvY29ubmVjdC1zcmMtd2Vic29ja2V0LXNlbGYuc3ViLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29u
dGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvY29ubmVjdC1zcmMtd2Vic29ja2V0LXNl
bGYuc3ViLWV4cGVjdGVkLnR4dAppbmRleCA1YWVlYzA1MDY2MTZjZmEwMjJiNDMyZjQ0OGQ2ODIw
MjY5ZWZjNzMzLi5kNWE3ZDQ4MWEyYmZmODJhZWI0NjZhYTM0ZDJkZWZmNTEzODU1N2Y5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxm
LnN1Yi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGljeS9jb25uZWN0LXNyYy9jb25uZWN0LXNy
Yy13ZWJzb2NrZXQtc2VsZi5zdWItZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1GQUlM
IEV4cGVjdGluZyBsb2dzOiBbImFsbG93ZWQiLCAiYWxsb3dlZCJdIGFzc2VydF91bnJlYWNoZWQ6
IHVuZXhwZWN0ZWQgbG9nOiBibG9ja2VkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorUEFTUyBF
eHBlY3RpbmcgbG9nczogWyJhbGxvd2VkIiwgImFsbG93ZWQiXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456376</attachid>
            <date>2022-04-01 11:13:09 -0700</date>
            <delta_ts>2022-04-01 12:28:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235873-20220401131308.patch</filename>
            <type>text/plain</type>
            <size>13133</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2OGJhYTBlNzY0OGEz
NDJlYTgzYjYyNTY2YmQ2NWU2MzZkMzYyMi4uNGE1NDNjNTNkY2U2NDU1MDBhZGE4MGY3NmFhMmEz
NDAyZGQ2M2IxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIyLTAzLTI5ICBQYXRy
aWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENTUDogSW1wcm92
ZSBjb21wYXRpYmlsaXR5IG9mIHNvdXJjZSBtYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgLSBJbXByb3ZlZCBoYW5kbGluZyBvZiBwcm90b2NvbCBj
aGFuZ2VzOgorICAgICAgICAgIC0gRm9yIGhvc3QgYW5kIHNlbGYgc291cmNlcyBkaXJlY3QgdXBn
cmFkZXMgYXJlIGFsbG93ZWQgKHdzLT53c3MpIChodHRwLT5odHRwcyBhbHJlYWR5IHdvcmtlZCku
CisgICAgICAgICAgLSBGb3Igc2VsZiBzb3VyY2VzIHNpZGUgZ3JhZGVzIGFyZSBub3cgYWxsb3dl
ZCAoaHR0cC0+d3MpLgorICAgICAgICAgIC0gRm9yIHNlbGYgc291cmNlcyB1cGdyYWRlcyBhcmUg
YWx3YXlzIGFsbG93ZWQgKCotPmh0dHBzLCAqLT53c3MpLiAgICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBkb2N1bWVudGVkIGhlcmU6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzLyNtYXRjaC11
cmwtdG8tc291cmNlLWV4cHJlc3Npb24KKworICAgICAgICBJIGFsc28gaW5jbHVkZWQgc29tZSBt
aW5vciBjbGVhbnVwcyBhbmQgYWRkaW5nIG9mIGNvbW1lbnRzLgorCisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnByb3RvY29sTWF0Y2hlc1NlbGYgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpzZWxmUHJvdG9jb2wgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6
Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjpzY2hlbWVNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6aXNQcm90b2NvbEFsbG93ZWRCeVN0YXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6
cGFyc2UpOgorCiAyMDIyLTA0LTAxICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgQVhPYmplY3RDYWNoZTo6dHJlZURhdGEoKSB0byByZXRyaWV2
ZSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBBWCB0cmVlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGExMWY4
NTQ3MThiYjQyN2Y0MTk2Y2Q1MjY2NzIwYWJjOTY5ZmE5ZjIuLjBkOGE5Yzc2NTI0NmQ1NzAyNzU4
Y2U5ZjFlNmU3OWEyZmY5NjRiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMjM5LDggKzIzOSw4IEBAIHZvaWQgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBD
b250ZW50U2VjdXJpCiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VT
ZWxmKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBtX3NlbGZT
b3VyY2VQcm90b2NvbCA9IHNlY3VyaXR5T3JpZ2luLnByb3RvY29sKCk7Ci0gICAgbV9zZWxmU291
cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3Nl
bGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdpbi5w
b3J0KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgbV9zZWxmU291cmNlUHJv
dG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7CisgICAgbV9zZWxmU291cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2U+KCp0aGlzLCBtX3NlbGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgp
LCBzZWN1cml0eU9yaWdpbi5wb3J0KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSwgSXNT
ZWxmU291cmNlOjpZZXMpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQ
b2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpAQCAtMjk1LDEzICsyOTUsNiBAQCBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VT
dGFyVG9NYXRjaEFueVByb3RvYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OnByb3RvY29sTWF0Y2hlc1NlbGYoY29uc3QgVVJMJiB1cmwpIGNvbnN0
Ci17Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fc2VsZlNvdXJjZVBy
b3RvY29sLCAiaHR0cCIpKQotICAgICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKTsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwucHJvdG9jb2woKSwg
bV9zZWxmU291cmNlUHJvdG9jb2wpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGUs
IHR5cGVuYW1lLi4uIEFyZ3M+CiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19jb252
ZXJ0aWJsZTxQcmVkaWNhdGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6VmlvbGF0ZWREaXJlY3Rp
dmVDYWxsYmFjaz46OnZhbHVlLCBib29sPjo6dHlwZSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bFBvbGljaWVzV2l0aERpc3Bvc2l0aW9uQWxsb3coRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFBy
ZWRpY2F0ZSYmIHByZWRpY2F0ZSwgQXJncyYmLi4uIGFyZ3MpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDY5MmU1ZmI3
MjllNWJmZDY5NTFjN2MxM2ViODllZjI5OTVlMTBhZjIuLmJlOGZhODFmOTJmOGNkZThhZWY0YTEy
MTAzYWYzNWI3YzJkNGRhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIC8vIFVzZWQgYnkgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlCi0gICAgYm9vbCBwcm90
b2NvbE1hdGNoZXNTZWxmKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgc2Vs
ZlByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9zZWxmU291cmNlUHJvdG9jb2w7IH07CiAKICAg
ICB2b2lkIHNldFVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzKGJvb2wpOwogICAgIGJvb2wgdXBncmFk
ZUluc2VjdXJlUmVxdWVzdHMoKSBjb25zdCB7IHJldHVybiBtX3VwZ3JhZGVJbnNlY3VyZVJlcXVl
c3RzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcAppbmRleCA3MWRjNmNhMjM0M2EwM2ViMjc1YzkxYjRlZTExYmNj
Y2ZhZDY4Mjc3Li4wNzQwMTlkZDllM2I4NDFkYjc3OWE0MGIxZDJiMjZjNDAyMDNmMWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBzY2hlbWUs
IGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQp
CitDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBzY2hl
bWUsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNh
cmQsIElzU2VsZlNvdXJjZSBpc1NlbGZTb3VyY2UpCiAgICAgOiBtX3BvbGljeShwb2xpY3kpCiAg
ICAgLCBtX3NjaGVtZShzY2hlbWUpCiAgICAgLCBtX2hvc3QoaG9zdCkKQEAgLTQyLDExICs0Miwx
MyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQbwogICAgICwgbV9wb3J0KHBvcnQpCiAgICAgLCBt
X2hvc3RIYXNXaWxkY2FyZChob3N0SGFzV2lsZGNhcmQpCiAgICAgLCBtX3BvcnRIYXNXaWxkY2Fy
ZChwb3J0SGFzV2lsZGNhcmQpCisgICAgLCBtX2lzU2VsZlNvdXJjZShpc1NlbGZTb3VyY2UgPT0g
SXNTZWxmU291cmNlOjpZZXMpCiB7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlOjptYXRjaGVzKGNvbnN0IFVSTCYgdXJsLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlKSBjb25zdAogeworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzLyNtYXRjaC11
cmwtdG8tc291cmNlLWV4cHJlc3Npb24uCiAgICAgaWYgKCFzY2hlbWVNYXRjaGVzKHVybCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaXNTY2hlbWVPbmx5KCkpCkBAIC01NiwxMSAr
NTgsMjQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6Om1hdGNoZXMoY29uc3Qg
VVJMJiB1cmwsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWMKIAogYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnNjaGVtZU1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc2NoZW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fcG9saWN5LnByb3RvY29s
TWF0Y2hlc1NlbGYodXJsKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bV9zY2hlbWUsICJodHRwIikpCi0gICAgICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5wcm90b2NvbCgp
LCBtX3NjaGVtZSk7CisgICAgY29uc3QgYXV0byYgc2NoZW1lID0gbV9zY2hlbWUuaXNFbXB0eSgp
ID8gbV9wb2xpY3kuc2VsZlByb3RvY29sKCkgOiBtX3NjaGVtZTsKKyAgICBhdXRvIHVybFNjaGVt
ZSA9IHVybC5wcm90b2NvbCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisKKyAgICBpZiAo
c2NoZW1lID09IHVybFNjaGVtZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBob3N0
LXNvdXJjZXMgYW5kIHNlbGYtc291cmNlcyBjYW4gZG8gZGlyZWN0IHVwZ3JhZGVzLgorICAgIGlm
ICgoc2NoZW1lID09ICJodHRwIiAmJiB1cmxTY2hlbWUgPT0gImh0dHBzIikKKyAgICAgICAgfHwg
KHNjaGVtZSA9PSAid3MiICYmIHVybFNjaGVtZSA9PSAid3NzIikpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gc2VsZi1zb3VyY2VzIGNhbiBhbHdheXMgdXBncmFkZSB0byBzZWN1cmUg
cHJvdG9jb2xzIG9yIHNpZGUtZ3JhZGUuCisgICAgaWYgKG1faXNTZWxmU291cmNlCisgICAgICAg
ICYmICgodXJsU2NoZW1lID09ICJodHRwcyIgfHwgdXJsU2NoZW1lID09ICJ3c3MiKQorICAgICAg
ICAgICAgfHwgKHNjaGVtZSA9PSAiaHR0cCIgJiYgdXJsU2NoZW1lID09ICJ3cyIpKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29sIHdp
bGRjYXJkTWF0Y2hlcyhTdHJpbmdWaWV3IGhvc3QsIGNvbnN0IFN0cmluZyYgaG9zdFdpdGhXaWxk
Y2FyZCkKQEAgLTEwMyw3ICsxMTgsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2U6OnBvcnRNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChwb3J0ID09IG1f
cG9ydCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAmJiBXVEY6Omlz
RGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQudmFsdWUoKSwgImh0dHAiKSkgJiYgKCghcG9y
dCAmJiB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSkgfHwgKHBvcnQgJiYgV1RGOjppc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCAiaHR0cHMiKSkpKQorICAgIC8vIGhvc3Qtc291
cmNlIGFuZCBzZWxmLXNvdXJjZSBhbGxvd3MgdXBncmFkaW5nIHRvIGEgbW9yZSBzZWN1cmUgc2No
ZW1lIHdoaWNoIGFsbG93cyBmb3IgZGlmZmVyZW50IHBvcnRzLgorICAgIGF1dG8gZGVmYXVsdFNl
Y3VyZVBvcnQgPSBXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIikudmFsdWVfb3Io
NDQzKTsKKyAgICBhdXRvIGRlZmF1bHRJbnNlY3VyZVBvcnQgPSBXVEY6OmRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2woImh0dHAiKS52YWx1ZV9vcig4MCk7CisgICAgYm9vbCBpc1VwZ3JhZGVTZWN1cmUg
PSAocG9ydCA9PSBkZWZhdWx0U2VjdXJlUG9ydCkgfHwgKCFwb3J0ICYmICh1cmwucHJvdG9jb2wo
KSA9PSAiaHR0cHMiIHx8IHVybC5wcm90b2NvbCgpID09ICJ3c3MiKSk7CisgICAgYm9vbCBpc0N1
cnJlbnRVcGdyYWRhYmxlID0gKG1fcG9ydCA9PSBkZWZhdWx0SW5zZWN1cmVQb3J0KSB8fCAobV9z
Y2hlbWUgPT0gImh0dHAiICYmICghbV9wb3J0IHx8IG1fcG9ydCA9PSBkZWZhdWx0U2VjdXJlUG9y
dCkpOworICAgIGlmIChpc1VwZ3JhZGVTZWN1cmUgJiYgaXNDdXJyZW50VXBncmFkYWJsZSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXBvcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCmluZGV4IGEyZGI1
MDQzODk4ZjJlNjk0N2JjN2IwYTJkZDY0NDNhYjUxNDM4ZDAuLjU1OTI3Yjg5NWNiZWRhMGMxYzcy
NzAwZTBhMTg4MDczMGIwZjA3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCkBAIC0zMywxMCArMzMsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owogc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIAorZW51bSBjbGFzcyBJc1NlbGZTb3VyY2UgOiBib29sIHsgTm8s
IFllcyB9OworCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcmIHNjaGVtZSwg
Y29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0LCBjb25zdCBT
dHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNXaWxkY2FyZCk7
CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeSYsIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0
aW9uYWw8dWludDE2X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBob3N0SGFzV2ls
ZGNhcmQsIGJvb2wgcG9ydEhhc1dpbGRjYXJkLCBJc1NlbGZTb3VyY2UpOwogCiAgICAgYm9vbCBt
YXRjaGVzKGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgPSBmYWxz
ZSkgY29uc3Q7CiAKQEAgLTU3LDYgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9ob3N0
SGFzV2lsZGNhcmQ7CiAgICAgYm9vbCBtX3BvcnRIYXNXaWxkY2FyZDsKKyAgICBib29sIG1faXNT
ZWxmU291cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmNwcAppbmRleCBhMWUzZGQ1N2ZhYjBjNmE3MDdjMzJlNmZhNTAzN2UwNDc0N2VlYmI1Li4xZTYz
NDNlYTAzNmU5MTU2ZGUzMDNlNTQ2MjViNTYyMjYzNTNmYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmNwcApAQCAtMTIwLDkgKzEyMCwxMCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3Q6OmlzUHJvdG9jb2xBbGxvd2VkQnlTdGFyKGNvbnN0IFVSTCYgdXJsKSBjbwogICAgIGlm
IChtX3BvbGljeS5hbGxvd0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZVN0YXJUb01hdGNoQW55
UHJvdG9jb2woKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBBbHRob3VnaCBub3Qg
YWxsb3dlZCBieSB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgTGV2ZWwgMyBzcGVjLiwgd2Ug
YWxsb3cgYSBkYXRhIFVSTCB0byBtYXRjaAorICAgIC8vIFRoaXMgaXMgY291bnRlciB0byB0aGUg
Q1NQMyBzcGVjIHdoaWNoIG9ubHkgYWxsb3dzIEhUVFBTIGJ1dCBDaHJvbWl1bSBhbHNvIGFsbG93
cyBpdC4KKyAgICBib29sIGlzQWxsb3dlZCA9IHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkg
fHwgdXJsLnByb3RvY29sSXMoIndzIikgfHwgdXJsLnByb3RvY29sSXMoIndzcyIpIHx8IHVybC5w
cm90b2NvbElzKG1fcG9saWN5LnNlbGZQcm90b2NvbCgpKTsKKyAgICAvLyBBbHNvIG5vdCBhbGxv
d2VkIGJ5IHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBMZXZlbCAzIHNwZWMuLCB3ZSBhbGxv
dyBhIGRhdGEgVVJMIHRvIG1hdGNoCiAgICAgLy8gImltZy1zcmMgKiIgYW5kIGVpdGhlciBhIGRh
dGEgVVJMIG9yIGJsb2IgVVJMIHRvIG1hdGNoICJtZWRpYS1zcmMgKiIgZm9yIHdlYiBjb21wYXRp
YmlsaXR5LgotICAgIGJvb2wgaXNBbGxvd2VkID0gdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSB8fCB1cmwucHJvdG9jb2xJcygid3NzIikgfHwgbV9w
b2xpY3kucHJvdG9jb2xNYXRjaGVzU2VsZih1cmwpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG1fZGlyZWN0aXZlTmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OmltZ1NyYykpCiAgICAgICAgIGlzQWxsb3dlZCB8PSB1cmwucHJvdG9jb2xJc0RhdGEoKTsK
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZlTmFtZSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om1lZGlhU3JjKSkKQEAgLTI2OSw3ICsy
NzAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIENvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlKFN0cgogICAgICAgICAgICAgaWYgKGlzQ1NQRGly
ZWN0aXZlTmFtZShzb3VyY2UtPmhvc3QudmFsdWUpKQogICAgICAgICAgICAgICAgIG1fcG9saWN5
LnJlcG9ydERpcmVjdGl2ZUFzU291cmNlRXhwcmVzc2lvbihtX2RpcmVjdGl2ZU5hbWUsIHNvdXJj
ZS0+aG9zdC52YWx1ZSk7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZFNvdXJjZUZvckV4dGVuc2lv
bk1vZGUoc291cmNlLnZhbHVlKCkpKQotICAgICAgICAgICAgICAgIG1fbGlzdC5hcHBlbmQoQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlKG1fcG9saWN5LCBzb3VyY2UtPnNjaGVtZS50b1N0cmlu
ZygpLCBzb3VyY2UtPmhvc3QudmFsdWUudG9TdHJpbmcoKSwgc291cmNlLT5wb3J0LnZhbHVlLCBz
b3VyY2UtPnBhdGgsIHNvdXJjZS0+aG9zdC5oYXNXaWxkY2FyZCwgc291cmNlLT5wb3J0Lmhhc1dp
bGRjYXJkKSk7CisgICAgICAgICAgICAgICAgbV9saXN0LmFwcGVuZChDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2UobV9wb2xpY3ksIHNvdXJjZS0+c2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCksIHNvdXJjZS0+aG9zdC52YWx1ZS50b1N0cmluZygpLCBzb3VyY2UtPnBvcnQudmFsdWUs
IHNvdXJjZS0+cGF0aCwgc291cmNlLT5ob3N0Lmhhc1dpbGRjYXJkLCBzb3VyY2UtPnBvcnQuaGFz
V2lsZGNhcmQsIElzU2VsZlNvdXJjZTo6Tm8pKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBtX3BvbGljeS5yZXBvcnRJbnZhbGlkU291cmNlRXhwcmVzc2lvbihtX2RpcmVjdGl2ZU5hbWUs
IFN0cmluZyhiZWdpblNvdXJjZSwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpblNvdXJjZSkpOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBhM2M1NzNjNWM1ZjAxZDI3MThkNzdl
NDNiOTlkYmNhMjg5Mzg1MmY1Li45N2Y4ZjFmNGVlMTJhNGNkY2UwNjQwODU4ODQ5ZTQxMmFkNDBj
OWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
Mi0wMy0yOSAgUGF0cmljayBHcmlmZmlzICA8cGdyaWZmaXNAaWdhbGlhLmNvbT4KKworICAgICAg
ICBDU1A6IEltcHJvdmUgY29tcGF0aWJpbGl0eSBvZiBzb3VyY2UgbWF0Y2hpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg3MworCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVwZGF0ZSBleHBlY3RhdGlvbiBh
cyBwYXNzaW5nLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJp
dHktcG9saWN5L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1Yi1leHBl
Y3RlZC50eHQ6CisKIDIwMjItMDQtMDEgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbY3NzLWxvZ2ljYWxdIEFkZCBzdXBwb3J0IGZvciBibG9jay9pbmxpbmUgQ1NTIHZh
bHVlcyBmb3IgcmVzaXplIHByb3BlcnR5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qt
c3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9s
aWN5L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1Yi1leHBlY3RlZC50
eHQKaW5kZXggNWFlZWMwNTA2NjE2Y2ZhMDIyYjQzMmY0NDhkNjgyMDI2OWVmYzczMy4uZDVhN2Q0
ODFhMmJmZjgyYWViNDY2YWEzNGQyZGVmZjUxMzg1NTdmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3VyaXR5LXBvbGlj
eS9jb25uZWN0LXNyYy9jb25uZWN0LXNyYy13ZWJzb2NrZXQtc2VsZi5zdWItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY29udGVu
dC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvY29ubmVjdC1zcmMtd2Vic29ja2V0LXNlbGYu
c3ViLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBFeHBlY3RpbmcgbG9nczog
WyJhbGxvd2VkIiwgImFsbG93ZWQiXSBhc3NlcnRfdW5yZWFjaGVkOiB1bmV4cGVjdGVkIGxvZzog
YmxvY2tlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1MgRXhwZWN0aW5nIGxvZ3M6IFsi
YWxsb3dlZCIsICJhbGxvd2VkIl0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456390</attachid>
            <date>2022-04-01 12:28:40 -0700</date>
            <delta_ts>2022-04-02 10:24:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235873-20220401142839.patch</filename>
            <type>text/plain</type>
            <size>13313</size>
            <attacher name="Patrick Griffis">pgriffis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2OGJhYTBlNzY0OGEz
NDJlYTgzYjYyNTY2YmQ2NWU2MzZkMzYyMi4uNGE1NDNjNTNkY2U2NDU1MDBhZGE4MGY3NmFhMmEz
NDAyZGQ2M2IxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIyLTAzLTI5ICBQYXRy
aWNrIEdyaWZmaXMgIDxwZ3JpZmZpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIENTUDogSW1wcm92
ZSBjb21wYXRpYmlsaXR5IG9mIHNvdXJjZSBtYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1ODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgLSBJbXByb3ZlZCBoYW5kbGluZyBvZiBwcm90b2NvbCBj
aGFuZ2VzOgorICAgICAgICAgIC0gRm9yIGhvc3QgYW5kIHNlbGYgc291cmNlcyBkaXJlY3QgdXBn
cmFkZXMgYXJlIGFsbG93ZWQgKHdzLT53c3MpIChodHRwLT5odHRwcyBhbHJlYWR5IHdvcmtlZCku
CisgICAgICAgICAgLSBGb3Igc2VsZiBzb3VyY2VzIHNpZGUgZ3JhZGVzIGFyZSBub3cgYWxsb3dl
ZCAoaHR0cC0+d3MpLgorICAgICAgICAgIC0gRm9yIHNlbGYgc291cmNlcyB1cGdyYWRlcyBhcmUg
YWx3YXlzIGFsbG93ZWQgKCotPmh0dHBzLCAqLT53c3MpLiAgICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBkb2N1bWVudGVkIGhlcmU6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzLyNtYXRjaC11
cmwtdG8tc291cmNlLWV4cHJlc3Npb24KKworICAgICAgICBJIGFsc28gaW5jbHVkZWQgc29tZSBt
aW5vciBjbGVhbnVwcyBhbmQgYWRkaW5nIG9mIGNvbW1lbnRzLgorCisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnByb3RvY29sTWF0Y2hlc1NlbGYgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpzZWxmUHJvdG9jb2wgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6
Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjpzY2hlbWVNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZTo6cG9ydE1hdGNoZXMgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6aXNQcm90b2NvbEFsbG93ZWRCeVN0YXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6
cGFyc2UpOgorCiAyMDIyLTA0LTAxICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgQVhPYmplY3RDYWNoZTo6dHJlZURhdGEoKSB0byByZXRyaWV2
ZSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBBWCB0cmVlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGExMWY4
NTQ3MThiYjQyN2Y0MTk2Y2Q1MjY2NzIwYWJjOTY5ZmE5ZjIuLjBkOGE5Yzc2NTI0NmQ1NzAyNzU4
Y2U5ZjFlNmU3OWEyZmY5NjRiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMjM5LDggKzIzOSw4IEBAIHZvaWQgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBD
b250ZW50U2VjdXJpCiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VT
ZWxmKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBtX3NlbGZT
b3VyY2VQcm90b2NvbCA9IHNlY3VyaXR5T3JpZ2luLnByb3RvY29sKCk7Ci0gICAgbV9zZWxmU291
cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3Nl
bGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdpbi5w
b3J0KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgbV9zZWxmU291cmNlUHJv
dG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCk7CisgICAgbV9zZWxmU291cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2U+KCp0aGlzLCBtX3NlbGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgp
LCBzZWN1cml0eU9yaWdpbi5wb3J0KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSwgSXNT
ZWxmU291cmNlOjpZZXMpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQ
b2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpAQCAtMjk1LDEzICsyOTUsNiBAQCBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VT
dGFyVG9NYXRjaEFueVByb3RvYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OnByb3RvY29sTWF0Y2hlc1NlbGYoY29uc3QgVVJMJiB1cmwpIGNvbnN0
Ci17Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fc2VsZlNvdXJjZVBy
b3RvY29sLCAiaHR0cCIpKQotICAgICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKTsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh1cmwucHJvdG9jb2woKSwg
bV9zZWxmU291cmNlUHJvdG9jb2wpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGUs
IHR5cGVuYW1lLi4uIEFyZ3M+CiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19jb252
ZXJ0aWJsZTxQcmVkaWNhdGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6VmlvbGF0ZWREaXJlY3Rp
dmVDYWxsYmFjaz46OnZhbHVlLCBib29sPjo6dHlwZSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bFBvbGljaWVzV2l0aERpc3Bvc2l0aW9uQWxsb3coRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIFBy
ZWRpY2F0ZSYmIHByZWRpY2F0ZSwgQXJncyYmLi4uIGFyZ3MpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDY5MmU1ZmI3
MjllNWJmZDY5NTFjN2MxM2ViODllZjI5OTVlMTBhZjIuLmJlOGZhODFmOTJmOGNkZThhZWY0YTEy
MTAzYWYzNWI3YzJkNGRhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIC8vIFVzZWQgYnkgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlCi0gICAgYm9vbCBwcm90
b2NvbE1hdGNoZXNTZWxmKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgc2Vs
ZlByb3RvY29sKCkgY29uc3QgeyByZXR1cm4gbV9zZWxmU291cmNlUHJvdG9jb2w7IH07CiAKICAg
ICB2b2lkIHNldFVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RzKGJvb2wpOwogICAgIGJvb2wgdXBncmFk
ZUluc2VjdXJlUmVxdWVzdHMoKSBjb25zdCB7IHJldHVybiBtX3VwZ3JhZGVJbnNlY3VyZVJlcXVl
c3RzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcAppbmRleCA3MWRjNmNhMjM0M2EwM2ViMjc1YzkxYjRlZTExYmNj
Y2ZhZDY4Mjc3Li5mNTM4NTkyYzg1MDEwMTZjNzg5NTk1ZTIxODNhYTU5NTVlN2U0MTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZShj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBzY2hlbWUs
IGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNhcmQp
CitDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBzY2hl
bWUsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBib29sIGhvc3RIYXNXaWxkY2FyZCwgYm9vbCBwb3J0SGFzV2lsZGNh
cmQsIElzU2VsZlNvdXJjZSBpc1NlbGZTb3VyY2UpCiAgICAgOiBtX3BvbGljeShwb2xpY3kpCiAg
ICAgLCBtX3NjaGVtZShzY2hlbWUpCiAgICAgLCBtX2hvc3QoaG9zdCkKQEAgLTQyLDExICs0Miwx
MyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQbwogICAgICwgbV9wb3J0KHBvcnQpCiAgICAgLCBt
X2hvc3RIYXNXaWxkY2FyZChob3N0SGFzV2lsZGNhcmQpCiAgICAgLCBtX3BvcnRIYXNXaWxkY2Fy
ZChwb3J0SGFzV2lsZGNhcmQpCisgICAgLCBtX2lzU2VsZlNvdXJjZShpc1NlbGZTb3VyY2UgPT0g
SXNTZWxmU291cmNlOjpZZXMpCiB7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlOjptYXRjaGVzKGNvbnN0IFVSTCYgdXJsLCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlKSBjb25zdAogeworICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzLyNtYXRjaC11
cmwtdG8tc291cmNlLWV4cHJlc3Npb24uCiAgICAgaWYgKCFzY2hlbWVNYXRjaGVzKHVybCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaXNTY2hlbWVPbmx5KCkpCkBAIC01NiwxMSAr
NTgsMjcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U6Om1hdGNoZXMoY29uc3Qg
VVJMJiB1cmwsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWMKIAogYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnNjaGVtZU1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc2NoZW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fcG9saWN5LnByb3RvY29s
TWF0Y2hlc1NlbGYodXJsKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bV9zY2hlbWUsICJodHRwIikpCi0gICAgICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5wcm90b2NvbCgp
LCBtX3NjaGVtZSk7CisgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUDMvI21hdGNoLXNj
aGVtZXMuCisgICAgY29uc3QgYXV0byYgc2NoZW1lID0gbV9zY2hlbWUuaXNFbXB0eSgpID8gbV9w
b2xpY3kuc2VsZlByb3RvY29sKCkgOiBtX3NjaGVtZTsKKyAgICBhdXRvIHVybFNjaGVtZSA9IHVy
bC5wcm90b2NvbCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisKKyAgICBpZiAoc2NoZW1l
ID09IHVybFNjaGVtZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBob3N0LXNvdXJj
ZXMgY2FuIGRvIGRpcmVjdC11cGdyYWRlcy4KKyAgICBpZiAoc2NoZW1lID09ICJodHRwIiAmJiB1
cmxTY2hlbWUgPT0gImh0dHBzIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHNjaGVt
ZSA9PSAid3MiICYmICh1cmxTY2hlbWUgPT0gIndzcyIgfHwgdXJsU2NoZW1lID09ICJodHRwcyIg
fHwgdXJsU2NoZW1lID09ICJodHRwIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChz
Y2hlbWUgPT0gIndzcyIgJiYgdXJsU2NoZW1lID09ICJodHRwcyIpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gc2VsZi1zb3VyY2VzIGNhbiBhbHdheXMgdXBncmFkZSB0byBzZWN1cmUg
cHJvdG9jb2xzIGFuZCBzaWRlLWdyYWRlIGluc2VjdXJlIHByb3RvY29scy4KKyAgICBpZiAoKG1f
aXNTZWxmU291cmNlCisgICAgICAgICYmICgodXJsU2NoZW1lID09ICJodHRwcyIgfHwgdXJsU2No
ZW1lID09ICJ3c3MiKSB8fCAoc2NoZW1lID09ICJodHRwIiAmJiB1cmxTY2hlbWUgPT0gIndzIikp
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRp
YyBib29sIHdpbGRjYXJkTWF0Y2hlcyhTdHJpbmdWaWV3IGhvc3QsIGNvbnN0IFN0cmluZyYgaG9z
dFdpdGhXaWxkY2FyZCkKQEAgLTEwMyw3ICsxMjEsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnBvcnRNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChw
b3J0ID09IG1fcG9ydCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoKG1fcG9ydCAm
JiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQudmFsdWUoKSwgImh0dHAiKSkg
JiYgKCghcG9ydCAmJiB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSkgfHwgKHBvcnQgJiYgV1RGOjpp
c0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wocG9ydC52YWx1ZSgpLCAiaHR0cHMiKSkpKQorICAgIC8v
IGhvc3Qtc291cmNlIGFuZCBzZWxmLXNvdXJjZSBhbGxvd3MgdXBncmFkaW5nIHRvIGEgbW9yZSBz
ZWN1cmUgc2NoZW1lIHdoaWNoIGFsbG93cyBmb3IgZGlmZmVyZW50IHBvcnRzLgorICAgIGF1dG8g
ZGVmYXVsdFNlY3VyZVBvcnQgPSBXVEY6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woImh0dHBzIiku
dmFsdWVfb3IoNDQzKTsKKyAgICBhdXRvIGRlZmF1bHRJbnNlY3VyZVBvcnQgPSBXVEY6OmRlZmF1
bHRQb3J0Rm9yUHJvdG9jb2woImh0dHAiKS52YWx1ZV9vcig4MCk7CisgICAgYm9vbCBpc1VwZ3Jh
ZGVTZWN1cmUgPSAocG9ydCA9PSBkZWZhdWx0U2VjdXJlUG9ydCkgfHwgKCFwb3J0ICYmICh1cmwu
cHJvdG9jb2woKSA9PSAiaHR0cHMiIHx8IHVybC5wcm90b2NvbCgpID09ICJ3c3MiKSk7CisgICAg
Ym9vbCBpc0N1cnJlbnRVcGdyYWRhYmxlID0gKG1fcG9ydCA9PSBkZWZhdWx0SW5zZWN1cmVQb3J0
KSB8fCAobV9zY2hlbWUgPT0gImh0dHAiICYmICghbV9wb3J0IHx8IG1fcG9ydCA9PSBkZWZhdWx0
U2VjdXJlUG9ydCkpOworICAgIGlmIChpc1VwZ3JhZGVTZWN1cmUgJiYgaXNDdXJyZW50VXBncmFk
YWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXBvcnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCmlu
ZGV4IGEyZGI1MDQzODk4ZjJlNjk0N2JjN2IwYTJkZDY0NDNhYjUxNDM4ZDAuLjU1OTI3Yjg5NWNi
ZWRhMGMxYzcyNzAwZTBhMTg4MDczMGIwZjA3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oCkBAIC0zMywxMCArMzMs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5Owog
c3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAorZW51bSBjbGFzcyBJc1NlbGZTb3VyY2UgOiBi
b29sIHsgTm8sIFllcyB9OworCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2Ugewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmLCBjb25zdCBTdHJpbmcm
IHNjaGVtZSwgY29uc3QgU3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgaG9zdEhhc1dpbGRjYXJkLCBib29sIHBvcnRIYXNX
aWxkY2FyZCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeSYsIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIGhvc3Qs
IHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBo
b3N0SGFzV2lsZGNhcmQsIGJvb2wgcG9ydEhhc1dpbGRjYXJkLCBJc1NlbGZTb3VyY2UpOwogCiAg
ICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVSTCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UgPSBmYWxzZSkgY29uc3Q7CiAKQEAgLTU3LDYgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9ob3N0SGFzV2lsZGNhcmQ7CiAgICAgYm9vbCBtX3BvcnRIYXNXaWxkY2FyZDsKKyAgICBi
b29sIG1faXNTZWxmU291cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcAppbmRleCBhMWUzZGQ1N2ZhYjBjNmE3MDdjMzJlNmZhNTAzN2UwNDc0N2Vl
YmI1Li4xZTYzNDNlYTAzNmU5MTU2ZGUzMDNlNTQ2MjViNTYyMjYzNTNmYTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcApAQCAtMTIwLDkgKzEyMCwxMCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3Q6OmlzUHJvdG9jb2xBbGxvd2VkQnlTdGFyKGNvbnN0IFVSTCYgdXJsKSBj
bwogICAgIGlmIChtX3BvbGljeS5hbGxvd0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZVN0YXJU
b01hdGNoQW55UHJvdG9jb2woKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBBbHRo
b3VnaCBub3QgYWxsb3dlZCBieSB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgTGV2ZWwgMyBz
cGVjLiwgd2UgYWxsb3cgYSBkYXRhIFVSTCB0byBtYXRjaAorICAgIC8vIFRoaXMgaXMgY291bnRl
ciB0byB0aGUgQ1NQMyBzcGVjIHdoaWNoIG9ubHkgYWxsb3dzIEhUVFBTIGJ1dCBDaHJvbWl1bSBh
bHNvIGFsbG93cyBpdC4KKyAgICBib29sIGlzQWxsb3dlZCA9IHVybC5wcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkgfHwgdXJsLnByb3RvY29sSXMoIndzIikgfHwgdXJsLnByb3RvY29sSXMoIndzcyIp
IHx8IHVybC5wcm90b2NvbElzKG1fcG9saWN5LnNlbGZQcm90b2NvbCgpKTsKKyAgICAvLyBBbHNv
IG5vdCBhbGxvd2VkIGJ5IHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBMZXZlbCAzIHNwZWMu
LCB3ZSBhbGxvdyBhIGRhdGEgVVJMIHRvIG1hdGNoCiAgICAgLy8gImltZy1zcmMgKiIgYW5kIGVp
dGhlciBhIGRhdGEgVVJMIG9yIGJsb2IgVVJMIHRvIG1hdGNoICJtZWRpYS1zcmMgKiIgZm9yIHdl
YiBjb21wYXRpYmlsaXR5LgotICAgIGJvb2wgaXNBbGxvd2VkID0gdXJsLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSB8fCB1cmwucHJvdG9jb2xJcygid3MiKSB8fCB1cmwucHJvdG9jb2xJcygid3Nz
IikgfHwgbV9wb2xpY3kucHJvdG9jb2xNYXRjaGVzU2VsZih1cmwpOwogICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZlTmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXM6OmltZ1NyYykpCiAgICAgICAgIGlzQWxsb3dlZCB8PSB1cmwucHJvdG9jb2xJ
c0RhdGEoKTsKICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZl
TmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om1lZGlhU3JjKSkKQEAg
LTI2OSw3ICsyNzAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlKFN0cgogICAgICAgICAgICAgaWYg
KGlzQ1NQRGlyZWN0aXZlTmFtZShzb3VyY2UtPmhvc3QudmFsdWUpKQogICAgICAgICAgICAgICAg
IG1fcG9saWN5LnJlcG9ydERpcmVjdGl2ZUFzU291cmNlRXhwcmVzc2lvbihtX2RpcmVjdGl2ZU5h
bWUsIHNvdXJjZS0+aG9zdC52YWx1ZSk7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZFNvdXJjZUZv
ckV4dGVuc2lvbk1vZGUoc291cmNlLnZhbHVlKCkpKQotICAgICAgICAgICAgICAgIG1fbGlzdC5h
cHBlbmQoQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlKG1fcG9saWN5LCBzb3VyY2UtPnNjaGVt
ZS50b1N0cmluZygpLCBzb3VyY2UtPmhvc3QudmFsdWUudG9TdHJpbmcoKSwgc291cmNlLT5wb3J0
LnZhbHVlLCBzb3VyY2UtPnBhdGgsIHNvdXJjZS0+aG9zdC5oYXNXaWxkY2FyZCwgc291cmNlLT5w
b3J0Lmhhc1dpbGRjYXJkKSk7CisgICAgICAgICAgICAgICAgbV9saXN0LmFwcGVuZChDb250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2UobV9wb2xpY3ksIHNvdXJjZS0+c2NoZW1lLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCksIHNvdXJjZS0+aG9zdC52YWx1ZS50b1N0cmluZygpLCBzb3VyY2UtPnBv
cnQudmFsdWUsIHNvdXJjZS0+cGF0aCwgc291cmNlLT5ob3N0Lmhhc1dpbGRjYXJkLCBzb3VyY2Ut
PnBvcnQuaGFzV2lsZGNhcmQsIElzU2VsZlNvdXJjZTo6Tm8pKTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBtX3BvbGljeS5yZXBvcnRJbnZhbGlkU291cmNlRXhwcmVzc2lvbihtX2RpcmVj
dGl2ZU5hbWUsIFN0cmluZyhiZWdpblNvdXJjZSwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpblNv
dXJjZSkpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBhM2M1NzNjNWM1ZjAx
ZDI3MThkNzdlNDNiOTlkYmNhMjg5Mzg1MmY1Li45N2Y4ZjFmNGVlMTJhNGNkY2UwNjQwODU4ODQ5
ZTQxMmFkNDBjOWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMi0wMy0yOSAgUGF0cmljayBHcmlmZmlzICA8cGdyaWZmaXNAaWdhbGlhLmNvbT4K
KworICAgICAgICBDU1A6IEltcHJvdmUgY29tcGF0aWJpbGl0eSBvZiBzb3VyY2UgbWF0Y2hpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTg3Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVwZGF0ZSBleHBl
Y3RhdGlvbiBhcyBwYXNzaW5nLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRl
bnQtc2VjdXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxm
LnN1Yi1leHBlY3RlZC50eHQ6CisKIDIwMjItMDQtMDEgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxl
LmNvbT4KIAogICAgICAgICBbY3NzLWxvZ2ljYWxdIEFkZCBzdXBwb3J0IGZvciBibG9jay9pbmxp
bmUgQ1NTIHZhbHVlcyBmb3IgcmVzaXplIHByb3BlcnR5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2VjdXJpdHktcG9saWN5
L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1Yi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2NvbnRlbnQtc2Vj
dXJpdHktcG9saWN5L2Nvbm5lY3Qtc3JjL2Nvbm5lY3Qtc3JjLXdlYnNvY2tldC1zZWxmLnN1Yi1l
eHBlY3RlZC50eHQKaW5kZXggNWFlZWMwNTA2NjE2Y2ZhMDIyYjQzMmY0NDhkNjgyMDI2OWVmYzcz
My4uZDVhN2Q0ODFhMmJmZjgyYWViNDY2YWEzNGQyZGVmZjUxMzg1NTdmOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jb250ZW50LXNlY3Vy
aXR5LXBvbGljeS9jb25uZWN0LXNyYy9jb25uZWN0LXNyYy13ZWJzb2NrZXQtc2VsZi5zdWItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY29udGVudC1zZWN1cml0eS1wb2xpY3kvY29ubmVjdC1zcmMvY29ubmVjdC1zcmMtd2Vic29j
a2V0LXNlbGYuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBFeHBlY3Rp
bmcgbG9nczogWyJhbGxvd2VkIiwgImFsbG93ZWQiXSBhc3NlcnRfdW5yZWFjaGVkOiB1bmV4cGVj
dGVkIGxvZzogYmxvY2tlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1MgRXhwZWN0aW5n
IGxvZ3M6IFsiYWxsb3dlZCIsICJhbGxvd2VkIl0KIAo=
</data>
<flag name="commit-queue"
          id="484758"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>