<?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>224078</bug_id>
          
          <creation_ts>2021-04-01 14:45:02 -0700</creation_ts>
          <short_desc>Enable VMTraps checks in RETURN_IF_EXCEPTION.</short_desc>
          <delta_ts>2021-04-10 09:15:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746267</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-01 14:45:02 -0700</bug_when>
    <thetext>Doing so has many advantages.  Details to follow in the ChangeLog.

rdar://75037057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746333</commentid>
    <comment_count>1</comment_count>
      <attachid>424964</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-01 17:17:55 -0700</bug_when>
    <thetext>Created attachment 424964
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748698</commentid>
    <comment_count>2</comment_count>
      <attachid>425612</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-09 05:03:38 -0700</bug_when>
    <thetext>Created attachment 425612
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748786</commentid>
    <comment_count>3</comment_count>
      <attachid>425612</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-09 11:03:51 -0700</bug_when>
    <thetext>Comment on attachment 425612
proposed patch.

r=me with some comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748798</commentid>
    <comment_count>4</comment_count>
      <attachid>425612</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-04-09 11:29:03 -0700</bug_when>
    <thetext>Comment on attachment 425612
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/VMTraps.h:54
&gt; +    //  NeedDebuggerBreak

Should this be lower priority than the NeedTermination check? It seems like it wouldn&apos;t be great to present the debugger to a user then terminate as soon as they step into an exception check.

&gt; Source/JavaScriptCore/runtime/VMTraps.h:55
&gt; +    //  - services asynchronous debugger break requests.

Nit: it&apos;s a bit strange that you&apos;re using sentences here but each bullet starts with a lower case letter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748810</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-09 11:42:43 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to Keith Miller from comment #4)
&gt; Comment on attachment 425612 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425612&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VMTraps.h:54
&gt; &gt; +    //  NeedDebuggerBreak
&gt; 
&gt; Should this be lower priority than the NeedTermination check? It seems like
&gt; it wouldn&apos;t be great to present the debugger to a user then terminate as
&gt; soon as they step into an exception check.

I agree.  NeedDebuggerBreak should be lower than all events except for NeedExceptionHandling.  I&apos;ll move it.

&gt; &gt; Source/JavaScriptCore/runtime/VMTraps.h:55
&gt; &gt; +    //  - services asynchronous debugger break requests.
&gt; 
&gt; Nit: it&apos;s a bit strange that you&apos;re using sentences here but each bullet
&gt; starts with a lower case letter.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748998</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-10 09:15:28 -0700</bug_when>
    <thetext>I&apos;ve applied the changes as well as fixed some comment typos and added a size impact note in the ChangeLog.

Landed in r275797: &lt;http://trac.webkit.org/r275797&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424964</attachid>
            <date>2021-04-01 17:17:55 -0700</date>
            <delta_ts>2021-04-01 18:42:19 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-224078.patch</filename>
            <type>text/plain</type>
            <size>72450</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzUzOTMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA0LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBbGxvdyBhIFRlcm1pbmF0aW9uRXhjZXB0aW9uIHRvIGJlIHRocm93biBm
