<?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>225579</bug_id>
          
          <creation_ts>2021-05-09 03:17:40 -0700</creation_ts>
          <short_desc>[GPU Process] Simplify DisplayList::Iterator part 8: Replace the guts of DisplayList::Iterator without affecting its public API</short_desc>
          <delta_ts>2021-05-16 03:18:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          <dependson>224314</dependson>
          <blocked>223560</blocked>
    
    <blocked>225582</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758319</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 03:17:40 -0700</bug_when>
    <thetext>[GPU Process] Simplify DisplayList::Iterator part 8: Replace the guts of DisplayList::Iterator without affecting its public API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758320</commentid>
    <comment_count>1</comment_count>
      <attachid>428123</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 03:38:42 -0700</bug_when>
    <thetext>Created attachment 428123
For review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758321</commentid>
    <comment_count>2</comment_count>
      <attachid>428124</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 03:48:02 -0700</bug_when>
    <thetext>Created attachment 428124
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758322</commentid>
    <comment_count>3</comment_count>
      <attachid>428125</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 03:49:22 -0700</bug_when>
    <thetext>Created attachment 428125
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758323</commentid>
    <comment_count>4</comment_count>
      <attachid>428126</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 03:49:39 -0700</bug_when>
    <thetext>Created attachment 428126
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758324</commentid>
    <comment_count>5</comment_count>
      <attachid>428127</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 03:55:27 -0700</bug_when>
    <thetext>Created attachment 428127
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758325</commentid>
    <comment_count>6</comment_count>
      <attachid>428128</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 03:55:54 -0700</bug_when>
    <thetext>Created attachment 428128
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758332</commentid>
    <comment_count>7</comment_count>
      <attachid>428128</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-09 09:30:39 -0700</bug_when>
    <thetext>Comment on attachment 428128
Patch for review

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2363
&gt; +template&lt;typename Item&gt;
&gt; +static inline typename std::enable_if_t&lt;!HasIsValid&lt;Item&gt;, bool&gt; isValid(const Item&amp;)

I would put the template&lt;&gt; on the same line as the function signature. I think you don&apos;t want the static or inline here either.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2369
&gt; +template&lt;typename Item&gt;
&gt; +static inline typename std::enable_if_t&lt;HasIsValid&lt;Item&gt;, bool&gt; isValid(const Item&amp; item)

I would put the template&lt;&gt; on the same line as the function signature. I think you don&apos;t want the static or inline here either.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2379
&gt; +template &lt;typename T&gt;
&gt; +constexpr size_t paddedSizeOfTypeAndItemInBytes()

I would put the template&lt;&gt; on the same line as the function signature.

Alternatively, this might be better as constexpr variable.

template&lt;typename T&gt; inline constexpr paddedSizeOfTypeAndItemInBytes = sizeof(uint64_t) + roundUpToMultipleOf(alignof(uint64_t), sizeof(T));

Then just used as paddedSizeOfTypeAndItemInBytes&lt;T&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758333</commentid>
    <comment_count>8</comment_count>
      <attachid>428128</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-09 10:00:29 -0700</bug_when>
    <thetext>Comment on attachment 428128
Patch for review

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListIterator.cpp:114
&gt; +inline auto DisplayList::Iterator::currentItem() const -&gt; Optional&lt;CurrentItemResult&gt;

This inline is unexpected. What is the intent of it?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListIterator.cpp:116
&gt; +    using Sequence = brigand::make_sequence&lt;brigand::ptrdiff_t&lt;0&gt;, WTF::variant_size&lt;DisplayListItem&gt;::value&gt;;

I think adding a helper type or renaming Sequence, would make it more clear what this is attempting to do. 

I believe what this is doing is making an integer sequence from 0 to WTF::variant_size&lt;DisplayListItem&gt;, but what you really want here is a type list of the all the types in the DisplayListItem Variant.

