<?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>235003</bug_id>
          
          <creation_ts>2022-01-08 06:11:25 -0800</creation_ts>
          <short_desc>Use IsNegation bit for more efficient pseudo-class style invalidation</short_desc>
          <delta_ts>2022-01-09 04:54:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>emilio</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1829213</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-08 06:11:25 -0800</bug_when>
    <thetext>We already use it for class invalidation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829214</commentid>
    <comment_count>1</comment_count>
      <attachid>448668</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-08 06:19:44 -0800</bug_when>
    <thetext>Created attachment 448668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829219</commentid>
    <comment_count>2</comment_count>
      <attachid>448669</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-08 06:42:29 -0800</bug_when>
    <thetext>Created attachment 448669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829220</commentid>
    <comment_count>3</comment_count>
      <attachid>448670</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-08 06:53:32 -0800</bug_when>
    <thetext>Created attachment 448670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829228</commentid>
    <comment_count>4</comment_count>
      <attachid>448670</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-08 10:17:21 -0800</bug_when>
    <thetext>Comment on attachment 448670
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        We now know is an invaliation ruleset is for negated context. We can use this to avoid

Does not parse

&gt; Source/WebCore/dom/Element.cpp:799
&gt; +        Style::PseudoClassChangeInvalidation styleInvalidation(*this, CSSSelector::PseudoClassActive, flag, invalidationScope);

flag needs a better name

&gt; Source/WebCore/dom/Element.cpp:851
&gt; +    Style::PseudoClassChangeInvalidation focusStyleInvalidation(*this, { { CSSSelector::PseudoClassFocus, flag }, { CSSSelector::PseudoClassFocusVisible, flag } });

Ditto

&gt; Source/WebCore/dom/Element.cpp:887
&gt; +        Style::PseudoClassChangeInvalidation styleInvalidation(*this, CSSSelector::PseudoClassFocusWithin, flag);

Ditto

&gt; Source/WebCore/dom/Element.cpp:897
&gt; +        Style::PseudoClassChangeInvalidation styleInvalidation(*this, CSSSelector::PseudoClassHover, flag, invalidationScope);

Ditto

&gt; Source/WebCore/dom/Element.cpp:910
&gt; +    Style::PseudoClassChangeInvalidation styleInvalidation(*this, CSSSelector::PseudoClassDrag, flag);

Ditto

&gt; Source/WebCore/html/HTMLInputElement.cpp:978
&gt; -void HTMLInputElement::setChecked(bool nowChecked)
&gt; +void HTMLInputElement::setChecked(bool newChecked)

The rename doesn&apos;t really help. why not just isChecked or checked?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829285</commentid>
    <comment_count>5</comment_count>
      <attachid>448696</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-09 00:30:06 -0800</bug_when>
    <thetext>Created attachment 448696
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829286</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-09 01:02:54 -0800</bug_when>
    <thetext>Committed r287818 (245870@main): &lt;https://commits.webkit.org/245870@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448696.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829287</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-09 01:03:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/87304694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829288</commentid>
    <comment_count>8</comment_count>
      <attachid>448696</attachid>
    <who name="Emilio Cobos Álvarez (:emilio)">emilio</who>
    <bug_when>2022-01-09 02:45:05 -0800</bug_when>
    <thetext>Comment on attachment 448696
Patch for landing

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

&gt; Source/WebCore/dom/Element.cpp:852
&gt; +    document().userActionElements().setFocused(*this, value);

Probably a bug: this is not the value that ends up getting passed to setHasFocusVisible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829291</commentid>
    <comment_count>9</comment_count>
      <attachid>448696</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-09 04:54:31 -0800</bug_when>
    <thetext>Comment on attachment 448696
Patch for landing

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

&gt;&gt; Source/WebCore/dom/Element.cpp:852
&gt;&gt; +    document().userActionElements().setFocused(*this, value);
&gt; 
&gt; Probably a bug: this is not the value that ends up getting passed to setHasFocusVisible

True though I think it just causes unnecessary invalidation in some cases (when focus changes but focus-visible stays the same).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448668</attachid>
            <date>2022-01-08 06:19:44 -0800</date>
            <delta_ts>2022-01-08 06:42:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235003-20220108161942.patch</filename>
            <type>text/plain</type>
            <size>25699</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ3YTU2YWVhMmJhNDVk