cm9tIGFub3RoZXIgdGhyZWFkIChub3QgdGhlIG11dGF0b3IpLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MDc4CisgICAgICAgIHJkYXI6Ly83NTAz
NzA1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3RyZXNzL3dhdGNoZG9nLWZpcmUtd2hpbGUtaW4tZm9yRWFjaEluSXRlcmFibGUuanM6IEFkZGVk
LgorCiAyMDIxLTA0LTAxICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4K
IAogICAgICAgICBPcHRpbWl6ZSBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZSgpIGFuZCBQcm94eSdz
IFtbT3duUHJvcGVydHlLZXlzXV0gbWV0aG9kCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy93YXRjaGRv
Zy1maXJlLXdoaWxlLWluLWZvckVhY2hJbkl0ZXJhYmxlLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL3dhdGNoZG9nLWZpcmUtd2hpbGUtaW4tZm9yRWFjaEluSXRlcmFibGUuanMJKG5v
bmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mvd2F0Y2hkb2ctZmlyZS13aGlsZS1pbi1mb3JF
YWNoSW5JdGVyYWJsZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKy8vQCBydW5E
ZWZhdWx0KCItLXdhdGNoZG9nPTEwMCIsICItLXdhdGNoZG9nLWV4Y2VwdGlvbi1vayIpCisKK2Nv
bnN0IGEgPSBbXTsKK2FbMioqMzItMl0gPSAwOworbmV3IFVpbnQ4QXJyYXkoYSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTM5MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMjggQEAKKzIwMjEt
MDQtMDEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGEg
VGVybWluYXRpb25FeGNlcHRpb24gdG8gYmUgdGhyb3duIGZyb20gYW5vdGhlciB0aHJlYWQgKG5v
dCB0aGUgbXV0YXRvcikuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjQwNzgKKyAgICAgICAgcmRhcjovLzc1MDM3MDU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gcHJlLWV4aXN0aW5nIGNvZGUsIHRl
cm1pbmF0aW9uIG9mIGEgVk0ncyBleGVjdXRpb24gY2FuIGFscmVhZHkgYmUgcmVxdWVzdGVkCisg
ICAgICAgIGFzeW5jaHJvbm91c2x5ICh3aXRoIHJlc3BlY3QgdG8gdGhlIG11dGF0b3IgdGhyZWFk
KS4gIEZvciBleGFtcGxlLCBzb3VyY2VzIG9mIHN1Y2gKKyAgICAgICAgYSByZXF1ZXN0IGNhbiBi
ZSBhIHdhdGNoZG9nIHRpbWVyIGZpcmluZywgb3IgYSByZXF1ZXN0IHRvIHN0b3AgZXhlY3V0aW9u
IGlzc3VlIGZyb20KKyAgICAgICAgYSBtYWluIHdlYiB0aHJlYWQgdG8gYSB3b3JrZXIgdGhyZWFk
LgorCisgICAgICAgIFdoZW4gdGhpcyByZXF1ZXN0IGlzIG1hZGUgYnkgZmlyaW5nIHRoZSBWTVRy
YXBzOjpOZWVkVGVybWluYXRpb24gZXZlbnQgb24gVk1UcmFwcy4KKyAgICAgICAgRmlyaW5nIHRo
ZSBldmVudCBoZXJlIG9ubHkgbWVhbnMgc2V0dGluZyBhIGZsYWcgdG8gaW5kaWNhdGUgdGhlIHBy
ZXNlbmNlIG9mIHRoZQorICAgICAgICByZXF1ZXN0LiAgV2Ugc3RpbGwgaGF2ZSB0byB3YWl0IHRp
bGwgdGhlIG11dGF0b3IgdGhyZWFkIHJlYWNoZXMgb25lIG9mIHRoZQorICAgICAgICBwcmUtZGVz
aWduYXRlZCBwb2xsaW5nIGNoZWNrIHBvaW50cyB0byBjYWxsIFZNVHJhcHM6OmhhbmRsZVRyYXBz
KCkgaW4gb3JkZXIgdG8KKyAgICAgICAgc2VydmljZSB0aGUgcmVxdWVzdC4gIEluIHJlc3BvbnNl
IHRvIHRoZSBOZWVkVGVybWluYXRpb24gZXZlbnQsIGhhbmRsZVRyYXBzKCkgd2lsbAorICAgICAg
ICB0aHJvdyB0aGUgdW5jYXRjaGFibGUgVGVybWluYXRlRXhlY3V0aW9uRXhjZXB0aW9uIHRvIHVu
d2luZCBvdXQgb2YgYWxsIEpTIGNvZGUKKyAgICAgICAgYW5kIGV4aXQgdGhlIFZNLgorCisgICAg
ICAgIEFzIGEgcmVzdWx0IG9mIHRoaXMgbmVlZCB0byB3YWl0IGZvciBhIHBvbGxpbmcgY2hlY2sg
cG9pbnQsIGlmIHRoZSBtdXRhdG9yIGlzCisgICAgICAgIGV4ZWN1dGluZyBpbiBhIGxvbmcgcnVu
bmluZyBDKysgbG9vcCwgdGhlbiB0aGUgdGVybWluYXRpb24gcmVxdWVzdCBtYXkgbm90IGJlCisg
ICAgICAgIHNlcnZpY2VkIGZvciBhIGxvbmcgdGltZS4KKworICAgICAgICBIb3dldmVyLCB3ZSBv
YnNlcnZlZCB0aGF0IGEgbG90IG9mIG91ciBDKysgbG9vcHMgYWxyZWFkeSBoYXZlIGV4Y2VwdGlv
biBjaGVja3MuCisgICAgICAgIEhlbmNlLCBpZiB3ZSBhcmUgYWJsZSB0byB0aHJvdyB0aGUgVGVy
bWluYXRpb25FeGNlcHRpb24gYXN5bmNocm9ub3VzbHkgZnJvbQorICAgICAgICBhbm90aGVyIHRo
cmVhZCwgdGhlbiB3ZSBnZXQgdG8gYnJlYWsgb3V0IG9mIHRoZXNlIGxvb3BzIHdpdGhvdXQgbmVl
ZGluZyB0byBhZGQKKyAgICAgICAgZXh0cmEgY2hlY2tzIGkuZS4gd2l0aG91dCBhbnkgcGVyZm9y
bWFuY2UgcGVuYWx0eS4gIFRoaXMgcGF0Y2ggbWFrZXMgaXQgcG9zc2libGUKKyAgICAgICAgdG8g
dGhyb3cgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGFzeW5jaHJvbm91c2x5LgorCisgICAgICAg
IEZ1bGwgZGV0YWlscyBvZiB3aGF0IHRoaXMgcGF0Y2ggY2hhbmdlczoKKworICAgICAgICAxLiBS
ZW5hbWUgVGVybWluYXRlRXhlY3V0aW9uRXhjZXB0aW9uIHRvIFRlcm1pbmF0aW9uRXhjZXB0aW9u
IGJlY2F1c2UgdGhlIG9yaWdpbmFsCisgICAgICAgICAgIGlzIGEgbW91dGhmdWwsIGFuZCB0aGUg
ZXh0cmEgdmVyYm9zaXR5IGRvZXNuJ3QgYWRkIG11Y2ggdmFsdWUuCisKKyAgICAgICAgMi4gVGhl
IFRlcm1pbmF0aW9uRXhjZXB0aW9uIGlzIG5vdyBhIHNpbmdsZXRvbi4gIFByZXZpb3VzbHksIHdl
IGluc3RhbnRpYXRlIG9uZQorICAgICAgICAgICBhdCB0aGUgcG9pbnQgd2hlcmUgd2Ugd2FudCB0
byB0aHJvdyBvbmUuICBOb3csIHdlIGluc3RhbnRpYXRlIHRoZSBzaW5nbGV0b24KKyAgICAgICAg
ICAgYW5kIHN0YXNoIGl0IGluIFZNOjptX3Rlcm1pbmF0aW9uRXhjZXB0aW9uIHdoZW4gdGhlIGZv
bGxvd2luZyBhcmUgdHJ1ZToKKworICAgICAgICAgICBhLiBUaGUgVk0gd2F0Y2hkb2cgaXMgaW5z
dGFudGlhdGVkIGkuZS4gd2UgbWF5IHdhbnQgdG8gdGVybWluYXRlIG9uIHRpbWVvdXRzLgorICAg
ICAgICAgICBiLiBUaGUgVk0gaXMgdXNlZCBmb3IgYSBXb3JrZXIgdGhyZWFkIGkuZS4gaXQgbmVl
ZHMgdG8gc3VwcG9ydCB0ZXJtaW5hdGlvbi4KKworICAgICAgICAzLiBUaGUgcHJldmlvdXMgVGVy
bWluYXRlRXhlY3V0aW9uRXhjZXB0aW9uIGNsYXNzIGhhcyBiZWVuIGRlbGV0ZWQuCisgICAgICAg
ICAgIFRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBpcyBub3cganVzdCBhbiBFeGNlcHRpb24gaW5z
dGFuY2Ugd3JhcHBpbmcgYQorICAgICAgICAgICBTeW1ib2wuICBUaGUgU3ltYm9sIHNlcnZlcyBh
cyB0aGUgdGhyb3duIHZhbHVlLgorCisgICAgICAgICAgIE5vdGUgdGhhdCB0aGUgVGVybWluYXRp
b25FeGNlcHRpb24gaGFzIGFsd2F5cyBiZWVuIGEgVk0gaW50ZXJuYWwgbWVjaGFuaXNtIGFuZAor
ICAgICAgICAgICBpcyBzdXBwb3NlZGx5IG5ldmVyIGV4cG9zZWQgdG8gSlMgcHJvZ3JhbW1lcnMs
IG1haW5seSBiZWNhdXNlIGl0IGNhbm5vdCBiZQorICAgICAgICAgICBjYXVnaHQuCisKKyAgICAg
ICAgICAgSG93ZXZlciwgV2ViSW5zcGVjdG9yIGNhbiBpbnNwZWN0IHRoZSBUZXJtaW5hdGlvbkV4
Y2VwdGlvbiB2YWx1ZSB3aGVuIGl0IGlzCisgICAgICAgICAgIHRocm93bi4gIFNvIG5vdywgaXQg
c2VlcyBTeW1ib2woIlRlcm1pbmF0aW9uRXJyb3IiKSBpbnN0ZWFkIG9mIHRoZSBvbGQKKyAgICAg
ICAgICAgVGVybWluYXRlRXhlY3V0aW9uRXhjZXB0aW9uIG9iamVjdC4KKworICAgICAgICA0LiBU
aGUgVGVybWluYXRpb25FeGNlcHRpb24gKGJlaW5nIGFuIEV4Y2VwdGlvbikgY2FuIHN0aWxsIGNh
cHR1cmUgYSBzdGFjayB0cmFjZQorICAgICAgICAgICBhdCB0aGUgcG9pbnQgaXQgaXMgdGhyb3du
LiAgVGhpcyBzdGFjayB0cmFjZSBpcyBvbmx5IHVzZWQgYnkgV2ViSW5zcGVjdG9yIHRvCisgICAg
ICAgICAgIGxldCB0aGUgZGV2ZWxvcGVyIGtub3cgd2hlcmUgaXQgaXMgdGhyb3duIGZyb20uCisK
KyAgICAgICAgICAgV2UgY29udGludWUgdG8gY2FwdHVyZSB0aGlzIHN0YWNrIHRyYWNlIGlmIHRo
ZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBpcyB0aHJvd24KKyAgICAgICAgICAgc3luY2hyb25vdXNs
eSBmcm9tIG9uZSBvZiB0aGUgcG9sbGluZyBjaGVjayBwb2ludHMgKHRob3VnaCBpdCBpcyBhcmd1
YWJseSBvZgorICAgICAgICAgICBsaXR0bGUgdmFsdWU7IHNlZSBiZWxvdyBmb3Igd2h5KS4gIFBy
ZXZpb3VzbHksIGEgbmV3IEV4Y2VwdGlvbiBjZWxsIGlzIGNyZWF0ZWQKKyAgICAgICAgICAgd2l0
aCBpdHMgc3RhY2sgZXZlcnkgdGltZSB3ZSB0aHJvdy4gIE5vdywgd2Ugc2ltcGx5IGNhcHR1cmUg
YSBuZXcgc3RhY2sgKGlmCisgICAgICAgICAgIHBvc3NpYmxlKSBhbmQgYmluZCBpdCB0byB0aGUg
c2luZ2xldG9uIEV4Y2VwdGlvbiB3aGVuIHdlIHRocm93LgorCisgICAgICAgICAgIEhvd2V2ZXIs
IGlmIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBhbm90aGVyIHRocmVh
ZCAobm90IHRoZQorICAgICAgICAgICBtdXRhdG9yKSwgd2UnbGwgaW52YWxpZGF0ZSBpdHMgc3Rh
Y2sgaW5zdGVhZC4gIEludmFsaWRhdGlvbiBoZXJlIHNpbXBseSBtZWFucworICAgICAgICAgICB0
aGF0IHdlJ2xsIHNldCBhIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB3aGF0ZXZlciBzdGFjayB2YWx1
ZSBpdCBoYXMgaXMgaW52YWxpZC4KKyAgICAgICAgICAgQXQgc29tZSBwb2ludCBsYXRlciBvbiB0
aGUgbXV0YXRvciB0aHJlYWQsIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBtYXkKKyAgICAgICAg
ICAgY2hvb3NlIHRvIGNsZWFyIChpLmUuIGZyZWUpIHRoZSBzdGFjayBpZiBpdCBpcyBtYXJrZWQg
aW52YWxpZC4KKworICAgICAgICAgICBUaHVzLCBXZWJJbnNwZWN0b3IgbWF5IG5vdCBhbHdheXMg
aGF2ZSBhIHN0YWNrIHRyYWNlIGZvciB0aGUgdGhyb3cgcG9pbnQgb2YgYQorICAgICAgICAgICBU
ZXJtaW5hdGlvbkV4Y2VwdGlvbi4gIFdoZW4gdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGlzIHRo
cm93biBhc3luY2hyb25vdXNseSwKKyAgICAgICAgICAgdGhlIGlkZWEgb2YgYSB0aHJvdyBwb2lu
dCBpcyBub3QgcmVhbGx5IHRoYXQgbWVhbmluZ2Z1bCAvIHVzZWZ1bCBhbnl3YXkuICBXZQorICAg
ICAgICAgICBkZWVtIHRoaXMgYW4gYWNjZXB0YWJsZSB0cmFkZS1vZmYuCisKKyAgICAgICAgNS4g
VGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGNhbiBub3cgbGl0ZXJhbGx5IGJlIHRocm93biBmcm9t
IGFub3RoZXIgdGhyZWFkCisgICAgICAgICAgICh3aGljaCBpcyBvdXIgZ29hbCkuCisKKyAgICAg
ICAgICAgIlRocm93aW5nIiBmcm9tIGFub3RoZXIgdGhyZWFkIGhlcmUgbWVhbnMgdGhhdCB0aGUg
b3RoZXIgdGhyZWFkIHdpbGwgc2ltcGx5IHNldAorICAgICAgICAgICBWTTo6bV9leGNlcHRpb24g
dG8gcG9pbnQgdG8gVk06Om1fdGVybWluYXRpb25FeGNlcHRpb24gaS5lLiBhIHNpbXBsZSBwb2lu
dGVyCisgICAgICAgICAgIHN0b3JlLgorCisgICAgICAgICAgIFRoaXMgaXMgbWFkZSBwb3NzaWJs
ZSBiZWNhdXNlIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBpcyBpbnN0YW50aWF0ZWQgYWhlYWQK
KyAgICAgICAgICAgb2YgdGltZSAoaWYgcG90ZW50aWFsbHkgbmVlZGVkKSwgYW5kIGlzIGEgc2lu
Z2xldG9uLiAgSXQgd291bGQgbm90IGJlIHBvc3NpYmxlCisgICAgICAgICAgIHRvIGFsbG9jYXRl
IGFuZCBpbml0aWFsaXplIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBmcm9tIGFub3RoZXIgdGhy
ZWFkIHJ1bm5pbmcKKyAgICAgICAgICAgY29uY3VycmVudGx5IHRvIHRoZSBtdXRhdG9yLgorCisg
ICAgICAgICAgIE5vdGUgYWxzbyB0aGF0IGJlY2F1c2UgdGhpcyBhc3luY2hyb25vdXMgdGhyb3cg
ZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUKKyAgICAgICAgICAgVk06OnRocm93RXhjZXB0aW9uKCkg
bWV0aG9kLCBXZWJJbnNwZWN0b3IncyBkZWJ1Z2dlciB3aWxsIGFsc28gbm90IGJlIG5vdGlmaWVk
CisgICAgICAgICAgIG9uIHRoaXMgdGhyb3cuICBIZW5jZSwgdGhlICJicmVhayBvbiBleGNlcHRp
b24iIGRlYnVnZ2VyIGZlYXR1cmUgd2lsbCBub3QKKyAgICAgICAgICAgd29yayBmb3Igc3VjaCBh
biBhc3luY2hyb25vdXNseSB0aHJvd24gVGVybWluYXRpb25FeGNlcHRpb24uICBUaGlzIGlzIGFu
CisgICAgICAgICAgIGFjY2VwdGFibGUgdHJhZGUtb2ZmIGJlY2F1c2U6CisKKyAgICAgICAgICAg
YS4gdGhlIHB1cnBvc2Ugb2YgdGhlICJicmVhayBvbiBleGNlcHRpb24iIGRlYnVnZ2VyIGZlYXR1
cmUgaXMgc28gdGhhdCB0aGUgd2ViCisgICAgICAgICAgICAgIGRldmVsb3BlciBjYW4gZGVidWcg
d2hlcmUgYW4gdW5leHBlY3RlZCBleGNlcHRpb24gbWF5IGJlIHRocm93biBmcm9tIHRoZWlyCisg
ICAgICAgICAgICAgIGNvZGUuICBVbmxpa2UgYW4gb3JkaW5hcnkgZXhjZXB0aW9uLCBhIFRlcm1p
bmF0aW9uRXhjZXB0aW9uIGlzIG9ubHkgdGhyb3duCisgICAgICAgICAgICAgIGJlY2F1c2UgdGhl
IFZNIG5lZWRzIHRvIHNodXQgZG93biBkdWUgdG8KKyAgICAgICAgICAgICAgICAgKGkpIGEgd2F0
Y2hkb2cgdGltZW91dCwgb3IKKyAgICAgICAgICAgICAgICAoaWkpIHdoZW4gYSB0aGUgbWFpbiB3
ZWIgdGhyZWFkIGhhcyByZXF1ZXN0ZWQgYSBzdG9wIG9uIGEgd29ya2VyIHRocmVhZC4KKworICAg
ICAgICAgICAgICBJbiBib3RoIG9mIHRoZXNlIGNhc2VzLCB0aGVyZSdzIG5vIG1lYW5pbmdmdWwg
aW5mb3JtYXRpb24gZ2FpbmVkIGJ5IHRoZQorICAgICAgICAgICAgICBkZXZlbG9wZXIgYmVpbmcg
YWJsZSB0byBpbnNwZWN0IHRoZSByYW5kb20gcG9pbnQgaW4gdGhlIG11dGF0b3Igd2hlbgorICAg
ICAgICAgICAgICB0aGUgVk0gZGVjaWRlcyB0byBzdGFydCBzaHV0dGluZyBkb3duLgorCisgICAg
ICAgICAgICAgIEZvciAoaSksIGFsbCB0aGUgZGV2ZWxvcGVyIG5lZWRzIHRvIGtub3cgaWYgdGhh
dCB0aGUgd2F0Y2hkb2cgdGltZWQgb3V0LgorICAgICAgICAgICAgICBGb3IgKGlpKSwgaXQgd291
bGQgYmUgbW9yZSBtZWFuaW5nZnVsIGZvciB0aGUgZGV2ZWxvcGVyIHRvIGJlIGFibGUgdG8gYnJl
YWsKKyAgICAgICAgICAgICAgYXQgdGhlIHBvaW50IGluIHRoZSBtYWluIHdlYiB0aHJlYWQgd2hl
cmUgdGhlIHN0b3Agd2FzIHJlcXVlc3RlZC4KKworICAgICAgICAgICAgICBCb3RoIG9mIHRoZXNl
IGNhbiBiZSBhY2hpZXZlZCBieSBXZWJJbnNwZWN0b3IsIGJ1dCBpcyBvcnRob2dvbmFsIHRvIHRo
ZQorICAgICAgICAgICAgICBiZWhhdmlvciBvZiB0aGUgVGVybWluYXRpb25FeGNlcHRpb24uICBT
bywgd2UnbGwgbm90IGFkZHJlc3MgdGhvc2UgaW4gdGhpcworICAgICAgICAgICAgICBwYXRjaC4K
KworICAgICAgICAgICBiLiB0aGUgdXNlIGNhc2UgZm9yIGEgZGV2ZWxvcGVyIGRlYnVnZ2luZyB0
aGUgc291cmNlIG9mIGEgVGVybWluYXRpb25FeGNlcHRpb24KKyAgICAgICAgICAgICAgaXMgcmFy
ZS4gIEhlbmNlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBoYXZlIGEgbGFyZ2UgdXNlciBpbXBhY3Qu
CisKKyAgICAgICAgNi4gVGhlcmUgaXMgbm93IGEgVk06OmlzVGVybWluYXRpb25FeGNlcHRpb24o
KSB0byBjaGVjayBpZiBhIGN1cnJlbnQgZXhjZXB0aW9uIGlzCisgICAgICAgICAgIHRoZSBUZXJt
aW5hdGlvbkV4Y2VwdGlvbi4gIEl0IHdvcmtzIGJ5IGRvaW5nIGEgc2ltcGxlIHBvaW50ZXIgY29t
cGFyaXNvbiB0aGFua3MKKyAgICAgICAgICAgdG8gdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGJl
aW5nIGEgc2luZ2xldG9uLgorCisgICAgICAgIDcuIE9uZSBjb21wbGljYXRpb24gb2YgaGF2aW5n
IGFuIGFzeW5jaHJvbm91c2x5IHRocm93biBleGNlcHRpb24gaXMgdGhhdCBzb21lIG9mCisgICAg
ICAgICAgIG91ciBjb2RlIGN1cnJlbnRseSBleHBlY3RzIG5vIGV4Y2VwdGlvbiB0byBiZSB0aHJv
d24gYW5kIGRvZXMgbm90IGhhdmUgYWxsIHRoZQorICAgICAgICAgICBuZWVkZWQgZXhjZXB0aW9u
IGNoZWNrcy4gIFRoaXMgaXMgdHJ1ZSBmb3IgbGVuZ3RoeSBpbml0aWFsaXphdGlvbiBjb2RlIChl
LmcuCisgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0Ojppbml0KCkpIHdoZXJlIHRoZSBWTSBpcyBz
dGlsbCBmcmVzaCBhbmQgZXhwZWN0ZWQgdG8gaGF2ZSBhbGwKKyAgICAgICAgICAgdGhlIHJlc291
cmNlcyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgICAg
IEhvd2V2ZXIsIGZvciBhIHdvcmtlciB0aHJlYWQsIGEgVGVybWluYXRpb25FeGNlcHRpb24gbWF5
IGFycml2ZSBiZWZvcmUgdGhlCisgICAgICAgICAgIGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRl
LiAgVGhpcyBjYW4gbGVhZCB0byBjcmFzaGVzIGJlY2F1c2UgcGFydCBvZiB0aGUKKyAgICAgICAg
ICAgaW5pdGlhbGl6YXRpb24gbWF5IGJlIGFib3J0ZWQgaW4gdGhlIHByZXNlbmNlIG9mIGFuIGV4
Y2VwdGlvbiwgd2hpbGUgb3RoZXIKKyAgICAgICAgICAgcGFydHMgc3RpbGwgZXhwZWN0IGV2ZXJ5
dGhpbmcgcHJpb3IgdG8gaGF2ZSBiZWVuIGluaXRpYWxpemVkIGNvcnJlY3RseS4gIEZvcgorICAg
ICAgICAgICByZXNvdXJjZSBleGhhdXN0aW9uICh3aGljaCBpcyBhYm5vcm1hbCksIGl0IGlzIE9L
IHRvIGNyYXNoLiAgRm9yIGEKKyAgICAgICAgICAgVGVybWluYXRpb25FeGNlcHRpb24gKHdoaWNo
IGNhbiBiZSBwYXJ0IG9mIG5vcm1hbCBvcGVyYXRpb24pLCB3ZSBzaG91bGQgbm90IGJlCisgICAg
ICAgICAgIGNyYXNoaW5nLgorCisgICAgICAgICAgIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGlu
dHJvZHVjZSBhIERlZmVyVGVybWluYXRpb24gUkFJSSBzY29wZSBvYmplY3QgdGhhdCB3ZQorICAg
ICAgICAgICBkZXBsb3kgaW4gdGhpcyB0eXBlIG9mIGluaXRpYWxpemF0aW9uIGNvZGUuICBXaXRo
IHRoZSBzY29wZSBpbiBlZmZlY3QsCisKKyAgICAgICAgICAgYS4gaWYgYSBUZXJtaW5hdGlvbkV4
Y2VwdGlvbiBhcnJpdmVzIGJ1dCBoYXNuJ3QgYmVlbiB0aHJvd24geWV0LCBpdCB3aWxsIGJlCisg
ICAgICAgICAgICAgIGRlZmVycmVkIHRpbGwgdGhlIHNjb3BlIGVuZHMgYmVmb3JlIGJlaW5nIHRo
cm93bi4KKyAgICAgICAgICAgYi4gaWYgYSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBoYXMgYWxyZWFk
eSBiZWVuIHRocm93biwgdGhlIHNjb3BlIHdpbGwgc3Rhc2gKKyAgICAgICAgICAgICAgdGhlIGV4
Y2VwdGlvbiwgY2xlYXIgaXQgZnJvbSB0aGUgVk0gc28gdGhhdCB0aGUgaW5pdGlhbGl6YXRpb24g
Y29kZSBjYW4KKyAgICAgICAgICAgICAgcnVuIHRvIGNvbXBsZXRpb24sIGFuZCB0aGVuIHJlLXRo
cm93IHRoZSBleGNlcHRpb24gd2hlbiB0aGUgc2NvcGUgZW5kcy4KKworICAgICAgICAgICBDdXJy
ZW50bHksIHdlIG9ubHkgbmVlZCB0byB1c2UgdGhlIERlZmVyVGVybWluYXRpb24gc2NvcGUgaW4g
YSBmZXcgcGxhY2VzCisgICAgICAgICAgIHdoZXJlIHdlIGtub3cgdGhhdCBpbml0aWFsaXphdGlv
biBjb2RlIHdpbGwgcnVuIG9ubHkgZm9yIGEgc2hvcnQgcGVyaW9kIG9mIHRpbWUuCisKKyAgICAg
ICAgICAgRGVmZXJUZXJtaW5hdGlvbiBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNvZGUgdGhhdCBj
YW4gYmxvY2sgd2FpdGluZyBvbiBhbgorICAgICAgICAgICBleHRlcm5hbCBldmVudCBmb3IgYSBs
b25nIHRpbWUuICBPYnZpb3VzbHksIGRvaW5nIHNvIHdpbGwgcHJldmVudCB0aGUgVk0KKyAgICAg
ICAgICAgdGVybWluYXRpb24gbWVjaGFuaXNtIGZyb20gd29ya2luZy4KKworICAgICAgICA4LiBO
b3QgcmVsYXRlZCB0byBUZXJtaW5hdGlvbkV4Y2VwdGlvbiwgYnV0IHRoaXMgcGF0Y2ggYWxzbyBm
aXhlcworICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6ZXhwYW5kQ2FwYWNpdHkoKSB0
byB1c2UgR2lnYWNhZ2U6OnRyeU1hbGxvYygpIGluc3RlYWQgb2YKKyAgICAgICAgICAgR2lnYWNh
Z2U6Om1hbGxvYygpLiAgVGhpcyBpcyBuZWVkZWQgYXMgb25lIG9mIHRoZSBmaXhlcyB0byBtYWtl
IHRoZQorICAgICAgICAgICBhY2NvbXBhbnlpbmcgdGVzdCBjYXNlIHdvcmsuCisKKyAgICAgICAg
KiBBUEkvSlNDb250ZXh0Lm1tOgorICAgICAgICAoLVtKU0NvbnRleHQgZXZhbHVhdGVKU1Njcmlw
dDpdKToKKyAgICAgICAgKiBBUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHA6Cisg
ICAgICAgICh0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24pOgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnVud2luZCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpub3RpZnlEZWJ1
Z2dlck9mRXhjZXB0aW9uVG9CZVRocm93bik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChjaGVja0V4Y2VwdGlvbik6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEFyZ3VtZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eSk6CisgICAgICAgICogcnVudGltZS9EZWZl
clRlcm1pbmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWZlclRlcm1pbmF0aW9uOjpE
ZWZlclRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6RGVmZXJUZXJtaW5hdGlvbjo6fkRlZmVy
VGVybWluYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KEpTQzo6RXhjZXB0aW9uOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkV4Y2VwdGlv
bjo6Y2FwdHVyZVN0YWNrKToKKyAgICAgICAgKEpTQzo6RXhjZXB0aW9uOjppbnZhbGlkYXRlU3Rh
Y2spOgorICAgICAgICAoSlNDOjpFeGNlcHRpb246OnN0YWNrIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0V4Y2VwdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5j
cHA6CisgICAgICAgIChKU0M6OlRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6ZGVmYXVsdFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6
CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uU2NvcGUu
aDoKKyAgICAgICAgKEpTQzo6RXhjZXB0aW9uU2NvcGU6OmV4Y2VwdGlvbiBjb25zdCk6CisgICAg
ICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjphc3NlcnROb0V4Y2VwdGlvbik6CisgICAgICAgIChK
U0M6OkV4Y2VwdGlvblNjb3BlOjpyZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24pOgorICAgICAgICAo
SlNDOjpFeGNlcHRpb25TY29wZTo6aGFzRXhjZXB0aW9uRXhjbHVkaW5nVGVybWluYXRpb24gY29u
c3QpOgorICAgICAgICAoSlNDOjpFeGNlcHRpb25TY29wZTo6ZXhjZXB0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXQgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpyZWplY3RXaXRoQ2F1
Z2h0RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6
Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OmVuc3VyZVdhdGNoZG9nKToKKyAgICAgICAgKEpT
Qzo6Vk06OmVuc3VyZVRlcm1pbmF0aW9uRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OnRo
cm93VGVybWluYXRpb25FeGNlcHRpb25JbW1lZGlhdGVseSk6CisgICAgICAgIChKU0M6OlZNOjp0
aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpW
TTo6dGVybWluYXRpb25FeGNlcHRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpWTTo6aXNUZXJt
aW5hdGlvbkV4Y2VwdGlvbiBjb25zdCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk1UcmFwczo6ZmlyZVRyYXApOgorICAgICAgICAoSlNDOjpWTVRyYXBz
OjpoYW5kbGVUcmFwcyk6CisgICAgICAgIChKU0M6OlZNVHJhcHM6OmRlZmVyVGVybWluYXRpb24p
OgorICAgICAgICAoSlNDOjpWTVRyYXBzOjp1bmRvRGVmZXJUZXJtaW5hdGlvbik6CisgICAgICAg
ICogcnVudGltZS9WTVRyYXBzLmg6CisgICAgICAgIChKU0M6OlZNVHJhcHM6Om5lZWRUcmFwSGFu
ZGxpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjppc0RlZmVycmluZ1Rlcm1pbmF0
aW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6bmVlZFRyYXBIYW5kbGluZyk6IERl
bGV0ZWQuCisKIDIwMjEtMDQtMDEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OKHIyNzQ3MjQpOiBKSVRDYWdlIHRyYW1wb2xpbmUgbmVlZHMg
dG8gYmUgYWRqdXN0ZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDI3NTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtODc2LDYgKzg3Niw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUEKICAgICBydW50aW1lL0RhdGFWaWV3LmgKICAgICBydW50aW1lL0Rh
dGVJbnN0YW5jZS5oCiAgICAgcnVudGltZS9EYXRlSW5zdGFuY2VDYWNoZS5oCisgICAgcnVudGlt
ZS9EZWZlclRlcm1pbmF0aW9uLmgKICAgICBydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKICAg
ICBydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oCiAgICAgcnVudGltZS9EZWxldGVQ
cm9wZXJ0eVNsb3QuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDI3NTM5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQw
LDcgKzI5NDAsMTYgQEAgc3RhdGljIHZvaWQgY2hlY2tFeGNlcHRpb24oR2xvYmFsT2JqZWN0Kgog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIGlmIChvcHRpb25zLm1f
dHJlYXRXYXRjaGRvZ0V4Y2VwdGlvbkFzU3VjY2VzcyAmJiB2YWx1ZS5pbmhlcml0czxUZXJtaW5h
dGVkRXhlY3V0aW9uRXJyb3I+KHZtKSkgeworICAgIGF1dG8gaXNUZXJtaW5hdGlvbkV4Y2VwdGlv
biA9IFsmXSAoSlNWYWx1ZSB2YWx1ZSkgeworICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9
IGpzRHluYW1pY0Nhc3Q8RXhjZXB0aW9uKj4odm0sIHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAg
aWYgKCFleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgfTsKKyAgICAKKyAg
ICBpZiAob3B0aW9ucy5tX3RyZWF0V2F0Y2hkb2dFeGNlcHRpb25Bc1N1Y2Nlc3MgJiYgaXNUZXJt
aW5hdGlvbkV4Y2VwdGlvbih2YWx1ZSkpIHsKICAgICAgICAgQVNTRVJUKGhhc0V4Y2VwdGlvbik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dC5tbQkocmV2aXNpb24gMjc1MzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDAsNyArMTQwLDcgQEAgLSAoSlNW
YWx1ZSAqKWV2YWx1YXRlSlNTY3JpcHQ6KEpTU2NyaXB0IAogICAgIGlmIChzY29wZS5leGNlcHRp
b24oKSkgewogICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvblZhbHVlID0gdG9SZWYoYXBpR2xv
YmFsT2JqZWN0LCBzY29wZS5leGNlcHRpb24oKS0+dmFsdWUoKSk7CiAgICAgICAgIHNjb3BlLmNs
ZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGNsZWFyRXhj
ZXB0aW9uIGlmIGl0IGlzIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvci4KKyAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBub3QgY2xlYXJFeGNlcHRpb24gaWYgaXQgaXMgdGhlIFRlcm1pbmF0aW9u
RXhjZXB0aW9uLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIwODIxCiAgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdQcm9taXNl
UmVqZWN0ZWRXaXRoUmVhc29uOltKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6ZXhjZXB0aW9u
VmFsdWUgaW5Db250ZXh0OnNlbGZdIGluQ29udGV4dDpzZWxmXTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGlt
ZUxpbWl0VGVzdC5jcHAJKHJldmlzaW9uIDI3NTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNzksNyArMTc5LDcgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIHBy
aW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93
bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDog
JXMgVGVybWluYXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0aW9ucy50
aWVyKTsKICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgfQogCkBAIC0yMjUs
NyArMjI1LDcgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgewotICAgICAgICAgICAg
ICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90
IHRocm93bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIHByaW50Zigi
RkFJTDogJXMgVGVybWluYXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0
aW9ucy50aWVyKTsKICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAg
fQogCkBAIC0yNjgsMTQgKzI2OCwxNCBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uIHdhcyBub3QgdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAg
ICAgICAgcHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3YXMgbm90IHRocm93
bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRlc3RSZXNldEFmdGVyVGltZW91dChmYWls
ZWQpOwogICAgICAgICB9CiAKLSAgICAgICAgLyogVGVzdCB0aGUgc2NyaXB0IHRpbWVvdXQncyBU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHNob3VsZCBOT1QgYmUgY2F0Y2hhYmxlOiAqLwor
ICAgICAgICAvKiBUZXN0IHRoZSBzY3JpcHQgdGltZW91dCdzIFRlcm1pbmF0aW9uRXhjZXB0aW9u
IHNob3VsZCBOT1QgYmUgY2F0Y2hhYmxlOiAqLwogICAgICAgICB0aW1lTGltaXQgPSAxMDBfbXMg
KyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1l
TGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQuc2Vjb25kcygpLCBzaG91bGRUZXJtaW5hdGVD
YWxsYmFjaywgbnVsbHB0cik7CiAgICAgICAgIHsKQEAgLTMxMyw5ICszMTMsOSBAQCBpbnQgdGVz
dEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJQQVNTOiAlcyBU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3QgY2F0Y2hhYmxlIGFzIGV4cGVjdGVk
LlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJQQVNTOiAl
cyBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB3YXMgbm90IGNhdGNoYWJsZSBhcyBleHBlY3RlZC5cbiIs
IHRpZXJPcHRpb25zLnRpZXIpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cHJpbnRmKCJGQUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBjYXVnaHQu
XG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKKyAgICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVz
IFRlcm1pbmF0aW9uRXhjZXB0aW9uIHdhcyBjYXVnaHQuXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsK
ICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC0zNjAs
NyArMzYwLDcgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikgewotICAgICAgICAgICAg
ICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbiB3YXMgbm90
IHRocm93bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAgICAgICAgIHByaW50Zigi
RkFJTDogJXMgVGVybWluYXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24uXG4iLCB0aWVyT3B0
aW9ucy50aWVyKTsKICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAg
fQogCkBAIC00MDUsNyArNDA1LDcgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBVbmV4cGVjdGVkIFRlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24gdGhyb3duLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAgICAg
ICAgICAgcHJpbnRmKCJGQUlMOiAlcyBVbmV4cGVjdGVkIFRlcm1pbmF0aW9uRXhjZXB0aW9uIHRo
cm93bi5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOwogICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NCw3ICs0NTQsNyBAQCBpbnQgdGVz
dEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiRkFJTDog
JXMgc2NyaXB0IHRpbWVvdXQgY2FsbGJhY2sgd2FzIG5vdCBjYWxsZWQgYWZ0ZXIgdGltZW91dCBl
eHRlbnNpb24uXG4iLCB0aWVyT3B0aW9ucy50aWVyKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJG
QUlMOiAlcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uIHdhcyBub3QgdGhyb3duIGR1cmlu
ZyB0aW1lb3V0IGV4dGVuc2lvbiB0ZXN0LlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAg
ICAgICAgICAgICAgIHByaW50ZigiRkFJTDogJXMgVGVybWluYXRpb25FeGNlcHRpb24gd2FzIG5v
dCB0aHJvd24gZHVyaW5nIHRpbWVvdXQgZXh0ZW5zaW9uIHRlc3QuXG4iLCB0aWVyT3B0aW9ucy50
aWVyKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwog
ICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDI3NTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkyLDYgKzE5OTIsNyBAQAog
CQlGRTkxMkI1MTI1MzExQUQxMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFOTEyQjUw
MjUzMTFBRDEwMEZBQkRERiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFOTlCMjQ5MUMyNEMz
RDMwMEM4MjE1OSAvKiBKSVROZWdHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFOTlCMjQ4MUMyNEI2RDMwMEM4MjE1OSAvKiBKSVROZWdH
ZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkU5RjNGQjkyNjEzQzc4OTAwNjlFODlGIC8qIFJlc291cmNl
RXhoYXVzdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU5RjNGQjgyNjEzQzc4ODAwNjlFODlGIC8qIFJlc291cmNlRXhoYXVzdGlvbi5oICovOyB9
OworCQlGRTlGM0ZDODI2MTYzQ0E5MDA2OUU4OUYgLyogRGVmZXJUZXJtaW5hdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU5RjNGQzYyNjE2M0NB
OTAwNjlFODlGIC8qIERlZmVyVGVybWluYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJl
YWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEwODYyMTE4MkI3QTA0MDBGNkQ4
NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUEwODYxRjE4MkI3QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmlt
aXRpdmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRkVBM0JCQTgyMTJCNjU1OTAwRTkzQUQxIC8qIENhbGxGcmFtZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTNCQkE3MjEyQjY1NTgw
MEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUzNjMsNiArNTM2NCw3IEBACiAJCUZFOTlCMjQ4MUMy
NEI2RDMwMEM4MjE1OSAvKiBKSVROZWdHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSklUTmVnR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFOUYzRkI4MjYxM0M3ODgwMDY5RTg5RiAvKiBSZXNvdXJjZUV4aGF1c3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VFeGhhdXN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFOUYzRkJBMjYxM0M4N0MwMDY5RTg5RiAvKiBSZXNv
dXJjZUV4aGF1c3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VFeGhhdXN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU5RjNGQzYyNjE2M0NBOTAwNjlF
ODlGIC8qIERlZmVyVGVybWluYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGVmZXJUZXJtaW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUEw
ODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCcmVha3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1pdGl2ZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJQcmltaXRpdmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQTNCQkE3MjEyQjY1NTgwMEU5M0FEMSAvKiBDYWxsRnJh
bWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxGcmFtZUlu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyODYsNiArNzI4OCw3IEBA
CiAJCQkJMTRBMTU2MzAxMDk2NjM2NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggKi8s
CiAJCQkJQkNEMjAzNDcwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuY3BwICovLAog
CQkJCUJDRDIwMzQ4MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmggKi8sCisJCQkJ
RkU5RjNGQzYyNjE2M0NBOTAwNjlFODlGIC8qIERlZmVyVGVybWluYXRpb24uaCAqLywKIAkJCQk1
MzQ2Mzg3NjFFNzFFMDZFMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIuY3BwICovLAogCQkJ
CTUzNDYzODc0MUU3MERERUMwMEYxMkFDMSAvKiBEZWZlcnJlZFdvcmtUaW1lci5oICovLAogCQkJ
CTE2OTk0OEVERTY4RDQwNTRCMDFFRjc5NyAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCAq
LywKQEAgLTk2NjMsNiArOTY2Niw3IEBACiAJCQkJMEY5RTMyNjQxQjA1QUIwNDAwODAxRUQ1IC8q
IERGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMy
MENCNjE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY2Mzk0NzgxNURDRTM0QjAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFi
c3RyYWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFOUYzRkM4MjYxNjNDQTkwMDY5RTg5
RiAvKiBEZWZlclRlcm1pbmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjUwQUYzQzE5M0U4
QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFkRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhl
YWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGlu
Z3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAkocmV2aXNpb24gMjc1MzkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMjcsNyAr
MTI3LDcgQEAgRXhwZWN0ZWQ8SlNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPj4gUwogCiAgICAg
aWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBEbyBub3QgdHJlYXQgYSB0ZXJtaW5hdGVkIGV4
ZWN1dGlvbiBleGNlcHRpb24gYXMgaGF2aW5nIGFuIGV4Y2VwdGlvbi4gSnVzdCB0cmVhdCBpdCBh
cyBhbiBlbXB0eSByZXN1bHQuCi0gICAgICAgIGlmICghaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKHZtLCBleGNlcHRpb24pKQorICAgICAgICBpZiAoIXZtLmlzVGVybWluYXRpb25FeGNl
cHRpb24oZXhjZXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChleGNl
cHRpb24pOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAJKHJldmlzaW9uIDI3NTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRs
aWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC0xODgsNyArMTg4LDggQEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjppbgogICAgICAgICBhdXRvJiBlcnJvciA9IGNyZWF0ZVJlc3VsdC5lcnJv
cigpOwogICAgICAgICBBU1NFUlQoZXJyb3IpOwogCi0gICAgICAgIGlmIChpc1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT52bSgpLCBlcnJvcikpCisgICAgICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAgICAgaWYgKHZtLmlzVGVybWluYXRpb25F
eGNlcHRpb24oZXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAK
ICAgICAgICAgdW5zaWduZWQgbGluZSA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNzUzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjoKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpyZXBvcnRBUElFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uKiBleGNlcHRpb24pCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAg
IGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIGV4Y2VwdGlvbikpCisgICAg
aWYgKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAyNzUzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJsb28u
Y2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02MDcsNyArNjA3LDcgQEAgTkVWRVJfSU5MSU5FIEhh
bmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dQogCiAgICAgLy8gQ2FsY3VsYXRlIGFuIGV4Y2VwdGlv
biBoYW5kbGVyIHZQQywgdW53aW5kaW5nIGNhbGwgZnJhbWVzIGFzIG5lY2Vzc2FyeS4KICAgICBI
YW5kbGVySW5mbyogaGFuZGxlciA9IG51bGxwdHI7Ci0gICAgVW53aW5kRnVuY3RvciBmdW5jdG9y
KHZtLCBjYWxsRnJhbWUsIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgZXhjZXB0
aW9uKSwgY29kZUJsb2NrLCBoYW5kbGVyKTsKKyAgICBVbndpbmRGdW5jdG9yIGZ1bmN0b3Iodm0s
IGNhbGxGcmFtZSwgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihleGNlcHRpb24pLCBjb2RlQmxv
Y2ssIGhhbmRsZXIpOwogICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQ8U3RhY2tWaXNpdG9yOjpUZXJt
aW5hdGVJZlRvcEVudHJ5RnJhbWVJc0VtcHR5PihjYWxsRnJhbWUsIHZtLCBmdW5jdG9yKTsKICAg
ICBpZiAodm0uaGFzQ2hlY2twb2ludE9TUlNpZGVTdGF0ZSgpKQogICAgICAgICB2bS5wb3BBbGxD
aGVja3BvaW50T1NSU2lkZVN0YXRlVW50aWwoY2FsbEZyYW1lKTsKQEAgLTYyOCw4ICs2MjgsNyBA
QCB2b2lkIEludGVycHJldGVyOjpub3RpZnlEZWJ1Z2dlck9mRXhjZXB0CiAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE3NTQKIAogICAgICAgICBi
b29sIGhhc0NhdGNoSGFuZGxlcjsKLSAgICAgICAgYm9vbCBpc1Rlcm1pbmF0aW9uID0gaXNUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCBleGNlcHRpb24pOwotICAgICAgICBpZiAoaXNU
ZXJtaW5hdGlvbikKKyAgICAgICAgaWYgKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oZXhjZXB0
aW9uKSkKICAgICAgICAgICAgIGhhc0NhdGNoSGFuZGxlciA9IGZhbHNlOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgZnVuY3RvcjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc1
MzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUxOSw3ICszNTE5LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkNoZWNrSQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBSRUxFQVNFX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpKTsKIAotICAgIGlmIChp
c1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIHNjb3BlLmV4Y2VwdGlvbigpKSkgewor
ICAgIGlmICh2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSkgewog
ICAgICAgICBnZW5lcmljVW53aW5kKHZtLCBjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gMTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDI3NTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTg4LDcgKzIxODgsNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaWZfCiAgICAgVU5VU0VEX1BB
UkFNKGdsb2JhbE9iamVjdCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoISF0aHJvd1Njb3BlLmV4Y2Vw
dGlvbigpKTsKIAotICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpKQorICAgIGlmICh2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9u
KHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpKTsKICAgICBMTElO
VF9SRVRVUk5fVFdPKHBjLCBudWxscHRyKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuY3BwCShyZXZpc2lvbiAyNzUzOTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAs
OSBAQCB2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0CiAgICAgYXV0byBj
aGVja2VkU2l6ZSA9IENoZWNrZWRTaXplKG5ld0NhcGFjaXR5KSAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKGNoZWNrZWRTaXplLmhhc092ZXJmbG93ZWQoKSkpCiAg
ICAgICAgIHJldHVybiB0aGlzLT5vdmVyZmxvd2VkKCk7Ci0gICAgRW5jb2RlZEpTVmFsdWUqIG5l
d0J1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oR2lnYWNhZ2U6Om1hbGxvYyhH
aWdhY2FnZTo6SlNWYWx1ZSwgY2hlY2tlZFNpemUudW5zYWZlR2V0KCkpKTsKKyAgICBFbmNvZGVk
SlNWYWx1ZSogbmV3QnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihHaWdhY2Fn
ZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpKU1ZhbHVlLCBjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSkp
OworICAgIGlmICghbmV3QnVmZmVyKQorICAgICAgICByZXR1cm4gdGhpcy0+b3ZlcmZsb3dlZCgp
OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpIHsKICAgICAgICAgbmV3QnVm
ZmVyW2ldID0gbV9idWZmZXJbaV07CiAgICAgICAgIGFkZE1hcmtTZXQoSlNWYWx1ZTo6ZGVjb2Rl
KG1fYnVmZmVyW2ldKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZl
clRlcm1pbmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGVmZXJUZXJtaW5hdGlvbi5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RlZmVyVGVybWluYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiVk0uaCIKKyNpbmNsdWRlIDx3dGYvRm9yYmlkSGVhcEFs
bG9jYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIERlZmVyVGVybWluYXRpb24geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERlZmVyVGVybWluYXRpb24pOworICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9OOworcHVi
bGljOgorICAgIERlZmVyVGVybWluYXRpb24oVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisg
ICAgeworICAgICAgICBtX3ZtLnRyYXBzKCkuZGVmZXJUZXJtaW5hdGlvbigpOworICAgIH0KKyAg
ICAKKyAgICB+RGVmZXJUZXJtaW5hdGlvbigpCisgICAgeworICAgICAgICBtX3ZtLnRyYXBzKCku
dW5kb0RlZmVyVGVybWluYXRpb24oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjc1MzkzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsMTEg
KzgxLDMzIEBAIHZvaWQgRXhjZXB0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEoKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAKICAgICBtX3ZhbHVlLnNldCh2bSwgdGhpcywgdGhy
b3duVmFsdWUpOworICAgIGlmIChhY3Rpb24gPT0gU3RhY2tDYXB0dXJlQWN0aW9uOjpDYXB0dXJl
U3RhY2spCisgICAgICAgIGNhcHR1cmVTdGFjayh2bSk7Cit9CiAKK3ZvaWQgRXhjZXB0aW9uOjpj
YXB0dXJlU3RhY2soVk0mIHZtKQorewogICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBzdGFja1RyYWNl
OwotICAgIGlmIChhY3Rpb24gPT0gU3RhY2tDYXB0dXJlQWN0aW9uOjpDYXB0dXJlU3RhY2spCi0g
ICAgICAgIHZtLmludGVycHJldGVyLT5nZXRTdGFja1RyYWNlKHRoaXMsIHN0YWNrVHJhY2UsIDAs
IE9wdGlvbnM6OmV4Y2VwdGlvblN0YWNrVHJhY2VMaW1pdCgpKTsKKyAgICB2bS5pbnRlcnByZXRl
ci0+Z2V0U3RhY2tUcmFjZSh0aGlzLCBzdGFja1RyYWNlLCAwLCBPcHRpb25zOjpleGNlcHRpb25T
dGFja1RyYWNlTGltaXQoKSk7CiAgICAgbV9zdGFjayA9IFdURk1vdmUoc3RhY2tUcmFjZSk7Cisg
ICAgbV9zdGFja0lzVmFsaWQgPSB0cnVlOworfQorCit2b2lkIEV4Y2VwdGlvbjo6aW52YWxpZGF0
ZVN0YWNrKCkKK3sKKyAgICAvLyBXZSB1c2UgYW4gaW52YWxpZGF0aW9uIGZsYWcgaW5zdGVhZCBv
ZiBjbGVhcmluZyB0aGUgbV9zdGFjayB2ZWN0b3IgZGlyZWN0bHkKKyAgICAvLyBoZXJlIGJlY2F1
c2UgaW52YWxpZGF0ZVN0YWNrKCkgbWF5IGJlIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkIGlu
IGEgcmFjeQorICAgIC8vIG1hbm5lci4gU2luY2UgY2xlYXJpbmcgYSB2ZWN0b3IgbWF5IGVudGFp
bCBmcmVlaW5nIG1lbW9yeSwgaXQgaXMgbm90IHNhZmUKKyAgICAvLyB0byBjYWxsIGl0IGluIGEg
cmFjZSBsaWtlIHRoaXMuIEp1c3Qgc2V0IHRoZSBmbGFnIGFuZCBsZXQgdGhlIG1haW4gdGhyZWFk
CisgICAgLy8gY2xlYXIgaXQgaWYgbmVlZGVkLgorICAgIG1fc3RhY2tJc1ZhbGlkID0gZmFsc2U7
Cit9CisKK2NvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgRXhjZXB0aW9uOjpzdGFjaygpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3N0YWNrSXNWYWxpZCkKKyAgICAgICAgbV9zdGFjay5jbGVhcigpOyAv
LyBJbnZhbGlkYXRlLgorICAgIHJldHVybiBtX3N0YWNrOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5oCShyZXZp
c2lvbiAyNzUzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTEgKzYxLDE0IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQotICAgIGNv
bnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhY2soKSBjb25zdCB7IHJldHVybiBtX3N0YWNrOyB9
CisgICAgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFjaygpIGNvbnN0OwogCiAgICAgYm9v
bCBkaWROb3RpZnlJbnNwZWN0b3JPZlRocm93KCkgY29uc3QgeyByZXR1cm4gbV9kaWROb3RpZnlJ
bnNwZWN0b3JPZlRocm93OyB9CiAgICAgdm9pZCBzZXREaWROb3RpZnlJbnNwZWN0b3JPZlRocm93
KCkgeyBtX2RpZE5vdGlmeUluc3BlY3Rvck9mVGhyb3cgPSB0cnVlOyB9CiAKKyAgICB2b2lkIGlu
dmFsaWRhdGVTdGFjaygpOyAvLyBNYXkgYmUgY2FsbGVkIGNvbmN1cnJlbnRseSBmcm9tIGFub3Ro
ZXIgdGhyZWFkLgorICAgIHZvaWQgY2FwdHVyZVN0YWNrKFZNJik7CisKICAgICB+RXhjZXB0aW9u
KCk7CiAKIHByaXZhdGU6CkBAIC03NCw3ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3ZhbHVl
OwotICAgIFZlY3RvcjxTdGFja0ZyYW1lPiBtX3N0YWNrOworICAgIG11dGFibGUgVmVjdG9yPFN0
YWNrRnJhbWU+IG1fc3RhY2s7CisgICAgYm9vbCBtX3N0YWNrSXNWYWxpZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2RpZE5vdGlmeUluc3BlY3Rvck9mVGhyb3cgeyBmYWxzZSB9OwogCiAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNzUz
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksMzAgKzM5LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LVNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZXJtaW5hdGVkRXhlY3V0
aW9uRXJyb3IpOwotCi1jb25zdCBDbGFzc0luZm8gVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpz
X2luZm8gPSB7ICJUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
cikgfTsKLQotSlNWYWx1ZSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmRlZmF1bHRWYWx1ZShj
b25zdCBKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUgaGludCkKLXsKLSAgICBpZiAoaGludCA9PSBQcmVmZXJTdHJpbmcpCi0gICAg
ICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBTdHJpbmco
IkphdmFTY3JpcHQgZXhlY3V0aW9uIHRlcm1pbmF0ZWQuIl9zKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWUoUE5hTik7Ci19Ci0KLUpTT2JqZWN0KiBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKFZNKiB2bSkKLXsKLSAgICByZXR1cm4gVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpjcmVh
dGUoKnZtKTsKLX0KLQotYm9vbCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oVk0mIHZt
LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKLXsKLSAgICBpZiAoIWV4Y2VwdGlvbi0+dmFsdWUoKS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZXhjZXB0aW9u
LT52YWx1ZSgpLmluaGVyaXRzPFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcj4odm0pOwotfQotCiBK
U09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgYXV0byogZXJyb3IgPSBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiJfcyk7CkBAIC0zNjgsMTEgKzM0
NCw0IEBAIEV4Y2VwdGlvbiogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoSlNHbG8KICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKGdsb2JhbE9iamVjdCkpOwogfQogCi1FeGNlcHRpb24qIHRocm93VGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3Bl
JiBzY29wZSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgRXJyb3JI
YW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0pOwotICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKCZ2
bSkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDI3NTM5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM5LDggKzM5LDYgQEAgdHlwZWRlZiBKU09iamVjdCogKCpFcnJvckZhY3Rv
cnkpKEpTR2xvYgogCiBTdHJpbmcgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hl
cmVFcnJvck9jY3VycmVkKTsKIAotSlNPYmplY3QqIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24oVk0qKTsKLUpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKFZNJiwgRXhjZXB0aW9uKik7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogY3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBjb25zdCBTdHJpbmcmLCBF
cnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBKU09iamVjdCog
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IElkZW50
aWZpZXImKTsKQEAgLTYwLDQzICs1OCw1IEBAIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uRm9yVmFs
dWUoSlNHbG9iYWwKIEpTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9y
eUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwogSlNfRVhQT1JUX1BSSVZBVEUg
RXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Nj
b3BlJiwgY29uc3QgU3RyaW5nJik7CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93
U3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwotSlNfRVhQ
T1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
SlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7Ci0KLQotY2xhc3MgVGVybWluYXRlZEV4ZWN1
dGlvbkVycm9yIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAg
IHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWw7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+Ci0gICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCi0gICAgewot
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZXJtaW5hdGVkRXhl
Y3V0aW9uRXJyb3IsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
Ci0gICAgfQotCi0gICAgc3RhdGljIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciogY3JlYXRlKFZN
JiB2bSkKLSAgICB7Ci0gICAgICAgIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvciogZXJyb3IgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I+KHZtLmhl
YXApKSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3Iodm0pOwotICAgICAgICBlcnJvci0+ZmluaXNo
Q3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi0gICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBUZXJtaW5hdGVkRXhlY3V0aW9uRXJy
b3IoVk0mIHZtKQotICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHZtLnRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvclN0cnVjdHVyZS5nZXQoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEpTVmFsdWUgZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQ
cmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKLQotfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvblNjb3BlLmgJKHJl
dmlzaW9uIDI3NTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
blNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCwxMCBAQCBjbGFzcyBFeGNlcHRp
b25TY29wZSB7CiBwdWJsaWM6CiAgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQog
ICAgIHVuc2lnbmVkIHJlY3Vyc2lvbkRlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZWN1cnNpb25E
ZXB0aDsgfQotICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkgeyByZXR1cm4gbV92bS5leGNlcHRp
b24oKTsgfQorICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92bS5l
eGNlcHRpb24oKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGFzc2VydE5vRXhjZXB0aW9u
KCkgeyBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWV4Y2VwdGlvbigpLCAiJXMiLCB1bmV4
cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSgpLmRhdGEoKSk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCkgeyBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UoIWV4Y2VwdGlvbigpLCAiJXMiLCB1bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSgpLmRhdGEo
KSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0Tm9FeGNlcHRpb24oKSB7IFJFTEVB
U0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghaGFzRXhjZXB0aW9uRXhjbHVkaW5nVGVybWluYXRpb24o
KSwgIiVzIiwgdW5leHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UoKS5kYXRhKCkpOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpIHsgUkVMRUFTRV9BU1NF
UlRfV0lUSF9NRVNTQUdFKCFoYXNFeGNlcHRpb25FeGNsdWRpbmdUZXJtaW5hdGlvbigpLCAiJXMi
LCB1bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSgpLmRhdGEoKSk7IH0KIAogI2lmIEFTQU5fRU5B
QkxFRCB8fCBFTkFCTEUoQ19MT09QKQogICAgIGNvbnN0IHZvaWQqIHN0YWNrUG9zaXRpb24oKSBj
b25zdCB7ICByZXR1cm4gbV9sb2NhdGlvbi5zdGFja1Bvc2l0aW9uOyB9CkBAIC02Nyw2ICs2Nyw3
IEBAIHByb3RlY3RlZDoKICAgICBFeGNlcHRpb25TY29wZShFeGNlcHRpb25TY29wZSYmKSA9IGRl
ZmF1bHQ7CiAgICAgfkV4Y2VwdGlvblNjb3BlKCk7CiAKKyAgICBib29sIGhhc0V4Y2VwdGlvbkV4
Y2x1ZGluZ1Rlcm1pbmF0aW9uKCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgQ1N0cmlu
ZyB1bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSgpOwogCiAgICAgVk0mIG1fdm07CkBAIC04NCwx
MCArODUsMTAgQEAgcHJvdGVjdGVkOgogY2xhc3MgRXhjZXB0aW9uU2NvcGUgewogcHVibGljOgog
ICAgIEFMV0FZU19JTkxJTkUgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIEFM
V0FZU19JTkxJTkUgRXhjZXB0aW9uKiBleGNlcHRpb24oKSB7IHJldHVybiBtX3ZtLmV4Y2VwdGlv
bigpOyB9CisgICAgQUxXQVlTX0lOTElORSBFeGNlcHRpb24qIGV4Y2VwdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdm0uZXhjZXB0aW9uKCk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3Nl
cnROb0V4Y2VwdGlvbigpIHsgQVNTRVJUKCFleGNlcHRpb24oKSk7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgcmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCkgeyBSRUxFQVNFX0FTU0VSVCghZXhj
ZXB0aW9uKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFzc2VydE5vRXhjZXB0aW9uKCkg
eyBBU1NFUlQoIWhhc0V4Y2VwdGlvbkV4Y2x1ZGluZ1Rlcm1pbmF0aW9uKCkpOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpIHsgUkVMRUFTRV9BU1NF
UlQoIWhhc0V4Y2VwdGlvbkV4Y2x1ZGluZ1Rlcm1pbmF0aW9uKCkpOyB9CiAKIHByb3RlY3RlZDoK
ICAgICBBTFdBWVNfSU5MSU5FIEV4Y2VwdGlvblNjb3BlKFZNJiB2bSkKQEAgLTk2LDYgKzk3LDcg
QEAgcHJvdGVjdGVkOgogICAgIEV4Y2VwdGlvblNjb3BlKGNvbnN0IEV4Y2VwdGlvblNjb3BlJikg
PSBkZWxldGU7CiAgICAgRXhjZXB0aW9uU2NvcGUoRXhjZXB0aW9uU2NvcGUmJikgPSBkZWZhdWx0
OwogCisgICAgYm9vbCBoYXNFeGNlcHRpb25FeGNsdWRpbmdUZXJtaW5hdGlvbigpIGNvbnN0Owog
ICAgIEFMV0FZU19JTkxJTkUgQ1N0cmluZyB1bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSgpIHsg
cmV0dXJuIHsgfTsgfQogCiAgICAgVk0mIG1fdm07CkBAIC0xMDMsNiArMTA1LDE0IEBAIHByb3Rl
Y3RlZDoKIAogI2VuZGlmIC8vIEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQog
CitpbmxpbmUgYm9vbCBFeGNlcHRpb25TY29wZTo6aGFzRXhjZXB0aW9uRXhjbHVkaW5nVGVybWlu
YXRpb24oKSBjb25zdAoreworICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uID0gdGhpcy0+ZXhjZXB0
aW9uKCk7CisgICAgaWYgKCFleGNlcHRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gIW1fdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihleGNlcHRpb24pOworfQorCiAjZGVm
aW5lIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGVfXywgdmFsdWVfXykgZG8geyBcCiAgICAgICAg
IGlmIChVTkxJS0VMWSgoc2NvcGVfXykuZXhjZXB0aW9uKCkpKSBcCiAgICAgICAgICAgICByZXR1
cm4gdmFsdWVfXzsgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc1MzkzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2
ICs1OSw3IEBACiAjaW5jbHVkZSAiRGF0ZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCiAjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgorI2luY2x1ZGUgIkRlZmVyVGVybWluYXRp
b24uaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKQEAgLTI0MDAsNiArMjQwMSw3
IEBAIEpTR2xvYmFsT2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlKFYKIAogdm9pZCBKU0ds
b2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogeworICAgIERlZmVyVGVybWluYXRp
b24gZGVmZXJUZXJtaW5hdGlvbih2bSk7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIHN0cnVjdHVyZSh2bSktPnNldEdsb2JhbE9iamVjdCh2bSwgdGhpcyk7CiAgICAgbV9ydW50
aW1lRmxhZ3MgPSBtX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlLT5qYXZhU2NyaXB0UnVudGltZUZs
YWdzKHRoaXMpOwpAQCAtMjQxMCw2ICsyNDEyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIAogCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTT2JqZWN0KiB0aGlzVmFsdWUpCiB7CisgICAgRGVmZXJUZXJtaW5hdGlvbiBkZWZl
clRlcm1pbmF0aW9uKHZtKTsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgc3Ry
dWN0dXJlKHZtKS0+c2V0R2xvYmFsT2JqZWN0KHZtLCB0aGlzKTsKICAgICBtX3J1bnRpbWVGbGFn
cyA9IG1fZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUtPmphdmFTY3JpcHRSdW50aW1lRmxhZ3ModGhp
cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlz
aW9uIDI3NTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDYgQEAgY2xhc3MgVGhyb3dTY29wZTsKIHN0cnVj
dCBIYXNoVGFibGU7CiBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWU7CiAKLUpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKFZNJiwgRXhjZXB0aW9uKik7CiBK
U19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0
KiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYpOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IEFTQ0lJTGl0ZXJhbCBOb25FeHRlbnNpYmxlT2JqZWN0UHJvcGVydHlEZWZpbmVFcnJv
cjsKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3I7CkBAIC0xNDk3LDcgKzE0OTYsNyBAQCBpbmxpbmUgSlNWYWx1ZSBK
U09iamVjdDo6Z2V0KEpTR2xvYmFsT2JqCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcywgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAgICAgYm9vbCBoYXNQcm9wZXJ0
eSA9IGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIAotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3Bl
LmV4Y2VwdGlvbigpIHx8IGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgc2NvcGUu
ZXhjZXB0aW9uKCkpIHx8ICFoYXNQcm9wZXJ0eSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2Nv
cGUuZXhjZXB0aW9uKCkgfHwgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihzY29wZS5leGNlcHRp
b24oKSkgfHwgIWhhc1Byb3BlcnR5KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBq
c1VuZGVmaW5lZCgpKTsKIAogICAgIGlmIChoYXNQcm9wZXJ0eSkKQEAgLTE1MTMsNyArMTUxMiw3
IEBAIGlubGluZSBKU1ZhbHVlIEpTT2JqZWN0OjpnZXQoSlNHbG9iYWxPYmoKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
ICAgICBib29sIGhhc1Byb3BlcnR5ID0gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5nZXRQ
cm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogCi0gICAgRVhD
RVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgaXNUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uKHZtLCBzY29wZS5leGNlcHRpb24oKSkgfHwgIWhhc1Byb3BlcnR5KTsKKyAgICBF
WENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCB2bS5pc1Rlcm1pbmF0aW9uRXhj
ZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSB8fCAhaGFzUHJvcGVydHkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgaWYgKGhhc1Byb3BlcnR5
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuY3BwCShy
ZXZpc2lvbiAyNzUzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDcgQEAgSlNQcm9taXNlKiBKU1By
b21pc2U6OnJlamVjdFdpdGhDYXVnaHRFeAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIEFT
U0VSVChleGNlcHRpb24pOwotICAgIGlmIChVTkxJS0VMWShpc1Rlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24odm0sIGV4Y2VwdGlvbikpKSB7CisgICAgaWYgKFVOTElLRUxZKHZtLmlzVGVybWlu
YXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSkpIHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwog
ICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCShyZXZpc2lvbiAyNzUzOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiw3ICs0MzIsNiBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsCiAgICAgc21hbGxTdHJpbmdzLmluaXRpYWxp
emVDb21tb25TdHJpbmdzKCp0aGlzKTsKIAogICAgIHByb3BlcnR5TmFtZXMgPSBuZXcgQ29tbW9u
SWRlbnRpZmllcnMoKnRoaXMpOwotICAgIHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogICAgIHByb3BlcnR5TmFtZUVudW1lcmF0b3JTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKICAgICBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwg
anNOdWxsKCkpKTsKICAgICBjdXN0b21HZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBD
dXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxs
KCkpKTsKQEAgLTc0MSw4ICs3NDAsMTAgQEAgVk0qJiBWTTo6c2hhcmVkSW5zdGFuY2VJbnRlcm5h
bCgpCiAKIFdhdGNoZG9nJiBWTTo6ZW5zdXJlV2F0Y2hkb2coKQogewotICAgIGlmICghbV93YXRj
aGRvZykKKyAgICBpZiAoIW1fd2F0Y2hkb2cpIHsKICAgICAgICAgbV93YXRjaGRvZyA9IGFkb3B0
UmVmKG5ldyBXYXRjaGRvZyh0aGlzKSk7CisgICAgICAgIGVuc3VyZVRlcm1pbmF0aW9uRXhjZXB0
aW9uKCk7CisgICAgfQogICAgIHJldHVybiAqbV93YXRjaGRvZzsKIH0KIApAQCAtNzYyLDYgKzc2
MywxOCBAQCBTYW1wbGluZ1Byb2ZpbGVyJiBWTTo6ZW5zdXJlU2FtcGxpbmdQcm9mCiB9CiAjZW5k
aWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogCitzdGF0aWMgU3ltYm9sSW1wbDo6U3Rh
dGljU3ltYm9sSW1wbCB0ZXJtaW5hdGlvbkVycm9yU3ltYm9sIHsgIlRlcm1pbmF0aW9uRXJyb3Ii
LCBTeW1ib2xJbXBsOjpzX2ZsYWdJc1ByaXZhdGUgfTsKKworSlNfRVhQT1JUX1BSSVZBVEUgRXhj
ZXB0aW9uKiBWTTo6ZW5zdXJlVGVybWluYXRpb25FeGNlcHRpb24oKQoreworICAgIGlmICghbV90
ZXJtaW5hdGlvbkV4Y2VwdGlvbikgeworICAgICAgICBTeW1ib2wqIHRlcm1pbmF0aW9uRXJyb3Ig
PSBTeW1ib2w6OmNyZWF0ZSgqdGhpcywgdGVybWluYXRpb25FcnJvclN5bWJvbCk7CisgICAgICAg
IEV4Y2VwdGlvbiogdGVybWluYXRpb25FeGNlcHRpb24gPSBFeGNlcHRpb246OmNyZWF0ZSgqdGhp
cywgdGVybWluYXRpb25FcnJvciwgRXhjZXB0aW9uOjpEb05vdENhcHR1cmVTdGFjayk7CisgICAg
ICAgIG1fdGVybWluYXRpb25FeGNlcHRpb24uc2V0KCp0aGlzLCB0ZXJtaW5hdGlvbkV4Y2VwdGlv
bik7CisgICAgfQorICAgIHJldHVybiBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uLmdldCgpOworfQor
CiAjaWYgRU5BQkxFKEpJVCkKIHN0YXRpYyBUaHVua0dlbmVyYXRvciB0aHVua0dlbmVyYXRvckZv
ckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogewpAQCAtOTQ2LDYgKzk1OSwxNCBAQCB2
b2lkIFZNOjpjbGVhclNvdXJjZVByb3ZpZGVyQ2FjaGVzKCkKICAgICBzb3VyY2VQcm92aWRlckNh
Y2hlTWFwLmNsZWFyKCk7CiB9CiAKK3ZvaWQgVk06OnRocm93VGVybWluYXRpb25FeGNlcHRpb25J
bW1lZGlhdGVseSgpCit7CisgICAgQVNTRVJUKCFtX3RyYXBzLmlzRGVmZXJyaW5nVGVybWluYXRp
b24oKSk7CisgICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSB0ZXJtaW5hdGlvbkV4Y2VwdGlvbigp
OworICAgIGV4Y2VwdGlvbi0+aW52YWxpZGF0ZVN0YWNrKCk7CisgICAgc2V0RXhjZXB0aW9uKGV4
Y2VwdGlvbik7Cit9CisKIEV4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQogewogICAgIENhbGxGcmFt
ZSogdGhyb3dPcmlnaW5GcmFtZSA9IHRvcEpTQ2FsbEZyYW1lKCk7CkBAIC05NTgsNiArOTc5LDkg
QEAgRXhjZXB0aW9uKiBWTTo6dGhyb3dFeGNlcHRpb24oSlNHbG9iYWxPYgogICAgICAgICBDUkFT
SCgpOwogICAgIH0KIAorICAgIGlmIChpc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbikp
CisgICAgICAgIGV4Y2VwdGlvbi0+Y2FwdHVyZVN0YWNrKCp0aGlzKTsKKwogICAgIGludGVycHJl
dGVyLT5ub3RpZnlEZWJ1Z2dlck9mRXhjZXB0aW9uVG9CZVRocm93bigqdGhpcywgZ2xvYmFsT2Jq
ZWN0LCB0aHJvd09yaWdpbkZyYW1lLCBleGNlcHRpb24pOwogCiAgICAgc2V0RXhjZXB0aW9uKGV4
Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI3
NTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzOCw2ICszMzgsMTYgQEAgcHVibGljOgogICAgIFdlYWtSYW5kb20mIHJhbmRvbSgp
IHsgcmV0dXJuIG1fcmFuZG9tOyB9CiAgICAgSW50ZWdyaXR5OjpSYW5kb20mIGludGVncml0eVJh
bmRvbSgpIHsgcmV0dXJuIG1faW50ZWdyaXR5UmFuZG9tOyB9CiAKKyAgICBFeGNlcHRpb24qIGVu
c3VyZVRlcm1pbmF0aW9uRXhjZXB0aW9uKCk7CisgICAgRXhjZXB0aW9uKiB0ZXJtaW5hdGlvbkV4
Y2VwdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90ZXJtaW5hdGlvbkV4Y2Vw
dGlvbik7CisgICAgICAgIHJldHVybiBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uLmdldCgpOworICAg
IH0KKyAgICBib29sIGlzVGVybWluYXRpb25FeGNlcHRpb24oRXhjZXB0aW9uKiBleGNlcHRpb24p
IGNvbnN0IHsgcmV0dXJuIGV4Y2VwdGlvbiA9PSBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uLmdldCgp
OyB9CisKKyAgICB2b2lkIHRocm93VGVybWluYXRpb25FeGNlcHRpb25JbW1lZGlhdGVseSgpOyAv
LyBNYXkgYmUgY2FsbGVkIGNvbmN1cnJlbnRseSBmcm9tIGFub3RoZXIgdGhyZWFkLgorCiBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG5leHRJRCgpOwogCkBAIC02NjQsNyArNjc0LDYgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBzdHJpbmdTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJv
cGVydHlOYW1lRW51bWVyYXRvclN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBnZXR0
ZXJTZXR0ZXJTdHJ1Y3R1cmU7CkBAIC03MTEsNiArNzIwLDcgQEAgcHVibGljOgogCiAgICAgU3Ry
b25nPEpTQ2VsbD4gbV9zZW50aW5lbFNldEJ1Y2tldDsKICAgICBTdHJvbmc8SlNDZWxsPiBtX3Nl
bnRpbmVsTWFwQnVja2V0OworICAgIFN0cm9uZzxFeGNlcHRpb24+IG1fdGVybWluYXRpb25FeGNl
cHRpb247CiAKICAgICBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+IG1fZmFzdEJvdW5kRXhlY3V0YWJs
ZTsKICAgICBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+IG1fZmFzdENhbkNvbnN0cnVjdEJvdW5kRXhl
Y3V0YWJsZTsKQEAgLTEwNzgsNiArMTA4OCw3IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRUcmFw
SGFuZGxpbmcoVk1UcmFwczo6TWFzayBtYXNrKSB7IHJldHVybiBtX3RyYXBzLm5lZWRUcmFwSGFu
ZGxpbmcobWFzayk7IH0KICAgICB2b2lkKiBuZWVkVHJhcEhhbmRsaW5nQWRkcmVzcygpIHsgcmV0
dXJuIG1fdHJhcHMubmVlZFRyYXBIYW5kbGluZ0FkZHJlc3MoKTsgfQogCisgICAgLy8gVGhlc2Ug
bWF5IGJlIGNhbGxlZCBjb25jdXJyZW50bHkgZnJvbSBhbm90aGVyIHRocmVhZC4KICAgICB2b2lk
IG5vdGlmeU5lZWREZWJ1Z2dlckJyZWFrKCkgeyBtX3RyYXBzLmZpcmVUcmFwKFZNVHJhcHM6Ok5l
ZWREZWJ1Z2dlckJyZWFrKTsgfQogICAgIHZvaWQgbm90aWZ5TmVlZFNoZWxsVGltZW91dENoZWNr
KCkgeyBtX3RyYXBzLmZpcmVUcmFwKFZNVHJhcHM6Ok5lZWRTaGVsbFRpbWVvdXRDaGVjayk7IH0K
ICAgICB2b2lkIG5vdGlmeU5lZWRUZXJtaW5hdGlvbigpIHsgbV90cmFwcy5maXJlVHJhcChWTVRy
YXBzOjpOZWVkVGVybWluYXRpb24pOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTVRyYXBzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTVRyYXBzLmNwcAkocmV2aXNpb24gMjc1MzkzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMzAsNiArMzMwLDE1
IEBAIHZvaWQgVk1UcmFwczo6ZmlyZVRyYXAoVk1UcmFwczo6RXZlbnRUeXAKICAgICAgICAgQVNT
RVJUKCFtX2lzU2h1dHRpbmdEb3duKTsKICAgICAgICAgc2V0VHJhcEZvckV2ZW50KGxvY2tlciwg
ZXZlbnRUeXBlKTsKICAgICAgICAgbV9uZWVkVG9JbnZhbGlkYXRlZENvZGVCbG9ja3MgPSB0cnVl
OworCisgICAgICAgIGlmICghaXNEZWZlcnJpbmdUZXJtaW5hdGlvbigpKSB7CisgICAgICAgICAg
ICBib29sIG5lZWRJbW1lZGlhdGVUZXJtaW5hdGlvbiA9CisgICAgICAgICAgICAgICAgKGV2ZW50
VHlwZSA9PSBOZWVkU2hlbGxUaW1lb3V0Q2hlY2spCisgICAgICAgICAgICAgICAgfHwgKGV2ZW50
VHlwZSA9PSBOZWVkVGVybWluYXRpb24pCisgICAgICAgICAgICAgICAgfHwgKGV2ZW50VHlwZSA9
PSBOZWVkV2F0Y2hkb2dDaGVjayAmJiBPcHRpb25zOjp3YXRjaGRvZygpKTsKKyAgICAgICAgICAg
IGlmIChuZWVkSW1tZWRpYXRlVGVybWluYXRpb24pCisgICAgICAgICAgICAgICAgdm0oKS50aHJv
d1Rlcm1pbmF0aW9uRXhjZXB0aW9uSW1tZWRpYXRlbHkoKTsKKyAgICAgICAgfQogICAgIH0KICAg
ICAKICNpZiBFTkFCTEUoU0lHTkFMX0JBU0VEX1ZNX1RSQVBTKQpAQCAtMzgwLDcgKzM4OSw3IEBA
IHZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMoSlNHbG9iYWxPYmplY3QKICAgICAgICAgICAgIEZB
TExUSFJPVUdIOwogCiAgICAgICAgIGNhc2UgTmVlZFRlcm1pbmF0aW9uOgotICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbigmdm0pKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIHZtLnRlcm1pbmF0aW9uRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zODksNiArMzk4LDM4IEBAIHZvaWQgVk1UcmFw
czo6aGFuZGxlVHJhcHMoSlNHbG9iYWxPYmplY3QKICAgICB9CiB9CiAKK3ZvaWQgVk1UcmFwczo6
ZGVmZXJUZXJtaW5hdGlvbigpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jaygqbV9sb2Nr
KTsKKyAgICBtX2RlZmVyVGVybWluYXRpb25Db3VudCsrOworICAgIEFTU0VSVChtX2RlZmVyVGVy
bWluYXRpb25Db3VudCA8IFVJTlRfTUFYKTsKKworICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7Cisg
ICAgRXhjZXB0aW9uKiBwZW5kaW5nRXhjZXB0aW9uID0gdm0uZXhjZXB0aW9uKCk7CisgICAgaWYg
KHBlbmRpbmdFeGNlcHRpb24gJiYgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihwZW5kaW5nRXhj
ZXB0aW9uKSkgeworICAgICAgICB2bS5zZXRFeGNlcHRpb24obnVsbHB0cik7CisgICAgICAgIG1f
c3VzcGVuZGVkVGVybWluYXRpb25FeGNlcHRpb24gPSB0cnVlOworICAgIH0KK30KKwordm9pZCBW
TVRyYXBzOjp1bmRvRGVmZXJUZXJtaW5hdGlvbigpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jaygqbV9sb2NrKTsKKyAgICBBU1NFUlQobV9kZWZlclRlcm1pbmF0aW9uQ291bnQgPiAwKTsK
KyAgICBpZiAoLS1tX2RlZmVyVGVybWluYXRpb25Db3VudCA9PSAwKSB7CisgICAgICAgIFZNJiB2
bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIGlmIChtX3N1c3BlbmRlZFRlcm1pbmF0aW9uRXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAvLyBSZXN0b3JpbmcgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9u
IHdpdGggd2hhdGV2ZXIgc3RhY2sgaXQgaGFkIGNhcHR1cmVkCisgICAgICAgICAgICAvLyB0byBi
ZWdpbiB3aXRoLgorICAgICAgICAgICAgdm0uc2V0RXhjZXB0aW9uKHZtLnRlcm1pbmF0aW9uRXhj
ZXB0aW9uKCkpOworICAgICAgICB9IGVsc2UgaWYgKG5lZWRUcmFwSGFuZGxpbmcoTmVlZFRlcm1p
bmF0aW9uKSkgeworICAgICAgICAgICAgLy8gVGhyb3dpbmcgdGhpcyB3YXkgaW52YWxpZGF0ZXMg
dGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uJ3Mgc3RhY2suCisgICAgICAgICAgICAvLyBUaGlzIGlz
IE9LIHNpbmNlIHdlJ3JlIHRocm93aW5nIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBmb3IgdGhl
IGZpcnN0IHRpbWUuCisgICAgICAgICAgICB2bS50aHJvd1Rlcm1pbmF0aW9uRXhjZXB0aW9uSW1t
ZWRpYXRlbHkoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogYXV0byBWTVRyYXBzOjp0YWtlVG9w
UHJpb3JpdHlUcmFwKFZNVHJhcHM6Ok1hc2sgbWFzaykgLT4gRXZlbnRUeXBlCiB7CiAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jaygqbV9sb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNVHJhcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTVRyYXBzLmgJKHJldmlzaW9uIDI3NTM5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNVHJhcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMiwxNyArMTAyLDIx
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbERlc3Ryb3lWTSgpOwogCi0gICAgYm9vbCBuZWVk
VHJhcEhhbmRsaW5nKCkgeyByZXR1cm4gbV9uZWVkVHJhcEhhbmRsaW5nOyB9Ci0gICAgYm9vbCBu
ZWVkVHJhcEhhbmRsaW5nKE1hc2sgbWFzaykgeyByZXR1cm4gbV9uZWVkVHJhcEhhbmRsaW5nICYg
bWFzay5iaXRzKCk7IH0KKyAgICBib29sIG5lZWRUcmFwSGFuZGxpbmcoKSBjb25zdCB7IHJldHVy
biBtX25lZWRUcmFwSGFuZGxpbmc7IH0KKyAgICBib29sIG5lZWRUcmFwSGFuZGxpbmcoTWFzayBt
YXNrKSBjb25zdCB7IHJldHVybiBtX25lZWRUcmFwSGFuZGxpbmcgJiBtYXNrLmJpdHMoKTsgfQog
ICAgIHZvaWQqIG5lZWRUcmFwSGFuZGxpbmdBZGRyZXNzKCkgeyByZXR1cm4gJm1fbmVlZFRyYXBI
YW5kbGluZzsgfQogCisgICAgYm9vbCBpc0RlZmVycmluZ1Rlcm1pbmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWZlclRlcm1pbmF0aW9uQ291bnQ7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGRlZmVyVGVybWluYXRpb24oKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHVuZG9E
ZWZlclRlcm1pbmF0aW9uKCk7CisKICAgICB2b2lkIG5vdGlmeUdyYWJBbGxMb2NrcygpCiAgICAg
ewogICAgICAgICBpZiAobmVlZFRyYXBIYW5kbGluZygpKQogICAgICAgICAgICAgaW52YWxpZGF0
ZUNvZGVCbG9ja3NPblN0YWNrKCk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBmaXJlVHJhcChFdmVudFR5cGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmlyZVRy
YXAoRXZlbnRUeXBlKTsgLy8gTWF5IGJlIGNhbGxlZCBjb25jdXJyZW50bHkgZnJvbSBhbm90aGVy
IHRocmVhZC4KIAogICAgIHZvaWQgaGFuZGxlVHJhcHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqLCBWTVRyYXBzOjpNYXNrKTsKIApAQCAtMTYyLDYgKzE2Niw4IEBAIHByaXZhdGU6CiAgICAg
fTsKICAgICBib29sIG1fbmVlZFRvSW52YWxpZGF0ZWRDb2RlQmxvY2tzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNTaHV0dGluZ0Rvd24geyBmYWxzZSB9OworICAgIGJvb2wgbV9zdXNwZW5kZWRU
ZXJtaW5hdGlvbkV4Y2VwdGlvbiB7IGZhbHNlIH07CisgICAgdW5zaWduZWQgbV9kZWZlclRlcm1p
bmF0aW9uQ291bnQgeyAwIH07CiAKICNpZiBFTkFCTEUoU0lHTkFMX0JBU0VEX1ZNX1RSQVBTKQog
ICAgIFJlZlB0cjxTaWduYWxTZW5kZXI+IG1fc2lnbmFsU2VuZGVyOwpJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjc1MzkzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMDQtMDEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgorCisgICAgICAgIEFsbG93IGEgVGVybWluYXRpb25FeGNlcHRpb24gdG8gYmUgdGhy
b3duIGZyb20gYW5vdGhlciB0aHJlYWQgKG5vdCB0aGUgbXV0YXRvcikuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwNzgKKyAgICAgICAgcmRhcjov
Lzc1MDM3MDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQ
cm9taXNlOjpyZWplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnZva2VSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlU3RyZWFtOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrUmVhZGFibGVTdHJlYW0p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlckZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXI6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXI6OmVucXVldWUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxpbmtB
bmRFdmFsdWF0ZU1vZHVsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6CisKIDIwMjEtMDQt
MDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJldmVydGluZyByMjc0MzgxLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAJKHJldmlzaW9uIDI3
NTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFuZGxp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdo
dCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgogICogIENv
cHlyaWdodCAoQykgMjAxMyBNaWNoYWVsIFBydWV0dCA8bWljaGFlbEA2OGsub3JnPgogICoKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGxleAog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGlmIChpc1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0sIGV4Y2VwdGlvbikpCisgICAgaWYgKHZtLmlz
VGVybWluYXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
RXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyNzUzOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obWFrZURPTUV4Y2VwdGlvCiAgICAgICAgIGNvZGUgPSBB
Ym9ydEVycm9yOwogICAgIGF1dG8gdmFsdWUgPSBjcmVhdGVET01FeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBjb2RlLCBtZXNzYWdlKTsKIAotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpIHx8IGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgc2NvcGUuZXhjZXB0
aW9uKCkpKTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCB2bS5p
c1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKIH0KQEAgLTQxMCw3ICs0MTAsNyBAQCBzdGF0aWMgSlND
OjpKU1Byb21pc2UqIGhhbmRsZVJlc3BvbnNlT25TCiAgICAgICAgICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICAgICAgICAgIGF1dG8gZXJyb3Ig
PSBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgV1RGTW92ZShleGNlcHRpb24pKTsK
ICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0s
IHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2bS5pc1Rl
cm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbXBpbGVyLT5jYW5jZWwoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmNwcAkocmV2aXNpb24gMjc1MzkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw3ICs1Nyw3IEBAIGF1dG8gRE9N
UHJvbWlzZTo6d2hlblByb21pc2VJc1NldHRsZWQoSlMKICAgICBjb25zdCBKU0M6OklkZW50aWZp
ZXImIHByaXZhdGVOYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudGhlblBy
aXZhdGVOYW1lKCk7CiAgICAgYXV0byB0aGVuRnVuY3Rpb24gPSBwcm9taXNlLT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIHByaXZhdGVOYW1lKTsKIAotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpIHx8IGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihsZXhpY2Fs
R2xvYmFsT2JqZWN0LnZtKCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgRVhDRVBUSU9OX0FT
U0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihzY29w
ZS5leGNlcHRpb24oKSkpOwogICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIElzQ2FsbGJhY2tSZWdpc3RlcmVkOjpObzsKIApAQCAtNzEsNyArNzEsNyBAQCBhdXRvIERP
TVByb21pc2U6OndoZW5Qcm9taXNlSXNTZXR0bGVkKEpTCiAgICAgQVNTRVJUKGNhbGxEYXRhLnR5
cGUgIT0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CiAgICAgY2FsbCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhlbkZ1bmN0aW9uLCBjYWxsRGF0YSwgcHJvbWlzZSwgYXJndW1lbnRzKTsKIAot
ICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGlzVGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIHNjb3BlLmV4Y2VwdGlv
bigpKSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkgfHwgdm0uaXNU
ZXJtaW5hdGlvbkV4Y2VwdGlvbihzY29wZS5leGNlcHRpb24oKSkpOwogICAgIHJldHVybiBzY29w
ZS5leGNlcHRpb24oKSA/IElzQ2FsbGJhY2tSZWdpc3RlcmVkOjpObyA6IElzQ2FsbGJhY2tSZWdp
c3RlcmVkOjpZZXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZURlZmVycmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAJKHJldmlzaW9uIDI3NTM5MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEyOSw3ICsxMjksOCBAQCB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4
Y2VwdGlvbiBlCiAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwogICAgIEFTU0VSVChtX2dsb2JhbE9i
amVjdCk7CiAgICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICptX2dsb2JhbE9iamVjdDsK
LSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoJmxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IEpTQzo6Vk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOworICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSk7CiAKICAgICBpZiAoZXhjZXB0aW9uLmNvZGUoKSA9PSBFeGlzdGlu
Z0V4Y2VwdGlvbkVycm9yKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSk7CkBAIC0xNDMsMTAgKzE0NCwxMCBAQCB2b2lk
IERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiBlCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCkpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBhdXRvIGVycm9yID0gY3JlYXRlRE9NRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qs
IFdURk1vdmUoZXhjZXB0aW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigp
KSkgewotICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGxleGlj
YWxHbG9iYWxPYmplY3Qudm0oKSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJU
KHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTYyLDEwICsxNjMsMTEgQEAgdm9pZCBEZWZlcnJlZFByb21p
c2U6OnJlamVjdChFeGNlcHRpb25DbwogICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKICAgICBBU1NF
UlQobV9nbG9iYWxPYmplY3QpOwogICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqbV9n
bG9iYWxPYmplY3Q7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICBKU0M6OlZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKKyAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAgICAgaWYgKGVjID09IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IpIHsKLSAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoc2NvcGUuZXhj
ZXB0aW9uKCkpOwogCkBAIC0xNzYsMTAgKzE3OCwxMCBAQCB2b2lkIERlZmVycmVkUHJvbWlzZTo6
cmVqZWN0KEV4Y2VwdGlvbkNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIGVycm9yID0g
Y3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBlYywgbWVzc2FnZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICBBU1NFUlQoaXNU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgc2Nv
cGUuZXhjZXB0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKHZtLmlzVGVybWluYXRpb25FeGNlcHRp
b24oc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCShyZXZp
c2lvbiAyNzUzOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBKU0V2ZW50TGlz
dGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdAogICAgIGF1dG8gaGFuZGxlRXhjZXB0aW9uSWZOZWVk
ZWQgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpIHsKICAgICAgICAgICAgIGF1dG8mIHNjcmlwdENvbnRy
b2xsZXIgPSAqZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpLnNjcmlwdCgpOwotICAgICAgICAgICAgYm9vbCB0ZXJtaW5hdG9yQ2F1c2VkRXhjZXB0aW9u
ID0gKHNjb3BlLmV4Y2VwdGlvbigpICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2
bSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICAgICAgICAgIGJvb2wgdGVybWluYXRvckNhdXNl
ZEV4Y2VwdGlvbiA9IChzY29wZS5leGNlcHRpb24oKSAmJiB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0
aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSk7CiAgICAgICAgICAgICBpZiAodGVybWluYXRvckNhdXNl
ZEV4Y2VwdGlvbiB8fCBzY3JpcHRDb250cm9sbGVyLmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkK
ICAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLmZvcmJpZEV4ZWN1dGlvbigpOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJl
YW0uY3BwCShyZXZpc2lvbiAyNzUzOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9S
ZWFkYWJsZVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NywxMiArNjcsMTIgQEAgc3Rh
dGljIGlubGluZSBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGludgogICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwogCiAgICAgYXV0byBmdW5jdGlvbiA9IGxleGljYWxHbG9iYWxPYmplY3Qu
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsKLSAgICBBU1NFUlQoZnVuY3Rp
b24uaXNDYWxsYWJsZShsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpKTsKKyAgICBBU1NFUlQoZnVu
Y3Rpb24uaXNDYWxsYWJsZSh2bSkpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOwogICAgIGF1dG8gY2FsbERhdGEgPSBKU0M6OmdldENhbGxEYXRhKHZtLCBmdW5j
dGlvbik7CiAgICAgYXV0byByZXN1bHQgPSBjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5j
dGlvbiwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJndW1lbnRzKTsKLSAgICBFWENFUFRJT05fQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOworICAgIEVYQ0VQ
VElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IHZtLmlzVGVybWluYXRpb25FeGNlcHRp
b24oc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2
b2lkIFJlYWRhYmxlU3RyZWFtOjpsb2NrKCkKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dl
ZCgpKTsKIAogICAgIEpTQzo6Y29uc3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1
Y3RvciwgY29uc3RydWN0RGF0YSwgYXJncyk7Ci0gICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkgfHwgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGxleGljYWxHbG9i
YWxPYmplY3Qudm0oKSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICBFWENFUFRJT05fQVNTRVJU
KCFzY29wZS5leGNlcHRpb24oKSB8fCB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4
Y2VwdGlvbigpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja1JlYWRhYmxlU3RyZWFt
KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUmVhZGFibGVTdHJlYW0qIHJlYWRh
YmxlU3RyZWFtLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24pCkBAIC0xNDksNyArMTQ5LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGNoZWNrUmVhZGFibGVTdHJlYW0oSgogICAgIEFTU0VSVChjYWxsRGF0
YS50eXBlICE9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5vbmUpOwogCiAgICAgYXV0byByZXN1bHQg
PSBjYWxsKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIEpTQzo6anNV
bmRlZmluZWQoKSwgYXJndW1lbnRzKTsKLSAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNl
cHRpb24oKSB8fCBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24obGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpIHx8IHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0
aW9uKCkpKTsKIAogICAgIHJldHVybiByZXN1bHQuaXNUcnVlKCkgfHwgc2NvcGUuZXhjZXB0aW9u
KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjc1Mzkz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDE2IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGJvb2wgaW52b2tlUmVhZGFibGVTdHJlYW1E
ZWZhdWx0QwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICBh
dXRvIGNhbGxEYXRhID0gSlNDOjpnZXRDYWxsRGF0YSh2bSwgZnVuY3Rpb24pOwogICAgIGNhbGwo
JmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgSlNDOjpqc1VuZGVmaW5l
ZCgpLCBhcmd1bWVudHMpOwotICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigp
IHx8IGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LnZt
KCksIHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhj
ZXB0aW9uKCkgfHwgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihzY29wZS5leGNlcHRpb24oKSkp
OwogICAgIHJldHVybiAhc2NvcGUuZXhjZXB0aW9uKCk7CiB9CiAKQEAgLTc1LDcgKzc1LDcgQEAg
dm9pZCBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjplcgogICAgIGF1dG8gdmFsdWUg
PSBjcmVhdGVET01FeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIGV4Y2VwdGlvbi5jb2Rl
KCksIGV4Y2VwdGlvbi5tZXNzYWdlKCkpOwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkgewotICAgICAgICBBU1NFUlQoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgc2NvcGUuZXhjZXB0aW9uKCkpKTsKKyAgICAgICAg
QVNTRVJUKHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODMsNyArODMsNyBAQCB2b2lkIFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXI6OmVyCiAgICAgYXJndW1lbnRzLmFwcGVuZCgmanNDb250cm9s
bGVyKCkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwogCi0gICAgYXV0byogY2xpZW50
RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8qIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwogICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xp
ZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMoKS5yZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRXJyb3JQcml2YXRlTmFtZSgpOwog
CiAgICAgaW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9uKGdsb2Jh
bE9iamVjdCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBi
b29sIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6OmVuCiAgICAgYXV0byB2YWx1ZSA9
IHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjaHVuay5n
ZXQoKSk7CiAKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7Ci0gICAgICAg
IEFTU0VSVChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpLCBzY29wZS5leGNlcHRpb24oKSkpOworICAgICAgICBBU1NFUlQodm0uaXNUZXJtaW5h
dGlvbkV4Y2VwdGlvbihzY29wZS5leGNlcHRpb24oKSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI3NTM5MykKKysr
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiV29ya2VyTW9kdWxlU2NyaXB0
TG9hZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0NvbXBsZXRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWZl
clRlcm1pbmF0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVmZXJyZWRXb3JrVGlt
ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9FeGNlcHRpb25IZWxwZXJzLmg+CkBAIC02Nyw2ICs2OCwxMSBAQCBXb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpXb3JrZXJPCiAgICAgLCBtX2dsb2JhbFNjb3Bl
V3JhcHBlcigqbV92bSkKIHsKICAgICBtX3ZtLT5oZWFwLmFjcXVpcmVBY2Nlc3MoKTsgLy8gSXQn
cyBub3QgY2xlYXIgdGhhdCB3ZSBoYXZlIGdvb2QgZGlzY2lwbGluZSBmb3IgaGVhcCBhY2Nlc3Ms
IHNvIHR1cm4gaXQgb24gcGVybWFuZW50bHkuCisgICAgeworICAgICAgICBKU0xvY2tIb2xkZXIg
bG9jayhtX3ZtLmdldCgpKTsKKyAgICAgICAgbV92bS0+ZW5zdXJlVGVybWluYXRpb25FeGNlcHRp
b24oKTsKKyAgICB9CisKICAgICBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0u
Z2V0KCksIHR5cGUpOwogfQogCkBAIC0yMTgsNyArMjI0LDcgQEAgdm9pZCBXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpldgogCiAgICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVkRXZhbHVh
dGUoJmdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBzb3VyY2VDb2Rl
LmpzU291cmNlQ29kZSgpLCBtX2dsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1
cm5lZEV4Y2VwdGlvbik7CiAKLSAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgcmV0dXJuZWRFeGNlcHRpb24pKSB8fCBpc1Rlcm1p
bmF0aW5nRXhlY3V0aW9uKCkpIHsKKyAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIHZtLmlz
VGVybWluYXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKSB8fCBpc1Rlcm1pbmF0aW5n
RXhlY3V0aW9uKCkpIHsKICAgICAgICAgZm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNTEsNyArMzU3LDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyOjpsaQogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhj
ZXB0aW9uOwogICAgIEpTRXhlY1N0YXRlOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBzY3JpcHRGZXRjaGVyLm1vZHVsZUtleSgpKSwg
anNVbmRlZmluZWQoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgIGlmICgocmV0dXJuZWRFeGNl
cHRpb24gJiYgaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCByZXR1cm5lZEV4Y2Vw
dGlvbikpIHx8IGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkgeworICAgIGlmICgocmV0dXJuZWRF
eGNlcHRpb24gJiYgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikp
IHx8IGlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkgewogICAgICAgICBmb3JiaWRFeGVjdXRpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQwOSw3ICs0MTUsNyBAQCB2b2lkIFdvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvCiAKICAgICAgICAgICAgIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKICAgICAgICAgICAgIEpTRXhlY1N0YXRl
OjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoKmdsb2JhbE9iamVjdCwgbW9kdWxlS2V5LCBqc1VuZGVm
aW5lZCgpLCByZXR1cm5lZEV4Y2VwdGlvbik7Ci0gICAgICAgICAgICBpZiAoKHJldHVybmVkRXhj
ZXB0aW9uICYmIGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bSwgcmV0dXJuZWRFeGNl
cHRpb24pKSB8fCBjb250ZXh0LT5zY3JpcHQoKS0+aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7
CisgICAgICAgICAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIHZtLmlzVGVybWluYXRpb25F
eGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKSB8fCBjb250ZXh0LT5zY3JpcHQoKS0+aXNUZXJt
aW5hdGluZ0V4ZWN1dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPnNjcmlw
dCgpKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0
aW9uKCk7CiAgICAgICAgICAgICAgICAgdGFzay0+cnVuKFdURjo6bnVsbG9wdCk7CkBAIC01MTIs
NiArNTE4LDkgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbgogCiB2
b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogeworICAg
IEFTU0VSVChtX3ZtLmdldCgpKTsKKyAgICBKU0M6OkRlZmVyVGVybWluYXRpb24gZGVmZXJUZXJt
aW5hdGlvbigqbV92bS5nZXQoKSk7CisKICAgICBpZiAoaXM8RGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGU+KG1fZ2xvYmFsU2NvcGUpKSB7CiAgICAgICAgIGluaXRTY3JpcHRXaXRoU3ViY2xhc3M8
SlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZSwgSlNEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZSwgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+KCk7CiAgICAgICAgIHJldHVy
bjsK
</data>
<flag name="commit-queue"
          id="444785"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425612</attachid>
            <date>2021-04-09 05:03:38 -0700</date>
            <delta_ts>2021-04-09 11:03:51 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-224078.patch</filename>
            <type>text/plain</type>
            <size>89590</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzU3NTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA0LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBFbmFibGUgVk1UcmFwcyBjaGVja3MgaW4gUkVUVVJOX0lGX0VYQ0VQVElP