I think we can do this more directly, and in a way that will be more useful for other uses of iterating all the types here, by just using a type list directly. I am not entirely sure, but I think you might be able to just use DisplayListItem directly in for_each, since it has a type list as part of its type. e.g.

    brigand::for_each&lt;DisplayListItem&gt;([&amp;](auto&amp;&amp; type) {
        using DisplayListItemType = decltype(type);

       ...


Let me know if that works. If it doesn&apos;t, there are a few other ways we can convert the Variant&lt;...&gt; into a working brigand::list&lt;...&gt;.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListIterator.cpp:119
&gt; +    Optional&lt;CurrentItemResult&gt; result;
&gt; +    brigand::for_each&lt;Sequence&gt;([&amp;](auto&amp;&amp; type) {

At some point I want to make a version of this that allows returning a value.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListIterator.cpp:125
&gt; +        if (m_cursor + 1 &gt; endOfCurrentBuffer)

In general, I think this code could use a few more comments and/or more explicit named constants explaining what the specific lines are doing. Parsing is hard, so explaining why a + 1, or sizeof(uint64_t) is there is going to help future readers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758373</commentid>
    <comment_count>9</comment_count>
      <attachid>428128</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 14:26:56 -0700</bug_when>
    <thetext>Comment on attachment 428128
Patch for review

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

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2379
&gt;&gt; +constexpr size_t paddedSizeOfTypeAndItemInBytes()
&gt; 
&gt; I would put the template&lt;&gt; on the same line as the function signature.
&gt; 
&gt; Alternatively, this might be better as constexpr variable.
&gt; 
&gt; template&lt;typename T&gt; inline constexpr paddedSizeOfTypeAndItemInBytes = sizeof(uint64_t) + roundUpToMultipleOf(alignof(uint64_t), sizeof(T));
&gt; 
&gt; Then just used as paddedSizeOfTypeAndItemInBytes&lt;T&gt;.

This almost works, but needs two tweaks:

1. You can&apos;t have two symbols with the same name where one is a function and the other is a variable. So I renamed this one.
2. roundUpToMultipleOf(alignof(uint64_t), sizeof(T)) needs to become roundUpToMultipleOf&lt;alignof(uint64_t)&gt;(sizeof(T))

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListIterator.cpp:114
&gt;&gt; +inline auto DisplayList::Iterator::currentItem() const -&gt; Optional&lt;CurrentItemResult&gt;
&gt; 
&gt; This inline is unexpected. What is the intent of it?

Right, this is left over from a previous version of the patch that didn&apos;t use brigand. I&apos;ll remove it.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListIterator.cpp:116
&gt;&gt; +    using Sequence = brigand::make_sequence&lt;brigand::ptrdiff_t&lt;0&gt;, WTF::variant_size&lt;DisplayListItem&gt;::value&gt;;
&gt; 
&gt; I think adding a helper type or renaming Sequence, would make it more clear what this is attempting to do. 
&gt; 
&gt; I believe what this is doing is making an integer sequence from 0 to WTF::variant_size&lt;DisplayListItem&gt;, but what you really want here is a type list of the all the types in the DisplayListItem Variant.
&gt; 
&gt; I think we can do this more directly, and in a way that will be more useful for other uses of iterating all the types here, by just using a type list directly. I am not entirely sure, but I think you might be able to just use DisplayListItem directly in for_each, since it has a type list as part of its type. e.g.
&gt; 
&gt;     brigand::for_each&lt;DisplayListItem&gt;([&amp;](auto&amp;&amp; type) {
&gt;         using DisplayListItemType = decltype(type);
&gt; 
&gt;        ...
&gt; 
&gt; 
&gt; Let me know if that works. If it doesn&apos;t, there are a few other ways we can convert the Variant&lt;...&gt; into a working brigand::list&lt;...&gt;.

It works! So cool!

The &quot;using DisplayListItemType&quot; line needs to be &quot;using DisplayListItemType = typename WTF::RemoveCVAndReference&lt;decltype(type)&gt;::type::type;&quot; though.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListIterator.cpp:125
&gt;&gt; +        if (m_cursor + 1 &gt; endOfCurrentBuffer)
&gt; 
&gt; In general, I think this code could use a few more comments and/or more explicit named constants explaining what the specific lines are doing. Parsing is hard, so explaining why a + 1, or sizeof(uint64_t) is there is going to help future readers.

Good idea. I&apos;ve added some comments, and even some ascii-art!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758376</commentid>
    <comment_count>10</comment_count>
      <attachid>428137</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 14:28:51 -0700</bug_when>
    <thetext>Created attachment 428137
Updated patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758377</commentid>
    <comment_count>11</comment_count>
      <attachid>428138</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 14:29:35 -0700</bug_when>
    <thetext>Created attachment 428138
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758451</commentid>
    <comment_count>12</comment_count>
      <attachid>428138</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-10 02:56:06 -0700</bug_when>
    <thetext>Comment on attachment 428138
Patch for committing

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

Whoops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760588</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-16 03:18:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78073535&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428123</attachid>
            <date>2021-05-09 03:38:42 -0700</date>
            <delta_ts>2021-05-09 03:47:50 -0700</delta_ts>
            <desc>For review</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>19766</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDg1OWM5ZjY2Nzk4MGMwNjdlNjhhM2M4MjA3ZTY0ODcxZmRkMjkzMzgKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MDI6MzU6NDggMjAyMSAtMDcwMAoKICAgIFBhcnQgOAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmY0YmQwZTEx
YjIuLmY4MTY4ZGUwMTFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA4OiBSZXBsYWNl
IHRoZSBndXRzIG9mIERpc3BsYXlMaXN0OjpJdGVyYXRvciB3aXRob3V0IGFmZmVjdGluZyBpdHMg
cHVibGljIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBhIGhhbGYtc3RlcCB0b3dhcmQgYSB3b3JsZCB3aGVyZSBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIHJldHVybnMgYSBEaXNwbGF5TGlzdEl0ZW0gaW5z
dGVhZCBvZiBhbiBJdGVtSGFuZGxlLgorICAgICAgICBJdCBkb2VzIHRoaXMgYnkgc3dhcHBpbmcg
b3V0IHRoZSBndXRzIG9mIERpc3BsYXlsaXN0OjpJdGVyYXRvciBzbyB0aGF0IGl0IGNyZWF0ZXMg
YSBEaXNwbGF5TGlzdEl0ZW0sIGJ1dCB0aGVuIGl0IGNvbnZlcnRzIHRoZQorICAgICAgICBEaXNw
bGF5TGlzdEl0ZW0gdG8gYW4gSXRlbUhhbmRsZSBhdCB0aGUgbGFzdCBzZWNvbmQgaW4gb3JkZXIg
dG8gcHJlc2VydmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yJ3MgQVBJIHNpZ25hdHVyZXMuIFRoaXMg
d2F5LCB3ZSBjYW4KKyAgICAgICAgc3BsaXQgdGhlIHVwZGF0ZSBvZiB0aGUgaW1wbGVtZW50YXRp
b24gb2YgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIGludG8gYSBzZXBhcmF0ZSBwYXRjaCBmcm9tIHVw
ZGF0aW5nIGFsbCB0aGUgY2FsbGVycyB0byB0aGUgbmV3CisgICAgICAgIHNpZ25hdHVyZS4KKwor
ICAgICAgICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQs
IGJlY2F1c2UgRGlzcGxheUxpc3RJdGVtcyBhcmUgc2ltcGxlciB0aGFuIEl0ZW1IYW5kbGVzLiBC
ZWNhdXNlIGFsbCB0aGUgdXNlcnMgb2YKKyAgICAgICAgdGhlIGl0ZXJhdG9yIHVzZSBpdCBpbiBh
IGZvcmVhY2ggbG9vcCwgd2UgY2FuIGV4cGVjdCB0aGF0IGFsbCB1c2VycyB3aWxsIHBpbmctcG9u
ZyBiZXR3ZWVuIG9wZXJhdG9yKigpIGFuZCBvcGVyYXRvcisrKCkuIFRoaXMgbWVhbnMKKyAgICAg
ICAgdGhhdCBvcGVyYXRvciooKSBjYW4gY29tcHV0ZSBhIEN1cnJlbnRJdGVtSW5mbywgd2hpY2gg
aW5jbHVkZXMgdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUg
ZGlzcGxheSBsaXN0IHNobWVtLAorICAgICAgICBzbyB0aGF0IHRoZSBpdGVyYXRvciBjYW4gcmV0
YWluIHRoYXQgaW5mb3JtYXRpb24sIGFuZCB0aGUgbmV4dCBjYWxsIHRvIG9wZXJhdG9yKysoKSBj
YW4ganVzdCB1c2UgaXQgdG8ga25vdyBob3cgbXVjaCB0byBpbmNyZW1lbnQgYnkuCisgICAgICAg
IFNvLCB0aGVyZSdzIGEgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB3aGljaCBpcyBjb25zdCBhbmQg
cmV0dXJucyBhIEN1cnJlbnRJdGVtUmVzdWx0LCBhbmQgaXQncyBvcGVyYXRvciooKSdzIGpvYiB0
byBjYWxsIGl0IGFuZCByZWNvcmQKKyAgICAgICAgdGhlIHJlbGV2YW50IGluZm8gZm9yIG9wZXJh
dG9yKysoKS4KKworICAgICAgICBUaGUgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB1c2VzIGJyaWdh
bmQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LCBhbmQgY29tcGFyZXMgdGhhdCB0eXBlJ3MKKyAgICAgICAgaXRlbVR5cGUgdG8gdGhl
IGZpcnN0IHNlcmlhbGl6ZWQgYnl0ZSBpbiB0aGUgc2htZW0uIElmIGl0IG1hdGNoZXMsIHdlIHRy
eSB0byBwYXJzZSBpdCBhY2NvcmRpbmcgdG8gdGhlIHJlbGV2YW50IHNlcmlhbGl6YXRpb24gcnVs
ZXMsCisgICAgICAgIGFuZCBpZiBpdCBkb2Vzbid0IG1hdGNoLCBicmlnYW5kIHdpbGwganVzdCBj
b250aW51ZSBsb29waW5nIHRvIHRoZSBuZXh0IHR5cGUgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmlzVmFsaWQpOiBEZWxldGVkLiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKTogTW92ZWQgZnJvbSBEaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6
b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRv
U3RhcnRPZkN1cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJl
bnREcmF3aW5nSXRlbUV4dGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjph
ZHZhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9y
KyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMS0wNS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJv
Y2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNjogTWlncmF0ZSBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50Jgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA5ZDRiMjI5
NDBhMmQuLmMyZjE4MTI0OWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKQEAgLTQzOSwyMSArNDM5LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95
KCkKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGlu
ZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlw
ZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJ
c1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQotewotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3Qg
SXRlbSYgaXRlbSkKLXsKLSAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Ci19Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIEl0ZW0+CiBzdGF0aWMgaW5saW5lIGJvb2wgY29weUludG8odWludDhfdCogZGVz
dGluYXRpb25XaXRoT2Zmc2V0LCBjb25zdCBJdGVtJiBpdGVtKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKaW5kZXggMWViODE1NmQxNjYzLi43ODMyOTkyNTMyZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjM1Niw5ICsyMzU2LDMxIEBAIHVzaW5nIERp
c3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQKICNlbmRpZgogPjsKIAotc2l6ZV90IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKK3RlbXBsYXRlPHR5
cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlk
ID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFz
SXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlk
KCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlk
KGNvbnN0IEl0ZW0mKQoreworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFs
aWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sKKyAgICByZXR1cm4g
aXRlbS5pc1ZhbGlkKCk7Cit9CisKIEl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3Qg
RGlzcGxheUxpc3RJdGVtJik7CiAKK3NpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29u
c3RleHByIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoKQoreworICAgIHJl
dHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2
NF90KSwgc2l6ZW9mKFQpKTsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgSXRlbUhhbmRsZSk7CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKaW5kZXggZWFlYTM0ODE2ZGI4Li4xZTliYmNk
ZDM1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTI5
LDExMCArMjksMTI1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxp
c3QgewogCi1ib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAorRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kKQorICAgIDogbV9kaXNw
bGF5TGlzdChkaXNwbGF5TGlzdCkKIHsKLSAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkg
fHwgIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBhdXRvJiBpdGVtcyA9
ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy5tX3dyaXRhYmxlQnVm
ZmVyLmRhdGEgKyBpdGVtcy5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIHJldHVybiBtX2N1
cnNvciA9PSBlbmRDdXJzb3I7CisgICAgaWYgKGltbWVkaWF0ZWx5TW92ZVRvRW5kID09IEltbWVk
aWF0ZWx5TW92ZVRvRW5kOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1dG8gaXRlbXMgPSBpdGVtQnVm
ZmVyKCkpIHsKKyAgICAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9IGl0ZW1zLT5tX3Jl
YWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAgICAgICAgICBtX2N1cnNvciA9IGVuZE9mQ3VycmVu
dEJ1ZmZlcigpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIG1vdmVDdXJzb3JUb1N0
YXJ0T2ZDdXJyZW50QnVmZmVyKCk7CiB9CiAKLWF1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1
cGRhdGVDdXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQoSXRlbVR5cGUgaXRlbVR5cGUpIC0+IEV4dGVu
dFVwZGF0ZVJlc3VsdAorI2lmIEFTU0VSVF9FTkFCTEVECitib29sIERpc3BsYXlMaXN0OjpJdGVy
YXRvcjo6YXRFbmQoKSBjb25zdAogewotICAgIGF1dG8mIGV4dGVudHMgPSBtX2Rpc3BsYXlMaXN0
Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzOwotICAgIGlmIChleHRlbnRzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKLQotICAgIGlmICghaXNEcmF3
aW5nSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50ID0gV1RGOjpudWxs
b3B0OwotICAgICAgICByZXR1cm4gRXh0ZW50VXBkYXRlUmVzdWx0OjpTdWNjZXNzOwotICAgIH0K
KyAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaWYgKG1fZHJhd2luZ0l0ZW1JbmRleCA+PSBleHRlbnRzLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6RmFpbHVyZTsKKyAgICBjb25zdCBhdXRvKiBpdGVt
cyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAoIWl0ZW1zKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIG1fY3VycmVudEV4dGVudCA9IGV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKLSAg
ICBtX2RyYXdpbmdJdGVtSW5kZXgrKzsKLSAgICByZXR1cm4gRXh0ZW50VXBkYXRlUmVzdWx0OjpT
dWNjZXNzOworICAgIGF1dG8gZW5kQ3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0
YSArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOworICAgIHJldHVybiBtX2N1cnNvciA9
PSBlbmRDdXJzb3I7CiB9CisjZW5kaWYKIAotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVw
ZGF0ZUN1cnJlbnRJdGVtKCkKK2F1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvcioo
KSBjb25zdCAtPiBPcHRpb25hbDxWYWx1ZT4KIHsKLSAgICBjbGVhckN1cnJlbnRJdGVtKCk7Cisg
ICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBBU1NFUlQoIW1fY3VycmVudEl0ZW1JbmZvKTsKIAot
ICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1cm47CisgICAgYXV0byBjdXJyZW50SXRlbUlu
Zm8gPSBjdXJyZW50SXRlbSgpOworICAgIGlmICghY3VycmVudEl0ZW1JbmZvKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZlcigpOwot
ICAgIGF1dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3JbMF0pOwor
ICAgIG1fY3VycmVudEl0ZW1JbmZvID0ge3sgY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXIs
IGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSB9fTsKIAotICAgIGlmICh1cGRhdGVDdXJy
ZW50RHJhd2luZ0l0ZW1FeHRlbnQoaXRlbVR5cGUpID09IEV4dGVudFVwZGF0ZVJlc3VsdDo6RmFp
bHVyZSkgewotICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGN1cnJlbnRFeHRlbnQ7CisgICAgaWYgKGN1cnJl
bnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSAmJiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVt
RXh0ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIGN1cnJlbnRFeHRlbnQgPSBtX2Rpc3BsYXlMaXN0
Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07CiAKLSAgICBhdXRvIHBh
ZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGl0
ZW1UeXBlKTsKKyAgICAvLyBDb252ZXJ0aW5nIHRoZSBEaXNwbGF5TGlzdEl0ZW0gaW50byBhbiBJ
dGVtSGFuZGxlIGlzIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgorICAgIGF1dG8gcGFkZGVkU2l6
ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoZGlzcGxheUxp
c3RJdGVtVHlwZShjdXJyZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRlbSkpOwogICAgIG1fY3Vy
cmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8PSBzaXplT2ZGaXhl
ZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtIDogcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRTaXplT2ZUeXBlQW5kSXRl
bSkpOwotICAgIGlmIChpc0lubGluZUl0ZW0oaXRlbVR5cGUpKSB7Ci0gICAgICAgIGlmIChVTkxJ
S0VMWSghSXRlbUhhbmRsZSB7IG1fY3Vyc29yIH0uc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJG
b3JJdGVtIH0pKSkKLSAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwotCi0gICAgICAgIG1f
Y3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbTsKLSAgICB9
IGVsc2UgewotICAgICAgICBhdXRvKiBjbGllbnQgPSBpdGVtcy5tX3JlYWRpbmdDbGllbnQ7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudCk7Ci0gICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07Ci0gICAgICAgIGF1dG8q
IHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKLSAgICAgICAg
bV9pc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGRlY29kZWRJdGVtID0gY2xpZW50
LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSkpIHsKLSAgICAg
ICAgICAgIC8vIFRoaXMgY29weSBvcGVyYXRpb24gaXMgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIGFzIGEgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzNTYwLgotICAgICAgICAgICAgbV9pc1ZhbGlkID0gc2FmZUNvcHkoSXRlbUhhbmRsZSB7
IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwgZGVjb2RlZEl0ZW0udmFsdWUoKSk7Ci0gICAgICAg
IH0KKyAgICBhdXRvIHN1Y2Nlc3MgPSBzYWZlQ29weSh7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0g
fSwgY3VycmVudEl0ZW1JbmZvLT5kaXNwbGF5TGlzdEl0ZW0pOworICAgIEFTU0VSVF9VTlVTRUQo
c3VjY2Vzcywgc3VjY2Vzcyk7CiAKLSAgICAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbVswXSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAgICAgICAgbV9jdXJyZW50SXRlbVNp
emVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihh
bGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7Ci0gICAgfQorICAgIHJldHVybiB7eyB7IG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0gfSwgV1RGTW92ZShjdXJyZW50RXh0ZW50KSwgY3VycmVudEl0
ZW1JbmZvLT5zaXplSW5CdWZmZXIgfX07CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9y
OjphZHZhbmNlKCkKK3ZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKIHsK
LSAgICBpZiAoYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghYXRFbmQoKSk7
CisgICAgQVNTRVJUKG1fY3VycmVudEl0ZW1JbmZvKTsKKworICAgIGlmIChtX2N1cnJlbnRJdGVt
SW5mby0+aXNEcmF3aW5nSXRlbSkKKyAgICAgICAgKyttX2RyYXdpbmdJdGVtSW5kZXg7CiAKLSAg
ICBtX2N1cnNvciArPSBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyOworICAgIG1fY3Vyc29yICs9
IG1fY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXI7CiAKLSAgICBpZiAobV9jdXJzb3IgPT0g
bV9jdXJyZW50RW5kT2ZCdWZmZXIgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZl
cigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKKyAgICBpZiAobV9jdXJzb3IgPT0gZW5k
T2ZDdXJyZW50QnVmZmVyKCkgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZlcigp
LT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKICAgICAgICAgbV9yZWFkT25seUJ1ZmZlcklu
ZGV4Kys7CiAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7CiAgICAg
fQogCi0gICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKKyAgICBtX2N1cnJlbnRJdGVtSW5mbyA9IHsg
fTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0oKQor
aW5saW5lIGF1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSgpIGNvbnN0IC0+
IE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PgogewotICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVm
ZmVyKCk7Ci0gICAgaWYgKGl0ZW1zICYmIGl0ZW1zLT5tX3JlYWRpbmdDbGllbnQgJiYgbV9jdXJy
ZW50QnVmZmVyRm9ySXRlbSkgewotICAgICAgICBpZiAoTElLRUxZKG1faXNWYWxpZCkpCi0gICAg
ICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LmRlc3Ryb3koKTsK
KyAgICB1c2luZyBTZXF1ZW5jZSA9IGJyaWdhbmQ6Om1ha2Vfc2VxdWVuY2U8YnJpZ2FuZDo6cHRy
ZGlmZl90PDA+LCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZT47CisK
KyAgICBPcHRpb25hbDxDdXJyZW50SXRlbVJlc3VsdD4gcmVzdWx0OworICAgIGJyaWdhbmQ6OmZv
cl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0byYmIHR5cGUpIHsKKyAgICAgICAgdXNpbmcgSSA9IHR5
cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUodHlwZSk+Ojp0eXBlOjp0
eXBlOworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2Fs
dGVybmF0aXZlX3Q8STo6dmFsdWUsIERpc3BsYXlMaXN0SXRlbT47CisKKyAgICAgICAgY29uc3Qg
YXV0byogZW5kT2ZDdXJyZW50QnVmZmVyID0gdGhpcy0+ZW5kT2ZDdXJyZW50QnVmZmVyKCk7CisK
KyAgICAgICAgaWYgKG1fY3Vyc29yICsgMSA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8SXRlbVR5
cGU+KG1fY3Vyc29yWzBdKTsKKyAgICAgICAgaWYgKGl0ZW1UeXBlICE9IERpc3BsYXlMaXN0SXRl
bVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIGNvbnN0
ZXhwciAoRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKSB7CisgICAgICAgICAgICBp
ZiAobV9jdXJzb3IgKyBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXM8RGlzcGxheUxpc3RJ
dGVtVHlwZT4oKSA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpdGVtID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
RGlzcGxheUxpc3RJdGVtVHlwZSo+KG1fY3Vyc29yICsgc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAg
ICAgICAgICBpZiAoIWlzVmFsaWQoaXRlbSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgc3RkOjpzaXplX3QgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBzaXplb2YodWlu
dDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZW9mKERp
c3BsYXlMaXN0SXRlbVR5cGUpKTsKKyAgICAgICAgICAgIEFTU0VSVCghcmVzdWx0KTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IHt7IGl0ZW0sIGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLCBEaXNwbGF5
TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVtIH19OworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gIT0g
bV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtKSkKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fY3Vy
cmVudEJ1ZmZlckZvckl0ZW0pOwotICAgIH0KKyAgICAgICAgYXV0byogY2xpZW50ID0gaXRlbUJ1
ZmZlcigpLT5tX3JlYWRpbmdDbGllbnQ7CisgICAgICAgIGlmICghY2xpZW50KQorICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDA7Ci0gICAgbV9j
dXJyZW50QnVmZmVyRm9ySXRlbSA9IG51bGxwdHI7Ci19CisgICAgICAgIGlmIChtX2N1cnNvciAr
IDIgKiBzaXplb2YodWludDY0X3QpID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuOwogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKCkKLXsKLSAg
ICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKSkgewotICAgICAgICBtX2N1cnNvciA9IGl0
ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRl
czsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvcjsKLSAgICAgICAgbV9y
ZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAg
ICB9CisgICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Qq
PihtX2N1cnNvcilbMV07CisgICAgICAgIGNvbnN0IGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJz
b3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKKyAgICAgICAgaWYgKHN0YXJ0T2ZEYXRhICsgZGF0
YUxlbmd0aCA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIGl0ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5n
dGgsIGl0ZW1UeXBlKTsKKyAgICAgICAgaWYgKCFpdGVtIHx8ICFpc1ZhbGlkKGl0ZW0udmFsdWUo
KSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0ZDo6c2l6ZV90IGN1cnJlbnRJdGVt
U2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9m
KGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQp
OworICAgICAgICByZXN1bHQgPSB7eyBXVEZNb3ZlKGl0ZW0udmFsdWUoKSksIGN1cnJlbnRJdGVt
U2l6ZUluQnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVtIH19OworICAg
IH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9y
Ojptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCkBAIC0xNDUsMTIgKzE2MCwyNiBA
QCB2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRC
dWZmZXIoKQogICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRPbmx5
QnVmZmVycykgewogICAgICAgICBhdXRvJiBuZXh0QnVmZmVySGFuZGxlID0gaXRlbXMtPm1fcmVh
ZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRleF07CiAgICAgICAgIG1fY3Vyc29yID0g
bmV4dEJ1ZmZlckhhbmRsZS5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1f
Y3Vyc29yICsgbmV4dEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKLSAgICB9IGVsc2UgaWYgKG1fcmVh
ZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgeworICAgIH0gZWxz
ZSB7CisgICAgICAgIEFTU0VSVChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFk
T25seUJ1ZmZlcnMpOwogICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVy
LmRhdGE7Ci0gICAgICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBpdGVtcy0+
bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKICAgICB9CiB9CiAKK3VpbnQ4X3QqIERpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyKCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ZW1z
ID0gaXRlbUJ1ZmZlcigpOworICAgIEFTU0VSVChpdGVtcyk7CisKKyAgICBhdXRvIG51bWJlck9m
UmVhZE9ubHlCdWZmZXJzID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICBp
ZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAg
ICAgICAgYXV0byYgY3VycmVudEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVy
c1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOworICAgICAgICByZXR1cm4gY3VycmVudEJ1ZmZlckhh
bmRsZS5kYXRhICsgY3VycmVudEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKKyAgICB9CisKKyAgICBB
U1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKTsK
KyAgICByZXR1cm4gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzOworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuaAppbmRleCAwY2JmNWYzNjk1NzUuLjFkOWYwZWJjNmFhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0zNCwyNSArMzQsMTEgQEAgbmFtZXNwYWNlIERp
c3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBJbW1lZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKLSAgICBJdGVyYXRv
cihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5kIGlt
bWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKQotICAgICAgICA6
IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgewotICAgICAgICBpZiAoaW1tZWRpYXRl
bHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykKLSAgICAgICAgICAgIG1v
dmVUb0VuZCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0
T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgICAgICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgfkl0ZXJhdG9yKCkKLSAgICB7Ci0gICAgICAgIGNsZWFyQ3Vy
cmVudEl0ZW0oKTsKLSAgICB9CisgICAgSXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmLCBJbW1l
ZGlhdGVseU1vdmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObyk7CiAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNwbGF5TGlz
dCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNvcjsg
fQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNlKCk7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZXJhdG9yKysoKTsKIAogICAgIHN0cnVjdCBWYWx1
ZSB7CiAgICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKQEAgLTYwLDQ0ICs0NiwzOSBAQCBwdWJsaWM6
CiAgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9OwogICAgIH07CiAKLSAgICBP
cHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9p
c1ZhbGlkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJu
IHt7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LAot
ICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAotICAgICAgICAgICAgbV9jdXJyZW50SXRlbVNp
emVJbkJ1ZmZlciwKLSAgICAgICAgfX07Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICAvLyBDb252ZXJ0
aW5nIHRoZSBEaXNwbGF5TGlzdEl0ZW0gaW50byBhbiBJdGVtSGFuZGxlIGlzIHRlbXBvcmFyeSwg
YW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIzNTYwLgogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNpemVPZkZpeGVkQnVm
ZmVyRm9yQ3VycmVudEl0ZW0gPSAyNTY7CisgICAgbXV0YWJsZSB1aW50OF90IG1fZml4ZWRCdWZm
ZXJGb3JDdXJyZW50SXRlbVtzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtXSB7IDAgfTsK
KyAgICBtdXRhYmxlIHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVm
ZmVyKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlVG9FbmQoKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNsZWFyQ3VycmVudEl0ZW0oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZHZhbmNlKCk7
CisgICAgc3RydWN0IEN1cnJlbnRJdGVtUmVzdWx0IHsKKyAgICAgICAgRGlzcGxheUxpc3RJdGVt
IGRpc3BsYXlMaXN0SXRlbTsKKyAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnVmZmVyOworICAg
ICAgICBib29sIGlzRHJhd2luZ0l0ZW07CisgICAgfTsKKyAgICBPcHRpb25hbDxDdXJyZW50SXRl
bVJlc3VsdD4gY3VycmVudEl0ZW0oKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3MgRXh0ZW50VXBk
YXRlUmVzdWx0IDogYm9vbCB7IEZhaWx1cmUsIFN1Y2Nlc3MgfTsKLSAgICBFeHRlbnRVcGRhdGVS
ZXN1bHQgdXBkYXRlQ3VycmVudERyYXdpbmdJdGVtRXh0ZW50KEl0ZW1UeXBlKTsKKyAgICB2b2lk
IG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7CisgICAgdWludDhfdCogZW5kT2ZD
dXJyZW50QnVmZmVyKCkgY29uc3Q7CiAKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgYXRF
bmQoKSBjb25zdDsKKyNlbmRpZgogCiAgICAgSXRlbUJ1ZmZlciogaXRlbUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUJ1ZmZlcklmRXhpc3RzKCk7IH0KIAogICAgIGNv
bnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OworICAgIHN0cnVjdCBDdXJyZW50SXRlbUlu
Zm8geworICAgICAgICBzdGQ6OnNpemVfdCBzaXplSW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNE
cmF3aW5nSXRlbTsKKyAgICB9OworICAgIG11dGFibGUgT3B0aW9uYWw8Q3VycmVudEl0ZW1JbmZv
PiBtX2N1cnJlbnRJdGVtSW5mbzsKICAgICB1aW50OF90KiBtX2N1cnNvciB7IG51bGxwdHIgfTsK
ICAgICBzaXplX3QgbV9yZWFkT25seUJ1ZmZlckluZGV4IHsgMCB9OwogICAgIHNpemVfdCBtX2Ry
YXdpbmdJdGVtSW5kZXggeyAwIH07Ci0gICAgdWludDhfdCogbV9jdXJyZW50RW5kT2ZCdWZmZXIg
eyBudWxscHRyIH07Ci0KLSAgICB1aW50OF90IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbVtz
aXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtXSB7IDAgfTsKLSAgICB1aW50OF90KiBtX2N1
cnJlbnRCdWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9OwotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bV9jdXJyZW50RXh0ZW50OwotICAgIHNpemVfdCBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyIHsg
MCB9OwotICAgIGJvb2wgbV9pc1ZhbGlkIHsgdHJ1ZSB9OwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428124</attachid>
            <date>2021-05-09 03:48:02 -0700</date>
            <delta_ts>2021-05-09 03:49:11 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20199</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDRlMzkyYTVhYTAyMDVjNTI1NDJlZDQxNTYyMWFkODUxOWJhYzgwY2EKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MDI6MzU6NDggMjAyMSAtMDcwMAoKICAgIFBhcnQgOAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmY0YmQwZTEx
YjIuLmY4MTY4ZGUwMTFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA4OiBSZXBsYWNl
IHRoZSBndXRzIG9mIERpc3BsYXlMaXN0OjpJdGVyYXRvciB3aXRob3V0IGFmZmVjdGluZyBpdHMg
cHVibGljIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBhIGhhbGYtc3RlcCB0b3dhcmQgYSB3b3JsZCB3aGVyZSBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIHJldHVybnMgYSBEaXNwbGF5TGlzdEl0ZW0gaW5z
dGVhZCBvZiBhbiBJdGVtSGFuZGxlLgorICAgICAgICBJdCBkb2VzIHRoaXMgYnkgc3dhcHBpbmcg
b3V0IHRoZSBndXRzIG9mIERpc3BsYXlsaXN0OjpJdGVyYXRvciBzbyB0aGF0IGl0IGNyZWF0ZXMg
YSBEaXNwbGF5TGlzdEl0ZW0sIGJ1dCB0aGVuIGl0IGNvbnZlcnRzIHRoZQorICAgICAgICBEaXNw
bGF5TGlzdEl0ZW0gdG8gYW4gSXRlbUhhbmRsZSBhdCB0aGUgbGFzdCBzZWNvbmQgaW4gb3JkZXIg
dG8gcHJlc2VydmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yJ3MgQVBJIHNpZ25hdHVyZXMuIFRoaXMg
d2F5LCB3ZSBjYW4KKyAgICAgICAgc3BsaXQgdGhlIHVwZGF0ZSBvZiB0aGUgaW1wbGVtZW50YXRp
b24gb2YgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIGludG8gYSBzZXBhcmF0ZSBwYXRjaCBmcm9tIHVw
ZGF0aW5nIGFsbCB0aGUgY2FsbGVycyB0byB0aGUgbmV3CisgICAgICAgIHNpZ25hdHVyZS4KKwor
ICAgICAgICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQs
IGJlY2F1c2UgRGlzcGxheUxpc3RJdGVtcyBhcmUgc2ltcGxlciB0aGFuIEl0ZW1IYW5kbGVzLiBC
ZWNhdXNlIGFsbCB0aGUgdXNlcnMgb2YKKyAgICAgICAgdGhlIGl0ZXJhdG9yIHVzZSBpdCBpbiBh
IGZvcmVhY2ggbG9vcCwgd2UgY2FuIGV4cGVjdCB0aGF0IGFsbCB1c2VycyB3aWxsIHBpbmctcG9u
ZyBiZXR3ZWVuIG9wZXJhdG9yKigpIGFuZCBvcGVyYXRvcisrKCkuIFRoaXMgbWVhbnMKKyAgICAg
ICAgdGhhdCBvcGVyYXRvciooKSBjYW4gY29tcHV0ZSBhIEN1cnJlbnRJdGVtSW5mbywgd2hpY2gg
aW5jbHVkZXMgdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUg
ZGlzcGxheSBsaXN0IHNobWVtLAorICAgICAgICBzbyB0aGF0IHRoZSBpdGVyYXRvciBjYW4gcmV0
YWluIHRoYXQgaW5mb3JtYXRpb24sIGFuZCB0aGUgbmV4dCBjYWxsIHRvIG9wZXJhdG9yKysoKSBj
YW4ganVzdCB1c2UgaXQgdG8ga25vdyBob3cgbXVjaCB0byBpbmNyZW1lbnQgYnkuCisgICAgICAg
IFNvLCB0aGVyZSdzIGEgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB3aGljaCBpcyBjb25zdCBhbmQg
cmV0dXJucyBhIEN1cnJlbnRJdGVtUmVzdWx0LCBhbmQgaXQncyBvcGVyYXRvciooKSdzIGpvYiB0
byBjYWxsIGl0IGFuZCByZWNvcmQKKyAgICAgICAgdGhlIHJlbGV2YW50IGluZm8gZm9yIG9wZXJh
dG9yKysoKS4KKworICAgICAgICBUaGUgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB1c2VzIGJyaWdh
bmQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LCBhbmQgY29tcGFyZXMgdGhhdCB0eXBlJ3MKKyAgICAgICAgaXRlbVR5cGUgdG8gdGhl
IGZpcnN0IHNlcmlhbGl6ZWQgYnl0ZSBpbiB0aGUgc2htZW0uIElmIGl0IG1hdGNoZXMsIHdlIHRy
eSB0byBwYXJzZSBpdCBhY2NvcmRpbmcgdG8gdGhlIHJlbGV2YW50IHNlcmlhbGl6YXRpb24gcnVs
ZXMsCisgICAgICAgIGFuZCBpZiBpdCBkb2Vzbid0IG1hdGNoLCBicmlnYW5kIHdpbGwganVzdCBj
b250aW51ZSBsb29waW5nIHRvIHRoZSBuZXh0IHR5cGUgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmlzVmFsaWQpOiBEZWxldGVkLiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKTogTW92ZWQgZnJvbSBEaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6
b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRv
U3RhcnRPZkN1cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJl
bnREcmF3aW5nSXRlbUV4dGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjph
ZHZhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9y
KyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMS0wNS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJv
Y2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNjogTWlncmF0ZSBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50Jgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA5ZDRiMjI5
NDBhMmQuLmMyZjE4MTI0OWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKQEAgLTQzOSwyMSArNDM5LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95
KCkKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGlu
ZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlw
ZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJ
c1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQotewotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3Qg
SXRlbSYgaXRlbSkKLXsKLSAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Ci19Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIEl0ZW0+CiBzdGF0aWMgaW5saW5lIGJvb2wgY29weUludG8odWludDhfdCogZGVz
dGluYXRpb25XaXRoT2Zmc2V0LCBjb25zdCBJdGVtJiBpdGVtKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKaW5kZXggMWViODE1NmQxNjYzLi43ODMyOTkyNTMyZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjM1Niw5ICsyMzU2LDMxIEBAIHVzaW5nIERp
c3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQKICNlbmRpZgogPjsKIAotc2l6ZV90IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKK3RlbXBsYXRlPHR5
cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlk
ID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFz
SXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlk
KCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlk
KGNvbnN0IEl0ZW0mKQoreworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFs
aWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sKKyAgICByZXR1cm4g
aXRlbS5pc1ZhbGlkKCk7Cit9CisKIEl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3Qg
RGlzcGxheUxpc3RJdGVtJik7CiAKK3NpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29u
c3RleHByIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoKQoreworICAgIHJl
dHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2
NF90KSwgc2l6ZW9mKFQpKTsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgSXRlbUhhbmRsZSk7CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKaW5kZXggZWFlYTM0ODE2ZGI4Li4wYjM5NDMy
ODdlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTI5
LDExMCArMjksMTM3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxp
c3QgewogCi1ib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAorRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kKQorICAgIDogbV9kaXNw
bGF5TGlzdChkaXNwbGF5TGlzdCkKIHsKLSAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkg
fHwgIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGltbWVkaWF0ZWx5
TW92ZVRvRW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1
dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCkpIHsKKyAgICAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJ
bmRleCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAgICAgICAgICBtX2N1
cnNvciA9IGVuZE9mQ3VycmVudEJ1ZmZlcigpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAg
ICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Cit9CiAKLSAgICBhdXRvJiBp
dGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy5tX3dyaXRh
YmxlQnVmZmVyLmRhdGEgKyBpdGVtcy5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIHJldHVy
biBtX2N1cnNvciA9PSBlbmRDdXJzb3I7CitEaXNwbGF5TGlzdDo6SXRlcmF0b3I6On5JdGVyYXRv
cigpCit7CisgICAgY2xlYXJDdXJyZW50SXRlbSgpOwogfQogCi1hdXRvIERpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6dXBkYXRlQ3VycmVudERyYXdpbmdJdGVtRXh0ZW50KEl0ZW1UeXBlIGl0ZW1UeXBl
KSAtPiBFeHRlbnRVcGRhdGVSZXN1bHQKKyNpZiBBU1NFUlRfRU5BQkxFRAorYm9vbCBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICBhdXRvJiBleHRlbnRzID0gbV9k
aXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50czsKLSAgICBpZiAoZXh0ZW50cy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CisgICAgaWYg
KG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
ICghaXNEcmF3aW5nSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50ID0g
V1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gRXh0ZW50VXBkYXRlUmVzdWx0OjpTdWNjZXNz
OwotICAgIH0KKyAgICBjb25zdCBhdXRvKiBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAo
IWl0ZW1zKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2RyYXdpbmdJdGVtSW5k
ZXggPj0gZXh0ZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6
OkZhaWx1cmU7CisgICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5k
YXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CisgICAgcmV0dXJuIG1fY3Vyc29y
ID09IGVuZEN1cnNvcjsKK30KKyNlbmRpZgogCi0gICAgbV9jdXJyZW50RXh0ZW50ID0gZXh0ZW50
c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwotICAgIG1fZHJhd2luZ0l0ZW1JbmRleCsrOwotICAgIHJl
dHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CisvLyBUaGlzIGlzIHRlbXBvcmFyeSwg
YW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIzNTYwLgordm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0
ZW0oKSB7CisgICAgaWYgKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gJiYgbV9jdXJyZW50QnVmZmVy
Rm9ySXRlbSAhPSBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0pCisgICAgICAgIGZhc3RGcmVl
KG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOwogfQogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6dXBkYXRlQ3VycmVudEl0ZW0oKQorYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJh
dG9yKigpIGNvbnN0IC0+IE9wdGlvbmFsPFZhbHVlPgogewotICAgIGNsZWFyQ3VycmVudEl0ZW0o
KTsKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50SXRlbUluZm8p
OwogCi0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIGN1cnJlbnRJ
dGVtSW5mbyA9IGN1cnJlbnRJdGVtKCk7CisgICAgaWYgKCFjdXJyZW50SXRlbUluZm8pCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvJiBpdGVtcyA9ICppdGVtQnVmZmVy
KCk7Ci0gICAgYXV0byBpdGVtVHlwZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclsw
XSk7CisgICAgbV9jdXJyZW50SXRlbUluZm8gPSB7eyBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1
ZmZlciwgY3VycmVudEl0ZW1JbmZvLT5pc0RyYXdpbmdJdGVtIH19OwogCi0gICAgaWYgKHVwZGF0
ZUN1cnJlbnREcmF3aW5nSXRlbUV4dGVudChpdGVtVHlwZSkgPT0gRXh0ZW50VXBkYXRlUmVzdWx0
OjpGYWlsdXJlKSB7Ci0gICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gY3VycmVudEV4dGVudDsKKyAgICBpZiAo
Y3VycmVudEl0ZW1JbmZvLT5pc0RyYXdpbmdJdGVtICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2lu
Z0l0ZW1FeHRlbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgY3VycmVudEV4dGVudCA9IG1fZGlzcGxh
eUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKIAotICAgIGF1
dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoaXRlbVR5cGUpOworICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1v
dmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCisg
ICAgY29uc3RfY2FzdDxJdGVyYXRvcio+KHRoaXMpLT5jbGVhckN1cnJlbnRJdGVtKCk7CisgICAg
YXV0byBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5C
eXRlcyhkaXNwbGF5TGlzdEl0ZW1UeXBlKGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVt
KSk7CiAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVt
IDw9IHNpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3Vy
cmVudEl0ZW0gOiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNp
emVPZlR5cGVBbmRJdGVtKSk7Ci0gICAgaWYgKGlzSW5saW5lSXRlbShpdGVtVHlwZSkpIHsKLSAg
ICAgICAgaWYgKFVOTElLRUxZKCFJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5zYWZlQ29weSh7IG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0gfSkpKQotICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7
CisgICAgYXV0byBzdWNjZXNzID0gc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0s
IGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN1
Y2Nlc3MsIHN1Y2Nlc3MpOwogCi0gICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvKiBjbGll
bnQgPSBpdGVtcy5tX3JlYWRpbmdDbGllbnQ7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVu
dCk7Ci0gICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Qq
PihtX2N1cnNvcilbMV07Ci0gICAgICAgIGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAy
ICogc2l6ZW9mKHVpbnQ2NF90KTsKLSAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAg
IGlmIChhdXRvIGRlY29kZWRJdGVtID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBk
YXRhTGVuZ3RoLCBpdGVtVHlwZSkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgY29weSBvcGVyYXRp
b24gaXMgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGFzIGEgcGFydCBvZiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotICAgICAgICAgICAgbV9p
c1ZhbGlkID0gc2FmZUNvcHkoSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwg
ZGVjb2RlZEl0ZW0udmFsdWUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwotICAgICAgICBt
X2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVw
VG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKLSAgICB9CisgICAg
cmV0dXJuIHt7IHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LCBXVEZNb3ZlKGN1cnJlbnRFeHRl
bnQpLCBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciB9fTsKIH0KIAotdm9pZCBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmFkdmFuY2UoKQordm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9w
ZXJhdG9yKysoKQogewotICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1cm47CisgICAgQVNT
RVJUKCFhdEVuZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50SXRlbUluZm8pOwogCi0gICAgbV9j
dXJzb3IgKz0gbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlcjsKKyAgICBpZiAobV9jdXJyZW50SXRl
bUluZm8tPmlzRHJhd2luZ0l0ZW0pCisgICAgICAgICsrbV9kcmF3aW5nSXRlbUluZGV4OwogCi0g
ICAgaWYgKG1fY3Vyc29yID09IG1fY3VycmVudEVuZE9mQnVmZmVyICYmIG1fcmVhZE9ubHlCdWZm
ZXJJbmRleCA8IGl0ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7CisgICAg
bV9jdXJzb3IgKz0gbV9jdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlcjsKKworICAgIGlmICht
X2N1cnNvciA9PSBlbmRPZkN1cnJlbnRCdWZmZXIoKSAmJiBtX3JlYWRPbmx5QnVmZmVySW5kZXgg
PCBpdGVtQnVmZmVyKCktPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKSkgewogICAgICAgICBtX3Jl
YWRPbmx5QnVmZmVySW5kZXgrKzsKICAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRC
dWZmZXIoKTsKICAgICB9CiAKLSAgICB1cGRhdGVDdXJyZW50SXRlbSgpOworICAgIG1fY3VycmVu
dEl0ZW1JbmZvID0geyB9OwogfQogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y2xlYXJD
dXJyZW50SXRlbSgpCitpbmxpbmUgYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmN1cnJlbnRJ
dGVtKCkgY29uc3QgLT4gT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1bHQ+CiB7Ci0gICAgYXV0byBp
dGVtcyA9IGl0ZW1CdWZmZXIoKTsKLSAgICBpZiAoaXRlbXMgJiYgaXRlbXMtPm1fcmVhZGluZ0Ns
aWVudCAmJiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKSB7Ci0gICAgICAgIGlmIChMSUtFTFkobV9p
c1ZhbGlkKSkKLSAgICAgICAgICAgIEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVt
IH0uZGVzdHJveSgpOworICAgIHVzaW5nIFNlcXVlbmNlID0gYnJpZ2FuZDo6bWFrZV9zZXF1ZW5j
ZTxicmlnYW5kOjpwdHJkaWZmX3Q8MD4sIFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlMaXN0SXRl
bT46OnZhbHVlPjsKKworICAgIE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PiByZXN1bHQ7Cisg
ICAgYnJpZ2FuZDo6Zm9yX2VhY2g8U2VxdWVuY2U+KFsmXShhdXRvJiYgdHlwZSkgeworICAgICAg
ICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFuZFJlZmVyZW5jZTxkZWNsdHlwZSh0
eXBlKT46OnR5cGU6OnR5cGU7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBX
VEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJOjp2YWx1ZSwgRGlzcGxheUxpc3RJdGVtPjsKKwor
ICAgICAgICBjb25zdCBhdXRvKiBlbmRPZkN1cnJlbnRCdWZmZXIgPSB0aGlzLT5lbmRPZkN1cnJl
bnRCdWZmZXIoKTsKKworICAgICAgICBpZiAobV9jdXJzb3IgKyAxID4gZW5kT2ZDdXJyZW50QnVm
ZmVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gaXRlbVR5cGUgPSBzdGF0
aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3JbMF0pOworICAgICAgICBpZiAoaXRlbVR5cGUgIT0g
RGlzcGxheUxpc3RJdGVtVHlwZTo6aXRlbVR5cGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgY29uc3RleHByIChEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pIHsK
KyAgICAgICAgICAgIGlmIChtX2N1cnNvciArIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRl
czxEaXNwbGF5TGlzdEl0ZW1UeXBlPigpID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSAqcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBEaXNwbGF5TGlzdEl0ZW1UeXBlKj4obV9jdXJzb3IgKyBzaXplb2YodWlu
dDY0X3QpKTsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZChpdGVtKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBzdGQ6OnNpemVfdCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZl
ciA9IHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0
X3QpLCBzaXplb2YoRGlzcGxheUxpc3RJdGVtVHlwZSkpOworICAgICAgICAgICAgQVNTRVJUKCFy
ZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0ge3sgaXRlbSwgY3VycmVudEl0ZW1TaXplSW5C
dWZmZXIsIERpc3BsYXlMaXN0SXRlbVR5cGU6OmlzRHJhd2luZ0l0ZW0gfX07CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSAhPSBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0pKQotICAgICAgICAgICAg
ZmFzdEZyZWUobV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAgfQorICAgICAgICBhdXRvKiBj
bGllbnQgPSBpdGVtQnVmZmVyKCktPm1fcmVhZGluZ0NsaWVudDsKKyAgICAgICAgaWYgKCFjbGll
bnQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVy
ID0gMDsKLSAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gbnVsbHB0cjsKLX0KKyAgICAgICAg
aWYgKG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCkgPiBlbmRPZkN1cnJlbnRCdWZmZXIp
CisgICAgICAgICAgICByZXR1cm47CiAKLXZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjptb3Zl
VG9FbmQoKQotewotICAgIGlmIChhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpKSB7Ci0gICAgICAg
IG1fY3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1fY3Vyc29y
OwotICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXggPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZl
cnMuc2l6ZSgpOwotICAgIH0KKyAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50NjRfdCo+KG1fY3Vyc29yKVsxXTsKKyAgICAgICAgY29uc3QgYXV0byogc3RhcnRP
ZkRhdGEgPSBtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0X3QpOworICAgICAgICBpZiAoc3Rh
cnRPZkRhdGEgKyBkYXRhTGVuZ3RoID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGF1dG8gaXRlbSA9IGNsaWVudC0+ZGVjb2RlSXRlbShzdGFydE9m
RGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUpOworICAgICAgICBpZiAoIWl0ZW0gfHwgIWlzVmFs
aWQoaXRlbS52YWx1ZSgpKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RkOjpzaXpl
X3QgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5k
VXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOworICAgICAgICBB
U1NFUlQoIXJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IHt7IFdURk1vdmUoaXRlbS52YWx1ZSgp
KSwgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIsIERpc3BsYXlMaXN0SXRlbVR5cGU6OmlzRHJhd2lu
Z0l0ZW0gfX07CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCkKQEAgLTE0
NSwxMiArMTcyLDI2IEBAIHZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9T
dGFydE9mQ3VycmVudEJ1ZmZlcigpCiAgICAgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51
bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7CiAgICAgICAgIGF1dG8mIG5leHRCdWZmZXJIYW5kbGUg
PSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKICAgICAg
ICAgbV9jdXJzb3IgPSBuZXh0QnVmZmVySGFuZGxlLmRhdGE7Ci0gICAgICAgIG1fY3VycmVudEVu
ZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBuZXh0QnVmZmVySGFuZGxlLmNhcGFjaXR5OwotICAgIH0g
ZWxzZSBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJz
KSB7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9
PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyk7CiAgICAgICAgIG1fY3Vyc29yID0gaXRlbXMtPm1f
d3JpdGFibGVCdWZmZXIuZGF0YTsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1
cnNvciArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwogICAgIH0KIH0KIAordWludDhf
dCogRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjplbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdAorewor
ICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgQVNTRVJUKGl0ZW1zKTsKKworICAg
IGF1dG8gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnMu
c2l6ZSgpOworICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRPbmx5
QnVmZmVycykgeworICAgICAgICBhdXRvJiBjdXJyZW50QnVmZmVySGFuZGxlID0gaXRlbXMtPm1f
cmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRleF07CisgICAgICAgIHJldHVybiBj
dXJyZW50QnVmZmVySGFuZGxlLmRhdGEgKyBjdXJyZW50QnVmZmVySGFuZGxlLmNhcGFjaXR5Owor
ICAgIH0KKworICAgIEFTU0VSVChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFk
T25seUJ1ZmZlcnMpOworICAgIHJldHVybiBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhICsg
aXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Cit9CisKIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5oCmluZGV4IDBjYmY1ZjM2OTU3NS4uZWRhOTM3MWVhYWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKQEAgLTM0LDI1ICszNCwxMiBA
QCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEltbWVkaWF0ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9
OwotICAgIEl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRl
bHlNb3ZlVG9FbmQgaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6
Tm8pCi0gICAgICAgIDogbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKLSAgICB7Ci0gICAgICAg
IGlmIChpbW1lZGlhdGVseU1vdmVUb0VuZCA9PSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6WWVzKQot
ICAgICAgICAgICAgbW92ZVRvRW5kKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbW92
ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICAgICAgICAgIHVwZGF0ZUN1cnJl
bnRJdGVtKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB+SXRlcmF0b3IoKQotICAgIHsKLSAg
ICAgICAgY2xlYXJDdXJyZW50SXRlbSgpOwotICAgIH0KKyAgICBJdGVyYXRvcihjb25zdCBEaXNw
bGF5TGlzdCYsIEltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5v
KTsKKyAgICB+SXRlcmF0b3IoKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRv
ciYgb3RoZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlMaXN0
ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICB2
b2lkIG9wZXJhdG9yKysoKSB7IGFkdmFuY2UoKTsgfQorICAgIHZvaWQgb3BlcmF0b3IrKygpOwog
CiAgICAgc3RydWN0IFZhbHVlIHsKICAgICAgICAgSXRlbUhhbmRsZSBpdGVtOwpAQCAtNjAsNDQg
KzQ3LDQyIEBAIHB1YmxpYzoKICAgICAgICAgc2l6ZV90IGl0ZW1TaXplSW5CdWZmZXIgeyAwIH07
CiAgICAgfTsKIAotICAgIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdAotICAgIHsK
LSAgICAgICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotICAgICAgICByZXR1cm4ge3sKLSAgICAgICAgICAgIEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRC
dWZmZXJGb3JJdGVtIH0sCi0gICAgICAgICAgICBtX2N1cnJlbnRFeHRlbnQsCi0gICAgICAgICAg
ICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLAotICAgICAgICB9fTsKLSAgICB9CisgICAgT3B0
aW9uYWw8VmFsdWU+IG9wZXJhdG9yKigpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIC8vIFRoZXNl
IGFyZSB0ZW1wb3JhcnksIGFuZCB3aWxsIGJlIHJlbW92ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzU2MC4KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID0gMjU2OworICAgIHZvaWQgY2xlYXJD
dXJyZW50SXRlbSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlQ3Vyc29yVG9TdGFy
dE9mQ3VycmVudEJ1ZmZlcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZVRvRW5kKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckN1cnJlbnRJdGVtKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWR2YW5jZSgpOworICAgIHN0cnVjdCBDdXJyZW50SXRlbVJlc3VsdCB7CisgICAgICAgIERp
c3BsYXlMaXN0SXRlbSBkaXNwbGF5TGlzdEl0ZW07CisgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJ
bkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07CisgICAgT3B0aW9u
YWw8Q3VycmVudEl0ZW1SZXN1bHQ+IGN1cnJlbnRJdGVtKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNs
YXNzIEV4dGVudFVwZGF0ZVJlc3VsdCA6IGJvb2wgeyBGYWlsdXJlLCBTdWNjZXNzIH07Ci0gICAg
RXh0ZW50VXBkYXRlUmVzdWx0IHVwZGF0ZUN1cnJlbnREcmF3aW5nSXRlbUV4dGVudChJdGVtVHlw
ZSk7CisgICAgdm9pZCBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOworICAgIHVp
bnQ4X3QqIGVuZE9mQ3VycmVudEJ1ZmZlcigpIGNvbnN0OwogCisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBib29sIGF0RW5kKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIEl0ZW1CdWZmZXIqIGl0ZW1C
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1CdWZmZXJJZkV4aXN0cygp
OyB9CiAKKyAgICAvLyBUaGVzZSBhcmUgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCisgICAgbXV0
YWJsZSB1aW50OF90IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbVtzaXplT2ZGaXhlZEJ1ZmZl
ckZvckN1cnJlbnRJdGVtXSB7IDAgfTsKKyAgICBtdXRhYmxlIHVpbnQ4X3QqIG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0geyBudWxscHRyIH07CisKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNw
bGF5TGlzdDsKKyAgICBzdHJ1Y3QgQ3VycmVudEl0ZW1JbmZvIHsKKyAgICAgICAgc3RkOjpzaXpl
X3Qgc2l6ZUluQnVmZmVyOworICAgICAgICBib29sIGlzRHJhd2luZ0l0ZW07CisgICAgfTsKKyAg
ICBtdXRhYmxlIE9wdGlvbmFsPEN1cnJlbnRJdGVtSW5mbz4gbV9jdXJyZW50SXRlbUluZm87CiAg
ICAgdWludDhfdCogbV9jdXJzb3IgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fcmVhZE9ubHlC
dWZmZXJJbmRleCB7IDAgfTsKICAgICBzaXplX3QgbV9kcmF3aW5nSXRlbUluZGV4IHsgMCB9Owot
ICAgIHVpbnQ4X3QqIG1fY3VycmVudEVuZE9mQnVmZmVyIHsgbnVsbHB0ciB9OwotCi0gICAgdWlu
dDhfdCBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJy
ZW50SXRlbV0geyAwIH07Ci0gICAgdWludDhfdCogbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB7IG51
bGxwdHIgfTsKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IG1fY3VycmVudEV4dGVudDsKLSAgICBz
aXplX3QgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKLSAgICBib29sIG1faXNWYWxp
ZCB7IHRydWUgfTsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428125</attachid>
            <date>2021-05-09 03:49:22 -0700</date>
            <delta_ts>2021-05-09 04:06:23 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-225579-20210509034922.patch</filename>
            <type>text/plain</type>
            <size>35822</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZmNGJkMGUxMWIyODZi
NTY1MWFlMTQ5M2UwZTBjZDBhNTViZmZkMy4uZjgxNjhkZTAxMWY5ZTEyNTIwNjJmMWExMmE1YzA1
YjY0NDhlN2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA4OiBSZXBsYWNlIHRoZSBn
dXRzIG9mIERpc3BsYXlMaXN0OjpJdGVyYXRvciB3aXRob3V0IGFmZmVjdGluZyBpdHMgcHVibGlj
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1
NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpcyBhIGhhbGYtc3RlcCB0b3dhcmQgYSB3b3JsZCB3aGVyZSBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6Om9wZXJhdG9yKigpIHJldHVybnMgYSBEaXNwbGF5TGlzdEl0ZW0gaW5zdGVhZCBv
ZiBhbiBJdGVtSGFuZGxlLgorICAgICAgICBJdCBkb2VzIHRoaXMgYnkgc3dhcHBpbmcgb3V0IHRo
ZSBndXRzIG9mIERpc3BsYXlsaXN0OjpJdGVyYXRvciBzbyB0aGF0IGl0IGNyZWF0ZXMgYSBEaXNw
bGF5TGlzdEl0ZW0sIGJ1dCB0aGVuIGl0IGNvbnZlcnRzIHRoZQorICAgICAgICBEaXNwbGF5TGlz
dEl0ZW0gdG8gYW4gSXRlbUhhbmRsZSBhdCB0aGUgbGFzdCBzZWNvbmQgaW4gb3JkZXIgdG8gcHJl
c2VydmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yJ3MgQVBJIHNpZ25hdHVyZXMuIFRoaXMgd2F5LCB3
ZSBjYW4KKyAgICAgICAgc3BsaXQgdGhlIHVwZGF0ZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2Yg
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yIGludG8gYSBzZXBhcmF0ZSBwYXRjaCBmcm9tIHVwZGF0aW5n
IGFsbCB0aGUgY2FsbGVycyB0byB0aGUgbmV3CisgICAgICAgIHNpZ25hdHVyZS4KKworICAgICAg
ICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJlY2F1
c2UgRGlzcGxheUxpc3RJdGVtcyBhcmUgc2ltcGxlciB0aGFuIEl0ZW1IYW5kbGVzLiBCZWNhdXNl
IGFsbCB0aGUgdXNlcnMgb2YKKyAgICAgICAgdGhlIGl0ZXJhdG9yIHVzZSBpdCBpbiBhIGZvcmVh
Y2ggbG9vcCwgd2UgY2FuIGV4cGVjdCB0aGF0IGFsbCB1c2VycyB3aWxsIHBpbmctcG9uZyBiZXR3
ZWVuIG9wZXJhdG9yKigpIGFuZCBvcGVyYXRvcisrKCkuIFRoaXMgbWVhbnMKKyAgICAgICAgdGhh
dCBvcGVyYXRvciooKSBjYW4gY29tcHV0ZSBhIEN1cnJlbnRJdGVtSW5mbywgd2hpY2ggaW5jbHVk
ZXMgdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUgZGlzcGxh
eSBsaXN0IHNobWVtLAorICAgICAgICBzbyB0aGF0IHRoZSBpdGVyYXRvciBjYW4gcmV0YWluIHRo
YXQgaW5mb3JtYXRpb24sIGFuZCB0aGUgbmV4dCBjYWxsIHRvIG9wZXJhdG9yKysoKSBjYW4ganVz
dCB1c2UgaXQgdG8ga25vdyBob3cgbXVjaCB0byBpbmNyZW1lbnQgYnkuCisgICAgICAgIFNvLCB0
aGVyZSdzIGEgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB3aGljaCBpcyBjb25zdCBhbmQgcmV0dXJu
cyBhIEN1cnJlbnRJdGVtUmVzdWx0LCBhbmQgaXQncyBvcGVyYXRvciooKSdzIGpvYiB0byBjYWxs
IGl0IGFuZCByZWNvcmQKKyAgICAgICAgdGhlIHJlbGV2YW50IGluZm8gZm9yIG9wZXJhdG9yKyso
KS4KKworICAgICAgICBUaGUgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB1c2VzIGJyaWdhbmQgdG8g
aXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBWYXJpYW50
LCBhbmQgY29tcGFyZXMgdGhhdCB0eXBlJ3MKKyAgICAgICAgaXRlbVR5cGUgdG8gdGhlIGZpcnN0
IHNlcmlhbGl6ZWQgYnl0ZSBpbiB0aGUgc2htZW0uIElmIGl0IG1hdGNoZXMsIHdlIHRyeSB0byBw
YXJzZSBpdCBhY2NvcmRpbmcgdG8gdGhlIHJlbGV2YW50IHNlcmlhbGl6YXRpb24gcnVsZXMsCisg
ICAgICAgIGFuZCBpZiBpdCBkb2Vzbid0IG1hdGNoLCBicmlnYW5kIHdpbGwganVzdCBjb250aW51
ZSBsb29waW5nIHRvIHRoZSBuZXh0IHR5cGUgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBWYXJpYW50
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFs
aWQpOiBEZWxldGVkLiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmguCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKTogTW92ZWQgZnJvbSBEaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRP
ZkN1cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnREcmF3
aW5nSXRlbUV4dGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphZHZhbmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVy
YXRvcjo6SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVy
YXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMS0wNS0wOSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNjogTWlncmF0ZSBJdGVtQnVmZmVy
V3JpdGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50JgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1YTcyNTAxNDE1NTAy
NDRmY2YwZTVhZDZkNjVmN2E0MTQ3NjlhYzIyLi5jMmYxODEyNDlkMGYzN2JmNTA1NmEzZjg3MzQ2
N2Q0MGJlNzgzYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlIDx3
dGYvQnJpZ2FuZC5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQzOCwyMSArNDM5LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkK
ICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBj
b25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShz
dGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1Zh
bGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQotewotICAgIHJldHVybiB0cnVl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRl
bSYgaXRlbSkKLXsKLSAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Ci19Ci0KIHRlbXBsYXRlPHR5
cGVuYW1lIEl0ZW0+CiBzdGF0aWMgaW5saW5lIGJvb2wgY29weUludG8odWludDhfdCogZGVzdGlu
YXRpb25XaXRoT2Zmc2V0LCBjb25zdCBJdGVtJiBpdGVtKQogewpAQCAtNjE5LDYgKzYwNSwyNyBA
QCBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24sIGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYgc291cmNlKQogICAgIH0sIHNvdXJjZSk7CiB9CiAKK09wdGlvbmFsPERpc3BsYXlMaXN0
SXRlbT4gc2FmZUNvcHkoSXRlbUhhbmRsZSBzb3VyY2UpCit7CisgICAgdXNpbmcgU2VxdWVuY2Ug
PSBicmlnYW5kOjptYWtlX3NlcXVlbmNlPGJyaWdhbmQ6OnB0cmRpZmZfdDwwPiwgV1RGOjp2YXJp
YW50X3NpemU8RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+OworCisgICAgT3B0aW9uYWw8RGlzcGxh
eUxpc3RJdGVtPiByZXN1bHQ7CisgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8U2VxdWVuY2U+KFsmXShh
dXRvJiYgdHlwZSkgeworICAgICAgICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFu
ZFJlZmVyZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6OnR5cGU7CisgICAgICAgIHVzaW5nIERp
c3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJOjp2YWx1ZSwg
RGlzcGxheUxpc3RJdGVtPjsKKworICAgICAgICBpZiAoc291cmNlLnR5cGUoKSAhPSBEaXNwbGF5
TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBh
dXRvIGRpc3BsYXlMaXN0SXRlbSA9IHNvdXJjZS5nZXQ8RGlzcGxheUxpc3RJdGVtVHlwZT4oKTsK
KyAgICAgICAgaWYgKGlzVmFsaWQoZGlzcGxheUxpc3RJdGVtKSkgeworICAgICAgICAgICAgQVNT
RVJUKCFyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gRGlzcGxheUxpc3RJdGVtKFdURk1v
dmUoZGlzcGxheUxpc3RJdGVtKSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiBJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1CdWZmZXJIYW5kbGVzJiYgaGFu
ZGxlcykKICAgICA6IG1fcmVhZE9ubHlCdWZmZXJzKFdURk1vdmUoaGFuZGxlcykpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYjk5MTc1N2MyMmRjNzdl
MGQ4N2JjM2M1Y2IxZDAxOWZkMDdjNDM4Ni4uMzM2YTIxYTI1NDExNDRjNjk4Y2U4ZGFhYWY3MmQz
NDk4N2I4YjQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApA
QCAtODMsNiArODMsNyBAQCBzdHJ1Y3QgSXRlbUhhbmRsZSB7CiB9OwogCiBib29sIHNhZmVDb3B5
KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24sIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgc291cmNlKTsK
K09wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gc2FmZUNvcHkoSXRlbUhhbmRsZSk7CiAKIGVudW0g
Y2xhc3MgRGlkQ2hhbmdlSXRlbUJ1ZmZlciA6IGJvb2wgeyBObywgWWVzIH07CiAKQEAgLTEyMyw3
ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8
SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNF
RF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCwgSXRlbVR5cGUpID0gMDsKIH07CiAKIC8vIEFuIEl0ZW1CdWZmZXIgY29udGFpbnMgZGlzcGxh
eSBsaXN0IGl0ZW0gZGF0YSwgYW5kIGNvbnNpc3RzIG9mIGEgcmVhZHdyaXRlIEl0ZW1CdWZmZXJI
YW5kbGUgKHRvIHdoaWNoIGRpc3BsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmlu
ZGV4IDFlYjgxNTZkMTY2Mzc4ZWJmMDVlZTZiYzJjZWUxMDFmOTJlMjZjNmEuLjc4MzI5OTI1MzJl
MjYzYjA2NTkxNTNkMTgxZDkxY2ZiNzFlOTgyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaApAQCAtMjM1Niw5ICsyMzU2LDMxIEBAIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9IFZh
cmlhbnQKICNlbmRpZgogPjsKIAotc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRl
cyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9
IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZv
aWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlu
bGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlz
VmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sKKyAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Cit9
CisKIEl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7
CiAKK3NpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxp
c3RJdGVtJik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3RleHByIHNpemVfdCBwYWRk
ZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoKQoreworICAgIHJldHVybiBzaXplb2YodWludDY0
X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZW9mKFQpKTsK
K30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7CiAK
IH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5jcHAKaW5kZXggZTc2Njc3MmJlZWFjMTY1NjZkMTRiNDQwZGRiMjY2ZWM3ZDY2NmNj
MC4uN2FjZDI1MmIyZGVhNGZmMzQ3ZTIzZDQwZWUxNWJkMzIzMjc5NjQzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtMjksMTA4ICsyOSwxMzggQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWJvb2wgRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CitEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Okl0
ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRlbHlNb3ZlVG9F
bmQgaW1tZWRpYXRlbHlNb3ZlVG9FbmQpCisgICAgOiBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0
KQogewotICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSB8fCAhbV9pc1ZhbGlkKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRp
YXRlbHlNb3ZlVG9FbmQ6OlllcykgeworICAgICAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZm
ZXIoKSkgeworICAgICAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVh
ZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICAgICAgICAgIG1fY3Vyc29yID0gZW5kT2ZDdXJyZW50
QnVmZmVyKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbW92ZUN1cnNvclRvU3Rh
cnRPZkN1cnJlbnRCdWZmZXIoKTsKK30KIAotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZmZXIo
KTsKLSAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0
ZW1zLm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgcmV0dXJuIG1fY3Vyc29yID09IGVuZEN1
cnNvcjsKK0Rpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKCkKK3sKKyAgICBjbGVhckN1
cnJlbnRJdGVtKCk7CiB9CiAKLWF1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJy
ZW50RHJhd2luZ0l0ZW1FeHRlbnQoSXRlbVR5cGUgaXRlbVR5cGUpIC0+IEV4dGVudFVwZGF0ZVJl
c3VsdAorI2lmIEFTU0VSVF9FTkFCTEVECitib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRF
bmQoKSBjb25zdAogewotICAgIGF1dG8mIGV4dGVudHMgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJhd2lu
Z0l0ZW1FeHRlbnRzOwotICAgIGlmIChleHRlbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKKyAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFpc0RyYXdpbmdJdGVtKGl0
ZW1UeXBlKSkgewotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBXVEY6Om51bGxvcHQ7Ci0gICAg
ICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7Ci0gICAgfQorICAgIGNvbnN0
IGF1dG8qIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOworICAgIGlmICghaXRlbXMpCisgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgaWYgKG1fZHJhd2luZ0l0ZW1JbmRleCA+PSBleHRlbnRzLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6RmFpbHVyZTsKKyAgICBhdXRv
IGVuZEN1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0
dGVuTnVtYmVyT2ZCeXRlczsKKyAgICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vyc29yOworfQor
I2VuZGlmCiAKLSAgICBtX2N1cnJlbnRFeHRlbnQgPSBleHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRl
eF07Ci0gICAgbV9kcmF3aW5nSXRlbUluZGV4Kys7Ci0gICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJl
c3VsdDo6U3VjY2VzczsKKy8vIFRoaXMgaXMgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVk
IGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCit2b2lk
IERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y2xlYXJDdXJyZW50SXRlbSgpCit7CisgICAgaWYgKG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0gJiYgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSAhPSBtX2ZpeGVk
QnVmZmVyRm9yQ3VycmVudEl0ZW0pCisgICAgICAgIGZhc3RGcmVlKG1fY3VycmVudEJ1ZmZlckZv
ckl0ZW0pOwogfQogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0
ZW0oKQorYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9w
dGlvbmFsPFZhbHVlPgogewotICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKKyAgICBBU1NFUlQoIWF0
RW5kKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50SXRlbUluZm8pOwogCi0gICAgaWYgKGF0RW5k
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIGN1cnJlbnRJdGVtSW5mbyA9IGN1cnJlbnRJ
dGVtKCk7CisgICAgaWYgKCFjdXJyZW50SXRlbUluZm8pCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKLSAgICBhdXRvJiBpdGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBpdGVt
VHlwZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAgbV9jdXJyZW50
SXRlbUluZm8gPSB7eyBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciwgY3VycmVudEl0ZW1J
bmZvLT5pc0RyYXdpbmdJdGVtIH19OwogCi0gICAgaWYgKHVwZGF0ZUN1cnJlbnREcmF3aW5nSXRl
bUV4dGVudChpdGVtVHlwZSkgPT0gRXh0ZW50VXBkYXRlUmVzdWx0OjpGYWlsdXJlKSB7Ci0gICAg
ICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gY3VycmVudEV4dGVudDsKKyAgICBpZiAoY3VycmVudEl0ZW1JbmZvLT5p
c0RyYXdpbmdJdGVtICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgY3VycmVudEV4dGVudCA9IG1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRl
bUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKIAotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlw
ZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoaXRlbVR5cGUpOworICAg
IC8vIFRoaXMgaXMgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCisgICAgY29uc3RfY2FzdDxJdGVy
YXRvcio+KHRoaXMpLT5jbGVhckN1cnJlbnRJdGVtKCk7CisgICAgYXV0byBwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhkaXNwbGF5TGlzdEl0
ZW1UeXBlKGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtKSk7CiAgICAgbV9jdXJyZW50
QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVkQnVm
ZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSk7
Ci0gICAgaWYgKGlzSW5saW5lSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZ
KCFJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5zYWZlQ29weSh7IG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0gfSkpKQotICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0KLSAgICAgICAgbV9jdXJy
ZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1zLm1fcmVhZGluZ0NsaWVudDsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY2xpZW50KTsKLSAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KG1fY3Vyc29yKVsxXTsKLSAgICAgICAgYXV0byogc3Rh
cnRPZkRhdGEgPSBtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0X3QpOwotICAgICAgICBhdXRv
IGRlY29kZWRJdGVtSGFuZGxlID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRh
TGVuZ3RoLCBpdGVtVHlwZSwgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAgICAgIGlmIChV
TkxJS0VMWSghZGVjb2RlZEl0ZW1IYW5kbGUpKQotICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFs
c2U7CisgICAgYXV0byBzdWNjZXNzID0gc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVt
IH0sIGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHN1Y2Nlc3MsIHN1Y2Nlc3MpOwogCi0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW1bMF0g
PSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7Ci0gICAgICAgIG1fY3VycmVudEl0ZW1T
aXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2Yo
YWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwotICAgIH0KKyAgICByZXR1cm4ge3sgeyBt
X2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0sIFdURk1vdmUoY3VycmVudEV4dGVudCksIGN1cnJlbnRJ
dGVtSW5mby0+c2l6ZUluQnVmZmVyIH19OwogfQogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6YWR2YW5jZSgpCit2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCiB7
Ci0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIWF0RW5kKCkp
OworICAgIEFTU0VSVChtX2N1cnJlbnRJdGVtSW5mbyk7CisKKyAgICBpZiAobV9jdXJyZW50SXRl
bUluZm8tPmlzRHJhd2luZ0l0ZW0pCisgICAgICAgICsrbV9kcmF3aW5nSXRlbUluZGV4OwogCi0g
ICAgbV9jdXJzb3IgKz0gbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlcjsKKyAgICBtX2N1cnNvciAr
PSBtX2N1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyOwogCi0gICAgaWYgKG1fY3Vyc29yID09
IG1fY3VycmVudEVuZE9mQnVmZmVyICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZm
ZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7CisgICAgaWYgKG1fY3Vyc29yID09IGVu
ZE9mQ3VycmVudEJ1ZmZlcigpICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZmZXIo
KS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7CiAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJ
bmRleCsrOwogICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwogICAg
IH0KIAotICAgIHVwZGF0ZUN1cnJlbnRJdGVtKCk7CisgICAgbV9jdXJyZW50SXRlbUluZm8gPSB7
IH07CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKCkK
K2lubGluZSBhdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0oKSBjb25zdCAt
PiBPcHRpb25hbDxDdXJyZW50SXRlbVJlc3VsdD4KIHsKLSAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1
ZmZlcigpOwotICAgIGlmIChpdGVtcyAmJiBpdGVtcy0+bV9yZWFkaW5nQ2xpZW50ICYmIG1fY3Vy
cmVudEJ1ZmZlckZvckl0ZW0pIHsKLSAgICAgICAgaWYgKExJS0VMWShtX2lzVmFsaWQpKQotICAg
ICAgICAgICAgSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfS5kZXN0cm95KCk7
CisgICAgdXNpbmcgU2VxdWVuY2UgPSBicmlnYW5kOjptYWtlX3NlcXVlbmNlPGJyaWdhbmQ6OnB0
cmRpZmZfdDwwPiwgV1RGOjp2YXJpYW50X3NpemU8RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+Owog
Ci0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICE9IG1fZml4ZWRC
dWZmZXJGb3JDdXJyZW50SXRlbSkpCi0gICAgICAgICAgICBmYXN0RnJlZShtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtKTsKLSAgICB9CisgICAgT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1bHQ+IHJlc3Vs
dDsKKyAgICBicmlnYW5kOjpmb3JfZWFjaDxTZXF1ZW5jZT4oWyZdKGF1dG8mJiB0eXBlKSB7Cisg
ICAgICAgIHVzaW5nIEkgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0
eXBlKHR5cGUpPjo6dHlwZTo6dHlwZTsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlw
ZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEk6OnZhbHVlLCBEaXNwbGF5TGlzdEl0ZW0+
OwogCi0gICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDA7Ci0gICAgbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSA9IG51bGxwdHI7Ci19CisgICAgICAgIGNvbnN0IGF1dG8qIGVuZE9mQ3VycmVu
dEJ1ZmZlciA9IHRoaXMtPmVuZE9mQ3VycmVudEJ1ZmZlcigpOwogCi12b2lkIERpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6bW92ZVRvRW5kKCkKLXsKLSAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZm
ZXIoKSkgewotICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEg
KyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZC
dWZmZXIgPSBtX2N1cnNvcjsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMt
Pm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICB9CisgICAgICAgIGlmIChtX2N1cnNvciAr
IDEgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
YXV0byBpdGVtVHlwZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAg
ICAgIGlmIChpdGVtVHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiBjb25zdGV4cHIgKERpc3BsYXlMaXN0SXRlbVR5
cGU6OmlzSW5saW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKG1fY3Vyc29yICsgcGFkZGVkU2l6
ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPERpc3BsYXlMaXN0SXRlbVR5cGU+KCkgPiBlbmRPZkN1cnJl
bnRCdWZmZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY29uc3QgYXV0
byYgaXRlbSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IERpc3BsYXlMaXN0SXRlbVR5cGUqPiht
X2N1cnNvciArIHNpemVvZih1aW50NjRfdCkpOworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGl0
ZW0pKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGN1
cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRp
cGxlT2YoYWxpZ25vZih1aW50NjRfdCksIHNpemVvZihEaXNwbGF5TGlzdEl0ZW1UeXBlKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoIXJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSB7eyBpdGVt
LCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3aW5n
SXRlbSB9fTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8q
IGNsaWVudCA9IGl0ZW1CdWZmZXIoKS0+bV9yZWFkaW5nQ2xpZW50OworICAgICAgICBpZiAoIWNs
aWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9jdXJzb3IgKyAyICog
c2l6ZW9mKHVpbnQ2NF90KSA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90
Kj4obV9jdXJzb3IpWzFdOworICAgICAgICBjb25zdCBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vy
c29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7CisgICAgICAgIGlmIChzdGFydE9mRGF0YSArIGRh
dGFMZW5ndGggPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byBpdGVtID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVu
Z3RoLCBpdGVtVHlwZSk7CisgICAgICAgIGlmICghaXRlbSB8fCAhaXNWYWxpZChpdGVtLnZhbHVl
KCkpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGQ6OnNpemVfdCBjdXJyZW50SXRl
bVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVP
ZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIEFTU0VSVCghcmVzdWx0
KTsKKyAgICAgICAgcmVzdWx0ID0ge3sgV1RGTW92ZShpdGVtLnZhbHVlKCkpLCBjdXJyZW50SXRl
bVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9fTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKQpAQCAtMTQzLDEyICsxNzMsMjYg
QEAgdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50
QnVmZmVyKCkKICAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25s
eUJ1ZmZlcnMpIHsKICAgICAgICAgYXV0byYgbmV4dEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3Jl
YWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOwogICAgICAgICBtX2N1cnNvciA9
IG5leHRCdWZmZXJIYW5kbGUuZGF0YTsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBt
X2N1cnNvciArIG5leHRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7Ci0gICAgfSBlbHNlIGlmIChtX3Jl
YWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVh
ZE9ubHlCdWZmZXJzKTsKICAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZl
ci5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsgaXRlbXMt
Pm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CiAgICAgfQogfQogCit1aW50OF90KiBEaXNwbGF5TGlz
dDo6SXRlcmF0b3I6OmVuZE9mQ3VycmVudEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgYXV0byBpdGVt
cyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBBU1NFUlQoaXRlbXMpOworCisgICAgYXV0byBudW1iZXJP
ZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAg
aWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7Cisg
ICAgICAgIGF1dG8mIGN1cnJlbnRCdWZmZXJIYW5kbGUgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZl
cnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRCdWZmZXJI
YW5kbGUuZGF0YSArIGN1cnJlbnRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7CisgICAgfQorCisgICAg
QVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyk7
CisgICAgcmV0dXJuIGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0
dGVuTnVtYmVyT2ZCeXRlczsKK30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZXJhdG9yLmgKaW5kZXggMGNiZjVmMzY5NTc1OGIyMWEzNjdjN2Q5ODM2MGJjMTJmM2E2MGIxYy4u
ZWRhOTM3MWVhYWYwYmJjMzFlODY5ZmRkMjJjY2M3NDA0MGU5MGYxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0zNCwyNSArMzQsMTIgQEAgbmFtZXNwYWNlIERp
c3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBJbW1lZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKLSAgICBJdGVyYXRv
cihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5kIGlt
bWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKQotICAgICAgICA6
IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgewotICAgICAgICBpZiAoaW1tZWRpYXRl
bHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykKLSAgICAgICAgICAgIG1v
dmVUb0VuZCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0
T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgICAgICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgfkl0ZXJhdG9yKCkKLSAgICB7Ci0gICAgICAgIGNsZWFyQ3Vy
cmVudEl0ZW0oKTsKLSAgICB9CisgICAgSXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmLCBJbW1l
ZGlhdGVseU1vdmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObyk7CisgICAgfkl0ZXJh
dG9yKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJl
dHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9
PSBvdGhlci5tX2N1cnNvcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYg
b3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgdm9pZCBvcGVyYXRvcisr
KCkgeyBhZHZhbmNlKCk7IH0KKyAgICB2b2lkIG9wZXJhdG9yKysoKTsKIAogICAgIHN0cnVjdCBW
YWx1ZSB7CiAgICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKQEAgLTYwLDQ0ICs0Nyw0MiBAQCBwdWJs
aWM6CiAgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9OwogICAgIH07CiAKLSAg
ICBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICgh
bV9pc1ZhbGlkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0
dXJuIHt7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9
LAotICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAotICAgICAgICAgICAgbV9jdXJyZW50SXRl
bVNpemVJbkJ1ZmZlciwKLSAgICAgICAgfX07Ci0gICAgfQorICAgIE9wdGlvbmFsPFZhbHVlPiBv
cGVyYXRvciooKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICAvLyBUaGVzZSBhcmUgdGVtcG9yYXJ5
LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjM1NjAuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mRml4ZWRC
dWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKKyAgICB2b2lkIGNsZWFyQ3VycmVudEl0ZW0oKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUb0VuZCgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXJDdXJyZW50SXRlbSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsK
KyAgICBzdHJ1Y3QgQ3VycmVudEl0ZW1SZXN1bHQgeworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0g
ZGlzcGxheUxpc3RJdGVtOworICAgICAgICBzdGQ6OnNpemVfdCBzaXplSW5CdWZmZXI7CisgICAg
ICAgIGJvb2wgaXNEcmF3aW5nSXRlbTsKKyAgICB9OworICAgIE9wdGlvbmFsPEN1cnJlbnRJdGVt
UmVzdWx0PiBjdXJyZW50SXRlbSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBFeHRlbnRVcGRh
dGVSZXN1bHQgOiBib29sIHsgRmFpbHVyZSwgU3VjY2VzcyB9OwotICAgIEV4dGVudFVwZGF0ZVJl
c3VsdCB1cGRhdGVDdXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQoSXRlbVR5cGUpOworICAgIHZvaWQg
bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKKyAgICB1aW50OF90KiBlbmRPZkN1
cnJlbnRCdWZmZXIoKSBjb25zdDsKIAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBhdEVu
ZCgpIGNvbnN0OworI2VuZGlmCiAKICAgICBJdGVtQnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlzdHMoKTsgfQogCisgICAgLy8g
VGhlc2UgYXJlIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgorICAgIG11dGFibGUgdWludDhfdCBt
X2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRl
bV0geyAwIH07CisgICAgbXV0YWJsZSB1aW50OF90KiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIHsg
bnVsbHB0ciB9OworCiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CisgICAg
c3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7CisgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ1ZmZl
cjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07CisgICAgbXV0YWJsZSBPcHRp
b25hbDxDdXJyZW50SXRlbUluZm8+IG1fY3VycmVudEl0ZW1JbmZvOwogICAgIHVpbnQ4X3QqIG1f
Y3Vyc29yIHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX3JlYWRPbmx5QnVmZmVySW5kZXggeyAw
IH07CiAgICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7IDAgfTsKLSAgICB1aW50OF90KiBt
X2N1cnJlbnRFbmRPZkJ1ZmZlciB7IG51bGxwdHIgfTsKLQotICAgIHVpbnQ4X3QgbV9maXhlZEJ1
ZmZlckZvckN1cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1dIHsgMCB9
OwotICAgIHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07Ci0gICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7Ci0gICAgc2l6ZV90IG1fY3VycmVu
dEl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKaW5kZXggNzA3
ODE4YjBlNzlkNWEwMzg1YzAyYjdjNTllNWMzMWE2ODc0NmIzMS4uMzQyYjE3YmU3MTEyZjE5YzI5
MWM2OWRhMjU4MzdlNjgzMWUwNmNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3Bs
YXlMaXN0LmNwcApAQCAtNDEsMTUgKzQxLDEyIEBAIHZvaWQgSW5NZW1vcnlEaXNwbGF5TGlzdDo6
V3JpdGluZ0NsaWVudDo6ZW5jb2RlSXRlbUlubGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mCiAg
ICAgc2FmZUNvcHkoeyBsb2NhdGlvbiB9LCBkaXNwbGF5TGlzdEl0ZW0pOwogfQogCi1PcHRpb25h
bDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gSW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVh
ZGluZ0NsaWVudDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCitPcHRpb25hbDxE
aXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBJbk1lbW9yeURpc3BsYXlMaXN0OjpS
ZWFkaW5nQ2xpZW50OjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoLCBJdGVtVHlwZSB0eXBlKQogewogICAgIGNvbnN0IEl0ZW1IYW5kbGUgZGF0YUhhbmRs
ZSB7IGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEpIH07CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBl
LCBkYXRhSGFuZGxlLnR5cGUoKSA9PSB0eXBlKTsKICAgICBBU1NFUlRfVU5VU0VEKGRhdGFMZW5n
dGgsIGRhdGFMZW5ndGggPj0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGRhdGFIYW5k
bGUudHlwZSgpKSk7Ci0gICAgSXRlbUhhbmRsZSByZXN1bHQgeyBoYW5kbGVMb2NhdGlvbiB9Owot
ICAgIGlmIChkYXRhSGFuZGxlLnNhZmVDb3B5KHJlc3VsdCkpCi0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc2FmZUNvcHkoZGF0YUhh
bmRsZSk7CiB9CiAKIEluTWVtb3J5RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3QoKQpA
QCAtNjIsNyArNTksNiBAQCBJbk1lbW9yeURpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0
KCkKIAogSW5NZW1vcnlEaXNwbGF5TGlzdDo6fkluTWVtb3J5RGlzcGxheUxpc3QoKQogewotICAg
IGF1dG8gZW5kID0gdGhpcy0+ZW5kKCk7CiAgICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6
ICp0aGlzKSB7CiAgICAgICAgIGF1dG8gaXRlbSA9IGRpc3BsYXlMaXN0SXRlbS0+aXRlbTsKICAg
ICAgICAgQVNTRVJUKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgK
aW5kZXggMWNjMDhhZmFiZmYyZGE1N2MxYzJkMThkODk2ZmRjZjk1ZGNhYTNkMS4uZTdiOGYxOGY0
OTQ3YmMzODBjMjUwYmVmYzM0NDg5NzE0ODJiY2NmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1v
cnlEaXNwbGF5TGlzdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBSZWFkaW5nQ2xpZW50IDogcHVibGljIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50
IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5cGUsIHVpbnQ4X3QqKSBmaW5hbDsKKyAgICAgICAg
T3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSkgZmluYWw7CiAgICAgfTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA4ZDk2NGYyYmRhMTYzOTlmZmM1OTg1OTA4
YjNiYTIyM2U4NDk4ZmQwLi45M2UxZWE1MTE5MmE1NGRkMmY5YWRlNmFhNGEyNGRiNTk5NjQyNDIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlIDx3dGYvQnJpZ2FuZC5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
U3lzdGVtVHJhY2luZy5oPgpAQCAtNDg4LDEwNiArNDg5LDI3IEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6
Okl0ZW1CCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZSht
X3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCi1PcHRp
b25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9u
KQotewotICAgIC8qIFRoaXMgbmVlZHMgdG8gbWF0Y2ggKDEpIGlzSW5saW5lSXRlbSgpIGluIERp
c3BsYXlMaXN0SXRlbVR5cGUuY3BwLCAoMikgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5jb2Rl
SXRlbSgpLAotICAgICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlz
SW5saW5lSXRlbSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMuCi0gICAgICog
U2VlIHRoZSBjb21tZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aHku
ICovCi0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5
TGlzdDo6Q2xpcE91dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVM
b2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQ
YXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3Rm9j
dXNSaW5nUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGRl
Y29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPihkYXRhLCBsZW5n
dGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0dseXBoczoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJh
d0dseXBocz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoK
LSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGRh
dGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8
RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2Nh
dGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUGF0aD4oZGF0YSwgbGVu
Z3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZp
bGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlM
aXN0OjpGaWxsUmVjdFdpdGhDb2xvcj4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAg
ICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFk
aWVudD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5
TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KGRhdGEsIGxlbmd0
aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRM
aW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0
TGluZURhc2g+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0
ZTxEaXNwbGF5TGlzdDo6U2V0U3RhdGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTdHJva2VQYXRoPihkYXRhLCBsZW5ndGgs
IGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDbGVhclJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyU2hh
ZG93OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdFbGxpcHNlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VC
dWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJh
bnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxp
cHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmx1
c2hDb250ZXh0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENo
YW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSNpZiBFTkFCTEUoVklERU8pCi0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSNlbmRpZgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlNhdmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNjYWxlOgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
U2V0TGluZUNhcDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUpvaW46
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BB
VEhfREFUQSkKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0
aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0Ogot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkdldEltYWdlRGF0YTogewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworT3B0aW9uYWw8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0
ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlIGl0ZW1UeXBlKQoreworICAgIHVzaW5nIFNlcXVlbmNlID0gYnJpZ2FuZDo6bWFrZV9zZXF1
ZW5jZTxicmlnYW5kOjpwdHJkaWZmX3Q8MD4sIFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZT47CisKKyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3RJdGVtPiByZXN1bHQ7CisgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8U2VxdWVuY2U+
KFsmXShhdXRvJiYgdHlwZSkgeworICAgICAgICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1v
dmVDVkFuZFJlZmVyZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6OnR5cGU7CisgICAgICAgIHVz
aW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJOjp2
YWx1ZSwgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT47CisKKyAgICAgICAgaWYgKGl0ZW1U
eXBlICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIEFTU0VSVCghRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKTsK
KyAgICAgICAgaWYgY29uc3RleHByICghRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVt
KSB7CisgICAgICAgICAgICBpZiAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gPSBJUEM6OkRlY29kZXI6
OmRlY29kZVNpbmdsZU9iamVjdDxEaXNwbGF5TGlzdEl0ZW1UeXBlPihkYXRhLCBsZW5ndGgpKSB7
CisgICAgICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQpOworICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHsgV1RGTW92ZShkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKSkgfTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6dXBkYXRlUmVuZGVyaW5nUmVzb3VyY2VSZXF1ZXN0KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCmluZGV4IDc0OGM0YTJkMzQ1ODNhN2VhOWRiYTcxODI0MDQyYjFiYjI0ZWY4
ZWUuLjM2MDY0ZjFlZDE1OWQ4NGRlMmU3N2RjZDc2ZTFmOTQyOGMwN2E1ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaApAQCAtOTIsMTkgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMo
KTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJO
X1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0
aW9uKSBvdmVycmlkZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNv
ZGVBbmRDcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCog
aGFuZGxlTG9jYXRpb24pCi0gICAgewotICAgICAgICBpZiAoYXV0byBpdGVtID0gSVBDOjpEZWNv
ZGVyOjpkZWNvZGVTaW5nbGVPYmplY3Q8VD4oZGF0YSwgbGVuZ3RoKSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IFdlYktpdDIgc2hvdWxkIG5vdCBuZWVkIHRvIGtub3cgdGhhdCB0aGUgZmlyc3Qg
OCBieXRlcyBhdCB0aGUgaGFuZGxlIGFyZSByZXNlcnZlZCBmb3IgdGhlIHR5cGUuCi0gICAgICAg
ICAgICAvLyBOZWVkIHRvIGZpZ3VyZSBvdXQgYSB3YXkgdG8ga2VlcCB0aGlzIGtub3dsZWRnZSB3
aXRoaW4gZGlzcGxheSBsaXN0IGNvZGUgaW4gV2ViQ29yZS4KLSAgICAgICAgICAgIG5ldyAoaGFu
ZGxlTG9jYXRpb24gKyBzaXplb2YodWludDY0X3QpKSBUKFdURk1vdmUoKml0ZW0pKTsKLSAgICAg
ICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2NhdGlvbiB9fTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGUpIG92ZXJyaWRlOwogCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJlc3Vs
dCBzdWJtaXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0
cyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlh
bE9mZnNldCwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29u
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5
TGlzdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5
TGlzdFRlc3RzLmNwcAppbmRleCBiYzdhODQ5YWQ3NGU0YTY0MzU4ODE5NDc4ZmU0MzgzNTcxZTg3
NTJhLi41Y2JmZDJkNDQ0YjNhODdjMTU5ZDA0YWJkMmIxYmU4MWM5ZjQ4MWFlIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCkBAIC0xNzcsMTIgKzE3NywxMSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZm
ZXJDbGllbnQpCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE9wdGlvbmFsPEl0
ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2Nh
dGlvbikgZmluYWwKKyAgICAgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNF
RF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgRVhQRUNUX0VR
KHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShkYXRh
TGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7Ci0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9u
ICsgc2l6ZW9mKHVpbnQ2NF90KSkgU3Ryb2tlUGF0aChtX2l0ZW1zWypyZWludGVycHJldF9jYXN0
PGNvbnN0IHNpemVfdCo+KGRhdGEpXSk7Ci0gICAgICAgICAgICByZXR1cm4ge3sgaGFuZGxlTG9j
YXRpb24gfX07CisgICAgICAgICAgICByZXR1cm4gRGlzcGxheUxpc3RJdGVtKFN0cm9rZVBhdGgo
bV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJva2VQYXRoPiYgbV9pdGVtczsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRl
c3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlM
aXN0VGVzdHNDRy5jcHAKaW5kZXggNDFhYzM5ZTUzNmQ4ODc2ZWI2ZGZlYmYyMzNiOTY2MzVjMTQw
ODkwMC4uMmI2NTliNmY3YjJlZDZlOGUzMTgwMTFkODc5YjA0NTlhNmVhYmMzZSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHND
Ry5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlM
aXN0VGVzdHNDRy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIEl0ZW1CdWZmZXJJZGVudGlm
aWVyIGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIgPSBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXIK
IAogY2xhc3MgUmVhZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7
CiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBk
ZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3Qq
KSBmaW5hbAorICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJO
IGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5cGUgdHlwZSkgZmluYWwK
ICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6RmlsbFBhdGgpOwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owo=
</data>
<flag name="commit-queue"
          id="448951"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428126</attachid>
            <date>2021-05-09 03:49:39 -0700</date>
            <delta_ts>2021-05-09 03:55:09 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20200</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGZjMzQyYTMwOTI5OTFiYTk1NGY0MjQ0ZTAxNGQ4OGI5MDYxOTg0NTUKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MDI6MzU6NDggMjAyMSAtMDcwMAoKICAgIFBhcnQgOAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmY0YmQwZTEx
YjIuLmY4MTY4ZGUwMTFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA4OiBSZXBsYWNl
IHRoZSBndXRzIG9mIERpc3BsYXlMaXN0OjpJdGVyYXRvciB3aXRob3V0IGFmZmVjdGluZyBpdHMg
cHVibGljIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBhIGhhbGYtc3RlcCB0b3dhcmQgYSB3b3JsZCB3aGVyZSBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIHJldHVybnMgYSBEaXNwbGF5TGlzdEl0ZW0gaW5z
dGVhZCBvZiBhbiBJdGVtSGFuZGxlLgorICAgICAgICBJdCBkb2VzIHRoaXMgYnkgc3dhcHBpbmcg
b3V0IHRoZSBndXRzIG9mIERpc3BsYXlsaXN0OjpJdGVyYXRvciBzbyB0aGF0IGl0IGNyZWF0ZXMg
YSBEaXNwbGF5TGlzdEl0ZW0sIGJ1dCB0aGVuIGl0IGNvbnZlcnRzIHRoZQorICAgICAgICBEaXNw
bGF5TGlzdEl0ZW0gdG8gYW4gSXRlbUhhbmRsZSBhdCB0aGUgbGFzdCBzZWNvbmQgaW4gb3JkZXIg
dG8gcHJlc2VydmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yJ3MgQVBJIHNpZ25hdHVyZXMuIFRoaXMg
d2F5LCB3ZSBjYW4KKyAgICAgICAgc3BsaXQgdGhlIHVwZGF0ZSBvZiB0aGUgaW1wbGVtZW50YXRp
b24gb2YgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIGludG8gYSBzZXBhcmF0ZSBwYXRjaCBmcm9tIHVw
ZGF0aW5nIGFsbCB0aGUgY2FsbGVycyB0byB0aGUgbmV3CisgICAgICAgIHNpZ25hdHVyZS4KKwor
ICAgICAgICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQs
IGJlY2F1c2UgRGlzcGxheUxpc3RJdGVtcyBhcmUgc2ltcGxlciB0aGFuIEl0ZW1IYW5kbGVzLiBC
ZWNhdXNlIGFsbCB0aGUgdXNlcnMgb2YKKyAgICAgICAgdGhlIGl0ZXJhdG9yIHVzZSBpdCBpbiBh
IGZvcmVhY2ggbG9vcCwgd2UgY2FuIGV4cGVjdCB0aGF0IGFsbCB1c2VycyB3aWxsIHBpbmctcG9u
ZyBiZXR3ZWVuIG9wZXJhdG9yKigpIGFuZCBvcGVyYXRvcisrKCkuIFRoaXMgbWVhbnMKKyAgICAg
ICAgdGhhdCBvcGVyYXRvciooKSBjYW4gY29tcHV0ZSBhIEN1cnJlbnRJdGVtSW5mbywgd2hpY2gg
aW5jbHVkZXMgdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUg
ZGlzcGxheSBsaXN0IHNobWVtLAorICAgICAgICBzbyB0aGF0IHRoZSBpdGVyYXRvciBjYW4gcmV0
YWluIHRoYXQgaW5mb3JtYXRpb24sIGFuZCB0aGUgbmV4dCBjYWxsIHRvIG9wZXJhdG9yKysoKSBj
YW4ganVzdCB1c2UgaXQgdG8ga25vdyBob3cgbXVjaCB0byBpbmNyZW1lbnQgYnkuCisgICAgICAg
IFNvLCB0aGVyZSdzIGEgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB3aGljaCBpcyBjb25zdCBhbmQg
cmV0dXJucyBhIEN1cnJlbnRJdGVtUmVzdWx0LCBhbmQgaXQncyBvcGVyYXRvciooKSdzIGpvYiB0
byBjYWxsIGl0IGFuZCByZWNvcmQKKyAgICAgICAgdGhlIHJlbGV2YW50IGluZm8gZm9yIG9wZXJh
dG9yKysoKS4KKworICAgICAgICBUaGUgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB1c2VzIGJyaWdh
bmQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LCBhbmQgY29tcGFyZXMgdGhhdCB0eXBlJ3MKKyAgICAgICAgaXRlbVR5cGUgdG8gdGhl
IGZpcnN0IHNlcmlhbGl6ZWQgYnl0ZSBpbiB0aGUgc2htZW0uIElmIGl0IG1hdGNoZXMsIHdlIHRy
eSB0byBwYXJzZSBpdCBhY2NvcmRpbmcgdG8gdGhlIHJlbGV2YW50IHNlcmlhbGl6YXRpb24gcnVs
ZXMsCisgICAgICAgIGFuZCBpZiBpdCBkb2Vzbid0IG1hdGNoLCBicmlnYW5kIHdpbGwganVzdCBj
b250aW51ZSBsb29waW5nIHRvIHRoZSBuZXh0IHR5cGUgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmlzVmFsaWQpOiBEZWxldGVkLiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKTogTW92ZWQgZnJvbSBEaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6
b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRv
U3RhcnRPZkN1cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJl
bnREcmF3aW5nSXRlbUV4dGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjph
ZHZhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9y
KyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMS0wNS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJv
Y2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNjogTWlncmF0ZSBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50Jgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA5ZDRiMjI5
NDBhMmQuLmMyZjE4MTI0OWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKQEAgLTQzOSwyMSArNDM5LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95
KCkKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGlu
ZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlw
ZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJ
c1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQotewotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3Qg
SXRlbSYgaXRlbSkKLXsKLSAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Ci19Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIEl0ZW0+CiBzdGF0aWMgaW5saW5lIGJvb2wgY29weUludG8odWludDhfdCogZGVz
dGluYXRpb25XaXRoT2Zmc2V0LCBjb25zdCBJdGVtJiBpdGVtKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKaW5kZXggMWViODE1NmQxNjYzLi43ODMyOTkyNTMyZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjM1Niw5ICsyMzU2LDMxIEBAIHVzaW5nIERp
c3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQKICNlbmRpZgogPjsKIAotc2l6ZV90IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKK3RlbXBsYXRlPHR5
cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlk
ID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFz
SXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlk
KCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlk
KGNvbnN0IEl0ZW0mKQoreworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFs
aWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sKKyAgICByZXR1cm4g
aXRlbS5pc1ZhbGlkKCk7Cit9CisKIEl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3Qg
RGlzcGxheUxpc3RJdGVtJik7CiAKK3NpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29u
c3RleHByIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoKQoreworICAgIHJl
dHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2
NF90KSwgc2l6ZW9mKFQpKTsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgSXRlbUhhbmRsZSk7CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKaW5kZXggZWFlYTM0ODE2ZGI4Li43YWNkMjUy
YjJkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTI5
LDExMCArMjksMTM4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxp
c3QgewogCi1ib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAorRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kKQorICAgIDogbV9kaXNw
bGF5TGlzdChkaXNwbGF5TGlzdCkKIHsKLSAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkg
fHwgIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGltbWVkaWF0ZWx5
TW92ZVRvRW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1
dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCkpIHsKKyAgICAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJ
bmRleCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAgICAgICAgICBtX2N1
cnNvciA9IGVuZE9mQ3VycmVudEJ1ZmZlcigpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAg
ICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Cit9CiAKLSAgICBhdXRvJiBp
dGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy5tX3dyaXRh
YmxlQnVmZmVyLmRhdGEgKyBpdGVtcy5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIHJldHVy
biBtX2N1cnNvciA9PSBlbmRDdXJzb3I7CitEaXNwbGF5TGlzdDo6SXRlcmF0b3I6On5JdGVyYXRv
cigpCit7CisgICAgY2xlYXJDdXJyZW50SXRlbSgpOwogfQogCi1hdXRvIERpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6dXBkYXRlQ3VycmVudERyYXdpbmdJdGVtRXh0ZW50KEl0ZW1UeXBlIGl0ZW1UeXBl
KSAtPiBFeHRlbnRVcGRhdGVSZXN1bHQKKyNpZiBBU1NFUlRfRU5BQkxFRAorYm9vbCBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICBhdXRvJiBleHRlbnRzID0gbV9k
aXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50czsKLSAgICBpZiAoZXh0ZW50cy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CisgICAgaWYg
KG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
ICghaXNEcmF3aW5nSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50ID0g
V1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gRXh0ZW50VXBkYXRlUmVzdWx0OjpTdWNjZXNz
OwotICAgIH0KKyAgICBjb25zdCBhdXRvKiBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAo
IWl0ZW1zKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2RyYXdpbmdJdGVtSW5k
ZXggPj0gZXh0ZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6
OkZhaWx1cmU7CisgICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5k
YXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CisgICAgcmV0dXJuIG1fY3Vyc29y
ID09IGVuZEN1cnNvcjsKK30KKyNlbmRpZgogCi0gICAgbV9jdXJyZW50RXh0ZW50ID0gZXh0ZW50
c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwotICAgIG1fZHJhd2luZ0l0ZW1JbmRleCsrOwotICAgIHJl
dHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CisvLyBUaGlzIGlzIHRlbXBvcmFyeSwg
YW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIzNTYwLgordm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0
ZW0oKQoreworICAgIGlmIChtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICYmIG1fY3VycmVudEJ1ZmZl
ckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtKQorICAgICAgICBmYXN0RnJl
ZShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKK2F1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVy
YXRvciooKSBjb25zdCAtPiBPcHRpb25hbDxWYWx1ZT4KIHsKLSAgICBjbGVhckN1cnJlbnRJdGVt
KCk7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBBU1NFUlQoIW1fY3VycmVudEl0ZW1JbmZv
KTsKIAotICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1cm47CisgICAgYXV0byBjdXJyZW50
SXRlbUluZm8gPSBjdXJyZW50SXRlbSgpOworICAgIGlmICghY3VycmVudEl0ZW1JbmZvKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZl
cigpOwotICAgIGF1dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3Jb
MF0pOworICAgIG1fY3VycmVudEl0ZW1JbmZvID0ge3sgY3VycmVudEl0ZW1JbmZvLT5zaXplSW5C
dWZmZXIsIGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSB9fTsKIAotICAgIGlmICh1cGRh
dGVDdXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQoaXRlbVR5cGUpID09IEV4dGVudFVwZGF0ZVJlc3Vs
dDo6RmFpbHVyZSkgewotICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGN1cnJlbnRFeHRlbnQ7CisgICAgaWYg
KGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSAmJiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdp
bmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIGN1cnJlbnRFeHRlbnQgPSBtX2Rpc3Bs
YXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07CiAKLSAgICBh
dXRvIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5
dGVzKGl0ZW1UeXBlKTsKKyAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVt
b3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgor
ICAgIGNvbnN0X2Nhc3Q8SXRlcmF0b3IqPih0aGlzKS0+Y2xlYXJDdXJyZW50SXRlbSgpOworICAg
IGF1dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUlu
Qnl0ZXMoZGlzcGxheUxpc3RJdGVtVHlwZShjdXJyZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRl
bSkpOwogICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRl
bSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1
cnJlbnRJdGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbSkpOwotICAgIGlmIChpc0lubGluZUl0ZW0oaXRlbVR5cGUpKSB7Ci0g
ICAgICAgIGlmIChVTkxJS0VMWSghSXRlbUhhbmRsZSB7IG1fY3Vyc29yIH0uc2FmZUNvcHkoeyBt
X2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pKSkKLSAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNl
OwotCi0gICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvKiBjbGllbnQgPSBpdGVtcy5tX3Jl
YWRpbmdDbGllbnQ7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudCk7Ci0gICAgICAgIGF1
dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07
Ci0gICAgICAgIGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2
NF90KTsKLSAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGRlY29k
ZWRJdGVtID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVt
VHlwZSkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgY29weSBvcGVyYXRpb24gaXMgdGVtcG9yYXJ5
LCBhbmQgd2lsbCBiZSByZW1vdmVkIGFzIGEgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotICAgICAgICAgICAgbV9pc1ZhbGlkID0gc2FmZUNv
cHkoSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwgZGVjb2RlZEl0ZW0udmFs
dWUoKSk7Ci0gICAgICAgIH0KKyAgICBhdXRvIHN1Y2Nlc3MgPSBzYWZlQ29weSh7IG1fY3VycmVu
dEJ1ZmZlckZvckl0ZW0gfSwgY3VycmVudEl0ZW1JbmZvLT5kaXNwbGF5TGlzdEl0ZW0pOworICAg
IEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKLSAgICAgICAgbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAgICAgICAg
bV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRV
cFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7Ci0gICAgfQorICAg
IHJldHVybiB7eyB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwgV1RGTW92ZShjdXJyZW50RXh0
ZW50KSwgY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXIgfX07CiB9CiAKLXZvaWQgRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjphZHZhbmNlKCkKK3ZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpv
cGVyYXRvcisrKCkKIHsKLSAgICBpZiAoYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEFT
U0VSVCghYXRFbmQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEl0ZW1JbmZvKTsKKworICAgIGlm
IChtX2N1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSkKKyAgICAgICAgKyttX2RyYXdpbmdJ
dGVtSW5kZXg7CiAKLSAgICBtX2N1cnNvciArPSBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyOwor
ICAgIG1fY3Vyc29yICs9IG1fY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXI7CiAKLSAgICBp
ZiAobV9jdXJzb3IgPT0gbV9jdXJyZW50RW5kT2ZCdWZmZXIgJiYgbV9yZWFkT25seUJ1ZmZlcklu
ZGV4IDwgaXRlbUJ1ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKKyAgICBpZiAo
bV9jdXJzb3IgPT0gZW5kT2ZDdXJyZW50QnVmZmVyKCkgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4
IDwgaXRlbUJ1ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKICAgICAgICAgbV9y
ZWFkT25seUJ1ZmZlckluZGV4Kys7CiAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50
QnVmZmVyKCk7CiAgICAgfQogCi0gICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKKyAgICBtX2N1cnJl
bnRJdGVtSW5mbyA9IHsgfTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmNsZWFy
Q3VycmVudEl0ZW0oKQoraW5saW5lIGF1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50
SXRlbSgpIGNvbnN0IC0+IE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PgogewotICAgIGF1dG8g
aXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAgaWYgKGl0ZW1zICYmIGl0ZW1zLT5tX3JlYWRpbmdD
bGllbnQgJiYgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSkgewotICAgICAgICBpZiAoTElLRUxZKG1f
aXNWYWxpZCkpCi0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRl
bSB9LmRlc3Ryb3koKTsKKyAgICB1c2luZyBTZXF1ZW5jZSA9IGJyaWdhbmQ6Om1ha2Vfc2VxdWVu
Y2U8YnJpZ2FuZDo6cHRyZGlmZl90PDA+LCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0
ZW0+Ojp2YWx1ZT47CisKKyAgICBPcHRpb25hbDxDdXJyZW50SXRlbVJlc3VsdD4gcmVzdWx0Owor
ICAgIGJyaWdhbmQ6OmZvcl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0byYmIHR5cGUpIHsKKyAgICAg
ICAgdXNpbmcgSSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUo
dHlwZSk+Ojp0eXBlOjp0eXBlOworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0g
V1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8STo6dmFsdWUsIERpc3BsYXlMaXN0SXRlbT47CisK
KyAgICAgICAgY29uc3QgYXV0byogZW5kT2ZDdXJyZW50QnVmZmVyID0gdGhpcy0+ZW5kT2ZDdXJy
ZW50QnVmZmVyKCk7CisKKyAgICAgICAgaWYgKG1fY3Vyc29yICsgMSA+IGVuZE9mQ3VycmVudEJ1
ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGl0ZW1UeXBlID0gc3Rh
dGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICAgICAgaWYgKGl0ZW1UeXBlICE9
IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKSB7
CisgICAgICAgICAgICBpZiAobV9jdXJzb3IgKyBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXM8RGlzcGxheUxpc3RJdGVtVHlwZT4oKSA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpdGVtID0gKnJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3RJdGVtVHlwZSo+KG1fY3Vyc29yICsgc2l6ZW9mKHVp
bnQ2NF90KSk7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWQoaXRlbSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgc3RkOjpzaXplX3QgY3VycmVudEl0ZW1TaXplSW5CdWZm
ZXIgPSBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2
NF90KSwgc2l6ZW9mKERpc3BsYXlMaXN0SXRlbVR5cGUpKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
cmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHt7IGl0ZW0sIGN1cnJlbnRJdGVtU2l6ZUlu
QnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVtIH19OworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtKSkKLSAgICAgICAgICAg
IGZhc3RGcmVlKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOwotICAgIH0KKyAgICAgICAgYXV0byog
Y2xpZW50ID0gaXRlbUJ1ZmZlcigpLT5tX3JlYWRpbmdDbGllbnQ7CisgICAgICAgIGlmICghY2xp
ZW50KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZl
ciA9IDA7Ci0gICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IG51bGxwdHI7Ci19CisgICAgICAg
IGlmIChtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0X3QpID4gZW5kT2ZDdXJyZW50QnVmZmVy
KQorICAgICAgICAgICAgcmV0dXJuOwogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92
ZVRvRW5kKCkKLXsKLSAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKSkgewotICAgICAg
ICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0
dGVuTnVtYmVyT2ZCeXRlczsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNv
cjsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZm
ZXJzLnNpemUoKTsKLSAgICB9CisgICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07CisgICAgICAgIGNvbnN0IGF1dG8qIHN0YXJ0
T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKKyAgICAgICAgaWYgKHN0
YXJ0T2ZEYXRhICsgZGF0YUxlbmd0aCA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBhdXRvIGl0ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRP
ZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBlKTsKKyAgICAgICAgaWYgKCFpdGVtIHx8ICFpc1Zh
bGlkKGl0ZW0udmFsdWUoKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0ZDo6c2l6
ZV90IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3Vu
ZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAg
QVNTRVJUKCFyZXN1bHQpOworICAgICAgICByZXN1bHQgPSB7eyBXVEZNb3ZlKGl0ZW0udmFsdWUo
KSksIGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdp
bmdJdGVtIH19OworICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCkBAIC0x
NDUsMTIgKzE3MywyNiBAQCB2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRv
U3RhcnRPZkN1cnJlbnRCdWZmZXIoKQogICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBu
dW1iZXJPZlJlYWRPbmx5QnVmZmVycykgewogICAgICAgICBhdXRvJiBuZXh0QnVmZmVySGFuZGxl
ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRleF07CiAgICAg
ICAgIG1fY3Vyc29yID0gbmV4dEJ1ZmZlckhhbmRsZS5kYXRhOwotICAgICAgICBtX2N1cnJlbnRF
bmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsgbmV4dEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKLSAgICB9
IGVsc2UgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVy
cykgeworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3JlYWRPbmx5QnVmZmVySW5kZXgg
PT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpOwogICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5t
X3dyaXRhYmxlQnVmZmVyLmRhdGE7Ci0gICAgICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9j
dXJzb3IgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKICAgICB9CiB9CiAKK3VpbnQ4
X3QqIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyKCkgY29uc3QKK3sK
KyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOworICAgIEFTU0VSVChpdGVtcyk7CisKKyAg
ICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJz
LnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25s
eUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5t
X3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOworICAgICAgICByZXR1cm4g
Y3VycmVudEJ1ZmZlckhhbmRsZS5kYXRhICsgY3VycmVudEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsK
KyAgICB9CisKKyAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVh
ZE9ubHlCdWZmZXJzKTsKKyAgICByZXR1cm4gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSAr
IGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRleCAwY2JmNWYzNjk1NzUuLmVkYTkzNzFlYWFmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0zNCwyNSArMzQsMTIg
QEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJbW1lZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMg
fTsKLSAgICBJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0
ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6
Ok5vKQotICAgICAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgewotICAgICAg
ICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykK
LSAgICAgICAgICAgIG1vdmVUb0VuZCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1v
dmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgICAgICB1cGRhdGVDdXJy
ZW50SXRlbSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgfkl0ZXJhdG9yKCkKLSAgICB7Ci0g
ICAgICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKLSAgICB9CisgICAgSXRlcmF0b3IoY29uc3QgRGlz
cGxheUxpc3QmLCBJbW1lZGlhdGVseU1vdmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpO
byk7CisgICAgfkl0ZXJhdG9yKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0
b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlz
dCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNvcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAg
dm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNlKCk7IH0KKyAgICB2b2lkIG9wZXJhdG9yKysoKTsK
IAogICAgIHN0cnVjdCBWYWx1ZSB7CiAgICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKQEAgLTYwLDQ0
ICs0Nyw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9
OwogICAgIH07CiAKLSAgICBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgcmV0dXJuIHt7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50
QnVmZmVyRm9ySXRlbSB9LAotICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAotICAgICAgICAg
ICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwKLSAgICAgICAgfX07Ci0gICAgfQorICAgIE9w
dGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICAvLyBUaGVz
ZSBhcmUgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKKyAgICB2b2lkIGNsZWFy
Q3VycmVudEl0ZW0oKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3Rh
cnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUb0VuZCgp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDdXJyZW50SXRlbSgpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFkdmFuY2UoKTsKKyAgICBzdHJ1Y3QgQ3VycmVudEl0ZW1SZXN1bHQgeworICAgICAgICBE
aXNwbGF5TGlzdEl0ZW0gZGlzcGxheUxpc3RJdGVtOworICAgICAgICBzdGQ6OnNpemVfdCBzaXpl
SW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNEcmF3aW5nSXRlbTsKKyAgICB9OworICAgIE9wdGlv
bmFsPEN1cnJlbnRJdGVtUmVzdWx0PiBjdXJyZW50SXRlbSgpIGNvbnN0OwogCi0gICAgZW51bSBj
bGFzcyBFeHRlbnRVcGRhdGVSZXN1bHQgOiBib29sIHsgRmFpbHVyZSwgU3VjY2VzcyB9OwotICAg
IEV4dGVudFVwZGF0ZVJlc3VsdCB1cGRhdGVDdXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQoSXRlbVR5
cGUpOworICAgIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKKyAgICB1
aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdDsKIAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2VuZGlmCiAKICAgICBJdGVtQnVmZmVyKiBpdGVt
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlzdHMo
KTsgfQogCisgICAgLy8gVGhlc2UgYXJlIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBi
eSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgorICAgIG11
dGFibGUgdWludDhfdCBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRCdWZm
ZXJGb3JDdXJyZW50SXRlbV0geyAwIH07CisgICAgbXV0YWJsZSB1aW50OF90KiBtX2N1cnJlbnRC
dWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9OworCiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlz
cGxheUxpc3Q7CisgICAgc3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7CisgICAgICAgIHN0ZDo6c2l6
ZV90IHNpemVJbkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07Cisg
ICAgbXV0YWJsZSBPcHRpb25hbDxDdXJyZW50SXRlbUluZm8+IG1fY3VycmVudEl0ZW1JbmZvOwog
ICAgIHVpbnQ4X3QqIG1fY3Vyc29yIHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX3JlYWRPbmx5
QnVmZmVySW5kZXggeyAwIH07CiAgICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7IDAgfTsK
LSAgICB1aW50OF90KiBtX2N1cnJlbnRFbmRPZkJ1ZmZlciB7IG51bGxwdHIgfTsKLQotICAgIHVp
bnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVyRm9yQ3Vy
cmVudEl0ZW1dIHsgMCB9OwotICAgIHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBu
dWxscHRyIH07Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7Ci0gICAg
c2l6ZV90IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgYm9vbCBtX2lzVmFs
aWQgeyB0cnVlIH07CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428127</attachid>
            <date>2021-05-09 03:55:27 -0700</date>
            <delta_ts>2021-05-10 03:00:32 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-225579-20210509035526.patch</filename>
            <type>text/plain</type>
            <size>35867</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZmNGJkMGUxMWIyODZi
NTY1MWFlMTQ5M2UwZTBjZDBhNTViZmZkMy4uZjgxNjhkZTAxMWY5ZTEyNTIwNjJmMWExMmE1YzA1
YjY0NDhlN2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA4OiBSZXBsYWNlIHRoZSBn
dXRzIG9mIERpc3BsYXlMaXN0OjpJdGVyYXRvciB3aXRob3V0IGFmZmVjdGluZyBpdHMgcHVibGlj
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1
NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpcyBhIGhhbGYtc3RlcCB0b3dhcmQgYSB3b3JsZCB3aGVyZSBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6Om9wZXJhdG9yKigpIHJldHVybnMgYSBEaXNwbGF5TGlzdEl0ZW0gaW5zdGVhZCBv
ZiBhbiBJdGVtSGFuZGxlLgorICAgICAgICBJdCBkb2VzIHRoaXMgYnkgc3dhcHBpbmcgb3V0IHRo
ZSBndXRzIG9mIERpc3BsYXlsaXN0OjpJdGVyYXRvciBzbyB0aGF0IGl0IGNyZWF0ZXMgYSBEaXNw
bGF5TGlzdEl0ZW0sIGJ1dCB0aGVuIGl0IGNvbnZlcnRzIHRoZQorICAgICAgICBEaXNwbGF5TGlz
dEl0ZW0gdG8gYW4gSXRlbUhhbmRsZSBhdCB0aGUgbGFzdCBzZWNvbmQgaW4gb3JkZXIgdG8gcHJl
c2VydmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yJ3MgQVBJIHNpZ25hdHVyZXMuIFRoaXMgd2F5LCB3
ZSBjYW4KKyAgICAgICAgc3BsaXQgdGhlIHVwZGF0ZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2Yg
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yIGludG8gYSBzZXBhcmF0ZSBwYXRjaCBmcm9tIHVwZGF0aW5n
IGFsbCB0aGUgY2FsbGVycyB0byB0aGUgbmV3CisgICAgICAgIHNpZ25hdHVyZS4KKworICAgICAg
ICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJlY2F1
c2UgRGlzcGxheUxpc3RJdGVtcyBhcmUgc2ltcGxlciB0aGFuIEl0ZW1IYW5kbGVzLiBCZWNhdXNl
IGFsbCB0aGUgdXNlcnMgb2YKKyAgICAgICAgdGhlIGl0ZXJhdG9yIHVzZSBpdCBpbiBhIGZvcmVh
Y2ggbG9vcCwgd2UgY2FuIGV4cGVjdCB0aGF0IGFsbCB1c2VycyB3aWxsIHBpbmctcG9uZyBiZXR3
ZWVuIG9wZXJhdG9yKigpIGFuZCBvcGVyYXRvcisrKCkuIFRoaXMgbWVhbnMKKyAgICAgICAgdGhh
dCBvcGVyYXRvciooKSBjYW4gY29tcHV0ZSBhIEN1cnJlbnRJdGVtSW5mbywgd2hpY2ggaW5jbHVk
ZXMgdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUgZGlzcGxh
eSBsaXN0IHNobWVtLAorICAgICAgICBzbyB0aGF0IHRoZSBpdGVyYXRvciBjYW4gcmV0YWluIHRo
YXQgaW5mb3JtYXRpb24sIGFuZCB0aGUgbmV4dCBjYWxsIHRvIG9wZXJhdG9yKysoKSBjYW4ganVz
dCB1c2UgaXQgdG8ga25vdyBob3cgbXVjaCB0byBpbmNyZW1lbnQgYnkuCisgICAgICAgIFNvLCB0
aGVyZSdzIGEgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB3aGljaCBpcyBjb25zdCBhbmQgcmV0dXJu
cyBhIEN1cnJlbnRJdGVtUmVzdWx0LCBhbmQgaXQncyBvcGVyYXRvciooKSdzIGpvYiB0byBjYWxs
IGl0IGFuZCByZWNvcmQKKyAgICAgICAgdGhlIHJlbGV2YW50IGluZm8gZm9yIG9wZXJhdG9yKyso
KS4KKworICAgICAgICBUaGUgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB1c2VzIGJyaWdhbmQgdG8g
aXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBWYXJpYW50
LCBhbmQgY29tcGFyZXMgdGhhdCB0eXBlJ3MKKyAgICAgICAgaXRlbVR5cGUgdG8gdGhlIGZpcnN0
IHNlcmlhbGl6ZWQgYnl0ZSBpbiB0aGUgc2htZW0uIElmIGl0IG1hdGNoZXMsIHdlIHRyeSB0byBw
YXJzZSBpdCBhY2NvcmRpbmcgdG8gdGhlIHJlbGV2YW50IHNlcmlhbGl6YXRpb24gcnVsZXMsCisg
ICAgICAgIGFuZCBpZiBpdCBkb2Vzbid0IG1hdGNoLCBicmlnYW5kIHdpbGwganVzdCBjb250aW51
ZSBsb29waW5nIHRvIHRoZSBuZXh0IHR5cGUgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBWYXJpYW50
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFs
aWQpOiBEZWxldGVkLiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmguCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKTogTW92ZWQgZnJvbSBEaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRP
ZkN1cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnREcmF3
aW5nSXRlbUV4dGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphZHZhbmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVy
YXRvcjo6SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVy
YXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMS0wNS0wOSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNjogTWlncmF0ZSBJdGVtQnVmZmVy
V3JpdGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50JgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1YTcyNTAxNDE1NTAy
NDRmY2YwZTVhZDZkNjVmN2E0MTQ3NjlhYzIyLi5jMmYxODEyNDlkMGYzN2JmNTA1NmEzZjg3MzQ2
N2Q0MGJlNzgzYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlIDx3
dGYvQnJpZ2FuZC5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQzOCwyMSArNDM5LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkK
ICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBj
b25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShz
dGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1Zh
bGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQotewotICAgIHJldHVybiB0cnVl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRl
bSYgaXRlbSkKLXsKLSAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Ci19Ci0KIHRlbXBsYXRlPHR5
cGVuYW1lIEl0ZW0+CiBzdGF0aWMgaW5saW5lIGJvb2wgY29weUludG8odWludDhfdCogZGVzdGlu
YXRpb25XaXRoT2Zmc2V0LCBjb25zdCBJdGVtJiBpdGVtKQogewpAQCAtNjE5LDYgKzYwNSwyNyBA
QCBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24sIGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYgc291cmNlKQogICAgIH0sIHNvdXJjZSk7CiB9CiAKK09wdGlvbmFsPERpc3BsYXlMaXN0
SXRlbT4gc2FmZUNvcHkoSXRlbUhhbmRsZSBzb3VyY2UpCit7CisgICAgdXNpbmcgU2VxdWVuY2Ug
PSBicmlnYW5kOjptYWtlX3NlcXVlbmNlPGJyaWdhbmQ6OnB0cmRpZmZfdDwwPiwgV1RGOjp2YXJp
YW50X3NpemU8RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+OworCisgICAgT3B0aW9uYWw8RGlzcGxh
eUxpc3RJdGVtPiByZXN1bHQ7CisgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8U2VxdWVuY2U+KFsmXShh
dXRvJiYgdHlwZSkgeworICAgICAgICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFu
ZFJlZmVyZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6OnR5cGU7CisgICAgICAgIHVzaW5nIERp
c3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJOjp2YWx1ZSwg
RGlzcGxheUxpc3RJdGVtPjsKKworICAgICAgICBpZiAoc291cmNlLnR5cGUoKSAhPSBEaXNwbGF5
TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBh
dXRvIGRpc3BsYXlMaXN0SXRlbSA9IHNvdXJjZS5nZXQ8RGlzcGxheUxpc3RJdGVtVHlwZT4oKTsK
KyAgICAgICAgaWYgKGlzVmFsaWQoZGlzcGxheUxpc3RJdGVtKSkgeworICAgICAgICAgICAgQVNT
RVJUKCFyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gRGlzcGxheUxpc3RJdGVtKFdURk1v
dmUoZGlzcGxheUxpc3RJdGVtKSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiBJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1CdWZmZXJIYW5kbGVzJiYgaGFu
ZGxlcykKICAgICA6IG1fcmVhZE9ubHlCdWZmZXJzKFdURk1vdmUoaGFuZGxlcykpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYjk5MTc1N2MyMmRjNzdl
MGQ4N2JjM2M1Y2IxZDAxOWZkMDdjNDM4Ni4uMzM2YTIxYTI1NDExNDRjNjk4Y2U4ZGFhYWY3MmQz
NDk4N2I4YjQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApA
QCAtODMsNiArODMsNyBAQCBzdHJ1Y3QgSXRlbUhhbmRsZSB7CiB9OwogCiBib29sIHNhZmVDb3B5
KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24sIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgc291cmNlKTsK
K09wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gc2FmZUNvcHkoSXRlbUhhbmRsZSk7CiAKIGVudW0g
Y2xhc3MgRGlkQ2hhbmdlSXRlbUJ1ZmZlciA6IGJvb2wgeyBObywgWWVzIH07CiAKQEAgLTEyMyw3
ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8
SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlv
bikgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNF
RF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCwgSXRlbVR5cGUpID0gMDsKIH07CiAKIC8vIEFuIEl0ZW1CdWZmZXIgY29udGFpbnMgZGlzcGxh
eSBsaXN0IGl0ZW0gZGF0YSwgYW5kIGNvbnNpc3RzIG9mIGEgcmVhZHdyaXRlIEl0ZW1CdWZmZXJI
YW5kbGUgKHRvIHdoaWNoIGRpc3BsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmlu
ZGV4IDFlYjgxNTZkMTY2Mzc4ZWJmMDVlZTZiYzJjZWUxMDFmOTJlMjZjNmEuLjc4MzI5OTI1MzJl
MjYzYjA2NTkxNTNkMTgxZDkxY2ZiNzFlOTgyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaApAQCAtMjM1Niw5ICsyMzU2LDMxIEBAIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9IFZh
cmlhbnQKICNlbmRpZgogPjsKIAotc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRl
cyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9
IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZv
aWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlu
bGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlz
VmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sKKyAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Cit9
CisKIEl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7
CiAKK3NpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxp
c3RJdGVtJik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29uc3RleHByIHNpemVfdCBwYWRk
ZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoKQoreworICAgIHJldHVybiBzaXplb2YodWludDY0
X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZW9mKFQpKTsK
K30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7CiAK
IH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5jcHAKaW5kZXggZTc2Njc3MmJlZWFjMTY1NjZkMTRiNDQwZGRiMjY2ZWM3ZDY2NmNj
MC4uN2FjZDI1MmIyZGVhNGZmMzQ3ZTIzZDQwZWUxNWJkMzIzMjc5NjQzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtMjksMTA4ICsyOSwxMzggQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWJvb2wgRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CitEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Okl0
ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRlbHlNb3ZlVG9F
bmQgaW1tZWRpYXRlbHlNb3ZlVG9FbmQpCisgICAgOiBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0
KQogewotICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSB8fCAhbV9pc1ZhbGlkKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRp
YXRlbHlNb3ZlVG9FbmQ6OlllcykgeworICAgICAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZm
ZXIoKSkgeworICAgICAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVh
ZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICAgICAgICAgIG1fY3Vyc29yID0gZW5kT2ZDdXJyZW50
QnVmZmVyKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbW92ZUN1cnNvclRvU3Rh
cnRPZkN1cnJlbnRCdWZmZXIoKTsKK30KIAotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZmZXIo
KTsKLSAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0
ZW1zLm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgcmV0dXJuIG1fY3Vyc29yID09IGVuZEN1
cnNvcjsKK0Rpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKCkKK3sKKyAgICBjbGVhckN1
cnJlbnRJdGVtKCk7CiB9CiAKLWF1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJy
ZW50RHJhd2luZ0l0ZW1FeHRlbnQoSXRlbVR5cGUgaXRlbVR5cGUpIC0+IEV4dGVudFVwZGF0ZVJl
c3VsdAorI2lmIEFTU0VSVF9FTkFCTEVECitib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRF
bmQoKSBjb25zdAogewotICAgIGF1dG8mIGV4dGVudHMgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJhd2lu
Z0l0ZW1FeHRlbnRzOwotICAgIGlmIChleHRlbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKKyAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFpc0RyYXdpbmdJdGVtKGl0
ZW1UeXBlKSkgewotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBXVEY6Om51bGxvcHQ7Ci0gICAg
ICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7Ci0gICAgfQorICAgIGNvbnN0
IGF1dG8qIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOworICAgIGlmICghaXRlbXMpCisgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgaWYgKG1fZHJhd2luZ0l0ZW1JbmRleCA+PSBleHRlbnRzLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6RmFpbHVyZTsKKyAgICBhdXRv
IGVuZEN1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0
dGVuTnVtYmVyT2ZCeXRlczsKKyAgICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vyc29yOworfQor
I2VuZGlmCiAKLSAgICBtX2N1cnJlbnRFeHRlbnQgPSBleHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRl
eF07Ci0gICAgbV9kcmF3aW5nSXRlbUluZGV4Kys7Ci0gICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJl
c3VsdDo6U3VjY2VzczsKKy8vIFRoaXMgaXMgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVk
IGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCit2b2lk
IERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y2xlYXJDdXJyZW50SXRlbSgpCit7CisgICAgaWYgKG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0gJiYgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSAhPSBtX2ZpeGVk
QnVmZmVyRm9yQ3VycmVudEl0ZW0pCisgICAgICAgIGZhc3RGcmVlKG1fY3VycmVudEJ1ZmZlckZv
ckl0ZW0pOwogfQogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0
ZW0oKQorYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9w
dGlvbmFsPFZhbHVlPgogewotICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKKyAgICBBU1NFUlQoIWF0
RW5kKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50SXRlbUluZm8pOwogCi0gICAgaWYgKGF0RW5k
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIGN1cnJlbnRJdGVtSW5mbyA9IGN1cnJlbnRJ
dGVtKCk7CisgICAgaWYgKCFjdXJyZW50SXRlbUluZm8pCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKLSAgICBhdXRvJiBpdGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBpdGVt
VHlwZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAgbV9jdXJyZW50
SXRlbUluZm8gPSB7eyBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciwgY3VycmVudEl0ZW1J
bmZvLT5pc0RyYXdpbmdJdGVtIH19OwogCi0gICAgaWYgKHVwZGF0ZUN1cnJlbnREcmF3aW5nSXRl
bUV4dGVudChpdGVtVHlwZSkgPT0gRXh0ZW50VXBkYXRlUmVzdWx0OjpGYWlsdXJlKSB7Ci0gICAg
ICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gY3VycmVudEV4dGVudDsKKyAgICBpZiAoY3VycmVudEl0ZW1JbmZvLT5p
c0RyYXdpbmdJdGVtICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgY3VycmVudEV4dGVudCA9IG1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRl
bUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKIAotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlw
ZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoaXRlbVR5cGUpOworICAg
IC8vIFRoaXMgaXMgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCisgICAgY29uc3RfY2FzdDxJdGVy
YXRvcio+KHRoaXMpLT5jbGVhckN1cnJlbnRJdGVtKCk7CisgICAgYXV0byBwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhkaXNwbGF5TGlzdEl0
ZW1UeXBlKGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtKSk7CiAgICAgbV9jdXJyZW50
QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVkQnVm
ZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSk7
Ci0gICAgaWYgKGlzSW5saW5lSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZ
KCFJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5zYWZlQ29weSh7IG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0gfSkpKQotICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0KLSAgICAgICAgbV9jdXJy
ZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1zLm1fcmVhZGluZ0NsaWVudDsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY2xpZW50KTsKLSAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KG1fY3Vyc29yKVsxXTsKLSAgICAgICAgYXV0byogc3Rh
cnRPZkRhdGEgPSBtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0X3QpOwotICAgICAgICBhdXRv
IGRlY29kZWRJdGVtSGFuZGxlID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRh
TGVuZ3RoLCBpdGVtVHlwZSwgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAgICAgIGlmIChV
TkxJS0VMWSghZGVjb2RlZEl0ZW1IYW5kbGUpKQotICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFs
c2U7CisgICAgYXV0byBzdWNjZXNzID0gc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVt
IH0sIGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHN1Y2Nlc3MsIHN1Y2Nlc3MpOwogCi0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW1bMF0g
PSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7Ci0gICAgICAgIG1fY3VycmVudEl0ZW1T
aXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2Yo
YWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwotICAgIH0KKyAgICByZXR1cm4ge3sgeyBt
X2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0sIFdURk1vdmUoY3VycmVudEV4dGVudCksIGN1cnJlbnRJ
dGVtSW5mby0+c2l6ZUluQnVmZmVyIH19OwogfQogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6YWR2YW5jZSgpCit2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCiB7
Ci0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIWF0RW5kKCkp
OworICAgIEFTU0VSVChtX2N1cnJlbnRJdGVtSW5mbyk7CisKKyAgICBpZiAobV9jdXJyZW50SXRl
bUluZm8tPmlzRHJhd2luZ0l0ZW0pCisgICAgICAgICsrbV9kcmF3aW5nSXRlbUluZGV4OwogCi0g
ICAgbV9jdXJzb3IgKz0gbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlcjsKKyAgICBtX2N1cnNvciAr
PSBtX2N1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyOwogCi0gICAgaWYgKG1fY3Vyc29yID09
IG1fY3VycmVudEVuZE9mQnVmZmVyICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZm
ZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7CisgICAgaWYgKG1fY3Vyc29yID09IGVu
ZE9mQ3VycmVudEJ1ZmZlcigpICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZmZXIo
KS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7CiAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJ
bmRleCsrOwogICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwogICAg
IH0KIAotICAgIHVwZGF0ZUN1cnJlbnRJdGVtKCk7CisgICAgbV9jdXJyZW50SXRlbUluZm8gPSB7
IH07CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKCkK
K2lubGluZSBhdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0oKSBjb25zdCAt
PiBPcHRpb25hbDxDdXJyZW50SXRlbVJlc3VsdD4KIHsKLSAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1
ZmZlcigpOwotICAgIGlmIChpdGVtcyAmJiBpdGVtcy0+bV9yZWFkaW5nQ2xpZW50ICYmIG1fY3Vy
cmVudEJ1ZmZlckZvckl0ZW0pIHsKLSAgICAgICAgaWYgKExJS0VMWShtX2lzVmFsaWQpKQotICAg
ICAgICAgICAgSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfS5kZXN0cm95KCk7
CisgICAgdXNpbmcgU2VxdWVuY2UgPSBicmlnYW5kOjptYWtlX3NlcXVlbmNlPGJyaWdhbmQ6OnB0
cmRpZmZfdDwwPiwgV1RGOjp2YXJpYW50X3NpemU8RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+Owog
Ci0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICE9IG1fZml4ZWRC
dWZmZXJGb3JDdXJyZW50SXRlbSkpCi0gICAgICAgICAgICBmYXN0RnJlZShtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtKTsKLSAgICB9CisgICAgT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1bHQ+IHJlc3Vs
dDsKKyAgICBicmlnYW5kOjpmb3JfZWFjaDxTZXF1ZW5jZT4oWyZdKGF1dG8mJiB0eXBlKSB7Cisg
ICAgICAgIHVzaW5nIEkgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0
eXBlKHR5cGUpPjo6dHlwZTo6dHlwZTsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlw
ZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEk6OnZhbHVlLCBEaXNwbGF5TGlzdEl0ZW0+
OwogCi0gICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDA7Ci0gICAgbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSA9IG51bGxwdHI7Ci19CisgICAgICAgIGNvbnN0IGF1dG8qIGVuZE9mQ3VycmVu
dEJ1ZmZlciA9IHRoaXMtPmVuZE9mQ3VycmVudEJ1ZmZlcigpOwogCi12b2lkIERpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6bW92ZVRvRW5kKCkKLXsKLSAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZm
ZXIoKSkgewotICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEg
KyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZC
dWZmZXIgPSBtX2N1cnNvcjsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMt
Pm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICB9CisgICAgICAgIGlmIChtX2N1cnNvciAr
IDEgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
YXV0byBpdGVtVHlwZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAg
ICAgIGlmIChpdGVtVHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiBjb25zdGV4cHIgKERpc3BsYXlMaXN0SXRlbVR5
cGU6OmlzSW5saW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKG1fY3Vyc29yICsgcGFkZGVkU2l6
ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzPERpc3BsYXlMaXN0SXRlbVR5cGU+KCkgPiBlbmRPZkN1cnJl
bnRCdWZmZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY29uc3QgYXV0
byYgaXRlbSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IERpc3BsYXlMaXN0SXRlbVR5cGUqPiht
X2N1cnNvciArIHNpemVvZih1aW50NjRfdCkpOworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGl0
ZW0pKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGN1
cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRp
cGxlT2YoYWxpZ25vZih1aW50NjRfdCksIHNpemVvZihEaXNwbGF5TGlzdEl0ZW1UeXBlKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoIXJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSB7eyBpdGVt
LCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3aW5n
SXRlbSB9fTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8q
IGNsaWVudCA9IGl0ZW1CdWZmZXIoKS0+bV9yZWFkaW5nQ2xpZW50OworICAgICAgICBpZiAoIWNs
aWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9jdXJzb3IgKyAyICog
c2l6ZW9mKHVpbnQ2NF90KSA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90
Kj4obV9jdXJzb3IpWzFdOworICAgICAgICBjb25zdCBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vy
c29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7CisgICAgICAgIGlmIChzdGFydE9mRGF0YSArIGRh
dGFMZW5ndGggPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byBpdGVtID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVu
Z3RoLCBpdGVtVHlwZSk7CisgICAgICAgIGlmICghaXRlbSB8fCAhaXNWYWxpZChpdGVtLnZhbHVl
KCkpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGQ6OnNpemVfdCBjdXJyZW50SXRl
bVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVP
ZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIEFTU0VSVCghcmVzdWx0
KTsKKyAgICAgICAgcmVzdWx0ID0ge3sgV1RGTW92ZShpdGVtLnZhbHVlKCkpLCBjdXJyZW50SXRl
bVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9fTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKQpAQCAtMTQzLDEyICsxNzMsMjYg
QEAgdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50
QnVmZmVyKCkKICAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25s
eUJ1ZmZlcnMpIHsKICAgICAgICAgYXV0byYgbmV4dEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3Jl
YWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOwogICAgICAgICBtX2N1cnNvciA9
IG5leHRCdWZmZXJIYW5kbGUuZGF0YTsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBt
X2N1cnNvciArIG5leHRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7Ci0gICAgfSBlbHNlIGlmIChtX3Jl
YWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVh
ZE9ubHlCdWZmZXJzKTsKICAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZl
ci5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsgaXRlbXMt
Pm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CiAgICAgfQogfQogCit1aW50OF90KiBEaXNwbGF5TGlz
dDo6SXRlcmF0b3I6OmVuZE9mQ3VycmVudEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgYXV0byBpdGVt
cyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBBU1NFUlQoaXRlbXMpOworCisgICAgYXV0byBudW1iZXJP
ZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAg
aWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7Cisg
ICAgICAgIGF1dG8mIGN1cnJlbnRCdWZmZXJIYW5kbGUgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZl
cnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRCdWZmZXJI
YW5kbGUuZGF0YSArIGN1cnJlbnRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7CisgICAgfQorCisgICAg
QVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyk7
CisgICAgcmV0dXJuIGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0
dGVuTnVtYmVyT2ZCeXRlczsKK30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZXJhdG9yLmgKaW5kZXggMGNiZjVmMzY5NTc1OGIyMWEzNjdjN2Q5ODM2MGJjMTJmM2E2MGIxYy4u
MzI3NDRhNTFhZmM3OGU1MmU4MTFkYmIwYmM2NTAyNDQyODg1MjRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0zNCwyNSArMzQsMTIgQEAgbmFtZXNwYWNlIERp
c3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBJbW1lZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKLSAgICBJdGVyYXRv
cihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5kIGlt
bWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKQotICAgICAgICA6
IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgewotICAgICAgICBpZiAoaW1tZWRpYXRl
bHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykKLSAgICAgICAgICAgIG1v
dmVUb0VuZCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0
T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgICAgICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgfkl0ZXJhdG9yKCkKLSAgICB7Ci0gICAgICAgIGNsZWFyQ3Vy
cmVudEl0ZW0oKTsKLSAgICB9CisgICAgSXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmLCBJbW1l
ZGlhdGVseU1vdmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObyk7CisgICAgV0VCQ09S
RV9FWFBPUlQgfkl0ZXJhdG9yKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0
b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlz
dCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNvcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAg
dm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNlKCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG9wZXJhdG9yKysoKTsKIAogICAgIHN0cnVjdCBWYWx1ZSB7CiAgICAgICAgIEl0ZW1IYW5kbGUg
aXRlbTsKQEAgLTYwLDQ0ICs0Nyw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBpdGVtU2l6
ZUluQnVmZmVyIHsgMCB9OwogICAgIH07CiAKLSAgICBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3Iq
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIHt7Ci0gICAgICAgICAgICBJdGVtSGFu
ZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LAotICAgICAgICAgICAgbV9jdXJyZW50RXh0
ZW50LAotICAgICAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwKLSAgICAgICAgfX07
Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBj
b25zdDsKIAogcHJpdmF0ZToKKyAgICAvLyBUaGVzZSBhcmUgdGVtcG9yYXJ5LCBhbmQgd2lsbCBi
ZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1
NjAuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJy
ZW50SXRlbSA9IDI1NjsKKyAgICB2b2lkIGNsZWFyQ3VycmVudEl0ZW0oKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUb0VuZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xlYXJDdXJyZW50SXRlbSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ3VycmVu
dEl0ZW0oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsKKyAgICBzdHJ1Y3Qg
Q3VycmVudEl0ZW1SZXN1bHQgeworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gZGlzcGxheUxpc3RJ
dGVtOworICAgICAgICBzdGQ6OnNpemVfdCBzaXplSW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNE
cmF3aW5nSXRlbTsKKyAgICB9OworICAgIE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PiBjdXJy
ZW50SXRlbSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBFeHRlbnRVcGRhdGVSZXN1bHQgOiBi
b29sIHsgRmFpbHVyZSwgU3VjY2VzcyB9OwotICAgIEV4dGVudFVwZGF0ZVJlc3VsdCB1cGRhdGVD
dXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQoSXRlbVR5cGUpOworICAgIHZvaWQgbW92ZUN1cnNvclRv
U3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKKyAgICB1aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIo
KSBjb25zdDsKIAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0Owor
I2VuZGlmCiAKICAgICBJdGVtQnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlzdHMoKTsgfQogCisgICAgLy8gVGhlc2UgYXJlIHRl
bXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgorICAgIG11dGFibGUgdWludDhfdCBtX2ZpeGVkQnVmZmVy
Rm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbV0geyAwIH07Cisg
ICAgbXV0YWJsZSB1aW50OF90KiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9Owor
CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CisgICAgc3RydWN0IEN1cnJl
bnRJdGVtSW5mbyB7CisgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ1ZmZlcjsKKyAgICAgICAg
Ym9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07CisgICAgbXV0YWJsZSBPcHRpb25hbDxDdXJyZW50
SXRlbUluZm8+IG1fY3VycmVudEl0ZW1JbmZvOwogICAgIHVpbnQ4X3QqIG1fY3Vyc29yIHsgbnVs
bHB0ciB9OwogICAgIHNpemVfdCBtX3JlYWRPbmx5QnVmZmVySW5kZXggeyAwIH07CiAgICAgc2l6
ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7IDAgfTsKLSAgICB1aW50OF90KiBtX2N1cnJlbnRFbmRP
ZkJ1ZmZlciB7IG51bGxwdHIgfTsKLQotICAgIHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJl
bnRJdGVtW3NpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1dIHsgMCB9OwotICAgIHVpbnQ4
X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07Ci0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7Ci0gICAgc2l6ZV90IG1fY3VycmVudEl0ZW1TaXplSW5C
dWZmZXIgeyAwIH07Ci0gICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5N
ZW1vcnlEaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKaW5kZXggNzA3ODE4YjBlNzlkNWEw
Mzg1YzAyYjdjNTllNWMzMWE2ODc0NmIzMS4uMzQyYjE3YmU3MTEyZjE5YzI5MWM2OWRhMjU4Mzdl
NjgzMWUwNmNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcApA
QCAtNDEsMTUgKzQxLDEyIEBAIHZvaWQgSW5NZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGluZ0NsaWVu
dDo6ZW5jb2RlSXRlbUlubGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mCiAgICAgc2FmZUNvcHko
eyBsb2NhdGlvbiB9LCBkaXNwbGF5TGlzdEl0ZW0pOwogfQogCi1PcHRpb25hbDxJdGVtSGFuZGxl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gSW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudDo6
ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5
cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCitPcHRpb25hbDxEaXNwbGF5TGlzdEl0
ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBJbk1lbW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50
OjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVt
VHlwZSB0eXBlKQogewogICAgIGNvbnN0IEl0ZW1IYW5kbGUgZGF0YUhhbmRsZSB7IGNvbnN0X2Nh
c3Q8dWludDhfdCo+KGRhdGEpIH07CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBkYXRhSGFuZGxl
LnR5cGUoKSA9PSB0eXBlKTsKICAgICBBU1NFUlRfVU5VU0VEKGRhdGFMZW5ndGgsIGRhdGFMZW5n
dGggPj0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGRhdGFIYW5kbGUudHlwZSgpKSk7
Ci0gICAgSXRlbUhhbmRsZSByZXN1bHQgeyBoYW5kbGVMb2NhdGlvbiB9OwotICAgIGlmIChkYXRh
SGFuZGxlLnNhZmVDb3B5KHJlc3VsdCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc2FmZUNvcHkoZGF0YUhhbmRsZSk7CiB9CiAK
IEluTWVtb3J5RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3QoKQpAQCAtNjIsNyArNTks
NiBAQCBJbk1lbW9yeURpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0KCkKIAogSW5NZW1v
cnlEaXNwbGF5TGlzdDo6fkluTWVtb3J5RGlzcGxheUxpc3QoKQogewotICAgIGF1dG8gZW5kID0g
dGhpcy0+ZW5kKCk7CiAgICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7CiAg
ICAgICAgIGF1dG8gaXRlbSA9IGRpc3BsYXlMaXN0SXRlbS0+aXRlbTsKICAgICAgICAgQVNTRVJU
KGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKaW5kZXggMWNjMDhh
ZmFiZmYyZGE1N2MxYzJkMThkODk2ZmRjZjk1ZGNhYTNkMS4uZTdiOGYxOGY0OTQ3YmMzODBjMjUw
YmVmYzM0NDg5NzE0ODJiY2NmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlz
dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBXRUJDT1JFX0VYUE9SVCBS
ZWFkaW5nQ2xpZW50IDogcHVibGljIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKICAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8
SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCos
IHNpemVfdCwgSXRlbVR5cGUsIHVpbnQ4X3QqKSBmaW5hbDsKKyAgICAgICAgT3B0aW9uYWw8RGlz
cGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90
Kiwgc2l6ZV90LCBJdGVtVHlwZSkgZmluYWw7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAppbmRleCA4ZDk2NGYyYmRhMTYzOTlmZmM1OTg1OTA4YjNiYTIyM2U4NDk4
ZmQwLi45M2UxZWE1MTE5MmE1NGRkMmY5YWRlNmFhNGEyNGRiNTk5NjQyNDIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlIDx3dGYvQnJpZ2FuZC5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2lu
Zy5oPgpAQCAtNDg4LDEwNiArNDg5LDI3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CCiAgICAg
ICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtl
dXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCi1PcHRpb25hbDxEaXNwbGF5
TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQotewotICAgIC8q
IFRoaXMgbmVlZHMgdG8gbWF0Y2ggKDEpIGlzSW5saW5lSXRlbSgpIGluIERpc3BsYXlMaXN0SXRl
bVR5cGUuY3BwLCAoMikgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZW5jb2RlSXRlbSgpLAotICAg
ICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSJz
IGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVtIGNsYXNzZXMuCi0gICAgICogU2VlIHRoZSBjb21t
ZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aHkuICovCi0KLSAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRv
UGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91
dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4o
ZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0
ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1JlY3RzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlz
cGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24p
OwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29t
cG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OkZpbGxDb21wb3NpdGVkUmVjdD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVM
b2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENv
bG9yOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVj
dFdpdGhDb2xvcj4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4g
ZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oZGF0YSwgbGVuZ3RoLCBoYW5k
bGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVk
UmVjdDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJv
dW5kZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5k
Q3JlYXRlPERpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9j
YXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0TGluZURhc2g+KGRh
dGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6U2V0U3RhdGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5k
Q3JlYXRlPERpc3BsYXlMaXN0OjpTdHJva2VQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0
aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5
RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tl
UGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRy
YW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJl
Y3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9J
bWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0
ZW5hdGVDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9j
dW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNl
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
UmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5
ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
aWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
aWxsUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Rmx1c2hDb250ZXh0Ogot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0
aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21t
YW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSNlbmRpZgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNhdmU6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNjYWxlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElu
bGluZUZpbGxDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5l
RmlsbEdyYWRpZW50OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVT
dHJva2VDb2xvcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUNhcDoK
LSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkdldElt
YWdlRGF0YTogewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworT3B0aW9uYWw8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gV0FSTl9V
TlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIGl0ZW1UeXBl
KQoreworICAgIHVzaW5nIFNlcXVlbmNlID0gYnJpZ2FuZDo6bWFrZV9zZXF1ZW5jZTxicmlnYW5k
OjpwdHJkaWZmX3Q8MD4sIFdURjo6dmFyaWFudF9zaXplPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dEl0ZW0+Ojp2YWx1ZT47CisKKyAgICBPcHRpb25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJ
dGVtPiByZXN1bHQ7CisgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8U2VxdWVuY2U+KFsmXShhdXRvJiYg
dHlwZSkgeworICAgICAgICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFuZFJlZmVy
ZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6OnR5cGU7CisgICAgICAgIHVzaW5nIERpc3BsYXlM
aXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJOjp2YWx1ZSwgRGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT47CisKKyAgICAgICAgaWYgKGl0ZW1UeXBlICE9IERpc3Bs
YXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IEFTU0VSVCghRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKTsKKyAgICAgICAgaWYg
Y29uc3RleHByICghRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gPSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmds
ZU9iamVjdDxEaXNwbGF5TGlzdEl0ZW1UeXBlPihkYXRhLCBsZW5ndGgpKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFyZXN1bHQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHsgV1RGTW92
ZShkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKSkgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6dXBkYXRlUmVuZGVyaW5nUmVzb3VyY2VSZXF1ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CmluZGV4IDc0OGM0YTJkMzQ1ODNhN2VhOWRiYTcxODI0MDQyYjFiYjI0ZWY4ZWUuLjM2MDY0ZjFl
ZDE1OWQ4NGRlMmU3N2RjZDc2ZTFmOTQyOGMwN2E1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApA
QCAtOTIsMTkgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlk
ZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRp
b24pCi0gICAgewotICAgICAgICBpZiAoYXV0byBpdGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVT
aW5nbGVPYmplY3Q8VD4oZGF0YSwgbGVuZ3RoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdl
YktpdDIgc2hvdWxkIG5vdCBuZWVkIHRvIGtub3cgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhdCB0
aGUgaGFuZGxlIGFyZSByZXNlcnZlZCBmb3IgdGhlIHR5cGUuCi0gICAgICAgICAgICAvLyBOZWVk
IHRvIGZpZ3VyZSBvdXQgYSB3YXkgdG8ga2VlcCB0aGlzIGtub3dsZWRnZSB3aXRoaW4gZGlzcGxh
eSBsaXN0IGNvZGUgaW4gV2ViQ29yZS4KLSAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24g
KyBzaXplb2YodWludDY0X3QpKSBUKFdURk1vdmUoKml0ZW0pKTsKLSAgICAgICAgICAgIHJldHVy
biB7eyBoYW5kbGVMb2NhdGlvbiB9fTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgIH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUpIG92ZXJy
aWRlOwogCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJlc3VsdCBzdWJtaXQoY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGRlc3RpbmF0aW9uKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG5leHRE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGUmLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNw
cAppbmRleCBiYzdhODQ5YWQ3NGU0YTY0MzU4ODE5NDc4ZmU0MzgzNTcxZTg3NTJhLi41Y2JmZDJk
NDQ0YjNhODdjMTU5ZDA0YWJkMmIxYmU4MWM5ZjQ4MWFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0xNzcs
MTIgKzE3NywxMSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmluYWwK
KyAgICAgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVj
b2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUg
dHlwZSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1U
eXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXpl
b2Yoc2l6ZV90KSk7Ci0gICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9mKHVp
bnQ2NF90KSkgU3Ryb2tlUGF0aChtX2l0ZW1zWypyZWludGVycHJldF9jYXN0PGNvbnN0IHNpemVf
dCo+KGRhdGEpXSk7Ci0gICAgICAgICAgICByZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07Cisg
ICAgICAgICAgICByZXR1cm4gRGlzcGxheUxpc3RJdGVtKFN0cm9rZVBhdGgobV9pdGVtc1sqcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGNvbnN0IFZlY3RvcjxTdHJva2VQYXRoPiYgbV9pdGVtczsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHAKaW5kZXggNDFhYzM5ZTUzNmQ4ODc2ZWI2ZGZlYmYyMzNiOTY2MzVjMTQwODkwMC4uMmI2NTli
NmY3YjJlZDZlOGUzMTgwMTFkODc5YjA0NTlhNmVhYmMzZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGdsb2JhbEJ1
ZmZlcklkZW50aWZpZXIgPSBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXIKIAogY2xhc3MgUmVh
ZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBwcml2YXRlOgot
ICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqKSBmaW5hbAorICAg
IE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0o
Y29uc3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKICAgICB7CiAgICAg
ICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6RmlsbFBhdGgpOwogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0Owo=
</data>
<flag name="commit-queue"
          id="448953"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428128</attachid>
            <date>2021-05-09 03:55:54 -0700</date>
            <delta_ts>2021-05-09 10:00:29 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20200</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGZjMzQyYTMwOTI5OTFiYTk1NGY0MjQ0ZTAxNGQ4OGI5MDYxOTg0NTUKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MDI6MzU6NDggMjAyMSAtMDcwMAoKICAgIFBhcnQgOAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmY0YmQwZTEx
YjIuLmY4MTY4ZGUwMTFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA4OiBSZXBsYWNl
IHRoZSBndXRzIG9mIERpc3BsYXlMaXN0OjpJdGVyYXRvciB3aXRob3V0IGFmZmVjdGluZyBpdHMg
cHVibGljIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBhIGhhbGYtc3RlcCB0b3dhcmQgYSB3b3JsZCB3aGVyZSBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIHJldHVybnMgYSBEaXNwbGF5TGlzdEl0ZW0gaW5z
dGVhZCBvZiBhbiBJdGVtSGFuZGxlLgorICAgICAgICBJdCBkb2VzIHRoaXMgYnkgc3dhcHBpbmcg
b3V0IHRoZSBndXRzIG9mIERpc3BsYXlsaXN0OjpJdGVyYXRvciBzbyB0aGF0IGl0IGNyZWF0ZXMg
YSBEaXNwbGF5TGlzdEl0ZW0sIGJ1dCB0aGVuIGl0IGNvbnZlcnRzIHRoZQorICAgICAgICBEaXNw
bGF5TGlzdEl0ZW0gdG8gYW4gSXRlbUhhbmRsZSBhdCB0aGUgbGFzdCBzZWNvbmQgaW4gb3JkZXIg
dG8gcHJlc2VydmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yJ3MgQVBJIHNpZ25hdHVyZXMuIFRoaXMg
d2F5LCB3ZSBjYW4KKyAgICAgICAgc3BsaXQgdGhlIHVwZGF0ZSBvZiB0aGUgaW1wbGVtZW50YXRp
b24gb2YgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIGludG8gYSBzZXBhcmF0ZSBwYXRjaCBmcm9tIHVw
ZGF0aW5nIGFsbCB0aGUgY2FsbGVycyB0byB0aGUgbmV3CisgICAgICAgIHNpZ25hdHVyZS4KKwor
ICAgICAgICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQs
IGJlY2F1c2UgRGlzcGxheUxpc3RJdGVtcyBhcmUgc2ltcGxlciB0aGFuIEl0ZW1IYW5kbGVzLiBC
ZWNhdXNlIGFsbCB0aGUgdXNlcnMgb2YKKyAgICAgICAgdGhlIGl0ZXJhdG9yIHVzZSBpdCBpbiBh
IGZvcmVhY2ggbG9vcCwgd2UgY2FuIGV4cGVjdCB0aGF0IGFsbCB1c2VycyB3aWxsIHBpbmctcG9u
ZyBiZXR3ZWVuIG9wZXJhdG9yKigpIGFuZCBvcGVyYXRvcisrKCkuIFRoaXMgbWVhbnMKKyAgICAg
ICAgdGhhdCBvcGVyYXRvciooKSBjYW4gY29tcHV0ZSBhIEN1cnJlbnRJdGVtSW5mbywgd2hpY2gg
aW5jbHVkZXMgdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUg
ZGlzcGxheSBsaXN0IHNobWVtLAorICAgICAgICBzbyB0aGF0IHRoZSBpdGVyYXRvciBjYW4gcmV0
YWluIHRoYXQgaW5mb3JtYXRpb24sIGFuZCB0aGUgbmV4dCBjYWxsIHRvIG9wZXJhdG9yKysoKSBj
YW4ganVzdCB1c2UgaXQgdG8ga25vdyBob3cgbXVjaCB0byBpbmNyZW1lbnQgYnkuCisgICAgICAg
IFNvLCB0aGVyZSdzIGEgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB3aGljaCBpcyBjb25zdCBhbmQg
cmV0dXJucyBhIEN1cnJlbnRJdGVtUmVzdWx0LCBhbmQgaXQncyBvcGVyYXRvciooKSdzIGpvYiB0
byBjYWxsIGl0IGFuZCByZWNvcmQKKyAgICAgICAgdGhlIHJlbGV2YW50IGluZm8gZm9yIG9wZXJh
dG9yKysoKS4KKworICAgICAgICBUaGUgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB1c2VzIGJyaWdh
bmQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LCBhbmQgY29tcGFyZXMgdGhhdCB0eXBlJ3MKKyAgICAgICAgaXRlbVR5cGUgdG8gdGhl
IGZpcnN0IHNlcmlhbGl6ZWQgYnl0ZSBpbiB0aGUgc2htZW0uIElmIGl0IG1hdGNoZXMsIHdlIHRy
eSB0byBwYXJzZSBpdCBhY2NvcmRpbmcgdG8gdGhlIHJlbGV2YW50IHNlcmlhbGl6YXRpb24gcnVs
ZXMsCisgICAgICAgIGFuZCBpZiBpdCBkb2Vzbid0IG1hdGNoLCBicmlnYW5kIHdpbGwganVzdCBj
b250aW51ZSBsb29waW5nIHRvIHRoZSBuZXh0IHR5cGUgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmlzVmFsaWQpOiBEZWxldGVkLiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKTogTW92ZWQgZnJvbSBEaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6
b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRv
U3RhcnRPZkN1cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJl
bnREcmF3aW5nSXRlbUV4dGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjph
ZHZhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9y
KyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMS0wNS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJv
Y2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNjogTWlncmF0ZSBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50Jgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA5ZDRiMjI5
NDBhMmQuLmMyZjE4MTI0OWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKQEAgLTQzOSwyMSArNDM5LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95
KCkKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGlu
ZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlw
ZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJ
c1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQotewotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3Qg
SXRlbSYgaXRlbSkKLXsKLSAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Ci19Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIEl0ZW0+CiBzdGF0aWMgaW5saW5lIGJvb2wgY29weUludG8odWludDhfdCogZGVz
dGluYXRpb25XaXRoT2Zmc2V0LCBjb25zdCBJdGVtJiBpdGVtKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKaW5kZXggMWViODE1NmQxNjYzLi43ODMyOTkyNTMyZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjM1Niw5ICsyMzU2LDMxIEBAIHVzaW5nIERp
c3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQKICNlbmRpZgogPjsKIAotc2l6ZV90IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKK3RlbXBsYXRlPHR5
cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlk
ID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFz
SXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlk
KCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlk
KGNvbnN0IEl0ZW0mKQoreworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFs
aWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRlbSYgaXRlbSkKK3sKKyAgICByZXR1cm4g
aXRlbS5pc1ZhbGlkKCk7Cit9CisKIEl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3Qg
RGlzcGxheUxpc3RJdGVtJik7CiAKK3NpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY29u
c3RleHByIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoKQoreworICAgIHJl
dHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2
NF90KSwgc2l6ZW9mKFQpKTsKK30KKwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgSXRlbUhhbmRsZSk7CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKaW5kZXggZWFlYTM0ODE2ZGI4Li43YWNkMjUy
YjJkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTI5
LDExMCArMjksMTM4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxp
c3QgewogCi1ib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAorRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kKQorICAgIDogbV9kaXNw
bGF5TGlzdChkaXNwbGF5TGlzdCkKIHsKLSAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkg
fHwgIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGltbWVkaWF0ZWx5
TW92ZVRvRW5kID09IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1
dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCkpIHsKKyAgICAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJ
bmRleCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAgICAgICAgICBtX2N1
cnNvciA9IGVuZE9mQ3VycmVudEJ1ZmZlcigpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAg
ICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Cit9CiAKLSAgICBhdXRvJiBp
dGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy5tX3dyaXRh
YmxlQnVmZmVyLmRhdGEgKyBpdGVtcy5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOwotICAgIHJldHVy
biBtX2N1cnNvciA9PSBlbmRDdXJzb3I7CitEaXNwbGF5TGlzdDo6SXRlcmF0b3I6On5JdGVyYXRv
cigpCit7CisgICAgY2xlYXJDdXJyZW50SXRlbSgpOwogfQogCi1hdXRvIERpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6dXBkYXRlQ3VycmVudERyYXdpbmdJdGVtRXh0ZW50KEl0ZW1UeXBlIGl0ZW1UeXBl
KSAtPiBFeHRlbnRVcGRhdGVSZXN1bHQKKyNpZiBBU1NFUlRfRU5BQkxFRAorYm9vbCBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICBhdXRvJiBleHRlbnRzID0gbV9k
aXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50czsKLSAgICBpZiAoZXh0ZW50cy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CisgICAgaWYg
KG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
ICghaXNEcmF3aW5nSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50ID0g
V1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gRXh0ZW50VXBkYXRlUmVzdWx0OjpTdWNjZXNz
OwotICAgIH0KKyAgICBjb25zdCBhdXRvKiBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBpZiAo
IWl0ZW1zKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2RyYXdpbmdJdGVtSW5k
ZXggPj0gZXh0ZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6
OkZhaWx1cmU7CisgICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5k
YXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CisgICAgcmV0dXJuIG1fY3Vyc29y
ID09IGVuZEN1cnNvcjsKK30KKyNlbmRpZgogCi0gICAgbV9jdXJyZW50RXh0ZW50ID0gZXh0ZW50
c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwotICAgIG1fZHJhd2luZ0l0ZW1JbmRleCsrOwotICAgIHJl
dHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CisvLyBUaGlzIGlzIHRlbXBvcmFyeSwg
YW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIzNTYwLgordm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0
ZW0oKQoreworICAgIGlmIChtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICYmIG1fY3VycmVudEJ1ZmZl
ckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtKQorICAgICAgICBmYXN0RnJl
ZShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKK2F1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVy
YXRvciooKSBjb25zdCAtPiBPcHRpb25hbDxWYWx1ZT4KIHsKLSAgICBjbGVhckN1cnJlbnRJdGVt
KCk7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBBU1NFUlQoIW1fY3VycmVudEl0ZW1JbmZv
KTsKIAotICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1cm47CisgICAgYXV0byBjdXJyZW50
SXRlbUluZm8gPSBjdXJyZW50SXRlbSgpOworICAgIGlmICghY3VycmVudEl0ZW1JbmZvKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZl
cigpOwotICAgIGF1dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3Jb
MF0pOworICAgIG1fY3VycmVudEl0ZW1JbmZvID0ge3sgY3VycmVudEl0ZW1JbmZvLT5zaXplSW5C
dWZmZXIsIGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSB9fTsKIAotICAgIGlmICh1cGRh
dGVDdXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQoaXRlbVR5cGUpID09IEV4dGVudFVwZGF0ZVJlc3Vs
dDo6RmFpbHVyZSkgewotICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGN1cnJlbnRFeHRlbnQ7CisgICAgaWYg
KGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSAmJiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdp
bmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIGN1cnJlbnRFeHRlbnQgPSBtX2Rpc3Bs
YXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07CiAKLSAgICBh
dXRvIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5
dGVzKGl0ZW1UeXBlKTsKKyAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVt
b3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgor
ICAgIGNvbnN0X2Nhc3Q8SXRlcmF0b3IqPih0aGlzKS0+Y2xlYXJDdXJyZW50SXRlbSgpOworICAg
IGF1dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUlu
Qnl0ZXMoZGlzcGxheUxpc3RJdGVtVHlwZShjdXJyZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRl
bSkpOwogICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRl
bSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1
cnJlbnRJdGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbSkpOwotICAgIGlmIChpc0lubGluZUl0ZW0oaXRlbVR5cGUpKSB7Ci0g
ICAgICAgIGlmIChVTkxJS0VMWSghSXRlbUhhbmRsZSB7IG1fY3Vyc29yIH0uc2FmZUNvcHkoeyBt
X2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pKSkKLSAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNl
OwotCi0gICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvKiBjbGllbnQgPSBpdGVtcy5tX3Jl
YWRpbmdDbGllbnQ7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGNsaWVudCk7Ci0gICAgICAgIGF1
dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07
Ci0gICAgICAgIGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2
NF90KTsKLSAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvIGRlY29k
ZWRJdGVtID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVt
VHlwZSkpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgY29weSBvcGVyYXRpb24gaXMgdGVtcG9yYXJ5
LCBhbmQgd2lsbCBiZSByZW1vdmVkIGFzIGEgcGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotICAgICAgICAgICAgbV9pc1ZhbGlkID0gc2FmZUNv
cHkoSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwgZGVjb2RlZEl0ZW0udmFs
dWUoKSk7Ci0gICAgICAgIH0KKyAgICBhdXRvIHN1Y2Nlc3MgPSBzYWZlQ29weSh7IG1fY3VycmVu
dEJ1ZmZlckZvckl0ZW0gfSwgY3VycmVudEl0ZW1JbmZvLT5kaXNwbGF5TGlzdEl0ZW0pOworICAg
IEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKLSAgICAgICAgbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAgICAgICAg
bV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRV
cFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7Ci0gICAgfQorICAg
IHJldHVybiB7eyB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwgV1RGTW92ZShjdXJyZW50RXh0
ZW50KSwgY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXIgfX07CiB9CiAKLXZvaWQgRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjphZHZhbmNlKCkKK3ZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpv
cGVyYXRvcisrKCkKIHsKLSAgICBpZiAoYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEFT
U0VSVCghYXRFbmQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEl0ZW1JbmZvKTsKKworICAgIGlm
IChtX2N1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSkKKyAgICAgICAgKyttX2RyYXdpbmdJ
dGVtSW5kZXg7CiAKLSAgICBtX2N1cnNvciArPSBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyOwor
ICAgIG1fY3Vyc29yICs9IG1fY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXI7CiAKLSAgICBp
ZiAobV9jdXJzb3IgPT0gbV9jdXJyZW50RW5kT2ZCdWZmZXIgJiYgbV9yZWFkT25seUJ1ZmZlcklu
ZGV4IDwgaXRlbUJ1ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKKyAgICBpZiAo
bV9jdXJzb3IgPT0gZW5kT2ZDdXJyZW50QnVmZmVyKCkgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4
IDwgaXRlbUJ1ZmZlcigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKICAgICAgICAgbV9y
ZWFkT25seUJ1ZmZlckluZGV4Kys7CiAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50
QnVmZmVyKCk7CiAgICAgfQogCi0gICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKKyAgICBtX2N1cnJl
bnRJdGVtSW5mbyA9IHsgfTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmNsZWFy
Q3VycmVudEl0ZW0oKQoraW5saW5lIGF1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50
SXRlbSgpIGNvbnN0IC0+IE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PgogewotICAgIGF1dG8g
aXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAgaWYgKGl0ZW1zICYmIGl0ZW1zLT5tX3JlYWRpbmdD
bGllbnQgJiYgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSkgewotICAgICAgICBpZiAoTElLRUxZKG1f
aXNWYWxpZCkpCi0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRl
bSB9LmRlc3Ryb3koKTsKKyAgICB1c2luZyBTZXF1ZW5jZSA9IGJyaWdhbmQ6Om1ha2Vfc2VxdWVu
Y2U8YnJpZ2FuZDo6cHRyZGlmZl90PDA+LCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNwbGF5TGlzdEl0
ZW0+Ojp2YWx1ZT47CisKKyAgICBPcHRpb25hbDxDdXJyZW50SXRlbVJlc3VsdD4gcmVzdWx0Owor
ICAgIGJyaWdhbmQ6OmZvcl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0byYmIHR5cGUpIHsKKyAgICAg
ICAgdXNpbmcgSSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUo
dHlwZSk+Ojp0eXBlOjp0eXBlOworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0g
V1RGOjp2YXJpYW50X2FsdGVybmF0aXZlX3Q8STo6dmFsdWUsIERpc3BsYXlMaXN0SXRlbT47CisK
KyAgICAgICAgY29uc3QgYXV0byogZW5kT2ZDdXJyZW50QnVmZmVyID0gdGhpcy0+ZW5kT2ZDdXJy
ZW50QnVmZmVyKCk7CisKKyAgICAgICAgaWYgKG1fY3Vyc29yICsgMSA+IGVuZE9mQ3VycmVudEJ1
ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGl0ZW1UeXBlID0gc3Rh
dGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICAgICAgaWYgKGl0ZW1UeXBlICE9
IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIGNvbnN0ZXhwciAoRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKSB7
CisgICAgICAgICAgICBpZiAobV9jdXJzb3IgKyBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXM8RGlzcGxheUxpc3RJdGVtVHlwZT4oKSA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpdGVtID0gKnJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3RJdGVtVHlwZSo+KG1fY3Vyc29yICsgc2l6ZW9mKHVp
bnQ2NF90KSk7CisgICAgICAgICAgICBpZiAoIWlzVmFsaWQoaXRlbSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgc3RkOjpzaXplX3QgY3VycmVudEl0ZW1TaXplSW5CdWZm
ZXIgPSBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2
NF90KSwgc2l6ZW9mKERpc3BsYXlMaXN0SXRlbVR5cGUpKTsKKyAgICAgICAgICAgIEFTU0VSVCgh
cmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHt7IGl0ZW0sIGN1cnJlbnRJdGVtU2l6ZUlu
QnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVtIH19OworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtKSkKLSAgICAgICAgICAg
IGZhc3RGcmVlKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOwotICAgIH0KKyAgICAgICAgYXV0byog
Y2xpZW50ID0gaXRlbUJ1ZmZlcigpLT5tX3JlYWRpbmdDbGllbnQ7CisgICAgICAgIGlmICghY2xp
ZW50KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZl
ciA9IDA7Ci0gICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IG51bGxwdHI7Ci19CisgICAgICAg
IGlmIChtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0X3QpID4gZW5kT2ZDdXJyZW50QnVmZmVy
KQorICAgICAgICAgICAgcmV0dXJuOwogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92
ZVRvRW5kKCkKLXsKLSAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKSkgewotICAgICAg
ICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0
dGVuTnVtYmVyT2ZCeXRlczsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNv
cjsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZm
ZXJzLnNpemUoKTsKLSAgICB9CisgICAgICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07CisgICAgICAgIGNvbnN0IGF1dG8qIHN0YXJ0
T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KTsKKyAgICAgICAgaWYgKHN0
YXJ0T2ZEYXRhICsgZGF0YUxlbmd0aCA+IGVuZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBhdXRvIGl0ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRP
ZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBlKTsKKyAgICAgICAgaWYgKCFpdGVtIHx8ICFpc1Zh
bGlkKGl0ZW0udmFsdWUoKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0ZDo6c2l6
ZV90IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3Vu
ZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAg
QVNTRVJUKCFyZXN1bHQpOworICAgICAgICByZXN1bHQgPSB7eyBXVEZNb3ZlKGl0ZW0udmFsdWUo
KSksIGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdp
bmdJdGVtIH19OworICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCkBAIC0x
NDUsMTIgKzE3MywyNiBAQCB2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRv
U3RhcnRPZkN1cnJlbnRCdWZmZXIoKQogICAgIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBu
dW1iZXJPZlJlYWRPbmx5QnVmZmVycykgewogICAgICAgICBhdXRvJiBuZXh0QnVmZmVySGFuZGxl
ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21fcmVhZE9ubHlCdWZmZXJJbmRleF07CiAgICAg
ICAgIG1fY3Vyc29yID0gbmV4dEJ1ZmZlckhhbmRsZS5kYXRhOwotICAgICAgICBtX2N1cnJlbnRF
bmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsgbmV4dEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKLSAgICB9
IGVsc2UgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVy
cykgeworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX3JlYWRPbmx5QnVmZmVySW5kZXgg
PT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpOwogICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5t
X3dyaXRhYmxlQnVmZmVyLmRhdGE7Ci0gICAgICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9j
dXJzb3IgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKICAgICB9CiB9CiAKK3VpbnQ4
X3QqIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyKCkgY29uc3QKK3sK
KyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpOworICAgIEFTU0VSVChpdGVtcyk7CisKKyAg
ICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJzID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJz
LnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25s
eUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYgY3VycmVudEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5t
X3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOworICAgICAgICByZXR1cm4g
Y3VycmVudEJ1ZmZlckhhbmRsZS5kYXRhICsgY3VycmVudEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsK
KyAgICB9CisKKyAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVh
ZE9ubHlCdWZmZXJzKTsKKyAgICByZXR1cm4gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSAr
IGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzOworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRleCAwY2JmNWYzNjk1NzUuLmVkYTkzNzFlYWFmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0zNCwyNSArMzQsMTIg
QEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJbW1lZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMg
fTsKLSAgICBJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0
ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6
Ok5vKQotICAgICAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgewotICAgICAg
ICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykK
LSAgICAgICAgICAgIG1vdmVUb0VuZCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1v
dmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgICAgICB1cGRhdGVDdXJy
ZW50SXRlbSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgfkl0ZXJhdG9yKCkKLSAgICB7Ci0g
ICAgICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKLSAgICB9CisgICAgSXRlcmF0b3IoY29uc3QgRGlz
cGxheUxpc3QmLCBJbW1lZGlhdGVseU1vdmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpO
byk7CisgICAgfkl0ZXJhdG9yKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0
b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlz
dCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNvcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAg
dm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNlKCk7IH0KKyAgICB2b2lkIG9wZXJhdG9yKysoKTsK
IAogICAgIHN0cnVjdCBWYWx1ZSB7CiAgICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKQEAgLTYwLDQ0
ICs0Nyw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9
OwogICAgIH07CiAKLSAgICBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgcmV0dXJuIHt7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50
QnVmZmVyRm9ySXRlbSB9LAotICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAotICAgICAgICAg
ICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwKLSAgICAgICAgfX07Ci0gICAgfQorICAgIE9w
dGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICAvLyBUaGVz
ZSBhcmUgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKKyAgICB2b2lkIGNsZWFy
Q3VycmVudEl0ZW0oKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3Rh
cnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUb0VuZCgp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDdXJyZW50SXRlbSgpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFkdmFuY2UoKTsKKyAgICBzdHJ1Y3QgQ3VycmVudEl0ZW1SZXN1bHQgeworICAgICAgICBE
aXNwbGF5TGlzdEl0ZW0gZGlzcGxheUxpc3RJdGVtOworICAgICAgICBzdGQ6OnNpemVfdCBzaXpl
SW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNEcmF3aW5nSXRlbTsKKyAgICB9OworICAgIE9wdGlv
bmFsPEN1cnJlbnRJdGVtUmVzdWx0PiBjdXJyZW50SXRlbSgpIGNvbnN0OwogCi0gICAgZW51bSBj
bGFzcyBFeHRlbnRVcGRhdGVSZXN1bHQgOiBib29sIHsgRmFpbHVyZSwgU3VjY2VzcyB9OwotICAg
IEV4dGVudFVwZGF0ZVJlc3VsdCB1cGRhdGVDdXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQoSXRlbVR5
cGUpOworICAgIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKKyAgICB1
aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdDsKIAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2VuZGlmCiAKICAgICBJdGVtQnVmZmVyKiBpdGVt
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlzdHMo
KTsgfQogCisgICAgLy8gVGhlc2UgYXJlIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBi
eSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgorICAgIG11
dGFibGUgdWludDhfdCBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRCdWZm
ZXJGb3JDdXJyZW50SXRlbV0geyAwIH07CisgICAgbXV0YWJsZSB1aW50OF90KiBtX2N1cnJlbnRC
dWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9OworCiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlz
cGxheUxpc3Q7CisgICAgc3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7CisgICAgICAgIHN0ZDo6c2l6
ZV90IHNpemVJbkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07Cisg
ICAgbXV0YWJsZSBPcHRpb25hbDxDdXJyZW50SXRlbUluZm8+IG1fY3VycmVudEl0ZW1JbmZvOwog
ICAgIHVpbnQ4X3QqIG1fY3Vyc29yIHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX3JlYWRPbmx5
QnVmZmVySW5kZXggeyAwIH07CiAgICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7IDAgfTsK
LSAgICB1aW50OF90KiBtX2N1cnJlbnRFbmRPZkJ1ZmZlciB7IG51bGxwdHIgfTsKLQotICAgIHVp
bnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVyRm9yQ3Vy
cmVudEl0ZW1dIHsgMCB9OwotICAgIHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBu
dWxscHRyIH07Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7Ci0gICAg
c2l6ZV90IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgYm9vbCBtX2lzVmFs
aWQgeyB0cnVlIH07CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="448952"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428137</attachid>
            <date>2021-05-09 14:28:51 -0700</date>
            <delta_ts>2021-05-09 14:28:51 -0700</delta_ts>
            <desc>Updated patch for EWS</desc>
            <filename>bug-225579-20210509142850.patch</filename>
            <type>text/plain</type>
            <size>38291</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZmNGJkMGUxMWIyODZi
NTY1MWFlMTQ5M2UwZTBjZDBhNTViZmZkMy4uZjgxNjhkZTAxMWY5ZTEyNTIwNjJmMWExMmE1YzA1
YjY0NDhlN2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA4OiBSZXBsYWNlIHRoZSBn
dXRzIG9mIERpc3BsYXlMaXN0OjpJdGVyYXRvciB3aXRob3V0IGFmZmVjdGluZyBpdHMgcHVibGlj
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1
NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpcyBhIGhhbGYtc3RlcCB0b3dhcmQgYSB3b3JsZCB3aGVyZSBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6Om9wZXJhdG9yKigpIHJldHVybnMgYSBEaXNwbGF5TGlzdEl0ZW0gaW5zdGVhZCBv
ZiBhbiBJdGVtSGFuZGxlLgorICAgICAgICBJdCBkb2VzIHRoaXMgYnkgc3dhcHBpbmcgb3V0IHRo
ZSBndXRzIG9mIERpc3BsYXlsaXN0OjpJdGVyYXRvciBzbyB0aGF0IGl0IGNyZWF0ZXMgYSBEaXNw
bGF5TGlzdEl0ZW0sIGJ1dCB0aGVuIGl0IGNvbnZlcnRzIHRoZQorICAgICAgICBEaXNwbGF5TGlz
dEl0ZW0gdG8gYW4gSXRlbUhhbmRsZSBhdCB0aGUgbGFzdCBzZWNvbmQgaW4gb3JkZXIgdG8gcHJl
c2VydmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yJ3MgQVBJIHNpZ25hdHVyZXMuIFRoaXMgd2F5LCB3
ZSBjYW4KKyAgICAgICAgc3BsaXQgdGhlIHVwZGF0ZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2Yg
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yIGludG8gYSBzZXBhcmF0ZSBwYXRjaCBmcm9tIHVwZGF0aW5n
IGFsbCB0aGUgY2FsbGVycyB0byB0aGUgbmV3CisgICAgICAgIHNpZ25hdHVyZS4KKworICAgICAg
ICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJlY2F1
c2UgRGlzcGxheUxpc3RJdGVtcyBhcmUgc2ltcGxlciB0aGFuIEl0ZW1IYW5kbGVzLiBCZWNhdXNl
IGFsbCB0aGUgdXNlcnMgb2YKKyAgICAgICAgdGhlIGl0ZXJhdG9yIHVzZSBpdCBpbiBhIGZvcmVh
Y2ggbG9vcCwgd2UgY2FuIGV4cGVjdCB0aGF0IGFsbCB1c2VycyB3aWxsIHBpbmctcG9uZyBiZXR3
ZWVuIG9wZXJhdG9yKigpIGFuZCBvcGVyYXRvcisrKCkuIFRoaXMgbWVhbnMKKyAgICAgICAgdGhh
dCBvcGVyYXRvciooKSBjYW4gY29tcHV0ZSBhIEN1cnJlbnRJdGVtSW5mbywgd2hpY2ggaW5jbHVk
ZXMgdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUgZGlzcGxh
eSBsaXN0IHNobWVtLAorICAgICAgICBzbyB0aGF0IHRoZSBpdGVyYXRvciBjYW4gcmV0YWluIHRo
YXQgaW5mb3JtYXRpb24sIGFuZCB0aGUgbmV4dCBjYWxsIHRvIG9wZXJhdG9yKysoKSBjYW4ganVz
dCB1c2UgaXQgdG8ga25vdyBob3cgbXVjaCB0byBpbmNyZW1lbnQgYnkuCisgICAgICAgIFNvLCB0
aGVyZSdzIGEgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB3aGljaCBpcyBjb25zdCBhbmQgcmV0dXJu
cyBhIEN1cnJlbnRJdGVtUmVzdWx0LCBhbmQgaXQncyBvcGVyYXRvciooKSdzIGpvYiB0byBjYWxs
IGl0IGFuZCByZWNvcmQKKyAgICAgICAgdGhlIHJlbGV2YW50IGluZm8gZm9yIG9wZXJhdG9yKyso
KS4KKworICAgICAgICBUaGUgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB1c2VzIGJyaWdhbmQgdG8g
aXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBWYXJpYW50
LCBhbmQgY29tcGFyZXMgdGhhdCB0eXBlJ3MKKyAgICAgICAgaXRlbVR5cGUgdG8gdGhlIGZpcnN0
IHNlcmlhbGl6ZWQgYnl0ZSBpbiB0aGUgc2htZW0uIElmIGl0IG1hdGNoZXMsIHdlIHRyeSB0byBw
YXJzZSBpdCBhY2NvcmRpbmcgdG8gdGhlIHJlbGV2YW50IHNlcmlhbGl6YXRpb24gcnVsZXMsCisg
ICAgICAgIGFuZCBpZiBpdCBkb2Vzbid0IG1hdGNoLCBicmlnYW5kIHdpbGwganVzdCBjb250aW51
ZSBsb29waW5nIHRvIHRoZSBuZXh0IHR5cGUgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBWYXJpYW50
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzVmFs
aWQpOiBEZWxldGVkLiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmguCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKTogTW92ZWQgZnJvbSBEaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0
b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRP
ZkN1cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnREcmF3
aW5nSXRlbUV4dGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphZHZhbmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVy
YXRvcjo6SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVy
YXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMS0wNS0wOSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10g
U2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNjogTWlncmF0ZSBJdGVtQnVmZmVy
V3JpdGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50JgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1YTcyNTAxNDE1NTAy
NDRmY2YwZTVhZDZkNjVmN2E0MTQ3NjlhYzIyLi44NDZjNDIwMDFkNWI3OGU0YjVlNDBkODA4N2Jj
MjlkMjgwOGZlYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtQnVmZmVy
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKKyNpbmNsdWRlIDx3
dGYvQnJpZ2FuZC5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQzOCwyMSArNDM5LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkK
ICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBj
b25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShz
dGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJc1Zh
bGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQotewotICAgIHJldHVybiB0cnVl
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRl
bSYgaXRlbSkKLXsKLSAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Ci19Ci0KIHRlbXBsYXRlPHR5
cGVuYW1lIEl0ZW0+CiBzdGF0aWMgaW5saW5lIGJvb2wgY29weUludG8odWludDhfdCogZGVzdGlu
YXRpb25XaXRoT2Zmc2V0LCBjb25zdCBJdGVtJiBpdGVtKQogewpAQCAtNjE5LDYgKzYwNSwyNyBA
QCBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24sIGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYgc291cmNlKQogICAgIH0sIHNvdXJjZSk7CiB9CiAKK09wdGlvbmFsPERpc3BsYXlMaXN0
SXRlbT4gc2FmZUNvcHkoSXRlbUhhbmRsZSBzb3VyY2UpCit7CisgICAgdXNpbmcgU2VxdWVuY2Ug
PSBicmlnYW5kOjptYWtlX3NlcXVlbmNlPGJyaWdhbmQ6OnB0cmRpZmZfdDwwPiwgV1RGOjp2YXJp
YW50X3NpemU8RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+OworCisgICAgT3B0aW9uYWw8RGlzcGxh
eUxpc3RJdGVtPiByZXN1bHQ7CisgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8U2VxdWVuY2U+KFsmXShh
dXRvJiYgdHlwZSkgeworICAgICAgICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFu
ZFJlZmVyZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6OnR5cGU7CisgICAgICAgIHVzaW5nIERp
c3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJOjp2YWx1ZSwg
RGlzcGxheUxpc3RJdGVtPjsKKworICAgICAgICBpZiAoc291cmNlLnR5cGUoKSAhPSBEaXNwbGF5
TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBh
dXRvIGRpc3BsYXlMaXN0SXRlbSA9IHNvdXJjZS5nZXQ8RGlzcGxheUxpc3RJdGVtVHlwZT4oKTsK
KyAgICAgICAgaWYgKGlzVmFsaWQoZGlzcGxheUxpc3RJdGVtKSkgeworICAgICAgICAgICAgQVNT
RVJUKCFyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gRGlzcGxheUxpc3RJdGVtKFdURk1v
dmUoZGlzcGxheUxpc3RJdGVtKSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiBJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1CdWZmZXJIYW5kbGVzJiYgaGFu
ZGxlcykKICAgICA6IG1fcmVhZE9ubHlCdWZmZXJzKFdURk1vdmUoaGFuZGxlcykpCiB7CkBAIC03
MjMsNyArNzMwLDcgQEAgdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiB0ZW1wb3JhcnlJdGVtKQogICAgICAgICBBU1NFUlQob3V0T2ZMaW5lSXRlbSk7CiAgICAg
ICAgIHJldHVybiBvdXRPZkxpbmVJdGVtLT5zaXplKCk7CiAgICAgfSk7Ci0gICAgYXV0byBhZGRp
dGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbSA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91
bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0YUxlbmd0aCk7CisgICAgYXV0
byBhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbSA9IDIgKiBzaXplb2YodWludDY0X3Qp
ICsgcm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm9mKHVpbnQ2NF90KT4oZGF0YUxlbmd0aCk7CiAK
ICAgICBhdXRvIGJ1ZmZlckNoYW5nZWQgPSBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChhZGRp
dGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBiOTkxNzU3YzIyZGM3N2UwZDg3YmMzYzVjYjFkMDE5ZmQw
N2M0Mzg2Li4zMzZhMjFhMjU0MTE0NGM2OThjZThkYWFhZjcyZDM0OTg3YjhiNDYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC04Myw2ICs4Myw3IEBAIHN0
cnVjdCBJdGVtSGFuZGxlIHsKIH07CiAKIGJvb2wgc2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5h
dGlvbiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJiBzb3VyY2UpOworT3B0aW9uYWw8RGlzcGxheUxp
c3RJdGVtPiBzYWZlQ29weShJdGVtSGFuZGxlKTsKIAogZW51bSBjbGFzcyBEaWRDaGFuZ2VJdGVt
QnVmZmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKIApAQCAtMTIzLDcgKzEyNCw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VO
VVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgSXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSA9IDA7CisgICAgdmlydHVh
bCBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVt
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSkgPSAwOwog
fTsKIAogLy8gQW4gSXRlbUJ1ZmZlciBjb250YWlucyBkaXNwbGF5IGxpc3QgaXRlbSBkYXRhLCBh
bmQgY29uc2lzdHMgb2YgYSByZWFkd3JpdGUgSXRlbUJ1ZmZlckhhbmRsZSAodG8gd2hpY2ggZGlz
cGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4IGExZTA5
MWU0NTdmNTg5ZGM4MzI0ZjA5NGY2N2ExN2UyODQ2ZmJiN2QuLmVmNTVmNzZlM2EzYzJmZmMwMGUx
Y2JjMGZjNTQyYTkwNzQ5YzUxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBib29sIGlzRHJhd2luZ0l0ZW0oSXRlbVR5cGUg
dHlwZSkKIAogc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZSB0
eXBlKQogewotICAgIHJldHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVP
ZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZU9mSXRlbUluQnl0ZXModHlwZSkpOworICAgIHJldHVy
biBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm9mKHVpbnQ2NF90
KT4oc2l6ZU9mSXRlbUluQnl0ZXModHlwZSkpOwogfQogCiBzaXplX3QgcGFkZGVkU2l6ZU9mVHlw
ZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKQpA
QCAtMjY0LDcgKzI2NCw3IEBAIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMo
Y29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pCiAgICAgYXV0byBpdGVtU2l6
ZSA9IFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gc2l6
ZW9mKGl0ZW0pOwogICAgIH0sIGRpc3BsYXlMaXN0SXRlbSk7Ci0gICAgcmV0dXJuIHNpemVvZih1
aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBpdGVtU2l6
ZSk7CisgICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mPGFs
aWdub2YodWludDY0X3QpPihpdGVtU2l6ZSk7CiB9CiAKIEl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRl
bVR5cGUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAxZWI4MTU2ZDE2NjM3OGViZjA1ZWU2YmMyY2VlMTAx
ZjkyZTI2YzZhLi42ZGRiNTM2YmViZWU3ZWRlYjliNzIxZjllYzhhMTk0M2Y0OGFhNzJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTIzNTYsOSArMjM1NiwyNSBAQCB1c2lu
ZyBEaXNwbGF5TGlzdEl0ZW0gPSBWYXJpYW50CiAjZW5kaWYKID47CiAKLXNpemVfdCBwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJik7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSB2b2lkPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNW
YWxpZCA9IGZhbHNlOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0ZXhwciBib29s
IEhhc0lzVmFsaWQ8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuaXNW
YWxpZCgpKT4+ID0gdHJ1ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDwhSGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpZChjb25zdCBJdGVt
JikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNv
bnN0IEl0ZW0mIGl0ZW0pCit7CisgICAgcmV0dXJuIGl0ZW0uaXNWYWxpZCgpOworfQorCiBJdGVt
VHlwZSBkaXNwbGF5TGlzdEl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCitzaXpl
X3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYp
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgc2l6ZV90IHBhZGRlZFNpemVPZlR5
cGVBbmRJdGVtSW5CeXRlc0Zvckl0ZW0gPSBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVs
dGlwbGVPZjxhbGlnbm9mKHVpbnQ2NF90KT4oc2l6ZW9mKFQpKTsKKwogVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7CiAKIH0gLy8gbmFtZXNwYWNlIERpc3Bs
YXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKaW5kZXggZTc2
Njc3MmJlZWFjMTY1NjZkMTRiNDQwZGRiMjY2ZWM3ZDY2NmNjMC4uNjllMDE5YWE2ZmEyYjU3YTVk
N2ZkNzE3MjU0NGE1ODA2MWJjYmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZXJhdG9yLmNwcApAQCAtMjksMTA4ICsyOSwxNDQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLWJvb2wgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphdEVu
ZCgpIGNvbnN0CitEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IERpc3BsYXlM
aXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgaW1tZWRpYXRlbHlNb3ZlVG9F
bmQpCisgICAgOiBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQogewotICAgIGlmIChtX2Rpc3Bs
YXlMaXN0LmlzRW1wdHkoKSB8fCAhbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Olllcykg
eworICAgICAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKSkgeworICAgICAgICAgICAg
bV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsK
KyAgICAgICAgICAgIG1fY3Vyc29yID0gZW5kT2ZDdXJyZW50QnVmZmVyKCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UKKyAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsK
K30KIAotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZmZXIoKTsKLSAgICBhdXRvIGVuZEN1cnNv
ciA9IGl0ZW1zLm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLm1fd3JpdHRlbk51bWJlck9m
Qnl0ZXM7Ci0gICAgcmV0dXJuIG1fY3Vyc29yID09IGVuZEN1cnNvcjsKK0Rpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6fkl0ZXJhdG9yKCkKK3sKKyAgICBjbGVhckN1cnJlbnRJdGVtKCk7CiB9CiAKLWF1
dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQo
SXRlbVR5cGUgaXRlbVR5cGUpIC0+IEV4dGVudFVwZGF0ZVJlc3VsdAorI2lmIEFTU0VSVF9FTkFC
TEVECitib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAogewotICAgIGF1
dG8mIGV4dGVudHMgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzOwotICAgIGlm
IChleHRlbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6
U3VjY2VzczsKKyAgICBpZiAobV9kaXNwbGF5TGlzdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKCFpc0RyYXdpbmdJdGVtKGl0ZW1UeXBlKSkgewotICAgICAgICBt
X2N1cnJlbnRFeHRlbnQgPSBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiBFeHRlbnRVcGRh
dGVSZXN1bHQ6OlN1Y2Nlc3M7Ci0gICAgfQorICAgIGNvbnN0IGF1dG8qIGl0ZW1zID0gaXRlbUJ1
ZmZlcigpOworICAgIGlmICghaXRlbXMpCisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KG1fZHJhd2luZ0l0ZW1JbmRleCA+PSBleHRlbnRzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIEV4
dGVudFVwZGF0ZVJlc3VsdDo6RmFpbHVyZTsKKyAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLT5t
X3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKKyAg
ICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vyc29yOworfQorI2VuZGlmCiAKLSAgICBtX2N1cnJl
bnRFeHRlbnQgPSBleHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07Ci0gICAgbV9kcmF3aW5nSXRl
bUluZGV4Kys7Ci0gICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKKy8vIFRo
aXMgaXMgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCit2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6Y2xlYXJDdXJyZW50SXRlbSgpCit7CisgICAgaWYgKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0g
JiYgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSAhPSBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0p
CisgICAgICAgIGZhc3RGcmVlKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOwogfQogCi12b2lkIERp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQorYXV0byBEaXNwbGF5TGlz
dDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9wdGlvbmFsPFZhbHVlPgogewotICAg
IGNsZWFyQ3VycmVudEl0ZW0oKTsKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgIEFTU0VSVCgh
bV9jdXJyZW50SXRlbUluZm8pOwogCi0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGN1cnJlbnRJdGVtSW5mbyA9IGN1cnJlbnRJdGVtKCk7CisgICAgaWYgKCFjdXJy
ZW50SXRlbUluZm8pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvJiBp
dGVtcyA9ICppdGVtQnVmZmVyKCk7Ci0gICAgYXV0byBpdGVtVHlwZSA9IHN0YXRpY19jYXN0PEl0
ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAgbV9jdXJyZW50SXRlbUluZm8gPSB7eyBjdXJyZW50
SXRlbUluZm8tPnNpemVJbkJ1ZmZlciwgY3VycmVudEl0ZW1JbmZvLT5pc0RyYXdpbmdJdGVtIH19
OwogCi0gICAgaWYgKHVwZGF0ZUN1cnJlbnREcmF3aW5nSXRlbUV4dGVudChpdGVtVHlwZSkgPT0g
RXh0ZW50VXBkYXRlUmVzdWx0OjpGYWlsdXJlKSB7Ci0gICAgICAgIG1faXNWYWxpZCA9IGZhbHNl
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gY3VycmVu
dEV4dGVudDsKKyAgICBpZiAoY3VycmVudEl0ZW1JbmZvLT5pc0RyYXdpbmdJdGVtICYmICFtX2Rp
c3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgY3VycmVu
dEV4dGVudCA9IG1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHNbbV9kcmF3aW5nSXRl
bUluZGV4XTsKIAotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXpl
T2ZUeXBlQW5kSXRlbUluQnl0ZXMoaXRlbVR5cGUpOworICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJ5
LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjM1NjAuCisgICAgY29uc3RfY2FzdDxJdGVyYXRvcio+KHRoaXMpLT5jbGVhckN1
cnJlbnRJdGVtKCk7CisgICAgYXV0byBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA9IHBhZGRlZFNp
emVPZlR5cGVBbmRJdGVtSW5CeXRlcyhkaXNwbGF5TGlzdEl0ZW1UeXBlKGN1cnJlbnRJdGVtSW5m
by0+ZGlzcGxheUxpc3RJdGVtKSk7CiAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IHBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBt
X2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihm
YXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSk7Ci0gICAgaWYgKGlzSW5saW5lSXRl
bShpdGVtVHlwZSkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFJdGVtSGFuZGxlIHsgbV9jdXJz
b3IgfS5zYWZlQ29weSh7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSkpKQotICAgICAgICAgICAg
bV9pc1ZhbGlkID0gZmFsc2U7Ci0KLSAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9
IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8qIGNs
aWVudCA9IGl0ZW1zLm1fcmVhZGluZ0NsaWVudDsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xp
ZW50KTsKLSAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRf
dCo+KG1fY3Vyc29yKVsxXTsKLSAgICAgICAgYXV0byogc3RhcnRPZkRhdGEgPSBtX2N1cnNvciAr
IDIgKiBzaXplb2YodWludDY0X3QpOwotICAgICAgICBhdXRvIGRlY29kZWRJdGVtSGFuZGxlID0g
Y2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSwgbV9j
dXJyZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZGVjb2RlZEl0ZW1I
YW5kbGUpKQotICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgYXV0byBzdWNjZXNz
ID0gc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0sIGN1cnJlbnRJdGVtSW5mby0+
ZGlzcGxheUxpc3RJdGVtKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwog
Ci0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90
PihpdGVtVHlwZSk7Ci0gICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6
ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRh
dGFMZW5ndGgpOwotICAgIH0KKyAgICByZXR1cm4ge3sgeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVt
IH0sIFdURk1vdmUoY3VycmVudEV4dGVudCksIGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVy
IH19OwogfQogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YWR2YW5jZSgpCit2b2lkIERp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCiB7Ci0gICAgaWYgKGF0RW5kKCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAgIEFTU0VSVChtX2N1cnJl
bnRJdGVtSW5mbyk7CisKKyAgICBpZiAobV9jdXJyZW50SXRlbUluZm8tPmlzRHJhd2luZ0l0ZW0p
CisgICAgICAgICsrbV9kcmF3aW5nSXRlbUluZGV4OwogCi0gICAgbV9jdXJzb3IgKz0gbV9jdXJy
ZW50SXRlbVNpemVJbkJ1ZmZlcjsKKyAgICBtX2N1cnNvciArPSBtX2N1cnJlbnRJdGVtSW5mby0+
c2l6ZUluQnVmZmVyOwogCi0gICAgaWYgKG1fY3Vyc29yID09IG1fY3VycmVudEVuZE9mQnVmZmVy
ICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZl
cnMuc2l6ZSgpKSB7CisgICAgaWYgKG1fY3Vyc29yID09IGVuZE9mQ3VycmVudEJ1ZmZlcigpICYm
IG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMu
c2l6ZSgpKSB7CiAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCsrOwogICAgICAgICBtb3Zl
Q3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwogICAgIH0KIAotICAgIHVwZGF0ZUN1cnJl
bnRJdGVtKCk7CisgICAgbV9jdXJyZW50SXRlbUluZm8gPSB7IH07CiB9CiAKLXZvaWQgRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKCkKK2F1dG8gRGlzcGxheUxpc3Q6Okl0
ZXJhdG9yOjpjdXJyZW50SXRlbSgpIGNvbnN0IC0+IE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0
PgogewotICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAgaWYgKGl0ZW1zICYmIGl0
ZW1zLT5tX3JlYWRpbmdDbGllbnQgJiYgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSkgewotICAgICAg
ICBpZiAoTElLRUxZKG1faXNWYWxpZCkpCi0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJy
ZW50QnVmZmVyRm9ySXRlbSB9LmRlc3Ryb3koKTsKKyAgICBPcHRpb25hbDxDdXJyZW50SXRlbVJl
c3VsdD4gcmVzdWx0OworICAgIGJyaWdhbmQ6OmZvcl9lYWNoPERpc3BsYXlMaXN0SXRlbT4oWyZd
KGF1dG8mJiB0eXBlKSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSB0eXBl
bmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKHR5cGUpPjo6dHlwZTo6dHlw
ZTsKKworICAgICAgICBjb25zdCBhdXRvKiBlbmRPZkN1cnJlbnRCdWZmZXIgPSB0aGlzLT5lbmRP
ZkN1cnJlbnRCdWZmZXIoKTsKKworICAgICAgICAvLyBUaGUgZmlyc3QgYnl0ZSBpbiB0aGUgYnVm
ZmVyIGlzIHRoZSB0eXBlIGlkZW50aWZpZXIuCisgICAgICAgIGlmIChtX2N1cnNvciArIDEgPiBl
bmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gaXRl
bVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3JbMF0pOworICAgICAgICBpZiAo
aXRlbVR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6aXRlbVR5cGUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgLy8gSW5saW5lIGl0ZW1zIGFyZSBqdXN0IHBsYWNlbWVudC1uZXcn
ZWQgZGlyZWN0bHkgaW50byB0aGUgYnVmZmVyLCBzbyB3ZSBjYW4ganVzdCB1c2UgcmVpbnRlcnBy
ZXRfY2FzdC4KKyAgICAgICAgaWYgY29uc3RleHByIChEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0lu
bGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGF1dG8gY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPSBw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXNGb3JJdGVtPERpc3BsYXlMaXN0SXRlbVR5cGU+
OworICAgICAgICAgICAgaWYgKG1fY3Vyc29yICsgY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgPiBl
bmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
Y29uc3QgYXV0byYgaXRlbSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IERpc3BsYXlMaXN0SXRl
bVR5cGUqPihtX2N1cnNvciArIHNpemVvZih1aW50NjRfdCkpOworICAgICAgICAgICAgaWYgKCFp
c1ZhbGlkKGl0ZW0pKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEFTU0VS
VCghcmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHt7IGl0ZW0sIGN1cnJlbnRJdGVtU2l6
ZUluQnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVtIH19OworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gTm9uLWlubGluZSBpdGVtcyBh
cmUgZGVzZXJpYWxpemVkIHZpYSB0aGUgcmVhZGluZ0NsaWVudC4KKyAgICAgICAgYXV0byogY2xp
ZW50ID0gaXRlbUJ1ZmZlcigpLT5tX3JlYWRpbmdDbGllbnQ7CisgICAgICAgIGlmICghY2xpZW50
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEZvciBub24taW5saW5lIGl0ZW1z
LCB0aGUgZGF0YSBpcyBsYWlkIG91dCBhcyBzdWNoOgorICAgICAgICAvLworICAgICAgICAvLyAg
IEJ5dGUgMCAgIEJ5dGUgMSAgIEJ5dGUgMiAgIEJ5dGUgMyAgIEJ5dGUgNCAgIEJ5dGUgNSAgIEJ5
dGUgNiAgIEJ5dGUgNyAgIEJ5dGUgOCAgIEJ5dGUgOSAgIEJ5dGUgQSAgIEJ5dGUgQiAgIEJ5dGUg
QyAgIEJ5dGUgRCAgIEJ5dGUgRSAgIEJ5dGUgRgorICAgICAgICAvLyArLS0tLS0tLS0rLS0tLS0t
LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0r
LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0t
LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rCisgICAgICAgIC8vIHwgIFR5cGUgIHwgPC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBOb3RoaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IHwgPC0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBCeXRlIGxlbmd0aCBvZiBwYXlsb2FkIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0+IHwgUGF5bG9hZCAuLi4KKyAgICAgICAgLy8gKy0tLS0tLS0tKy0tLS0tLS0tKy0t
LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t
LS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t
Ky0tLS0tLS0tKy0tLS0tLS0tKworCisgICAgICAgIGlmIChtX2N1cnNvciArIDIgKiBzaXplb2Yo
dWludDY0X3QpID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICE9IG1fZml4ZWRCdWZm
ZXJGb3JDdXJyZW50SXRlbSkpCi0gICAgICAgICAgICBmYXN0RnJlZShtX2N1cnJlbnRCdWZmZXJG
b3JJdGVtKTsKLSAgICB9Ci0KLSAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMDsKLSAg
ICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gbnVsbHB0cjsKLX0KLQotdm9pZCBEaXNwbGF5TGlz
dDo6SXRlcmF0b3I6Om1vdmVUb0VuZCgpCi17Ci0gICAgaWYgKGF1dG8gaXRlbXMgPSBpdGVtQnVm
ZmVyKCkpIHsKLSAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRh
ICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgICAgIG1fY3VycmVudEVuZE9m
QnVmZmVyID0gbV9jdXJzb3I7Ci0gICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9IGl0ZW1z
LT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7Ci0gICAgfQorICAgICAgICBhdXRvIGRhdGFMZW5n
dGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOworICAgICAgICBj
b25zdCBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7
CisgICAgICAgIGlmIChzdGFydE9mRGF0YSArIGRhdGFMZW5ndGggPiBlbmRPZkN1cnJlbnRCdWZm
ZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBpdGVtID0gY2xpZW50LT5k
ZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSk7CisgICAgICAgIGlm
ICghaXRlbSB8fCAhaXNWYWxpZChpdGVtLnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBzdGQ6OnNpemVfdCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2Yo
dWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm9mKHVpbnQ2NF90KT4oZGF0YUxl
bmd0aCk7CisgICAgICAgIEFTU0VSVCghcmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0ge3sgV1RG
TW92ZShpdGVtLnZhbHVlKCkpLCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJ
dGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9fTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiB2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJl
bnRCdWZmZXIoKQpAQCAtMTQzLDEyICsxNzksMjYgQEAgdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6Om1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCkKICAgICBpZiAobV9yZWFkT25s
eUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKICAgICAgICAgYXV0byYg
bmV4dEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVm
ZmVySW5kZXhdOwogICAgICAgICBtX2N1cnNvciA9IG5leHRCdWZmZXJIYW5kbGUuZGF0YTsKLSAg
ICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvciArIG5leHRCdWZmZXJIYW5kbGUu
Y2FwYWNpdHk7Ci0gICAgfSBlbHNlIGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVy
T2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9yZWFk
T25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKTsKICAgICAgICAgbV9j
dXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhOwotICAgICAgICBtX2N1cnJlbnRF
bmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CiAg
ICAgfQogfQogCit1aW50OF90KiBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmVuZE9mQ3VycmVudEJ1
ZmZlcigpIGNvbnN0Cit7CisgICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBBU1NF
UlQoaXRlbXMpOworCisgICAgYXV0byBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5t
X3JlYWRPbmx5QnVmZmVycy5zaXplKCk7CisgICAgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8
IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKSB7CisgICAgICAgIGF1dG8mIGN1cnJlbnRCdWZmZXJI
YW5kbGUgPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsK
KyAgICAgICAgcmV0dXJuIGN1cnJlbnRCdWZmZXJIYW5kbGUuZGF0YSArIGN1cnJlbnRCdWZmZXJI
YW5kbGUuY2FwYWNpdHk7CisgICAgfQorCisgICAgQVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRl
eCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycyk7CisgICAgcmV0dXJuIGl0ZW1zLT5tX3dyaXRh
YmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKK30KKwogfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKaW5kZXggMGNiZjVmMzY5NTc1
OGIyMWEzNjdjN2Q5ODM2MGJjMTJmM2E2MGIxYy4uMzI3NDRhNTFhZmM3OGU1MmU4MTFkYmIwYmM2
NTAyNDQyODg1MjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBA
IC0zNCwyNSArMzQsMTIgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlM
aXN0OjpJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJbW1lZGlhdGVseU1vdmVU
b0VuZCB7IE5vLCBZZXMgfTsKLSAgICBJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRp
YXRlbHlNb3ZlVG9FbmQ6Ok5vKQotICAgICAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3Qp
Ci0gICAgewotICAgICAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlN
b3ZlVG9FbmQ6OlllcykKLSAgICAgICAgICAgIG1vdmVUb0VuZCgpOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAg
ICAgICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgfkl0ZXJh
dG9yKCkKLSAgICB7Ci0gICAgICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKLSAgICB9CisgICAgSXRl
cmF0b3IoY29uc3QgRGlzcGxheUxpc3QmLCBJbW1lZGlhdGVseU1vdmVUb0VuZCA9IEltbWVkaWF0
ZWx5TW92ZVRvRW5kOjpObyk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkl0ZXJhdG9yKCk7CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNw
bGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1
cnNvcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNl
KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZXJhdG9yKysoKTsKIAogICAgIHN0cnVj
dCBWYWx1ZSB7CiAgICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKQEAgLTYwLDQ0ICs0Nyw0MiBAQCBw
dWJsaWM6CiAgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9OwogICAgIH07CiAK
LSAgICBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
ICghbV9pc1ZhbGlkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAg
cmV0dXJuIHt7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRl
bSB9LAotICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAotICAgICAgICAgICAgbV9jdXJyZW50
SXRlbVNpemVJbkJ1ZmZlciwKLSAgICAgICAgfX07Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICAvLyBU
aGVzZSBhcmUgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKKyAgICB2b2lkIGNs
ZWFyQ3VycmVudEl0ZW0oKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92ZUN1cnNvclRv
U3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1vdmVUb0Vu
ZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDdXJyZW50SXRlbSgpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkdmFuY2UoKTsKKyAgICBzdHJ1Y3QgQ3VycmVudEl0ZW1SZXN1bHQgeworICAgICAg
ICBEaXNwbGF5TGlzdEl0ZW0gZGlzcGxheUxpc3RJdGVtOworICAgICAgICBzdGQ6OnNpemVfdCBz
aXplSW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNEcmF3aW5nSXRlbTsKKyAgICB9OworICAgIE9w
dGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PiBjdXJyZW50SXRlbSgpIGNvbnN0OwogCi0gICAgZW51
bSBjbGFzcyBFeHRlbnRVcGRhdGVSZXN1bHQgOiBib29sIHsgRmFpbHVyZSwgU3VjY2VzcyB9Owot
ICAgIEV4dGVudFVwZGF0ZVJlc3VsdCB1cGRhdGVDdXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQoSXRl
bVR5cGUpOworICAgIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKKyAg
ICB1aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdDsKIAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2VuZGlmCiAKICAgICBJdGVtQnVmZmVyKiBp
dGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlz
dHMoKTsgfQogCisgICAgLy8gVGhlc2UgYXJlIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3Zl
ZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgorICAg
IG11dGFibGUgdWludDhfdCBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRC
dWZmZXJGb3JDdXJyZW50SXRlbV0geyAwIH07CisgICAgbXV0YWJsZSB1aW50OF90KiBtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9OworCiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1f
ZGlzcGxheUxpc3Q7CisgICAgc3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7CisgICAgICAgIHN0ZDo6
c2l6ZV90IHNpemVJbkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07
CisgICAgbXV0YWJsZSBPcHRpb25hbDxDdXJyZW50SXRlbUluZm8+IG1fY3VycmVudEl0ZW1JbmZv
OwogICAgIHVpbnQ4X3QqIG1fY3Vyc29yIHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX3JlYWRP
bmx5QnVmZmVySW5kZXggeyAwIH07CiAgICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7IDAg
fTsKLSAgICB1aW50OF90KiBtX2N1cnJlbnRFbmRPZkJ1ZmZlciB7IG51bGxwdHIgfTsKLQotICAg
IHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVyRm9y
Q3VycmVudEl0ZW1dIHsgMCB9OwotICAgIHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0g
eyBudWxscHRyIH07Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7Ci0g
ICAgc2l6ZV90IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgYm9vbCBtX2lz
VmFsaWQgeyB0cnVlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5
TGlzdC5jcHAKaW5kZXggNzA3ODE4YjBlNzlkNWEwMzg1YzAyYjdjNTllNWMzMWE2ODc0NmIzMS4u
MzQyYjE3YmU3MTEyZjE5YzI5MWM2OWRhMjU4MzdlNjgzMWUwNmNiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxh
eUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcApAQCAtNDEsMTUgKzQxLDEyIEBAIHZvaWQgSW5N
ZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGluZ0NsaWVudDo6ZW5jb2RlSXRlbUlubGluZShjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mCiAgICAgc2FmZUNvcHkoeyBsb2NhdGlvbiB9LCBkaXNwbGF5TGlzdEl0
ZW0pOwogfQogCi1PcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gSW5NZW1v
cnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9j
YXRpb24pCitPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBJbk1l
bW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50OjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlKQogewogICAgIGNvbnN0IEl0
ZW1IYW5kbGUgZGF0YUhhbmRsZSB7IGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEpIH07CiAgICAg
QVNTRVJUX1VOVVNFRCh0eXBlLCBkYXRhSGFuZGxlLnR5cGUoKSA9PSB0eXBlKTsKICAgICBBU1NF
UlRfVU5VU0VEKGRhdGFMZW5ndGgsIGRhdGFMZW5ndGggPj0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0
ZW1JbkJ5dGVzKGRhdGFIYW5kbGUudHlwZSgpKSk7Ci0gICAgSXRlbUhhbmRsZSByZXN1bHQgeyBo
YW5kbGVMb2NhdGlvbiB9OwotICAgIGlmIChkYXRhSGFuZGxlLnNhZmVDb3B5KHJlc3VsdCkpCi0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc2FmZUNvcHkoZGF0YUhhbmRsZSk7CiB9CiAKIEluTWVtb3J5RGlzcGxheUxpc3Q6OkluTWVt
b3J5RGlzcGxheUxpc3QoKQpAQCAtNjIsNyArNTksNiBAQCBJbk1lbW9yeURpc3BsYXlMaXN0OjpJ
bk1lbW9yeURpc3BsYXlMaXN0KCkKIAogSW5NZW1vcnlEaXNwbGF5TGlzdDo6fkluTWVtb3J5RGlz
cGxheUxpc3QoKQogewotICAgIGF1dG8gZW5kID0gdGhpcy0+ZW5kKCk7CiAgICAgZm9yIChhdXRv
IGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7CiAgICAgICAgIGF1dG8gaXRlbSA9IGRpc3BsYXlM
aXN0SXRlbS0+aXRlbTsKICAgICAgICAgQVNTRVJUKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1l
bW9yeURpc3BsYXlMaXN0LmgKaW5kZXggMWNjMDhhZmFiZmYyZGE1N2MxYzJkMThkODk2ZmRjZjk1
ZGNhYTNkMS4uZTdiOGYxOGY0OTQ3YmMzODBjMjUwYmVmYzM0NDg5NzE0ODJiY2NmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVt
b3J5RGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICBjbGFzcyBXRUJDT1JFX0VYUE9SVCBSZWFkaW5nQ2xpZW50IDogcHVibGljIEl0ZW1C
dWZmZXJSZWFkaW5nQ2xpZW50IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVU
VVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwgSXRlbVR5cGUsIHVpbnQ4X3Qq
KSBmaW5hbDsKKyAgICAgICAgT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9S
RVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSkgZmluYWw7
CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA4ZDk2NGYy
YmRhMTYzOTlmZmM1OTg1OTA4YjNiYTIyM2U4NDk4ZmQwLi45M2UxZWE1MTE5MmE1NGRkMmY5YWRl
NmFhNGEyNGRiNTk5NjQyNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvQnJpZ2FuZC5oPgogI2luY2x1
ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAtNDg4LDEwNiArNDg5LDI3IEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUoRGlzcGxheUxpc3Q6Okl0ZW1CCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1
bWVudHMpOwogfQogCi1PcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVT
RURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUsIHVpbnQ4
X3QqIGhhbmRsZUxvY2F0aW9uKQotewotICAgIC8qIFRoaXMgbmVlZHMgdG8gbWF0Y2ggKDEpIGlz
SW5saW5lSXRlbSgpIGluIERpc3BsYXlMaXN0SXRlbVR5cGUuY3BwLCAoMikgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eTo6ZW5jb2RlSXRlbSgpLAotICAgICAqIGFuZCAoMykgYWxsIHRoZSAic3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSJzIGluc2lkZSB0aGUgaW5kaXZpZHVhbCBpdGVt
IGNsYXNzZXMuCi0gICAgICogU2VlIHRoZSBjb21tZW50IGF0IHRoZSB0b3Agb2YgRGlzcGxheUxp
c3RJdGVtcy5oIGZvciB3aHkuICovCi0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29k
ZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5k
bGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgot
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERp
c3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlv
bik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoK
LSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmlu
Z1JlY3RzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0
ZTxEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7
Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6Ci0gICAg
ICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+
KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5
TGlzdDo6RHJhd1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVy
biBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxDb21wb3NpdGVkUmVjdD4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpG
aWxsUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhDb2xvcj4oZGF0YSwgbGVuZ3RoLCBo
YW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0
V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0
OjpGaWxsUmVjdFdpdGhHcmFkaWVudD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgot
ICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGRlY29k
ZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhh
bmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VE
YXRhOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpQdXRJbWFn
ZURhdGE+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0
ZTxEaXNwbGF5TGlzdDo6U2V0TGluZURhc2g+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24p
OwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U2V0U3RhdGU+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VQ
YXRoOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpTdHJva2VQ
YXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSNpZiBVU0UoQ0cpCi0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSNlbmRpZgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpD
bGlwOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdOYXRpdmVJbWFnZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1Bh
dHRlcm46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSNlbmRpZgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSNpZiBF
TkFCTEUoVklERU8pCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVG
b3JNZWRpYToKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSZXN0b3Jl
OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlNjYWxlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U2V0TGluZUpvaW46Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldE1p
dGVyTGltaXQ6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldFN0cm9rZVRoaWNr
bmVzczoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSNp
ZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSNlbmRpZgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTdHJva2VSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VM
aW5lOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkdldEltYWdlRGF0YTogewotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworT3B0aW9uYWw8RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlIGl0ZW1UeXBlKQoreworICAgIHVzaW5nIFNlcXVlbmNlID0g
YnJpZ2FuZDo6bWFrZV9zZXF1ZW5jZTxicmlnYW5kOjpwdHJkaWZmX3Q8MD4sIFdURjo6dmFyaWFu
dF9zaXplPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZT47CisKKyAgICBPcHRp
b25hbDxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiByZXN1bHQ7CisgICAgYnJpZ2FuZDo6
Zm9yX2VhY2g8U2VxdWVuY2U+KFsmXShhdXRvJiYgdHlwZSkgeworICAgICAgICB1c2luZyBJID0g
dHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFuZFJlZmVyZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6
OnR5cGU7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRf
YWx0ZXJuYXRpdmVfdDxJOjp2YWx1ZSwgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT47CisK
KyAgICAgICAgaWYgKGl0ZW1UeXBlICE9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1UeXBlKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVCghRGlzcGxheUxpc3RJdGVtVHlw
ZTo6aXNJbmxpbmVJdGVtKTsKKyAgICAgICAgaWYgY29uc3RleHByICghRGlzcGxheUxpc3RJdGVt
VHlwZTo6aXNJbmxpbmVJdGVtKSB7CisgICAgICAgICAgICBpZiAoYXV0byBkaXNwbGF5TGlzdEl0
ZW0gPSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmdsZU9iamVjdDxEaXNwbGF5TGlzdEl0ZW1UeXBl
PihkYXRhLCBsZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQpOworICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHsgV1RGTW92ZShkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKSkg
fTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6dXBkYXRlUmVuZGVyaW5nUmVzb3Vy
Y2VSZXF1ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDc0OGM0YTJkMzQ1ODNhN2VhOWRi
YTcxODI0MDQyYjFiYjI0ZWY4ZWUuLjM2MDY0ZjFlZDE1OWQ4NGRlMmU3N2RjZDc2ZTFmOTQyOGMw
N2E1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtOTIsMTkgKzkyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgc3Rh
cnRMaXN0ZW5pbmdGb3JJUEMoKTsKIAotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVp
bnQ4X3QqIGhhbmRsZUxvY2F0aW9uKSBvdmVycmlkZTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5f
VU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCi0gICAgewotICAgICAgICBpZiAoYXV0
byBpdGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVTaW5nbGVPYmplY3Q8VD4oZGF0YSwgbGVuZ3Ro
KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlYktpdDIgc2hvdWxkIG5vdCBuZWVkIHRvIGtu
b3cgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhdCB0aGUgaGFuZGxlIGFyZSByZXNlcnZlZCBmb3Ig
dGhlIHR5cGUuCi0gICAgICAgICAgICAvLyBOZWVkIHRvIGZpZ3VyZSBvdXQgYSB3YXkgdG8ga2Vl
cCB0aGlzIGtub3dsZWRnZSB3aXRoaW4gZGlzcGxheSBsaXN0IGNvZGUgaW4gV2ViQ29yZS4KLSAg
ICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBzaXplb2YodWludDY0X3QpKSBUKFdURk1v
dmUoKml0ZW0pKTsKLSAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2NhdGlvbiB9fTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH0KKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUpIG92ZXJyaWRlOwogCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheVJlc3VsdCBzdWJtaXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uKTsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJB
cHBseWluZ0Rpc3BsYXlMaXN0cyhXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW5pdGlhbERlc3RpbmF0
aW9uLCBzaXplX3QgaW5pdGlhbE9mZnNldCwgRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUmLCBHUFVQ
cm9jZXNzV2FrZXVwUmVhc29uKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAppbmRleCBiYzdhODQ5YWQ3NGU0YTY0MzU4
ODE5NDc4ZmU0MzgzNTcxZTg3NTJhLi41Y2JmZDJkNDQ0YjNhODdjMTU5ZDA0YWJkMmIxYmU4MWM5
ZjQ4MWFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0xNzcsMTIgKzE3NywxMSBAQCBURVNUKERpc3BsYXlM
aXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVt
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlLCB1
aW50OF90KiBoYW5kbGVMb2NhdGlvbikgZmluYWwKKyAgICAgICAgT3B0aW9uYWw8RGlzcGxheUxp
c3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKICAgICAgICAgewogICAg
ICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpTdHJva2VQYXRoKTsKICAgICAgICAg
ICAgIEVYUEVDVF9FUShkYXRhTGVuZ3RoLCBzaXplb2Yoc2l6ZV90KSk7Ci0gICAgICAgICAgICBu
ZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ2NF90KSkgU3Ryb2tlUGF0aChtX2l0ZW1z
WypyZWludGVycHJldF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSk7Ci0gICAgICAgICAgICBy
ZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07CisgICAgICAgICAgICByZXR1cm4gRGlzcGxheUxp
c3RJdGVtKFN0cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3Qq
PihkYXRhKV0pKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJva2VQYXRo
PiYgbV9pdGVtczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggNDFhYzM5ZTUzNmQ4ODc2ZWI2
ZGZlYmYyMzNiOTY2MzVjMTQwODkwMC4uMmI2NTliNmY3YjJlZDZlOGUzMTgwMTFkODc5YjA0NTlh
NmVhYmMzZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nn
L0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGlj
IEl0ZW1CdWZmZXJJZGVudGlmaWVyIGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIgPSBJdGVtQnVmZmVy
SWRlbnRpZmllcjo6Z2VuZXIKIAogY2xhc3MgUmVhZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVm
ZmVyUmVhZGluZ0NsaWVudCB7CiBwcml2YXRlOgotICAgIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1U
eXBlIHR5cGUsIHVpbnQ4X3QqKSBmaW5hbAorICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4g
V0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCosIHNpemVfdCwgSXRl
bVR5cGUgdHlwZSkgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlw
ZTo6RmlsbFBhdGgpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428138</attachid>
            <date>2021-05-09 14:29:35 -0700</date>
            <delta_ts>2021-05-09 14:29:35 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>22609</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDQwZDYzNWJmMzg2NGI4MGRhMmU5ODYyMGE3ZjZlNzdlZmE4NmU1NTEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MDI6MzU6NDggMjAyMSAtMDcwMAoKICAgIFBhcnQgOAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmY0YmQwZTEx
YjIuLmY4MTY4ZGUwMTFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTA1LTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA4OiBSZXBsYWNl
IHRoZSBndXRzIG9mIERpc3BsYXlMaXN0OjpJdGVyYXRvciB3aXRob3V0IGFmZmVjdGluZyBpdHMg
cHVibGljIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBhIGhhbGYtc3RlcCB0b3dhcmQgYSB3b3JsZCB3aGVyZSBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIHJldHVybnMgYSBEaXNwbGF5TGlzdEl0ZW0gaW5z
dGVhZCBvZiBhbiBJdGVtSGFuZGxlLgorICAgICAgICBJdCBkb2VzIHRoaXMgYnkgc3dhcHBpbmcg
b3V0IHRoZSBndXRzIG9mIERpc3BsYXlsaXN0OjpJdGVyYXRvciBzbyB0aGF0IGl0IGNyZWF0ZXMg
YSBEaXNwbGF5TGlzdEl0ZW0sIGJ1dCB0aGVuIGl0IGNvbnZlcnRzIHRoZQorICAgICAgICBEaXNw
bGF5TGlzdEl0ZW0gdG8gYW4gSXRlbUhhbmRsZSBhdCB0aGUgbGFzdCBzZWNvbmQgaW4gb3JkZXIg
dG8gcHJlc2VydmUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yJ3MgQVBJIHNpZ25hdHVyZXMuIFRoaXMg
d2F5LCB3ZSBjYW4KKyAgICAgICAgc3BsaXQgdGhlIHVwZGF0ZSBvZiB0aGUgaW1wbGVtZW50YXRp
b24gb2YgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIGludG8gYSBzZXBhcmF0ZSBwYXRjaCBmcm9tIHVw
ZGF0aW5nIGFsbCB0aGUgY2FsbGVycyB0byB0aGUgbmV3CisgICAgICAgIHNpZ25hdHVyZS4KKwor
ICAgICAgICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQs
IGJlY2F1c2UgRGlzcGxheUxpc3RJdGVtcyBhcmUgc2ltcGxlciB0aGFuIEl0ZW1IYW5kbGVzLiBC
ZWNhdXNlIGFsbCB0aGUgdXNlcnMgb2YKKyAgICAgICAgdGhlIGl0ZXJhdG9yIHVzZSBpdCBpbiBh
IGZvcmVhY2ggbG9vcCwgd2UgY2FuIGV4cGVjdCB0aGF0IGFsbCB1c2VycyB3aWxsIHBpbmctcG9u
ZyBiZXR3ZWVuIG9wZXJhdG9yKigpIGFuZCBvcGVyYXRvcisrKCkuIFRoaXMgbWVhbnMKKyAgICAg
ICAgdGhhdCBvcGVyYXRvciooKSBjYW4gY29tcHV0ZSBhIEN1cnJlbnRJdGVtSW5mbywgd2hpY2gg
aW5jbHVkZXMgdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgaXRlbSBpbiB0aGUg
ZGlzcGxheSBsaXN0IHNobWVtLAorICAgICAgICBzbyB0aGF0IHRoZSBpdGVyYXRvciBjYW4gcmV0
YWluIHRoYXQgaW5mb3JtYXRpb24sIGFuZCB0aGUgbmV4dCBjYWxsIHRvIG9wZXJhdG9yKysoKSBj
YW4ganVzdCB1c2UgaXQgdG8ga25vdyBob3cgbXVjaCB0byBpbmNyZW1lbnQgYnkuCisgICAgICAg
IFNvLCB0aGVyZSdzIGEgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB3aGljaCBpcyBjb25zdCBhbmQg
cmV0dXJucyBhIEN1cnJlbnRJdGVtUmVzdWx0LCBhbmQgaXQncyBvcGVyYXRvciooKSdzIGpvYiB0
byBjYWxsIGl0IGFuZCByZWNvcmQKKyAgICAgICAgdGhlIHJlbGV2YW50IGluZm8gZm9yIG9wZXJh
dG9yKysoKS4KKworICAgICAgICBUaGUgY3VycmVudEl0ZW0oKSBmdW5jdGlvbiB1c2VzIGJyaWdh
bmQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgdHlwZXMgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LCBhbmQgY29tcGFyZXMgdGhhdCB0eXBlJ3MKKyAgICAgICAgaXRlbVR5cGUgdG8gdGhl
IGZpcnN0IHNlcmlhbGl6ZWQgYnl0ZSBpbiB0aGUgc2htZW0uIElmIGl0IG1hdGNoZXMsIHdlIHRy
eSB0byBwYXJzZSBpdCBhY2NvcmRpbmcgdG8gdGhlIHJlbGV2YW50IHNlcmlhbGl6YXRpb24gcnVs
ZXMsCisgICAgICAgIGFuZCBpZiBpdCBkb2Vzbid0IG1hdGNoLCBicmlnYW5kIHdpbGwganVzdCBj
b250aW51ZSBsb29waW5nIHRvIHRoZSBuZXh0IHR5cGUgaW4gdGhlIERpc3BsYXlMaXN0SXRlbSBW
YXJpYW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OmlzVmFsaWQpOiBEZWxldGVkLiBNb3ZlZCB0byBEaXNwbGF5TGlzdEl0ZW1zLmguCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc1ZhbGlkKTogTW92ZWQgZnJvbSBEaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6
b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y3VycmVudEl0ZW0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRv
U3RhcnRPZkN1cnJlbnRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5kT2ZDdXJyZW50QnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJl
bnREcmF3aW5nSXRlbUV4dGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjph
ZHZhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6fkl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9y
KyspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMS0wNS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJv
Y2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNjogTWlncmF0ZSBJdGVt
QnVmZmVyV3JpdGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50Jgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA5ZDRiMjI5
NDBhMmQuLjg0NmM0MjAwMWQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKQEAgLTQzOSwyMSArNDM5LDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95
KCkKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGlu
ZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlw
ZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVlOwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNJ
c1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mKQotewotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotc3RhdGljIGlubGluZSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PEhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3Qg
SXRlbSYgaXRlbSkKLXsKLSAgICByZXR1cm4gaXRlbS5pc1ZhbGlkKCk7Ci19Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIEl0ZW0+CiBzdGF0aWMgaW5saW5lIGJvb2wgY29weUludG8odWludDhfdCogZGVz
dGluYXRpb25XaXRoT2Zmc2V0LCBjb25zdCBJdGVtJiBpdGVtKQogewpAQCAtNzQ1LDcgKzczMCw3
IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9y
YXJ5SXRlbSkKICAgICAgICAgQVNTRVJUKG91dE9mTGluZUl0ZW0pOwogICAgICAgICByZXR1cm4g
b3V0T2ZMaW5lSXRlbS0+c2l6ZSgpOwogICAgIH0pOwotICAgIGF1dG8gYWRkaXRpb25hbENhcGFj
aXR5Rm9yRW5jb2RlZEl0ZW0gPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRp
cGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOworICAgIGF1dG8gYWRkaXRpb25h
bENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0gPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBU
b011bHRpcGxlT2Y8YWxpZ25vZih1aW50NjRfdCk+KGRhdGFMZW5ndGgpOwogCiAgICAgYXV0byBi
dWZmZXJDaGFuZ2VkID0gc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoYWRkaXRpb25hbENhcGFj
aXR5Rm9yRW5jb2RlZEl0ZW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlw
ZS5jcHAKaW5kZXggYTFlMDkxZTQ1N2Y1Li5lZjU1Zjc2ZTNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBib29sIGlzRHJh
d2luZ0l0ZW0oSXRlbVR5cGUgdHlwZSkKIAogc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVt
SW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogewotICAgIHJldHVybiBzaXplb2YodWludDY0X3QpICsg
cm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgc2l6ZU9mSXRlbUluQnl0ZXMo
dHlwZSkpOworICAgIHJldHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVP
ZjxhbGlnbm9mKHVpbnQ2NF90KT4oc2l6ZU9mSXRlbUluQnl0ZXModHlwZSkpOwogfQogCiBzaXpl
X3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYg
ZGlzcGxheUxpc3RJdGVtKQpAQCAtMjY0LDcgKzI2NCw3IEBAIHNpemVfdCBwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0p
CiAgICAgYXV0byBpdGVtU2l6ZSA9IFdURjo6dmlzaXQoW10oY29uc3QgYXV0byYgaXRlbSkgewog
ICAgICAgICByZXR1cm4gc2l6ZW9mKGl0ZW0pOwogICAgIH0sIGRpc3BsYXlMaXN0SXRlbSk7Ci0g
ICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2Yo
dWludDY0X3QpLCBpdGVtU2l6ZSk7CisgICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3Vu
ZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YodWludDY0X3QpPihpdGVtU2l6ZSk7CiB9CiAKIEl0ZW1U
eXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlz
dEl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAxZWI4MTU2ZDE2NjMu
LjZkZGI1MzZiZWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yMzU2
LDkgKzIzNTYsMjUgQEAgdXNpbmcgRGlzcGxheUxpc3RJdGVtID0gVmFyaWFudAogI2VuZGlmCiA+
OwogCi1zaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYpOwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gaW5saW5lIGNv
bnN0ZXhwciBib29sIEhhc0lzVmFsaWQgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0
ZDo6ZGVjbHZhbDxUPigpLmlzVmFsaWQoKSk+PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEl0ZW0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+
IGlzVmFsaWQoY29uc3QgSXRlbSYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEl0ZW0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVt
PiwgYm9vbD4gaXNWYWxpZChjb25zdCBJdGVtJiBpdGVtKQoreworICAgIHJldHVybiBpdGVtLmlz
VmFsaWQoKTsKK30KKwogSXRlbVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKTsKIAorc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIHNp
emVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXNGb3JJdGVtID0gc2l6ZW9mKHVpbnQ2
NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25vZih1aW50NjRfdCk+KHNpemVvZihUKSk7
CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIEl0ZW1IYW5kbGUpOwogCiB9
IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuY3BwCmluZGV4IGVhZWEzNDgxNmRiOC4uNjllMDE5YWE2ZmEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCkBAIC0yOSwxMTAgKzI5LDE0NCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotYm9vbCBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK0Rpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRl
cmF0b3IoY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbW1lZGlhdGVseU1vdmVUb0Vu
ZCBpbW1lZGlhdGVseU1vdmVUb0VuZCkKKyAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3Qp
CiB7Ci0gICAgaWYgKG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpIHx8ICFtX2lzVmFsaWQpCi0gICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmIChpbW1lZGlhdGVseU1vdmVUb0VuZCA9PSBJbW1lZGlh
dGVseU1vdmVUb0VuZDo6WWVzKSB7CisgICAgICAgIGlmIChhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZl
cigpKSB7CisgICAgICAgICAgICBtX3JlYWRPbmx5QnVmZmVySW5kZXggPSBpdGVtcy0+bV9yZWFk
T25seUJ1ZmZlcnMuc2l6ZSgpOworICAgICAgICAgICAgbV9jdXJzb3IgPSBlbmRPZkN1cnJlbnRC
dWZmZXIoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFy
dE9mQ3VycmVudEJ1ZmZlcigpOworfQogCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZlcigp
OwotICAgIGF1dG8gZW5kQ3Vyc29yID0gaXRlbXMubV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRl
bXMubV93cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vy
c29yOworRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp+SXRlcmF0b3IoKQoreworICAgIGNsZWFyQ3Vy
cmVudEl0ZW0oKTsKIH0KIAotYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJl
bnREcmF3aW5nSXRlbUV4dGVudChJdGVtVHlwZSBpdGVtVHlwZSkgLT4gRXh0ZW50VXBkYXRlUmVz
dWx0CisjaWYgQVNTRVJUX0VOQUJMRUQKK2Jvb2wgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphdEVu
ZCgpIGNvbnN0CiB7Ci0gICAgYXV0byYgZXh0ZW50cyA9IG1fZGlzcGxheUxpc3QubV9kcmF3aW5n
SXRlbUV4dGVudHM7Ci0gICAgaWYgKGV4dGVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
RXh0ZW50VXBkYXRlUmVzdWx0OjpTdWNjZXNzOworICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIWlzRHJhd2luZ0l0ZW0oaXRl
bVR5cGUpKSB7Ci0gICAgICAgIG1fY3VycmVudEV4dGVudCA9IFdURjo6bnVsbG9wdDsKLSAgICAg
ICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKLSAgICB9CisgICAgY29uc3Qg
YXV0byogaXRlbXMgPSBpdGVtQnVmZmVyKCk7CisgICAgaWYgKCFpdGVtcykKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAobV9kcmF3aW5nSXRlbUluZGV4ID49IGV4dGVudHMuc2l6ZSgp
KQotICAgICAgICByZXR1cm4gRXh0ZW50VXBkYXRlUmVzdWx0OjpGYWlsdXJlOworICAgIGF1dG8g
ZW5kQ3Vyc29yID0gaXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzOworICAgIHJldHVybiBtX2N1cnNvciA9PSBlbmRDdXJzb3I7Cit9Cisj
ZW5kaWYKIAotICAgIG1fY3VycmVudEV4dGVudCA9IGV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4
XTsKLSAgICBtX2RyYXdpbmdJdGVtSW5kZXgrKzsKLSAgICByZXR1cm4gRXh0ZW50VXBkYXRlUmVz
dWx0OjpTdWNjZXNzOworLy8gVGhpcyBpcyB0ZW1wb3JhcnksIGFuZCB3aWxsIGJlIHJlbW92ZWQg
YnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzU2MC4KK3ZvaWQg
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKCkKK3sKKyAgICBpZiAobV9j
dXJyZW50QnVmZmVyRm9ySXRlbSAmJiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICE9IG1fZml4ZWRC
dWZmZXJGb3JDdXJyZW50SXRlbSkKKyAgICAgICAgZmFzdEZyZWUobV9jdXJyZW50QnVmZmVyRm9y
SXRlbSk7CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRl
bSgpCithdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gT3B0
aW9uYWw8VmFsdWU+CiB7Ci0gICAgY2xlYXJDdXJyZW50SXRlbSgpOworICAgIEFTU0VSVCghYXRF
bmQoKSk7CisgICAgQVNTRVJUKCFtX2N1cnJlbnRJdGVtSW5mbyk7CiAKLSAgICBpZiAoYXRFbmQo
KSkKLSAgICAgICAgcmV0dXJuOworICAgIGF1dG8gY3VycmVudEl0ZW1JbmZvID0gY3VycmVudEl0
ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtSW5mbykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZmZXIoKTsKLSAgICBhdXRvIGl0ZW1U
eXBlID0gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICBtX2N1cnJlbnRJ
dGVtSW5mbyA9IHt7IGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyLCBjdXJyZW50SXRlbUlu
Zm8tPmlzRHJhd2luZ0l0ZW0gfX07CiAKLSAgICBpZiAodXBkYXRlQ3VycmVudERyYXdpbmdJdGVt
RXh0ZW50KGl0ZW1UeXBlKSA9PSBFeHRlbnRVcGRhdGVSZXN1bHQ6OkZhaWx1cmUpIHsKLSAgICAg
ICAgbV9pc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBjdXJyZW50RXh0ZW50OworICAgIGlmIChjdXJyZW50SXRlbUluZm8tPmlz
RHJhd2luZ0l0ZW0gJiYgIW1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHMuaXNFbXB0
eSgpKQorICAgICAgICBjdXJyZW50RXh0ZW50ID0gbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVt
RXh0ZW50c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwogCi0gICAgYXV0byBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhpdGVtVHlwZSk7CisgICAg
Ly8gVGhpcyBpcyB0ZW1wb3JhcnksIGFuZCB3aWxsIGJlIHJlbW92ZWQgYnkgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzU2MC4KKyAgICBjb25zdF9jYXN0PEl0ZXJh
dG9yKj4odGhpcyktPmNsZWFyQ3VycmVudEl0ZW0oKTsKKyAgICBhdXRvIHBhZGRlZFNpemVPZlR5
cGVBbmRJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGRpc3BsYXlMaXN0SXRl
bVR5cGUoY3VycmVudEl0ZW1JbmZvLT5kaXNwbGF5TGlzdEl0ZW0pKTsKICAgICBtX2N1cnJlbnRC
dWZmZXJGb3JJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZm
ZXJGb3JDdXJyZW50SXRlbSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsK
LSAgICBpZiAoaXNJbmxpbmVJdGVtKGl0ZW1UeXBlKSkgewotICAgICAgICBpZiAoVU5MSUtFTFko
IUl0ZW1IYW5kbGUgeyBtX2N1cnNvciB9LnNhZmVDb3B5KHsgbV9jdXJyZW50QnVmZmVyRm9ySXRl
bSB9KSkpCi0gICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICBhdXRvIHN1Y2Nlc3Mg
PSBzYWZlQ29weSh7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwgY3VycmVudEl0ZW1JbmZvLT5k
aXNwbGF5TGlzdEl0ZW0pOworICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAK
LSAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRlZFNpemVPZlR5cGVBbmRJ
dGVtOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1zLm1fcmVhZGlu
Z0NsaWVudDsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2xpZW50KTsKLSAgICAgICAgYXV0byBk
YXRhTGVuZ3RoID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KG1fY3Vyc29yKVsxXTsKLSAg
ICAgICAgYXV0byogc3RhcnRPZkRhdGEgPSBtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0X3Qp
OwotICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKGF1dG8gZGVjb2RlZEl0
ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBl
KSkgewotICAgICAgICAgICAgLy8gVGhpcyBjb3B5IG9wZXJhdGlvbiBpcyB0ZW1wb3JhcnksIGFu
ZCB3aWxsIGJlIHJlbW92ZWQgYXMgYSBwYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjM1NjAuCi0gICAgICAgICAgICBtX2lzVmFsaWQgPSBzYWZlQ29weShJ
dGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LCBkZWNvZGVkSXRlbS52YWx1ZSgp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW1bMF0gPSBzdGF0
aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7Ci0gICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5C
dWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25v
Zih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwotICAgIH0KKyAgICByZXR1cm4ge3sgeyBtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtIH0sIFdURk1vdmUoY3VycmVudEV4dGVudCksIGN1cnJlbnRJdGVtSW5m
by0+c2l6ZUluQnVmZmVyIH19OwogfQogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YWR2
YW5jZSgpCit2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCiB7Ci0gICAg
aWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIWF0RW5kKCkpOworICAg
IEFTU0VSVChtX2N1cnJlbnRJdGVtSW5mbyk7CiAKLSAgICBtX2N1cnNvciArPSBtX2N1cnJlbnRJ
dGVtU2l6ZUluQnVmZmVyOworICAgIGlmIChtX2N1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRl
bSkKKyAgICAgICAgKyttX2RyYXdpbmdJdGVtSW5kZXg7CiAKLSAgICBpZiAobV9jdXJzb3IgPT0g
bV9jdXJyZW50RW5kT2ZCdWZmZXIgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZl
cigpLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKKyAgICBtX2N1cnNvciArPSBtX2N1cnJl
bnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyOworCisgICAgaWYgKG1fY3Vyc29yID09IGVuZE9mQ3Vy
cmVudEJ1ZmZlcigpICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IGl0ZW1CdWZmZXIoKS0+bV9y
ZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7CiAgICAgICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCsr
OwogICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwogICAgIH0KIAot
ICAgIHVwZGF0ZUN1cnJlbnRJdGVtKCk7CisgICAgbV9jdXJyZW50SXRlbUluZm8gPSB7IH07CiB9
CiAKLXZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKCkKK2F1dG8g
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSgpIGNvbnN0IC0+IE9wdGlvbmFsPEN1
cnJlbnRJdGVtUmVzdWx0PgogewotICAgIGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCk7Ci0gICAg
aWYgKGl0ZW1zICYmIGl0ZW1zLT5tX3JlYWRpbmdDbGllbnQgJiYgbV9jdXJyZW50QnVmZmVyRm9y
SXRlbSkgewotICAgICAgICBpZiAoTElLRUxZKG1faXNWYWxpZCkpCi0gICAgICAgICAgICBJdGVt
SGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LmRlc3Ryb3koKTsKKyAgICBPcHRpb25h
bDxDdXJyZW50SXRlbVJlc3VsdD4gcmVzdWx0OworICAgIGJyaWdhbmQ6OmZvcl9lYWNoPERpc3Bs
YXlMaXN0SXRlbT4oWyZdKGF1dG8mJiB0eXBlKSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0
SXRlbVR5cGUgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKHR5
cGUpPjo6dHlwZTo6dHlwZTsKKworICAgICAgICBjb25zdCBhdXRvKiBlbmRPZkN1cnJlbnRCdWZm
ZXIgPSB0aGlzLT5lbmRPZkN1cnJlbnRCdWZmZXIoKTsKKworICAgICAgICAvLyBUaGUgZmlyc3Qg
Ynl0ZSBpbiB0aGUgYnVmZmVyIGlzIHRoZSB0eXBlIGlkZW50aWZpZXIuCisgICAgICAgIGlmICht
X2N1cnNvciArIDEgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGF1dG8gaXRlbVR5cGUgPSBzdGF0aWNfY2FzdDxJdGVtVHlwZT4obV9jdXJzb3JbMF0p
OworICAgICAgICBpZiAoaXRlbVR5cGUgIT0gRGlzcGxheUxpc3RJdGVtVHlwZTo6aXRlbVR5cGUp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gSW5saW5lIGl0ZW1zIGFyZSBqdXN0
IHBsYWNlbWVudC1uZXcnZWQgZGlyZWN0bHkgaW50byB0aGUgYnVmZmVyLCBzbyB3ZSBjYW4ganVz
dCB1c2UgcmVpbnRlcnByZXRfY2FzdC4KKyAgICAgICAgaWYgY29uc3RleHByIChEaXNwbGF5TGlz
dEl0ZW1UeXBlOjppc0lubGluZUl0ZW0pIHsKKyAgICAgICAgICAgIGF1dG8gY3VycmVudEl0ZW1T
aXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXNGb3JJdGVtPERpc3Bs
YXlMaXN0SXRlbVR5cGU+OworICAgICAgICAgICAgaWYgKG1fY3Vyc29yICsgY3VycmVudEl0ZW1T
aXplSW5CdWZmZXIgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgY29uc3QgYXV0byYgaXRlbSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0
IERpc3BsYXlMaXN0SXRlbVR5cGUqPihtX2N1cnNvciArIHNpemVvZih1aW50NjRfdCkpOworICAg
ICAgICAgICAgaWYgKCFpc1ZhbGlkKGl0ZW0pKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIEFTU0VSVCghcmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHt7IGl0ZW0s
IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJ
dGVtIH19OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKFVO
TElLRUxZKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJ
dGVtKSkKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOwotICAg
IH0KKyAgICAgICAgLy8gTm9uLWlubGluZSBpdGVtcyBhcmUgZGVzZXJpYWxpemVkIHZpYSB0aGUg
cmVhZGluZ0NsaWVudC4KKyAgICAgICAgYXV0byogY2xpZW50ID0gaXRlbUJ1ZmZlcigpLT5tX3Jl
YWRpbmdDbGllbnQ7CisgICAgICAgIGlmICghY2xpZW50KQorICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDA7Ci0gICAgbV9jdXJyZW50QnVmZmVy
Rm9ySXRlbSA9IG51bGxwdHI7Ci19CisgICAgICAgIC8vIEZvciBub24taW5saW5lIGl0ZW1zLCB0
aGUgZGF0YSBpcyBsYWlkIG91dCBhcyBzdWNoOgorICAgICAgICAvLworICAgICAgICAvLyAgIEJ5
dGUgMCAgIEJ5dGUgMSAgIEJ5dGUgMiAgIEJ5dGUgMyAgIEJ5dGUgNCAgIEJ5dGUgNSAgIEJ5dGUg
NiAgIEJ5dGUgNyAgIEJ5dGUgOCAgIEJ5dGUgOSAgIEJ5dGUgQSAgIEJ5dGUgQiAgIEJ5dGUgQyAg
IEJ5dGUgRCAgIEJ5dGUgRSAgIEJ5dGUgRgorICAgICAgICAvLyArLS0tLS0tLS0rLS0tLS0tLS0r
LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0t
LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t
LS0rLS0tLS0tLS0rLS0tLS0tLS0rCisgICAgICAgIC8vIHwgIFR5cGUgIHwgPC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBOb3RoaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IHwgPC0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBCeXRlIGxlbmd0aCBvZiBwYXlsb2FkIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0+IHwgUGF5bG9hZCAuLi4KKyAgICAgICAgLy8gKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t
LS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t
Ky0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0t
LS0tLS0tKy0tLS0tLS0tKwogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5k
KCkKLXsKLSAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKSkgewotICAgICAgICBtX2N1
cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVt
YmVyT2ZCeXRlczsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvcjsKLSAg
ICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNp
emUoKTsKLSAgICB9CisgICAgICAgIGlmIChtX2N1cnNvciArIDIgKiBzaXplb2YodWludDY0X3Qp
ID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1
dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilbMV07
CisgICAgICAgIGNvbnN0IGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9m
KHVpbnQ2NF90KTsKKyAgICAgICAgaWYgKHN0YXJ0T2ZEYXRhICsgZGF0YUxlbmd0aCA+IGVuZE9m
Q3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGl0ZW0g
PSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBlKTsK
KyAgICAgICAgaWYgKCFpdGVtIHx8ICFpc1ZhbGlkKGl0ZW0udmFsdWUoKSkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHN0ZDo6c2l6ZV90IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0g
MiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YodWludDY0
X3QpPihkYXRhTGVuZ3RoKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQpOworICAgICAgICByZXN1
bHQgPSB7eyBXVEZNb3ZlKGl0ZW0udmFsdWUoKSksIGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyLCBE
aXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVtIH19OworICAgIH0pOworICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIHZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9T
dGFydE9mQ3VycmVudEJ1ZmZlcigpCkBAIC0xNDUsMTIgKzE3OSwyNiBAQCB2b2lkIERpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKQogICAgIGlm
IChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgewogICAg
ICAgICBhdXRvJiBuZXh0QnVmZmVySGFuZGxlID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzW21f
cmVhZE9ubHlCdWZmZXJJbmRleF07CiAgICAgICAgIG1fY3Vyc29yID0gbmV4dEJ1ZmZlckhhbmRs
ZS5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsgbmV4dEJ1
ZmZlckhhbmRsZS5jYXBhY2l0eTsKLSAgICB9IGVsc2UgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRl
eCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgeworICAgIH0gZWxzZSB7CisgICAgICAgIEFT
U0VSVChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpOwog
ICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGE7Ci0gICAgICAg
IG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVy
T2ZCeXRlczsKICAgICB9CiB9CiAKK3VpbnQ4X3QqIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6ZW5k
T2ZDdXJyZW50QnVmZmVyKCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigp
OworICAgIEFTU0VSVChpdGVtcyk7CisKKyAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZmZXJz
ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25seUJ1
ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYgY3Vy
cmVudEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVm
ZmVySW5kZXhdOworICAgICAgICByZXR1cm4gY3VycmVudEJ1ZmZlckhhbmRsZS5kYXRhICsgY3Vy
cmVudEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9yZWFkT25s
eUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKTsKKyAgICByZXR1cm4gaXRl
bXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5dGVz
OworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRleCAw
Y2JmNWYzNjk1NzUuLjMyNzQ0YTUxYWZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5oCkBAIC0zNCwyNSArMzQsMTIgQEAgbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNs
YXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJbW1l
ZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKLSAgICBJdGVyYXRvcihjb25zdCBEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRvRW5kIGltbWVkaWF0ZWx5TW92ZVRv
RW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKQotICAgICAgICA6IG1fZGlzcGxheUxpc3Qo
ZGlzcGxheUxpc3QpCi0gICAgewotICAgICAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0g
SW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykKLSAgICAgICAgICAgIG1vdmVUb0VuZCgpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVy
KCk7Ci0gICAgICAgICAgICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgfkl0ZXJhdG9yKCkKLSAgICB7Ci0gICAgICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKLSAg
ICB9CisgICAgSXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3QmLCBJbW1lZGlhdGVseU1vdmVUb0Vu
ZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObyk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkl0ZXJh
dG9yKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJl
dHVybiAmbV9kaXNwbGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9
PSBvdGhlci5tX2N1cnNvcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYg
b3RoZXIpIHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgdm9pZCBvcGVyYXRvcisr
KCkgeyBhZHZhbmNlKCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZXJhdG9yKysoKTsK
IAogICAgIHN0cnVjdCBWYWx1ZSB7CiAgICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKQEAgLTYwLDQ0
ICs0Nyw0MiBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9
OwogICAgIH07CiAKLSAgICBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgcmV0dXJuIHt7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50
QnVmZmVyRm9ySXRlbSB9LAotICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAotICAgICAgICAg
ICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwKLSAgICAgICAgfX07Ci0gICAgfQorICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsKIAogcHJpdmF0
ZToKKyAgICAvLyBUaGVzZSBhcmUgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsK
KyAgICB2b2lkIGNsZWFyQ3VycmVudEl0ZW0oKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG1vdmVUb0VuZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJDdXJyZW50SXRl
bSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ3VycmVudEl0ZW0oKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsKKyAgICBzdHJ1Y3QgQ3VycmVudEl0ZW1SZXN1
bHQgeworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gZGlzcGxheUxpc3RJdGVtOworICAgICAgICBz
dGQ6OnNpemVfdCBzaXplSW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNEcmF3aW5nSXRlbTsKKyAg
ICB9OworICAgIE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PiBjdXJyZW50SXRlbSgpIGNvbnN0
OwogCi0gICAgZW51bSBjbGFzcyBFeHRlbnRVcGRhdGVSZXN1bHQgOiBib29sIHsgRmFpbHVyZSwg
U3VjY2VzcyB9OwotICAgIEV4dGVudFVwZGF0ZVJlc3VsdCB1cGRhdGVDdXJyZW50RHJhd2luZ0l0
ZW1FeHRlbnQoSXRlbVR5cGUpOworICAgIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRC
dWZmZXIoKTsKKyAgICB1aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBjb25zdDsKIAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2VuZGlmCiAKICAgICBJ
dGVtQnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVt
QnVmZmVySWZFeGlzdHMoKTsgfQogCisgICAgLy8gVGhlc2UgYXJlIHRlbXBvcmFyeSwgYW5kIHdp
bGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIzNTYwLgorICAgIG11dGFibGUgdWludDhfdCBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1b
c2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbV0geyAwIH07CisgICAgbXV0YWJsZSB1aW50
OF90KiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9OworCiAgICAgY29uc3QgRGlz
cGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CisgICAgc3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7Cisg
ICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJ
dGVtOworICAgIH07CisgICAgbXV0YWJsZSBPcHRpb25hbDxDdXJyZW50SXRlbUluZm8+IG1fY3Vy
cmVudEl0ZW1JbmZvOwogICAgIHVpbnQ4X3QqIG1fY3Vyc29yIHsgbnVsbHB0ciB9OwogICAgIHNp
emVfdCBtX3JlYWRPbmx5QnVmZmVySW5kZXggeyAwIH07CiAgICAgc2l6ZV90IG1fZHJhd2luZ0l0
ZW1JbmRleCB7IDAgfTsKLSAgICB1aW50OF90KiBtX2N1cnJlbnRFbmRPZkJ1ZmZlciB7IG51bGxw
dHIgfTsKLQotICAgIHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtW3NpemVPZkZp
eGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1dIHsgMCB9OwotICAgIHVpbnQ4X3QqIG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0geyBudWxscHRyIH07Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1cnJl
bnRFeHRlbnQ7Ci0gICAgc2l6ZV90IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0g
ICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>