YjQ4NTUzMmMxYmE2Y2ZkMjJhNTdiNGQ0MS4uNGY5ZGY1YTQxZTI4MGVlN2RkNGRmMWRmZDA1NGMw
YTg3NjBiYjI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTAxLTA4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgSXNOZWdhdGlvbiBi
aXQgZm9yIG1vcmUgZWZmaWNpZW50IHBzZXVkby1jbGFzcyBzdHlsZSBpbnZhbGlkYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyBrbm93
IGlzIGFuIGludmFsaWF0aW9uIHJ1bGVzZXQgaXMgZm9yIG5lZ2F0ZWQgY29udGV4dC4gV2UgY2Fu
IHVzZSB0aGlzIHRvIGF2b2lkCisgICAgICAgIHVubmVjZXNzYXJ5IHRyYXZlcnNhbCBpbiBwc2V1
ZG8tY2xhc3MgaW52YWxpZGF0aW9uLCBzaW1pbGFyIHRvIHdlIGFscmVhZHkgZG8gd2l0aCBjbGFz
c2VzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SGFzRm9jdXNXaXRoaW4pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SG92ZXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRCZWluZ0RyYWdnZWQpOgorCisgICAgICAg
IFByb3ZpZGUgdGhlIHZhbHVlIGZvciBpbnZhbGlkYXRpb24uCisKKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxl
bWVudDo6YWRkSW52YWxpZERlc2NlbmRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxk
U2V0RWxlbWVudDo6cmVtb3ZlSW52YWxpZERlc2NlbmRhbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpzZXRBbmNlc3RvckRpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJl
Z2lzdGVySW52YWxpZEFzc29jaWF0ZWRGb3JtQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUludmFsaWRBc3NvY2lhdGVkRm9ybUNvbnRyb2xJZk5lZWRl
ZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkU3RhdGUpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aW50ZXJuYWxLZXlFdmVudCk6CisgICAgICAgICogc3R5bGUvUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29sbGVjdFJ1bGVT
ZXRzKToKKworICAgICAgICBTZXR0aW5nIGEgcHNldWRvLWNsYXNzIGNhbiBvbmx5IG1ha2UgYSBy
ZWd1bGFyIHNlbGVjdG9yIChub3QgaW5zaWRlIDpub3QoKSkgc3RhcnQgbWF0Y2hpbmcuCisgICAg
ICAgIFNldHRpbmcgYSBwc2V1ZG8tY2xhc3MgY2FuIG9ubHkgbWFrZSBhIG5lZ2F0ZWQgc2VsZWN0
b3IgKGluc2lkZSA6bm90KCkpIHN0b3AgbWF0Y2hpbmcuCisgICAgICAgIFdlIG9ubHkgbmVlZCB0
byBpbnZhbGlkYXRlIGZvciB0aGUgZmlyc3QgY2FzZSBhZnRlciB0aGUgbXV0YXRpb24gaGFzIGhh
cHBlbmVkIGFuZCBmb3IgdGhlIHNlY29uZAorICAgICAgICBjYXNlIGJlZm9yZSBpdCBoYXBwZW5z
LgorCisgICAgICAgIFRoZSBjYXNlcyBhcmUgcmV2ZXJzZWQgd2hlbiBwc2V1ZG8tY2xhc3MgaXMg
dW5zZXQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbjo6aW52YWxpZGF0ZUJlZm9yZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246
OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cyk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUv
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjplbXBsYWNlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgc2luY2Ugc3RkOjpvcHRpb25hbDo6
ZW1wbGFjZSgpIGlzIGF3a3dhcmQgdG8gdXNlIHdpdGggc3RkOjppbml0aWFsaXplcl9saXN0Lgor
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246
OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6flBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uKToKKwogMjAyMi0wMS0wNyAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW5saW5lIGJsb2NrcyB0aGF0IGNvbnRhaW4gdGV4dCB3aXRoIG1pbi13aWR0aCwg
Ym94LXNpemluZzogYm9yZGVyLWJveCBpbmNvcnJlY3RseSBpbmNsdWRlIHRoZSBib3JkZXIgaW4g
d2lkdGggY2FsY3VsYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGI0MTkyMGQ5NDZl
MjEzODU2ZjI3OTIxNDliNWZlZGI3NWVkMzk4ZWMuLjVkYjU1ZGVmZDlkZTk5MjMwYjY3YzE0NDIy
OWNkMDA0MzdhMzE1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzQ2NSwzMyArNzQ2
NSwzMyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBFbGVtZW50KiBpbgogICAgICAgICAgICAgZWxlbWVudHNUb1Nl
dEhvdmVyLmFwcGVuZChlbGVtZW50KTsKICAgICB9CiAKLSAgICBhdXRvIGNoYW5nZVN0YXRlID0g
W10oYXV0byYgZWxlbWVudHMsIGF1dG8gcHNldWRvQ2xhc3NUeXBlLCBhdXRvJiYgc2V0dGVyKSB7
CisgICAgYXV0byBjaGFuZ2VTdGF0ZSA9IFtdKGF1dG8mIGVsZW1lbnRzLCBhdXRvIHBzZXVkb0Ns
YXNzVHlwZSwgYXV0byB2YWx1ZSwgYXV0byYmIHNldHRlcikgewogICAgICAgICBpZiAoZWxlbWVu
dHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFN0eWxlOjpQc2V1
ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbiB7ICplbGVtZW50cy5s
YXN0KCksIHBzZXVkb0NsYXNzVHlwZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpEZXNjZW5k
YW50cyB9OworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5
bGVJbnZhbGlkYXRpb24geyAqZWxlbWVudHMubGFzdCgpLCBwc2V1ZG9DbGFzc1R5cGUsIHZhbHVl
LCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OkRlc2NlbmRhbnRzIH07CiAKICAgICAgICAgLy8g
V2UgbmVlZCB0byBkbyBkZXNjZW5kYW50IGludmFsaWRhdGlvbiBmb3IgZWFjaCBzaGFkb3cgdHJl
ZSBzZXBhcmF0ZWx5IGFzIHRoZSBzdHlsZSBpcyBwZXItc2NvcGUuCiAgICAgICAgIFZlY3RvcjxT
dHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24+IHNoYWRvd0Rlc2NlbmRhbnRTdHls
ZUludmFsaWRhdGlvbnM7CiAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7
CiAgICAgICAgICAgICBpZiAoaGFzU2hhZG93Um9vdFBhcmVudCgqZWxlbWVudCkpCi0gICAgICAg
ICAgICAgICAgc2hhZG93RGVzY2VuZGFudFN0eWxlSW52YWxpZGF0aW9ucy5hcHBlbmQoeyAqZWxl
bWVudCwgcHNldWRvQ2xhc3NUeXBlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OkRlc2NlbmRh
bnRzIH0pOworICAgICAgICAgICAgICAgIHNoYWRvd0Rlc2NlbmRhbnRTdHlsZUludmFsaWRhdGlv
bnMuYXBwZW5kKHsgKmVsZW1lbnQsIHBzZXVkb0NsYXNzVHlwZSwgdmFsdWUsIFN0eWxlOjpJbnZh
bGlkYXRpb25TY29wZTo6RGVzY2VuZGFudHMgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykKICAgICAgICAgICAgIHNldHRlcigqZWxlbWVudCk7
CiAgICAgfTsKIAotICAgIGNoYW5nZVN0YXRlKGVsZW1lbnRzVG9DbGVhckFjdGl2ZSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBbXShhdXRvJiBlbGVtZW50KSB7CisgICAgY2hhbmdl
U3RhdGUoZWxlbWVudHNUb0NsZWFyQWN0aXZlLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3Rp
dmUsIGZhbHNlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0QWN0aXZl
KGZhbHNlLCBmYWxzZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpTZWxmQ2hpbGRyZW5BbmRT
aWJsaW5ncyk7CiAgICAgfSk7Ci0gICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEFjdGl2ZSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBbXShhdXRvJiBlbGVtZW50KSB7CisgICAg
Y2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEFjdGl2ZSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
QWN0aXZlLCB0cnVlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0QWN0
aXZlKHRydWUsIGZhbHNlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OlNlbGZDaGlsZHJlbkFu
ZFNpYmxpbmdzKTsKICAgICB9KTsKLSAgICBjaGFuZ2VTdGF0ZShlbGVtZW50c1RvQ2xlYXJIb3Zl
ciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIsIFtdKGF1dG8mIGVsZW1lbnQpIHsKKyAg
ICBjaGFuZ2VTdGF0ZShlbGVtZW50c1RvQ2xlYXJIb3ZlciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzSG92ZXIsIGZhbHNlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0
SG92ZXJlZChmYWxzZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpTZWxmQ2hpbGRyZW5BbmRT
aWJsaW5ncyk7CiAgICAgfSk7Ci0gICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEhvdmVyLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3ZlciwgW10oYXV0byYgZWxlbWVudCkgeworICAgIGNo
YW5nZVN0YXRlKGVsZW1lbnRzVG9TZXRIb3ZlciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92
ZXIsIHRydWUsIFtdKGF1dG8mIGVsZW1lbnQpIHsKICAgICAgICAgZWxlbWVudC5zZXRIb3ZlcmVk
KHRydWUsIFN0eWxlOjpJbnZhbGlkYXRpb25TY29wZTo6U2VsZkNoaWxkcmVuQW5kU2libGluZ3Mp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDhjM2NiOGYzYTc2MGFlZmEx
NGMzOGFjNDhjMmViYzc5NTJhMjk5MzAuLjEyOWZlNzY3YTQzOWE2MGYxOGQ4Yzc4YmNjZGE2NDIy
YjMwZDA2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lk
IEVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2UsIFN0eWxlOjpJbnZhbGlk
YXRpb25TY29wZSBpbnZhbGlkYQogICAgIGlmIChmbGFnID09IGFjdGl2ZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRp
b24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2
ZSwgaW52YWxpZGF0aW9uU2NvcGUpOworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc0FjdGl2ZSwgZmxhZywgaW52YWxpZGF0aW9uU2NvcGUpOwogICAgICAgICBkb2N1bWVudCgp
LnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEFjdGl2ZSgqdGhpcywgZmxhZyk7CiAgICAgfQogCkBA
IC04NDgsNyArODQ4LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRGb2N1cyhib29sIGZsYWcsIEZvY3Vz
VmlzaWJpbGl0eSB2aXNpYmlsaXR5KQogICAgIGlmIChmbGFnID09IGZvY3VzZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
biBmb2N1c1N0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0ZvY3VzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1c1Zpc2libGUgfSk7CisgICAgU3R5
bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGZvY3VzU3R5bGVJbnZhbGlkYXRpb24o
KnRoaXMsIHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXMsIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0ZvY3VzVmlzaWJsZSB9LCB7IGZsYWcsIGZsYWcgfSk7CiAgICAgZG9jdW1lbnQoKS51
c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRGb2N1c2VkKCp0aGlzLCBmbGFnKTsKIAogICAgIC8vIFNo
YWRvdyBob3N0IHdpdGggYSBzbG90IHRoYXQgY29udGFpbiBmb2N1c2VkIGVsZW1lbnQgaXMgbm90
IGNvbnNpZGVyZWQgZm9jdXNlZC4KQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIEVsZW1lbnQ6OnNl
dEhhc0ZvY3VzV2l0aGluKGJvb2wgZmxhZykKICAgICBpZiAoaGFzRm9jdXNXaXRoaW4oKSA9PSBm
bGFnKQogICAgICAgICByZXR1cm47CiAgICAgewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0ZvY3VzV2l0aGluKTsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NGb2N1c1dpdGhpbiwgZmxhZyk7CiAgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVs
ZW1lbnRzKCkuc2V0SGFzRm9jdXNXaXRoaW4oKnRoaXMsIGZsYWcpOwogICAgIH0KIH0KQEAgLTg5
NCw3ICs4OTQsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEhvdmVyZWQoYm9vbCBmbGFnLCBTdHlsZTo6
SW52YWxpZGF0aW9uU2NvcGUgaW52YWxpZGF0aW9uU2NvcGUpCiAgICAgaWYgKGZsYWcgPT0gaG92
ZXJlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc0hvdmVyLCBpbnZhbGlkYXRpb25TY29wZSk7CisgICAgICAgIFN0eWxlOjpQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIsIGZsYWcsIGludmFsaWRhdGlvblNjb3BlKTsKICAg
ICAgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRIb3ZlcmVkKCp0aGlzLCBm
bGFnKTsKICAgICB9CiAKQEAgLTkwNyw3ICs5MDcsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldEJlaW5n
RHJhZ2dlZChib29sIGZsYWcpCiAgICAgaWYgKGZsYWcgPT0gaXNCZWluZ0RyYWdnZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
IHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEcmFnKTsK
KyAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRp
b24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RyYWcsIGZsYWcpOwogICAgIGRvY3Vt
ZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0QmVpbmdEcmFnZ2VkKCp0aGlzLCBmbGFnKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXgg
ZDRiMTEwYTk2NWNjYzkwMTU5Njk5ZGVkZTE5MzBjMTgzOTk2N2JiNi4uNWFjYjA5ZmM0MzI3NjNi
ZTc2NTRmYzE1NDRmMGMzMjgyZWJjYjhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
aWVsZFNldEVsZW1lbnQuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBIVE1MRmllbGRTZXRF
bGVtZW50OjphZGRJbnZhbGlkRGVzY2VuZGFudChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
JiBpbnYKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uPiBzdHlsZUludmFsaWRhdGlvbjsKICAgICBpZiAobV9pbnZhbGlkRGVzY2VuZGFudHMu
Y29tcHV0ZXNFbXB0eSgpKQotICAgICAgICBzdHlsZUludmFsaWRhdGlvbi5lbXBsYWNlKCp0aGlz
LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4geyBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSW52
YWxpZCB9KTsKKyAgICAgICAgZW1wbGFjZShzdHlsZUludmFsaWRhdGlvbiwgKnRoaXMsIHsgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFs
aWQgfSwgeyBmYWxzZSwgdHJ1ZSB9KTsKIAogICAgIG1faW52YWxpZERlc2NlbmRhbnRzLmFkZChp
bnZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KTsKIH0KQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEhU
TUxGaWVsZFNldEVsZW1lbnQ6OnJlbW92ZUludmFsaWREZXNjZW5kYW50KGNvbnN0IEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQmCiAKICAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CiAgICAgaWYgKG1faW52YWxpZERl
c2NlbmRhbnRzLmNvbXB1dGVTaXplKCkgPT0gMSkKLSAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24u
ZW1wbGFjZSgqdGhpcywgc3RkOjppbml0aWFsaXplcl9saXN0PENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc1R5cGU+IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQsIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0ludmFsaWQgfSk7CisgICAgICAgIGVtcGxhY2Uoc3R5bGVJbnZhbGlkYXRpb24s
ICp0aGlzLCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1ZhbGlkLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NJbnZhbGlkIH0sIHsgdHJ1ZSwgZmFsc2UgfSk7CiAKICAgICBtX2ludmFsaWREZXNj
ZW5kYW50cy5yZW1vdmUoZm9ybUNvbnRyb2xFbGVtZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDVmMmFmMjVhN2VlYzA3NzE5
NjI5YjUyODBjYWNmMzNlMGQzYTAxY2IuLjI1NzMwMzBjNzhlZjVmM2UzMDcwN2I4NjM5MjkzMzhj
OWExNjUwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
c2V0QW5jZXN0b3JEaXNhYmxlZChib29sIGlzRGlzYWJsZWQpCiAgICAgaWYgKG1fZGlzYWJsZWRC
eUFuY2VzdG9yRmllbGRzZXQgPT0gaXNEaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRpc2FibGVkSW52YWxpZGF0aW9u
KCp0aGlzLCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NFbmFibGVkIH0pOworICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NEaXNhYmxlZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCB9LCB7IGlzRGlz
YWJsZWQsICFpc0Rpc2FibGVkIH0pOwogCiAgICAgbV9kaXNhYmxlZEJ5QW5jZXN0b3JGaWVsZHNl
dCA9IGlzRGlzYWJsZWQ7CiAgICAgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKTsKQEAgLTE2MSw3ICsx
NjEsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0bwogICAgICAgICBpZiAoY2FuQmVBY3R1YWxs
eURpc2FibGVkKCkpIHsKICAgICAgICAgICAgIGJvb2wgbmV3RGlzYWJsZWQgPSAhdmFsdWUuaXNO
dWxsKCk7CiAgICAgICAgICAgICBpZiAobV9kaXNhYmxlZCAhPSBuZXdEaXNhYmxlZCkgewotICAg
ICAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBkaXNhYmxl
ZEludmFsaWRhdGlvbigqdGhpcywgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCB9KTsKKyAgICAgICAgICAgICAgICBTdHls
ZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZGlzYWJsZWRJbnZhbGlkYXRpb24oKnRo
aXMsIHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlzYWJsZWQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0VuYWJsZWQgfSwgeyBuZXdEaXNhYmxlZCwgIW5ld0Rpc2FibGVkIH0pOwogICAgICAg
ICAgICAgICAgIG1fZGlzYWJsZWQgPSBuZXdEaXNhYmxlZDsKICAgICAgICAgICAgICAgICBkaXNh
YmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICAgICAgICAgIH0KQEAgLTUzMiw3ICs1MzIsNyBA
QCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZhbGlkaXR5KCkKICAgICBib29s
IG5ld0lzVmFsaWQgPSB0aGlzLT5jb21wdXRlVmFsaWRpdHkoKTsKIAogICAgIGlmIChuZXdJc1Zh
bGlkICE9IG1faXNWYWxpZCkgewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVmFsaWQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQgfSk7CisgICAgICAgIFN0
eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhp
cywgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzSW52YWxpZCB9LCB7IG5ld0lzVmFsaWQsICFuZXdJc1ZhbGlkIH0pOwogCiAgICAgICAgIG1f
aXNWYWxpZCA9IG5ld0lzVmFsaWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAppbmRleCA5MDdmMTBlMmFiNDY4MGZiNGZjOTA2NzJlODZjNzFmNjE3Mzg0Zjg5Li5jYjBh
Y2RkN2MxOTJhYzQ1MTg4ZDkwYTdiMjkzNmVjOWVhMmY4ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC02NjgsNyArNjY4LDcgQEAgdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnJlZ2lzdGVySW52YWxpZEFzc29jaWF0ZWRGb3JtQ29udHJvbChjb25zdCBIVE1MRm9y
bUNvbnRyb2wKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uPiBzdHlsZUludmFsaWRhdGlvbjsKICAgICBpZiAobV9pbnZhbGlkQXNzb2NpYXRl
ZEZvcm1Db250cm9scy5jb21wdXRlc0VtcHR5KCkpCi0gICAgICAgIHN0eWxlSW52YWxpZGF0aW9u
LmVtcGxhY2UoKnRoaXMsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NUeXBlPiB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1ZhbGlkLCBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NJbnZhbGlkIH0pOworICAgICAgICBlbXBsYWNlKHN0eWxlSW52YWxpZGF0aW9u
LCAqdGhpcywgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzSW52YWxpZCB9LCB7IGZhbHNlLCB0cnVlIH0pOwogCiAgICAgbV9pbnZhbGlkQXNz
b2NpYXRlZEZvcm1Db250cm9scy5hZGQoY29uc3RfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Jj4oZm9ybUNvbnRyb2xFbGVtZW50KSk7CiB9CkBAIC02ODAsNyArNjgwLDcgQEAgdm9pZCBIVE1M
Rm9ybUVsZW1lbnQ6OnJlbW92ZUludmFsaWRBc3NvY2lhdGVkRm9ybUNvbnRyb2xJZk5lZWRlZChj
b25zdCBIVE1MRm9ybUMKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OlBzZXVkb0NsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uPiBzdHlsZUludmFsaWRhdGlvbjsKICAgICBpZiAobV9pbnZhbGlkQXNz
b2NpYXRlZEZvcm1Db250cm9scy5jb21wdXRlU2l6ZSgpID09IDEpCi0gICAgICAgIHN0eWxlSW52
YWxpZGF0aW9uLmVtcGxhY2UoKnRoaXMsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NUeXBlPiB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1ZhbGlkLCBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkIH0pOworICAgICAgICBlbXBsYWNlKHN0eWxlSW52
YWxpZGF0aW9uLCAqdGhpcywgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzSW52YWxpZCB9LCB7IHRydWUsIGZhbHNlIH0pOwogCiAgICAgbV9p
bnZhbGlkQXNzb2NpYXRlZEZvcm1Db250cm9scy5yZW1vdmUoZm9ybUNvbnRyb2xFbGVtZW50KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDhhOWJiYzUw
Y2U5Zjk5ZGJlZmEwN2EzNDU0OTFjMDEyYzhiNGZiMjMuLmZlZWQ5OGY3MjkyODQ4MjY2MWQ4ZGQ4
NzMyOWUxZTk2NWI2OGI5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcApAQCAtOTc1LDE3ICs5NzUsMTcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1RleHRU
eXBlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlzVGV4dFR5cGUoKTsKIH0KIAot
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKGJvb2wgbm93Q2hlY2tlZCkKK3ZvaWQg
SFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tlZChib29sIG5ld0NoZWNrZWQpCiB7Ci0gICAgaWYg
KGNoZWNrZWQoKSA9PSBub3dDaGVja2VkKQorICAgIGlmIChjaGVja2VkKCkgPT0gbmV3Q2hlY2tl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnB1dFR5cGUtPndpbGxVcGRhdGVDaGVja2Vk
bmVzcyhub3dDaGVja2VkKTsKKyAgICBtX2lucHV0VHlwZS0+d2lsbFVwZGF0ZUNoZWNrZWRuZXNz
KG5ld0NoZWNrZWQpOwogCi0gICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
IGNoZWNrZWRJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0NoZWNr
ZWQpOworICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBjaGVja2VkSW52
YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NDaGVja2VkLCBuZXdDaGVj
a2VkKTsKIAogICAgIG1fZGlydHlDaGVja2VkbmVzc0ZsYWcgPSB0cnVlOwotICAgIG1faXNDaGVj
a2VkID0gbm93Q2hlY2tlZDsKKyAgICBtX2lzQ2hlY2tlZCA9IG5ld0NoZWNrZWQ7CiAKICAgICBp
ZiAoUmFkaW9CdXR0b25Hcm91cHMqIGJ1dHRvbnMgPSByYWRpb0J1dHRvbkdyb3VwcygpKQogICAg
ICAgICBidXR0b25zLT51cGRhdGVDaGVja2VkU3RhdGUoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKaW5kZXggZWRhNTk4OTczOTFlMzcxNjBlNTdj
YzhhNDM3NDQ3YzE4MjZiZjJmOC4uNGNiNDE1ODgzYTJjZWU2YzJjMWIyN2JlNTk2N2MxZGJkMjEz
YjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCkBA
IC04OSwxMSArODksMTEgQEAgdm9pZCBIVE1MT3B0R3JvdXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3QKICAgICBpZiAobmFtZSA9
PSBkaXNhYmxlZEF0dHIpIHsKICAgICAgICAgYm9vbCBuZXdEaXNhYmxlZCA9ICF2YWx1ZS5pc051
bGwoKTsKICAgICAgICAgaWYgKG1faXNEaXNhYmxlZCAhPSBuZXdEaXNhYmxlZCkgewotICAgICAg
ICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRpc2FibGVkSW52YWxp
ZGF0aW9uKCp0aGlzLCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVkIH0pOworICAgICAgICAgICAgU3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRpc2FibGVkSW52YWxpZGF0aW9uKCp0aGlzLCB7IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmFi
bGVkIH0sIHsgbmV3RGlzYWJsZWQsICFuZXdEaXNhYmxlZCB9KTsKIAogICAgICAgICAgICAgVmVj
dG9yPFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbj4gb3B0aW9uSW52YWxpZGF0
aW9uOwogICAgICAgICAgICAgZm9yIChhdXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNPZlR5
cGU8SFRNTE9wdGlvbkVsZW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgICAgICAgICBvcHRpb25JbnZh
bGlkYXRpb24uYXBwZW5kKHsgZGVzY2VuZGFudCwgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NE
aXNhYmxlZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCB9IH0pOworICAgICAgICAg
ICAgICAgIG9wdGlvbkludmFsaWRhdGlvbi5hcHBlbmQoeyBkZXNjZW5kYW50LCB7IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVk
IH0sIHsgbmV3RGlzYWJsZWQsICFuZXdEaXNhYmxlZCB9IH0pOwogCiAgICAgICAgICAgICBtX2lz
RGlzYWJsZWQgPSBuZXdEaXNhYmxlZDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcAppbmRleCA0MzNiYWI4NzkwMmY0NjdmNmY0OGIzODI0Y2YyZWUy
NDcyMjE4M2I3Li42NjYyNTc3Mjk2ZDg1ZTcwNzM3ZDRjNGQxODlhMWI5M2JlNzkyYWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMTc4LDE0ICsxNzgs
MTQgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKICAgICBpZiAobmFtZSA9PSBkaXNhYmxlZEF0
dHIpIHsKICAgICAgICAgYm9vbCBuZXdEaXNhYmxlZCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAg
ICAgaWYgKG1fZGlzYWJsZWQgIT0gbmV3RGlzYWJsZWQpIHsKLSAgICAgICAgICAgIFN0eWxlOjpQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywg
eyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzRW5hYmxlZCB9KTsKKyAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NEaXNhYmxlZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCB9LCB7IG5ld0Rp
c2FibGVkLCAhbmV3RGlzYWJsZWQgfSk7CiAgICAgICAgICAgICBtX2Rpc2FibGVkID0gbmV3RGlz
YWJsZWQ7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgp
Lmhhc0VmZmVjdGl2ZUFwcGVhcmFuY2UoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50
aGVtZSgpLnN0YXRlQ2hhbmdlZCgqcmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpF
bmFibGVkKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0dHIp
IHsKICAgICAgICAgLy8gRklYTUU6IFVzZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBp
biBvdGhlciBlbGVtZW50cyB0aGF0IGltcGxlbWVudCBtYXRjaGVzRGVmYXVsdFBzZXVkb0NsYXNz
KCkuCi0gICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBkZWZhdWx0
SW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEZWZhdWx0KTsKKyAg
ICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRlZmF1bHRJbnZhbGlk
YXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RlZmF1bHQsICF2YWx1ZS5pc051
bGwoKSk7CiAgICAgICAgIG1faXNEZWZhdWx0ID0gIXZhbHVlLmlzTnVsbCgpOwogCiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgbWF0Y2ggd2hhdCB0aGUgSFRNTCBzcGVjaWZpY2F0aW9u
IHNheXMuCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0U2Vs
ZWN0ZWRTdGF0ZShib29sIHNlbGVjdGVkKQogICAgIGlmIChtX2lzU2VsZWN0ZWQgPT0gc2VsZWN0
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbiBjaGVja2VkSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NDaGVja2VkKTsKKyAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gY2hl
Y2tlZEludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQ2hlY2tlZCwg
c2VsZWN0ZWQpOwogCiAgICAgbV9pc1NlbGVjdGVkID0gc2VsZWN0ZWQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBmMWRiNTIwODQ2NTQ1NjE2NWVmN2RmNmEzYzNiYzg1
ZDkzOWE2YTkyLi4xNmQ1Mzg5ZGZmZmFjMzI1NGZjZWY0ZmE3OWEwNzY1NWRkMDAzMzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNjQwLDcgKzM2NDAsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aW50ZXJuYWxLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQmIGluaXRpYWxLZXlFdmVudAogICAgICAgICBib29sIHVzZXJIYXNJbnRlcmFjdGVkVmlhS2V5
d29yZCA9IGtleWRvd24tPm1vZGlmaWVyS2V5cygpLmlzRW1wdHkoKSB8fCAoKGtleWRvd24tPnNo
aWZ0S2V5KCkgfHwga2V5ZG93bi0+Y2Fwc0xvY2tLZXkoKSkgJiYgIWluaXRpYWxLZXlFdmVudC50
ZXh0KCkuaXNFbXB0eSgpKTsKIAogICAgICAgICBpZiAoZWxlbWVudC5mb2N1c2VkKCkgJiYgdXNl
ckhhc0ludGVyYWN0ZWRWaWFLZXl3b3JkKSB7Ci0gICAgICAgICAgICBTdHlsZTo6UHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24gZm9jdXNWaXNpYmxlU3R5bGVJbnZhbGlkYXRpb24oZWxlbWVu
dCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXNWaXNpYmxlKTsKKyAgICAgICAgICAgIFN0
eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBmb2N1c1Zpc2libGVTdHlsZUludmFs
aWRhdGlvbihlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1c1Zpc2libGUsIHRy
dWUpOwogICAgICAgICAgICAgZWxlbWVudC5zZXRIYXNGb2N1c1Zpc2libGUodHJ1ZSk7CiAgICAg
ICAgIH0KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCmluZGV4IDFlZTBmZDE5NzdjNzkyOTYzZGM5Mzc0NTNj
NjlmNzM1MDA5ZTBlYmEuLjZkMTFkZTZiNTViZTFkZjhhZmM4ZTRmZWQ4MDlkZjYwNTc5YTJjZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIFZlY3RvcjxQc2V1ZG9DbGFz
c0ludmFsaWRhdGlvbktleSwgND4gbWFrZVBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5cyhDU1MK
ICAgICByZXR1cm4ga2V5czsKIH07CiAKLXZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRp
b246OmNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1
ZG9DbGFzcywgSW52YWxpZGF0aW9uU2NvcGUgaW52YWxpZGF0aW9uU2NvcGUpCit2b2lkIFBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3MsIGJvb2wgdmFsdWUsIEludmFsaWRhdGlvblNj
b3BlIGludmFsaWRhdGlvblNjb3BlKQogewogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZUN1cnJl
bnQgPSBmYWxzZTsKICAgICBib29sIG1heUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlID0gZmFsc2U7
CkBAIC03MiwxMCArNzIsMTAgQEAgdm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6
Y29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MKICAgICAgICAgbV9l
bGVtZW50LmludmFsaWRhdGVTdHlsZSgpOwogCiAgICAgZm9yIChhdXRvJiBrZXkgOiBtYWtlUHNl
dWRvQ2xhc3NJbnZhbGlkYXRpb25LZXlzKHBzZXVkb0NsYXNzLCBtX2VsZW1lbnQpKQotICAgICAg
ICBjb2xsZWN0UnVsZVNldHMoa2V5LCBpbnZhbGlkYXRpb25TY29wZSk7CisgICAgICAgIGNvbGxl
Y3RSdWxlU2V0cyhrZXksIHZhbHVlLCBpbnZhbGlkYXRpb25TY29wZSk7CiB9CiAKLXZvaWQgUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbGxlY3RSdWxlU2V0cyhjb25zdCBQc2V1ZG9D
bGFzc0ludmFsaWRhdGlvbktleSYga2V5LCBJbnZhbGlkYXRpb25TY29wZSBpbnZhbGlkYXRpb25T
Y29wZSkKK3ZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbGxlY3RSdWxlU2V0
cyhjb25zdCBQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleSYga2V5LCBib29sIHZhbHVlLCBJbnZh
bGlkYXRpb25TY29wZSBpbnZhbGlkYXRpb25TY29wZSkKIHsKICAgICBhdXRvJiBydWxlU2V0cyA9
IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKICAgICBhdXRvKiBpbnZhbGlk
YXRpb25SdWxlU2V0cyA9IHJ1bGVTZXRzLnBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMo
a2V5KTsKQEAgLTEwMCwxNCArMTAwLDI0IEBAIHZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb246OmNvbGxlY3RSdWxlU2V0cyhjb25zdCBQc2V1ZG9DbGFzc0ludmFsaWRhdGlvCiAgICAg
ICAgIGlmICghc2hvdWxkSW52YWxpZGF0ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIEludmFsaWRhdG9yOjphZGRUb01hdGNoRWxlbWVudFJ1bGVTZXRzKG1fbWF0Y2hFbGVtZW50
UnVsZVNldHMsIGludmFsaWRhdGlvblJ1bGVTZXQpOworICAgICAgICBib29sIGludmFsaWRhdGVC
ZWZvcmVDaGFuZ2UgPSBpbnZhbGlkYXRpb25SdWxlU2V0LmlzTmVnYXRpb24gPT0gSXNOZWdhdGlv
bjo6WWVzID8gdmFsdWUgOiAhdmFsdWU7CisgICAgICAgIGlmIChpbnZhbGlkYXRlQmVmb3JlQ2hh
bmdlKQorICAgICAgICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMo
bV9iZWZvcmVDaGFuZ2VSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIEludmFsaWRhdG9yOjphZGRUb01hdGNoRWxlbWVudFJ1bGVTZXRzKG1f
YWZ0ZXJDaGFuZ2VSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CiAgICAgfQogfQogCi12
b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGVXaXRoUnVs
ZVNldHMoKQordm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUJl
Zm9yZUNoYW5nZSgpCiB7Ci0gICAgSW52YWxpZGF0b3I6OmludmFsaWRhdGVXaXRoTWF0Y2hFbGVt
ZW50UnVsZVNldHMobV9lbGVtZW50LCBtX21hdGNoRWxlbWVudFJ1bGVTZXRzKTsKKyAgICBJbnZh
bGlkYXRvcjo6aW52YWxpZGF0ZVdpdGhNYXRjaEVsZW1lbnRSdWxlU2V0cyhtX2VsZW1lbnQsIG1f
YmVmb3JlQ2hhbmdlUnVsZVNldHMpOwogfQogCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uOjppbnZhbGlkYXRlQWZ0ZXJDaGFuZ2UoKQoreworICAgIEludmFsaWRhdG9yOjppbnZh
bGlkYXRlV2l0aE1hdGNoRWxlbWVudFJ1bGVTZXRzKG1fZWxlbWVudCwgbV9hZnRlckNoYW5nZVJ1
bGVTZXRzKTsKK30KKworCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Q
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAppbmRleCA5Nzk0NzQxY2ZjN2QxMGY2ZDkyNzFk
YmIyNjFiNDIyNzUxZDJlNzJmLi5jNGYwY2ZmZjI2NjRmNTJkMzc0MDdkYTAzMGY0YjliYjUxNmM4
NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uLmgKQEAgLTM1LDQ5ICszNSw2MCBAQCBuYW1lc3BhY2UgU3R5bGUgewogCiBj
bGFzcyBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiB7CiBwdWJsaWM6Ci0gICAgUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1R5cGUsIEludmFsaWRhdGlvblNjb3BlID0gSW52YWxpZGF0aW9uU2NvcGU6OkFsbCk7Ci0gICAg
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYsIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgSW52YWxpZGF0aW9uU2NvcGUgPSBJ
bnZhbGlkYXRpb25TY29wZTo6QWxsKTsKKyAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bihFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgYm9vbCB2YWx1ZSwgSW52
YWxpZGF0aW9uU2NvcGUgPSBJbnZhbGlkYXRpb25TY29wZTo6QWxsKTsKKyAgICBQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50Jiwgc3RkOjppbml0aWFsaXplcl9saXN0PENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Ym9vbD4gdmFs
dWVzKTsKIAogICAgIH5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbigpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgY29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NU
eXBlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGUpOwotICAgIHZvaWQgY29sbGVjdFJ1bGVTZXRz
KGNvbnN0IFBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5JiwgSW52YWxpZGF0aW9uU2NvcGUpOwot
ICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CisgICAgdm9pZCBjb21wdXRl
SW52YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIGJvb2wgdmFsdWUsIFN0
eWxlOjpJbnZhbGlkYXRpb25TY29wZSk7CisgICAgdm9pZCBjb2xsZWN0UnVsZVNldHMoY29uc3Qg
UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXkmLCBib29sIHZhbHVlLCBJbnZhbGlkYXRpb25TY29w
ZSk7CisgICAgdm9pZCBpbnZhbGlkYXRlQmVmb3JlQ2hhbmdlKCk7CisgICAgdm9pZCBpbnZhbGlk
YXRlQWZ0ZXJDaGFuZ2UoKTsKIAogICAgIGNvbnN0IGJvb2wgbV9pc0VuYWJsZWQ7CiAgICAgRWxl
bWVudCYgbV9lbGVtZW50OwogCi0gICAgSW52YWxpZGF0b3I6Ok1hdGNoRWxlbWVudFJ1bGVTZXRz
IG1fbWF0Y2hFbGVtZW50UnVsZVNldHM7CisgICAgSW52YWxpZGF0b3I6Ok1hdGNoRWxlbWVudFJ1
bGVTZXRzIG1fYmVmb3JlQ2hhbmdlUnVsZVNldHM7CisgICAgSW52YWxpZGF0b3I6Ok1hdGNoRWxl
bWVudFJ1bGVTZXRzIG1fYWZ0ZXJDaGFuZ2VSdWxlU2V0czsKIH07CiAKLWlubGluZSBQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxl
bWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5
cGUsIFN0eWxlOjpJbnZhbGlkYXRpb25TY29wZSBpbnZhbGlkYXRpb25TY29wZSkKK2lubGluZSB2
b2lkIGVtcGxhY2Uoc3RkOjpvcHRpb25hbDxQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbj4m
IGludmFsaWRhdGlvbiwgRWxlbWVudCYgZWxlbWVudCwgc3RkOjppbml0aWFsaXplcl9saXN0PENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+IHBzZXVkb0NsYXNzZXMsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxib29sPiB2YWx1ZXMpCit7CisgICAgaW52YWxpZGF0aW9uLmVtcGxhY2UoZWxlbWVu
dCwgcHNldWRvQ2xhc3NlcywgdmFsdWVzKTsKK30KKworaW5saW5lIFBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50JiBlbGVt
ZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzLCBib29sIHZhbHVl
LCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGUgaW52YWxpZGF0aW9uU2NvcGUpCiAgICAgOiBtX2lz
RW5hYmxlZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSkKICAgICAsIG1fZWxlbWVu
dChlbGVtZW50KQogCiB7CiAgICAgaWYgKCFtX2lzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwot
ICAgIGNvbXB1dGVJbnZhbGlkYXRpb24ocHNldWRvQ2xhc3NUeXBlLCBpbnZhbGlkYXRpb25TY29w
ZSk7Ci0gICAgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CisgICAgY29tcHV0ZUludmFs
aWRhdGlvbihwc2V1ZG9DbGFzcywgdmFsdWUsIGludmFsaWRhdGlvblNjb3BlKTsKKyAgICBpbnZh
bGlkYXRlQmVmb3JlQ2hhbmdlKCk7CiB9CiAKLWlubGluZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxlbWVudCwg
c3RkOjppbml0aWFsaXplcl9saXN0PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+IHBzZXVk
b0NsYXNzZXMsIFN0eWxlOjpJbnZhbGlkYXRpb25TY29wZSBpbnZhbGlkYXRpb25TY29wZSkKK2lu
bGluZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24oRWxlbWVudCYgZWxlbWVudCwgc3RkOjppbml0aWFsaXplcl9saXN0PENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1R5cGU+IHBzZXVkb0NsYXNzZXMsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxib29sPiB2YWx1ZXMpCiAgICAgOiBtX2lzRW5hYmxlZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZh
bGlkYXRpb24oKSkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogewogICAgIGlmICghbV9pc0Vu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKLSAgICBmb3IgKGF1dG8gcHNldWRvQ2xhc3MgOiBwc2V1
ZG9DbGFzc2VzKQotICAgICAgICBjb21wdXRlSW52YWxpZGF0aW9uKHBzZXVkb0NsYXNzLCBpbnZh
bGlkYXRpb25TY29wZSk7Ci0gICAgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CisgICAg
YXV0byogdmFsdWUgPSB2YWx1ZXMuYmVnaW4oKTsKKyAgICBmb3IgKGF1dG8gcHNldWRvQ2xhc3Mg
OiBwc2V1ZG9DbGFzc2VzKSB7CisgICAgICAgIEFTU0VSVCh2YWx1ZSAhPSB2YWx1ZXMuZW5kKCkp
OworICAgICAgICBjb21wdXRlSW52YWxpZGF0aW9uKHBzZXVkb0NsYXNzLCAqdmFsdWUsIFN0eWxl
OjpJbnZhbGlkYXRpb25TY29wZTo6QWxsKTsKKyAgICAgICAgKyt2YWx1ZTsKKyAgICB9CisgICAg
aW52YWxpZGF0ZUJlZm9yZUNoYW5nZSgpOwogfQogCiBpbmxpbmUgUHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb246On5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbigpCiB7CiAgICAgaWYg
KCFtX2lzRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwotICAgIGludmFsaWRhdGVTdHlsZVdpdGhS
dWxlU2V0cygpOworICAgIGludmFsaWRhdGVBZnRlckNoYW5nZSgpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448669</attachid>
            <date>2022-01-08 06:42:29 -0800</date>
            <delta_ts>2022-01-08 06:53:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235003-20220108164227.patch</filename>
            <type>text/plain</type>
            <size>25550</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ3YTU2YWVhMmJhNDVk