Ti4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDA3
OAorICAgICAgICByZGFyOi8vNzUwMzcwNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy93YXRjaGRvZy1maXJlLXdoaWxlLWluLWZvckVh
Y2hJbkl0ZXJhYmxlLmpzOiBBZGRlZC4KKwogMjAyMS0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIERVQ0VUIGxldmVsLTEgd2VpZ2hzIGFy
ZSBlcXVhbCBpZiBjaGFyYWN0ZXJzIGFyZSBhbHBoYWJldHMKSW5kZXg6IEpTVGVzdHMvc3RyZXNz
L3dhdGNoZG9nLWZpcmUtd2hpbGUtaW4tZm9yRWFjaEluSXRlcmFibGUuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9zdHJlc3Mvd2F0Y2hkb2ctZmlyZS13aGlsZS1pbi1mb3JFYWNoSW5JdGVyYWJs
ZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy93YXRjaGRvZy1maXJlLXdoaWxl
LWluLWZvckVhY2hJbkl0ZXJhYmxlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAor
Ly9AIHJ1bkRlZmF1bHQoIi0td2F0Y2hkb2c9MTAwIiwgIi0td2F0Y2hkb2ctZXhjZXB0aW9uLW9r
IikKKworY29uc3QgYSA9IFtdOworYVsyKiozMi0yXSA9IDA7CituZXcgVWludDhBcnJheShhKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc1NzUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwNiBA
QAorMjAyMS0wNC0wOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5hYmxlIFZNVHJhcHMgY2hlY2tzIGluIFJFVFVSTl9JRl9FWENFUFRJT04uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwNzgKKyAgICAgICAgcmRh
cjovLzc1MDM3MDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gcHJlLWV4aXN0aW5nIGNvZGUsIHRlcm1pbmF0aW9uIG9mIGEgVk0ncyBleGVjdXRp
b24gY2FuIGFscmVhZHkgYmUgcmVxdWVzdGVkCisgICAgICAgIGFzeW5jaHJvbm91c2x5ICh3aXRo
IHJlc3BlY3QgdG8gdGhlIG11dGF0b3IgdGhyZWFkKS4gIEZvciBleGFtcGxlLCBzb3VyY2VzIG9m
IHN1Y2gKKyAgICAgICAgYSByZXF1ZXN0IGNhbiBiZSBhIHdhdGNoZG9nIHRpbWVyIGZpcmluZywg
b3IgYSByZXF1ZXN0IHRvIHN0b3AgZXhlY3V0aW9uIGlzc3VlZAorICAgICAgICBmcm9tIGEgbWFp
biB3ZWIgdGhyZWFkIHRvIGEgd29ya2VyIHRocmVhZC4KKworICAgICAgICBUaGlzIHJlcXVlc3Qg
aXMgbWFkZSBieSBmaXJpbmcgdGhlIFZNVHJhcHM6Ok5lZWRUZXJtaW5hdGlvbiBldmVudCBvbiBW
TVRyYXBzLgorICAgICAgICBGaXJpbmcgdGhlIGV2ZW50IGhlcmUgb25seSBtZWFucyBzZXR0aW5n
IGEgZmxhZyB0byBpbmRpY2F0ZSB0aGUgcHJlc2VuY2Ugb2YgdGhlCisgICAgICAgIHJlcXVlc3Qu
ICBXZSBzdGlsbCBoYXZlIHRvIHdhaXQgdGlsbCB0aGUgbXV0YXRvciB0aHJlYWQgcmVhY2hlcyBv
bmUgb2YgdGhlCisgICAgICAgIHByZS1kZXNpZ25hdGVkIHBvbGxpbmcgY2hlY2sgcG9pbnRzIHRv
IGNhbGwgVk1UcmFwczo6aGFuZGxlVHJhcHMoKSBpbiBvcmRlciB0bworICAgICAgICBzZXJ2aWNl
IHRoZSByZXF1ZXN0LiAgQXMgYSByZXN1bHQgb2YgdGhpcyBuZWVkIHRvIHdhaXQgZm9yIGEgcG9s
bGluZyBjaGVjayBwb2ludCwKKyAgICAgICAgaWYgdGhlIG11dGF0b3IgaXMgZXhlY3V0aW5nIGlu
IGEgbG9uZyBydW5uaW5nIEMrKyBsb29wLCB0aGVuIGEgdGVybWluYXRpb24gcmVxdWVzdAorICAg
ICAgICBtYXkgbm90IGJlIHNlcnZpY2VkIGZvciBhIGxvbmcgdGltZS4KKworICAgICAgICBIb3dl
dmVyLCB3ZSBvYnNlcnZlZCB0aGF0IGEgbG90IG9mIG91ciBDKysgbG9vcHMgYWxyZWFkeSBoYXZl
IFJFVFVSTl9JRl9FWENFUFRJT04KKyAgICAgICAgY2hlY2tzLiAgSGVuY2UsIGlmIHdlIGNhbiBj
aGVjayBWTVRyYXBzOjpuZWVkSGFuZGxpbmcoKSB0aGVyZSwgd2UgY2FuIHNlcnZpY2UgdGhlCisg
ICAgICAgIFZNVHJhcHMgZXZlbnRzIG1vcmUgZnJlcXVlbnRseSBldmVuIGluIGEgbG90IG9mIEMr
KyBsb29wcywgYW5kIGdldCBhIGJldHRlciByZXNwb25zZS4KKworICAgICAgICBGdWxsIGRldGFp
bHMgb2Ygd2hhdCB0aGlzIHBhdGNoIGNoYW5nZXM6CisKKyAgICAgICAgMS4gU2hvcnRlbiBzb21l
IHR5cGUgYW5kIG1ldGhvZHMgbmFtZXMgaW4gdGhlIFZNVHJhcHMgY2xhc3MgdG8gbWFrZSBjb2Rl
IGVhc2llciB0bworICAgICAgICAgICByZWFkIGUuZy4gRXZlbnRUeXBlID0+IEV2ZW50LCBuZWVk
VHJhcEhhbmRsaW5nID0+IG5lZWRIYW5kbGluZy4KKworICAgICAgICAyLiBSZW1vdmUgdGhlIFZN
VHJhcHM6Ok1hc2sgY2xhc3MuICBNYXNrIHdhcyBpbnRyb2R1Y2VkIHNvIHRoYXQgd2UgY2FuIGV4
cHJlc3MgYQorICAgICAgICAgICBjb25jYXRlbmF0aW9uIG9mIG11bHRpcGxlIFZNVHJhcHMgZXZl
bnRzIHRvIGZvcm0gYSBiaXQgbWFzayBpbiBhIHNpbXBsZSB3YXkuCisgICAgICAgICAgIEluIHRo
ZSBlbmQsIGl0IGlzbid0IGZsZXhpYmxlIGVub3VnaCBidXQgbWFrZXMgdGhlIGNvZGUgbW9yZSBj
b21wbGljYXRlZCB0aGFuCisgICAgICAgICAgIG5lY2Vzc2FyeS4gIEl0IGlzIG5vdyByZXBsYWNl
ZCBieSB0aGUgc2ltcGxlciBzb2x1dGlvbiBvZiB1c2luZyBtYWNyb3MgdG8gZGVmaW5lCisgICAg
ICAgICAgIHRoZSBFdmVudHMgYXMgYml0IGZpZWxkcy4gIEhhdmluZyBFdmVudHMgYXMgYml0IGZp
ZWxkcyBpbnRyaW5zaWNhbGx5IG1ha2UgdGhlbQorICAgICAgICAgICBlYXN5IHRvIGNvbmNhdGVu
YXRlIChiaXR3aXNlIG9yKSBvciBmaWx0ZXIgKGJpdHdpc2UgYW5kKS4KKworICAgICAgICAgICBB
bHNvIHJlbW92ZWQgdGhlIHVudXNlZCBWTVRyYXBzOjpFcnJvciBjbGFzcy4KKworICAgICAgICAz
LiBNYWtlIFZNVHJhcHM6OkJpdEZpZWxkIGEgdWludDMyX3QuICBUaGVyZSB3YXMgYWx3YXlzIHVu
dXNlZCBwYWRkaW5nIGluIFZNVHJhcHMKKyAgICAgICAgICAgdG8gYWxsb3cgZm9yIHRoaXMuICBT
bywgd2UnbGwganVzdCBleHRlbmQgaXQgdG8gYSBmdWxsIDMyLWJpdCB0byBtYWtlIGl0IGVhc2ll
cgorICAgICAgICAgICB0byBhZGQgbW9yZSBldmVudHMgaW4gdGhlIGZ1dHVyZSBmb3Igb3RoZXIg
dXNlcy4KKworICAgICAgICA0LiBBZGQgTmVlZEV4Y2VwdGlvbkhhbmRsaW5nIGFzIGEgVk1UcmFw
OjpFdmVudC4KKworICAgICAgICA1LiBNYWtlIFZNVHJhcHM6Om1fdHJhcEJpdHMgQXRvbWljLiAg
VGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gc2V0IGFuZCBjbGVhciB0aGUKKyAgICAgICAgICAgTmVl
ZEV4Y2VwdGlvbkhhbmRsaW5nIGJpdCBmcm9tIHRoZSBtdXRhdG9yIHdpdGhvdXQgYSBsb2NrLgor
CisgICAgICAgIDYuIFJFVFVSTl9JRl9FWENFUFRJT04gbm93IGNoZWNrcyBWTVRyYXBzOjptX3Ry
YXBCaXRzICh2aWEgVk1UcmFwczo6bmVlZEhhbmRsaW5nKCkpCisgICAgICAgICAgIGluc3RlYWQg
b2YgY2hlY2tpbmcgVk06Om1fZXhjZXB0aW9uLiAgSWYgdGhlIFZNVHJhcHM6Om1fdHJhcEJpdHMg
aXMgbm9uLW51bGwsCisgICAgICAgICAgIHRoZSBtYWNybyB3aWxsIGNhbGwgVk06aGFzRXhjZXB0
aW9uc0FmdGVySGFuZGxpbmdUcmFwcygpIHRvIHNlcnZpY2UgVk1UcmFwcworICAgICAgICAgICBl
dmVudHMgYXMgYXBwcm9wcmlhdGUgYmVmb3JlIHJldHVybmluZyB3aGV0aGVyIGFuIGV4Y2VwdGlv
biBpcyBiZWluZyB0aHJvd24uCisgICAgICAgICAgIFRoZSByZXN1bHQgb2YgVk06aGFzRXhjZXB0
aW9uc0FmdGVySGFuZGxpbmdUcmFwcygpIHdpbGwgZGV0ZXJtaW5lIGlmCisgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04gcmV0dXJucyBvciBub3QuCisKKyAgICAgICAgICAgVk06aGFzRXhj
ZXB0aW9uc0FmdGVySGFuZGxpbmdUcmFwcygpIGlzIGludGVudGlvbmFsbHkgZGVzaWduZWQgdG8g
dGFrZSBhIG1pbmltdW0KKyAgICAgICAgICAgb2YgYXJndW1lbnRzIChqdXN0IHRoZSBWTSBhcyB0
aGlzIHBvaW50ZXIpLiAgVGhpcyBpcyBiZWNhdXNlIFJFVFVSTl9JRl9FWENFUFRJT04KKyAgICAg
ICAgICAgaXMgY2FsbGVkIGZyb20gbWFueSBwbGFjZXMsIGFuZCB3ZSB3b3VsZCBsaWtlIHRvIG1p
bmltaXplIGNvZGUgc2l6ZSBibG9hdGluZworICAgICAgICAgICBmcm9tIHRoaXMgY2hhbmdlLgor
CisgICAgICAgIDcuIFNpbXBsaWZ5IHBhcmFtYXRlcnMgb2YgVk1UcmFwczo6aGFuZGxlVHJhcHMo
KS4KKworICAgICAgICAgICBOZWVkRGVidWdnZXJCcmVhaydzIGNhbGxGcmFtZSBhcmd1bWVudCB3
YXMgYWx3YXlzIHZtLnRvcENhbGxGcmFtZSBhbnl3YXkuCisgICAgICAgICAgIFNvLCB0aGUgcGF0
Y2ggbWFrZXMgaXQgZXhwbGljaXQsIGFuZCByZW1vdmVzIHRoZSBjYWxsRnJhbWUgcGFyYW1ldGVy
LgorCisgICAgICAgICAgIE5lZWRXYXRjaGRvZ0NoZWNrJ3MgZ2xvYmFsT2JqZWN0IGFyZ3VtZW50
IHNob3VsZCBoYXZlIGFsd2F5cyBiZWVuCisgICAgICAgICAgIHZtLmVudHJ5U2NvcGUtPmdsb2Jh
bE9iamVjdCgpLCBhbmQgd2UgY2FuIHJlbW92ZSB0aGUgZ2xvYmFsT2JqZWN0IHBhcmFtZXRlci4K
KworICAgICAgICAgICBCZWZvcmUgdGhpcywgd2UgcGFzcyBpbiB3aGljaGV2ZXIgZ2xvYmFsT2Jq
ZWN0IHdhcyBjb252ZW5pZW50IHRvIGdyYWIgaG9sZCBvZi4KKyAgICAgICAgICAgSG93ZXZlciwg
dGhlIGlkZWEgb2YgdGhlIHdhdGNoZG9nIGlzIHRvIHRpbWUgb3V0IHRoZSBjdXJyZW50IHNjcmlw
dCBleGVjdXRpbmcKKyAgICAgICAgICAgb24gdGhlIHN0YWNrLiAgSGVuY2UsIGl0IG1ha2VzIHNl
bnNlIHRvIGlkZW50aWZ5IHRoYXkgc2NyaXB0IGJ5IHRoZSBnbG9iYWxPYmplY3QKKyAgICAgICAg
ICAgaW4gdXNlIGF0IFZNIGVudHJ5LgorCisgICAgICAgICAgIFNvIGZhciwgdGhlIG9ubHkgY2xp
ZW50cyB0aGF0IHVzZXMgdGhlIHdhdGNoZG9nIG1lY2hhbmlzbSBvbmx5IG9wZXJhdGVzIGluCisg
ICAgICAgICAgIHNjZW5hcmlvcyB3aXRoIG9ubHkgb25lIGdsb2JhbE9iamVjdCBhbnl3YXkuICBT
byB0aGlzIGZvcm1hbGl6YXRpb24gdG8gdXNlCisgICAgICAgICAgIFZNRW50cnlTY29wZSdzIGds
b2JhbE9iamVjdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIGV4cGVjdGVkIGJlaGF2aW9yLgorCisgICAg
ICAgIDguIE1ha2UgdGhlIGV4ZWN1dGlvbiBvZiB0ZXJtaW5hdGlvbiBtb3JlIHJvYnVzdC4gIEJl
Zm9yZSByZWFkaW5nIHRoaXMsIHBsZWFzZQorICAgICAgICAgICByZWFkIHRoZSBkZXNjcmlwdGlv
biBvZiB0aGUgRXZlbnRzIGluIFZNVHJhcHMuaCBmaXJzdCwgZXNwZWNpYWxseSB0aGUgc2VjdGlv
bgorICAgICAgICAgICBvbiBOZWVkVGVybWluYXRpb24uCisKKyAgICAgICAgICAgSGVyZSdzIHRo
ZSBsaWZlIGN5Y2xlIG9mIGEgdGVybWluYXRpb246CisKKyAgICAgICAgICAgYS4gYSBjbGllbnQg
cmVxdWVzdHMgdGVybWluYXRpb24gb2YgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YWNrIGJ5IGNh
bGxpbmcKKyAgICAgICAgICAgICAgVk06Om5vdGlmeU5lZWRUZXJtaW5hdGlvbigpLiAgbm90aWZ5
TmVlZFRlcm1pbmF0aW9uKCkgZG9lcyAyIHRoaW5nczoKKworICAgICAgICAgICAgICAgaS4gZmly
ZSB0aGUgTmVlZFRlcm1pbmF0aW9uIGV2ZW50IG9uIFZNVHJhcHMuCisgICAgICAgICAgICAgIGlp
LiBzZXQgdGhlIFZNOjptX3Rlcm1pbmF0aW9uSW5Qcm9ncmVzcyBmbGFnLgorCisgICAgICAgICAg
IGIuIEZpcmluZyB0aGUgTmVlZFRlcm1pbmF0aW9uIGV2ZW50IG9uIFZNVHJhcHMgbWVhbnMgc2V0
dGluZyB0aGUgTmVlZFRlcm1pbmF0aW9uCisgICAgICAgICAgICAgIGJpdCBvbiBWTVRyYXBzOjpt
X3RyYXBCaXRzLiAgVGhpcyBiaXQgd2lsbCBiZSBwb2xsZWQgYnkgdGhlIG11dGF0b3IgdGhyZWFk
CisgICAgICAgICAgICAgIGxhdGVyIGF0IHZhcmlvdXMgZGVzaWduYXRlZCBwb2ludHMgKGluY2x1
ZGluZyBSRVRVUk5fSUZfRVhDRVBUSU9OLCB3aGljaCB3ZQorICAgICAgICAgICAgICBhZGRlZCBp
biB0aGlzIHBhdGNoKS4KKworICAgICAgICAgICAgICBPbmNlIHRoZSBtdXRhdG9yIHNlZXMgdGhl
IE5lZWRUZXJtaW5hdGlvbiBiaXQgaXMgc2V0LCBpdCB3aWxsIGNsZWFyIHRoZSBiaXQKKyAgICAg
ICAgICAgICAgYW5kIHRocm93IHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiAoc2VlIFZNVHJhcHM6
OmhhbmRsZVRyYXBzKCkpLiAgVGhpcyBpcworICAgICAgICAgICAgICB1bmxlc3MgdGhlIG11dGF0
b3IgdGhyZWFkIGlzIGN1cnJlbnRseSBpbiBhIERlZmVyVGVybWluYXRpb24gc2NvcGUgKHNlZSAo
OCkKKyAgICAgICAgICAgICAgYmVsb3cpLiAgSWYgaW4gYSBEZWZlclRlcm1pbmF0aW9uIHNjb3Bl
LCB0aGVuIGl0IHdpbGwgbm90IHRocm93IHRoZQorICAgICAgICAgICAgICBUZXJtaW5hdGlvbkV4
Y2VwdGlvbi4KKworICAgICAgICAgICAgICBTaW5jZSB0aGUgTmVlZFRlcm1pbmF0aW9uIGJpdCBp
cyBjbGVhcmVkLCB0aGUgVk0gd2lsbCBubyBsb25nZXIgY2FsbAorICAgICAgICAgICAgICBWTVRy
YXBzOjpoYW5kbGVUcmFwcygpIHRvIHNlcnZpY2UgdGhlIGV2ZW50LiAgSWYgdGhlIG11dGF0b3Ig
dGhyZWFkIGlzIGluCisgICAgICAgICAgICAgIGEgRGVmZXJUZXJtaW5hdGlvbiBzY29wZSwgdGhl
biBvbiBleGl0aW5nIHRoZSBzY29wZSAoYXQgc2NvcGUgZGVzdHJ1Y3Rpb24pLAorICAgICAgICAg
ICAgICB0aGUgc2NvcGUgd2lsbCBzZWUgdGhhdCBWTTo6bV90ZXJtaW5hdGlvbkluUHJvZ3Jlc3Mg
aXMgc2V0LCBhbmQgdGhyb3cgdGhlCisgICAgICAgICAgICAgIGRlZmVycmVkIFRlcm1pbmF0aW9u
RXhjZXB0aW9uIHRoZW4uCisKKyAgICAgICAgICAgYy4gVGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9u
IHdpbGwgdHJpZ2dlciB1bndpbmRpbmcgb3V0IG9mIHRoZSBjdXJyZW50IHN0YWNrCisgICAgICAg
ICAgICAgIHVudGlsIHdlIGdldCB0byB0aGUgb3V0ZXJtb3N0IFZNRW50cnlTY29wZS4KKworICAg
ICAgICAgICBkLiBBdCB0aGUgdGhlIG91dGVybW9zdCBWTUVudHJ5U2NvcGUsIHdlIHdpbGwgY2xl
YXIgVk06Om1fdGVybWluYXRpb25JblByb2dyZXNzCisgICAgICAgICAgICAgIGlmIHRoZSBOZWVk
VGVybWluYXRpb24gYml0IGluIFZNdHJhcHM6Om1fdHJhcEJpdHMgaXMgY2xlYXJlZC4KKworICAg
ICAgICAgICAgICBJZiB0aGUgTmVlZFRlcm1pbmF0aW9uIGJpdCBpcyBzZXQsIHRoZW4gdGhhdCBt
ZWFucyB3ZSBoYXZlbid0IHRocm93biB0aGUKKyAgICAgICAgICAgICAgVGVybWluYXRpb25FeGNl
cHRpb24geWV0LiAgQ3VycmVudGx5LCBjbGllbnRzIGV4cGVjdCB0aGF0IHdlIG11c3QgdGhyb3cg
dGhlCisgICAgICAgICAgICAgIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGlmIE5lZWRUZXJtaW5hdGlv
biB3YXMgcmVxdWVzdGVkIChhZ2FpbiwgcmVhZCBjb21tZW50cworICAgICAgICAgICAgICBhdCB0
aGUgdG9wIG9mIFZNVHJhcHMuaCkuCisKKyAgICAgICAgICAgICAgSWYgdGhlIE5lZWRUZXJtaW5h
dGlvbiBiaXQgaXMgc2V0LCB3ZSdsbCBsZWF2ZSBWTTo6bV90ZXJtaW5hdGlvbkluUHJvZ3Jlc3MK
KyAgICAgICAgICAgICAgc2V0IHVudGlsIHRoZSBuZXh0IHRpbWUgd2UgcmUtZW50ZXIgdGhlIFZN
IGFuZCBleGl0IHRvIHRoZSBvdXRlcm1vc3QKKyAgICAgICAgICAgICAgVk1FbnRyeVNjb3BlLgor
CisgICAgICAgICAgIGUuIFRoZSBwdXJwb3NlIG9mIFZNOjptX3Rlcm1pbmF0aW9uSW5Qcm9ncmVz
cyBpcyB0byBwcm92aWRlIGEgc3VtbWFyeSBvZiB0aGUKKyAgICAgICAgICAgICAgZmFjdCB0aGF0
IHRoZSBWTSBpcyBpbiBhIHN0YXRlIG9mIHRyeWluZyB0byB0ZXJtaW5hdGUgdGhlIGN1cnJlbnQg
c3RhY2suCisKKyAgICAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgc3RhdGUgaXMgZmlyc3QgaW5k
aWNhdGVkIGJ5IHRoZSBOZWVkVGVybWluYXRpb24gYml0IGJlaW5nIHNldAorICAgICAgICAgICAg
ICBpbiBWTVRyYXBzOjptX3RyYXBCaXRzLiAgVGhlbiwgaW4gVk1UcmFwczo6aGFuZGxlVHJhcHMo
KSwgdGhlIHN0YXRlIGlzCisgICAgICAgICAgICAgIGhhbmRlZCBvZiB3aXRoIHRoZSBOZWVkVGVy
bWluYXRpb24gYml0IGJlaW5nIGNsZWFyZWQsIGFuZCB0aGUKKyAgICAgICAgICAgICAgVGVybWlu
YXRpb25FeGNlcHRpb24gYmVpbmcgdGhyb3duLgorCisgICAgICAgICAgICAgIFdoaWxlIHRoZSBW
TSBpcyBpbiB0aGlzIHRlcm1pbmF0aW9uIHN0YXRlLCB3ZSBuZWVkIHRvIHByZXZlbnQgbmV3IERG
Ry9GVEwKKyAgICAgICAgICAgICAgSklUIGNvZGUgZnJvbSBiZWluZyBjb21waWxlZCBhbmQgcnVu
LiAgVGhlIHJlYXNvbiBpcyB0aGUgZmlyaW5nIG9mIHRoZQorICAgICAgICAgICAgICBOZWVkVGVy
bWluYXRpb24gZXZlbnQgaGFzIGludmFsaWRhdGVkIERGRy9GVEwgY29kZSBvbiB0aGUgc3RhY2ss
IHRoZXJlYnkKKyAgICAgICAgICAgICAgYWxsb3dpbmcgdGhlaXIgYmFzZWxpbmUgLyBMTEludCB2
ZXJzaW9ucyB3aGljaCBoYXZlIFZNVHJhcHMgcG9sbGluZyBjaGVja3MKKyAgICAgICAgICAgICAg
dG8gcnVuLiAgV2UgZG9uJ3Qgd2FudCB0byBjb21waWxlIG5ldyBERkcgLyBGVEwgY29kZSBhbmQg
cG9zc2libHkgZ2V0IHN0dWNrCisgICAgICAgICAgICAgIGluIGxvb3BzIGluIHRoZXJlIGJlZm9y
ZSB0aGUgdGVybWluYXRpb24gaXMgY29tcGxldGUuCisKKyAgICAgICAgICAgICAgSW4gb3BlcmF0
aW9uT3B0aW1pemUoKSwgd2UgY2hlY2sgaWYgVk06Om1fdGVybWluYXRpb25JblByb2dyZXNzIGlz
IHNldCwgYW5kCisgICAgICAgICAgICAgIHByZXZlbnQgbmV3IERGRyAoYW5kIHRoZXJlZm9yZSBG
VEwpIGNvZGUgZnJvbSBiZWluZyBjb21waWxlZCBpZiBuZWVkZWQuCisgICAgICAgICAgICAgIE5v
dGU6IGl0IGlzIGVhc2llciB0byBjaGVjayBhIHNpbmdsZSBmbGFnLCBWTTo6bV90ZXJtaW5hdGlv
bkluUHJvZ3Jlc3MsCisgICAgICAgICAgICAgIHRoZW4gdG8gY2hlY2sgYm90aCBpZiB0aGUgTmVl
ZFRlcm1pbmF0aW9uIGJpdCBpcyBzZXQgb3IgaWYgdGhlCisgICAgICAgICAgICAgIFRlcm1pbmF0
aW9uRXhjZXB0aW9uIGlzIGJlaW5nIGJlaW5nIHRocm93bi4KKworICAgICAgICA5LiBPbmUgY29t
cGxpY2F0aW9uIG9mIGJlaW5nIGFibGUgdG8gc2VydmljZSBWTVRyYXBzIGluIFJFVFVSTl9JRl9F
WENFUFRJT04gY2hlY2tzCisgICAgICAgICAgIGlzIHRoYXQgc29tZSBvZiBvdXIgY29kZSAodXN1
YWxseSBmb3IgbGVuZ3RoaWVyIGluaXRpYWxpemF0aW9ucyBhbmQgYm9vdHN0cmFwcGluZykKKyAg
ICAgICAgICAgY3VycmVudGx5IGRvZXMgbm90IGhhbmRsZSBleGNlcHRpb25zIHdlbGwsIGUuZy4g
SlNHbG9iYWxPYmplY3Q6OmluaXQoKS4gIFRoZXkKKyAgICAgICAgICAgcmVseSBvbiB0aGUgY29k
ZSBjcmFzaGluZyBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIHdoaWxlIHN0aWxsIGluaXRpYWxp
emluZy4KKworICAgICAgICAgICBIb3dldmVyLCBmb3IgYSB3b3JrZXIgdGhyZWFkLCBhIFRlcm1p
bmF0aW9uRXhjZXB0aW9uIChyZXF1ZXN0ZWQgYnkgdGhlIG1haW4KKyAgICAgICAgICAgdGhyZWFk
KSBtYXkgYXJyaXZlIGJlZm9yZSB0aGUgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuICBUaGlz
IGNhbiBsZWFkIHRvCisgICAgICAgICAgIGNyYXNoZXMgYmVjYXVzZSBwYXJ0IG9mIHRoZSBpbml0
aWFsaXphdGlvbiBtYXkgYmUgYWJvcnRlZCBpbiB0aGUgcHJlc2VuY2Ugb2YKKyAgICAgICAgICAg
YW4gZXhjZXB0aW9uLCB3aGlsZSBvdGhlciBwYXJ0cyBzdGlsbCBleHBlY3QgZXZlcnl0aGluZyBw
cmlvciB0byBoYXZlIGJlZW4KKyAgICAgICAgICAgaW5pdGlhbGl6ZWQgY29ycmVjdGx5LiAgRm9y
IHJlc291cmNlIGV4aGF1c3Rpb24gY2FzZXMgKHdoaWNoIGlzIGFibm9ybWFsKSwgaXQKKyAgICAg
ICAgICAgaXMgT0sgdG8gY3Jhc2guICBGb3IgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uICh3aGlj
aCBjYW4gYmUgcGFydCBvZiBub3JtYWwKKyAgICAgICAgICAgb3BlcmF0aW9uKSwgd2Ugc2hvdWxk
IG5vdCBiZSBjcmFzaGluZy4KKworICAgICAgICAgICBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBp
bnRyb2R1Y2UgYSBEZWZlclRlcm1pbmF0aW9uIFJBSUkgc2NvcGUgb2JqZWN0IHRoYXQgd2UKKyAg
ICAgICAgICAgZGVwbG95IGluIHRoaXMgdHlwZSBvZiBpbml0aWFsaXphdGlvbiBjb2RlLiAgV2l0
aCB0aGUgc2NvcGUgaW4gZWZmZWN0LAorCisgICAgICAgICAgIGEuIGlmIGEgVGVybWluYXRpb25F
eGNlcHRpb24gYXJyaXZlcyBidXQgaGFzbid0IGJlZW4gdGhyb3duIHlldCwgaXQgd2lsbCBiZQor
ICAgICAgICAgICAgICBkZWZlcnJlZCB0aWxsIHRoZSBzY29wZSBlbmRzIGJlZm9yZSBiZWluZyB0
aHJvd24uCisgICAgICAgICAgIGIuIGlmIGEgVGVybWluYXRpb25FeGNlcHRpb24gaGFzIGFscmVh
ZHkgYmVlbiB0aHJvd24sIHRoZSBzY29wZSB3aWxsIHN0YXNoCisgICAgICAgICAgICAgIHRoZSBl
eGNlcHRpb24sIGNsZWFyIGl0IGZyb20gdGhlIFZNIHNvIHRoYXQgdGhlIGluaXRpYWxpemF0aW9u
IGNvZGUgY2FuCisgICAgICAgICAgICAgIHJ1biB0byBjb21wbGV0aW9uLCBhbmQgdGhlbiByZS10
aHJvdyB0aGUgZXhjZXB0aW9uIHdoZW4gdGhlIHNjb3BlIGVuZHMuCisKKyAgICAgICAgICAgQ3Vy
cmVudGx5LCB3ZSBvbmx5IG5lZWQgdG8gdXNlIHRoZSBEZWZlclRlcm1pbmF0aW9uIHNjb3BlIGlu
IGEgZmV3IHBsYWNlcworICAgICAgICAgICB3aGVyZSB3ZSBrbm93IHRoYXQgaW5pdGlhbGl6YXRp
b24gY29kZSB3aWxsIG9ubHkgcnVuIGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLgorCisgICAg
ICAgICAgIERlZmVyVGVybWluYXRpb24gc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBjb2RlIHRoYXQg
Y2FuIGJsb2NrIHdhaXRpbmcgb24gYW4KKyAgICAgICAgICAgZXh0ZXJuYWwgZXZlbnQgZm9yIGEg
bG9uZyB0aW1lLiAgT2J2aW91c2x5LCBkb2luZyBzbyB3aWxsIHByZXZlbnQgdGhlIFZNCisgICAg
ICAgICAgIHRlcm1pbmF0aW9uIG1lY2hhbmlzbSBmcm9tIHdvcmtpbmcuCisKKyAgICAgICAxMC4g
UmVwbGFjZWQgbGxpbnRfc2xvd19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJs
ZV9hbmRfbm90aWZ5X3Byb2ZpbGVyCisgICAgICAgICAgIGFuZCBvcGVyYXRpb25DaGVja0lmRXhj
ZXB0aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyIHdpdGgKKyAgICAgICAgICAgbGxp
bnRfc2xvd19wYXRoX3JldHJpZXZlX2FuZF9jbGVhcl9leGNlcHRpb25faWZfY2F0Y2hhYmxlIGFu
ZAorICAgICAgICAgICBvcGVyYXRpb25SZXRyaWV2ZUFuZENsZWFyRXhjZXB0aW9uSWZDYXRjaGFi
bGUuCisKKyAgICAgICAgICAgVGhlIDIgcnVudGltZSBmdW5jdGlvbnMgZG9lc24ndCBhY3R1YWxs
eSBkbyBhbnl0aGluZyB0byBub3RpZnkgYSBwcm9maWxlci4KKyAgICAgICAgICAgU28sIHdlIGRy
b3AgdGhhdCBwYXJ0IG9mIHRoZSBuYW1lLgorCisgICAgICAgICAgIEFmdGVyIHJldHVybmluZyBm
cm9tIHRoZXNlIHJ1bnRpbWUgZnVuY3Rpb25zIHJlc3BlY3RpdmVseSwgdGhlIHByZXZpb3VzIExM
SW50CisgICAgICAgICAgIGFuZCBKSVQgY29kZSwgd2hpY2ggY2FsbHMgdGhlc2UgcnVudGltZXMg
ZnVuY3Rpb25zLCB3b3VsZCBnbyBvbiB0byBsb2FkCisgICAgICAgICAgIFZNOjptX2V4Y2VwdGlv
biwgYW5kIHRoZW4gc3RvcmUgYSBudWxscHRyIHRoZXJlIHRvIGNsZWFyIGl0LiAgVGhpcyBpcyB3
YXN0ZWZ1bC4KKworICAgICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHJ1bnRpbWUgZnVu
Y3Rpb24gdG8gY2xlYXIgYW5kIHJldHVybiB0aGUgRXhjZXB0aW9uCisgICAgICAgICAgIGluc3Rl
YWQuICBBcyBhIHJlc3VsdCwgdGhlIGNhbGxpbmcgTExJbnQgYW5kIEpJVCBjb2RlIGlzIHNpbXBs
aWZpZWQgYSBiaXQuCisKKyAgICAgICAgICAgTm90ZSBhbHNvIHRoYXQgY2xlYXJpbmcgYW4gZXhj
ZXB0aW9uIG5vdyBhbHNvIGVudGFpbHMgY2xlYXJpbmcgdGhlCisgICAgICAgICAgIE5lZWRFeGNl
cHRpb25IYW5kbGluZyBiaXQgaW4gVk1UcmFwczo6bV90cmFwQml0cyBpbiBhbiBhdG9taWMgd2F5
LiAgVGhlIGFib3ZlCisgICAgICAgICAgIGNoYW5nZSBtYWtlcyBpdCBlYXN5IHRvIGRvIHRoaXMg
Y2xlYXJpbmcgd2l0aCBDKysgY29kZS4KKworICAgICAgIDExLiBGaXggU2NyaXB0RnVuY3Rpb25D
YWxsOjpjYWxsKCkgdG8gaGFuZGxlIGV4Y2VwdGlvbnMgY29ycmVjdGx5LiAgUHJldmlvdXNseSwK
KyAgICAgICAgICAgaXQgaGFkIG9uZSBjYXNlIHdoZXJlIGl0IHByb3BhZ2F0ZXMgYW4gZXhjZXB0
aW9uLCB3aGlsZSBhbm90aGVyIGVhdHMgaXQuCisgICAgICAgICAgIENoYW5nZSB0aGlzIGZ1bmN0
aW9uIHRvIGVhdCB0aGUgZXhjZXB0aW9uIGluIGJvdGggY2FzZXMuICBUaGlzIGlzIGFwcHJvcHJv
aWF0ZQorICAgICAgICAgICBiZWNhdXNlIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpcyBvbmx5IHVzZWQg
dG8gZXhlY3V0ZSBzb21lIEluc3BlY3RvciBpbnN0cnVtZW50YXRpb24KKyAgICAgICAgICAgY2Fs
bHMuICBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gcHJvcGFnYXRlIHRoZSBleGNlcHRpb24gYmFj
ayB0byB1c2VyIGNvZGUuCisKKyAgICAgICAxMi4gRml4IHRoZSBsYXp5IGluaXRpYWxpemF0aW9u
IG9mIEpTR2xvYmFsT2JqZWN0OjptX2RlZmF1bHRDb2xsYXRvciB0byBiZSBhYmxlIHRvCisgICAg
ICAgICAgIGhhbmRsZSB0aGUgVGVybWluYXRpb25FeGNlcHRpb24uCisKKyAgICAgICAxMy4gTm90
IHJlbGF0ZWQgdG8gVGVybWluYXRpb25FeGNlcHRpb24sIGJ1dCB0aGlzIHBhdGNoIGFsc28gZml4
ZXMKKyAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXI6OmV4cGFuZENhcGFjaXR5KCkgdG8g
dXNlIEdpZ2FjYWdlOjp0cnlNYWxsb2MoKSBpbnN0ZWFkIG9mCisgICAgICAgICAgIEdpZ2FjYWdl
OjptYWxsb2MoKS4gIFRoaXMgaXMgbmVlZGVkIGFzIG9uZSBvZiB0aGUgZml4ZXMgdG8gbWFrZSB0
aGUKKyAgICAgICAgICAgYWNjb21wYW55aW5nIHRlc3QgY2FzZSB3b3JrLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hUZXN0MzIpOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNdjc6OmJyYW5jaFRlc3QzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5j
aFRlc3QzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0MzIpOgor
ICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAgICAgIChEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGw6OmNhbGwpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDaGVja1RyYXBzKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrVHJhcHMpOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1
dGVDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9jYXRjaCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja190cmFwcyk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9jYXRjaCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpM
TEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1Bh
dGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6
CisgICAgICAgIChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyOjpleHBhbmRDYXBhY2l0eSk6Cisg
ICAgICAgICogcnVudGltZS9EZWZlclRlcm1pbmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjpEZWZlclRlcm1pbmF0aW9uOjpEZWZlclRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6RGVm
ZXJUZXJtaW5hdGlvbjo6fkRlZmVyVGVybWluYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvRXhj
ZXB0aW9uU2NvcGUuaDoKKyAgICAgICAgKEpTQzo6RXhjZXB0aW9uU2NvcGU6OmV4Y2VwdGlvbiBj
b25zdCk6CisgICAgICAgIChKU0M6OkV4Y2VwdGlvblNjb3BlOjpleGNlcHRpb24pOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9MYXp5UHJvcGVydHlJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkVsZW1lbnRUeXBlPjo6Y2FsbEZ1bmMpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06Omhhc0V4
Y2VwdGlvbnNBZnRlckhhbmRsaW5nVHJhcHMpOgorICAgICAgICAoSlNDOjpWTTo6Y2xlYXJFeGNl
cHRpb24pOgorICAgICAgICAoSlNDOjpWTTo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6
Vk06OnRocm93VGVybWluYXRpb25FeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dF
eGNlcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OnRl
cm1pbmF0aW9uSW5Qcm9ncmVzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZNOjpzZXRUZXJtaW5h
dGlvbkluUHJvZ3Jlc3MpOgorICAgICAgICAoSlNDOjpWTTo6bm90aWZ5TmVlZFRlcm1pbmF0aW9u
KToKKyAgICAgICAgKEpTQzo6Vk06OkRlZmVyRXhjZXB0aW9uU2NvcGU6OkRlZmVyRXhjZXB0aW9u
U2NvcGUpOgorICAgICAgICAoSlNDOjpWTTo6RGVmZXJFeGNlcHRpb25TY29wZTo6fkRlZmVyRXhj
ZXB0aW9uU2NvcGUpOgorICAgICAgICAoSlNDOjpWTTo6aGFuZGxlVHJhcHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpWTTo6bmVlZFRyYXBIYW5kbGluZyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlZNOjpuZWVkVHJhcEhhbmRsaW5nQWRkcmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OlZNOjpzZXRFeGNlcHRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTTo6Y2xlYXJFeGNl
cHRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKiBydW50
aW1lL1ZNVHJhcHMuY3BwOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjp0cnlJbnN0YWxsVHJhcEJy
ZWFrcG9pbnRzKToKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6ZmlyZVRyYXApOgorICAgICAgICAo
SlNDOjpWTVRyYXBzOjpoYW5kbGVUcmFwcyk6CisgICAgICAgIChKU0M6OlZNVHJhcHM6OnRha2VU
b3BQcmlvcml0eVRyYXApOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjpkZWZlclRlcm1pbmF0aW9u
KToKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6dW5kb0RlZmVyVGVybWluYXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvVk1UcmFwcy5oOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjpvbmx5Q29udGFp
bnNBc3luY0V2ZW50cyk6CisgICAgICAgIChKU0M6OlZNVHJhcHM6Om5lZWRIYW5kbGluZyBjb25z
dCk6CisgICAgICAgIChKU0M6OlZNVHJhcHM6OnRyYXBCaXRzQWRkcmVzcyk6CisgICAgICAgIChK
U0M6OlZNVHJhcHM6OmlzRGVmZXJyaW5nVGVybWluYXRpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpWTVRyYXBzOjpub3RpZnlHcmFiQWxsTG9ja3MpOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjpo
YXNUcmFwQml0KToKKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6Y2xlYXJUcmFwQml0KToKKyAgICAg
ICAgKEpTQzo6Vk1UcmFwczo6c2V0VHJhcEJpdCk6CisgICAgICAgIChKU0M6OlZNVHJhcHM6Ok1h
c2s6Ok1hc2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpWTVRyYXBzOjpNYXNrOjphbGxFdmVu
dFR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Vk1UcmFwczo6TWFzazo6Yml0cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNVHJhcHM6Ok1hc2s6OmluaXQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpWTVRyYXBzOjppbnRlcnJ1cHRpbmdUcmFwcyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlZNVHJhcHM6Om5lZWRUcmFwSGFuZGxpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpWTVRyYXBzOjpuZWVkVHJhcEhhbmRsaW5nQWRkcmVzcyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlZNVHJhcHM6Omhhc1RyYXBGb3JFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlZNVHJhcHM6OnNldFRyYXBGb3JFdmVudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZN
VHJhcHM6OmNsZWFyVHJhcEZvckV2ZW50KTogRGVsZXRlZC4KKwogMjAyMS0wNC0wOCAgS2hlbSBS
YWogIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dQRV0gQnVpbGQgZml4ZXMgZm9y
IG11c2wgQyBsaWJyYXJ5IG9uIExpbnV4CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyNzU3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg3Niw2ICs4NzYsNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGltZS9EYXRhVmlldy5oCiAgICAg
cnVudGltZS9EYXRlSW5zdGFuY2UuaAogICAgIHJ1bnRpbWUvRGF0ZUluc3RhbmNlQ2FjaGUuaAor
ICAgIHJ1bnRpbWUvRGVmZXJUZXJtaW5hdGlvbi5oCiAgICAgcnVudGltZS9EZWZlcnJlZFdvcmtU
aW1lci5oCiAgICAgcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAogICAgIHJ1bnRp
bWUvRGVsZXRlUHJvcGVydHlTbG90LmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNzU3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5Miw2ICsx
OTkyLDcgQEAKIAkJRkU5MTJCNTEyNTMxMUFEMTAwRkFCRERGIC8qIEFic3RyYWN0U2xvdFZpc2l0
b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTkxMkI1MDI1MzExQUQxMDBGQUJEREYgLyogQWJzdHJhY3RTbG90VmlzaXRvcklubGluZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTk5
QjI0OTFDMjRDM0QzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTk5QjI0ODFDMjRCNkQzMDBDODIxNTkg
LyogSklUTmVnR2VuZXJhdG9yLmggKi87IH07CiAJCUZFOUYzRkI5MjYxM0M3ODkwMDY5RTg5RiAv
KiBSZXNvdXJjZUV4aGF1c3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFOUYzRkI4MjYxM0M3ODgwMDY5RTg5RiAvKiBSZXNvdXJjZUV4aGF1c3Rp
b24uaCAqLzsgfTsKKwkJRkU5RjNGQzgyNjE2M0NBOTAwNjlFODlGIC8qIERlZmVyVGVybWluYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFOUYz
RkM2MjYxNjNDQTkwMDY5RTg5RiAvKiBEZWZlclRlcm1pbmF0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVBMDg2MjAxODJCN0EwNDAwRjZE
ODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVBMDg2MjExODJC
N0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUYxODJCN0EwNDAwRjZEODUxIC8qIERl
YnVnZ2VyUHJpbWl0aXZlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUEzQkJB
NzIxMkI2NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MzYzLDYgKzUzNjQsNyBAQAogCQlG
RTk5QjI0ODFDMjRCNkQzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVE5lZ0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTlGM0ZCODI2MTNDNzg4MDA2OUU4OUYgLyogUmVzb3VyY2VFeGhhdXN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlRXhoYXVzdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTlGM0ZCQTI2MTNDODdDMDA2OUU4
OUYgLyogUmVzb3VyY2VFeGhhdXN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNl
RXhoYXVzdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOUYzRkM2MjYx
NjNDQTkwMDY5RTg5RiAvKiBEZWZlclRlcm1pbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlZmVyVGVybWluYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRUEwODYxRjE4MkI3QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnZ2VyUHJpbWl0aXZlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEg
LyogQ2FsbEZyYW1lSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsRnJhbWVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Mjg2LDYg
KzcyODgsNyBAQAogCQkJCTE0QTE1NjMwMTA5NjYzNjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VD
YWNoZS5oICovLAogCQkJCUJDRDIwMzQ3MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBl
LmNwcCAqLywKIAkJCQlCQ0QyMDM0ODBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5o
ICovLAorCQkJCUZFOUYzRkM2MjYxNjNDQTkwMDY5RTg5RiAvKiBEZWZlclRlcm1pbmF0aW9uLmgg
Ki8sCiAJCQkJNTM0NjM4NzYxRTcxRTA2RTAwRjEyQUMxIC8qIERlZmVycmVkV29ya1RpbWVyLmNw
cCAqLywKIAkJCQk1MzQ2Mzg3NDFFNzBEREVDMDBGMTJBQzEgLyogRGVmZXJyZWRXb3JrVGltZXIu
aCAqLywKIAkJCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzLmggKi8sCkBAIC05NjYzLDYgKzk2NjYsNyBAQAogCQkJCTBGOUUzMjY0MUIwNUFCMDQw
MDgwMUVENSAvKiBERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDMjBDQjYxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3QyAvKiBERkdT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTlGM0ZDODI2MTYz
Q0E5MDA2OUU4OUYgLyogRGVmZXJUZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1
MEFGM0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyRkNDRkYxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVu
a3MuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDI3NTc1MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjk0Miw2ICsyOTQyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3QzMihjb25kLCBtZW1vcnlUZW1wUmVnaXN0ZXIsIG1hc2spOwogICAgIH0K
IAorICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFk
ZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAg
IHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBnZXRDYWNoZWRN
ZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIGxvYWQzMihBZGRy
ZXNzKG1lbW9yeVRlbXBSZWdpc3RlciksIG1lbW9yeVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJl
dHVybiBicmFuY2hUZXN0MzIoY29uZCwgbWVtb3J5VGVtcFJlZ2lzdGVyLCBtYXNrKTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaFRlc3Q2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCByZWcsIFJlZ2lzdGVySUQgbWFzaykKICAgICB7CiAgICAgICAgIGlmIChyZWcgPT0gbWFzayAm
JiAoY29uZCA9PSBaZXJvIHx8IGNvbmQgPT0gTm9uWmVybykpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2
aXNpb24gMjc1NzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0xNjg5LDYgKzE2ODksMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNo
VGVzdDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIG1hc2spOwogICAgIH0KIAorICAgIEp1
bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRk
cmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQorICAgIHsKKyAgICAg
ICAgLy8gdXNlIGFkZHJlc3NUZW1wUmVnaXN0ZXIgaW5jYXNlIHRoZSBicmFuY2hUZXN0MzIgd2Ug
Y2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIo
QWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbWFzayk7
CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQmFz
ZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAg
ICB7CiAgICAgICAgIC8vIHVzZSBhZGRyZXNzVGVtcFJlZ2lzdGVyIGluY2FzZSB0aGUgYnJhbmNo
VGVzdDggd2UgY2FsbCB1c2VzIGRhdGFUZW1wUmVnaXN0ZXIuIDotLwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCShy
ZXZpc2lvbiAyNzU3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyTUlQUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMCBNSVBTIFRlY2hub2xvZ2llcywgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTk2NCw2ICsxOTY0LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBt
YXNrKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZElt
bTMyKC0xKSkKKyAgICB7CisgICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCBtYXNrKTsKKyAgICB9CisKICAgICBUcnVzdGVkSW1tMzIgbWFzazhPblRlc3QoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBtYXNrKQogICAgIHsKICAgICAgICAgaWYgKG1h
c2subV92YWx1ZSA9PSAtMSAmJiAhbV9maXhlZFdpZHRoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAkocmV2aXNpb24gMjc1NzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcxMyw2ICsyNzEz
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNv
bmRpdGlvbihjb25kKSkpOwogICAgIH0KICAgICAKKyAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICByZXR1cm4gYnJh
bmNoVGVzdDMyKGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBtYXNrKTsKKyAgICB9
CisgICAgCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewog
ICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgoc3RhdGljX2Nhc3Q8aW50OF90PihtYXNrLm1fdmFs
dWUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRGdW5jdGlv
bkNhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCShyZXZpc2lvbiAyNzU3NTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYmluZGluZ3MvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA4LDI5ICsxMDgsMzUgQEAgRXhwZWN0ZWQ8SlNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9u
Pj4gUwogCiAgICAgVk0mIHZtID0gbV9nbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBhdXRvIG1h
a2VFeGNlcHRpb25SZXN1bHQgPSBbJl0gKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSAtPiBFeHBlY3Rl
ZDxKU1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+PiB7CisgICAgICAgIC8vIERvIG5vdCB0cmVh
dCBhIHRlcm1pbmF0ZWQgZXhlY3V0aW9uIGV4Y2VwdGlvbiBhcyBoYXZpbmcgYW4gZXhjZXB0aW9u
LiBKdXN0IHRyZWF0IGl0IGFzIGFuIGVtcHR5IHJlc3VsdC4KKyAgICAgICAgaWYgKCF2bS5pc1Rl
cm1pbmF0aW9uRXhjZXB0aW9uKGV4Y2VwdGlvbikpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OwogCiAgICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IHRoaXNPYmplY3QtPmdldChtX2dsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgbV9uYW1lKSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHNjb3BlLmV4Y2VwdGlv
bigpKTsKKyAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpOworICAg
IGlmIChVTkxJS0VMWShleGNlcHRpb24pKSB7CisgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9u
KCk7CisgICAgICAgIHJldHVybiBtYWtlRXhjZXB0aW9uUmVzdWx0KGV4Y2VwdGlvbik7CisgICAg
fQogCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBmdW5jdGlvbik7CiAgICAg
aWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4
Y2VwdGlvbjsKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IHVuY2F1Z2h0RXhjZXB0aW9uOwogICAg
IGlmIChtX2NhbGxIYW5kbGVyKQotICAgICAgICByZXN1bHQgPSBtX2NhbGxIYW5kbGVyKG1fZ2xv
YmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNPYmplY3QsIG1fYXJndW1lbnRzLCBl
eGNlcHRpb24pOworICAgICAgICByZXN1bHQgPSBtX2NhbGxIYW5kbGVyKG1fZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvbiwgY2FsbERhdGEsIHRoaXNPYmplY3QsIG1fYXJndW1lbnRzLCB1bmNhdWdodEV4
Y2VwdGlvbik7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBKU0M6OmNhbGwobV9nbG9iYWxP
YmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgdGhpc09iamVjdCwgbV9hcmd1bWVudHMsIGV4Y2Vw
dGlvbik7CisgICAgICAgIHJlc3VsdCA9IEpTQzo6Y2FsbChtX2dsb2JhbE9iamVjdCwgZnVuY3Rp
b24sIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cywgdW5jYXVnaHRFeGNlcHRpb24p
OwogCi0gICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAvLyBEbyBub3QgdHJlYXQgYSB0ZXJt
aW5hdGVkIGV4ZWN1dGlvbiBleGNlcHRpb24gYXMgaGF2aW5nIGFuIGV4Y2VwdGlvbi4gSnVzdCB0
cmVhdCBpdCBhcyBhbiBlbXB0eSByZXN1bHQuCi0gICAgICAgIGlmICghdm0uaXNUZXJtaW5hdGlv
bkV4Y2VwdGlvbihleGNlcHRpb24pKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQorICAgIGlmICh1bmNhdWdo
dEV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIG1ha2VFeGNlcHRpb25SZXN1bHQodW5jYXVnaHRF
eGNlcHRpb24pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNzU3NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIyMjIsOCArMjIyMiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDaGVja1RyYXBzKE4KICAgICBHUFJUZW1wb3JhcnkgdW51c2VkKHRoaXMpOwogICAgIEdQ
UlJlZyB1bnVzZWRHUFIgPSB1bnVzZWQuZ3ByKCk7CiAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBu
ZWVkVHJhcEhhbmRsaW5nID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8s
Ci0gICAgICAgIEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3MobV9qaXQudm0oKS5uZWVkVHJh
cEhhbmRsaW5nQWRkcmVzcygpKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgbmVlZFRyYXBIYW5k
bGluZyA9IG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9uWmVybywKKyAgICAgICAg
SklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyhtX2ppdC52bSgpLnRyYXBzKCkudHJhcEJpdHNB
ZGRyZXNzKCkpLAorICAgICAgICBUcnVzdGVkSW1tMzIoVk1UcmFwczo6QXN5bmNFdmVudHMpKTsK
IAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChuZWVkVHJhcEhhbmRsaW5n
LCB0aGlzLCBvcGVyYXRpb25IYW5kbGVUcmFwcywgdW51c2VkR1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSkpOwogICAgIG5vUmVzdWx0KG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjc1NzUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTM0MDAsOCArMTM0MDAsOCBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9j
ayBuZWVkVHJhcEhhbmRsaW5nID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgCi0gICAgICAgIExW
YWx1ZSBzdGF0ZSA9IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKG1fb3V0LmFic29sdXRlKHZtKCkubmVl
ZFRyYXBIYW5kbGluZ0FkZHJlc3MoKSkpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNa
ZXJvMzIoc3RhdGUpLAorICAgICAgICBMVmFsdWUgdHJhcEJpdHMgPSBtX291dC5sb2FkMzIobV9v
dXQuYWJzb2x1dGUodm0oKS50cmFwcygpLnRyYXBCaXRzQWRkcmVzcygpKSk7CisgICAgICAgIG1f
b3V0LmJyYW5jaChtX291dC50ZXN0SXNaZXJvMzIodHJhcEJpdHMsIG1fb3V0LmNvbnN0SW50MzIo
Vk1UcmFwczo6QXN5bmNFdmVudHMpKSwKICAgICAgICAgICAgIHVzdWFsbHkoY29udGludWF0aW9u
KSwgcmFyZWx5KG5lZWRUcmFwSGFuZGxpbmcpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5lZWRUcmFwSGFuZGxpbmcsIGNvbnRpbnVhdGlvbik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHJldmlzaW9uIDI3NTc1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwMSwxMCArODAxLDkgQEAg
ZmFpbGVkSlNPTlA6CiAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKICAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBlcnJv
cikpOwogCi0gICAgY29uc3RleHByIGF1dG8gdHJhcHNNYXNrID0gVk1UcmFwczo6aW50ZXJydXB0
aW5nVHJhcHMoKTsKLSAgICBpZiAoVU5MSUtFTFkodm0ubmVlZFRyYXBIYW5kbGluZyh0cmFwc01h
c2spKSkgewotICAgICAgICB2bS5oYW5kbGVUcmFwcyhnbG9iYWxPYmplY3QsIHZtLnRvcENhbGxG
cmFtZSwgdHJhcHNNYXNrKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKKyAgICBpZiAoVU5MSUtFTFkodm0udHJhcHMoKS5u
ZWVkSGFuZGxpbmcoVk1UcmFwczo6Tm9uRGVidWdnZXJBc3luY0V2ZW50cykpKSB7CisgICAgICAg
IGlmICh2bS5oYXNFeGNlcHRpb25zQWZ0ZXJIYW5kbGluZ1RyYXBzKCkpCisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dTY29wZS5leGNlcHRpb24oKTsKICAgICB9CiAKICAgICBpZiAoc2NvcGUtPnN0
cnVjdHVyZSh2bSktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCkBAIC04NjgsMTAgKzg2Nyw5
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmEKICAgICBpZiAoVU5M
SUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSB8fCBhcmdzLnNpemUoKSA+IG1heEFyZ3Vt
ZW50cykpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vy
cm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSkpOwogCi0gICAgY29uc3RleHByIGF1dG8gdHJh
cHNNYXNrID0gVk1UcmFwczo6aW50ZXJydXB0aW5nVHJhcHMoKTsKLSAgICBpZiAoVU5MSUtFTFko
dm0ubmVlZFRyYXBIYW5kbGluZyh0cmFwc01hc2spKSkgewotICAgICAgICB2bS5oYW5kbGVUcmFw
cyhnbG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSwgdHJhcHNNYXNrKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKKyAg
ICBpZiAoVU5MSUtFTFkodm0udHJhcHMoKS5uZWVkSGFuZGxpbmcoVk1UcmFwczo6Tm9uRGVidWdn
ZXJBc3luY0V2ZW50cykpKSB7CisgICAgICAgIGlmICh2bS5oYXNFeGNlcHRpb25zQWZ0ZXJIYW5k
bGluZ1RyYXBzKCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dTY29wZS5leGNlcHRpb24oKTsK
ICAgICB9CiAKICAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9IG51bGxwdHI7CkBAIC05NDcs
MTAgKzk0NSw5IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3RleHByIGF1dG8gdHJhcHNN
YXNrID0gVk1UcmFwczo6aW50ZXJydXB0aW5nVHJhcHMoKTsKLSAgICBpZiAoVU5MSUtFTFkodm0u
bmVlZFRyYXBIYW5kbGluZyh0cmFwc01hc2spKSkgewotICAgICAgICB2bS5oYW5kbGVUcmFwcyhn
bG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSwgdHJhcHNNYXNrKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKKyAgICBpZiAoVU5MSUtFTFkodm0u
dHJhcHMoKS5uZWVkSGFuZGxpbmcoVk1UcmFwczo6Tm9uRGVidWdnZXJBc3luY0V2ZW50cykpKSB7
CisgICAgICAgIGlmICh2bS5oYXNFeGNlcHRpb25zQWZ0ZXJIYW5kbGluZ1RyYXBzKCkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBDb2RlQmxvY2sqIG5ld0NvZGVC
bG9jayA9IG51bGxwdHI7CkBAIC0xMDYyLDEwICsxMDU5LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3RleHBy
IGF1dG8gdHJhcHNNYXNrID0gVk1UcmFwczo6aW50ZXJydXB0aW5nVHJhcHMoKTsKLSAgICBpZiAo
VU5MSUtFTFkodm0ubmVlZFRyYXBIYW5kbGluZyh0cmFwc01hc2spKSkgewotICAgICAgICB2bS5o
YW5kbGVUcmFwcyhnbG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSwgdHJhcHNNYXNrKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpKTsKKyAgICBpZiAoVU5MSUtFTFkodm0udHJhcHMoKS5uZWVkSGFuZGxpbmcoVk1UcmFwczo6
Tm9uRGVidWdnZXJBc3luY0V2ZW50cykpKSB7CisgICAgICAgIGlmICh2bS5oYXNFeGNlcHRpb25z
QWZ0ZXJIYW5kbGluZ1RyYXBzKCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dTY29wZS5leGNl
cHRpb24oKTsKICAgICB9CiAKICAgICBhdXRvIGxvYWRDb2RlQmxvY2sgPSBbJl0oRXhjZXB0aW9u
KiYgY29tcGlsZUVycm9yKSAtPiBFdmFsQ29kZUJsb2NrKiB7CkBAIC0xMjIwLDEwICsxMjE2LDkg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYQogICAgIGlmIChVTkxJ
S0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKSk7
CiAKLSAgICBjb25zdGV4cHIgYXV0byB0cmFwc01hc2sgPSBWTVRyYXBzOjppbnRlcnJ1cHRpbmdU
cmFwcygpOwotICAgIGlmIChVTkxJS0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKHRyYXBzTWFzaykp
KSB7Ci0gICAgICAgIHZtLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1l
LCB0cmFwc01hc2spOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgIGlmIChVTkxJS0VMWSh2bS50cmFwcygpLm5lZWRI
YW5kbGluZyhWTVRyYXBzOjpOb25EZWJ1Z2dlckFzeW5jRXZlbnRzKSkpIHsKKyAgICAgICAgaWYg
KHZtLmhhc0V4Y2VwdGlvbnNBZnRlckhhbmRsaW5nVHJhcHMoKSkKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpOwogICAgIH0KIAogICAgIGlmIChzY29wZS0+c3RydWN0
dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDI3NTc1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MCwxMCArODAsMTAgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdQogCiAgICAgU3RhY2tTdGF0
czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7CiAKLSAgICBjb25zdGV4cHIgYXV0byB0cmFw
c01hc2sgPSBWTVRyYXBzOjppbnRlcnJ1cHRpbmdUcmFwcygpOwotICAgIGlmIChVTkxJS0VMWSh2
bS5uZWVkVHJhcEhhbmRsaW5nKHRyYXBzTWFzaykpKSB7Ci0gICAgICAgIHZtLmhhbmRsZVRyYXBz
KGNsb3N1cmUucHJvdG9DYWxsRnJhbWUtPmdsb2JhbE9iamVjdCwgY2xvc3VyZS5vbGRDYWxsRnJh
bWUsIHRyYXBzTWFzayk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
dGhyb3dTY29wZS5leGNlcHRpb24oKSk7CisgICAgaWYgKFVOTElLRUxZKHZtLnRyYXBzKCkubmVl
ZEhhbmRsaW5nKFZNVHJhcHM6Ok5vbkRlYnVnZ2VyQXN5bmNFdmVudHMpKSkgeworICAgICAgICBB
U1NFUlQodm0udG9wQ2FsbEZyYW1lID09IGNsb3N1cmUub2xkQ2FsbEZyYW1lKTsKKyAgICAgICAg
aWYgKHZtLmhhc0V4Y2VwdGlvbnNBZnRlckhhbmRsaW5nVHJhcHMoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpOwogICAgIH0KIAogICAgIC8vIFJlbG9hZCBDb2Rl
QmxvY2sgc2luY2UgR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIG93bmVkIGJ5IEV4ZWN1dGFibGUu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CShyZXZpc2lvbiAyNzU3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMSwxOSArOTMxLDE1IEBAIHZvaWQgSklU
OjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW8KIAogICAgIGFkZFB0cihUcnVzdGVkSW1t
MzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9yKGNvZGVCbG9jaygpKSAqIHNpemVvZihSZWdpc3Rlcikp
LCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgY2FsbE9w
ZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRj
aGFibGVBbmROb3RpZnlQcm9maWxlciwgVHJ1c3RlZEltbVB0cigmdm0oKSkpOwotICAgIEp1bXAg
aXNDYXRjaGFibGVFeGNlcHRpb24gPSBicmFuY2hUZXN0MzIoWmVybywgcmV0dXJuVmFsdWVHUFIp
OworICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblJldHJpZXZlQW5k
Q2xlYXJFeGNlcHRpb25JZkNhdGNoYWJsZSwgVHJ1c3RlZEltbVB0cigmdm0oKSkpOworICAgIEp1
bXAgaXNDYXRjaGFibGVFeGNlcHRpb24gPSBicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFs
dWVHUFIpOwogICAgIGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0oKSk7CiAgICAgaXNDYXRjaGFi
bGVFeGNlcHRpb24ubGluayh0aGlzKTsKIAotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtKSwg
cmVnVDMpOwotCiAgICAgLy8gTm93IHN0b3JlIHRoZSBleGNlcHRpb24gcmV0dXJuZWQgYnkgb3Bl
cmF0aW9uVGhyb3cuCi0gICAgbG9hZDMyKEFkZHJlc3MocmVnVDMsIFZNOjpleGNlcHRpb25PZmZz
ZXQoKSksIHJlZ1QyKTsKKyAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMik7CiAgICAgbW92
ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsKIAotICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QzLCBWTTo6ZXhjZXB0aW9uT2Zmc2V0KCkpKTsK
LQogICAgIGVtaXRTdG9yZShieXRlY29kZS5tX2V4Y2VwdGlvbiwgcmVnVDEsIHJlZ1QyKTsKIAog
ICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBFeGNlcHRpb246OnZhbHVlT2Zmc2V0KCkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI3NTc1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg0MiwxNCArODQyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IElu
c3RydWN0aW8KIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVyT2Zmc2V0Rm9y
KGNvZGVCbG9jaygpKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgY2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2so
b3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRjaGFibGVBbmROb3RpZnlQcm9maWxlciwg
VHJ1c3RlZEltbVB0cigmdm0oKSkpOwotICAgIEp1bXAgaXNDYXRjaGFibGVFeGNlcHRpb24gPSBi
cmFuY2hUZXN0MzIoWmVybywgcmV0dXJuVmFsdWVHUFIpOworICAgIGNhbGxPcGVyYXRpb25Ob0V4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblJldHJpZXZlQW5kQ2xlYXJFeGNlcHRpb25JZkNhdGNoYWJs
ZSwgVHJ1c3RlZEltbVB0cigmdm0oKSkpOworICAgIEp1bXAgaXNDYXRjaGFibGVFeGNlcHRpb24g
PSBicmFuY2hUZXN0MzIoTm9uWmVybywgcmV0dXJuVmFsdWVHUFIpOwogICAgIGp1bXBUb0V4Y2Vw
dGlvbkhhbmRsZXIodm0oKSk7CiAgICAgaXNDYXRjaGFibGVFeGNlcHRpb24ubGluayh0aGlzKTsK
IAotICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX3ZtKSwgcmVnVDMpOwotICAgIGxvYWQ2NChBZGRy
ZXNzKHJlZ1QzLCBWTTo6ZXhjZXB0aW9uT2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgc3RvcmU2NChU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCBBZGRyZXNzKHJlZ1QzLCBW
TTo6ZXhjZXB0aW9uT2Zmc2V0KCkpKTsKKyAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMCk7
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2V4Y2VwdGlvbik7CiAKICAg
ICBsb2FkNjQoQWRkcmVzcyhyZWdUMCwgRXhjZXB0aW9uOjp2YWx1ZU9mZnNldCgpKSwgcmVnVDAp
OwpAQCAtMTIxOCw3ICsxMjE2LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludChj
b25zdCBJbgogCiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190cmFwcyhjb25zdCBJbnN0cnVjdGlv
biopCiB7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoTm9uWmVybywgQWJzb2x1dGVBZGRy
ZXNzKG1fdm0tPm5lZWRUcmFwSGFuZGxpbmdBZGRyZXNzKCkpKSk7CisgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoVGVzdDMyKE5vblplcm8sIEFic29sdXRlQWRkcmVzcyhtX3ZtLT50cmFwcygpLnRyYXBC
aXRzQWRkcmVzcygpKSwgVHJ1c3RlZEltbTMyKFZNVHJhcHM6OkFzeW5jRXZlbnRzKSkpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9ub3AoY29uc3QgSW5zdHJ1Y3Rpb24qKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNzU3NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzY1LDggKzE3NjUsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSGFuZGxlCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgQVNT
RVJUKHZtLm5lZWRUcmFwSGFuZGxpbmcoKSk7Ci0gICAgdm0uaGFuZGxlVHJhcHMoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUpOworICAgIEFTU0VSVCh2bS50cmFwcygpLm5lZWRIYW5kbGluZyhWTVRy
YXBzOjpBc3luY0V2ZW50cykpOworICAgIHZtLnRyYXBzKCkuaGFuZGxlVHJhcHMoVk1UcmFwczo6
QXN5bmNFdmVudHMpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xODQxLDYgKzE4NDEs
MTUgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9wdGltaQogICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOwogICAgIH0KICAgICAKKyAgICBp
ZiAoVU5MSUtFTFkodm0udGVybWluYXRpb25JblByb2dyZXNzKCkpKSB7CisgICAgICAgIC8vIElm
IHRlcm1pbmF0aW9uIG9mIHRoZSBjdXJyZW50IHN0YWNrIG9mIGV4ZWN1dGlvbiBpcyBpbiBwcm9n
cmVzcywKKyAgICAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIGhvbGQgb2ZmIG9uIG9wdGltaXplZCBj
b21waWxlcyBzbyB0aGF0IHRlcm1pbmF0aW9uCisgICAgICAgIC8vIGNoZWNrcyB3aWxsIGJlIGNh
bGxlZCwgYW5kIHdlIGNhbiB1bndpbmQgb3V0IG9mIHRoZSBjdXJyZW50IHN0YWNrLgorICAgICAg
ICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgi
VGVybWluYXRpbmcgY3VycmVudCBleGVjdXRpb24iKSk7CisgICAgICAgIHVwZGF0ZUFsbFByZWRp
Y3Rpb25zQW5kT3B0aW1pemVBZnRlcldhcm1VcChjb2RlQmxvY2spOworICAgICAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOworICAgIH0KKwogICAgIERlYnVnZ2VyKiBk
ZWJ1Z2dlciA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CiAgICAgaWYg
KFVOTElLRUxZKGRlYnVnZ2VyICYmIChkZWJ1Z2dlci0+aXNTdGVwcGluZygpIHx8IGNvZGVCbG9j
ay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkpKSkgewogICAg
ICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIs
ICgiZGVidWdnZXIgaXMgc3RlcHBpbmcgb3IgaGFzIHJlcXVlc3RzIikpOwpAQCAtMzUxMSw3ICsz
NTIwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblByb2NlcwogICAgIHZt
LnNoYWRvd0NoaWNrZW4oKS0+dXBkYXRlKHZtLCBjYWxsRnJhbWUpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRjaGFibGVBbmRO
b3RpZnlQcm9maWxlciwgaW50MzJfdCwgKFZNKiB2bVBvaW50ZXIpKQorSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblJldHJpZXZlQW5kQ2xlYXJFeGNlcHRpb25JZkNhdGNoYWJsZSwg
SlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIpKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMzUx
OSwxMSArMzUyOCwxNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2hlY2tJ
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFJFTEVBU0Vf
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgaWYgKHZtLmlzVGVybWluYXRpb25F
eGNlcHRpb24oc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgRXhjZXB0aW9uKiBleGNlcHRpb24g
PSBzY29wZS5leGNlcHRpb24oKTsKKyAgICBpZiAodm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihl
eGNlcHRpb24pKSB7CiAgICAgICAgIGdlbmVyaWNVbndpbmQodm0sIGNhbGxGcmFtZSk7Ci0gICAg
ICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJu
IDA7CisKKyAgICAvLyBXZSB3YW50IHRvIGNsZWFyIHRoZSBleGNlcHRpb24gaGVyZSByYXRoZXIg
dGhhbiBpbiB0aGUgY2F0Y2ggcHJvbG9ndWUKKyAgICAvLyBKSVQgY29kZSBiZWNhdXNlIGNsZWFy
aW5nIGl0IGFsc28gZW50YWlscyBjbGVhcmluZyBhIGJpdCBpbiBhbiBBdG9taWMKKyAgICAvLyBi
aXQgZmllbGQgaW4gVk1UcmFwcy4KKyAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIHJl
dHVybiBleGNlcHRpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI3NTc1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjk1LDcgKzI5NSw3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT1NS
V3IKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eiwgdm9p
ZCwgKEpTR2xvYmFsT2JqZWN0KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25FeGNlcHRpb25GdXp6V2l0aENhbGxGcmFtZSwgdm9pZCwgKFZNKikpOwogCi1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNoZWNrSWZFeGNlcHRpb25Jc1VuY2F0Y2hhYmxlQW5k
Tm90aWZ5UHJvZmlsZXIsIGludDMyX3QsIChWTSopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUmV0cmlldmVBbmRDbGVhckV4Y2VwdGlvbklmQ2F0Y2hhYmxlLCBKU0NlbGwq
LCAoVk0qKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluc3RhbmNlT2ZD
dXN0b20sIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBKU09iamVjdCogY29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0
YW5jZSkpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlQWRkLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNzU3NTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDgxLDggKzIwODEsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
dGhyb3cpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaGFuZGxlX3RyYXBzKQogewog
ICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwotICAgIEFTU0VSVCh2bS5uZWVkVHJhcEhhbmRs
aW5nKCkpOwotICAgIHZtLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKKyAg
ICBBU1NFUlQodm0udHJhcHMoKS5uZWVkSGFuZGxpbmcoVk1UcmFwczo6QXN5bmNFdmVudHMpKTsK
KyAgICB2bS50cmFwcygpLmhhbmRsZVRyYXBzKFZNVHJhcHM6OkFzeW5jRXZlbnRzKTsKICAgICBV
TlVTRURfUEFSQU0ocGMpOwogICAgIExMSU5UX1JFVFVSTl9UV08odGhyb3dTY29wZS5leGNlcHRp
b24oKSwgZ2xvYmFsT2JqZWN0KTsKIH0KQEAgLTIxODIsMTUgKzIxODIsMjEgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogICAgIExMSU5UX0VORCgpOwogfQogCi1M
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0
Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcmV0cmlldmVfYW5kX2NsZWFyX2V4Y2VwdGlvbl9pZl9jYXRjaGFibGUpCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKICAgICBVTlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKICAgICBSRUxFQVNF
X0FTU0VSVCghIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgaWYgKHZtLmlzVGVybWlu
YXRpb25FeGNlcHRpb24odGhyb3dTY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgIExMSU5UX1JF
VFVSTl9UV08ocGMsIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pigx
KSkpOwotICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIG51bGxwdHIpOworICAgIEV4Y2VwdGlvbiog
ZXhjZXB0aW9uID0gdGhyb3dTY29wZS5leGNlcHRpb24oKTsKKyAgICBpZiAodm0uaXNUZXJtaW5h
dGlvbkV4Y2VwdGlvbihleGNlcHRpb24pKQorICAgICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBu
dWxscHRyKTsKKworICAgIC8vIFdlIHdhbnQgdG8gY2xlYXIgdGhlIGV4Y2VwdGlvbiBoZXJlIHJh
dGhlciB0aGFuIGluIHRoZSBjYXRjaCBwcm9sb2d1ZQorICAgIC8vIEpJVCBjb2RlIGJlY2F1c2Ug
Y2xlYXJpbmcgaXQgYWxzbyBlbnRhaWxzIGNsZWFyaW5nIGEgYml0IGluIGFuIEF0b21pYworICAg
IC8vIGJpdCBmaWVsZCBpbiBWTVRyYXBzLgorICAgIHRocm93U2NvcGUuY2xlYXJFeGNlcHRpb24o
KTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGNlcHRpb24pOwogfQogCiBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9u
IDI3NTc1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTM3LDcgKzEzNyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZGUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfaGFuZGxlX2V4Y2VwdGlvbik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9mcm9tX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X3RvX3Njb3BlKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Y2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpOwor
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXRyaWV2ZV9hbmRfY2xlYXJf
ZXhjZXB0aW9uX2lmX2NhdGNoYWJsZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3Byb2ZpbGVfY2F0Y2gpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQkocmV2aXNpb24gMjc1NzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMjE1LDE2ICsyMjE1LDEy
IEBAIGNvbW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybygpIGVuZCwgbWEKICAgICBsb2FkcCBW
TTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKICAgICBzdWJwIFBCLCBQQwog
Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lz
X3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpCi0gICAgYnBlcSByMSwgMCwgLmlzQ2F0
Y2hhYmxlRXhjZXB0aW9uCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmV0cmll
dmVfYW5kX2NsZWFyX2V4Y2VwdGlvbl9pZl9jYXRjaGFibGUpCisgICAgYnBuZXEgcjEsIDAsIC5p
c0NhdGNoYWJsZUV4Y2VwdGlvbgogICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhf
dHJhbXBvbGluZQogCiAuaXNDYXRjaGFibGVFeGNlcHRpb246Ci0gICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QzXSwgdDMKLQotICAgIGxvYWRw
IFZNOjptX2V4Y2VwdGlvblt0M10sIHQwCi0gICAgc3RvcmVwIDAsIFZNOjptX2V4Y2VwdGlvblt0
M10KKyAgICBtb3ZlIHIxLCB0MAogICAgIGdldChzaXplLCBPcENhdGNoLCBtX2V4Y2VwdGlvbiwg
dDIpCiAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgc3RvcmVp
IENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9u
IDI3NTc1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjM2NiwxNiArMjM2NiwxMiBAQCBjb21tb25PcChsbGludF9v
cF9jYXRjaCwgbWFjcm8gKCkgZW5kLCBtCiAgICAgbG9hZHAgVk06OnRhcmdldEludGVycHJldGVy
UENGb3JUaHJvd1t0M10sIFBDCiAgICAgc3VicCBQQiwgUEMKIAotICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90
aWZ5X3Byb2ZpbGVyKQotICAgIGJwZXEgcjEsIDAsIC5pc0NhdGNoYWJsZUV4Y2VwdGlvbgorICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3JldHJpZXZlX2FuZF9jbGVhcl9leGNlcHRp
b25faWZfY2F0Y2hhYmxlKQorICAgIGJwbmVxIHIxLCAwLCAuaXNDYXRjaGFibGVFeGNlcHRpb24K
ICAgICBqbXAgX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUKIAogLmlzQ2F0
Y2hhYmxlRXhjZXB0aW9uOgotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MwotICAgIGxvYWRw
IENvZGVCbG9jazo6bV92bVt0M10sIHQzCi0KLSAgICBsb2FkcCBWTTo6bV9leGNlcHRpb25bdDNd
LCB0MAotICAgIHN0b3JlcCAwLCBWTTo6bV9leGNlcHRpb25bdDNdCisgICAgbW92ZSByMSwgdDAK
ICAgICBnZXQoc2l6ZSwgT3BDYXRjaCwgbV9leGNlcHRpb24sIHQyKQogICAgIHN0b3JlcSB0MCwg
W2NmciwgdDIsIDhdCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI3NTc1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
NSw2ICsyNjUsOCBAQCBjb25zdCBZYXJyRW50cnlQdHJUYWcgPSBjb25zdGV4cHIgWWFyckVuCiBj
b25zdCBDU1NTZWxlY3RvclB0clRhZyA9IGNvbnN0ZXhwciBDU1NTZWxlY3RvclB0clRhZwogY29u
c3QgTm9QdHJUYWcgPSBjb25zdGV4cHIgTm9QdHJUYWcKICAKKyMgVk1UcmFwcyBkYXRhCitjb25z
dCBWTVRyYXBzQXN5bmNFdmVudHMgPSBjb25zdGV4cHIgVk1UcmFwczo6QXN5bmNFdmVudHMKIAog
IyBTb21lIHJlZ2lzdGVyIGNvbnZlbnRpb25zLgogIyAtIFdlIHVzZSBhIHBhaXIgb2YgcmVnaXN0
ZXJzIHRvIHJlcHJlc2VudCB0aGUgUEM6IG9uZSByZWdpc3RlciBmb3IgdGhlCkBAIC0yMTkzLDcg
KzIxOTUsOCBAQCBlbmQpCiBsbGludE9wKG9wX2NoZWNrX3RyYXBzLCBPcENoZWNrVHJhcHMsIG1h
Y3JvICh1bnVzZWQsIHVudXNlZCwgZGlzcGF0Y2gpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QxXSwgdDEKLSAgICBsb2FkYiBWTTo6bV90
cmFwcytWTVRyYXBzOjptX25lZWRUcmFwSGFuZGxpbmdbdDFdLCB0MAorICAgIGxvYWRpIFZNOjpt
X3RyYXBzK1ZNVHJhcHM6Om1fdHJhcEJpdHNbdDFdLCB0MAorICAgIGFuZGkgVk1UcmFwc0FzeW5j
RXZlbnRzLCB0MAogICAgIGJ0cG56IHQwLCAuaGFuZGxlVHJhcHMKIC5hZnRlckhhbmRsaW5nVHJh
cHM6CiAgICAgZGlzcGF0Y2goKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5jcHAJKHJldmlzaW9uIDI3NTc1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw5IEBAIHZvaWQg
TWFya2VkQXJndW1lbnRCdWZmZXI6OmV4cGFuZENhcGFjaXQKICAgICBhdXRvIGNoZWNrZWRTaXpl
ID0gQ2hlY2tlZFNpemUobmV3Q2FwYWNpdHkpICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoY2hlY2tlZFNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKICAgICAgICAgcmV0
dXJuIHRoaXMtPm92ZXJmbG93ZWQoKTsKLSAgICBFbmNvZGVkSlNWYWx1ZSogbmV3QnVmZmVyID0g
c3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihHaWdhY2FnZTo6bWFsbG9jKEdpZ2FjYWdlOjpK
U1ZhbHVlLCBjaGVja2VkU2l6ZS51bnNhZmVHZXQoKSkpOworICAgIEVuY29kZWRKU1ZhbHVlKiBu
ZXdCdWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KEdpZ2FjYWdlOjp0cnlNYWxs
b2MoR2lnYWNhZ2U6OkpTVmFsdWUsIGNoZWNrZWRTaXplLnVuc2FmZUdldCgpKSk7CisgICAgaWYg
KCFuZXdCdWZmZXIpCisgICAgICAgIHJldHVybiB0aGlzLT5vdmVyZmxvd2VkKCk7CiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkgewogICAgICAgICBuZXdCdWZmZXJbaV0gPSBt
X2J1ZmZlcltpXTsKICAgICAgICAgYWRkTWFya1NldChKU1ZhbHVlOjpkZWNvZGUobV9idWZmZXJb
aV0pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVyVGVybWluYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlclRl
cm1pbmF0aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGVmZXJUZXJtaW5hdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9Gb3JiaWRIZWFwQWxsb2NhdGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgRGVmZXJUZXJtaW5hdGlvbiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVmZXJUZXJt
aW5hdGlvbik7CisgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT047CitwdWJsaWM6CisgICAg
RGVmZXJUZXJtaW5hdGlvbihWTSYgdm0pCisgICAgICAgIDogbV92bSh2bSkKKyAgICB7CisgICAg
ICAgIG1fdm0udHJhcHMoKS5kZWZlclRlcm1pbmF0aW9uKCk7CisgICAgfQorICAgIAorICAgIH5E
ZWZlclRlcm1pbmF0aW9uKCkKKyAgICB7CisgICAgICAgIG1fdm0udHJhcHMoKS51bmRvRGVmZXJU
ZXJtaW5hdGlvbigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWTSYgbV92bTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25TY29wZS5oCShyZXZpc2lvbiAyNzU3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25TY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBFeGNlcHRpb25TY29wZSB7CiBwdWJsaWM6CiAgICAgVk0mIHZtKCkgY29u
c3QgeyByZXR1cm4gbV92bTsgfQogICAgIHVuc2lnbmVkIHJlY3Vyc2lvbkRlcHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWN1cnNpb25EZXB0aDsgfQotICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkg
eyByZXR1cm4gbV92bS5leGNlcHRpb24oKTsgfQorICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV92bS5leGNlcHRpb24oKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGFzc2VydE5vRXhjZXB0aW9uKCkgeyBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWV4
Y2VwdGlvbigpLCAiJXMiLCB1bmV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSgpLmRhdGEoKSk7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCkgeyBSRUxF
QVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWV4Y2VwdGlvbigpLCAiJXMiLCB1bmV4cGVjdGVkRXhj
ZXB0aW9uTWVzc2FnZSgpLmRhdGEoKSk7IH0KQEAgLTg0LDcgKzg0LDcgQEAgcHJvdGVjdGVkOgog
Y2xhc3MgRXhjZXB0aW9uU2NvcGUgewogcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgVk0mIHZt
KCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQotICAgIEFMV0FZU19JTkxJTkUgRXhjZXB0aW9uKiBl
eGNlcHRpb24oKSB7IHJldHVybiBtX3ZtLmV4Y2VwdGlvbigpOyB9CisgICAgQUxXQVlTX0lOTElO
RSBFeGNlcHRpb24qIGV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdm0uZXhjZXB0aW9uKCk7
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnROb0V4Y2VwdGlvbigpIHsgQVNTRVJU
KCFleGNlcHRpb24oKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVsZWFzZUFzc2VydE5v
RXhjZXB0aW9uKCkgeyBSRUxFQVNFX0FTU0VSVCghZXhjZXB0aW9uKCkpOyB9CkBAIC0xMDQsOCAr
MTA0LDEyIEBAIHByb3RlY3RlZDoKICNlbmRpZiAvLyBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZF
UklGSUNBVElPTikKIAogI2RlZmluZSBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlX18sIHZhbHVl
X18pIGRvIHsgXAotICAgICAgICBpZiAoVU5MSUtFTFkoKHNjb3BlX18pLmV4Y2VwdGlvbigpKSkg
XAotICAgICAgICAgICAgcmV0dXJuIHZhbHVlX187IFwKKyAgICAgICAgSlNDOjpWTSYgdm0gPSAo
c2NvcGVfXykudm0oKTsgXAorICAgICAgICBBU1NFUlQoISEoc2NvcGVfXykuZXhjZXB0aW9uKCkg
PT0gdm0udHJhcHMoKS5uZWVkSGFuZGxpbmcoSlNDOjpWTVRyYXBzOjpOZWVkRXhjZXB0aW9uSGFu
ZGxpbmcpKTsgXAorICAgICAgICBpZiAoVU5MSUtFTFkodm0udHJhcHMoKS5uZWVkSGFuZGxpbmco
SlNDOjpWTVRyYXBzOjpOb25EZWJ1Z2dlckV2ZW50cykpKSB7IFwKKyAgICAgICAgICAgIGlmICh2
bS5oYXNFeGNlcHRpb25zQWZ0ZXJIYW5kbGluZ1RyYXBzKCkpIFwKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVfXzsgXAorICAgICAgICB9IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2Rl
ZmluZSBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGVfXywgZXhwcmVzc2lvbl9fKSBkbyB7IFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDI3NTc1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogI2luY2x1
ZGUgIkRhdGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRl
YnVnZ2VyU2NvcGUuaCIKKyNpbmNsdWRlICJEZWZlclRlcm1pbmF0aW9uLmgiCiAjaW5jbHVkZSAi
RGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIkVycm9yUHJvdG90eXBlLmgiCkBAIC0xMTA5LDEwICsxMTEwLDEwIEBAIGNhcGl0YWxOYW1l
ICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxp
emVyPEludGxDb2xsYXRvcj4mIGluaXQpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKICAgICAg
ICAgICAgIFZNJiB2bSA9IGluaXQudm07Ci0gICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgICAgICAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENv
bGxhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7CiAg
ICAgICAgICAgICBjb2xsYXRvci0+aW5pdGlhbGl6ZUNvbGxhdG9yKGdsb2JhbE9iamVjdCwganNV
bmRlZmluZWQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICBzY29wZS5yZWxlYXNlQXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgICAgICAgICBpbml0LnNldChjb2xsYXRvcik7CiAgICAgICAgIH0pOwog
CkBAIC0yNDAzLDYgKzI0MDQsNyBAQCBKU0dsb2JhbE9iamVjdCogSlNHbG9iYWxPYmplY3Q6OmNy
ZWF0ZShWCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
KyAgICBEZWZlclRlcm1pbmF0aW9uIGRlZmVyVGVybWluYXRpb24odm0pOwogICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICBzdHJ1Y3R1cmUodm0pLT5zZXRHbG9iYWxPYmplY3Qodm0s
IHRoaXMpOwogICAgIG1fcnVudGltZUZsYWdzID0gbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZS0+
amF2YVNjcmlwdFJ1bnRpbWVGbGFncyh0aGlzKTsKQEAgLTI0MTMsNiArMjQxNSw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiAKIAogdm9pZCBKU0dsb2JhbE9iamVj
dDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogdGhpc1ZhbHVlKQogeworICAgIERl
ZmVyVGVybWluYXRpb24gZGVmZXJUZXJtaW5hdGlvbih2bSk7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIHN0cnVjdHVyZSh2bSktPnNldEdsb2JhbE9iamVjdCh2bSwgdGhpcyk7
CiAgICAgbV9ydW50aW1lRmxhZ3MgPSBtX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlLT5qYXZhU2Ny
aXB0UnVudGltZUZsYWdzKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGF6eVByb3BlcnR5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xhenlQcm9wZXJ0eUlubGluZXMuaAkocmV2aXNpb24gMjc1NzUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGF6eVByb3BlcnR5SW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Nyw4ICs5NywxNCBAQCBFbGVtZW50VHlwZSogTGF6eVByb3BlcnR5PE93
bmVyVHlwZSwgRWxlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGluaXRpYWxpemVyLnBy
b3BlcnR5Lm1fcG9pbnRlciB8PSBpbml0aWFsaXppbmdUYWc7CiAgICAgY2FsbFN0YXRlbGVzc0xh
bWJkYTx2b2lkLCBGdW5jPihpbml0aWFsaXplcik7CisgICAgaWYgKFVOTElLRUxZKGluaXRpYWxp
emVyLnByb3BlcnR5Lm1fcG9pbnRlciAmIGluaXRpYWxpemluZ1RhZykpIHsKKyAgICAgICAgVk0m
IHZtID0gaW5pdGlhbGl6ZXIudm07CisgICAgICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uID0gdm0u
ZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChleGNlcHRp
b24gJiYgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihleGNlcHRpb24pKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaW5pdGlhbGl6ZXIucHJvcGVydHkubV9wb2ludGVyICYgbGF6eVRhZyk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVCghKGluaXRp
YWxpemVyLnByb3BlcnR5Lm1fcG9pbnRlciAmIGxhenlUYWcpKTsKLSAgICBSRUxFQVNFX0FTU0VS
VCghKGluaXRpYWxpemVyLnByb3BlcnR5Lm1fcG9pbnRlciAmIGluaXRpYWxpemluZ1RhZykpOwog
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8RWxlbWVudFR5cGUqPihpbml0aWFsaXplci5wcm9wZXJ0
eS5tX3BvaW50ZXIpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3NTc1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9y
Y2ggTW9iaWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEpvcmRhbiBIYXJiYW5kIChs
amhhcmJAZ21haWwuY29tKQogICoKQEAgLTE1MzksOCArMTUzOSw4IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmMKICAgICBlbHNlIHsKICAgICAgICAgY29sbGF0b3Ig
PSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5jb2xsYXRvclN0cnVjdHVy
ZSgpKTsKICAgICAgICAgY29sbGF0b3ItPmluaXRpYWxpemVDb2xsYXRvcihnbG9iYWxPYmplY3Qs
IGxvY2FsZXMsIG9wdGlvbnMpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJpbmdzKGdsb2JhbE9iamVjdCwgc3RyaW5nLCB0
aGF0KSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZp
c2lvbiAyNzU3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05NTgsMTMgKzk1OCw0NCBAQCB2b2lkIFZNOjpjbGVhclNvdXJjZVBy
b3ZpZGVyQ2FjaGVzKCkKICAgICBzb3VyY2VQcm92aWRlckNhY2hlTWFwLmNsZWFyKCk7CiB9CiAK
K2Jvb2wgVk06Omhhc0V4Y2VwdGlvbnNBZnRlckhhbmRsaW5nVHJhcHMoKQoreworICAgIGlmIChV
TkxJS0VMWSh0cmFwcygpLm5lZWRIYW5kbGluZyhWTVRyYXBzOjpOb25EZWJ1Z2dlckFzeW5jRXZl
bnRzKSkpCisgICAgICAgIG1fdHJhcHMuaGFuZGxlVHJhcHMoVk1UcmFwczo6Tm9uRGVidWdnZXJB
c3luY0V2ZW50cyk7CisgICAgcmV0dXJuIGV4Y2VwdGlvbigpOworfQorCit2b2lkIFZNOjpjbGVh
ckV4Y2VwdGlvbigpCit7CisjaWYgRU5BQkxFKEVYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04p
CisgICAgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKyAgICBtX25hdGl2ZVN0YWNrVHJh
Y2VPZkxhc3RUaHJvdyA9IG51bGxwdHI7CisgICAgbV90aHJvd2luZ1RocmVhZCA9IG51bGxwdHI7
CisjZW5kaWYKKyAgICBtX2V4Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgdHJhcHMoKS5jbGVhclRy
YXBCaXQoVk1UcmFwczo6TmVlZEV4Y2VwdGlvbkhhbmRsaW5nKTsKK30KKwordm9pZCBWTTo6c2V0
RXhjZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIG1fZXhjZXB0aW9uID0gZXhj
ZXB0aW9uOworICAgIG1fbGFzdEV4Y2VwdGlvbiA9IGV4Y2VwdGlvbjsKKyAgICBpZiAoZXhjZXB0
aW9uKQorICAgICAgICB0cmFwcygpLnNldFRyYXBCaXQoVk1UcmFwczo6TmVlZEV4Y2VwdGlvbkhh
bmRsaW5nKTsKK30KKwogdm9pZCBWTTo6dGhyb3dUZXJtaW5hdGlvbkV4Y2VwdGlvbigpCiB7Cisg
ICAgQVNTRVJUKCFtX3RyYXBzLmlzRGVmZXJyaW5nVGVybWluYXRpb24oKSk7CiAgICAgc2V0RXhj
ZXB0aW9uKHRlcm1pbmF0aW9uRXhjZXB0aW9uKCkpOwogfQogCiBFeGNlcHRpb24qIFZNOjp0aHJv
d0V4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24qIGV4Y2Vw
dGlvblRvVGhyb3cpCiB7CisgICAgLy8gVGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIHNob3VsZCBu
ZXZlciBiZSBvdmVycmlkZGVuLgorICAgIGlmIChtX2V4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0aW9u
RXhjZXB0aW9uKG1fZXhjZXB0aW9uKSkKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uOworCiAg
ICAgLy8gVGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGlzIG5vdCBsaWtlIG9yZGluYXJ5IGV4Y2Vw
dGlvbnMgdGhhdCBzaG91bGQgYmUKICAgICAvLyByZXBvcnRlZCB0byB0aGUgZGVidWdnZXIuIFRo
ZSBmYWN0IHRoYXQgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uIHVzZXMgdGhlCiAgICAgLy8gZXhj
ZXB0aW9uIGhhbmRsaW5nIG1lY2hhbmlzbSBpcyBqdXN0IGEgVk0gaW50ZXJuYWwgaW1wbGVtZW50
YXRpb24gZGV0YWlsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lv
biAyNzU3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzgsNiArMzM4LDkgQEAgcHVibGljOgogICAgIFdlYWtSYW5kb20mIHJhbmRv
bSgpIHsgcmV0dXJuIG1fcmFuZG9tOyB9CiAgICAgSW50ZWdyaXR5OjpSYW5kb20mIGludGVncml0
eVJhbmRvbSgpIHsgcmV0dXJuIG1faW50ZWdyaXR5UmFuZG9tOyB9CiAKKyAgICBib29sIHRlcm1p
bmF0aW9uSW5Qcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fdGVybWluYXRpb25JblByb2dyZXNz
OyB9CisgICAgdm9pZCBzZXRUZXJtaW5hdGlvbkluUHJvZ3Jlc3MoYm9vbCB2YWx1ZSkgeyBtX3Rl
cm1pbmF0aW9uSW5Qcm9ncmVzcyA9IHZhbHVlOyB9CisKICAgICBKU19FWFBPUlRfUFJJVkFURSBF
eGNlcHRpb24qIGVuc3VyZVRlcm1pbmF0aW9uRXhjZXB0aW9uKCk7CiAgICAgRXhjZXB0aW9uKiB0
ZXJtaW5hdGlvbkV4Y2VwdGlvbigpIGNvbnN0CiAgICAgewpAQCAtMTA4NSwxNiArMTA4OCwxNiBA
QCBwdWJsaWM6CiAKICAgICBWTVRyYXBzJiB0cmFwcygpIHsgcmV0dXJuIG1fdHJhcHM7IH0KIAot
ICAgIHZvaWQgaGFuZGxlVHJhcHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIFZNVHJhcHM6Ok1hc2sgbWFzayA9IFZNVHJhcHM6Ok1hc2s6OmFsbEV2
ZW50VHlwZXMoKSkgeyBtX3RyYXBzLmhhbmRsZVRyYXBzKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LCBtYXNrKTsgfQotCi0gICAgYm9vbCBuZWVkVHJhcEhhbmRsaW5nKCkgeyByZXR1cm4gbV90cmFw
cy5uZWVkVHJhcEhhbmRsaW5nKCk7IH0KLSAgICBib29sIG5lZWRUcmFwSGFuZGxpbmcoVk1UcmFw
czo6TWFzayBtYXNrKSB7IHJldHVybiBtX3RyYXBzLm5lZWRUcmFwSGFuZGxpbmcobWFzayk7IH0K
LSAgICB2b2lkKiBuZWVkVHJhcEhhbmRsaW5nQWRkcmVzcygpIHsgcmV0dXJuIG1fdHJhcHMubmVl
ZFRyYXBIYW5kbGluZ0FkZHJlc3MoKTsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFz
RXhjZXB0aW9uc0FmdGVySGFuZGxpbmdUcmFwcygpOwogCiAgICAgLy8gVGhlc2UgbWF5IGJlIGNh
bGxlZCBjb25jdXJyZW50bHkgZnJvbSBhbm90aGVyIHRocmVhZC4KICAgICB2b2lkIG5vdGlmeU5l
ZWREZWJ1Z2dlckJyZWFrKCkgeyBtX3RyYXBzLmZpcmVUcmFwKFZNVHJhcHM6Ok5lZWREZWJ1Z2dl
ckJyZWFrKTsgfQogICAgIHZvaWQgbm90aWZ5TmVlZFNoZWxsVGltZW91dENoZWNrKCkgeyBtX3Ry
YXBzLmZpcmVUcmFwKFZNVHJhcHM6Ok5lZWRTaGVsbFRpbWVvdXRDaGVjayk7IH0KLSAgICB2b2lk
IG5vdGlmeU5lZWRUZXJtaW5hdGlvbigpIHsgbV90cmFwcy5maXJlVHJhcChWTVRyYXBzOjpOZWVk
VGVybWluYXRpb24pOyB9CisgICAgdm9pZCBub3RpZnlOZWVkVGVybWluYXRpb24oKQorICAgIHsK
KyAgICAgICAgc2V0VGVybWluYXRpb25JblByb2dyZXNzKHRydWUpOworICAgICAgICBtX3RyYXBz
LmZpcmVUcmFwKFZNVHJhcHM6Ok5lZWRUZXJtaW5hdGlvbik7CisgICAgfQogICAgIHZvaWQgbm90
aWZ5TmVlZFdhdGNoZG9nQ2hlY2soKSB7IG1fdHJhcHMuZmlyZVRyYXAoVk1UcmFwczo6TmVlZFdh
dGNoZG9nQ2hlY2spOyB9CiAKICAgICB2b2lkIHByb21pc2VSZWplY3RlZChKU1Byb21pc2UqKTsK
QEAgLTExMTIsMTIgKzExMTUsMjQgQEAgcHVibGljOgogICAgIGNsYXNzIERlZmVyRXhjZXB0aW9u
U2NvcGUgewogICAgIHB1YmxpYzoKICAgICAgICAgRGVmZXJFeGNlcHRpb25TY29wZShWTSYgdm0p
Ci0gICAgICAgICAgICA6IG1fc2F2ZWRFeGNlcHRpb24odm0ubV9leGNlcHRpb24sIG51bGxwdHIp
CisgICAgICAgICAgICA6IG1fdm0odm0pCisgICAgICAgICAgICAsIG1fZXhjZXB0aW9uV2FzU2V0
KHZtLm1fZXhjZXB0aW9uKQorICAgICAgICAgICAgLCBtX3NhdmVkRXhjZXB0aW9uKHZtLm1fZXhj
ZXB0aW9uLCBudWxscHRyKQogICAgICAgICAgICAgLCBtX3NhdmVkTGFzdEV4Y2VwdGlvbih2bS5t
X2xhc3RFeGNlcHRpb24sIG51bGxwdHIpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2V4
Y2VwdGlvbldhc1NldCkKKyAgICAgICAgICAgICAgICBtX3ZtLnRyYXBzKCkuY2xlYXJUcmFwQml0
KFZNVHJhcHM6Ok5lZWRFeGNlcHRpb25IYW5kbGluZyk7CisgICAgICAgIH0KKworICAgICAgICB+
RGVmZXJFeGNlcHRpb25TY29wZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2V4Y2Vw
dGlvbldhc1NldCkKKyAgICAgICAgICAgICAgICBtX3ZtLnRyYXBzKCkuc2V0VHJhcEJpdChWTVRy
YXBzOjpOZWVkRXhjZXB0aW9uSGFuZGxpbmcpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBWTSYgbV92bTsKKyAgICAgICAgYm9vbCBtX2V4Y2VwdGlvbldhc1NldDsKICAgICAg
ICAgU2V0Rm9yU2NvcGU8RXhjZXB0aW9uKj4gbV9zYXZlZEV4Y2VwdGlvbjsKICAgICAgICAgU2V0
Rm9yU2NvcGU8RXhjZXB0aW9uKj4gbV9zYXZlZExhc3RFeGNlcHRpb247CiAgICAgfTsKQEAgLTEx
NDUsMTEgKzExNjAsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gY3VyciA+PSBzdGFja0xp
bWl0OwogICAgIH0KIAotICAgIHZvaWQgc2V0RXhjZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9u
KQotICAgIHsKLSAgICAgICAgbV9leGNlcHRpb24gPSBleGNlcHRpb247Ci0gICAgICAgIG1fbGFz
dEV4Y2VwdGlvbiA9IGV4Y2VwdGlvbjsKLSAgICB9CiAgICAgRXhjZXB0aW9uKiBleGNlcHRpb24o
KSBjb25zdAogICAgIHsKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikK
QEAgLTExNTcsMTUgKzExNjcsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIHJldHVybiBt
X2V4Y2VwdGlvbjsKICAgICB9Ci0gICAgdm9pZCBjbGVhckV4Y2VwdGlvbigpCi0gICAgewotI2lm
IEVOQUJMRShFWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OKQotICAgICAgICBtX25lZWRFeGNl
cHRpb25DaGVjayA9IGZhbHNlOwotICAgICAgICBtX25hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJv
dyA9IG51bGxwdHI7Ci0gICAgICAgIG1fdGhyb3dpbmdUaHJlYWQgPSBudWxscHRyOwotI2VuZGlm
Ci0gICAgICAgIG1fZXhjZXB0aW9uID0gbnVsbHB0cjsKLSAgICB9CisKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGNsZWFyRXhjZXB0aW9uKCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzZXRFeGNlcHRpb24oRXhjZXB0aW9uKik7CiAKICNpZiBFTkFCTEUoQ19MT09QKQogICAgIGJv
b2wgZW5zdXJlU3RhY2tDYXBhY2l0eUZvckNMb29wKFJlZ2lzdGVyKiBuZXdUb3BPZlN0YWNrKTsK
QEAgLTEyNTQsNiArMTI1OCw4IEBAIHByaXZhdGU6CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKFZN
Jik+IG1fb25FYWNoTWljcm90YXNrVGljazsKICAgICB1aW50cHRyX3QgbV9jdXJyZW50V2Vha1Jl
ZlZlcnNpb24geyAwIH07CiAKKyAgICBib29sIG1fdGVybWluYXRpb25JblByb2dyZXNzIHsgZmFs
c2UgfTsKKwogICAgIExvY2sgbV9sb29wSGludEV4ZWN1dGlvbkNvdW50TG9jazsKICAgICBIYXNo
TWFwPGNvbnN0IEluc3RydWN0aW9uKiwgc3RkOjpwYWlyPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9w
dHI8dWludDY0X3Q+Pj4gbV9sb29wSGludEV4ZWN1dGlvbkNvdW50czsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCShyZXZpc2lvbiAy
NzU3NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTAwLDYgKzEwMCwxOSBAQCBWTUVudHJ5U2NvcGU6On5WTUVu
dHJ5U2NvcGUoKQogICAgIGZvciAoYXV0byYgbGlzdGVuZXIgOiBtX2RpZFBvcExpc3RlbmVycykK
ICAgICAgICAgbGlzdGVuZXIoKTsKIAorICAgIC8vIElmIHRoZSB0cmFwIGJpdCBpcyBzdGlsbCBz
ZXQgYXQgdGhpcyBwb2ludCwgdGhlbiBpdCBtZWFucyB0aGF0IFZNVHJhcHM6OmhhbmRsZVRyYXBz
KCkKKyAgICAvLyBoYXMgbm90IHlldCBiZWVuIGNhbGxlZCBmb3IgdGhpcyB0ZXJtaW5hdGlvbiBy
ZXF1ZXN0LiBBcyBhIHJlc3VsdCwgd2UndmUgbm90IHRocm93biBhCisgICAgLy8gVGVybWluYXRp
b25FeGNlcHRpb24geWV0LiBTb21lIGNsaWVudCBjb2RlIHJlbGllcyBvbiBkZXRlY3RpbmcgdGhl
IHByZXNlbmNlIG9mIHRoZQorICAgIC8vIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGluIG9yZGVyIHRv
IHNpZ25hbCB0aGF0IGEgdGVybWluYXRpb24gd2FzIHJlcXVlc3RlZC4gQXMgYSByZXN1bHQsCisg
ICAgLy8gd2Ugd2FudCB0byBzdGF5IGluIHRoZSBUZXJtaW5hdGlvbkluUHJvZ3Jlc3Mgc3RhdGUg
dW50aWwgVk1UcmFwczo6aGFuZGxlVHJhcHMoKSAod2hpY2gKKyAgICAvLyBjbGVhcnMgdGhlIHRy
YXAgYml0KSBnZXRzIGNhbGxlZCwgYW5kIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBnZXRzIHRo
cm93bi4KKyAgICAvLworICAgIC8vIE5vdGU6IHBlcmhhcHMgdGhlcmUncyBhIGJldHRlciB3YXkg
Zm9yIHRoZSBjbGllbnQgdG8ga25vdyB0aGF0IGEgdGVybWluYXRpb24gd2FzCisgICAgLy8gcmVx
dWVzdGVkIChhZnRlciBhbGwsIHRoZSByZXF1ZXN0IGNhbWUgZnJvbSB0aGUgY2xpZW50KS4gSG93
ZXZlciwgdGhpcyBpcyBob3cgdGhlCisgICAgLy8gY2xpZW50IGNvZGUgY3VycmVudGx5IHdvcmtz
LiBDaGFuZ2luZyB0aGF0IHdpbGwgdGFrZSBzb21lIHNpZ25pZmljYW50IGVmZm9ydCB0byBodW50
CisgICAgLy8gZG93biBhbGwgdGhlIHBsYWNlcyBpbiBjbGllbnQgY29kZSB0aGF0IGN1cnJlbnRs
eSByZWx5IG9uIHRoaXMgYmVoYXZpb3IuCisgICAgaWYgKCFtX3ZtLnRyYXBzKCkubmVlZEhhbmRs
aW5nKFZNVHJhcHM6Ok5lZWRUZXJtaW5hdGlvbikpCisgICAgICAgIG1fdm0uc2V0VGVybWluYXRp
b25JblByb2dyZXNzKGZhbHNlKTsKICAgICBtX3ZtLmNsZWFyU2NyYXRjaEJ1ZmZlcnMoKTsKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAJKHJldmlz
aW9uIDI3NTc1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBWTVRyYXBzOjp0cnlJbnN0
YWxsVHJhcEJyZWFrcG9pbnRzKAogICAgICAgICBpZiAoIWxvY2tlcikKICAgICAgICAgICAgIHJl
dHVybjsgLy8gTGV0IHRoZSBTaWduYWxTZW5kZXIgdHJ5IGFnYWluIGxhdGVyLgogCi0gICAgICAg
IGlmICghbmVlZFRyYXBIYW5kbGluZygpKSB7CisgICAgICAgIGlmICghbmVlZEhhbmRsaW5nKFZN
VHJhcHM6OkFzeW5jRXZlbnRzKSkgewogICAgICAgICAgICAgLy8gVG9vIGxhdGUuIFNvbWVvbmUg
ZWxzZSBhbHJlYWR5IGhhbmRsZWQgdGhlIHRyYXAuCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAodHJhcHMoKS5t
X2lzU2h1dHRpbmdEb3duKQogICAgICAgICAgICAgcmV0dXJuIFBvbGxSZXN1bHQ6OlN0b3A7CiAK
LSAgICAgICAgaWYgKCF0cmFwcygpLm5lZWRUcmFwSGFuZGxpbmcoKSkKKyAgICAgICAgaWYgKCF0
cmFwcygpLm5lZWRIYW5kbGluZyhWTVRyYXBzOjpBc3luY0V2ZW50cykpCiAgICAgICAgICAgICBy
ZXR1cm4gUG9sbFJlc3VsdDo6V2FpdDsKIAogICAgICAgICAvLyBXZSBrbm93IHRoYXQgbm8gdHJh
cCBjb3VsZCBoYXZlIGJlZW4gcHJvY2Vzc2VkIGFuZCByZS1hZGRlZCBiZWNhdXNlIHdlIGFyZSBo
b2xkaW5nIHRoZSBsb2NrLgpAQCAtMzIyLDEzICszMjIsMTQgQEAgdm9pZCBWTVRyYXBzOjp3aWxs
RGVzdHJveVZNKCkKICNlbmRpZgogfQogCi12b2lkIFZNVHJhcHM6OmZpcmVUcmFwKFZNVHJhcHM6
OkV2ZW50VHlwZSBldmVudFR5cGUpCit2b2lkIFZNVHJhcHM6OmZpcmVUcmFwKFZNVHJhcHM6OkV2
ZW50IGV2ZW50KQogewogICAgIEFTU0VSVCghdm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJ
TG9jaygpKTsKKyAgICBBU1NFUlQob25seUNvbnRhaW5zQXN5bmNFdmVudHMoZXZlbnQpKTsKICAg
ICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKm1fbG9jayk7CiAgICAgICAgIEFT
U0VSVCghbV9pc1NodXR0aW5nRG93bik7Ci0gICAgICAgIHNldFRyYXBGb3JFdmVudChsb2NrZXIs
IGV2ZW50VHlwZSk7CisgICAgICAgIHNldFRyYXBCaXQoZXZlbnQpOwogICAgICAgICBtX25lZWRU
b0ludmFsaWRhdGVkQ29kZUJsb2NrcyA9IHRydWU7CiAgICAgfQogICAgIApAQCAtMzQ1LDEwICsz
NDYsMTUgQEAgdm9pZCBWTVRyYXBzOjpmaXJlVHJhcChWTVRyYXBzOjpFdmVudFR5cAogI2VuZGlm
CiB9CiAKLXZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNVHJhcHM6Ok1hc2sgbWFzaykKK3ZvaWQgVk1U
cmFwczo6aGFuZGxlVHJhcHMoVk1UcmFwczo6Qml0RmllbGQgbWFzaykKIHsKICAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBBU1NFUlQob25seUNvbnRhaW5zQXN5bmNFdmVudHMobWFzaykpOworICAgIEFTU0VSVChu
ZWVkSGFuZGxpbmcobWFzaykpOworCisgICAgaWYgKGlzRGVmZXJyaW5nVGVybWluYXRpb24oKSkK
KyAgICAgICAgbWFzayAmPSB+TmVlZFRlcm1pbmF0aW9uOwogCiAgICAgewogICAgICAgICBhdXRv
IGNvZGVCbG9ja1NldExvY2tlciA9IGhvbGRMb2NrKHZtLmhlYXAuY29kZUJsb2NrU2V0KCkuZ2V0
TG9jaygpKTsKQEAgLTM1OSwxMyArMzY1LDEyIEBAIHZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMo
SlNHbG9iYWxPYmplY3QKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgQVNTRVJUKG5lZWRUcmFw
SGFuZGxpbmcobWFzaykpOwotICAgIHdoaWxlIChuZWVkVHJhcEhhbmRsaW5nKG1hc2spKSB7Ci0g
ICAgICAgIGF1dG8gZXZlbnRUeXBlID0gdGFrZVRvcFByaW9yaXR5VHJhcChtYXNrKTsKLSAgICAg
ICAgc3dpdGNoIChldmVudFR5cGUpIHsKKyAgICB3aGlsZSAobmVlZEhhbmRsaW5nKG1hc2spKSB7
CisgICAgICAgIGF1dG8gZXZlbnQgPSB0YWtlVG9wUHJpb3JpdHlUcmFwKG1hc2spOworICAgICAg
ICBzd2l0Y2ggKGV2ZW50KSB7CiAgICAgICAgIGNhc2UgTmVlZERlYnVnZ2VyQnJlYWs6CiAgICAg
ICAgICAgICBkYXRhTG9nKCJWTSAiLCBSYXdQb2ludGVyKCZ2bSksICIgb24gcGlkICIsIGdldEN1
cnJlbnRQcm9jZXNzSUQoKSwgIiByZWNlaXZlZCBOZWVkRGVidWdnZXJCcmVhayB0cmFwXG4iKTsK
LSAgICAgICAgICAgIGludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjayhjYWxsRnJhbWUpOworICAg
ICAgICAgICAgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKHZtLnRvcENhbGxGcmFtZSk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIE5lZWRTaGVsbFRpbWVvdXRDaGVjazoK
QEAgLTM3NSwzMCArMzgwLDY1IEBAIHZvaWQgVk1UcmFwczo6aGFuZGxlVHJhcHMoSlNHbG9iYWxP
YmplY3QKIAogICAgICAgICBjYXNlIE5lZWRXYXRjaGRvZ0NoZWNrOgogICAgICAgICAgICAgQVNT
RVJUKHZtLndhdGNoZG9nKCkpOwotICAgICAgICAgICAgaWYgKExJS0VMWSghdm0ud2F0Y2hkb2co
KS0+c2hvdWxkVGVybWluYXRlKGdsb2JhbE9iamVjdCkpKQorICAgICAgICAgICAgQVNTRVJUKHZt
LmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIXZt
LndhdGNoZG9nKCktPnNob3VsZFRlcm1pbmF0ZSh2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3Qo
KSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdm0uc2V0VGVybWlu
YXRpb25JblByb2dyZXNzKHRydWUpOwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAKICAgICAg
ICAgY2FzZSBOZWVkVGVybWluYXRpb246Ci0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIHZtLnRocm93VGVybWluYXRpb25FeGNlcHRpb24oKSk7CisgICAgICAgICAgICBBU1NF
UlQodm0udGVybWluYXRpb25JblByb2dyZXNzKCkpOworICAgICAgICAgICAgc2NvcGUucmVsZWFz
ZSgpOworICAgICAgICAgICAgaWYgKCFpc0RlZmVycmluZ1Rlcm1pbmF0aW9uKCkpCisgICAgICAg
ICAgICAgICAgdm0udGhyb3dUZXJtaW5hdGlvbkV4Y2VwdGlvbigpOworICAgICAgICAgICAgcmV0
dXJuOwogCisgICAgICAgIGNhc2UgTmVlZEV4Y2VwdGlvbkhhbmRsaW5nOgogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQogICAgIH0KIH0KIAotYXV0byBWTVRyYXBzOjp0YWtlVG9wUHJpb3JpdHlUcmFwKFZNVHJhcHM6
Ok1hc2sgbWFzaykgLT4gRXZlbnRUeXBlCithdXRvIFZNVHJhcHM6OnRha2VUb3BQcmlvcml0eVRy
YXAoVk1UcmFwczo6Qml0RmllbGQgbWFzaykgLT4gRXZlbnQKIHsKICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKCptX2xvY2spOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTnVtYmVyT2ZFdmVu
dFR5cGVzOyArK2kpIHsKLSAgICAgICAgRXZlbnRUeXBlIGV2ZW50VHlwZSA9IHN0YXRpY19jYXN0
PEV2ZW50VHlwZT4oaSk7Ci0gICAgICAgIGlmIChoYXNUcmFwRm9yRXZlbnQobG9ja2VyLCBldmVu
dFR5cGUsIG1hc2spKSB7Ci0gICAgICAgICAgICBjbGVhclRyYXBGb3JFdmVudChsb2NrZXIsIGV2
ZW50VHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gZXZlbnRUeXBlOworCisgICAgLy8gTm90ZTog
dGhlIEV2ZW50Qml0U2hpZnQgaXMgYWxyZWFkeSBzb3J0ZWQgaW4gaGlnaGVzdCB0byBsb3dlc3Qg
cHJpb3JpdHkKKyAgICAvLyBpLmUuIGEgYml0IHNoaWZ0IG9mIDAgaXMgaGlnaGVzdCBwcmlvcml0
eSwgZXRjLgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTnVtYmVyT2ZFdmVudHM7ICsraSkgewor
ICAgICAgICBFdmVudCBldmVudCA9IHN0YXRpY19jYXN0PEV2ZW50PigxIDw8IGkpOworICAgICAg
ICBpZiAoaGFzVHJhcEJpdChldmVudCwgbWFzaykpIHsKKyAgICAgICAgICAgIGNsZWFyVHJhcEJp
dChldmVudCk7CisgICAgICAgICAgICByZXR1cm4gZXZlbnQ7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuIEludmFsaWQ7CisgICAgcmV0dXJuIE5vRXZlbnQ7Cit9CisKK3ZvaWQgVk1UcmFw
czo6ZGVmZXJUZXJtaW5hdGlvbigpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jaygqbV9s
b2NrKTsKKyAgICBtX2RlZmVyVGVybWluYXRpb25Db3VudCsrOworICAgIEFTU0VSVChtX2RlZmVy
VGVybWluYXRpb25Db3VudCA8IFVJTlRfTUFYKTsKKworICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgRXhjZXB0aW9uKiBwZW5kaW5nRXhjZXB0aW9uID0gdm0uZXhjZXB0aW9uKCk7CisgICAg
aWYgKHBlbmRpbmdFeGNlcHRpb24gJiYgdm0uaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihwZW5kaW5n
RXhjZXB0aW9uKSkgeworICAgICAgICB2bS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICBtX3N1
c3BlbmRlZFRlcm1pbmF0aW9uRXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgVk1U
cmFwczo6dW5kb0RlZmVyVGVybWluYXRpb24oKQoreworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soKm1fbG9jayk7CisgICAgQVNTRVJUKG1fZGVmZXJUZXJtaW5hdGlvbkNvdW50ID4gMCk7Cisg
ICAgaWYgKC0tbV9kZWZlclRlcm1pbmF0aW9uQ291bnQgPT0gMCkgeworICAgICAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOworICAgICAgICBpZiAobV9zdXNwZW5kZWRUZXJtaW5hdGlvbkV4Y2VwdGlv
biB8fCB2bS50ZXJtaW5hdGlvbkluUHJvZ3Jlc3MoKSkKKyAgICAgICAgICAgIHZtLnNldEV4Y2Vw
dGlvbih2bS50ZXJtaW5hdGlvbkV4Y2VwdGlvbigpKTsKKyAgICB9CiB9CiAKIFZNVHJhcHM6OlZN
VHJhcHMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuaAkocmV2
aXNpb24gMjc1NzUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNTkgKzQxLDE0NSBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKIGNsYXNzIFZNOwogCiBjbGFzcyBWTVRyYXBzIHsKLSAgICB0eXBlZGVmIHVpbnQ4X3QgQml0
RmllbGQ7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBFcnJvciB7Ci0gICAgICAgIE5vbmUsCi0g
ICAgICAgIExvY2tVbmF2YWlsYWJsZSwKLSAgICAgICAgTm90SklUQ29kZQotICAgIH07CisgICAg
dXNpbmcgQml0RmllbGQgPSB1aW50MzJfdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBi
aXRzSW5CaXRGaWVsZCA9IHNpemVvZihCaXRGaWVsZCkgKiBDSEFSX0JJVDsKIAotICAgIGVudW0g
RXZlbnRUeXBlIHsKLSAgICAgICAgLy8gU29ydGVkIGluIHNlcnZpY2luZyBwcmlvcml0eSBvcmRl
ciBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0LgotICAgICAgICBOZWVkRGVidWdnZXJCcmVhaywKLSAg
ICAgICAgTmVlZFNoZWxsVGltZW91dENoZWNrLAotICAgICAgICBOZWVkVGVybWluYXRpb24sCi0g
ICAgICAgIE5lZWRXYXRjaGRvZ0NoZWNrLAotICAgICAgICBOdW1iZXJPZkV2ZW50VHlwZXMsIC8v
IFRoaXMgZW50cnkgbXVzdCBiZSBsYXN0IGluIHRoaXMgbGlzdC4KLSAgICAgICAgSW52YWxpZAor
ICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSB0eXBlIG9mIFZNVHJhcCBldmVudHMgLyBzaWdu
YWxzIHRoYXQgY2FuIGJlIGZpcmVkLgorICAgIC8vIFRoaXMgbGlzdCBzaG91bGQgYmUgc29ydGVk
IGluIHNlcnZpY2luZyBwcmlvcml0eSBvcmRlciBmcm9tIGhpZ2hlc3QgdG8KKyAgICAvLyBsb3dl
c3QuCisgICAgLy8KKyAgICAvLyBUaGUgY3VycmVudGx5IGltbGVtZW50ZWQgZXZlbnRzIGFyZSAo
aW4gaGlnaGVzdCB0byBsb3dlc3QgcHJpb3JpdHkpOgorICAgIC8vCisgICAgLy8gIE5lZWREZWJ1
Z2dlckJyZWFrCisgICAgLy8gIC0gc2VydmljZXMgYXN5bmNocm9ub3VzIGRlYnVnZ2VyIGJyZWFr
IHJlcXVlc3RzLgorICAgIC8vCisgICAgLy8gIE5lZWRTaGVsbFRpbWVvdXRDaGVjaworICAgIC8v
ICAtIG9ubHkgdXNlZCBieSB0aGUganNjIHNoZWxsIHRvIGNoZWNrIGlmIHdlIG5lZWQgdG8gZm9y
Y2UgYSBoYXJkIHNodXRkb3duLgorICAgIC8vICAtIHRoaXMgZXZlbnQgbWF5IGZpcmUgbW9yZSB0
aGFuIG9uY2UgYmVmb3JlIHRoZSBqc2Mgc2hlbGwgZm9yY2VzIHRoZQorICAgIC8vICAgIHNodXRk
b3duIChzZWUgTmVlZFdhdGNoZG9nQ2hlY2sncyBkaXNjdXNzaW9uIG9mIENQVSB0aW1lIGZvciB3
aHkKKyAgICAvLyAgICB0aGlzIG1heSBiZSkuCisgICAgLy8KKyAgICAvLyAgTmVlZFRlcm1pbmF0
aW9uCisgICAgLy8gIC0gdXNlZCB0byByZXF1ZXN0IHRoZSB0ZXJtaW5hdGlvbiBvZiBleGVjdXRp
b24gb2YgdGhlICJjdXJyZW50IiBzdGFjay4KKyAgICAvLyAgICBOb3RlOiAiVGVybWluYXRpb24i
IGhlcmUgc2ltcGx5IG1lYW5zIHdlIHRlcm1pbmF0ZSB3aGF0ZXZlciBpcyBjdXJyZW50bHkKKyAg
ICAvLyAgICBleGVjdXRpbmcgb24gdGhlIHN0YWNrLiBJdCBkb2VzIG5vdCBtZWFuIHRlcm1pbmF0
aW9uIG9mIHRoZSBWTSwgYW5kIGhlbmNlLAorICAgIC8vICAgIGlzIG5vdCBwZXJtYW5lbnQuIFBl
cm1hbmVudCBWTSB0ZXJtaW5hdGlvbiBtZWNoYW5pc21zIChsaWtlIHN0b3BwaW5nIHRoZQorICAg
IC8vICAgIHJlcXVlc3QgdG8gc3RvcCBhIHdva2VyIHRocmVhZCkgbWF5IHVzZSB0aGlzIEV2ZW50
IHRvIHRlcm1pbmF0ZSB0aGUKKyAgICAvLyAgICAiY3VycmVudCIgc3RhY2ssIGJ1dCBpdCBuZWVk
cyB0byBkbyBzb21lIGFkZGl0aW9uYWwgd29yayB0byBwcmV2ZW50CisgICAgLy8gICAgcmUtZW50
cnkgaW50byB0aGUgVk0uCisgICAgLy8KKyAgICAvLyAgLSB0aGUgbWVjaGFuaXNtIGZvciBhY2hp
ZXZpbmcgdGhpcyBzdGFjayB0ZXJtaW5hdGlvbiBpcyBieSB0aHJvd2luZyB0aGUKKyAgICAvLyAg
ICB1bmNhdGNoYWJsZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiB0aGF0IHBpZ2d5IGJhY2sgb24gdGhl
IFZNJ3MgZXhjZXB0aW9uCisgICAgLy8gICAgaGFuZGxpbmcgbWFjaGluZXJ5IHRvIHRoZSB1bndp
bmQgc3RhY2suIFRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBpcworICAgIC8vICAgIHVuY2F0Y2hh
YmxlIGluIHRoZSBzZW5zZSB0aGF0IHRoZSBWTSB3aWxsIHJlZnVzZSB0byBsZXQgSlMgY29kZSdz
CisgICAgLy8gICAgY2F0Y2ggaGFuZGxlcnMgY2F0Y2ggdGhlIGV4Y2VwdGlvbi4gQysrIGNvZGUg
aW4gdGhlIFZNICh0aGF0IGNhbGxzIGludG8KKyAgICAvLyAgICBKUykgbmVlZHMgdG8gZG8gZXhj
ZXB0aW9uIGNoZWNrcywgYW5kIG1ha2Ugc3VyZSB0byBwcm9wYWdhdGUgdGhlCisgICAgLy8gICAg
ZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbi4KKyAgICAvLworICAg
IC8vICAtIGFnYWluLCB0aGUgdGVybWluYXRpb24gcmVxdWVzdCBpcyBub3QgcGVybWFuZW50LiBP
bmNlIHRoZSBWTSB1bndpbmRzIG91dAorICAgIC8vICAgIG9mIHRoZSAiY3VycmVudCIgZXhlY3V0
aW9uIHN0YXRlIG9uIHRoZSBzdGFjaywgdGhlIGNsaWVudCBtYXkgY2hvb3NlIHRvCisgICAgLy8g
ICAgY2xlYXIgdGhlIGV4Y2VwdGlvbiwgYW5kIHJlLWVudGVyIHRoZSBWTSB0byBleGVjdXRpbmcg
SlMgY29kZSBhZ2Fpbi4KKyAgICAvLyAgICBTZWUgTmVlZFdhdGNoZG9nQ2hlY2sgYmVsb3cgb24g
d2h5IHRoZSBWTSB3YXRjaGRvZyBuZWVkcyB0aGlzIGFiaWxpdHkKKyAgICAvLyAgICB0byByZS1l
bnRlciB0aGUgVk0gYWZ0ZXIgdGVybWluYXRpbmcgdGhlIGN1cnJlbnQgc3RhY2suCisgICAgLy8K
KyAgICAvLyAgLSBtYW55IGNsaWVudHMgZW50ZXIgdGhlIFZNIHZpYSBBUElzIHRoYXQgcmV0dXJu
IGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbgorICAgIC8vICAgIGluIGEgTmFrZWRQb2ludGVyPEV4Y2Vw
dGlvbj4mLiBUaG9zZSBBUElzIHdvdWxkIGF1dG9tYXRpY2FsbHkgY2xlYXIKKyAgICAvLyAgICB0
aGUgdW5jYXVnaHQgVGVybWluYXRpb25FeGNlcHRpb24gYW5kIHJldHVybiBpdCB2aWEgdGhlCisg
ICAgLy8gICAgTmFrZWRQb2ludGVyPEV4Y2VwdGlvbj4mLiBIZW5jZSwgdGhlIFZNIGlzIHJlYWR5
IGZvciByZS1lbnRyeSB1cG9uCisgICAgLy8gICAgcmV0dXJuaW5nIHRvIHRoZSBjbGllbnQuCisg
ICAgLy8KKyAgICAvLyAgLSBpbiB0aGUgYWJvdmUgbm90ZXMsICJjdXJyZW50IiAoYXMgaW4gImN1
cnJlbnQiIHN0YWNrKSBpbiBxdW90ZXMgYmVjYXVzZQorICAgIC8vICAgIE5lZWRUZXJtaW5hdGlv
biBuZWVkcyB0byBndWFyYW50ZWUgdGhhdCB0aGUgVGVybWluYXRpb25FeGNlcHRpb24gaGFzCisg
ICAgLy8gICAgYmVlbiB0aHJvd24gaW4gcmVzcG9uc2UgdG8gdGhpcyBldmVudC4gSWYgdGhlIGV2
ZW50IGZpcmVzIGp1c3QgYmVmb3JlCisgICAgLy8gICAgdGhlIFZNIGV4aXRzIGFuZCB0aGUgVGVy
bWluYXRpb25FeGNlcHRpb24gd2FzIG5vdCB0aHJvd24geWV0LCB0aGVuIHdlJ2xsCisgICAgLy8g
ICAga2VlcCB0aGUgTmVlZFRlcm1pbmF0aW9uIHRyYXAgYml0IHNldCBmb3IgdGhlIG5leHQgVk0g
ZW50cnkuIEluIHRoaXMgY2FzZSwKKyAgICAvLyAgICB0aGUgdGVybWluYXRpb24gd2lsbCBhY3R1
YWwgaGFwcGVuIG9uIHRoZSBuZXh0IHN0YWNrIG9mIGV4ZWN1dGlvbi4KKyAgICAvLworICAgIC8v
ICAgIFRoaXMgYmVoYXZpb3IgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBjbGllbnRzIHJlbHkgb24g
dGhlIHNlZWluZyBhbgorICAgIC8vICAgIHVuY2F1Z2h0IFRlcm1pbmF0aW9uRXhjZXB0aW9uIHRv
IGtub3cgdGhhdCBhIHRlcm1pbmF0aW9uIGhhcyBiZWVuCisgICAgLy8gICAgcmVxdWVzdGVkLiBU
ZWNobmljYWxseSwgdGhlcmUgYXJlIGJldHRlciB3YXlzIGZvciB0aGUgY2xpZW50IHRvIGtub3cg
YWJvdXQKKyAgICAvLyAgICB0aGUgdGVybWluYXRpb24gcmVxdWVzdCAoYWZ0ZXIgYWxsLCB0aGUg
dGVybWluYXRpb24gaXMgaW5pdGlhdGVkIGJ5IHRoZQorICAgIC8vICAgIGNsaWVudCkuIEhvd2V2
ZXIsIHRoaXMgaXMgaG93IHNvbWUgY3VycmVudCBjbGllbnQgY29kZSB3b3Jrcy4gU28sIHdlIG5l
ZWQKKyAgICAvLyAgICB0byByZXRhaW4gdGhpcyBiZWhhdmlvciB1bnRpbCB3ZSBjYW4gY2hhbmdl
IGFsbCB0aGUgY2xpZW50cyB0aGF0IHJlbHkgb24KKyAgICAvLyAgICBpdC4KKyAgICAvLworICAg
IC8vICBOZWVkV2F0Y2hkb2dDaGVjaworICAgIC8vICAtIHVzZWQgdG8gc2lnbmFsIGEgY2hlY2sg
YXMgdG8gd2hldGhlciB0aGUgd2F0Y2hkb2cgdGltZXIgaGFzIGV4cGlyZWQuCisgICAgLy8gICAg
Tm90ZTogdGhlIHdhdGNoZG9nIHRpbWVvdXQgaXMgbG9naWNhbGx5IG1lYXN1cmVkIGluIENQVSB0
aW1lLiBIb3dldmVyLAorICAgIC8vICAgIHRoZSByZWFsIHRpbWVyIGltcGxlbWVudGF0aW9uICh0
aGF0IGZpcmVzIHRoaXMgTmVlZFdhdGNoZG9nQ2hlY2sgZXZlbnQpCisgICAgLy8gICAgaGFzIHRv
IG9wZXJhdGUgb24gd2FsbCBjbG9jay4gSGVuY2UsIE5lZWRXYXRjaGRvZ0NoZWNrIGZpcmluZyBk
b2VzIG5vdAorICAgIC8vICAgIG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCB0aGUgd2F0Y2hkb2cgdGlt
ZW91dCBoYXMgZXhwaXJlZCwgYW5kIHdlIGNhbiBleHBlY3QKKyAgICAvLyAgICB0byBzZWUgTmVl
ZFdhdGNoZG9nQ2hlY2sgZmlyaW5nIG1vcmUgdGhhbiBvbmNlIGZvciBhIHNpbmdsZSB3YXRjaGRv
ZworICAgIC8vICAgIHRpbWVvdXQuCisgICAgLy8KKyAgICAvLyAgLSB0aGUgd2F0Y2hkb2cgbWVj
aGFuaXNtIGhhcyB0aGUgb3B0aW9uIHRvIHJlcXVlc3QgdGVybWluYXRpb24gb2YgdGhlCisgICAg
Ly8gICAgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YWNrIG9uIHdhdGNoZG9nIHRpbWVvdXQgKHNl
ZQorICAgIC8vICAgIFdhdGNoZG9nOjpzaG91bGRUZXJtaW5hdGUoKSkuIElmIHRlcm1pbmF0aW9u
IGlzIHJlcXVlc3RlZCwgaXQgd2lsbAorICAgIC8vICAgIGJlIGV4ZWN1dGVkIHZpYSB0aGUgc2Ft
ZSBtZWNoYW5pc20gYXMgTmVlZFRlcm1pbmF0aW9uIChzZWUgaG93IHRoZQorICAgIC8vICAgIE5l
ZWRXYXRjaGRvZ0NoZWNrIGNhc2UgY2FuIGZhbGwgdGhyb3VnaCB0byB0aGUgTmVlZFRlcm1pbmF0
aW9uIGNhc2UgaW4KKyAgICAvLyAgICBWTVRyYXBzOjpoYW5kbGVUcmFwcygpKS4KKyAgICAvLwor
ICAgIC8vICAtIHRoZSB3YXRjaGRvZyB0aW1pbmcgb3V0IGlzIG5vdCBwZXJtYW5lbnQgaS5lLiBh
ZnRlciB0ZXJtaW5hdGluZyB0aGUKKyAgICAvLyAgICBjdXJyZW50IHN0YWNrLCB0aGUgY2xpZW50
IG1heSBjaG9vc2UgdG8gcmUtZW50ZXIgdGhlIFZNIHRvIGV4ZWN1dGUgbW9yZQorICAgIC8vICAg
IEpTLiBGb3IgZXhhbXBsZSwgYSBjbGllbnQgbWF5IHVzZSB0aGUgd2F0Y2hkb2cgdG8gZW5zdXJl
IHRoYXQgYW4gdW50cnVzdGVkCisgICAgLy8gICAgM3JkIHBhcnR5IHNjcmlwdCAodGhhdCBpdCBy
dW5zKSBkb2VzIG5vdCBnZXQgdHJhcHBlZCBpbiBhbiBpbmZpbml0ZSBsb29wLgorICAgIC8vICAg
IElmIHNvLCB0aGUgd2F0Y2hkb2cgdGltZW91dCBjYW4gdGVybWluYXRlIHRoYXQgc2NyaXB0LiBB
ZnRlciB0ZXJtaW5hdGluZworICAgIC8vICAgIHRoYXQgYmFkIHNjcmlwdCwgdGhlIGNsaWVudCBt
YXkgY2hvb3NlIHRvIGFsbG93IG90aGVyIDNyZCBwYXJ0eSBzY3JpcHRzCisgICAgLy8gICAgdG8g
ZXhlY3V0ZSwgb3IgZXZlbiBhbGxvdyBtb3JlIHRyaWVzIG9uIHRoZSBjdXJyZW50IG9uZSB0aGF0
IHRpbWVkIG91dC4KKyAgICAvLyAgICBIZW5jZSwgdGhlIHRpbWVvdXQgYW5kIHRlcm1pbmF0aW9u
IG11c3Qgbm90IGJlIHBlcm1hbmVudC4KKyAgICAvLworICAgIC8vICAgIFRoaXMgaXMgd2h5IHRl
cm1pbmF0aW9uIHZpYSB0aGUgTmVlZFRlcm1pbmF0aW9uIGV2ZW50IGlzIG5vdCBwZXJtYW5lbnQs
CisgICAgLy8gICAgYnV0IG9ubHkgdGVybWluYXRlcyB0aGUgImN1cnJlbnQiIHN0YWNrLgorICAg
IC8vCisgICAgLy8gIE5lZWRFeGNlcHRpb25IYW5kbGluZworICAgIC8vICAtIHVubGlrZSB0aGUg
b3RoZXIgZXZlbnRzICh3aGljaCBhcmUgYXN5bmNocm9ub3VzIHRvIHRoZSBtdXRhdG9yIHRocmVh
ZCksCisgICAgLy8gICAgTmVlZEV4Y2VwdGlvbkhhbmRsaW5nIGlzIHNldCB3aGVuIHRoZSBtdXRh
dG9yIHRocmVhZCB0aHJvd3MgYSBKUyBleGNlcHRpb24KKyAgICAvLyAgICBhbmQgY2xlYXJlZCB3
aGVuIHRoZSBleGNlcHRpb24gaXMgaGFuZGxlZCAvIGNhdWdodC4KKyAgICAvLworICAgIC8vICAt
IHRoZSByZWFzb24gd2h5IE5lZWRFeGNlcHRpb25IYW5kbGluZyBpcyBhIGJpdCBvbiBWTVRyYXBz
IGFzIHdlbGwgaXMgc28KKyAgICAvLyAgICB0aGF0IHdlIGNhbiBwaWdneSBiYWNrIG9uIGFsbCB0
aGUgUkVUVVJOX0lGX0VYQ0VQVElPTiBjaGVja3Mgb24gQysrIGNvZGUKKyAgICAvLyAgICB0byBz
ZXJ2aWNlIFZNVHJhcHMgYXMgd2VsbC4gSGF2aW5nIHRoZSBOZWVkRXhjZXB0aW9uSGFuZGxpbmcg
ZXZlbnQgYXMKKyAgICAvLyAgICBwYXJ0IG9mIFZNVHJhcHMgYWxsb3dzIFJFVFVSTl9JRl9FWENF
UFRJT04gdG8gb3B0aW1hbGx5IG9ubHkgZG8gYSBzaW5nbGUKKyAgICAvLyAgICBjaGVjayB0byBk
ZXRlcm1pbmUgaWYgdGhlIFZNIHBvc3NpYmx5IGhhcyBhIHBlbmRpbmcgZXhjZXB0aW9uIHRvIGhh
bmRsZSwKKyAgICAvLyAgICBvciBpZiB0aGVyZSBhcmUgYXN5bmNocm9ub3VzIFZNVHJhcHMgZXZl
bnRzIHRvIGhhbmRsZS4KKworI2RlZmluZSBGT1JfRUFDSF9WTVRSQVBTX0VWRU5UUyh2KSBcCisg
ICAgdihOZWVkRGVidWdnZXJCcmVhaykgXAorICAgIHYoTmVlZFNoZWxsVGltZW91dENoZWNrKSBc
CisgICAgdihOZWVkVGVybWluYXRpb24pIFwKKyAgICB2KE5lZWRXYXRjaGRvZ0NoZWNrKSBcCisg
ICAgdihOZWVkRXhjZXB0aW9uSGFuZGxpbmcpCisKKyNkZWZpbmUgREVDTEFSRV9WTVRSQVBTX0VW
RU5UX0JJVF9TSElGVChldmVudF9fKSAgZXZlbnRfXyMjQml0U2hpZnQsCisgICAgZW51bSBFdmVu
dEJpdFNoaWZ0IHsKKyAgICAgICAgRk9SX0VBQ0hfVk1UUkFQU19FVkVOVFMoREVDTEFSRV9WTVRS
QVBTX0VWRU5UX0JJVF9TSElGVCkKKyAgICAgICAgTnVtYmVyT2ZFdmVudHMsIC8vIFRoaXMgZW50
cnkgbXVzdCBiZSBsYXN0IGluIHRoaXMgbGlzdC4KICAgICB9OworI3VuZGVmIERFQ0xBUkVfVk1U
UkFQU19FVkVOVF9CSVRfU0hJRlQKIAotICAgIGNsYXNzIE1hc2sgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgZW51bSBBbGxFdmVudFR5cGVzIHsgQWxsRXZlbnRUeXBlc1RhZyB9OwotICAgICAgICBj
b25zdGV4cHIgTWFzayhBbGxFdmVudFR5cGVzKQotICAgICAgICAgICAgOiBtX21hc2soc3RkOjpu
dW1lcmljX2xpbWl0czxCaXRGaWVsZD46Om1heCgpKQotICAgICAgICB7IH0KLSAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBNYXNrIGFsbEV2ZW50VHlwZXMoKSB7IHJldHVybiBNYXNrKEFsbEV2ZW50
VHlwZXNUYWcpOyB9Ci0KLSAgICAgICAgY29uc3RleHByIE1hc2soY29uc3QgTWFzayYpID0gZGVm
YXVsdDsKLSAgICAgICAgY29uc3RleHByIE1hc2soTWFzayYmKSA9IGRlZmF1bHQ7Ci0KLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgICAgICBjb25zdGV4cHIgTWFz
ayhBcmd1bWVudHMuLi4gYXJncykKLSAgICAgICAgICAgIDogbV9tYXNrKDApCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGluaXQoYXJncy4uLik7Ci0gICAgICAgIH0KLQotICAgICAgICBCaXRGaWVs
ZCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgICAgIGNvbnN0ZXhwciB2b2lk
IGluaXQoRXZlbnRUeXBlIGV2ZW50VHlwZSwgQXJndW1lbnRzLi4uIGFyZ3MpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVChldmVudFR5cGUgPCBOdW1iZXJPZkV2ZW50VHlwZXMpOwotICAg
ICAgICAgICAgbV9tYXNrIHw9ICgxIDw8IGV2ZW50VHlwZSk7Ci0gICAgICAgICAgICBpbml0KGFy
Z3MuLi4pOwotICAgICAgICB9CisgICAgdXNpbmcgRXZlbnQgPSBCaXRGaWVsZDsKIAotICAgICAg
ICBjb25zdGV4cHIgdm9pZCBpbml0KCkgeyB9CisjZGVmaW5lIERFQ0xBUkVfVk1UUkFQU19FVkVO
VChldmVudF9fKSBcCisgICAgc3RhdGljX2Fzc2VydChldmVudF9fIyNCaXRTaGlmdCA8IGJpdHNJ
bkJpdEZpZWxkKTsgXAorICAgIHN0YXRpYyBjb25zdGV4cHIgRXZlbnQgZXZlbnRfXyA9ICgxIDw8
IGV2ZW50X18jI0JpdFNoaWZ0KTsKKyAgICBGT1JfRUFDSF9WTVRSQVBTX0VWRU5UUyhERUNMQVJF
X1ZNVFJBUFNfRVZFTlQpCisjdW5kZWYgREVDTEFSRV9WTVRSQVBTX0VWRU5UCiAKLSAgICAgICAg
Qml0RmllbGQgbV9tYXNrOwotICAgIH07CisjdW5kZWYgRk9SX0VBQ0hfVk1UUkFQU19FVkVOVFMK
KworICAgIHN0YXRpYyBjb25zdGV4cHIgRXZlbnQgTm9FdmVudCA9IDA7CiAKLSAgICBzdGF0aWMg
Y29uc3RleHByIE1hc2sgaW50ZXJydXB0aW5nVHJhcHMoKSB7IHJldHVybiBNYXNrKE5lZWRTaGVs
bFRpbWVvdXRDaGVjaywgTmVlZFRlcm1pbmF0aW9uLCBOZWVkV2F0Y2hkb2dDaGVjayk7IH0KKyAg
ICBzdGF0aWNfYXNzZXJ0KE51bWJlck9mRXZlbnRzIDw9IGJpdHNJbkJpdEZpZWxkKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEJpdEZpZWxkIEFsbEV2ZW50cyA9ICgxdWxsIDw8IE51bWJlck9mRXZl
bnRzKSAtIDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBCaXRGaWVsZCBBc3luY0V2ZW50cyA9IEFs
bEV2ZW50cyAmIH5OZWVkRXhjZXB0aW9uSGFuZGxpbmc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBC
aXRGaWVsZCBOb25EZWJ1Z2dlckV2ZW50cyA9IEFsbEV2ZW50cyAmIH5OZWVkRGVidWdnZXJCcmVh
azsKKyAgICBzdGF0aWMgY29uc3RleHByIEJpdEZpZWxkIE5vbkRlYnVnZ2VyQXN5bmNFdmVudHMg
PSBBc3luY0V2ZW50cyAmIH5OZWVkRGVidWdnZXJCcmVhazsKKworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBvbmx5Q29udGFpbnNBc3luY0V2ZW50cyhCaXRGaWVsZCBldmVudHMpCisgICAgewor
ICAgICAgICByZXR1cm4gKEFzeW5jRXZlbnRzICYgZXZlbnRzKSAmJiAhKH5Bc3luY0V2ZW50cyAm
IGV2ZW50cyk7CisgICAgfQogCiAgICAgflZNVHJhcHMoKTsKICAgICBWTVRyYXBzKCk7CkBAIC0x
MDIsNDIgKzE4OCw0MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxEZXN0cm95Vk0oKTsKIAot
ICAgIGJvb2wgbmVlZFRyYXBIYW5kbGluZygpIHsgcmV0dXJuIG1fbmVlZFRyYXBIYW5kbGluZzsg
fQotICAgIGJvb2wgbmVlZFRyYXBIYW5kbGluZyhNYXNrIG1hc2spIHsgcmV0dXJuIG1fbmVlZFRy
YXBIYW5kbGluZyAmIG1hc2suYml0cygpOyB9Ci0gICAgdm9pZCogbmVlZFRyYXBIYW5kbGluZ0Fk
ZHJlc3MoKSB7IHJldHVybiAmbV9uZWVkVHJhcEhhbmRsaW5nOyB9CisgICAgYm9vbCBuZWVkSGFu
ZGxpbmcoQml0RmllbGQgbWFzaykgY29uc3QgeyByZXR1cm4gbV90cmFwQml0cy5sb2FkUmVsYXhl
ZCgpICYgbWFzazsgfQorICAgIHZvaWQqIHRyYXBCaXRzQWRkcmVzcygpIHsgcmV0dXJuICZtX3Ry
YXBCaXRzOyB9CisKKyAgICBib29sIGlzRGVmZXJyaW5nVGVybWluYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2RlZmVyVGVybWluYXRpb25Db3VudDsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGVmZXJUZXJtaW5hdGlvbigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5kb0Rl
ZmVyVGVybWluYXRpb24oKTsKIAogICAgIHZvaWQgbm90aWZ5R3JhYkFsbExvY2tzKCkKICAgICB7
Ci0gICAgICAgIGlmIChuZWVkVHJhcEhhbmRsaW5nKCkpCisgICAgICAgIGlmIChuZWVkSGFuZGxp
bmcoQXN5bmNFdmVudHMpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNr
KCk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaXJlVHJhcChFdmVudFR5
cGUpOworICAgIGJvb2wgaGFzVHJhcEJpdChFdmVudCBldmVudCwgQml0RmllbGQgbWFzaykKKyAg
ICB7CisgICAgICAgIEJpdEZpZWxkIG1hc2tlZEJpdHMgPSBldmVudCAmIG1hc2s7CisgICAgICAg
IHJldHVybiBtX3RyYXBCaXRzLmxvYWRSZWxheGVkKCkgJiBtYXNrZWRCaXRzOworICAgIH0KKyAg
ICB2b2lkIGNsZWFyVHJhcEJpdChFdmVudCBldmVudCkgeyBtX3RyYXBCaXRzLmV4Y2hhbmdlQW5k
KH5ldmVudCk7IH0KKyAgICB2b2lkIHNldFRyYXBCaXQoRXZlbnQgZXZlbnQpCisgICAgeworICAg
ICAgICBBU1NFUlQoKGV2ZW50ICYgfkFsbEV2ZW50cykgPT0gMCk7CisgICAgICAgIG1fdHJhcEJp
dHMuZXhjaGFuZ2VPcihldmVudCk7CisgICAgfQogCi0gICAgdm9pZCBoYW5kbGVUcmFwcyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSosIFZNVHJhcHM6Ok1hc2spOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZmlyZVRyYXAoRXZlbnQpOworICAgIHZvaWQgaGFuZGxlVHJhcHMoQml0Rmll
bGQgbWFzayA9IEFzeW5jRXZlbnRzKTsKIAogICAgIHZvaWQgdHJ5SW5zdGFsbFRyYXBCcmVha3Bv
aW50cyhzdHJ1Y3QgU2lnbmFsQ29udGV4dCYsIFN0YWNrQm91bmRzKTsKIAogcHJpdmF0ZToKICAg
ICBWTSYgdm0oKSBjb25zdDsKIAotICAgIGJvb2wgaGFzVHJhcEZvckV2ZW50KExvY2tlcjxMb2Nr
PiYsIEV2ZW50VHlwZSBldmVudFR5cGUsIE1hc2sgbWFzaykKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChldmVudFR5cGUgPCBOdW1iZXJPZkV2ZW50VHlwZXMpOwotICAgICAgICByZXR1cm4gKG1fdHJh
cHNCaXRGaWVsZCAmIG1hc2suYml0cygpICYgKDEgPDwgZXZlbnRUeXBlKSk7Ci0gICAgfQotICAg
IHZvaWQgc2V0VHJhcEZvckV2ZW50KExvY2tlcjxMb2NrPiYsIEV2ZW50VHlwZSBldmVudFR5cGUp
Ci0gICAgewotICAgICAgICBBU1NFUlQoZXZlbnRUeXBlIDwgTnVtYmVyT2ZFdmVudFR5cGVzKTsK
LSAgICAgICAgbV90cmFwc0JpdEZpZWxkIHw9ICgxIDw8IGV2ZW50VHlwZSk7Ci0gICAgfQotICAg
IHZvaWQgY2xlYXJUcmFwRm9yRXZlbnQoTG9ja2VyPExvY2s+JiwgRXZlbnRUeXBlIGV2ZW50VHlw
ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChldmVudFR5cGUgPCBOdW1iZXJPZkV2ZW50VHlwZXMp
OwotICAgICAgICBtX3RyYXBzQml0RmllbGQgJj0gfigxIDw8IGV2ZW50VHlwZSk7Ci0gICAgfQot
Ci0gICAgRXZlbnRUeXBlIHRha2VUb3BQcmlvcml0eVRyYXAoTWFzayk7CisgICAgRXZlbnQgdGFr
ZVRvcFByaW9yaXR5VHJhcChCaXRGaWVsZCBtYXNrKTsKIAogI2lmIEVOQUJMRShTSUdOQUxfQkFT
RURfVk1fVFJBUFMpCiAgICAgY2xhc3MgU2lnbmFsU2VuZGVyOwpAQCAtMTU0LDE0ICsyMzgsMTUg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjayhDYWxsRnJh
bWUqKSB7IH0KICNlbmRpZgogCisgICAgc3RhdGljIGNvbnN0ZXhwciBCaXRGaWVsZCBOZWVkRXhj
ZXB0aW9uSGFuZGxpbmdNYXNrID0gfigxIDw8IE5lZWRFeGNlcHRpb25IYW5kbGluZyk7CisKICAg
ICBCb3g8TG9jaz4gbV9sb2NrOwogICAgIFJlZjxBdXRvbWF0aWNUaHJlYWRDb25kaXRpb24+IG1f
Y29uZGl0aW9uOwotICAgIHVuaW9uIHsKLSAgICAgICAgQml0RmllbGQgbV9uZWVkVHJhcEhhbmRs
aW5nIHsgMCB9OwotICAgICAgICBCaXRGaWVsZCBtX3RyYXBzQml0RmllbGQ7Ci0gICAgfTsKKyAg
ICBBdG9taWM8Qml0RmllbGQ+IG1fdHJhcEJpdHMgeyAwIH07CiAgICAgYm9vbCBtX25lZWRUb0lu
dmFsaWRhdGVkQ29kZUJsb2NrcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU2h1dHRpbmdEb3du
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fc3VzcGVuZGVkVGVybWluYXRpb25FeGNlcHRpb24geyBm
YWxzZSB9OworICAgIHVuc2lnbmVkIG1fZGVmZXJUZXJtaW5hdGlvbkNvdW50IHsgMCB9OwogCiAj
aWYgRU5BQkxFKFNJR05BTF9CQVNFRF9WTV9UUkFQUykKICAgICBSZWZQdHI8U2lnbmFsU2VuZGVy
PiBtX3NpZ25hbFNlbmRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NTc1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisy
MDIxLTA0LTA5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFi
bGUgVk1UcmFwcyBjaGVja3MgaW4gUkVUVVJOX0lGX0VYQ0VQVElPTi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDA3OAorICAgICAgICByZGFyOi8v
NzUwMzcwNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAxLiBBZGQgRGVmZXJUZXJtaW5hdGlvbiBpbiBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjppbml0U2NyaXB0KCkuCisgICAgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIGhh
dmluZyB0byBtYWtlIGFsbCBleGNlcHRpb24gY2hlY2tpbmcgaW4KKyAgICAgICAgICAgV29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpIHZlcnkgdGhvcm91Z2ggYW5k
IGNvbXBsZXRlLgorICAgICAgICAgICBDdXJyZW50bHksIHRoZXkgYXJlbid0LgorCisgICAgICAg
IDIuIEZpeCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSgpIHRvIGhh
bmRsZSB0aGUgVGVybWluYXRpb25FeGNlcHRpb24uCisKKyAgICAgICAgMy4gRml4IEpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoKSB0byBoYW5kbGUgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9u
IGNvcnJlY3RseS4KKyAgICAgICAgICAgUHJldmlvdXNseSwgaW4gb25lIGNhc2UsIGl0IHdhcyBj
aGVja2luZyBzY29wZS5leGNlcHRpb24oKSBmb3IgdGhlIGV4Y2VwdGlvbiwKKyAgICAgICAgICAg
YnV0IHRoZSBleGNlcHRpb24gaGFzIGFscmVhZHkgYmVlbiB0YWtlbiBvdXQgb2YgdGhlcmUuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorCiAyMDIx
LTA0LTA4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAg
ICAgIFtXaW5dIFdyb25nIEtleWJvYXJkRXZlbnQua2V5IGZvciBudW1lcmljIGtleSBwYWQgd2l0
aCBOdW1Mb2NrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5jcHAJKHJldmlzaW9uIDI3NTc1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MiwxOCArMTgyLDE4
IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHQKICAgICBKU0V4ZWNT
dGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYWxsRGF0
YSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGhhbmRsZUV2ZW50RnVuY3Rpb24gPT0ganNG
dW5jdGlvbiA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBldmVudC5j
dXJyZW50VGFyZ2V0KCkpIDoganNGdW5jdGlvbjsKLSAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmV0dmFsID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVk
Q2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGhh
bmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIGV4Y2VwdGlvbik7
CisgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHVuY2F1Z2h0RXhjZXB0aW9uOworICAgIEpT
VmFsdWUgcmV0dmFsID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNh
bGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHVuY2F1Z2h0RXhjZXB0aW9uKTsKIAogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKCZzY3JpcHRFeGVjdXRpb25Db250
ZXh0KTsKIAogICAgIGlmIChqc0Z1bmN0aW9uV2luZG93KQogICAgICAgICBqc0Z1bmN0aW9uV2lu
ZG93LT5zZXRDdXJyZW50RXZlbnQoc2F2ZWRFdmVudC5nZXQoKSk7CiAKLSAgICBhdXRvIGhhbmRs
ZUV4Y2VwdGlvbklmTmVlZGVkID0gWyZdICgpIC0+IGJvb2wgeworICAgIGF1dG8gaGFuZGxlRXhj
ZXB0aW9uSWZOZWVkZWQgPSBbJl0gKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pIC0+IGJvb2wg
ewogICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpKSB7CiAgICAgICAgICAgICBhdXRvJiBzY3JpcHRDb250cm9sbGVyID0gKmRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KS5zY3JpcHQoKTsKLSAgICAg
ICAgICAgIGJvb2wgdGVybWluYXRvckNhdXNlZEV4Y2VwdGlvbiA9IChzY29wZS5leGNlcHRpb24o
KSAmJiB2bS5pc1Rlcm1pbmF0aW9uRXhjZXB0aW9uKHNjb3BlLmV4Y2VwdGlvbigpKSk7CisgICAg
ICAgICAgICBib29sIHRlcm1pbmF0b3JDYXVzZWRFeGNlcHRpb24gPSAoZXhjZXB0aW9uICYmIHZt
LmlzVGVybWluYXRpb25FeGNlcHRpb24oZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICBpZiAodGVy
bWluYXRvckNhdXNlZEV4Y2VwdGlvbiB8fCBzY3JpcHRDb250cm9sbGVyLmlzVGVybWluYXRpbmdF
eGVjdXRpb24oKSkKICAgICAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLmZvcmJpZEV4ZWN1
dGlvbigpOwogICAgICAgICB9CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVu
ZXI6OmhhbmRsZUV2ZW50KFNjcmlwdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfTsKIAot
ICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZCgpKQorICAgIGlmIChoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZCh1bmNhdWdodEV4Y2VwdGlvbikpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9pc0F0dHJpYnV0ZSkgewpAQCAtMjIxLDggKzIyMSw3IEBAIHZvaWQgSlNFdmVudExpc3Rl
bmVyOjpoYW5kbGVFdmVudChTY3JpcHQKICAgICAgICAgaWYgKGlzPEJlZm9yZVVubG9hZEV2ZW50
PihldmVudCkpIHsKICAgICAgICAgICAgIFN0cmluZyByZXN1bHRTdHIgPSBjb252ZXJ0PElETE51
bGxhYmxlPElETERPTVN0cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR2YWwpOwogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgIGlmICho
YW5kbGVFeGNlcHRpb25JZk5lZWRlZCgpKQorICAgICAgICAgICAgICAgIGlmIChoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGhhbmRsZUJlZm9yZVVubG9hZEV2ZW50
UmV0dXJuVmFsdWUoZG93bmNhc3Q8QmVmb3JlVW5sb2FkRXZlbnQ+KGV2ZW50KSwgcmVzdWx0U3Ry
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjc1NzUwKQorKysgU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIldvcmtlck1vZHVsZVNjcmlw
dExvYWRlci5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdEZldGNoZXIuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Db21wbGV0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVm
ZXJUZXJtaW5hdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlZmVycmVkV29ya1Rp
bWVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvRXhjZXB0aW9uSGVscGVycy5oPgpAQCAtMjAyLDExICsyMDMsMTYgQEAg
dm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldgogICAgIGlmIChpc0V4ZWN1
dGlvbkZvcmJpZGRlbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIGV2YWx1YXRlKHNvdXJjZUNvZGUsIGV4Y2VwdGlvbiwg
cmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOwotICAgICAgICByZXBvcnRFeGNlcHRpb24obV9nbG9i
YWxTY29wZVdyYXBwZXIuZ2V0KCksIGV4Y2VwdGlvbik7CisgICAgVk0mIHZtID0gdGhpcy0+dm0o
KTsKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gdW5jYXVnaHRFeGNlcHRpb247CisgICAg
ZXZhbHVhdGUoc291cmNlQ29kZSwgdW5jYXVnaHRFeGNlcHRpb24sIHJldHVybmVkRXhjZXB0aW9u
TWVzc2FnZSk7CisgICAgaWYgKCh1bmNhdWdodEV4Y2VwdGlvbiAmJiB2bS5pc1Rlcm1pbmF0aW9u
RXhjZXB0aW9uKHVuY2F1Z2h0RXhjZXB0aW9uKSkgfHwgaXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigp
KSB7CisgICAgICAgIGZvcmJpZEV4ZWN1dGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmICh1bmNhdWdodEV4Y2VwdGlvbikgeworICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX2dsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSwg
dW5jYXVnaHRFeGNlcHRpb24pOwogICAgIH0KIH0KIApAQCAtNTE3LDYgKzUyMyw5IEBAIHZvaWQg
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW4KIAogdm9pZCBXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKIHsKKyAgICBBU1NFUlQobV92bS5nZXQo
KSk7CisgICAgSlNDOjpEZWZlclRlcm1pbmF0aW9uIGRlZmVyVGVybWluYXRpb24oKm1fdm0uZ2V0
KCkpOworCiAgICAgaWYgKGlzPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPihtX2dsb2JhbFNj
b3BlKSkgewogICAgICAgICBpbml0U2NyaXB0V2l0aFN1YmNsYXNzPEpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGVQcm90b3R5cGUsIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUsIERlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlPigpOwogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="review"
          id="445614"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>