YjQ4NTUzMmMxYmE2Y2ZkMjJhNTdiNGQ0MS4uNGY5ZGY1YTQxZTI4MGVlN2RkNGRmMWRmZDA1NGMw
YTg3NjBiYjI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTAxLTA4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgSXNOZWdhdGlvbiBi
aXQgZm9yIG1vcmUgZWZmaWNpZW50IHBzZXVkby1jbGFzcyBzdHlsZSBpbnZhbGlkYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyBrbm93
IGlzIGFuIGludmFsaWF0aW9uIHJ1bGVzZXQgaXMgZm9yIG5lZ2F0ZWQgY29udGV4dC4gV2UgY2Fu
IHVzZSB0aGlzIHRvIGF2b2lkCisgICAgICAgIHVubmVjZXNzYXJ5IHRyYXZlcnNhbCBpbiBwc2V1
ZG8tY2xhc3MgaW52YWxpZGF0aW9uLCBzaW1pbGFyIHRvIHdlIGFscmVhZHkgZG8gd2l0aCBjbGFz
c2VzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SGFzRm9jdXNXaXRoaW4pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SG92ZXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRCZWluZ0RyYWdnZWQpOgorCisgICAgICAg
IFByb3ZpZGUgdGhlIHZhbHVlIGZvciBpbnZhbGlkYXRpb24uCisKKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxl
bWVudDo6YWRkSW52YWxpZERlc2NlbmRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxk
U2V0RWxlbWVudDo6cmVtb3ZlSW52YWxpZERlc2NlbmRhbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpzZXRBbmNlc3RvckRpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJl
Z2lzdGVySW52YWxpZEFzc29jaWF0ZWRGb3JtQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUludmFsaWRBc3NvY2lhdGVkRm9ybUNvbnRyb2xJZk5lZWRl
ZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkU3RhdGUpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aW50ZXJuYWxLZXlFdmVudCk6CisgICAgICAgICogc3R5bGUvUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29sbGVjdFJ1bGVT
ZXRzKToKKworICAgICAgICBTZXR0aW5nIGEgcHNldWRvLWNsYXNzIGNhbiBvbmx5IG1ha2UgYSBy
ZWd1bGFyIHNlbGVjdG9yIChub3QgaW5zaWRlIDpub3QoKSkgc3RhcnQgbWF0Y2hpbmcuCisgICAg
ICAgIFNldHRpbmcgYSBwc2V1ZG8tY2xhc3MgY2FuIG9ubHkgbWFrZSBhIG5lZ2F0ZWQgc2VsZWN0
b3IgKGluc2lkZSA6bm90KCkpIHN0b3AgbWF0Y2hpbmcuCisgICAgICAgIFdlIG9ubHkgbmVlZCB0
byBpbnZhbGlkYXRlIGZvciB0aGUgZmlyc3QgY2FzZSBhZnRlciB0aGUgbXV0YXRpb24gaGFzIGhh
cHBlbmVkIGFuZCBmb3IgdGhlIHNlY29uZAorICAgICAgICBjYXNlIGJlZm9yZSBpdCBoYXBwZW5z
LgorCisgICAgICAgIFRoZSBjYXNlcyBhcmUgcmV2ZXJzZWQgd2hlbiBwc2V1ZG8tY2xhc3MgaXMg
dW5zZXQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbjo6aW52YWxpZGF0ZUJlZm9yZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246
OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cyk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUv
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjplbXBsYWNlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgc2luY2Ugc3RkOjpvcHRpb25hbDo6
ZW1wbGFjZSgpIGlzIGF3a3dhcmQgdG8gdXNlIHdpdGggc3RkOjppbml0aWFsaXplcl9saXN0Lgor
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246
OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6flBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uKToKKwogMjAyMi0wMS0wNyAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW5saW5lIGJsb2NrcyB0aGF0IGNvbnRhaW4gdGV4dCB3aXRoIG1pbi13aWR0aCwg
Ym94LXNpemluZzogYm9yZGVyLWJveCBpbmNvcnJlY3RseSBpbmNsdWRlIHRoZSBib3JkZXIgaW4g
d2lkdGggY2FsY3VsYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGI0MTkyMGQ5NDZl
MjEzODU2ZjI3OTIxNDliNWZlZGI3NWVkMzk4ZWMuLjVkYjU1ZGVmZDlkZTk5MjMwYjY3YzE0NDIy
OWNkMDA0MzdhMzE1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzQ2NSwzMyArNzQ2
NSwzMyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBFbGVtZW50KiBpbgogICAgICAgICAgICAgZWxlbWVudHNUb1Nl
dEhvdmVyLmFwcGVuZChlbGVtZW50KTsKICAgICB9CiAKLSAgICBhdXRvIGNoYW5nZVN0YXRlID0g
W10oYXV0byYgZWxlbWVudHMsIGF1dG8gcHNldWRvQ2xhc3NUeXBlLCBhdXRvJiYgc2V0dGVyKSB7
CisgICAgYXV0byBjaGFuZ2VTdGF0ZSA9IFtdKGF1dG8mIGVsZW1lbnRzLCBhdXRvIHBzZXVkb0Ns
YXNzVHlwZSwgYXV0byB2YWx1ZSwgYXV0byYmIHNldHRlcikgewogICAgICAgICBpZiAoZWxlbWVu
dHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFN0eWxlOjpQc2V1
ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbiB7ICplbGVtZW50cy5s
YXN0KCksIHBzZXVkb0NsYXNzVHlwZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpEZXNjZW5k
YW50cyB9OworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5
bGVJbnZhbGlkYXRpb24geyAqZWxlbWVudHMubGFzdCgpLCBwc2V1ZG9DbGFzc1R5cGUsIHZhbHVl
LCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OkRlc2NlbmRhbnRzIH07CiAKICAgICAgICAgLy8g
V2UgbmVlZCB0byBkbyBkZXNjZW5kYW50IGludmFsaWRhdGlvbiBmb3IgZWFjaCBzaGFkb3cgdHJl
ZSBzZXBhcmF0ZWx5IGFzIHRoZSBzdHlsZSBpcyBwZXItc2NvcGUuCiAgICAgICAgIFZlY3RvcjxT
dHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24+IHNoYWRvd0Rlc2NlbmRhbnRTdHls
ZUludmFsaWRhdGlvbnM7CiAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7
CiAgICAgICAgICAgICBpZiAoaGFzU2hhZG93Um9vdFBhcmVudCgqZWxlbWVudCkpCi0gICAgICAg
ICAgICAgICAgc2hhZG93RGVzY2VuZGFudFN0eWxlSW52YWxpZGF0aW9ucy5hcHBlbmQoeyAqZWxl
bWVudCwgcHNldWRvQ2xhc3NUeXBlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OkRlc2NlbmRh
bnRzIH0pOworICAgICAgICAgICAgICAgIHNoYWRvd0Rlc2NlbmRhbnRTdHlsZUludmFsaWRhdGlv
bnMuYXBwZW5kKHsgKmVsZW1lbnQsIHBzZXVkb0NsYXNzVHlwZSwgdmFsdWUsIFN0eWxlOjpJbnZh
bGlkYXRpb25TY29wZTo6RGVzY2VuZGFudHMgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykKICAgICAgICAgICAgIHNldHRlcigqZWxlbWVudCk7
CiAgICAgfTsKIAotICAgIGNoYW5nZVN0YXRlKGVsZW1lbnRzVG9DbGVhckFjdGl2ZSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBbXShhdXRvJiBlbGVtZW50KSB7CisgICAgY2hhbmdl
U3RhdGUoZWxlbWVudHNUb0NsZWFyQWN0aXZlLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3Rp
dmUsIGZhbHNlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0QWN0aXZl
KGZhbHNlLCBmYWxzZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpTZWxmQ2hpbGRyZW5BbmRT
aWJsaW5ncyk7CiAgICAgfSk7Ci0gICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEFjdGl2ZSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBbXShhdXRvJiBlbGVtZW50KSB7CisgICAg
Y2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEFjdGl2ZSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
QWN0aXZlLCB0cnVlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0QWN0
aXZlKHRydWUsIGZhbHNlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OlNlbGZDaGlsZHJlbkFu
ZFNpYmxpbmdzKTsKICAgICB9KTsKLSAgICBjaGFuZ2VTdGF0ZShlbGVtZW50c1RvQ2xlYXJIb3Zl
ciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIsIFtdKGF1dG8mIGVsZW1lbnQpIHsKKyAg
ICBjaGFuZ2VTdGF0ZShlbGVtZW50c1RvQ2xlYXJIb3ZlciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzSG92ZXIsIGZhbHNlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0
SG92ZXJlZChmYWxzZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpTZWxmQ2hpbGRyZW5BbmRT
aWJsaW5ncyk7CiAgICAgfSk7Ci0gICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEhvdmVyLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3ZlciwgW10oYXV0byYgZWxlbWVudCkgeworICAgIGNo
YW5nZVN0YXRlKGVsZW1lbnRzVG9TZXRIb3ZlciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92
ZXIsIHRydWUsIFtdKGF1dG8mIGVsZW1lbnQpIHsKICAgICAgICAgZWxlbWVudC5zZXRIb3ZlcmVk
KHRydWUsIFN0eWxlOjpJbnZhbGlkYXRpb25TY29wZTo6U2VsZkNoaWxkcmVuQW5kU2libGluZ3Mp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDhjM2NiOGYzYTc2MGFlZmEx
NGMzOGFjNDhjMmViYzc5NTJhMjk5MzAuLjg4YjBkNGFmNDU4MzViNjhjYmJjMTM0OTM3MDYzNDg0
OTI0MDM3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lk
IEVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2UsIFN0eWxlOjpJbnZhbGlk
YXRpb25TY29wZSBpbnZhbGlkYQogICAgIGlmIChmbGFnID09IGFjdGl2ZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRp
b24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2
ZSwgaW52YWxpZGF0aW9uU2NvcGUpOworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc0FjdGl2ZSwgZmxhZywgaW52YWxpZGF0aW9uU2NvcGUpOwogICAgICAgICBkb2N1bWVudCgp
LnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEFjdGl2ZSgqdGhpcywgZmxhZyk7CiAgICAgfQogCkBA
IC04NDgsNyArODQ4LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRGb2N1cyhib29sIGZsYWcsIEZvY3Vz
VmlzaWJpbGl0eSB2aXNpYmlsaXR5KQogICAgIGlmIChmbGFnID09IGZvY3VzZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
biBmb2N1c1N0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0ZvY3VzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1c1Zpc2libGUgfSk7CisgICAgU3R5
bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGZvY3VzU3R5bGVJbnZhbGlkYXRpb24o
KnRoaXMsIHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1cywgZmxhZyB9LCB7IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzVmlzaWJsZSwgZmxhZyB9IH0pOwogICAgIGRvY3VtZW50
KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0Rm9jdXNlZCgqdGhpcywgZmxhZyk7CiAKICAgICAv
LyBTaGFkb3cgaG9zdCB3aXRoIGEgc2xvdCB0aGF0IGNvbnRhaW4gZm9jdXNlZCBlbGVtZW50IGlz
IG5vdCBjb25zaWRlcmVkIGZvY3VzZWQuCkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBFbGVtZW50
OjpzZXRIYXNGb2N1c1dpdGhpbihib29sIGZsYWcpCiAgICAgaWYgKGhhc0ZvY3VzV2l0aGluKCkg
PT0gZmxhZykKICAgICAgICAgcmV0dXJuOwogICAgIHsKLSAgICAgICAgU3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NGb2N1c1dpdGhpbik7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzRm9jdXNXaXRoaW4sIGZsYWcpOwogICAgICAgICBkb2N1bWVudCgpLnVzZXJBY3Rp
b25FbGVtZW50cygpLnNldEhhc0ZvY3VzV2l0aGluKCp0aGlzLCBmbGFnKTsKICAgICB9CiB9CkBA
IC04OTQsNyArODk0LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wgZmxhZywgU3R5
bGU6OkludmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlvblNjb3BlKQogICAgIGlmIChmbGFnID09
IGhvdmVyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHsKLSAgICAgICAgU3R5bGU6OlBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NIb3ZlciwgaW52YWxpZGF0aW9uU2NvcGUpOworICAgICAgICBTdHls
ZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMs
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyLCBmbGFnLCBpbnZhbGlkYXRpb25TY29wZSk7
CiAgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0SG92ZXJlZCgqdGhp
cywgZmxhZyk7CiAgICAgfQogCkBAIC05MDcsNyArOTA3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRC
ZWluZ0RyYWdnZWQoYm9vbCBmbGFnKQogICAgIGlmIChmbGFnID09IGlzQmVpbmdEcmFnZ2VkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRHJh
Zyk7CisgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxp
ZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEcmFnLCBmbGFnKTsKICAgICBk
b2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEJlaW5nRHJhZ2dlZCgqdGhpcywgZmxh
Zyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCmlu
ZGV4IGQ0YjExMGE5NjVjY2M5MDE1OTY5OWRlZGUxOTMwYzE4Mzk5NjdiYjYuLjUyODU0ZThiOWJj
ZDI1ZjJkOTgyYTE4NDBhYzU0NmI3N2YwM2YzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSFRNTEZpZWxk
U2V0RWxlbWVudDo6YWRkSW52YWxpZERlc2NlbmRhbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxl
bWVudCYgaW52CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CiAgICAgaWYgKG1faW52YWxpZERlc2NlbmRh
bnRzLmNvbXB1dGVzRW1wdHkoKSkKLSAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgq
dGhpcywgc3RkOjppbml0aWFsaXplcl9saXN0PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+
IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0ludmFsaWQgfSk7CisgICAgICAgIGVtcGxhY2Uoc3R5bGVJbnZhbGlkYXRpb24sICp0aGlzLCB7
IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQsIGZhbHNlIH0sIHsgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzSW52YWxpZCwgdHJ1ZSB9IH0pOwogCiAgICAgbV9pbnZhbGlkRGVzY2VuZGFu
dHMuYWRkKGludmFsaWRGb3JtQ29udHJvbEVsZW1lbnQpOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBA
IHZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6cmVtb3ZlSW52YWxpZERlc2NlbmRhbnQoY29uc3Qg
SFRNTEZvcm1Db250cm9sRWxlbWVudCYKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OlBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uPiBzdHlsZUludmFsaWRhdGlvbjsKICAgICBpZiAobV9p
bnZhbGlkRGVzY2VuZGFudHMuY29tcHV0ZVNpemUoKSA9PSAxKQotICAgICAgICBzdHlsZUludmFs
aWRhdGlvbi5lbXBsYWNlKCp0aGlzLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Q1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZT4geyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzSW52YWxpZCB9KTsKKyAgICAgICAgZW1wbGFjZShzdHlsZUludmFs
aWRhdGlvbiwgKnRoaXMsIHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgdHJ1ZSB9
LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQsIGZhbHNlIH0gfSk7CiAKICAgICBt
X2ludmFsaWREZXNjZW5kYW50cy5yZW1vdmUoZm9ybUNvbnRyb2xFbGVtZW50KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDVmMmFm
MjVhN2VlYzA3NzE5NjI5YjUyODBjYWNmMzNlMGQzYTAxY2IuLjIyMGIyNzE0MGNiNTU5NDFmZDll
MjVlZDIyMjk0ODAzNWVkZmY5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6c2V0QW5jZXN0b3JEaXNhYmxlZChib29sIGlzRGlzYWJsZWQpCiAgICAgaWYg
KG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQgPT0gaXNEaXNhYmxlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRpc2FibGVk
SW52YWxpZGF0aW9uKCp0aGlzLCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVkIH0pOworICAgIFN0eWxlOjpQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyB7IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBpc0Rpc2FibGVkIH0sIHsgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzRW5hYmxlZCwgIWlzRGlzYWJsZWQgfSB9KTsKIAogICAgIG1fZGlzYWJsZWRC
eUFuY2VzdG9yRmllbGRzZXQgPSBpc0Rpc2FibGVkOwogICAgIGRpc2FibGVkU3RhdGVDaGFuZ2Vk
KCk7CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG8KICAgICAgICAg
aWYgKGNhbkJlQWN0dWFsbHlEaXNhYmxlZCgpKSB7CiAgICAgICAgICAgICBib29sIG5ld0Rpc2Fi
bGVkID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICAgICAgaWYgKG1fZGlzYWJsZWQgIT0gbmV3
RGlzYWJsZWQpIHsKLSAgICAgICAgICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24gZGlzYWJsZWRJbnZhbGlkYXRpb24oKnRoaXMsIHsgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzRGlzYWJsZWQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuYWJsZWQgfSk7CisgICAg
ICAgICAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRpc2FibGVk
SW52YWxpZGF0aW9uKCp0aGlzLCB7IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlzYWJsZWQs
IG5ld0Rpc2FibGVkIH0sIHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCwgIW5ld0Rp
c2FibGVkIH0gfSk7CiAgICAgICAgICAgICAgICAgbV9kaXNhYmxlZCA9IG5ld0Rpc2FibGVkOwog
ICAgICAgICAgICAgICAgIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgICAgICAgICAg
fQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRl
VmFsaWRpdHkoKQogICAgIGJvb2wgbmV3SXNWYWxpZCA9IHRoaXMtPmNvbXB1dGVWYWxpZGl0eSgp
OwogCiAgICAgaWYgKG5ld0lzVmFsaWQgIT0gbV9pc1ZhbGlkKSB7Ci0gICAgICAgIFN0eWxlOjpQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgeyBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSW52
YWxpZCB9KTsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0
eWxlSW52YWxpZGF0aW9uKCp0aGlzLCB7IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQs
IG5ld0lzVmFsaWQgfSwgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkLCAhbmV3SXNW
YWxpZCB9IH0pOwogCiAgICAgICAgIG1faXNWYWxpZCA9IG5ld0lzVmFsaWQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA5MDdmMTBlMmFiNDY4MGZiNGZjOTA2
NzJlODZjNzFmNjE3Mzg0Zjg5Li5jNTA4MGM5OGNiYzJkMTgxYWMzMzM0YzNhMmVhMTQyMTg3MjI0
NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC02NjgsNyAr
NjY4LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVySW52YWxpZEFzc29jaWF0ZWRG
b3JtQ29udHJvbChjb25zdCBIVE1MRm9ybUNvbnRyb2wKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3R5
bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uPiBzdHlsZUludmFsaWRhdGlvbjsKICAg
ICBpZiAobV9pbnZhbGlkQXNzb2NpYXRlZEZvcm1Db250cm9scy5jb21wdXRlc0VtcHR5KCkpCi0g
ICAgICAgIHN0eWxlSW52YWxpZGF0aW9uLmVtcGxhY2UoKnRoaXMsIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiB7IENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc1ZhbGlkLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkIH0pOworICAgICAgICBl
bXBsYWNlKHN0eWxlSW52YWxpZGF0aW9uLCAqdGhpcywgeyB7IENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc1ZhbGlkLCBmYWxzZSB9LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQsIHRy
dWV9IH0pOwogCiAgICAgbV9pbnZhbGlkQXNzb2NpYXRlZEZvcm1Db250cm9scy5hZGQoY29uc3Rf
Y2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Jj4oZm9ybUNvbnRyb2xFbGVtZW50KSk7CiB9CkBA
IC02ODAsNyArNjgwLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUludmFsaWRBc3Nv
Y2lhdGVkRm9ybUNvbnRyb2xJZk5lZWRlZChjb25zdCBIVE1MRm9ybUMKIAogICAgIHN0ZDo6b3B0
aW9uYWw8U3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uPiBzdHlsZUludmFsaWRh
dGlvbjsKICAgICBpZiAobV9pbnZhbGlkQXNzb2NpYXRlZEZvcm1Db250cm9scy5jb21wdXRlU2l6
ZSgpID09IDEpCi0gICAgICAgIHN0eWxlSW52YWxpZGF0aW9uLmVtcGxhY2UoKnRoaXMsIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiB7IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1ZhbGlkLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkIH0p
OworICAgICAgICBlbXBsYWNlKHN0eWxlSW52YWxpZGF0aW9uLCAqdGhpcywgeyB7IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1ZhbGlkLCB0cnVlIH0sIHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
SW52YWxpZCwgZmFsc2UgfSB9KTsKIAogICAgIG1faW52YWxpZEFzc29jaWF0ZWRGb3JtQ29udHJv
bHMucmVtb3ZlKGZvcm1Db250cm9sRWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAppbmRleCA4YTliYmM1MGNlOWY5OWRiZWZhMDdhMzQ1NDkxYzAxMmM4
YjRmYjIzLi5mZWVkOThmNzI5Mjg0ODI2NjFkOGRkODczMjllMWU5NjViNjhiOTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTk3NSwxNyArOTc1LDE3IEBA
IGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNUZXh0VHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aW5wdXRUeXBlLT5pc1RleHRUeXBlKCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0
Q2hlY2tlZChib29sIG5vd0NoZWNrZWQpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNr
ZWQoYm9vbCBuZXdDaGVja2VkKQogewotICAgIGlmIChjaGVja2VkKCkgPT0gbm93Q2hlY2tlZCkK
KyAgICBpZiAoY2hlY2tlZCgpID09IG5ld0NoZWNrZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1faW5wdXRUeXBlLT53aWxsVXBkYXRlQ2hlY2tlZG5lc3Mobm93Q2hlY2tlZCk7CisgICAgbV9p
bnB1dFR5cGUtPndpbGxVcGRhdGVDaGVja2VkbmVzcyhuZXdDaGVja2VkKTsKIAotICAgIFN0eWxl
OjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBjaGVja2VkSW52YWxpZGF0aW9uKCp0aGlz
LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NDaGVja2VkKTsKKyAgICBTdHlsZTo6UHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24gY2hlY2tlZEludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzQ2hlY2tlZCwgbmV3Q2hlY2tlZCk7CiAKICAgICBtX2RpcnR5Q2hlY2tl
ZG5lc3NGbGFnID0gdHJ1ZTsKLSAgICBtX2lzQ2hlY2tlZCA9IG5vd0NoZWNrZWQ7CisgICAgbV9p
c0NoZWNrZWQgPSBuZXdDaGVja2VkOwogCiAgICAgaWYgKFJhZGlvQnV0dG9uR3JvdXBzKiBidXR0
b25zID0gcmFkaW9CdXR0b25Hcm91cHMoKSkKICAgICAgICAgYnV0dG9ucy0+dXBkYXRlQ2hlY2tl
ZFN0YXRlKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdy
b3VwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
Y3BwCmluZGV4IGVkYTU5ODk3MzkxZTM3MTYwZTU3Y2M4YTQzNzQ0N2MxODI2YmYyZjguLjkwMjFm
ZGZiOTNjYzZiZmQxN2QwYjY5MzZkZWJjMzgxM2NkYTdiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcApAQCAtODksMTEgKzg5LDExIEBAIHZvaWQgSFRN
TE9wdEdyb3VwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0CiAgICAgaWYgKG5hbWUgPT0gZGlzYWJsZWRBdHRyKSB7CiAgICAgICAg
IGJvb2wgbmV3RGlzYWJsZWQgPSAhdmFsdWUuaXNOdWxsKCk7CiAgICAgICAgIGlmIChtX2lzRGlz
YWJsZWQgIT0gbmV3RGlzYWJsZWQpIHsKLSAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCB9
KTsKKyAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBkaXNh
YmxlZEludmFsaWRhdGlvbigqdGhpcywgeyB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2Fi
bGVkLCBuZXdEaXNhYmxlZCB9LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuYWJsZWQsICFu
ZXdEaXNhYmxlZCB9IH0pOwogCiAgICAgICAgICAgICBWZWN0b3I8U3R5bGU6OlBzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uPiBvcHRpb25JbnZhbGlkYXRpb247CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIGRlc2NlbmRhbnQgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT3B0aW9uRWxlbWVudD4o
KnRoaXMpKQotICAgICAgICAgICAgICAgIG9wdGlvbkludmFsaWRhdGlvbi5hcHBlbmQoeyBkZXNj
ZW5kYW50LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NFbmFibGVkIH0gfSk7CisgICAgICAgICAgICAgICAgb3B0aW9uSW52YWxpZGF0
aW9uLmFwcGVuZCh7IGRlc2NlbmRhbnQsIHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNh
YmxlZCwgbmV3RGlzYWJsZWQgfSwgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVkLCAh
bmV3RGlzYWJsZWQgfSB9IH0pOwogCiAgICAgICAgICAgICBtX2lzRGlzYWJsZWQgPSBuZXdEaXNh
YmxlZDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNw
cAppbmRleCA0MzNiYWI4NzkwMmY0NjdmNmY0OGIzODI0Y2YyZWUyNDcyMjE4M2I3Li5jNTlhYmZj
ZjNjMjk0ZmVmZTA0MDFiYTRhMWU4MDAxODk5OGVhNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMTc4LDE0ICsxNzgsMTQgQEAgdm9pZCBIVE1MT3B0
aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmkKICAgICBpZiAobmFtZSA9PSBkaXNhYmxlZEF0dHIpIHsKICAgICAgICAgYm9v
bCBuZXdEaXNhYmxlZCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAgICAgaWYgKG1fZGlzYWJsZWQg
IT0gbmV3RGlzYWJsZWQpIHsKLSAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NEaXNhYmxlZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCB9KTsKKyAg
ICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZElu
dmFsaWRhdGlvbigqdGhpcywgeyB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBu
ZXdEaXNhYmxlZCB9LCAgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVkLCAhbmV3RGlz
YWJsZWQgfSB9KTsKICAgICAgICAgICAgIG1fZGlzYWJsZWQgPSBuZXdEaXNhYmxlZDsKICAgICAg
ICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCkuaGFzRWZmZWN0aXZl
QXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnRoZW1lKCkuc3RhdGVD
aGFuZ2VkKCpyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpTdGF0ZXM6OkVuYWJsZWQpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNlbGVjdGVkQXR0cikgewogICAgICAgICAv
LyBGSVhNRTogVXNlIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGluIG90aGVyIGVsZW1l
bnRzIHRoYXQgaW1wbGVtZW50IG1hdGNoZXNEZWZhdWx0UHNldWRvQ2xhc3MoKS4KLSAgICAgICAg
U3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRlZmF1bHRJbnZhbGlkYXRpb24o
KnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RlZmF1bHQpOworICAgICAgICBTdHlsZTo6
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZGVmYXVsdEludmFsaWRhdGlvbigqdGhpcywg
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGVmYXVsdCwgIXZhbHVlLmlzTnVsbCgpKTsKICAgICAg
ICAgbV9pc0RlZmF1bHQgPSAhdmFsdWUuaXNOdWxsKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRo
aXMgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBIVE1MIHNwZWNpZmljYXRpb24gc2F5cy4KQEAgLTIz
Myw3ICsyMzMsNyBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpzZXRTZWxlY3RlZFN0YXRlKGJv
b2wgc2VsZWN0ZWQpCiAgICAgaWYgKG1faXNTZWxlY3RlZCA9PSBzZWxlY3RlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGNoZWNr
ZWRJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0NoZWNrZWQpOwor
ICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBjaGVja2VkSW52YWxpZGF0
aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NDaGVja2VkLCBzZWxlY3RlZCk7CiAK
ICAgICBtX2lzU2VsZWN0ZWQgPSBzZWxlY3RlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCmluZGV4IGYxZGI1MjA4NDY1NDU2MTY1ZWY3ZGY2YTNjM2JjODVkOTM5YTZhOTIuLjE2
ZDUzODlkZmZmYWMzMjU0ZmNlZjRmYTc5YTA3NjU1ZGQwMDMzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKQEAgLTM2NDAsNyArMzY0MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjppbnRlcm5hbEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtl
eUV2ZW50CiAgICAgICAgIGJvb2wgdXNlckhhc0ludGVyYWN0ZWRWaWFLZXl3b3JkID0ga2V5ZG93
bi0+bW9kaWZpZXJLZXlzKCkuaXNFbXB0eSgpIHx8ICgoa2V5ZG93bi0+c2hpZnRLZXkoKSB8fCBr
ZXlkb3duLT5jYXBzTG9ja0tleSgpKSAmJiAhaW5pdGlhbEtleUV2ZW50LnRleHQoKS5pc0VtcHR5
KCkpOwogCiAgICAgICAgIGlmIChlbGVtZW50LmZvY3VzZWQoKSAmJiB1c2VySGFzSW50ZXJhY3Rl
ZFZpYUtleXdvcmQpIHsKLSAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbiBmb2N1c1Zpc2libGVTdHlsZUludmFsaWRhdGlvbihlbGVtZW50LCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NGb2N1c1Zpc2libGUpOworICAgICAgICAgICAgU3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uIGZvY3VzVmlzaWJsZVN0eWxlSW52YWxpZGF0aW9uKGVsZW1l
bnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzVmlzaWJsZSwgdHJ1ZSk7CiAgICAgICAg
ICAgICBlbGVtZW50LnNldEhhc0ZvY3VzVmlzaWJsZSh0cnVlKTsKICAgICAgICAgfQogICAgIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbi5jcHAKaW5kZXggMWVlMGZkMTk3N2M3OTI5NjNkYzkzNzQ1M2M2OWY3MzUwMDllMGVi
YS4uNmQxMWRlNmI1NWJlMWRmOGFmYzhlNGZlZDgwOWRmNjA1NzlhMmNlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgVmVjdG9yPFBzZXVkb0NsYXNzSW52YWxpZGF0aW9u
S2V5LCA0PiBtYWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXlzKENTUwogICAgIHJldHVybiBr
ZXlzOwogfTsKIAotdm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29tcHV0ZUlu
dmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzLCBJbnZh
bGlkYXRpb25TY29wZSBpbnZhbGlkYXRpb25TY29wZSkKK3ZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb246OmNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
VHlwZSBwc2V1ZG9DbGFzcywgYm9vbCB2YWx1ZSwgSW52YWxpZGF0aW9uU2NvcGUgaW52YWxpZGF0
aW9uU2NvcGUpCiB7CiAgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlQ3VycmVudCA9IGZhbHNlOwog
ICAgIGJvb2wgbWF5QWZmZWN0U3R5bGVJblNoYWRvd1RyZWUgPSBmYWxzZTsKQEAgLTcyLDEwICs3
MiwxMCBAQCB2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxp
ZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcwogICAgICAgICBtX2VsZW1lbnQuaW52YWxp
ZGF0ZVN0eWxlKCk7CiAKICAgICBmb3IgKGF1dG8mIGtleSA6IG1ha2VQc2V1ZG9DbGFzc0ludmFs
aWRhdGlvbktleXMocHNldWRvQ2xhc3MsIG1fZWxlbWVudCkpCi0gICAgICAgIGNvbGxlY3RSdWxl
U2V0cyhrZXksIGludmFsaWRhdGlvblNjb3BlKTsKKyAgICAgICAgY29sbGVjdFJ1bGVTZXRzKGtl
eSwgdmFsdWUsIGludmFsaWRhdGlvblNjb3BlKTsKIH0KIAotdm9pZCBQc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbjo6Y29sbGVjdFJ1bGVTZXRzKGNvbnN0IFBzZXVkb0NsYXNzSW52YWxpZGF0
aW9uS2V5JiBrZXksIEludmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlvblNjb3BlKQordm9pZCBQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29sbGVjdFJ1bGVTZXRzKGNvbnN0IFBzZXVk
b0NsYXNzSW52YWxpZGF0aW9uS2V5JiBrZXksIGJvb2wgdmFsdWUsIEludmFsaWRhdGlvblNjb3Bl
IGludmFsaWRhdGlvblNjb3BlKQogewogICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0
eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpOwogICAgIGF1dG8qIGludmFsaWRhdGlvblJ1bGVTZXRz
ID0gcnVsZVNldHMucHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhrZXkpOwpAQCAtMTAw
LDE0ICsxMDAsMjQgQEAgdm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29sbGVj
dFJ1bGVTZXRzKGNvbnN0IFBzZXVkb0NsYXNzSW52YWxpZGF0aW8KICAgICAgICAgaWYgKCFzaG91
bGRJbnZhbGlkYXRlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSW52YWxpZGF0
b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMobV9tYXRjaEVsZW1lbnRSdWxlU2V0cywgaW52
YWxpZGF0aW9uUnVsZVNldCk7CisgICAgICAgIGJvb2wgaW52YWxpZGF0ZUJlZm9yZUNoYW5nZSA9
IGludmFsaWRhdGlvblJ1bGVTZXQuaXNOZWdhdGlvbiA9PSBJc05lZ2F0aW9uOjpZZXMgPyB2YWx1
ZSA6ICF2YWx1ZTsKKyAgICAgICAgaWYgKGludmFsaWRhdGVCZWZvcmVDaGFuZ2UpCisgICAgICAg
ICAgICBJbnZhbGlkYXRvcjo6YWRkVG9NYXRjaEVsZW1lbnRSdWxlU2V0cyhtX2JlZm9yZUNoYW5n
ZVJ1bGVTZXRzLCBpbnZhbGlkYXRpb25SdWxlU2V0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMobV9hZnRlckNoYW5nZVJ1
bGVTZXRzLCBpbnZhbGlkYXRpb25SdWxlU2V0KTsKICAgICB9CiB9CiAKLXZvaWQgUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpCit2b2lk
IFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlQmVmb3JlQ2hhbmdlKCkK
IHsKLSAgICBJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZVdpdGhNYXRjaEVsZW1lbnRSdWxlU2V0cyht
X2VsZW1lbnQsIG1fbWF0Y2hFbGVtZW50UnVsZVNldHMpOworICAgIEludmFsaWRhdG9yOjppbnZh
bGlkYXRlV2l0aE1hdGNoRWxlbWVudFJ1bGVTZXRzKG1fZWxlbWVudCwgbV9iZWZvcmVDaGFuZ2VS
dWxlU2V0cyk7CiB9CiAKK3ZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFs
aWRhdGVBZnRlckNoYW5nZSgpCit7CisgICAgSW52YWxpZGF0b3I6OmludmFsaWRhdGVXaXRoTWF0
Y2hFbGVtZW50UnVsZVNldHMobV9lbGVtZW50LCBtX2FmdGVyQ2hhbmdlUnVsZVNldHMpOworfQor
CisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbi5oCmluZGV4IDk3OTQ3NDFjZmM3ZDEwZjZkOTI3MWRiYjI2MWI0MjI3NTFk
MmU3MmYuLjljOTQxYzdhMjE2YTE0OTBiZGY2YmY2MmJlOTZjYTAxZDIyNTA3ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24u
aApAQCAtMzUsNDkgKzM1LDU2IEBAIG5hbWVzcGFjZSBTdHlsZSB7CiAKIGNsYXNzIFBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uIHsKIHB1YmxpYzoKLSAgICBQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbihFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgSW52YWxp
ZGF0aW9uU2NvcGUgPSBJbnZhbGlkYXRpb25TY29wZTo6QWxsKTsKLSAgICBQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbihFbGVtZW50Jiwgc3RkOjppbml0aWFsaXplcl9saXN0PENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBJbnZhbGlkYXRpb25TY29wZSA9IEludmFsaWRhdGlvblNj
b3BlOjpBbGwpOworICAgIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBib29sIHZhbHVlLCBJbnZhbGlkYXRpb25TY29w
ZSA9IEludmFsaWRhdGlvblNjb3BlOjpBbGwpOworICAgIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uKEVsZW1lbnQmLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc1R5cGUsIGJvb2w+Pik7CiAKICAgICB+UHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24oKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNvbXB1dGVJbnZhbGlkYXRpb24o
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlKTsK
LSAgICB2b2lkIGNvbGxlY3RSdWxlU2V0cyhjb25zdCBQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktl
eSYsIEludmFsaWRhdGlvblNjb3BlKTsKLSAgICB2b2lkIGludmFsaWRhdGVTdHlsZVdpdGhSdWxl
U2V0cygpOworICAgIHZvaWQgY29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NUeXBlLCBib29sIHZhbHVlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGUpOworICAgIHZv
aWQgY29sbGVjdFJ1bGVTZXRzKGNvbnN0IFBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5JiwgYm9v
bCB2YWx1ZSwgSW52YWxpZGF0aW9uU2NvcGUpOworICAgIHZvaWQgaW52YWxpZGF0ZUJlZm9yZUNo
YW5nZSgpOworICAgIHZvaWQgaW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCk7CiAKICAgICBjb25zdCBi
b29sIG1faXNFbmFibGVkOwogICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKIAotICAgIEludmFsaWRh
dG9yOjpNYXRjaEVsZW1lbnRSdWxlU2V0cyBtX21hdGNoRWxlbWVudFJ1bGVTZXRzOworICAgIElu
dmFsaWRhdG9yOjpNYXRjaEVsZW1lbnRSdWxlU2V0cyBtX2JlZm9yZUNoYW5nZVJ1bGVTZXRzOwor
ICAgIEludmFsaWRhdG9yOjpNYXRjaEVsZW1lbnRSdWxlU2V0cyBtX2FmdGVyQ2hhbmdlUnVsZVNl
dHM7CiB9OwogCi1pbmxpbmUgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3NUeXBlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGUgaW52
YWxpZGF0aW9uU2NvcGUpCitpbmxpbmUgdm9pZCBlbXBsYWNlKHN0ZDo6b3B0aW9uYWw8UHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24+JiBpbnZhbGlkYXRpb24sIEVsZW1lbnQmIGVsZW1lbnQs
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
VHlwZSwgYm9vbD4+IHBzZXVkb0NsYXNzZXMpCit7CisgICAgaW52YWxpZGF0aW9uLmVtcGxhY2Uo
ZWxlbWVudCwgcHNldWRvQ2xhc3Nlcyk7Cit9CisKK2lubGluZSBQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxlbWVu
dCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcywgYm9vbCB2YWx1ZSwg
U3R5bGU6OkludmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlvblNjb3BlKQogICAgIDogbV9pc0Vu
YWJsZWQoZWxlbWVudC5uZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkpCiAgICAgLCBtX2VsZW1lbnQo
ZWxlbWVudCkKIAogewogICAgIGlmICghbV9pc0VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBjb21wdXRlSW52YWxpZGF0aW9uKHBzZXVkb0NsYXNzVHlwZSwgaW52YWxpZGF0aW9uU2NvcGUp
OwotICAgIGludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpOworICAgIGNvbXB1dGVJbnZhbGlk
YXRpb24ocHNldWRvQ2xhc3MsIHZhbHVlLCBpbnZhbGlkYXRpb25TY29wZSk7CisgICAgaW52YWxp
ZGF0ZUJlZm9yZUNoYW5nZSgpOwogfQogCi1pbmxpbmUgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiBwc2V1ZG9D
bGFzc2VzLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGUgaW52YWxpZGF0aW9uU2NvcGUpCitpbmxp
bmUgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgYm9vbD4+IHBzZXVkb0NsYXNzZXMpCiAgICAg
OiBtX2lzRW5hYmxlZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSkKICAgICAsIG1f
ZWxlbWVudChlbGVtZW50KQogewogICAgIGlmICghbV9pc0VuYWJsZWQpCiAgICAgICAgIHJldHVy
bjsKICAgICBmb3IgKGF1dG8gcHNldWRvQ2xhc3MgOiBwc2V1ZG9DbGFzc2VzKQotICAgICAgICBj
b21wdXRlSW52YWxpZGF0aW9uKHBzZXVkb0NsYXNzLCBpbnZhbGlkYXRpb25TY29wZSk7Ci0gICAg
aW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CisgICAgICAgIGNvbXB1dGVJbnZhbGlkYXRp
b24ocHNldWRvQ2xhc3MuZmlyc3QsIHBzZXVkb0NsYXNzLnNlY29uZCwgU3R5bGU6OkludmFsaWRh
dGlvblNjb3BlOjpBbGwpOworICAgIGludmFsaWRhdGVCZWZvcmVDaGFuZ2UoKTsKIH0KIAogaW5s
aW5lIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjp+UHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24oKQogewogICAgIGlmICghbV9pc0VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBpbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKTsKKyAgICBpbnZhbGlkYXRlQWZ0ZXJDaGFu
Z2UoKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448670</attachid>
            <date>2022-01-08 06:53:32 -0800</date>
            <delta_ts>2022-01-09 00:30:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235003-20220108165331.patch</filename>
            <type>text/plain</type>
            <size>25551</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ3YTU2YWVhMmJhNDVk
YjQ4NTUzMmMxYmE2Y2ZkMjJhNTdiNGQ0MS4uNGY5ZGY1YTQxZTI4MGVlN2RkNGRmMWRmZDA1NGMw
YTg3NjBiYjI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTAxLTA4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgSXNOZWdhdGlvbiBi
aXQgZm9yIG1vcmUgZWZmaWNpZW50IHBzZXVkby1jbGFzcyBzdHlsZSBpbnZhbGlkYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyBrbm93
IGlzIGFuIGludmFsaWF0aW9uIHJ1bGVzZXQgaXMgZm9yIG5lZ2F0ZWQgY29udGV4dC4gV2UgY2Fu
IHVzZSB0aGlzIHRvIGF2b2lkCisgICAgICAgIHVubmVjZXNzYXJ5IHRyYXZlcnNhbCBpbiBwc2V1
ZG8tY2xhc3MgaW52YWxpZGF0aW9uLCBzaW1pbGFyIHRvIHdlIGFscmVhZHkgZG8gd2l0aCBjbGFz
c2VzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SGFzRm9jdXNXaXRoaW4pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SG92ZXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRCZWluZ0RyYWdnZWQpOgorCisgICAgICAg
IFByb3ZpZGUgdGhlIHZhbHVlIGZvciBpbnZhbGlkYXRpb24uCisKKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxl
bWVudDo6YWRkSW52YWxpZERlc2NlbmRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxk
U2V0RWxlbWVudDo6cmVtb3ZlSW52YWxpZERlc2NlbmRhbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpzZXRBbmNlc3RvckRpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJl
Z2lzdGVySW52YWxpZEFzc29jaWF0ZWRGb3JtQ29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUludmFsaWRBc3NvY2lhdGVkRm9ybUNvbnRyb2xJZk5lZWRl
ZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAgICAqIGh0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVkU3RhdGUpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aW50ZXJuYWxLZXlFdmVudCk6CisgICAgICAgICogc3R5bGUvUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29sbGVjdFJ1bGVT
ZXRzKToKKworICAgICAgICBTZXR0aW5nIGEgcHNldWRvLWNsYXNzIGNhbiBvbmx5IG1ha2UgYSBy
ZWd1bGFyIHNlbGVjdG9yIChub3QgaW5zaWRlIDpub3QoKSkgc3RhcnQgbWF0Y2hpbmcuCisgICAg
ICAgIFNldHRpbmcgYSBwc2V1ZG8tY2xhc3MgY2FuIG9ubHkgbWFrZSBhIG5lZ2F0ZWQgc2VsZWN0
b3IgKGluc2lkZSA6bm90KCkpIHN0b3AgbWF0Y2hpbmcuCisgICAgICAgIFdlIG9ubHkgbmVlZCB0
byBpbnZhbGlkYXRlIGZvciB0aGUgZmlyc3QgY2FzZSBhZnRlciB0aGUgbXV0YXRpb24gaGFzIGhh
cHBlbmVkIGFuZCBmb3IgdGhlIHNlY29uZAorICAgICAgICBjYXNlIGJlZm9yZSBpdCBoYXBwZW5z
LgorCisgICAgICAgIFRoZSBjYXNlcyBhcmUgcmV2ZXJzZWQgd2hlbiBwc2V1ZG8tY2xhc3MgaXMg
dW5zZXQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbjo6aW52YWxpZGF0ZUJlZm9yZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246
OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cyk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUv
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjplbXBsYWNlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgc2luY2Ugc3RkOjpvcHRpb25hbDo6
ZW1wbGFjZSgpIGlzIGF3a3dhcmQgdG8gdXNlIHdpdGggc3RkOjppbml0aWFsaXplcl9saXN0Lgor
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246
OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6flBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uKToKKwogMjAyMi0wMS0wNyAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW5saW5lIGJsb2NrcyB0aGF0IGNvbnRhaW4gdGV4dCB3aXRoIG1pbi13aWR0aCwg
Ym94LXNpemluZzogYm9yZGVyLWJveCBpbmNvcnJlY3RseSBpbmNsdWRlIHRoZSBib3JkZXIgaW4g
d2lkdGggY2FsY3VsYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGI0MTkyMGQ5NDZl
MjEzODU2ZjI3OTIxNDliNWZlZGI3NWVkMzk4ZWMuLjVkYjU1ZGVmZDlkZTk5MjMwYjY3YzE0NDIy
OWNkMDA0MzdhMzE1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzQ2NSwzMyArNzQ2
NSwzMyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBFbGVtZW50KiBpbgogICAgICAgICAgICAgZWxlbWVudHNUb1Nl
dEhvdmVyLmFwcGVuZChlbGVtZW50KTsKICAgICB9CiAKLSAgICBhdXRvIGNoYW5nZVN0YXRlID0g
W10oYXV0byYgZWxlbWVudHMsIGF1dG8gcHNldWRvQ2xhc3NUeXBlLCBhdXRvJiYgc2V0dGVyKSB7
CisgICAgYXV0byBjaGFuZ2VTdGF0ZSA9IFtdKGF1dG8mIGVsZW1lbnRzLCBhdXRvIHBzZXVkb0Ns
YXNzVHlwZSwgYXV0byB2YWx1ZSwgYXV0byYmIHNldHRlcikgewogICAgICAgICBpZiAoZWxlbWVu
dHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFN0eWxlOjpQc2V1
ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbiB7ICplbGVtZW50cy5s
YXN0KCksIHBzZXVkb0NsYXNzVHlwZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpEZXNjZW5k
YW50cyB9OworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5
bGVJbnZhbGlkYXRpb24geyAqZWxlbWVudHMubGFzdCgpLCBwc2V1ZG9DbGFzc1R5cGUsIHZhbHVl
LCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OkRlc2NlbmRhbnRzIH07CiAKICAgICAgICAgLy8g
V2UgbmVlZCB0byBkbyBkZXNjZW5kYW50IGludmFsaWRhdGlvbiBmb3IgZWFjaCBzaGFkb3cgdHJl
ZSBzZXBhcmF0ZWx5IGFzIHRoZSBzdHlsZSBpcyBwZXItc2NvcGUuCiAgICAgICAgIFZlY3RvcjxT
dHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24+IHNoYWRvd0Rlc2NlbmRhbnRTdHls
ZUludmFsaWRhdGlvbnM7CiAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7
CiAgICAgICAgICAgICBpZiAoaGFzU2hhZG93Um9vdFBhcmVudCgqZWxlbWVudCkpCi0gICAgICAg
ICAgICAgICAgc2hhZG93RGVzY2VuZGFudFN0eWxlSW52YWxpZGF0aW9ucy5hcHBlbmQoeyAqZWxl
bWVudCwgcHNldWRvQ2xhc3NUeXBlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OkRlc2NlbmRh
bnRzIH0pOworICAgICAgICAgICAgICAgIHNoYWRvd0Rlc2NlbmRhbnRTdHlsZUludmFsaWRhdGlv
bnMuYXBwZW5kKHsgKmVsZW1lbnQsIHBzZXVkb0NsYXNzVHlwZSwgdmFsdWUsIFN0eWxlOjpJbnZh
bGlkYXRpb25TY29wZTo6RGVzY2VuZGFudHMgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3Ig
KGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykKICAgICAgICAgICAgIHNldHRlcigqZWxlbWVudCk7
CiAgICAgfTsKIAotICAgIGNoYW5nZVN0YXRlKGVsZW1lbnRzVG9DbGVhckFjdGl2ZSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBbXShhdXRvJiBlbGVtZW50KSB7CisgICAgY2hhbmdl
U3RhdGUoZWxlbWVudHNUb0NsZWFyQWN0aXZlLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3Rp
dmUsIGZhbHNlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0QWN0aXZl
KGZhbHNlLCBmYWxzZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpTZWxmQ2hpbGRyZW5BbmRT
aWJsaW5ncyk7CiAgICAgfSk7Ci0gICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEFjdGl2ZSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBbXShhdXRvJiBlbGVtZW50KSB7CisgICAg
Y2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEFjdGl2ZSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
QWN0aXZlLCB0cnVlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0QWN0
aXZlKHRydWUsIGZhbHNlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OlNlbGZDaGlsZHJlbkFu
ZFNpYmxpbmdzKTsKICAgICB9KTsKLSAgICBjaGFuZ2VTdGF0ZShlbGVtZW50c1RvQ2xlYXJIb3Zl
ciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIsIFtdKGF1dG8mIGVsZW1lbnQpIHsKKyAg
ICBjaGFuZ2VTdGF0ZShlbGVtZW50c1RvQ2xlYXJIb3ZlciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzSG92ZXIsIGZhbHNlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0
SG92ZXJlZChmYWxzZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpTZWxmQ2hpbGRyZW5BbmRT
aWJsaW5ncyk7CiAgICAgfSk7Ci0gICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEhvdmVyLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3ZlciwgW10oYXV0byYgZWxlbWVudCkgeworICAgIGNo
YW5nZVN0YXRlKGVsZW1lbnRzVG9TZXRIb3ZlciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92
ZXIsIHRydWUsIFtdKGF1dG8mIGVsZW1lbnQpIHsKICAgICAgICAgZWxlbWVudC5zZXRIb3ZlcmVk
KHRydWUsIFN0eWxlOjpJbnZhbGlkYXRpb25TY29wZTo6U2VsZkNoaWxkcmVuQW5kU2libGluZ3Mp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDhjM2NiOGYzYTc2MGFlZmEx
NGMzOGFjNDhjMmViYzc5NTJhMjk5MzAuLjg4YjBkNGFmNDU4MzViNjhjYmJjMTM0OTM3MDYzNDg0
OTI0MDM3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lk
IEVsZW1lbnQ6OnNldEFjdGl2ZShib29sIGZsYWcsIGJvb2wgcGF1c2UsIFN0eWxlOjpJbnZhbGlk
YXRpb25TY29wZSBpbnZhbGlkYQogICAgIGlmIChmbGFnID09IGFjdGl2ZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRp
b24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2
ZSwgaW52YWxpZGF0aW9uU2NvcGUpOworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc0FjdGl2ZSwgZmxhZywgaW52YWxpZGF0aW9uU2NvcGUpOwogICAgICAgICBkb2N1bWVudCgp
LnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEFjdGl2ZSgqdGhpcywgZmxhZyk7CiAgICAgfQogCkBA
IC04NDgsNyArODQ4LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRGb2N1cyhib29sIGZsYWcsIEZvY3Vz
VmlzaWJpbGl0eSB2aXNpYmlsaXR5KQogICAgIGlmIChmbGFnID09IGZvY3VzZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
biBmb2N1c1N0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0ZvY3VzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1c1Zpc2libGUgfSk7CisgICAgU3R5
bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGZvY3VzU3R5bGVJbnZhbGlkYXRpb24o
KnRoaXMsIHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1cywgZmxhZyB9LCB7IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzVmlzaWJsZSwgZmxhZyB9IH0pOwogICAgIGRvY3VtZW50
KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0Rm9jdXNlZCgqdGhpcywgZmxhZyk7CiAKICAgICAv
LyBTaGFkb3cgaG9zdCB3aXRoIGEgc2xvdCB0aGF0IGNvbnRhaW4gZm9jdXNlZCBlbGVtZW50IGlz
IG5vdCBjb25zaWRlcmVkIGZvY3VzZWQuCkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBFbGVtZW50
OjpzZXRIYXNGb2N1c1dpdGhpbihib29sIGZsYWcpCiAgICAgaWYgKGhhc0ZvY3VzV2l0aGluKCkg
PT0gZmxhZykKICAgICAgICAgcmV0dXJuOwogICAgIHsKLSAgICAgICAgU3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NGb2N1c1dpdGhpbik7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzRm9jdXNXaXRoaW4sIGZsYWcpOwogICAgICAgICBkb2N1bWVudCgpLnVzZXJBY3Rp
b25FbGVtZW50cygpLnNldEhhc0ZvY3VzV2l0aGluKCp0aGlzLCBmbGFnKTsKICAgICB9CiB9CkBA
IC04OTQsNyArODk0LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wgZmxhZywgU3R5
bGU6OkludmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlvblNjb3BlKQogICAgIGlmIChmbGFnID09
IGhvdmVyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHsKLSAgICAgICAgU3R5bGU6OlBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NIb3ZlciwgaW52YWxpZGF0aW9uU2NvcGUpOworICAgICAgICBTdHls
ZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMs
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvdmVyLCBmbGFnLCBpbnZhbGlkYXRpb25TY29wZSk7
CiAgICAgICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0SG92ZXJlZCgqdGhp
cywgZmxhZyk7CiAgICAgfQogCkBAIC05MDcsNyArOTA3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRC
ZWluZ0RyYWdnZWQoYm9vbCBmbGFnKQogICAgIGlmIChmbGFnID09IGlzQmVpbmdEcmFnZ2VkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRHJh
Zyk7CisgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxp
ZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEcmFnLCBmbGFnKTsKICAgICBk
b2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEJlaW5nRHJhZ2dlZCgqdGhpcywgZmxh
Zyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCmlu
ZGV4IGQ0YjExMGE5NjVjY2M5MDE1OTY5OWRlZGUxOTMwYzE4Mzk5NjdiYjYuLjUyODU0ZThiOWJj
ZDI1ZjJkOTgyYTE4NDBhYzU0NmI3N2YwM2YzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgSFRNTEZpZWxk
U2V0RWxlbWVudDo6YWRkSW52YWxpZERlc2NlbmRhbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWxl
bWVudCYgaW52CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CiAgICAgaWYgKG1faW52YWxpZERlc2NlbmRh
bnRzLmNvbXB1dGVzRW1wdHkoKSkKLSAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgq
dGhpcywgc3RkOjppbml0aWFsaXplcl9saXN0PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+
IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0ludmFsaWQgfSk7CisgICAgICAgIGVtcGxhY2Uoc3R5bGVJbnZhbGlkYXRpb24sICp0aGlzLCB7
IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQsIGZhbHNlIH0sIHsgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzSW52YWxpZCwgdHJ1ZSB9IH0pOwogCiAgICAgbV9pbnZhbGlkRGVzY2VuZGFu
dHMuYWRkKGludmFsaWRGb3JtQ29udHJvbEVsZW1lbnQpOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBA
IHZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6cmVtb3ZlSW52YWxpZERlc2NlbmRhbnQoY29uc3Qg
SFRNTEZvcm1Db250cm9sRWxlbWVudCYKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OlBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uPiBzdHlsZUludmFsaWRhdGlvbjsKICAgICBpZiAobV9p
bnZhbGlkRGVzY2VuZGFudHMuY29tcHV0ZVNpemUoKSA9PSAxKQotICAgICAgICBzdHlsZUludmFs
aWRhdGlvbi5lbXBsYWNlKCp0aGlzLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Q1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZT4geyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzSW52YWxpZCB9KTsKKyAgICAgICAgZW1wbGFjZShzdHlsZUludmFs
aWRhdGlvbiwgKnRoaXMsIHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgdHJ1ZSB9
LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQsIGZhbHNlIH0gfSk7CiAKICAgICBt
X2ludmFsaWREZXNjZW5kYW50cy5yZW1vdmUoZm9ybUNvbnRyb2xFbGVtZW50KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDVmMmFm
MjVhN2VlYzA3NzE5NjI5YjUyODBjYWNmMzNlMGQzYTAxY2IuLjIyMGIyNzE0MGNiNTU5NDFmZDll
MjVlZDIyMjk0ODAzNWVkZmY5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6c2V0QW5jZXN0b3JEaXNhYmxlZChib29sIGlzRGlzYWJsZWQpCiAgICAgaWYg
KG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQgPT0gaXNEaXNhYmxlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRpc2FibGVk
SW52YWxpZGF0aW9uKCp0aGlzLCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVkIH0pOworICAgIFN0eWxlOjpQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyB7IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBpc0Rpc2FibGVkIH0sIHsgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzRW5hYmxlZCwgIWlzRGlzYWJsZWQgfSB9KTsKIAogICAgIG1fZGlzYWJsZWRC
eUFuY2VzdG9yRmllbGRzZXQgPSBpc0Rpc2FibGVkOwogICAgIGRpc2FibGVkU3RhdGVDaGFuZ2Vk
KCk7CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG8KICAgICAgICAg
aWYgKGNhbkJlQWN0dWFsbHlEaXNhYmxlZCgpKSB7CiAgICAgICAgICAgICBib29sIG5ld0Rpc2Fi
bGVkID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICAgICAgaWYgKG1fZGlzYWJsZWQgIT0gbmV3
RGlzYWJsZWQpIHsKLSAgICAgICAgICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24gZGlzYWJsZWRJbnZhbGlkYXRpb24oKnRoaXMsIHsgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzRGlzYWJsZWQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuYWJsZWQgfSk7CisgICAg
ICAgICAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRpc2FibGVk
SW52YWxpZGF0aW9uKCp0aGlzLCB7IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlzYWJsZWQs
IG5ld0Rpc2FibGVkIH0sIHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCwgIW5ld0Rp
c2FibGVkIH0gfSk7CiAgICAgICAgICAgICAgICAgbV9kaXNhYmxlZCA9IG5ld0Rpc2FibGVkOwog
ICAgICAgICAgICAgICAgIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgICAgICAgICAg
fQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRl
VmFsaWRpdHkoKQogICAgIGJvb2wgbmV3SXNWYWxpZCA9IHRoaXMtPmNvbXB1dGVWYWxpZGl0eSgp
OwogCiAgICAgaWYgKG5ld0lzVmFsaWQgIT0gbV9pc1ZhbGlkKSB7Ci0gICAgICAgIFN0eWxlOjpQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgeyBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSW52
YWxpZCB9KTsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0
eWxlSW52YWxpZGF0aW9uKCp0aGlzLCB7IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQs
IG5ld0lzVmFsaWQgfSwgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkLCAhbmV3SXNW
YWxpZCB9IH0pOwogCiAgICAgICAgIG1faXNWYWxpZCA9IG5ld0lzVmFsaWQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA5MDdmMTBlMmFiNDY4MGZiNGZjOTA2
NzJlODZjNzFmNjE3Mzg0Zjg5Li43ZWVmZmEwMGFhYjFjZDRjYzNkOTYzZTJhZDFmMjQ3ZWYyZWZk
MjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC02NjgsNyAr
NjY4LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVySW52YWxpZEFzc29jaWF0ZWRG
b3JtQ29udHJvbChjb25zdCBIVE1MRm9ybUNvbnRyb2wKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3R5
bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uPiBzdHlsZUludmFsaWRhdGlvbjsKICAg
ICBpZiAobV9pbnZhbGlkQXNzb2NpYXRlZEZvcm1Db250cm9scy5jb21wdXRlc0VtcHR5KCkpCi0g
ICAgICAgIHN0eWxlSW52YWxpZGF0aW9uLmVtcGxhY2UoKnRoaXMsIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiB7IENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc1ZhbGlkLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkIH0pOworICAgICAgICBl
bXBsYWNlKHN0eWxlSW52YWxpZGF0aW9uLCAqdGhpcywgeyB7IENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzc1ZhbGlkLCBmYWxzZSB9LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQsIHRy
dWUgfSB9KTsKIAogICAgIG1faW52YWxpZEFzc29jaWF0ZWRGb3JtQ29udHJvbHMuYWRkKGNvbnN0
X2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCY+KGZvcm1Db250cm9sRWxlbWVudCkpOwogfQpA
QCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVJbnZhbGlkQXNz
b2NpYXRlZEZvcm1Db250cm9sSWZOZWVkZWQoY29uc3QgSFRNTEZvcm1DCiAKICAgICBzdGQ6Om9w
dGlvbmFsPFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbj4gc3R5bGVJbnZhbGlk
YXRpb247CiAgICAgaWYgKG1faW52YWxpZEFzc29jaWF0ZWRGb3JtQ29udHJvbHMuY29tcHV0ZVNp
emUoKSA9PSAxKQotICAgICAgICBzdHlsZUludmFsaWRhdGlvbi5lbXBsYWNlKCp0aGlzLCBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4geyBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSW52YWxpZCB9
KTsKKyAgICAgICAgZW1wbGFjZShzdHlsZUludmFsaWRhdGlvbiwgKnRoaXMsIHsgeyBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgdHJ1ZSB9LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0ludmFsaWQsIGZhbHNlIH0gfSk7CiAKICAgICBtX2ludmFsaWRBc3NvY2lhdGVkRm9ybUNvbnRy
b2xzLnJlbW92ZShmb3JtQ29udHJvbEVsZW1lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggOGE5YmJjNTBjZTlmOTlkYmVmYTA3YTM0NTQ5MWMwMTJj
OGI0ZmIyMy4uZmVlZDk4ZjcyOTI4NDgyNjYxZDhkZDg3MzI5ZTFlOTY1YjY4Yjk0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC05NzUsMTcgKzk3NSwxNyBA
QCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzVGV4dFR5cGUoKSBjb25zdAogICAgIHJldHVybiBt
X2lucHV0VHlwZS0+aXNUZXh0VHlwZSgpOwogfQogCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNl
dENoZWNrZWQoYm9vbCBub3dDaGVja2VkKQordm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVj
a2VkKGJvb2wgbmV3Q2hlY2tlZCkKIHsKLSAgICBpZiAoY2hlY2tlZCgpID09IG5vd0NoZWNrZWQp
CisgICAgaWYgKGNoZWNrZWQoKSA9PSBuZXdDaGVja2VkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2lucHV0VHlwZS0+d2lsbFVwZGF0ZUNoZWNrZWRuZXNzKG5vd0NoZWNrZWQpOworICAgIG1f
aW5wdXRUeXBlLT53aWxsVXBkYXRlQ2hlY2tlZG5lc3MobmV3Q2hlY2tlZCk7CiAKLSAgICBTdHls
ZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gY2hlY2tlZEludmFsaWRhdGlvbigqdGhp
cywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQ2hlY2tlZCk7CisgICAgU3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uIGNoZWNrZWRJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0NoZWNrZWQsIG5ld0NoZWNrZWQpOwogCiAgICAgbV9kaXJ0eUNoZWNr
ZWRuZXNzRmxhZyA9IHRydWU7Ci0gICAgbV9pc0NoZWNrZWQgPSBub3dDaGVja2VkOworICAgIG1f
aXNDaGVja2VkID0gbmV3Q2hlY2tlZDsKIAogICAgIGlmIChSYWRpb0J1dHRvbkdyb3VwcyogYnV0
dG9ucyA9IHJhZGlvQnV0dG9uR3JvdXBzKCkpCiAgICAgICAgIGJ1dHRvbnMtPnVwZGF0ZUNoZWNr
ZWRTdGF0ZSgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcAppbmRleCBlZGE1OTg5NzM5MWUzNzE2MGU1N2NjOGE0Mzc0NDdjMTgyNmJmMmY4Li45MDIx
ZmRmYjkzY2M2YmZkMTdkMGI2OTM2ZGViYzM4MTNjZGE3YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAKQEAgLTg5LDExICs4OSwxMSBAQCB2b2lkIEhU
TUxPcHRHcm91cEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdAogICAgIGlmIChuYW1lID09IGRpc2FibGVkQXR0cikgewogICAgICAg
ICBib29sIG5ld0Rpc2FibGVkID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICBpZiAobV9pc0Rp
c2FibGVkICE9IG5ld0Rpc2FibGVkKSB7Ci0gICAgICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24gZGlzYWJsZWRJbnZhbGlkYXRpb24oKnRoaXMsIHsgQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzRGlzYWJsZWQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuYWJsZWQg
fSk7CisgICAgICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZGlz
YWJsZWRJbnZhbGlkYXRpb24oKnRoaXMsIHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNh
YmxlZCwgbmV3RGlzYWJsZWQgfSwgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVkLCAh
bmV3RGlzYWJsZWQgfSB9KTsKIAogICAgICAgICAgICAgVmVjdG9yPFN0eWxlOjpQc2V1ZG9DbGFz
c0NoYW5nZUludmFsaWRhdGlvbj4gb3B0aW9uSW52YWxpZGF0aW9uOwogICAgICAgICAgICAgZm9y
IChhdXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9wdGlvbkVsZW1lbnQ+
KCp0aGlzKSkKLSAgICAgICAgICAgICAgICBvcHRpb25JbnZhbGlkYXRpb24uYXBwZW5kKHsgZGVz
Y2VuZGFudCwgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzRW5hYmxlZCB9IH0pOworICAgICAgICAgICAgICAgIG9wdGlvbkludmFsaWRh
dGlvbi5hcHBlbmQoeyBkZXNjZW5kYW50LCB7IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlz
YWJsZWQsIG5ld0Rpc2FibGVkIH0sIHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCwg
IW5ld0Rpc2FibGVkIH0gfSB9KTsKIAogICAgICAgICAgICAgbV9pc0Rpc2FibGVkID0gbmV3RGlz
YWJsZWQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5j
cHAKaW5kZXggNDMzYmFiODc5MDJmNDY3ZjZmNDhiMzgyNGNmMmVlMjQ3MjIxODNiNy4uYzU5YWJm
Y2YzYzI5NGZlZmUwNDAxYmE0YTFlODAwMTg5OThlYTQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTE3OCwxNCArMTc4LDE0IEBAIHZvaWQgSFRNTE9w
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpCiAgICAgaWYgKG5hbWUgPT0gZGlzYWJsZWRBdHRyKSB7CiAgICAgICAgIGJv
b2wgbmV3RGlzYWJsZWQgPSAhdmFsdWUuaXNOdWxsKCk7CiAgICAgICAgIGlmIChtX2Rpc2FibGVk
ICE9IG5ld0Rpc2FibGVkKSB7Ci0gICAgICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24gZGlzYWJsZWRJbnZhbGlkYXRpb24oKnRoaXMsIHsgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzRGlzYWJsZWQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuYWJsZWQgfSk7Cisg
ICAgICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZGlzYWJsZWRJ
bnZhbGlkYXRpb24oKnRoaXMsIHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwg
bmV3RGlzYWJsZWQgfSwgIHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCwgIW5ld0Rp
c2FibGVkIH0gfSk7CiAgICAgICAgICAgICBtX2Rpc2FibGVkID0gbmV3RGlzYWJsZWQ7CiAgICAg
ICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLmhhc0VmZmVjdGl2
ZUFwcGVhcmFuY2UoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRl
Q2hhbmdlZCgqcmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpFbmFibGVkKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0dHIpIHsKICAgICAgICAg
Ly8gRklYTUU6IFVzZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBpbiBvdGhlciBlbGVt
ZW50cyB0aGF0IGltcGxlbWVudCBtYXRjaGVzRGVmYXVsdFBzZXVkb0NsYXNzKCkuCi0gICAgICAg
IFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBkZWZhdWx0SW52YWxpZGF0aW9u
KCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEZWZhdWx0KTsKKyAgICAgICAgU3R5bGU6
OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRlZmF1bHRJbnZhbGlkYXRpb24oKnRoaXMs
IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RlZmF1bHQsICF2YWx1ZS5pc051bGwoKSk7CiAgICAg
ICAgIG1faXNEZWZhdWx0ID0gIXZhbHVlLmlzTnVsbCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGRvZXNuJ3QgbWF0Y2ggd2hhdCB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHNheXMuCkBAIC0y
MzMsNyArMjMzLDcgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0U2VsZWN0ZWRTdGF0ZShi
b29sIHNlbGVjdGVkKQogICAgIGlmIChtX2lzU2VsZWN0ZWQgPT0gc2VsZWN0ZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBjaGVj
a2VkSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NDaGVja2VkKTsK
KyAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gY2hlY2tlZEludmFsaWRh
dGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQ2hlY2tlZCwgc2VsZWN0ZWQpOwog
CiAgICAgbV9pc1NlbGVjdGVkID0gc2VsZWN0ZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCBmMWRiNTIwODQ2NTQ1NjE2NWVmN2RmNmEzYzNiYzg1ZDkzOWE2YTkyLi4x
NmQ1Mzg5ZGZmZmFjMzI1NGZjZWY0ZmE3OWEwNzY1NWRkMDAzMzAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zNjQwLDcgKzM2NDAsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aW50ZXJuYWxLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRpYWxL
ZXlFdmVudAogICAgICAgICBib29sIHVzZXJIYXNJbnRlcmFjdGVkVmlhS2V5d29yZCA9IGtleWRv
d24tPm1vZGlmaWVyS2V5cygpLmlzRW1wdHkoKSB8fCAoKGtleWRvd24tPnNoaWZ0S2V5KCkgfHwg
a2V5ZG93bi0+Y2Fwc0xvY2tLZXkoKSkgJiYgIWluaXRpYWxLZXlFdmVudC50ZXh0KCkuaXNFbXB0
eSgpKTsKIAogICAgICAgICBpZiAoZWxlbWVudC5mb2N1c2VkKCkgJiYgdXNlckhhc0ludGVyYWN0
ZWRWaWFLZXl3b3JkKSB7Ci0gICAgICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24gZm9jdXNWaXNpYmxlU3R5bGVJbnZhbGlkYXRpb24oZWxlbWVudCwgQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzRm9jdXNWaXNpYmxlKTsKKyAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbiBmb2N1c1Zpc2libGVTdHlsZUludmFsaWRhdGlvbihlbGVt
ZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1c1Zpc2libGUsIHRydWUpOwogICAgICAg
ICAgICAgZWxlbWVudC5zZXRIYXNGb2N1c1Zpc2libGUodHJ1ZSk7CiAgICAgICAgIH0KICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwCmluZGV4IDFlZTBmZDE5NzdjNzkyOTYzZGM5Mzc0NTNjNjlmNzM1MDA5ZTBl
YmEuLjZkMTFkZTZiNTViZTFkZjhhZmM4ZTRmZWQ4MDlkZjYwNTc5YTJjZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5j
cHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIFZlY3RvcjxQc2V1ZG9DbGFzc0ludmFsaWRhdGlv
bktleSwgND4gbWFrZVBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5cyhDU1MKICAgICByZXR1cm4g
a2V5czsKIH07CiAKLXZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbXB1dGVJ
bnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcywgSW52
YWxpZGF0aW9uU2NvcGUgaW52YWxpZGF0aW9uU2NvcGUpCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1R5cGUgcHNldWRvQ2xhc3MsIGJvb2wgdmFsdWUsIEludmFsaWRhdGlvblNjb3BlIGludmFsaWRh
dGlvblNjb3BlKQogewogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZUN1cnJlbnQgPSBmYWxzZTsK
ICAgICBib29sIG1heUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlID0gZmFsc2U7CkBAIC03MiwxMCAr
NzIsMTAgQEAgdm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29tcHV0ZUludmFs
aWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MKICAgICAgICAgbV9lbGVtZW50LmludmFs
aWRhdGVTdHlsZSgpOwogCiAgICAgZm9yIChhdXRvJiBrZXkgOiBtYWtlUHNldWRvQ2xhc3NJbnZh
bGlkYXRpb25LZXlzKHBzZXVkb0NsYXNzLCBtX2VsZW1lbnQpKQotICAgICAgICBjb2xsZWN0UnVs
ZVNldHMoa2V5LCBpbnZhbGlkYXRpb25TY29wZSk7CisgICAgICAgIGNvbGxlY3RSdWxlU2V0cyhr
ZXksIHZhbHVlLCBpbnZhbGlkYXRpb25TY29wZSk7CiB9CiAKLXZvaWQgUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb246OmNvbGxlY3RSdWxlU2V0cyhjb25zdCBQc2V1ZG9DbGFzc0ludmFsaWRh
dGlvbktleSYga2V5LCBJbnZhbGlkYXRpb25TY29wZSBpbnZhbGlkYXRpb25TY29wZSkKK3ZvaWQg
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbGxlY3RSdWxlU2V0cyhjb25zdCBQc2V1
ZG9DbGFzc0ludmFsaWRhdGlvbktleSYga2V5LCBib29sIHZhbHVlLCBJbnZhbGlkYXRpb25TY29w
ZSBpbnZhbGlkYXRpb25TY29wZSkKIHsKICAgICBhdXRvJiBydWxlU2V0cyA9IG1fZWxlbWVudC5z
dHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKICAgICBhdXRvKiBpbnZhbGlkYXRpb25SdWxlU2V0
cyA9IHJ1bGVTZXRzLnBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoa2V5KTsKQEAgLTEw
MCwxNCArMTAwLDI0IEBAIHZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbGxl
Y3RSdWxlU2V0cyhjb25zdCBQc2V1ZG9DbGFzc0ludmFsaWRhdGlvCiAgICAgICAgIGlmICghc2hv
dWxkSW52YWxpZGF0ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEludmFsaWRh
dG9yOjphZGRUb01hdGNoRWxlbWVudFJ1bGVTZXRzKG1fbWF0Y2hFbGVtZW50UnVsZVNldHMsIGlu
dmFsaWRhdGlvblJ1bGVTZXQpOworICAgICAgICBib29sIGludmFsaWRhdGVCZWZvcmVDaGFuZ2Ug
PSBpbnZhbGlkYXRpb25SdWxlU2V0LmlzTmVnYXRpb24gPT0gSXNOZWdhdGlvbjo6WWVzID8gdmFs
dWUgOiAhdmFsdWU7CisgICAgICAgIGlmIChpbnZhbGlkYXRlQmVmb3JlQ2hhbmdlKQorICAgICAg
ICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMobV9iZWZvcmVDaGFu
Z2VSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIEludmFsaWRhdG9yOjphZGRUb01hdGNoRWxlbWVudFJ1bGVTZXRzKG1fYWZ0ZXJDaGFuZ2VS
dWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CiAgICAgfQogfQogCi12b2lkIFBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKQordm9p
ZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUJlZm9yZUNoYW5nZSgp
CiB7Ci0gICAgSW52YWxpZGF0b3I6OmludmFsaWRhdGVXaXRoTWF0Y2hFbGVtZW50UnVsZVNldHMo
bV9lbGVtZW50LCBtX21hdGNoRWxlbWVudFJ1bGVTZXRzKTsKKyAgICBJbnZhbGlkYXRvcjo6aW52
YWxpZGF0ZVdpdGhNYXRjaEVsZW1lbnRSdWxlU2V0cyhtX2VsZW1lbnQsIG1fYmVmb3JlQ2hhbmdl
UnVsZVNldHMpOwogfQogCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZh
bGlkYXRlQWZ0ZXJDaGFuZ2UoKQoreworICAgIEludmFsaWRhdG9yOjppbnZhbGlkYXRlV2l0aE1h
dGNoRWxlbWVudFJ1bGVTZXRzKG1fZWxlbWVudCwgbV9hZnRlckNoYW5nZVJ1bGVTZXRzKTsKK30K
KworCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uaAppbmRleCA5Nzk0NzQxY2ZjN2QxMGY2ZDkyNzFkYmIyNjFiNDIyNzUx
ZDJlNzJmLi45Yzk0MWM3YTIxNmExNDkwYmRmNmJmNjJiZTk2Y2EwMWQyMjUwNzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
LmgKQEAgLTM1LDQ5ICszNSw1NiBAQCBuYW1lc3BhY2UgU3R5bGUgewogCiBjbGFzcyBQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbiB7CiBwdWJsaWM6Ci0gICAgUHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24oRWxlbWVudCYsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIEludmFs
aWRhdGlvblNjb3BlID0gSW52YWxpZGF0aW9uU2NvcGU6OkFsbCk7Ci0gICAgUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiwgSW52YWxpZGF0aW9uU2NvcGUgPSBJbnZhbGlkYXRpb25T
Y29wZTo6QWxsKTsKKyAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50Jiwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgYm9vbCB2YWx1ZSwgSW52YWxpZGF0aW9uU2Nv
cGUgPSBJbnZhbGlkYXRpb25TY29wZTo6QWxsKTsKKyAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbihFbGVtZW50Jiwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBib29sPj4pOwogCiAgICAgflBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjb21wdXRlSW52YWxpZGF0aW9u
KENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIFN0eWxlOjpJbnZhbGlkYXRpb25TY29wZSk7
Ci0gICAgdm9pZCBjb2xsZWN0UnVsZVNldHMoY29uc3QgUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25L
ZXkmLCBJbnZhbGlkYXRpb25TY29wZSk7Ci0gICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVXaXRoUnVs
ZVNldHMoKTsKKyAgICB2b2lkIGNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZSwgYm9vbCB2YWx1ZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlKTsKKyAgICB2
b2lkIGNvbGxlY3RSdWxlU2V0cyhjb25zdCBQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleSYsIGJv
b2wgdmFsdWUsIEludmFsaWRhdGlvblNjb3BlKTsKKyAgICB2b2lkIGludmFsaWRhdGVCZWZvcmVD
aGFuZ2UoKTsKKyAgICB2b2lkIGludmFsaWRhdGVBZnRlckNoYW5nZSgpOwogCiAgICAgY29uc3Qg
Ym9vbCBtX2lzRW5hYmxlZDsKICAgICBFbGVtZW50JiBtX2VsZW1lbnQ7CiAKLSAgICBJbnZhbGlk
YXRvcjo6TWF0Y2hFbGVtZW50UnVsZVNldHMgbV9tYXRjaEVsZW1lbnRSdWxlU2V0czsKKyAgICBJ
bnZhbGlkYXRvcjo6TWF0Y2hFbGVtZW50UnVsZVNldHMgbV9iZWZvcmVDaGFuZ2VSdWxlU2V0czsK
KyAgICBJbnZhbGlkYXRvcjo6TWF0Y2hFbGVtZW50UnVsZVNldHMgbV9hZnRlckNoYW5nZVJ1bGVT
ZXRzOwogfTsKIAotaW5saW5lIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzVHlwZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlIGlu
dmFsaWRhdGlvblNjb3BlKQoraW5saW5lIHZvaWQgZW1wbGFjZShzdGQ6Om9wdGlvbmFsPFBzZXVk
b0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uPiYgaW52YWxpZGF0aW9uLCBFbGVtZW50JiBlbGVtZW50
LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c1R5cGUsIGJvb2w+PiBwc2V1ZG9DbGFzc2VzKQoreworICAgIGludmFsaWRhdGlvbi5lbXBsYWNl
KGVsZW1lbnQsIHBzZXVkb0NsYXNzZXMpOworfQorCitpbmxpbmUgUHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1l
bnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3MsIGJvb2wgdmFsdWUs
IFN0eWxlOjpJbnZhbGlkYXRpb25TY29wZSBpbnZhbGlkYXRpb25TY29wZSkKICAgICA6IG1faXNF
bmFibGVkKGVsZW1lbnQubmVlZHNTdHlsZUludmFsaWRhdGlvbigpKQogICAgICwgbV9lbGVtZW50
KGVsZW1lbnQpCiAKIHsKICAgICBpZiAoIW1faXNFbmFibGVkKQogICAgICAgICByZXR1cm47Ci0g
ICAgY29tcHV0ZUludmFsaWRhdGlvbihwc2V1ZG9DbGFzc1R5cGUsIGludmFsaWRhdGlvblNjb3Bl
KTsKLSAgICBpbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKTsKKyAgICBjb21wdXRlSW52YWxp
ZGF0aW9uKHBzZXVkb0NsYXNzLCB2YWx1ZSwgaW52YWxpZGF0aW9uU2NvcGUpOworICAgIGludmFs
aWRhdGVCZWZvcmVDaGFuZ2UoKTsKIH0KIAotaW5saW5lIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50JiBlbGVtZW50LCBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZT4gcHNldWRv
Q2xhc3NlcywgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlvblNjb3BlKQoraW5s
aW5lIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbihFbGVtZW50JiBlbGVtZW50LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWly
PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIGJvb2w+PiBwc2V1ZG9DbGFzc2VzKQogICAg
IDogbV9pc0VuYWJsZWQoZWxlbWVudC5uZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkpCiAgICAgLCBt
X2VsZW1lbnQoZWxlbWVudCkKIHsKICAgICBpZiAoIW1faXNFbmFibGVkKQogICAgICAgICByZXR1
cm47CiAgICAgZm9yIChhdXRvIHBzZXVkb0NsYXNzIDogcHNldWRvQ2xhc3NlcykKLSAgICAgICAg
Y29tcHV0ZUludmFsaWRhdGlvbihwc2V1ZG9DbGFzcywgaW52YWxpZGF0aW9uU2NvcGUpOwotICAg
IGludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpOworICAgICAgICBjb21wdXRlSW52YWxpZGF0
aW9uKHBzZXVkb0NsYXNzLmZpcnN0LCBwc2V1ZG9DbGFzcy5zZWNvbmQsIFN0eWxlOjpJbnZhbGlk
YXRpb25TY29wZTo6QWxsKTsKKyAgICBpbnZhbGlkYXRlQmVmb3JlQ2hhbmdlKCk7CiB9CiAKIGlu
bGluZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6flBzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uKCkKIHsKICAgICBpZiAoIW1faXNFbmFibGVkKQogICAgICAgICByZXR1cm47Ci0g
ICAgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CisgICAgaW52YWxpZGF0ZUFmdGVyQ2hh
bmdlKCk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448696</attachid>
            <date>2022-01-09 00:30:06 -0800</date>
            <delta_ts>2022-01-09 01:02:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235003-20220109103004.patch</filename>
            <type>text/plain</type>
            <size>28364</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ3YTU2YWVhMmJhNDVk
YjQ4NTUzMmMxYmE2Y2ZkMjJhNTdiNGQ0MS4uMjAzZjBkYjQzNzI3Zjc0ZGUzNzQxN2Y0YjBiZTRj
NDk0ZDkxNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTAxLTA4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgSXNOZWdhdGlvbiBi
aXQgZm9yIG1vcmUgZWZmaWNpZW50IHBzZXVkby1jbGFzcyBzdHlsZSBpbnZhbGlkYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwMworCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBXZSBub3cga25vdyBp
ZiBhIGdpdmVuIGludmFsaWRhdGlvbiBydWxlc2V0IGlzIGZvciBuZWdhdGVkIGNvbnRleHQuIFdl
IGNhbiB1c2UgdGhpcyB0byBhdm9pZAorICAgICAgICB1bm5lY2Vzc2FyeSB0cmF2ZXJzYWwgaW4g
cHNldWRvLWNsYXNzIGludmFsaWRhdGlvbiwgc2ltaWxhciB0byB3aGF0IHdlIGFscmVhZHkgZG8g
d2l0aCBjbGFzc2VzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBY3RpdmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SGFzRm9jdXNXaXRoaW4pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
SG92ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRCZWluZ0RyYWdnZWQpOgor
CisgICAgICAgIFByb3ZpZGUgdGhlIHZhbHVlIGZvciBpbnZhbGlkYXRpb24uCisKKyAgICAgICAg
KiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZp
ZWxkU2V0RWxlbWVudDo6YWRkSW52YWxpZERlc2NlbmRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEZpZWxkU2V0RWxlbWVudDo6cmVtb3ZlSW52YWxpZERlc2NlbmRhbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBbmNlc3RvckRpc2FibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZhbGlkaXR5KToKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVs
ZW1lbnQ6OnJlZ2lzdGVySW52YWxpZEFzc29jaWF0ZWRGb3JtQ29udHJvbCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUludmFsaWRBc3NvY2lhdGVkRm9ybUNvbnRy
b2xJZk5lZWRlZCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldENoZWNrZWQpOgorICAgICAgICAqIGh0
bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3Jv
dXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnNldFNlbGVjdGVk
U3RhdGUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aW50ZXJuYWxLZXlFdmVudCk6CisgICAgICAgICogc3R5bGUvUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29s
bGVjdFJ1bGVTZXRzKToKKworICAgICAgICBTZXR0aW5nIGEgcHNldWRvLWNsYXNzIGNhbiBvbmx5
IG1ha2UgYSByZWd1bGFyIHNlbGVjdG9yIChub3QgaW5zaWRlIDpub3QoKSkgc3RhcnQgbWF0Y2hp
bmcuCisgICAgICAgIFNldHRpbmcgYSBwc2V1ZG8tY2xhc3MgY2FuIG9ubHkgbWFrZSBhIG5lZ2F0
ZWQgc2VsZWN0b3IgKGluc2lkZSA6bm90KCkpIHN0b3AgbWF0Y2hpbmcuCisgICAgICAgIFdlIG9u
bHkgbmVlZCB0byBpbnZhbGlkYXRlIGZvciB0aGUgZmlyc3QgY2FzZSBhZnRlciB0aGUgbXV0YXRp
b24gaGFzIGhhcHBlbmVkIGFuZCBmb3IgdGhlIHNlY29uZAorICAgICAgICBjYXNlIGJlZm9yZSBp
dCBoYXBwZW5zLgorCisgICAgICAgIFRoZSBjYXNlcyBhcmUgcmV2ZXJzZWQgd2hlbiBwc2V1ZG8t
Y2xhc3MgaXMgdW5zZXQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUJlZm9yZUNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRl
ckNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb246OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cyk6IERlbGV0ZWQuCisgICAgICAg
ICogc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjplbXBsYWNlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgc2luY2Ugc3RkOjpv
cHRpb25hbDo6ZW1wbGFjZSgpIGlzIGF3a3dhcmQgdG8gdXNlIHdpdGggc3RkOjppbml0aWFsaXpl
cl9saXN0LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6flBzZXVkb0NsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uKToKKwogMjAyMi0wMS0wNyAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW5saW5lIGJsb2NrcyB0aGF0IGNvbnRhaW4gdGV4dCB3aXRoIG1p
bi13aWR0aCwgYm94LXNpemluZzogYm9yZGVyLWJveCBpbmNvcnJlY3RseSBpbmNsdWRlIHRoZSBi
b3JkZXIgaW4gd2lkdGggY2FsY3VsYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGI0
MTkyMGQ5NDZlMjEzODU2ZjI3OTIxNDliNWZlZGI3NWVkMzk4ZWMuLjVkYjU1ZGVmZDlkZTk5MjMw
YjY3YzE0NDIyOWNkMDA0MzdhMzE1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzQ2
NSwzMyArNzQ2NSwzMyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBFbGVtZW50KiBpbgogICAgICAgICAgICAgZWxl
bWVudHNUb1NldEhvdmVyLmFwcGVuZChlbGVtZW50KTsKICAgICB9CiAKLSAgICBhdXRvIGNoYW5n
ZVN0YXRlID0gW10oYXV0byYgZWxlbWVudHMsIGF1dG8gcHNldWRvQ2xhc3NUeXBlLCBhdXRvJiYg
c2V0dGVyKSB7CisgICAgYXV0byBjaGFuZ2VTdGF0ZSA9IFtdKGF1dG8mIGVsZW1lbnRzLCBhdXRv
IHBzZXVkb0NsYXNzVHlwZSwgYXV0byB2YWx1ZSwgYXV0byYmIHNldHRlcikgewogICAgICAgICBp
ZiAoZWxlbWVudHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFN0
eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbiB7ICpl
bGVtZW50cy5sYXN0KCksIHBzZXVkb0NsYXNzVHlwZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3Bl
OjpEZXNjZW5kYW50cyB9OworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24gc3R5bGVJbnZhbGlkYXRpb24geyAqZWxlbWVudHMubGFzdCgpLCBwc2V1ZG9DbGFzc1R5
cGUsIHZhbHVlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OkRlc2NlbmRhbnRzIH07CiAKICAg
ICAgICAgLy8gV2UgbmVlZCB0byBkbyBkZXNjZW5kYW50IGludmFsaWRhdGlvbiBmb3IgZWFjaCBz
aGFkb3cgdHJlZSBzZXBhcmF0ZWx5IGFzIHRoZSBzdHlsZSBpcyBwZXItc2NvcGUuCiAgICAgICAg
IFZlY3RvcjxTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24+IHNoYWRvd0Rlc2Nl
bmRhbnRTdHlsZUludmFsaWRhdGlvbnM7CiAgICAgICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGVs
ZW1lbnRzKSB7CiAgICAgICAgICAgICBpZiAoaGFzU2hhZG93Um9vdFBhcmVudCgqZWxlbWVudCkp
Ci0gICAgICAgICAgICAgICAgc2hhZG93RGVzY2VuZGFudFN0eWxlSW52YWxpZGF0aW9ucy5hcHBl
bmQoeyAqZWxlbWVudCwgcHNldWRvQ2xhc3NUeXBlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6
OkRlc2NlbmRhbnRzIH0pOworICAgICAgICAgICAgICAgIHNoYWRvd0Rlc2NlbmRhbnRTdHlsZUlu
dmFsaWRhdGlvbnMuYXBwZW5kKHsgKmVsZW1lbnQsIHBzZXVkb0NsYXNzVHlwZSwgdmFsdWUsIFN0
eWxlOjpJbnZhbGlkYXRpb25TY29wZTo6RGVzY2VuZGFudHMgfSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykKICAgICAgICAgICAgIHNldHRlcigq
ZWxlbWVudCk7CiAgICAgfTsKIAotICAgIGNoYW5nZVN0YXRlKGVsZW1lbnRzVG9DbGVhckFjdGl2
ZSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBbXShhdXRvJiBlbGVtZW50KSB7Cisg
ICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb0NsZWFyQWN0aXZlLCBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NBY3RpdmUsIGZhbHNlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQu
c2V0QWN0aXZlKGZhbHNlLCBmYWxzZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpTZWxmQ2hp
bGRyZW5BbmRTaWJsaW5ncyk7CiAgICAgfSk7Ci0gICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb1Nl
dEFjdGl2ZSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQWN0aXZlLCBbXShhdXRvJiBlbGVtZW50
KSB7CisgICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb1NldEFjdGl2ZSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzQWN0aXZlLCB0cnVlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVsZW1l
bnQuc2V0QWN0aXZlKHRydWUsIGZhbHNlLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGU6OlNlbGZD
aGlsZHJlbkFuZFNpYmxpbmdzKTsKICAgICB9KTsKLSAgICBjaGFuZ2VTdGF0ZShlbGVtZW50c1Rv
Q2xlYXJIb3ZlciwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIsIFtdKGF1dG8mIGVsZW1l
bnQpIHsKKyAgICBjaGFuZ2VTdGF0ZShlbGVtZW50c1RvQ2xlYXJIb3ZlciwgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzSG92ZXIsIGZhbHNlLCBbXShhdXRvJiBlbGVtZW50KSB7CiAgICAgICAgIGVs
ZW1lbnQuc2V0SG92ZXJlZChmYWxzZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpTZWxmQ2hp
bGRyZW5BbmRTaWJsaW5ncyk7CiAgICAgfSk7Ci0gICAgY2hhbmdlU3RhdGUoZWxlbWVudHNUb1Nl
dEhvdmVyLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3ZlciwgW10oYXV0byYgZWxlbWVudCkg
eworICAgIGNoYW5nZVN0YXRlKGVsZW1lbnRzVG9TZXRIb3ZlciwgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzSG92ZXIsIHRydWUsIFtdKGF1dG8mIGVsZW1lbnQpIHsKICAgICAgICAgZWxlbWVudC5z
ZXRIb3ZlcmVkKHRydWUsIFN0eWxlOjpJbnZhbGlkYXRpb25TY29wZTo6U2VsZkNoaWxkcmVuQW5k
U2libGluZ3MpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDhjM2NiOGYz
YTc2MGFlZmExNGMzOGFjNDhjMmViYzc5NTJhMjk5MzAuLjI2ZDk5NTZkZTVlNzBlMGYwM2E5ZDQ0
ZDZkZDliMWY3ZDlmMTc2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc5MSwxMyArNzkx
LDEzIEBAIGJvb2wgRWxlbWVudDo6aXNVc2VyQWN0aW9uRWxlbWVudEhhc0ZvY3VzV2l0aGluKCkg
Y29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5oYXNGb2N1
c1dpdGhpbigqdGhpcyk7CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZmxhZywg
Ym9vbCBwYXVzZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlvblNjb3BlKQor
dm9pZCBFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCB2YWx1ZSwgYm9vbCBwYXVzZSwgU3R5bGU6Oklu
dmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlvblNjb3BlKQogewotICAgIGlmIChmbGFnID09IGFj
dGl2ZSgpKQorICAgIGlmICh2YWx1ZSA9PSBhY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IHsKLSAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52
YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NBY3RpdmUsIGludmFsaWRh
dGlvblNjb3BlKTsKLSAgICAgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRB
Y3RpdmUoKnRoaXMsIGZsYWcpOworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0FjdGl2ZSwgdmFsdWUsIGludmFsaWRhdGlvblNjb3BlKTsKKyAgICAgICAgZG9jdW1lbnQoKS51
c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRBY3RpdmUoKnRoaXMsIHZhbHVlKTsKICAgICB9CiAKICAg
ICBpZiAoIXJlbmRlcmVyKCkpCkBAIC04NDMsNzIgKzg0Myw3MiBAQCBzdGF0aWMgYm9vbCBzaG91
bGRBbHdheXNIYXZlRm9jdXNWaXNpYmxlV2hlbkZvY3VzZWQoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKICAgICByZXR1cm4gZWxlbWVudC5pc1RleHRGaWVsZCgpIHx8IGVsZW1lbnQuaXNDb250ZW50
RWRpdGFibGUoKSB8fCBpczxIVE1MU2VsZWN0RWxlbWVudD4oZWxlbWVudCk7CiB9CiAKLXZvaWQg
RWxlbWVudDo6c2V0Rm9jdXMoYm9vbCBmbGFnLCBGb2N1c1Zpc2liaWxpdHkgdmlzaWJpbGl0eSkK
K3ZvaWQgRWxlbWVudDo6c2V0Rm9jdXMoYm9vbCB2YWx1ZSwgRm9jdXNWaXNpYmlsaXR5IHZpc2li
aWxpdHkpCiB7Ci0gICAgaWYgKGZsYWcgPT0gZm9jdXNlZCgpKQorICAgIGlmICh2YWx1ZSA9PSBm
b2N1c2VkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBTdHlsZTo6UHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24gZm9jdXNTdHlsZUludmFsaWRhdGlvbigqdGhpcywgeyBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NGb2N1cywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXNWaXNp
YmxlIH0pOwotICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0Rm9jdXNlZCgq
dGhpcywgZmxhZyk7CisgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGZv
Y3VzU3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NG
b2N1cywgdmFsdWUgfSwgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1c1Zpc2libGUsIHZh
bHVlIH0gfSk7CisgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRGb2N1c2Vk
KCp0aGlzLCB2YWx1ZSk7CiAKICAgICAvLyBTaGFkb3cgaG9zdCB3aXRoIGEgc2xvdCB0aGF0IGNv
bnRhaW4gZm9jdXNlZCBlbGVtZW50IGlzIG5vdCBjb25zaWRlcmVkIGZvY3VzZWQuCiAgICAgZm9y
IChhdXRvKiByb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3Qt
Pmhvc3QoKS0+Y29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgewotICAgICAgICByb290LT5zZXRDb250
YWluc0ZvY3VzZWRFbGVtZW50KGZsYWcpOworICAgICAgICByb290LT5zZXRDb250YWluc0ZvY3Vz
ZWRFbGVtZW50KHZhbHVlKTsKICAgICAgICAgcm9vdC0+aG9zdCgpLT5pbnZhbGlkYXRlU3R5bGUo
KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8qIGVsZW1lbnQgPSB0aGlzOyBlbGVtZW50OyBlbGVt
ZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVlKCkpCi0gICAgICAgIGVs
ZW1lbnQtPnNldEhhc0ZvY3VzV2l0aGluKGZsYWcpOworICAgICAgICBlbGVtZW50LT5zZXRIYXNG
b2N1c1dpdGhpbih2YWx1ZSk7CiAKLSAgICBzZXRIYXNGb2N1c1Zpc2libGUoZmxhZyAmJiAodmlz
aWJpbGl0eSA9PSBGb2N1c1Zpc2liaWxpdHk6OlZpc2libGUgfHwgc2hvdWxkQWx3YXlzSGF2ZUZv
Y3VzVmlzaWJsZVdoZW5Gb2N1c2VkKCp0aGlzKSkpOworICAgIHNldEhhc0ZvY3VzVmlzaWJsZSh2
YWx1ZSAmJiAodmlzaWJpbGl0eSA9PSBGb2N1c1Zpc2liaWxpdHk6OlZpc2libGUgfHwgc2hvdWxk
QWx3YXlzSGF2ZUZvY3VzVmlzaWJsZVdoZW5Gb2N1c2VkKCp0aGlzKSkpOwogfQogCi12b2lkIEVs
ZW1lbnQ6OnNldEhhc0ZvY3VzVmlzaWJsZShib29sIGZsYWcpCit2b2lkIEVsZW1lbnQ6OnNldEhh
c0ZvY3VzVmlzaWJsZShib29sIHZhbHVlKQogewogICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5n
cygpLmZvY3VzVmlzaWJsZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICBBU1NFUlQoIWZsYWcgfHwgZm9jdXNlZCgpKTsKLSAgICBBU1NFUlQoIWZv
Y3VzZWQoKSB8fCAhc2hvdWxkQWx3YXlzSGF2ZUZvY3VzVmlzaWJsZVdoZW5Gb2N1c2VkKCp0aGlz
KSB8fCBmbGFnKTsKKyAgICBBU1NFUlQoIXZhbHVlIHx8IGZvY3VzZWQoKSk7CisgICAgQVNTRVJU
KCFmb2N1c2VkKCkgfHwgIXNob3VsZEFsd2F5c0hhdmVGb2N1c1Zpc2libGVXaGVuRm9jdXNlZCgq
dGhpcykgfHwgdmFsdWUpOwogI2VuZGlmCiAKLSAgICBpZiAoaGFzRm9jdXNWaXNpYmxlKCkgPT0g
ZmxhZykKKyAgICBpZiAoaGFzRm9jdXNWaXNpYmxlKCkgPT0gdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGRvY3VtZW50KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0SGFzRm9jdXNWaXNp
YmxlKCp0aGlzLCBmbGFnKTsKKyAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNl
dEhhc0ZvY3VzVmlzaWJsZSgqdGhpcywgdmFsdWUpOwogfQogCi12b2lkIEVsZW1lbnQ6OnNldEhh
c0ZvY3VzV2l0aGluKGJvb2wgZmxhZykKK3ZvaWQgRWxlbWVudDo6c2V0SGFzRm9jdXNXaXRoaW4o
Ym9vbCB2YWx1ZSkKIHsKLSAgICBpZiAoaGFzRm9jdXNXaXRoaW4oKSA9PSBmbGFnKQorICAgIGlm
IChoYXNGb2N1c1dpdGhpbigpID09IHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgewotICAg
ICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRp
b24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzV2l0aGluKTsKLSAgICAgICAg
ZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRIYXNGb2N1c1dpdGhpbigqdGhpcywg
ZmxhZyk7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHls
ZUludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRm9jdXNXaXRoaW4s
IHZhbHVlKTsKKyAgICAgICAgZG9jdW1lbnQoKS51c2VyQWN0aW9uRWxlbWVudHMoKS5zZXRIYXNG
b2N1c1dpdGhpbigqdGhpcywgdmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBFbGVtZW50OjpzZXRI
b3ZlcmVkKGJvb2wgZmxhZywgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlvblNj
b3BlKQordm9pZCBFbGVtZW50OjpzZXRIb3ZlcmVkKGJvb2wgdmFsdWUsIFN0eWxlOjpJbnZhbGlk
YXRpb25TY29wZSBpbnZhbGlkYXRpb25TY29wZSkKIHsKLSAgICBpZiAoZmxhZyA9PSBob3ZlcmVk
KCkpCisgICAgaWYgKHZhbHVlID09IGhvdmVyZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHsK
LSAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxp
ZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3ZlciwgaW52YWxpZGF0aW9u
U2NvcGUpOwotICAgICAgICBkb2N1bWVudCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEhvdmVy
ZWQoKnRoaXMsIGZsYWcpOworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hv
dmVyLCB2YWx1ZSwgaW52YWxpZGF0aW9uU2NvcGUpOworICAgICAgICBkb2N1bWVudCgpLnVzZXJB
Y3Rpb25FbGVtZW50cygpLnNldEhvdmVyZWQoKnRoaXMsIHZhbHVlKTsKICAgICB9CiAKICAgICBp
ZiAoYXV0byogc3R5bGUgPSByZW5kZXJTdHlsZSgpOyBzdHlsZSAmJiBzdHlsZS0+aGFzRWZmZWN0
aXZlQXBwZWFyYW5jZSgpKQogICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLnN0YXRlQ2hhbmdl
ZCgqcmVuZGVyZXIoKSwgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpIb3ZlcmVkKTsKIH0KIAotdm9p
ZCBFbGVtZW50OjpzZXRCZWluZ0RyYWdnZWQoYm9vbCBmbGFnKQordm9pZCBFbGVtZW50OjpzZXRC
ZWluZ0RyYWdnZWQoYm9vbCB2YWx1ZSkKIHsKLSAgICBpZiAoZmxhZyA9PSBpc0JlaW5nRHJhZ2dl
ZCgpKQorICAgIGlmICh2YWx1ZSA9PSBpc0JlaW5nRHJhZ2dlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlk
YXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RyYWcpOwotICAgIGRvY3VtZW50
KCkudXNlckFjdGlvbkVsZW1lbnRzKCkuc2V0QmVpbmdEcmFnZ2VkKCp0aGlzLCBmbGFnKTsKKyAg
ICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24o
KnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RyYWcsIHZhbHVlKTsKKyAgICBkb2N1bWVu
dCgpLnVzZXJBY3Rpb25FbGVtZW50cygpLnNldEJlaW5nRHJhZ2dlZCgqdGhpcywgdmFsdWUpOwog
fQogCiBpbmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25tZW50Rm9ySW5saW5lRGly
ZWN0aW9uKHN0ZDo6b3B0aW9uYWw8U2Nyb2xsTG9naWNhbFBvc2l0aW9uPiBwb3NpdGlvbiwgV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUsIGJvb2wgaXNMVFIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmNwcAppbmRleCBkNGIxMTBhOTY1Y2NjOTAxNTk2OTlkZWRlMTkz
MGMxODM5OTY3YmI2Li41Mjg1NGU4YjliY2QyNWYyZDk4MmExODQwYWM1NDZiNzdmMDNmM2FkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTE4Myw3
ICsxODMsNyBAQCB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmFkZEludmFsaWREZXNjZW5kYW50
KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGludgogCiAgICAgc3RkOjpvcHRpb25hbDxT
dHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24+IHN0eWxlSW52YWxpZGF0aW9uOwog
ICAgIGlmIChtX2ludmFsaWREZXNjZW5kYW50cy5jb21wdXRlc0VtcHR5KCkpCi0gICAgICAgIHN0
eWxlSW52YWxpZGF0aW9uLmVtcGxhY2UoKnRoaXMsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlPiB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1ZhbGlk
LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkIH0pOworICAgICAgICBlbXBsYWNlKHN0
eWxlSW52YWxpZGF0aW9uLCAqdGhpcywgeyB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1ZhbGlk
LCBmYWxzZSB9LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQsIHRydWUgfSB9KTsK
IAogICAgIG1faW52YWxpZERlc2NlbmRhbnRzLmFkZChpbnZhbGlkRm9ybUNvbnRyb2xFbGVtZW50
KTsKIH0KQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OnJlbW92
ZUludmFsaWREZXNjZW5kYW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmCiAKICAgICBz
dGQ6Om9wdGlvbmFsPFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbj4gc3R5bGVJ
bnZhbGlkYXRpb247CiAgICAgaWYgKG1faW52YWxpZERlc2NlbmRhbnRzLmNvbXB1dGVTaXplKCkg
PT0gMSkKLSAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqdGhpcywgc3RkOjppbml0
aWFsaXplcl9saXN0PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+IHsgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVmFsaWQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQgfSk7Cisg
ICAgICAgIGVtcGxhY2Uoc3R5bGVJbnZhbGlkYXRpb24sICp0aGlzLCB7IHsgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVmFsaWQsIHRydWUgfSwgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZh
bGlkLCBmYWxzZSB9IH0pOwogCiAgICAgbV9pbnZhbGlkRGVzY2VuZGFudHMucmVtb3ZlKGZvcm1D
b250cm9sRWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcAppbmRleCA1ZjJhZjI1YTdlZWMwNzcxOTYyOWI1MjgwY2FjZjMzZTBkM2Ew
MWNiLi4yMjBiMjcxNDBjYjU1OTQxZmQ5ZTI1ZWQyMjI5NDgwMzVlZGZmOTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEFuY2VzdG9yRGlzYWJsZWQo
Ym9vbCBpc0Rpc2FibGVkKQogICAgIGlmIChtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0ID09
IGlzRGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRW5hYmxlZCB9
KTsKKyAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZGlzYWJsZWRJbnZh
bGlkYXRpb24oKnRoaXMsIHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwgaXNE
aXNhYmxlZCB9LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuYWJsZWQsICFpc0Rpc2FibGVk
IH0gfSk7CiAKICAgICBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0ID0gaXNEaXNhYmxlZDsK
ICAgICBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvCiAgICAgICAgIGlmIChjYW5CZUFjdHVhbGx5RGlzYWJsZWQoKSkgewog
ICAgICAgICAgICAgYm9vbCBuZXdEaXNhYmxlZCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAgICAg
ICAgIGlmIChtX2Rpc2FibGVkICE9IG5ld0Rpc2FibGVkKSB7Ci0gICAgICAgICAgICAgICAgU3R5
bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGRpc2FibGVkSW52YWxpZGF0aW9uKCp0
aGlzLCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NFbmFibGVkIH0pOworICAgICAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyB7IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBuZXdEaXNhYmxlZCB9LCB7IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0VuYWJsZWQsICFuZXdEaXNhYmxlZCB9IH0pOwogICAgICAgICAgICAgICAgIG1f
ZGlzYWJsZWQgPSBuZXdEaXNhYmxlZDsKICAgICAgICAgICAgICAgICBkaXNhYmxlZEF0dHJpYnV0
ZUNoYW5nZWQoKTsKICAgICAgICAgICAgIH0KQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZhbGlkaXR5KCkKICAgICBib29sIG5ld0lzVmFsaWQg
PSB0aGlzLT5jb21wdXRlVmFsaWRpdHkoKTsKIAogICAgIGlmIChuZXdJc1ZhbGlkICE9IG1faXNW
YWxpZCkgewotICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5
bGVJbnZhbGlkYXRpb24oKnRoaXMsIHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQsIENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQgfSk7CisgICAgICAgIFN0eWxlOjpQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgeyB7IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc1ZhbGlkLCBuZXdJc1ZhbGlkIH0sIHsgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzSW52YWxpZCwgIW5ld0lzVmFsaWQgfSB9KTsKIAogICAgICAgICBtX2lzVmFsaWQg
PSBuZXdJc1ZhbGlkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5k
ZXggOTA3ZjEwZTJhYjQ2ODBmYjRmYzkwNjcyZTg2YzcxZjYxNzM4NGY4OS4uN2VlZmZhMDBhYWIx
Y2Q0Y2MzZDk2M2UyYWQxZjI0N2VmMmVmZDI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcApAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpy
ZWdpc3RlckludmFsaWRBc3NvY2lhdGVkRm9ybUNvbnRyb2woY29uc3QgSFRNTEZvcm1Db250cm9s
CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlv
bj4gc3R5bGVJbnZhbGlkYXRpb247CiAgICAgaWYgKG1faW52YWxpZEFzc29jaWF0ZWRGb3JtQ29u
dHJvbHMuY29tcHV0ZXNFbXB0eSgpKQotICAgICAgICBzdHlsZUludmFsaWRhdGlvbi5lbXBsYWNl
KCp0aGlzLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlw
ZT4geyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzSW52YWxpZCB9KTsKKyAgICAgICAgZW1wbGFjZShzdHlsZUludmFsaWRhdGlvbiwgKnRoaXMs
IHsgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NWYWxpZCwgZmFsc2UgfSwgeyBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NJbnZhbGlkLCB0cnVlIH0gfSk7CiAKICAgICBtX2ludmFsaWRBc3NvY2lh
dGVkRm9ybUNvbnRyb2xzLmFkZChjb25zdF9jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmPihm
b3JtQ29udHJvbEVsZW1lbnQpKTsKIH0KQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIEhUTUxGb3Jt
RWxlbWVudDo6cmVtb3ZlSW52YWxpZEFzc29jaWF0ZWRGb3JtQ29udHJvbElmTmVlZGVkKGNvbnN0
IEhUTUxGb3JtQwogCiAgICAgc3RkOjpvcHRpb25hbDxTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb24+IHN0eWxlSW52YWxpZGF0aW9uOwogICAgIGlmIChtX2ludmFsaWRBc3NvY2lh
dGVkRm9ybUNvbnRyb2xzLmNvbXB1dGVTaXplKCkgPT0gMSkKLSAgICAgICAgc3R5bGVJbnZhbGlk
YXRpb24uZW1wbGFjZSgqdGhpcywgc3RkOjppbml0aWFsaXplcl9saXN0PENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc1R5cGU+IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQsIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0ludmFsaWQgfSk7CisgICAgICAgIGVtcGxhY2Uoc3R5bGVJbnZhbGlk
YXRpb24sICp0aGlzLCB7IHsgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVmFsaWQsIHRydWUgfSwg
eyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NJbnZhbGlkLCBmYWxzZSB9IH0pOwogCiAgICAgbV9p
bnZhbGlkQXNzb2NpYXRlZEZvcm1Db250cm9scy5yZW1vdmUoZm9ybUNvbnRyb2xFbGVtZW50KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDhhOWJiYzUw
Y2U5Zjk5ZGJlZmEwN2EzNDU0OTFjMDEyYzhiNGZiMjMuLjhkY2NkMDFjMWJjNjhkYjE0MTU1YTU1
ODRhYWM3NGFiNmI4NDVhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcApAQCAtOTc1LDE3ICs5NzUsMTcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1RleHRU
eXBlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmlzVGV4dFR5cGUoKTsKIH0KIAot
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRDaGVja2VkKGJvb2wgbm93Q2hlY2tlZCkKK3ZvaWQg
SFRNTElucHV0RWxlbWVudDo6c2V0Q2hlY2tlZChib29sIGlzQ2hlY2tlZCkKIHsKLSAgICBpZiAo
Y2hlY2tlZCgpID09IG5vd0NoZWNrZWQpCisgICAgaWYgKGNoZWNrZWQoKSA9PSBpc0NoZWNrZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5wdXRUeXBlLT53aWxsVXBkYXRlQ2hlY2tlZG5l
c3Mobm93Q2hlY2tlZCk7CisgICAgbV9pbnB1dFR5cGUtPndpbGxVcGRhdGVDaGVja2VkbmVzcyhp
c0NoZWNrZWQpOwogCi0gICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGNo
ZWNrZWRJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0NoZWNrZWQp
OworICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBjaGVja2VkSW52YWxp
ZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NDaGVja2VkLCBpc0NoZWNrZWQp
OwogCiAgICAgbV9kaXJ0eUNoZWNrZWRuZXNzRmxhZyA9IHRydWU7Ci0gICAgbV9pc0NoZWNrZWQg
PSBub3dDaGVja2VkOworICAgIG1faXNDaGVja2VkID0gaXNDaGVja2VkOwogCiAgICAgaWYgKFJh
ZGlvQnV0dG9uR3JvdXBzKiBidXR0b25zID0gcmFkaW9CdXR0b25Hcm91cHMoKSkKICAgICAgICAg
YnV0dG9ucy0+dXBkYXRlQ2hlY2tlZFN0YXRlKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCmluZGV4IGVkYTU5ODk3MzkxZTM3MTYwZTU3Y2M4YTQz
NzQ0N2MxODI2YmYyZjguLjkwMjFmZGZiOTNjYzZiZmQxN2QwYjY5MzZkZWJjMzgxM2NkYTdiOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcApAQCAtODks
MTEgKzg5LDExIEBAIHZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0CiAgICAgaWYgKG5hbWUgPT0gZGlz
YWJsZWRBdHRyKSB7CiAgICAgICAgIGJvb2wgbmV3RGlzYWJsZWQgPSAhdmFsdWUuaXNOdWxsKCk7
CiAgICAgICAgIGlmIChtX2lzRGlzYWJsZWQgIT0gbmV3RGlzYWJsZWQpIHsKLSAgICAgICAgICAg
IFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlv
bigqdGhpcywgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzRW5hYmxlZCB9KTsKKyAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyB7IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0Rpc2FibGVkLCBuZXdEaXNhYmxlZCB9LCB7IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0VuYWJsZWQsICFuZXdEaXNhYmxlZCB9IH0pOwogCiAgICAgICAgICAgICBWZWN0
b3I8U3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uPiBvcHRpb25JbnZhbGlkYXRp
b247CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGRlc2NlbmRhbnQgOiBkZXNjZW5kYW50c09mVHlw
ZTxIVE1MT3B0aW9uRWxlbWVudD4oKnRoaXMpKQotICAgICAgICAgICAgICAgIG9wdGlvbkludmFs
aWRhdGlvbi5hcHBlbmQoeyBkZXNjZW5kYW50LCB7IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0Rp
c2FibGVkLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NFbmFibGVkIH0gfSk7CisgICAgICAgICAg
ICAgICAgb3B0aW9uSW52YWxpZGF0aW9uLmFwcGVuZCh7IGRlc2NlbmRhbnQsIHsgeyBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwgbmV3RGlzYWJsZWQgfSwgeyBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NFbmFibGVkLCAhbmV3RGlzYWJsZWQgfSB9IH0pOwogCiAgICAgICAgICAgICBt
X2lzRGlzYWJsZWQgPSBuZXdEaXNhYmxlZDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCA0MzNiYWI4NzkwMmY0NjdmNmY0OGIzODI0Y2Yy
ZWUyNDcyMjE4M2I3Li5jNTlhYmZjZjNjMjk0ZmVmZTA0MDFiYTRhMWU4MDAxODk5OGVhNDRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMTc4LDE0ICsx
NzgsMTQgQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKICAgICBpZiAobmFtZSA9PSBkaXNhYmxl
ZEF0dHIpIHsKICAgICAgICAgYm9vbCBuZXdEaXNhYmxlZCA9ICF2YWx1ZS5pc051bGwoKTsKICAg
ICAgICAgaWYgKG1fZGlzYWJsZWQgIT0gbmV3RGlzYWJsZWQpIHsKLSAgICAgICAgICAgIFN0eWxl
OjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhp
cywgeyBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXNhYmxlZCwgQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzRW5hYmxlZCB9KTsKKyAgICAgICAgICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbiBkaXNhYmxlZEludmFsaWRhdGlvbigqdGhpcywgeyB7IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0Rpc2FibGVkLCBuZXdEaXNhYmxlZCB9LCAgeyBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NFbmFibGVkLCAhbmV3RGlzYWJsZWQgfSB9KTsKICAgICAgICAgICAgIG1fZGlzYWJsZWQg
PSBuZXdEaXNhYmxlZDsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCkt
PnN0eWxlKCkuaGFzRWZmZWN0aXZlQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgICAgIHJlbmRl
cmVyKCktPnRoZW1lKCkuc3RhdGVDaGFuZ2VkKCpyZW5kZXJlcigpLCBDb250cm9sU3RhdGVzOjpT
dGF0ZXM6OkVuYWJsZWQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHNlbGVj
dGVkQXR0cikgewogICAgICAgICAvLyBGSVhNRTogVXNlIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uIGluIG90aGVyIGVsZW1lbnRzIHRoYXQgaW1wbGVtZW50IG1hdGNoZXNEZWZhdWx0UHNl
dWRvQ2xhc3MoKS4KLSAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
IGRlZmF1bHRJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RlZmF1
bHQpOworICAgICAgICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gZGVmYXVs
dEludmFsaWRhdGlvbigqdGhpcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGVmYXVsdCwgIXZh
bHVlLmlzTnVsbCgpKTsKICAgICAgICAgbV9pc0RlZmF1bHQgPSAhdmFsdWUuaXNOdWxsKCk7CiAK
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBIVE1MIHNwZWNp
ZmljYXRpb24gc2F5cy4KQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50
OjpzZXRTZWxlY3RlZFN0YXRlKGJvb2wgc2VsZWN0ZWQpCiAgICAgaWYgKG1faXNTZWxlY3RlZCA9
PSBzZWxlY3RlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uIGNoZWNrZWRJbnZhbGlkYXRpb24oKnRoaXMsIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0NoZWNrZWQpOworICAgIFN0eWxlOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRh
dGlvbiBjaGVja2VkSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3ND
aGVja2VkLCBzZWxlY3RlZCk7CiAKICAgICBtX2lzU2VsZWN0ZWQgPSBzZWxlY3RlZDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGYxZGI1MjA4NDY1NDU2MTY1ZWY3ZGY2
YTNjM2JjODVkOTM5YTZhOTIuLjE2ZDUzODlkZmZmYWMzMjU0ZmNlZjRmYTc5YTA3NjU1ZGQwMDMz
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM2NDAsNyArMzY0MCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjppbnRlcm5hbEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50CiAgICAgICAgIGJvb2wgdXNlckhhc0ludGVyYWN0
ZWRWaWFLZXl3b3JkID0ga2V5ZG93bi0+bW9kaWZpZXJLZXlzKCkuaXNFbXB0eSgpIHx8ICgoa2V5
ZG93bi0+c2hpZnRLZXkoKSB8fCBrZXlkb3duLT5jYXBzTG9ja0tleSgpKSAmJiAhaW5pdGlhbEtl
eUV2ZW50LnRleHQoKS5pc0VtcHR5KCkpOwogCiAgICAgICAgIGlmIChlbGVtZW50LmZvY3VzZWQo
KSAmJiB1c2VySGFzSW50ZXJhY3RlZFZpYUtleXdvcmQpIHsKLSAgICAgICAgICAgIFN0eWxlOjpQ
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbiBmb2N1c1Zpc2libGVTdHlsZUludmFsaWRhdGlv
bihlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NGb2N1c1Zpc2libGUpOworICAgICAg
ICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIGZvY3VzVmlzaWJsZVN0
eWxlSW52YWxpZGF0aW9uKGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0ZvY3VzVmlz
aWJsZSwgdHJ1ZSk7CiAgICAgICAgICAgICBlbGVtZW50LnNldEhhc0ZvY3VzVmlzaWJsZSh0cnVl
KTsKICAgICAgICAgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Q
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Q
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKaW5kZXggMWVlMGZkMTk3N2M3OTI5NjNk
YzkzNzQ1M2M2OWY3MzUwMDllMGViYS4uNmQxMWRlNmI1NWJlMWRmOGFmYzhlNGZlZDgwOWRmNjA1
NzlhMmNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgVmVjdG9yPFBz
ZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5LCA0PiBtYWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25L
ZXlzKENTUwogICAgIHJldHVybiBrZXlzOwogfTsKIAotdm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbjo6Y29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NU
eXBlIHBzZXVkb0NsYXNzLCBJbnZhbGlkYXRpb25TY29wZSBpbnZhbGlkYXRpb25TY29wZSkKK3Zv
aWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbXB1dGVJbnZhbGlkYXRpb24oQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcywgYm9vbCB2YWx1ZSwgSW52YWxp
ZGF0aW9uU2NvcGUgaW52YWxpZGF0aW9uU2NvcGUpCiB7CiAgICAgYm9vbCBzaG91bGRJbnZhbGlk
YXRlQ3VycmVudCA9IGZhbHNlOwogICAgIGJvb2wgbWF5QWZmZWN0U3R5bGVJblNoYWRvd1RyZWUg
PSBmYWxzZTsKQEAgLTcyLDEwICs3MiwxMCBAQCB2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcwogICAg
ICAgICBtX2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxlKCk7CiAKICAgICBmb3IgKGF1dG8mIGtleSA6
IG1ha2VQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleXMocHNldWRvQ2xhc3MsIG1fZWxlbWVudCkp
Ci0gICAgICAgIGNvbGxlY3RSdWxlU2V0cyhrZXksIGludmFsaWRhdGlvblNjb3BlKTsKKyAgICAg
ICAgY29sbGVjdFJ1bGVTZXRzKGtleSwgdmFsdWUsIGludmFsaWRhdGlvblNjb3BlKTsKIH0KIAot
dm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29sbGVjdFJ1bGVTZXRzKGNvbnN0
IFBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5JiBrZXksIEludmFsaWRhdGlvblNjb3BlIGludmFs
aWRhdGlvblNjb3BlKQordm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29sbGVj
dFJ1bGVTZXRzKGNvbnN0IFBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5JiBrZXksIGJvb2wgdmFs
dWUsIEludmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlvblNjb3BlKQogewogICAgIGF1dG8mIHJ1
bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpOwogICAgIGF1dG8q
IGludmFsaWRhdGlvblJ1bGVTZXRzID0gcnVsZVNldHMucHNldWRvQ2xhc3NJbnZhbGlkYXRpb25S
dWxlU2V0cyhrZXkpOwpAQCAtMTAwLDE0ICsxMDAsMjQgQEAgdm9pZCBQc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbjo6Y29sbGVjdFJ1bGVTZXRzKGNvbnN0IFBzZXVkb0NsYXNzSW52YWxpZGF0
aW8KICAgICAgICAgaWYgKCFzaG91bGRJbnZhbGlkYXRlKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMobV9tYXRj
aEVsZW1lbnRSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgICAgIGJvb2wgaW52
YWxpZGF0ZUJlZm9yZUNoYW5nZSA9IGludmFsaWRhdGlvblJ1bGVTZXQuaXNOZWdhdGlvbiA9PSBJ
c05lZ2F0aW9uOjpZZXMgPyB2YWx1ZSA6ICF2YWx1ZTsKKyAgICAgICAgaWYgKGludmFsaWRhdGVC
ZWZvcmVDaGFuZ2UpCisgICAgICAgICAgICBJbnZhbGlkYXRvcjo6YWRkVG9NYXRjaEVsZW1lbnRS
dWxlU2V0cyhtX2JlZm9yZUNoYW5nZVJ1bGVTZXRzLCBpbnZhbGlkYXRpb25SdWxlU2V0KTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVs
ZVNldHMobV9hZnRlckNoYW5nZVJ1bGVTZXRzLCBpbnZhbGlkYXRpb25SdWxlU2V0KTsKICAgICB9
CiB9CiAKLXZvaWQgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHls
ZVdpdGhSdWxlU2V0cygpCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZh
bGlkYXRlQmVmb3JlQ2hhbmdlKCkKIHsKLSAgICBJbnZhbGlkYXRvcjo6aW52YWxpZGF0ZVdpdGhN
YXRjaEVsZW1lbnRSdWxlU2V0cyhtX2VsZW1lbnQsIG1fbWF0Y2hFbGVtZW50UnVsZVNldHMpOwor
ICAgIEludmFsaWRhdG9yOjppbnZhbGlkYXRlV2l0aE1hdGNoRWxlbWVudFJ1bGVTZXRzKG1fZWxl
bWVudCwgbV9iZWZvcmVDaGFuZ2VSdWxlU2V0cyk7CiB9CiAKK3ZvaWQgUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSgpCit7CisgICAgSW52YWxpZGF0
b3I6OmludmFsaWRhdGVXaXRoTWF0Y2hFbGVtZW50UnVsZVNldHMobV9lbGVtZW50LCBtX2FmdGVy
Q2hhbmdlUnVsZVNldHMpOworfQorCisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCmluZGV4IDk3OTQ3NDFjZmM3ZDEw
ZjZkOTI3MWRiYjI2MWI0MjI3NTFkMmU3MmYuLjljOTQxYzdhMjE2YTE0OTBiZGY2YmY2MmJlOTZj
YTAxZDIyNTA3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uaApAQCAtMzUsNDkgKzM1LDU2IEBAIG5hbWVzcGFjZSBTdHls
ZSB7CiAKIGNsYXNzIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uIHsKIHB1YmxpYzoKLSAg
ICBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzVHlwZSwgSW52YWxpZGF0aW9uU2NvcGUgPSBJbnZhbGlkYXRpb25TY29wZTo6QWxs
KTsKLSAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50Jiwgc3RkOjppbml0
aWFsaXplcl9saXN0PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGU+LCBJbnZhbGlkYXRpb25T
Y29wZSA9IEludmFsaWRhdGlvblNjb3BlOjpBbGwpOworICAgIFBzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uKEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBib29sIHZh
bHVlLCBJbnZhbGlkYXRpb25TY29wZSA9IEludmFsaWRhdGlvblNjb3BlOjpBbGwpOworICAgIFBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8c3RkOjpwYWlyPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIGJvb2w+Pik7CiAKICAg
ICB+UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGNvbXB1dGVJbnZhbGlkYXRpb24oQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgU3R5bGU6
OkludmFsaWRhdGlvblNjb3BlKTsKLSAgICB2b2lkIGNvbGxlY3RSdWxlU2V0cyhjb25zdCBQc2V1
ZG9DbGFzc0ludmFsaWRhdGlvbktleSYsIEludmFsaWRhdGlvblNjb3BlKTsKLSAgICB2b2lkIGlu
dmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygpOworICAgIHZvaWQgY29tcHV0ZUludmFsaWRhdGlv
bihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBib29sIHZhbHVlLCBTdHlsZTo6SW52YWxp
ZGF0aW9uU2NvcGUpOworICAgIHZvaWQgY29sbGVjdFJ1bGVTZXRzKGNvbnN0IFBzZXVkb0NsYXNz
SW52YWxpZGF0aW9uS2V5JiwgYm9vbCB2YWx1ZSwgSW52YWxpZGF0aW9uU2NvcGUpOworICAgIHZv
aWQgaW52YWxpZGF0ZUJlZm9yZUNoYW5nZSgpOworICAgIHZvaWQgaW52YWxpZGF0ZUFmdGVyQ2hh
bmdlKCk7CiAKICAgICBjb25zdCBib29sIG1faXNFbmFibGVkOwogICAgIEVsZW1lbnQmIG1fZWxl
bWVudDsKIAotICAgIEludmFsaWRhdG9yOjpNYXRjaEVsZW1lbnRSdWxlU2V0cyBtX21hdGNoRWxl
bWVudFJ1bGVTZXRzOworICAgIEludmFsaWRhdG9yOjpNYXRjaEVsZW1lbnRSdWxlU2V0cyBtX2Jl
Zm9yZUNoYW5nZVJ1bGVTZXRzOworICAgIEludmFsaWRhdG9yOjpNYXRjaEVsZW1lbnRSdWxlU2V0
cyBtX2FmdGVyQ2hhbmdlUnVsZVNldHM7CiB9OwogCi1pbmxpbmUgUHNldWRvQ2xhc3NDaGFuZ2VJ
bnZhbGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1l
bnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3NUeXBlLCBTdHlsZTo6
SW52YWxpZGF0aW9uU2NvcGUgaW52YWxpZGF0aW9uU2NvcGUpCitpbmxpbmUgdm9pZCBlbXBsYWNl
KHN0ZDo6b3B0aW9uYWw8UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24+JiBpbnZhbGlkYXRp
b24sIEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8Q1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgYm9vbD4+IHBzZXVkb0NsYXNzZXMpCit7CisgICAg
aW52YWxpZGF0aW9uLmVtcGxhY2UoZWxlbWVudCwgcHNldWRvQ2xhc3Nlcyk7Cit9CisKK2lubGlu
ZSBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24oRWxlbWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1
ZG9DbGFzcywgYm9vbCB2YWx1ZSwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlIGludmFsaWRhdGlv
blNjb3BlKQogICAgIDogbV9pc0VuYWJsZWQoZWxlbWVudC5uZWVkc1N0eWxlSW52YWxpZGF0aW9u
KCkpCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKIAogewogICAgIGlmICghbV9pc0VuYWJsZWQp
CiAgICAgICAgIHJldHVybjsKLSAgICBjb21wdXRlSW52YWxpZGF0aW9uKHBzZXVkb0NsYXNzVHlw
ZSwgaW52YWxpZGF0aW9uU2NvcGUpOwotICAgIGludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0cygp
OworICAgIGNvbXB1dGVJbnZhbGlkYXRpb24ocHNldWRvQ2xhc3MsIHZhbHVlLCBpbnZhbGlkYXRp
b25TY29wZSk7CisgICAgaW52YWxpZGF0ZUJlZm9yZUNoYW5nZSgpOwogfQogCi1pbmxpbmUgUHNl
dWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
KEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NUeXBlPiBwc2V1ZG9DbGFzc2VzLCBTdHlsZTo6SW52YWxpZGF0aW9uU2NvcGUgaW52
YWxpZGF0aW9uU2NvcGUpCitpbmxpbmUgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OlBz
ZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxzdGQ6OnBhaXI8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgYm9vbD4+
IHBzZXVkb0NsYXNzZXMpCiAgICAgOiBtX2lzRW5hYmxlZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZh
bGlkYXRpb24oKSkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogewogICAgIGlmICghbV9pc0Vu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKGF1dG8gcHNldWRvQ2xhc3MgOiBwc2V1
ZG9DbGFzc2VzKQotICAgICAgICBjb21wdXRlSW52YWxpZGF0aW9uKHBzZXVkb0NsYXNzLCBpbnZh
bGlkYXRpb25TY29wZSk7Ci0gICAgaW52YWxpZGF0ZVN0eWxlV2l0aFJ1bGVTZXRzKCk7CisgICAg
ICAgIGNvbXB1dGVJbnZhbGlkYXRpb24ocHNldWRvQ2xhc3MuZmlyc3QsIHBzZXVkb0NsYXNzLnNl
Y29uZCwgU3R5bGU6OkludmFsaWRhdGlvblNjb3BlOjpBbGwpOworICAgIGludmFsaWRhdGVCZWZv
cmVDaGFuZ2UoKTsKIH0KIAogaW5saW5lIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjp+
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oKQogewogICAgIGlmICghbV9pc0VuYWJsZWQp
CiAgICAgICAgIHJldHVybjsKLSAgICBpbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKTsKKyAg
ICBpbnZhbGlkYXRlQWZ0ZXJDaGFuZ2UoKTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>