<?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>175902</bug_id>
          
          <creation_ts>2017-08-23 13:20:47 -0700</creation_ts>
          <short_desc>[Cache API] Unify WebCore and WebKit error handling</short_desc>
          <delta_ts>2017-08-23 17:39: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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1341750</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-23 13:20:47 -0700</bug_when>
    <thetext>We should use more expected and have a single error enumeration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341760</commentid>
    <comment_count>1</comment_count>
      <attachid>318911</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-23 13:35:45 -0700</bug_when>
    <thetext>Created attachment 318911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341777</commentid>
    <comment_count>2</comment_count>
      <attachid>318917</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-23 14:15:27 -0700</bug_when>
    <thetext>Created attachment 318917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341778</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-23 14:18:18 -0700</bug_when>
    <thetext>Attachment 318917 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/DOMCache.h:48:  The parameter name &quot;request&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341783</commentid>
    <comment_count>4</comment_count>
      <attachid>318919</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-23 14:30:18 -0700</bug_when>
    <thetext>Created attachment 318919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341784</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-23 14:32:43 -0700</bug_when>
    <thetext>Attachment 318919 did not pass style-queue:


ERROR: Source/WebCore/Modules/cache/DOMCache.h:48:  The parameter name &quot;request&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341826</commentid>
    <comment_count>6</comment_count>
      <attachid>318919</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-23 15:33:19 -0700</bug_when>
    <thetext>Comment on attachment 318919
Patch

Clearing flags on attachment: 318919

Committed r221112: &lt;http://trac.webkit.org/changeset/221112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341827</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-23 15:33:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341830</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-23 15:34:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/34045933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341845</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-08-23 16:08:52 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #6)
&gt; Comment on attachment 318919 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 318919
&gt; 
&gt; Committed r221112: &lt;http://trac.webkit.org/changeset/221112&gt;
This change broke the Windows build: https://build.webkit.org/builders/Apple%20Win%20Release%20(Build)/builds/3884</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341886</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-23 17:07:41 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341887</commentid>
    <comment_count>11</comment_count>
      <attachid>318942</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-23 17:07:42 -0700</bug_when>
    <thetext>Created attachment 318942
Patch - windows fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341906</commentid>
    <comment_count>12</comment_count>
      <attachid>318942</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-23 17:39:27 -0700</bug_when>
    <thetext>Comment on attachment 318942
Patch - windows fix

Clearing flags on attachment: 318942

Committed r221123: &lt;http://trac.webkit.org/changeset/221123&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341907</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-23 17:39:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318911</attachid>
            <date>2017-08-23 13:35:45 -0700</date>
            <delta_ts>2017-08-23 14:15:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175902-20170823133545.patch</filename>
            <type>text/plain</type>
            <size>79385</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDNmYTRkNzM5N2Y5MWRi
MTk3OGJkNGQxYWE0Zjc1NDBjMTAxYmMzOC4uMjVjYTdhN2ExYWFlZDk5NDc3MGQ1ZWI0MDMyZTdk
NWRkMWU2NjMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE3LTA4LTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBVbmlm
eSBXZWJDb3JlIGFuZCBXZWJLaXQgZXJyb3IgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAg
ICAgICBJbnRyb2R1Y2luZyBhIERPTUNhY2hlIG5hbWVzcGFjZSBlbmNsb3Npbmcgc3RydWN0dXJl
cywgY2FsbGJhY2tzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucworICAgICAgICBwcmV2aW91c2x5
IGZvdW5kIGluIGVpdGhlciBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIG9yIFdlYktp
dDo6Q2FjaGVTdG9yYWdlLgorCisgICAgICAgIFNvbWUgcHJldmlvdXNseSB1c2VkIGNhbGxiYWNr
cyBoYWQgbm8gd2F5IHRvIHBhc3MgZXJyb3JzIGluIFdlYkNvcmUgd2hpbGUgdGhleSBoYWQgaW4g
V2ViS2l0LgorICAgICAgICBVcGRhdGVkIENhY2hlLCBDYWNoZVN0b3JhZ2UsIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gYW5kIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gdG8gZGVhbCB3aXRo
IHRoZXNlIHBvdGVudGlhbCBlcnJvcnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoVGFza3NIYW5kbGVyOjpGZXRjaFRhc2tzSGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFRhc2tzSGFuZGxlcjo6cmVjb3JkcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFRhc2tzSGFuZGxlcjo6YWRkUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6
OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnF1ZXJ5Q2FjaGVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6
YmF0Y2hEZWxldGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dG9Db25uZWN0aW9uUmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpiYXRjaFB1dE9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZTo6dXBkYXRlUmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
U3RvcmFnZTo6cmVtb3ZlKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5o
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuT3JSZW1v
dmVDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
dXBkYXRlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OnVwZGF0ZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246Om9wZW5Db21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24pOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpm
cm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlY29yZHNEYXRhRnJvbVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc0Rh
dGFPckVycm9yRnJvbVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc0Zyb21SZWNv
cmRzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzT3JFcnJvckZyb21SZWNvcmRzRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
dHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24pOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wOC0yMyAgQ2FybG9z
IEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BF
XSBTb21lIGV2ZW50IGhhbmRsZXJzIG5vdCB3b3JraW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxMTNiMGRjZWE2
NWU3OGIzMDE4NGQxZDI4OTQzZTUwYjcwNmRiYTUyLi5kZTg0M2Q5ZWQxYTQ2MjFmYWNmMmVlMzM5
MTRiYzNmMWU4NmI5ODgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDE3LTA4LTIzICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ2FjaGUgQVBJXSBV
bmlmeSBXZWJDb3JlIGFuZCBXZWJLaXQgZXJyb3IgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTkwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92aW5nIGFsbCBjYWxsYmFja3MgYW5k
IGVycm9yIGRlZmluaXRpb25zIGZyb20gV2ViS2l0CisgICAgICAgIGFuZCByZXVzaW5nIERPTUNh
Y2hlIG9uZXMgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5l
OjpjYWNoZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6
cXVlcnlDYWNoZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb246OnB1dFJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPERPTUNhY2hlOjpDYWNoZUluZm8+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlOjpDYWNoZUluZm8+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPERPTUNhY2hlOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPERPTUNhY2hlOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZUNvbXBsZXRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZUNhY2hlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZVJlY29yZHMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkZWxldGVSZWNvcmRz
Q29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
cHV0UmVjb3Jkc0NvbXBsZXRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCisyMDE3LTA4LTIzICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBbQ2FjaGVBUEldIEludHJvZHVjZSBh
IFdlYktpdDo6Q2FjaGVTdG9yYWdlIG5hbWVzcGFjZQogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODg1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZS5jcHAKaW5kZXggZDY0MjMxNGMyM2IyMTllYTI5OTBmNjMzODI5MzMzNzg2NzZlOWI4
Mi4uMzY2ZWIzNjllNWUyYTU0OWFlOGQ5NDFhM2ZkMDQwNzI2MWUyNDM0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAKQEAgLTM0LDkgKzM0LDExIEBACiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlVSTC5oIgogCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGU7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB0b0Nvbm5lY3Rpb25SZWNvcmQoY29uc3Qg
RmV0Y2hSZXF1ZXN0JiwgRmV0Y2hSZXNwb25zZSYsIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJl
c3BvbnNlQm9keSYmKTsKK3N0YXRpYyBSZWNvcmQgdG9Db25uZWN0aW9uUmVjb3JkKGNvbnN0IEZl
dGNoUmVxdWVzdCYsIEZldGNoUmVzcG9uc2UmLCBSZXNwb25zZUJvZHkmJik7CiAKIENhY2hlOjpD
YWNoZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBTdHJpbmcmJiBuYW1lLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQpAQCAtMTM1LDcgKzEzNyw3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBoYXNSZXNwb25zZVZhcnlTdGFySGVhZGVyVmFsdWUoY29uc3QgRmV0
Y2hSZXNwb25zZSYgcmVzcG9uc2UpCiAKIGNsYXNzIEZldGNoVGFza3NIYW5kbGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8RmV0Y2hUYXNrc0hhbmRsZXI+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBG
ZXRjaFRhc2tzSGFuZGxlcihGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+PiYmKT4mJiBjYWxsYmFjaykKKyAgICBleHBsaWNpdCBG
ZXRjaFRhc2tzSGFuZGxlcihGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWNvcmQ+
PiYmKT4mJiBjYWxsYmFjaykKICAgICAgICAgOiBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2sp
KQogICAgIHsKICAgICB9CkBAIC0xNDYsOSArMTQ4LDkgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9jYWxsYmFjayhXVEZNb3ZlKG1fcmVjb3JkcykpOwogICAgIH0KIAotICAgIGNvbnN0IFZlY3Rv
cjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+JiByZWNvcmRzKCkgY29uc3QgeyByZXR1
cm4gbV9yZWNvcmRzOyB9CisgICAgY29uc3QgVmVjdG9yPFJlY29yZD4mIHJlY29yZHMoKSBjb25z
dCB7IHJldHVybiBtX3JlY29yZHM7IH0KIAotICAgIHNpemVfdCBhZGRSZWNvcmQoQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6UmVjb3JkJiYgcmVjb3JkKQorICAgIHNpemVfdCBhZGRSZWNvcmQoUmVj
b3JkJiYgcmVjb3JkKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc0RvbmUoKSk7CiAgICAgICAg
IG1fcmVjb3Jkcy5hcHBlbmQoV1RGTW92ZShyZWNvcmQpKTsKQEAgLTE3MCw4ICsxNzIsOCBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpSZWNvcmQ+IG1fcmVjb3JkczsKLSAgICBGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZl
Y3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+PiYmKT4gbV9jYWxsYmFjazsKKyAg
ICBWZWN0b3I8UmVjb3JkPiBtX3JlY29yZHM7CisgICAgRnVuY3Rpb248dm9pZChFeGNlcHRpb25P
cjxWZWN0b3I8UmVjb3JkPj4mJik+IG1fY2FsbGJhY2s7CiB9OwogCiBFeGNlcHRpb25PcjxSZWY8
RmV0Y2hSZXF1ZXN0Pj4gQ2FjaGU6OnJlcXVlc3RGcm9tSW5mbyhSZXF1ZXN0SW5mbyYmIGluZm8s
IGJvb2wgaWdub3JlTWV0aG9kKQpAQCAtMjA3LDcgKzIwOSw3IEBAIHZvaWQgQ2FjaGU6OmFkZEFs
bChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
IHByb21pCiAgICAgICAgIHJlcXVlc3RzLnVuY2hlY2tlZEFwcGVuZChyZXF1ZXN0T3JFeGNlcHRp
b24ucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAgIH0KIAotICAgIGF1dG8gdGFza0hhbmRsZXIg
PSBhZG9wdFJlZigqbmV3IEZldGNoVGFza3NIYW5kbGVyKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHRoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25PcjxW
ZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPj4mJiByZXN1bHQpIG11dGFibGUg
eworICAgIGF1dG8gdGFza0hhbmRsZXIgPSBhZG9wdFJlZigqbmV3IEZldGNoVGFza3NIYW5kbGVy
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXShFeGNlcHRpb25PcjxWZWN0b3I8UmVjb3JkPj4mJiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTI0OCw3ICsyNTAsNyBAQCB2b2lkIENhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJ
bmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taQogCiAgICAgICAg
ICAgICBDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zOwogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiByZWNvcmQgOiB0YXNrSGFuZGxlci0+cmVjb3JkcygpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LT5yZXNv
dXJjZVJlcXVlc3QoKSwgcmVjb3JkLnJlcXVlc3QsIHJlY29yZC5yZXNwb25zZSwgb3B0aW9ucykp
IHsKKyAgICAgICAgICAgICAgICBpZiAoRE9NQ2FjaGU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0
LT5yZXNvdXJjZVJlcXVlc3QoKSwgcmVjb3JkLnJlcXVlc3QsIHJlY29yZC5yZXNwb25zZSwgb3B0
aW9ucykpIHsKICAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmVycm9yKEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoImFkZEFsbCBjYW5ub3Qgc3RvcmUg
c2V2ZXJhbCBtYXRjaGluZyByZXF1ZXN0cyIpfSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CkBAIC0zMTAsNyArMzEyLDcgQEAgdm9pZCBDYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2VEZWYKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpS
ZXNwb25zZUJvZHkgYm9keTsKKyAgICAgICAgICAgICAgICBET01DYWNoZTo6UmVzcG9uc2VCb2R5
IGJvZHk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7CiAgICAgICAgICAgICAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQo
KSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewpAQCAtMzgxLDkgKzM4
MywxMiBAQCB2b2lkIENhY2hlOjprZXlzKHN0ZDo6b3B0aW9uYWw8UmVxdWVzdEluZm8+JiYgaW5m
bywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLAogdm9pZCBDYWNoZTo6cmV0cmlldmVSZWNv
cmRzKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIHNldFBlbmRpbmdB
Y3Rpdml0eSh0aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhtX2lkZW50
aWZpZXIsIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShWZWN0b3I8Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmIHJlY29yZHMpIHsKKyAgICBtX2Nvbm5lY3Rpb24t
PnJldHJpZXZlUmVjb3JkcyhtX2lkZW50aWZpZXIsIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIW1faXNT
dG9wcGVkKSB7Ci0gICAgICAgICAgICB1cGRhdGVSZWNvcmRzKFdURk1vdmUocmVjb3JkcykpOwor
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBwcm9wYWdhdGUgdGhhdCBl
cnJvciB1cCB0byB0aGUgcHJvbWlzZSBiYXNlZCBvcGVyYXRpb24uCisgICAgICAgICAgICBBU1NF
UlQocmVzdWx0Lmhhc1ZhbHVlKCkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNWYWx1ZSgp
KQorICAgICAgICAgICAgICAgIHVwZGF0ZVJlY29yZHMoV1RGTW92ZShyZXN1bHQudmFsdWUoKSkp
OwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQogICAgICAgICB1bnNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKQEAgLTQwMCw3ICs0MDUsNyBAQCB2b2lkIENhY2hlOjpxdWVyeUNh
Y2hlKFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRp
b25zLAogc3RhdGljIGlubGluZSBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBGZXRjaFJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgY2FjaGVkUmVzcG9uc2UsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiBv
cHRpb25zKQogewogICAgIC8vIFdlIG5lZWQgdG8gcGFzcyB0aGUgcmVzb3VyY2UgcmVxdWVzdCB3
aXRoIGFsbCBjb3JyZWN0IGhlYWRlcnMgaGVuY2Ugd2h5IHdlIGNhbGwgcmVzb3VyY2VSZXF1ZXN0
KCkuCi0gICAgcmV0dXJuIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnF1ZXJ5Q2FjaGVNYXRjaChy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBjYWNoZWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LCBjYWNoZWRSZXNwb25zZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIERPTUNhY2hlOjpxdWVyeUNh
Y2hlTWF0Y2gocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgY2FjaGVkUmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKSwgY2FjaGVkUmVzcG9uc2UsIG9wdGlvbnMpOwogfQogCiBWZWN0b3I8Q2FjaGVT
dG9yYWdlUmVjb3JkPiBDYWNoZTo6cXVlcnlDYWNoZVdpdGhUYXJnZXRTdG9yYWdlKGNvbnN0IEZl
dGNoUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+JiB0YXJnZXRTdG9yYWdlKQpAQCAtNDE5LDE1
ICs0MjQsMTggQEAgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4gQ2FjaGU6OnF1ZXJ5Q2FjaGVX
aXRoVGFyZ2V0U3RvcmFnZShjb25zdCBGZXRjaFJlcXVlc3QKIHZvaWQgQ2FjaGU6OmJhdGNoRGVs
ZXRlT3BlcmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlv
bnMmJiBvcHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+JiYg
Y2FsbGJhY2spCiB7CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIG1fY29ubmVj
dGlvbi0+YmF0Y2hEZWxldGVPcGVyYXRpb24obV9pZGVudGlmaWVyLCByZXF1ZXN0LmludGVybmFs
UmVxdWVzdCgpLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oVmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHMsIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGlmICghbV9pc1N0b3BwZWQpCi0gICAgICAgICAg
ICBjYWxsYmFjayhDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpleGNlcHRpb25PclJlc3VsdCghcmVj
b3Jkcy5pc0VtcHR5KCksIGVycm9yKSk7Ci0KKyAgICBtX2Nvbm5lY3Rpb24tPmJhdGNoRGVsZXRl
T3BlcmF0aW9uKG1faWRlbnRpZmllciwgcmVxdWVzdC5pbnRlcm5hbFJlcXVlc3QoKSwgV1RGTW92
ZShvcHRpb25zKSwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZElk
ZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgeworICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7
CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgICAgIGNh
bGxiYWNrKERPTUNhY2hlOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2soIXJlc3VsdC52YWx1ZSgpLmlz
RW1wdHkoKSk7CisgICAgICAgIH0KICAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7
CiAgICAgfSk7CiB9CiAKLUNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB0b0Nvbm5lY3Rp
b25SZWNvcmQoY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaFJlc3BvbnNlJiByZXNw
b25zZSwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5JiYgcmVzcG9uc2VCb2R5
KQorUmVjb3JkIHRvQ29ubmVjdGlvblJlY29yZChjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3Qs
IEZldGNoUmVzcG9uc2UmIHJlc3BvbnNlLCBET01DYWNoZTo6UmVzcG9uc2VCb2R5JiYgcmVzcG9u
c2VCb2R5KQogewogICAgIC8vIEZJWE1FOiBBZGQgYSBzZXRIVFRQSGVhZGVyRmllbGRzIG9uIFJl
c291cmNlUmVzcG9uc2VCYXNlLgogICAgIFJlc291cmNlUmVzcG9uc2UgY2FjaGVkUmVzcG9uc2Ug
PSByZXNwb25zZS5yZXNvdXJjZVJlc3BvbnNlKCk7CkBAIC00NDYsMjYgKzQ1NCwyOSBAQCBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQgdG9Db25uZWN0aW9uUmVjb3JkKGNvbnN0IEZldGNo
UmVxdWVzdCYgcmVxdWVzdCwgRgogICAgIH07CiB9CiAKLXZvaWQgQ2FjaGU6OmJhdGNoUHV0T3Bl
cmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgRmV0Y2hSZXNwb25zZSYgcmVzcG9u
c2UsIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlc3BvbnNlQm9keSYmIHJlc3BvbnNlQm9keSwg
V1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQordm9p
ZCBDYWNoZTo6YmF0Y2hQdXRPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBG
ZXRjaFJlc3BvbnNlJiByZXNwb25zZSwgRE9NQ2FjaGU6OlJlc3BvbnNlQm9keSYmIHJlc3BvbnNl
Qm9keSwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNr
KQogewotICAgIFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+IHJlY29yZHM7
CisgICAgVmVjdG9yPFJlY29yZD4gcmVjb3JkczsKICAgICByZWNvcmRzLmFwcGVuZCh0b0Nvbm5l
Y3Rpb25SZWNvcmQocmVxdWVzdCwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VCb2R5KSkpOwog
CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24oV1RGTW92ZShyZWNvcmRzKSwgV1RGTW92ZShjYWxsYmFj
aykpOwogfQogCi12b2lkIENhY2hlOjpiYXRjaFB1dE9wZXJhdGlvbihWZWN0b3I8Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmIHJlY29yZHMsIFdURjo6RnVuY3Rpb248dm9pZChFeGNl
cHRpb25Pcjx2b2lkPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGU6OmJhdGNoUHV0T3BlcmF0
aW9uKFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcywgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlz
KTsKLSAgICBtX2Nvbm5lY3Rpb24tPmJhdGNoUHV0T3BlcmF0aW9uKG1faWRlbnRpZmllciwgV1RG
TW92ZShyZWNvcmRzKSwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFZlY3Rv
cjx1aW50NjRfdD4mJiwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6RXJyb3IgZXJyb3IpIHsKLSAg
ICAgICAgaWYgKCFtX2lzU3RvcHBlZCkKLSAgICAgICAgICAgIGNhbGxiYWNrKENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmVycm9yVG9FeGNlcHRpb24oZXJyb3IpKTsKLQorICAgIG1fY29ubmVjdGlv
bi0+YmF0Y2hQdXRPcGVyYXRpb24obV9pZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9y
JiYgcmVzdWx0KSB7CisgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKKyAgICAgICAgICAgIGlm
ICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgY2FsbGJhY2soRE9NQ2FjaGU6
OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICB9CiAgICAgICAgIHVuc2V0UGVu
ZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgIH0pOwogfQogCi12b2lkIENhY2hlOjp1cGRhdGVSZWNv
cmRzKFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+JiYgcmVjb3JkcykKK3Zv
aWQgQ2FjaGU6OnVwZGF0ZVJlY29yZHMoVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzKQogewogICAg
IEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIFZlY3RvcjxDYWNoZVN0b3Jh
Z2VSZWNvcmQ+IG5ld1JlY29yZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKaW5k
ZXggZWZiMzRiYmMxZTlmMDY2NWVmODE0ODk0MDgyNTg1ZDRkYzFhM2M3Yy4uMjdjNTVjMjZlZTgz
MjQxZGRhMjgxMjQ1NjdhODhhNjEyNmM5MjliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGUuaApAQCAtNzMsMTAgKzczLDEwIEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPENhY2hlU3Rv
cmFnZVJlY29yZD4gcXVlcnlDYWNoZVdpdGhUYXJnZXRTdG9yYWdlKGNvbnN0IEZldGNoUmVxdWVz
dCYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiwgY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZVJl
Y29yZD4mKTsKICAgICB2b2lkIHF1ZXJ5Q2FjaGUoUmVmPEZldGNoUmVxdWVzdD4mJiwgQ2FjaGVR
dWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxDYWNoZVN0b3Jh
Z2VSZWNvcmQ+Jik+JiYpOwogICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24oY29uc3QgRmV0
Y2hSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2Vw
dGlvbk9yPGJvb2w+JiYpPiYmKTsKLSAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKGNvbnN0IEZl
dGNoUmVxdWVzdCYsIEZldGNoUmVzcG9uc2UmLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNw
b25zZUJvZHkmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsK
LSAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpSZWNvcmQ+JiYsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7
CisgICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbihjb25zdCBGZXRjaFJlcXVlc3QmLCBGZXRjaFJl
c3BvbnNlJiwgRE9NQ2FjaGU6OlJlc3BvbnNlQm9keSYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhj
ZXB0aW9uT3I8dm9pZD4mJik+JiYpOworICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24oVmVjdG9y
PERPTUNhY2hlOjpSZWNvcmQ+JiYsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjx2b2lk
PiYmKT4mJik7CiAKLSAgICB2b2lkIHVwZGF0ZVJlY29yZHMoVmVjdG9yPENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OlJlY29yZD4mJik7CisgICAgdm9pZCB1cGRhdGVSZWNvcmRzKFZlY3RvcjxET01D
YWNoZTo6UmVjb3JkPiYmKTsKIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgdWludDY0X3QgbV9p
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2Uu
Y3BwCmluZGV4IGVkODA4ZmRlNjYyZjIyY2NmMWU5MTIyNWQwMmRhMGVjOGZiN2FkYTMuLjdlZGNl
NjQ4MTFhMTgxMjAwNTBiMmI5YjQ2MjY4ZmE2MjBkMzhjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNs
dWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBDYWNoZVN0b3JhZ2U6OkNhY2hlU3RvcmFnZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQpA
QCAtMTE3LDggKzExOSwxNiBAQCB2b2lkIENhY2hlU3RvcmFnZTo6cmV0cmlldmVDYWNoZXMoV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAogICAgIHNl
dFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnJldHJpZXZlQ2FjaGVz
KG9yaWdpbiwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFZlY3RvcjxDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpDYWNoZUluZm8+JiYgY2FjaGVzSW5mbykgeworICAgIG1fY29u
bmVjdGlvbi0+cmV0cmlldmVDYWNoZXMob3JpZ2luLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oQ2FjaGVJbmZvc09yRXJyb3ImJiByZXN1bHQpIHsKICAgICAgICAgaWYgKCFt
X2lzU3RvcHBlZCkgeworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBw
cm9wYWdhdGUgdGhhdCBlcnJvciB1cCB0byB0aGUgcHJvbWlzZSBiYXNlZCBvcGVyYXRpb24uCisg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmhhc1ZhbHVlKCkpOworICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuaGFzVmFsdWUoKSkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byYgY2FjaGVz
SW5mbyA9IHJlc3VsdC52YWx1ZSgpOworCiAgICAgICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICAgICAgICAgIG1fY2FjaGVzLnJlbW92ZUFsbE1hdGNoaW5nKFsm
XShhdXRvJiBjYWNoZSkgewogICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZXNJbmZvLmZpbmRN
YXRjaGluZyhbJl0oY29uc3QgYXV0byYgaW5mbykgeyByZXR1cm4gaW5mby5pZGVudGlmaWVyID09
IGNhY2hlLT5pZGVudGlmaWVyKCk7IH0pID09IG5vdEZvdW5kOwpAQCAtMTUyLDEzICsxNjIsMTMg
QEAgdm9pZCBDYWNoZVN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMSW50ZXJmYWNlPENhY2gKICAgICAgICAgQVNTRVJUKCFvcmlnaW4uaXNOdWxs
KCkpOwogCiAgICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgbV9jb25u
ZWN0aW9uLT5vcGVuKG9yaWdpbiwgbmFtZSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OkVycm9yIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5vcGVuKG9y
aWdpbiwgbmFtZSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShjb25z
dCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCFtX2lzU3RvcHBlZCkgewotICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6ZXJyb3JUb0V4Y2VwdGlvbihlcnJvcik7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisKKyAgICAgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVj
dChET01DYWNoZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOwogICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlID0gQ2FjaGU6OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBuYW1lIH0sIGNhY2hlSWRl
bnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gY2FjaGUgPSBDYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmlu
ZyB7IG5hbWUgfSwgcmVzdWx0LnZhbHVlKCksIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOwogICAg
ICAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FjaGUpOwogICAgICAgICAgICAgICAg
ICAgICBtX2NhY2hlcy5hcHBlbmQoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICAgICAgICAgIH0K
QEAgLTE4MSwxMSArMTkxLDEzIEBAIHZvaWQgQ2FjaGVTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwCiAgICAgICAgIEFT
U0VSVCghb3JpZ2luLmlzTnVsbCgpKTsKIAogICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhp
cyk7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlKG1fY2FjaGVzW3Bvc2l0aW9uXS0+aWRl
bnRpZmllcigpLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6RXJyb3IgZXJyb3Ip
IG11dGFibGUgewotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGNhY2hlSWRlbnRpZmllcik7Ci0g
ICAgICAgICAgICBpZiAoIW1faXNTdG9wcGVkKQotICAgICAgICAgICAgICAgIHByb21pc2Uuc2V0
dGxlKENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmV4Y2VwdGlvbk9yUmVzdWx0KHRydWUsIGVycm9y
KSk7Ci0KKyAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9jYWNoZXNbcG9zaXRpb25dLT5p
ZGVudGlmaWVyKCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oY29u
c3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGlmICghbV9pc1N0b3BwZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1
ZSgpKQorICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZTo6ZXJyb3JU
b0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHRydWUpOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgICAgIH0pOwogICAgICAg
ICBtX2NhY2hlcy5yZW1vdmUocG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggMzE1N2ZjMzhm
OTcxMDA4MzJkMWFjZmY0NTcxNjZlNmY0NWFkMmU3ZC4uOTQ4MDM0NGYwYmQyNDA1Y2VjYmUyMDdk
M2U5M2ZiMDg2YmNkZjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0zMSw1NCArMzEsMTEgQEAKICNp
bmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmVycm9yVG9FeGNlcHRpb24oRXJyb3IgZXJyb3IpCi17Ci0gICAgc3dpdGNoIChlcnJvcikgewot
ICAgIGNhc2UgRXJyb3I6Ok5vbmU6Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgY2FzZSBFcnJv
cjo6Tm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJOb3QgaW1wbGVtZW50ZWQiKSB9OwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRl
cmFsKCJJbnRlcm5hbCBlcnJvciIpIH07Ci0gICAgfQotfQordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU6OkRPTUNhY2hlOwogCi1ib29sIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnF1ZXJ5Q2FjaGVN
YXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgY2FjaGVkUmVzcG9uc2Us
IGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiBvcHRpb25zKQotewotICAgIEFTU0VSVChvcHRpb25z
Lmlnbm9yZU1ldGhvZCB8fCByZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiR0VUIik7Ci0KLSAgICBV
UkwgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgVVJMIGNhY2hlZFJlcXVlc3RVUkwg
PSBjYWNoZWRSZXF1ZXN0LnVybCgpOwotCi0gICAgaWYgKG9wdGlvbnMuaWdub3JlU2VhcmNoKSB7
Ci0gICAgICAgIHJlcXVlc3RVUkwuc2V0UXVlcnkoeyB9KTsKLSAgICAgICAgY2FjaGVkUmVxdWVz
dFVSTC5zZXRRdWVyeSh7IH0pOwotICAgIH0KLSAgICBpZiAoIWVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIocmVxdWVzdFVSTCwgY2FjaGVkUmVxdWVzdFVSTCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmIChvcHRpb25zLmlnbm9yZVZhcnkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgU3RyaW5nIHZhcnlWYWx1ZSA9IGNhY2hlZFJlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6VmFyeSk7Ci0gICAgaWYgKHZhcnlWYWx1ZS5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBp
bmVmZmljaWVudCwgd2Ugc2hvdWxkIGJlIGFibGUgdG8gc3BsaXQgYW5kIHRyaW0gd2hpdGVzcGFj
ZXMgYXQgdGhlIHNhbWUgdGltZS4KLSAgICBWZWN0b3I8U3RyaW5nPiB2YXJ5SGVhZGVyTmFtZXM7
Ci0gICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgZmFsc2UsIHZhcnlIZWFkZXJOYW1lcyk7Ci0gICAg
Zm9yIChhdXRvJiBuYW1lIDogdmFyeUhlYWRlck5hbWVzKSB7Ci0gICAgICAgIGlmIChzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMobmFtZSkgPT0gIioiKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBpZiAoY2FjaGVkUmVxdWVzdC5odHRwSGVhZGVyRmllbGQobmFt
ZSkgIT0gcmVxdWVzdC5odHRwSGVhZGVyRmllbGQobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQorbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJ
ZGVudGlmaWVyOwogICAgIG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLmFkZChy
ZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtODYsNyArNDMsNyBAQCB2
b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNv
bnN0IFN0cmluZyYgY2FjaGVOYW1lLAogICAgIGRvT3BlbihyZXF1ZXN0SWRlbnRpZmllciwgb3Jp
Z2luLCBjYWNoZU5hbWUpOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92
ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIE9wZW5SZW1vdmVDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBt
X29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIs
IFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTk0LDcgKzUxLDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBPcGVuUmVtb3ZlQ2Fs
bGJhY2sKICAgICBkb1JlbW92ZShyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsK
IH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyhjb25zdCBT
dHJpbmcmIG9yaWdpbiwgQ2FjaGVzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hl
SW5mb3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX3JldHJpZXZlQ2FjaGVzUGVu
ZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwpA
QCAtMTEwLDcgKzY3LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZVJl
Y29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBSZWNvcmRzQ2EKICAgICBkb1JldHJpZXZl
UmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNo
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vi
Q29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3Bl
cmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlY29yZElkZW50aWZpZXJzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsr
bV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdS
ZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTEx
OCw3ICs3NSw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVPcGVy
YXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zCiAgICAgZG9CYXRjaERlbGV0ZU9w
ZXJhdGlvbihyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0LCBXVEZN
b3ZlKG9wdGlvbnMpKTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1
dE9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+JiYgcmVjb3JkcywgQmF0Y2hPcGVyYXRpb25DYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9w
ZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3Jk
cywgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX2Jh
dGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RG
TW92ZShjYWxsYmFjaykpOwpAQCAtMTI2LDYxICs4MywzNCBAQCB2b2lkIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVj
dG9yPAogICAgIGRvQmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRl
bnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6b3Blbk9yUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVycm9yIGVycm9yKQordm9pZCBDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpvcGVuT3JSZW1vdmVDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0
byBjYWxsYmFjayA9IG1fb3BlbkFuZFJlbW92ZUNhY2hlUGVuZGluZ1JlcXVlc3RzLnRha2UocmVx
dWVzdElkZW50aWZpZXIpKQotICAgICAgICBjYWxsYmFjayhjYWNoZUlkZW50aWZpZXIsIGVycm9y
KTsKKyAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjp1cGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxD
YWNoZUluZm8+JiYgY2FjaGVzKQordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVD
YWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hlSW5mb3NPckVycm9yJiYgcmVz
dWx0KQogewogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdS
ZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92
ZShjYWNoZXMpKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9p
ZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMpCit2b2lkIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OnVwZGF0ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFJlY29y
ZHNPckVycm9yJiYgcmVzdWx0KQogewogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9yZXRyaWV2
ZVJlY29yZHNQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAg
IGNhbGxiYWNrKFdURk1vdmUocmVjb3JkcykpOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJl
c3VsdCkpOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29yZHND
b21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiBy
ZWNvcmRzLCBFcnJvciBlcnJvcikKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZGVsZXRl
UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRXhwZWN0ZWQ8VmVj
dG9yPHVpbnQ2NF90PiwgRXJyb3I+JiYgcmVzdWx0KQogewogICAgIGlmIChhdXRvIGNhbGxiYWNr
ID0gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlm
aWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZWNvcmRzKSwgZXJyb3IpOworICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZl
Y3Rvcjx1aW50NjRfdD4mJiByZWNvcmRzLCBFcnJvciBlcnJvcikKK3ZvaWQgQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgRXhwZWN0ZWQ8VmVjdG9yPHVpbnQ2NF90PiwgRXJyb3I+JiYgcmVzdWx0KQogewogICAgIGlm
IChhdXRvIGNhbGxiYWNrID0gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy50YWtl
KHJlcXVlc3RJZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZWNvcmRzKSwg
ZXJyb3IpOwotfQotCi1DYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6aXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5
JiBib2R5KQotewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxG
b3JtRGF0YT4mIGZvcm1EYXRhKSB7Ci0gICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRD
b3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAg
ICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7Ci0gICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRy
X3QmKSB7Ci0gICAgICAgIHJldHVybiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJv
ZHkgeyB9OwotICAgIH0pOwotfQotCi1zdGF0aWMgaW5saW5lIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OlJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OlJlc3BvbnNlQm9keSYgYm9keSkKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihi
b2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewotICAgICAgICByZXR1cm4g
Zm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29u
c3Qgc3RkOjpudWxscHRyX3QmKSB7Ci0gICAgICAgIHJldHVybiBDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpSZXNwb25zZUJvZHkgeyB9OwotICAgIH0pOwotfQotCi1DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpSZWNvcmQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkOjpjb3B5KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gUmVjb3JkIHsgaWRlbnRpZmllciwgdXBkYXRlUmVzcG9uc2VDb3VudGVy
LCByZXF1ZXN0SGVhZGVyc0d1YXJkLCByZXF1ZXN0LCBvcHRpb25zLCByZWZlcnJlciwgcmVzcG9u
c2VIZWFkZXJzR3VhcmQsIHJlc3BvbnNlLCBjb3B5UmVzcG9uc2VCb2R5KHJlc3BvbnNlQm9keSkg
fTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA3MjM2MTZjNmJmZjM2Yjc0YzhiYzhmNjhjMTgyNzQ3
ZDI3MzAzNDc5Li5mMjA4MGRjOTkxYmZhNWI0ZTU0MzZjZDc1N2NkYmQ1ZjEyODlhMDc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uaApAQCAtMjYsMTA2ICsyNiw1MiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkZldGNoSGVhZGVycy5oIgotI2luY2x1ZGUgIkZldGNoT3B0aW9ucy5oIgotI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJET01DYWNoZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IENhY2hlUXVlcnlPcHRpb25zOwotCiBjbGFzcyBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENhY2hlU3RvcmFnZUNv
bm5lY3Rpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbigpKTsgfQogICAgIHZpcnR1YWwgfkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSA9IGRl
ZmF1bHQ7CiAKLSAgICBlbnVtIGNsYXNzIEVycm9yIHsKLSAgICAgICAgTm9uZSwKLSAgICAgICAg
Tm90SW1wbGVtZW50ZWQsCi0gICAgICAgIEludGVybmFsCi0gICAgfTsKLQotICAgIHN0YXRpYyBF
eGNlcHRpb25Pcjx2b2lkPiBlcnJvclRvRXhjZXB0aW9uKEVycm9yKTsKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdGF0aWMgRXhjZXB0aW9uT3I8VD4gZXhjZXB0aW9uT3JSZXN1bHQoVCYmIHZh
bHVlLCBFcnJvciBlcnJvcikKLSAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gZXJyb3JUb0V4
Y2VwdGlvbihlcnJvcik7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSk7Ci0gICAgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKLQotICAgIHVzaW5nIFJlc3BvbnNlQm9k
eSA9IFZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZm
ZXI+PjsKLSAgICBzdGF0aWMgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwotCi0gICAgc3RydWN0IFJlY29yZCB7Ci0gICAgICAgIFdFQkNPUkVf
RVhQT1JUIFJlY29yZCBjb3B5KCkgY29uc3Q7Ci0KLSAgICAgICAgdWludDY0X3QgaWRlbnRpZmll
cjsKLSAgICAgICAgdWludDY0X3QgdXBkYXRlUmVzcG9uc2VDb3VudGVyOwotCi0gICAgICAgIEZl
dGNoSGVhZGVyczo6R3VhcmQgcmVxdWVzdEhlYWRlcnNHdWFyZDsKLSAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3Q7Ci0gICAgICAgIEZldGNoT3B0aW9ucyBvcHRpb25zOwotICAgICAgICBT
dHJpbmcgcmVmZXJyZXI7CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGNhY2hlTmFtZSwgRE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYp
OworICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRE9NQ2FjaGU6OkNh
Y2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOworICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIERPTUNhY2hlOjpDYWNoZUluZm9zQ2FsbGJhY2smJik7CiAKLSAgICAg
ICAgRmV0Y2hIZWFkZXJzOjpHdWFyZCByZXNwb25zZUhlYWRlcnNHdWFyZDsKLSAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICAgICAgUmVzcG9uc2VCb2R5IHJlc3BvbnNlQm9k
eTsKLSAgICB9OwotCi0gICAgc3RydWN0IENhY2hlSW5mbyB7Ci0gICAgICAgIHVpbnQ2NF90IGlk
ZW50aWZpZXI7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgIH07Ci0KLSAgICB1c2luZyBPcGVu
UmVtb3ZlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QsIEVycm9yKT47Ci0g
ICAgdXNpbmcgQ2FjaGVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPENhY2hl
SW5mbz4mJik+OwotICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9p
ZChWZWN0b3I8UmVjb3JkPiYmKT47Ci0gICAgdXNpbmcgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8dWludDY0X3Q+JiYsIEVycm9yKT47Ci0KLSAgICB2
b2lkIG9wZW4oY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyogY2Fj
aGVOYW1lICovLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJik7Ci0gICAgdm9pZCByZW1vdmUodWludDY0
X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJik7Ci0gICAgdm9p
ZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgQ2FjaGVzQ2FsbGJh
Y2smJik7Ci0KLSAgICB2b2lkIHJldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCAvKiBjYWNoZUlkZW50
aWZpZXIgKi8sIFJlY29yZHNDYWxsYmFjayYmKTsKLSAgICB2b2lkIGJhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmKTsKLSAgICB2
b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgVmVj
dG9yPFJlY29yZD4mJiwgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJp
ZXZlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIERPTUNhY2hlOjpSZWNvcmRzQ2Fs
bGJhY2smJik7CisgICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYsIERP
TUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworICAgIHZvaWQgYmF0Y2hQdXRP
cGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8RE9NQ2FjaGU6OlJlY29y
ZD4mJiwgRE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKIHByb3RlY3Rl
ZDoKICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSAgZGVmYXVsdDsKIAotICAgIHZvaWQg
b3BlbkNvbXBsZXRlZCh1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIEVycm9yIGVycm9yKSB7IG9wZW5PclJlbW92ZUNvbXBsZXRlZChpZGVudGlmaWVyLCBjYWNo
ZUlkZW50aWZpZXIsIGVycm9yKTsgfQotICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRXJyb3IgZXJyb3IpIHsgb3Bl
bk9yUmVtb3ZlQ29tcGxldGVkKGlkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgZXJyb3IpOyB9
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIFZlY3RvcjxDYWNoZUluZm8+JiYpOworICAgIHZvaWQgb3BlbkNvbXBsZXRlZCh1
aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJv
ciYgcmVzdWx0KSB7IG9wZW5PclJlbW92ZUNvbXBsZXRlZChpZGVudGlmaWVyLCByZXN1bHQpOyB9
CisgICAgdm9pZCByZW1vdmVDb21wbGV0ZWQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgRE9N
Q2FjaGU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgeyBvcGVuT3JSZW1vdmVDb21w
bGV0ZWQoaWRlbnRpZmllciwgcmVzdWx0KTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZTo6Q2FjaGVJbmZv
c09yRXJyb3ImJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlY29yZHModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBFcnJvcik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8
dWludDY0X3Q+JiYsIEVycm9yKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlY29y
ZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIERPTUNhY2hlOjpSZWNvcmRzT3JFcnJvciYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIERPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3Im
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYp
OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkb09wZW4odWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJpbmcmIC8qIGNh
Y2hlTmFtZSAqLykgeyBvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCAwLCBFcnJvcjo6
Tm90SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsgcmVtb3Zl
Q29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCAwLCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9
CisgICAgdmlydHVhbCB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyogY2FjaGVOYW1lICovKSB7
IG9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERPTUNhY2hl
OjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb1JlbW92ZSh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICov
KSB7IHJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuZXhwZWN0ZWQoRE9N
Q2FjaGU6OkVycm9yOjpOb3RJbXBsZW1lbnRlZCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRvUmV0
cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyog
b3JpZ2luICovKSB7IHVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgeyB9KTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIHsgdXBkYXRlUmVjb3JkcyhyZXF1
ZXN0SWRlbnRpZmllciwgeyB9KTsgfQotICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoRGVsZXRlT3Bl
cmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50
aWZpZXIgKi8sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYpIHsg
ZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgeyB9LCBFcnJvcjo6Tm90
SW1wbGVtZW50ZWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywg
VmVjdG9yPFJlY29yZD4mJikgeyBwdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVy
LCB7IH0sIEVycm9yOjpOb3RJbXBsZW1lbnRlZCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9CYXRj
aERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyog
Y2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0
aW9ucyYmKSB7IGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VV
bmV4cGVjdGVkKERPTUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxET01DYWNoZTo6UmVjb3JkPiYm
KSB7IHB1dFJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVk
KERPTUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBvcGVuT3JSZW1vdmVDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRXJyb3IpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgb3Blbk9yUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOwogCi0gICAgSGFzaE1hcDx1aW50
NjRfdCwgT3BlblJlbW92ZUNhbGxiYWNrPiBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1
ZXN0czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBDYWNoZXNDYWxsYmFjaz4gbV9yZXRyaWV2ZUNh
Y2hlc1BlbmRpbmdSZXF1ZXN0czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWNvcmRzQ2FsbGJh
Y2s+IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2s+IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVx
dWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgRE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllckNh
bGxiYWNrPiBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0czsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBET01DYWNoZTo6Q2FjaGVJbmZvc0NhbGxiYWNrPiBtX3JldHJpZXZlQ2FjaGVz
UGVuZGluZ1JlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIERPTUNhY2hlOjpSZWNvcmRz
Q2FsbGJhY2s+IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzOworICAgIEhhc2hNYXA8
dWludDY0X3QsIERPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrPiBtX2JhdGNoRGVs
ZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzOwogCiAgICAgdWludDY0X3QgbV9sYXN0UmVxdWVzdElk
ZW50aWZpZXIgeyAwIH07CiB9OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwCmluZGV4IDEwYWE2NTQ5NDYxYjk3ODI2ZDQzMzFmYjM0MmE4MTQzM2Nk
ZmJkNGMuLjgyMDk5NGIxMTE4ZjJkMzUwZmNjZTYzZjNiNzljOTU5NTlkMjdiMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIldvcmtlclJ1
bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKIAordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU6OkRPTUNhY2hlOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBDcm9zc1Ro
cmVhZFJlY29yZERhdGEgewpAQCAtNTAsMTAgKzUyLDEwIEBAIHN0cnVjdCBDcm9zc1RocmVhZFJl
Y29yZERhdGEgewogCiAgICAgRmV0Y2hIZWFkZXJzOjpHdWFyZCByZXNwb25zZUhlYWRlcnNHdWFy
ZDsKICAgICBSZXNvdXJjZVJlc3BvbnNlOjpDcm9zc1RocmVhZERhdGEgcmVzcG9uc2U7Ci0gICAg
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5IHJlc3BvbnNlQm9keTsKKyAgICBS
ZXNwb25zZUJvZHkgcmVzcG9uc2VCb2R5OwogfTsKIAotc3RhdGljIENyb3NzVGhyZWFkUmVjb3Jk
RGF0YSB0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0YShjb25zdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpSZWNvcmQmIHJlY29yZCkKK3N0YXRpYyBDcm9zc1RocmVhZFJlY29yZERhdGEgdG9Dcm9zc1Ro
cmVhZFJlY29yZERhdGEoY29uc3QgUmVjb3JkJiByZWNvcmQpCiB7CiAgICAgcmV0dXJuIENyb3Nz
VGhyZWFkUmVjb3JkRGF0YSB7CiAgICAgICAgIHJlY29yZC5pZGVudGlmaWVyLApAQCAtNjQsMTMg
KzY2LDEzIEBAIHN0YXRpYyBDcm9zc1RocmVhZFJlY29yZERhdGEgdG9Dcm9zc1RocmVhZFJlY29y
ZERhdGEoY29uc3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvCiAgICAgICAgIHJlY29yZC5yZWZlcnJl
ci5pc29sYXRlZENvcHkoKSwKICAgICAgICAgcmVjb3JkLnJlc3BvbnNlSGVhZGVyc0d1YXJkLAog
ICAgICAgICByZWNvcmQucmVzcG9uc2UuY3Jvc3NUaHJlYWREYXRhKCksCi0gICAgICAgIENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246Omlzb2xhdGVkUmVzcG9uc2VCb2R5KHJlY29yZC5yZXNwb25zZUJv
ZHkpCisgICAgICAgIGlzb2xhdGVkUmVzcG9uc2VCb2R5KHJlY29yZC5yZXNwb25zZUJvZHkpCiAg
ICAgfTsKIH0KIAotc3RhdGljIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCBmcm9tQ3Jv
c3NUaHJlYWRSZWNvcmREYXRhKENyb3NzVGhyZWFkUmVjb3JkRGF0YSYmIGRhdGEpCitzdGF0aWMg
UmVjb3JkIGZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEoQ3Jvc3NUaHJlYWRSZWNvcmREYXRhJiYg
ZGF0YSkKIHsKLSAgICByZXR1cm4gQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkIHsKKyAg
ICByZXR1cm4gUmVjb3JkIHsKICAgICAgICAgZGF0YS5pZGVudGlmaWVyLAogICAgICAgICBkYXRh
LnVwZGF0ZVJlc3BvbnNlQ291bnRlciwKICAgICAgICAgZGF0YS5yZXF1ZXN0SGVhZGVyc0d1YXJk
LApAQCAtMTE1LDEwICsxMTcsMTAgQEAgdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Ojpkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmkKICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKG1fbWFpblRocmVhZENvbm5l
Y3Rpb24pOwogCi0gICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPm9wZW4ob3JpZ2luLCBj
YWNoZU5hbWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
cmVxdWVzdElkZW50aWZpZXJdKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgRXJyb3IgZXJyb3Ip
IG11dGFibGUgewotICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKFt0aGlzLCBlcnJvciwgY2FjaGVJZGVudGlmaWVyLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0
aW9uLT5vcGVuKG9yaWdpbiwgY2FjaGVOYW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZp
ZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdF0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgICAg
ICAgICAgb3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBl
cnJvcik7CisgICAgICAgICAgICAgICAgb3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwg
cmVzdWx0KTsKICAgICAgICAgICAgIH0sIG1fdGFza01vZGUpOwogICAgICAgICB9KTsKICAgICB9
KTsKQEAgLTEzMCwxMSArMTMyLDExIEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRDb25u
ZWN0aW9uKTsKIAotICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZW1vdmUoY2FjaGVJ
ZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKHVpbnQ2NF90IHJlbW92ZWRDYWNo
ZUlkZW50aWZpZXIsIEVycm9yIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQocmVtb3ZlZENhY2hlSWRlbnRpZmllciwgcmVtb3ZlZENhY2hlSWRlbnRpZmllciA9PSBj
YWNoZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgZXJyb3JdKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBtX21haW5UaHJlYWRD
b25uZWN0aW9uLT5yZW1vdmUoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZp
ZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBBU1NFUlQoIXJlc3VsdC5oYXNWYWx1ZSgpIHx8IHJlc3VsdC52YWx1ZSgpID09IGNh
Y2hlSWRlbnRpZmllcik7CisgICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCByZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgICAgICByZW1vdmVD
b21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgZXJyb3IpOworICAg
ICAgICAgICAgICAgIHJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0KTsK
ICAgICAgICAgICAgIH0sIG1fdGFza01vZGUpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTE0
NiwyMSArMTQ4LDI2IEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9SZXRy
aWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKG1fbWFpblRocmVhZENvbm5lY3Rpb24pOwog
Ci0gICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZlQ2FjaGVzKG9yaWdpbiwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRl
bnRpZmllcl0oY29uc3QgVmVjdG9yPENhY2hlSW5mbz4mIGNhY2hlcykgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBWZWN0b3I8Q2FjaGVJbmZvPiBpc29sYXRlZENhY2hlczsKLSAgICAgICAgICAgIGlz
b2xhdGVkQ2FjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FjaGVzLnNpemUoKSk7Ci0gICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhY2hlIDogY2FjaGVzKQotICAgICAgICAgICAgICAg
IGlzb2xhdGVkQ2FjaGVzLnVuY2hlY2tlZEFwcGVuZChDYWNoZUluZm8geyBjYWNoZS5pZGVudGlm
aWVyLCBjYWNoZS5uYW1lLmlzb2xhdGVkQ29weSgpIH0pOwotCi0gICAgICAgICAgICBtX3Byb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjYWNoZXMgPSBXVEZNb3ZlKGlzb2xhdGVkQ2FjaGVz
KSwgcmVxdWVzdElkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgeworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcyhv
cmlnaW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVx
dWVzdElkZW50aWZpZXJdKENhY2hlSW5mb3NPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIENhY2hlSW5mb3NPckVycm9yIGlzb2xhdGVkUmVzdWx0OworICAgICAgICAgICAg
aWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFZl
Y3RvcjxDYWNoZUluZm8+IGlzb2xhdGVkQ2FjaGVzOworICAgICAgICAgICAgICAgIGlzb2xhdGVk
Q2FjaGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVzdWx0LnZhbHVlKCkuc2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhY2hlIDogcmVzdWx0LnZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgICAgIGlzb2xhdGVkQ2FjaGVzLnVuY2hlY2tlZEFwcGVuZChDYWNoZUlu
Zm8geyBjYWNoZS5pZGVudGlmaWVyLCBjYWNoZS5uYW1lLmlzb2xhdGVkQ29weSgpIH0pOworICAg
ICAgICAgICAgICAgIGlzb2xhdGVkUmVzdWx0ID0gV1RGTW92ZShpc29sYXRlZENhY2hlcyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
R2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCByZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gV1RGTW92ZShpc29sYXRlZFJlc3VsdCldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwot
ICAgICAgICAgICAgICAgIHVwZGF0ZUNhY2hlcyhyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShj
YWNoZXMpKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIs
IFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3Jk
RGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVjb3Jkcyhjb25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6UmVjb3JkPiYgcmVjb3JkcykKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPENyb3NzVGhy
ZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVjb3Jkcyhjb25zdCBWZWN0b3I8UmVjb3Jk
PiYgcmVjb3JkcykKIHsKICAgICBWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiByZWNvcmRz
RGF0YTsKICAgICByZWNvcmRzRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHMuc2l6
ZSgpKTsKQEAgLTE2OSwyNSArMTc2LDQwIEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPENyb3NzVGhy
ZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGFGcm9tUmVjb3Jkcyhjb25zdCBWZWN0b3I8CiAgICAg
cmV0dXJuIHJlY29yZHNEYXRhOwogfQogCi1zdGF0aWMgaW5saW5lIFZlY3RvcjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpSZWNvcmQ+IHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoVmVjdG9yPENyb3Nz
VGhyZWFkUmVjb3JkRGF0YT4mJiByZWNvcmRzRGF0YSkKK3N0YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8
VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9yPiByZWNvcmRzRGF0YU9yRXJyb3JG
cm9tUmVjb3Jkcyhjb25zdCBSZWNvcmRzT3JFcnJvciYgcmVzdWx0KQogewotICAgIFZlY3RvcjxD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+IHJlY29yZHM7CisgICAgaWYgKCFyZXN1bHQu
aGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdC5lcnJvcigp
KTsKKworICAgIHJldHVybiByZWNvcmRzRGF0YUZyb21SZWNvcmRzKHJlc3VsdC52YWx1ZSgpKTsK
K30KKworc3RhdGljIGlubGluZSBWZWN0b3I8UmVjb3JkPiByZWNvcmRzRnJvbVJlY29yZHNEYXRh
KFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+JiYgcmVjb3Jkc0RhdGEpCit7CisgICAgVmVj
dG9yPFJlY29yZD4gcmVjb3JkczsKICAgICByZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
cmVjb3Jkc0RhdGEuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHJlY29yZERhdGEgOiByZWNvcmRz
RGF0YSkKICAgICAgICAgcmVjb3Jkcy51bmNoZWNrZWRBcHBlbmQoZnJvbUNyb3NzVGhyZWFkUmVj
b3JkRGF0YShXVEZNb3ZlKHJlY29yZERhdGEpKSk7CiAgICAgcmV0dXJuIHJlY29yZHM7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgUmVjb3Jkc09yRXJyb3IgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0Rh
dGEoRXhwZWN0ZWQ8VmVjdG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4sIEVycm9yPiYmIHJlY29y
ZHNEYXRhKQoreworICAgIGlmICghcmVjb3Jkc0RhdGEuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKHJlY29yZHNEYXRhLmVycm9yKCkpOworICAgIHJldHVybiByZWNv
cmRzRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVjb3Jkc0RhdGEudmFsdWUoKSkpOworfQorCiB2
b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB7CiAgICAg
bV9wcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgQVNTRVJUKG1fbWFpblRocmVhZENvbm5lY3Rpb24pOwogCi0gICAgICAgIG1fbWFpblRo
cmVhZENvbm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJd
KFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcykgbXV0YWJsZSB7Ci0gICAgICAgICAgICBtX3Byb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZWNvcmRzRGF0YSA9IHJlY29yZHNEYXRhRnJvbVJl
Y29yZHMocmVjb3JkcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmV0
cmlldmVSZWNvcmRzKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3Jkc09yRXJyb3ImJiBy
ZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKSwgcmVzdWx0ID0gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMocmVzdWx0KSwgcmVx
dWVzdElkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgICAgIHVwZGF0ZVJlY29yZHMocmVxdWVzdElk
ZW50aWZpZXIsIHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZWNvcmRzRGF0YSkpKTsK
KyAgICAgICAgICAgICAgICB1cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZWNvcmRz
T3JFcnJvckZyb21SZWNvcmRzRGF0YShXVEZNb3ZlKHJlc3VsdCkpKTsKICAgICAgICAgICAgIH0s
IG1fdGFza01vZGUpOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTE5OSwxMSArMjIxLDExIEBA
IHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlv
bih1aW50NjRfdCByZXF1ZXN0SWRlbnRpCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKIAotICAgICAgICBtX21h
aW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaERlbGV0ZU9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIs
IHJlcXVlc3QsIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKFZlY3Rvcjx1aW50NjRfdD4mJiBy
ZWNvcmRzLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIG1fbWFpblRocmVhZENvbm5l
Y3Rpb24tPmJhdGNoRGVsZXRlT3BlcmF0aW9uKGNhY2hlSWRlbnRpZmllciwgcmVxdWVzdCwgV1RG
TW92ZShvcHRpb25zKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0
KSBtdXRhYmxlIHsKIAotICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyksIGVycm9yLCByZXF1ZXN0SWRlbnRpZmllcl0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICBt
X3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNX
b3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgICAgICBkZWxldGVSZWNvcmRzQ29tcGxl
dGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7CisgICAgICAg
ICAgICAgICAgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92
ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIG1fdGFza01vZGUpOwogICAgICAgICB9KTsKICAg
ICB9KTsKQEAgLTIxNSwxMSArMjM3LDExIEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6ZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllCiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRD
b25uZWN0aW9uKTsKIAotICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaFB1dE9w
ZXJhdGlvbihjYWNoZUlkZW50aWZpZXIsIHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShy
ZWNvcmRzRGF0YSkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIHJlcXVlc3RJZGVudGlmaWVyXShWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3Ig
ZXJyb3IpIG11dGFibGUgeworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaFB1
dE9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIsIHJlY29yZHNGcm9tUmVjb3Jkc0RhdGEoV1RGTW92
ZShyZWNvcmRzRGF0YSkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1
bHQpIG11dGFibGUgewogCi0gICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCByZWNvcmRzID0gV1RGTW92ZShyZWNvcmRzKSwgZXJyb3IsIHJlcXVlc3RJZGVudGlmaWVy
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgICAgIHB1dFJlY29yZHNDb21wbGV0
ZWQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKKyAgICAgICAg
ICAgICAgICBwdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJl
c3VsdCkpOwogICAgICAgICAgICAgfSwgbV90YXNrTW9kZSk7CiAgICAgICAgIH0pOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uaAppbmRleCA5ZjQ4YWYyZmJlMTgxNTRlZjUwMmIyZjkyNDJh
ODRjMTNhMzA1ZTI1Li4xYWRkYzUyNGVkYjljNWQ3N2VlNjhhNTRiMWVlZjE4YjI4OGQxZDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtNDIsMTMgKzQyLDEzIEBAIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbihXb3JrZXJHbG9iYWxTY29wZSYp
OwogCiAgICAgLy8gV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbgotICAgIHZvaWQgZG9P
cGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAq
LywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8pIGZpbmFsOwotICAgIHZvaWQgZG9SZW1v
dmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmll
ciAqLykgZmluYWw7Ci0gICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLykgZmluYWw7CisgICAgdm9pZCBk
b09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGNhY2hlTmFtZSkgZmluYWw7CisgICAgdm9pZCBkb1JlbW92ZSh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyKSBmaW5hbDsKKyAg
ICB2b2lkIGRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgb3JpZ2luKSBmaW5hbDsKIAogICAgIHZvaWQgZG9SZXRyaWV2ZVJlY29yZHModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7
CiAgICAgdm9pZCBkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYpIGZpbmFsOwotICAgIHZvaWQgZG9C
YXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRvQmF0Y2hQ
dXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgVmVjdG9yPERPTUNhY2hlOjpSZWNvcmQ+JiYpIGZpbmFsOwogCiAgICAgV29ya2Vy
R2xvYmFsU2NvcGUmIG1fc2NvcGU7CiAgICAgV29ya2VyTG9hZGVyUHJveHkmIG1fcHJveHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZThmODBiZDM2YmFjN2ZkNDAwYTVjNzJhODM1ZTEyMTlhMTAyNDE0Yi4uOWI4MDc2ZDhlZmY5
ODk4MThiZGJlYjE4MzZjMGI2ZjAzYTUxMWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc5Miw2ICsxNzkyLDggQEAKIAkJ
NDFGNTRGOEUxQzUwQzUwQzAwMzM4NDg4IC8qIEZldGNoUmVxdWVzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY1NEY4NzFDNTBDNEY2MDAzMzg0
ODggLyogRmV0Y2hSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNDFGQTMwM0UxMzE2QzI5QzAwQzBCRkM1
IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFGQTMwM0MxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlh
Q29udHJvbHMuY3BwICovOyB9OwogCQk0MUZBMzAzRjEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVy
TWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuaCAq
LzsgfTsKKwkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8qIERPTUNhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBQkQyQjFGNERGRTQyMDA2
QTZDOTcgLyogRE9NQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk0MUZBQkQyRjFGNEUwMkNCMDA2QTZDOTcgLyogRE9NQ2FjaGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUJEMkUxRjRF
MDI1MTAwNkE2Qzk3IC8qIERPTUNhY2hlLmNwcCAqLzsgfTsKIAkJNDFGQjI3OUMxRjM0REI4QTAw
Nzk1NDg3IC8qIERPTVdpbmRvd0NhY2hlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc4RTFGMzRDMjgyMDA3OTU0ODcgLyogRE9NV2luZG93
Q2FjaGVzLmNwcCAqLzsgfTsKIAkJNDFGQjI3OUQxRjM0REI4RTAwNzk1NDg3IC8qIFdvcmtlckds
b2JhbFNjb3BlQ2FjaGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRkIyNzhGMUYzNEMyODIwMDc5NTQ4NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNh
Y2hlcy5jcHAgKi87IH07CiAJCTQzMTA3QkUyMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBz
ZXVkb1R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzMTA3QkUxMThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCAq
LzsgfTsKQEAgLTk0NzksNiArOTQ4MSw4IEBACiAJCTQxRjU0Rjg5MUM1MEM0RjYwMDMzODQ4OCAv
KiBGZXRjaFJlcXVlc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZldGNoUmVxdWVzdC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkEzMDNDMTMxNkMyOUMwMEMwQkZD
NSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlck1lZGlhQ29udHJvbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MUZBMzAzRDEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRkFCRDJCMUY0REZFNDIwMDZBNkM5NyAv
KiBET01DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZBQkQyRTFGNEUwMjUxMDA2QTZDOTcg
LyogRE9NQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9N
Q2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZCMjc4QzFGMzRDMjgy
MDA3OTU0ODcgLyogRE9NV2luZG93Q2FjaGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdpbmRvd0Nh
Y2hlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZCMjc4RDFGMzRDMjgyMDA3
OTU0ODcgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQjI3
OEUxRjM0QzI4MjAwNzk1NDg3IC8qIERPTVdpbmRvd0NhY2hlcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01XaW5kb3dDYWNoZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTc2OTAsNiArMTc2OTQsOCBAQAogCQkJCTQxRDEyOUM5MUYzRDBFRTMwMEQxNUU0NyAvKiBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk0MUQxMjlDQzFGM0QwRUUzMDBEMTVFNDcg
LyogQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oICovLAogCQkJCTQxRDEyOUNBMUYzRDBFRTMwMEQx
NUU0NyAvKiBDYWNoZVN0b3JhZ2VSZWNvcmQuaCAqLywKKwkJCQk0MUZBQkQyRTFGNEUwMjUxMDA2
QTZDOTcgLyogRE9NQ2FjaGUuY3BwICovLAorCQkJCTQxRkFCRDJCMUY0REZFNDIwMDZBNkM5NyAv
KiBET01DYWNoZS5oICovLAogCQkJCTQxRkIyNzhFMUYzNEMyODIwMDc5NTQ4NyAvKiBET01XaW5k
b3dDYWNoZXMuY3BwICovLAogCQkJCTQxRkIyNzhDMUYzNEMyODIwMDc5NTQ4NyAvKiBET01XaW5k
b3dDYWNoZXMuaCAqLywKIAkJCQk0MTM4MEMyQjFGMzQzRTJGMDAxNTVGREEgLyogRE9NV2luZG93
Q2FjaGVzLmlkbCAqLywKQEAgLTI3MjMxLDYgKzI3MjM3LDcgQEAKIAkJCQlBODE4NUYzOTA5NzY1
NzY2MDA1ODI2RDkgLyogRG9jdW1lbnRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzM4ODlB
MTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOEY2QkMzMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MUZBQkQyRDFGNERGRTRBMDA2QTZDOTcgLyogRE9NQ2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZDOUEwRjc1MTY0MDk0Q0YwMDNENkI4RCAvKiBET01DU1NOYW1lc3Bh
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCM0E4ODcyMTQ1NjMyRjkwMDNBRThGNSAvKiBET01E
T01TZXR0YWJsZVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBQkEyNUExNEJDNjEz
MzAwQUE5QTExIC8qIERPTUVkaXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTI2Myw2ICszMTI3
MCw3IEBACiAJCQkJQTgxODVGM0EwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5NzM4ODlBMDExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRX
cml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQzIwREI1NUNEQzAwMURCNzk0IC8q
IERPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFGQUJEMkYxRjRF
MDJDQjAwNkE2Qzk3IC8qIERPTUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENjc3NzM4
MTk1Q0FGM0QwMDcyRTBEMyAvKiBET01DU1NOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0FBQkEyNTkxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzFCREYyNDE1NkMxODgzMDAxQzEyNDMgLyogRE9NRXJyb3IuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc0ZjY3MWYzODk1ODBhMTY3
OWRkN2IzMjExMWJkYWJjYTQ2YWZlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0VudW1UcmFp
dHMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLW5hbWVzcGFjZSBDYWNoZVN0b3JhZ2Ugewot
Ci1lbnVtIGNsYXNzIEVycm9yIHsKLSAgICBJbnRlcm5hbAotfTsKLQotdXNpbmcgUmVjb3JkID0g
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkOwotCi11c2luZyBDYWNoZUlk
ZW50aWZpZXJPckVycm9yID0gRXhwZWN0ZWQ8dWludDY0X3QsIEVycm9yPjsKLXVzaW5nIENhY2hl
SWRlbnRpZmllckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDYWNoZUlkZW50aWZpZXJPckVycm9y
JiYpPjsKLQotdXNpbmcgQ2FjaGVJbmZvc09yRXJyb3IgPSBFeHBlY3RlZDxWZWN0b3I8V2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2FjaGVJbmZvPiwgRXJyb3I+OwotdXNpbmcgQ2Fj
aGVJbmZvc0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDYWNoZUluZm9zT3JFcnJvciYmKT47Ci0K
LXVzaW5nIFJlY29yZHNPckVycm9yID0gRXhwZWN0ZWQ8VmVjdG9yPFJlY29yZD4sIEVycm9yPjsK
LXVzaW5nIFJlY29yZHNDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVjb3Jkc09yRXJyb3ImJik+
OwotCi11c2luZyBSZWNvcmRJZGVudGlmaWVyc09yRXJyb3IgPSBFeHBlY3RlZDxWZWN0b3I8dWlu
dDY0X3Q+LCBFcnJvcj47Ci11c2luZyBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJik+OwotCi11c2luZyBDb21wbGV0aW9u
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPjsKLQotfSAv
LyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1uYW1l
c3BhY2UgV1RGIHsKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpDYWNoZVN0
b3JhZ2U6OkVycm9yPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAg
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVycm9yLAotICAgICAgICBXZWJLaXQ6OkNhY2hlU3RvcmFn
ZTo6RXJyb3I6OkludGVybmFsCi0gICAgPjsKLX07Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXgg
MTM4OTk4M2Y0MmFmOWUzMzJmMTBjZWE1YzkzZmRjYjFmMjAxNjA0Mi4uYjc4NTM0NjQ0ODBhZGI0
NTJhNTgzMWUzOTljM2E2NTllY2JjMDRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMzIsNiAr
MzIsOCBAQAogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlOwor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CkBAIC0yNzks
MTYgKzI4MSwxNiBAQCBDYWNoZSogRW5naW5lOjpjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVmVjdG9yPFdlYkNvcmU6OkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OkNhY2hlSW5mbz4gRW5naW5lOjpjYWNoZXMoY29uc3QgU3RyaW5nJiBvcmln
aW4pIGNvbnN0CitWZWN0b3I8Q2FjaGVJbmZvPiBFbmdpbmU6OmNhY2hlcyhjb25zdCBTdHJpbmcm
IG9yaWdpbikgY29uc3QKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jYWNoZXMuZmluZChvcmln
aW4pOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2NhY2hlcy5lbmQoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIFZlY3RvcjxXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpDYWNo
ZUluZm8+IGNhY2hlc0luZm87CisgICAgVmVjdG9yPENhY2hlSW5mbz4gY2FjaGVzSW5mbzsKICAg
ICBjYWNoZXNJbmZvLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaXRlcmF0b3ItPnZhbHVlLnNpemUo
KSk7CiAgICAgZm9yIChhdXRvJiBjYWNoZSA6IGl0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAgY2Fj
aGVzSW5mby51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
Q2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZX0pOworICAgICAgICBjYWNo
ZXNJbmZvLnVuY2hlY2tlZEFwcGVuZChDYWNoZUluZm8geyBjYWNoZS5pZGVudGlmaWVyLCBjYWNo
ZS5uYW1lfSk7CiAKICAgICByZXR1cm4gY2FjaGVzSW5mbzsKIH0KQEAgLTMwMCw3ICszMDIsNyBA
QCBWZWN0b3I8dWludDY0X3Q+IEVuZ2luZTo6cXVlcnlDYWNoZShjb25zdCBWZWN0b3I8UmVjb3Jk
PiYgcmVjb3JkcywgY29uc3QgV2ViQ29yZQogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiByZXN1bHRz
OwogICAgIGZvciAoY29uc3QgYXV0byYgcmVjb3JkIDogcmVjb3JkcykgewotICAgICAgICBpZiAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cXVlcnlDYWNoZU1hdGNoKHJlcXVlc3Qs
IHJlY29yZC5yZXF1ZXN0LCByZWNvcmQucmVzcG9uc2UsIG9wdGlvbnMpKQorICAgICAgICBpZiAo
V2ViQ29yZTo6RE9NQ2FjaGU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LCByZWNvcmQucmVxdWVz
dCwgcmVjb3JkLnJlc3BvbnNlLCBvcHRpb25zKSkKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KHJlY29yZC5pZGVudGlmaWVyKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuaAppbmRleCA4MmQ0YTQwYWIzNDM2YTMwMjlkMWRiYzFmMmQzNzIxYjAzOThlYWVhLi5iMzAz
MDA0ZTVhMTE3MDJhZTVmZTcyM2NmNDNlOTdlNjE0MzJiMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKQEAg
LTQ1LDMwICs0NSwzMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVuZ2luZSYgZnJvbShQQUw6OlNl
c3Npb25JRCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25JRCk7
CiAKLSAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2Fj
aGVOYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKLSAgICB2b2lkIHJlbW92ZSh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwotICAgIHZv
aWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlSW5mb3NDYWxsYmFj
ayYmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
Y2FjaGVOYW1lLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7
CisgICAgdm9pZCByZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpET01D
YWNoZTo6Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZUNhY2hl
cyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mb3NDYWxs
YmFjayYmKTsKIAotICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgUmVjb3Jkc0NhbGxiYWNrJiYpOwotICAgIHZvaWQgcHV0UmVjb3Jkcyh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2smJik7Ci0gICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9w
dGlvbnMmJiwgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNv
cmRzQ2FsbGJhY2smJik7CisgICAgdm9pZCBwdXRSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiYsIFdlYkNvcmU6OkRPTUNh
Y2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworICAgIHZvaWQgZGVsZXRlTWF0Y2hp
bmdSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpS
ZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmdp
bmUmIGRlZmF1bHRFbmdpbmUoKTsKIAotICAgIHZvaWQgd3JpdGVDYWNoZXNUb0Rpc2soQ29tcGxl
dGlvbkNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmVhZENhY2hlc0Zyb21EaXNrKENvbXBsZXRpb25D
YWxsYmFjayYmKTsKKyAgICB2b2lkIHdyaXRlQ2FjaGVzVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hl
OjpDb21wbGV0aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCByZWFkQ2FjaGVzRnJvbURpc2soV2Vi
Q29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKIAotICAgIHVzaW5nIENhY2hl
T3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2FjaGU+LCBFcnJvcj47
Ci0gICAgdXNpbmcgQ2FjaGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ2FjaGVPckVycm9yJiYp
PjsKKyAgICB1c2luZyBDYWNoZU9yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFw
cGVyPENhY2hlPiwgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPjsKKyAgICB1c2luZyBDYWNoZUNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKENhY2hlT3JFcnJvciYmKT47CiAKLSAgICBWZWN0
b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2FjaGVJbmZvPiBjYWNoZXMoY29u
c3QgU3RyaW5nJiBvcmlnaW4pIGNvbnN0OworICAgIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6
Q2FjaGVJbmZvPiBjYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4pIGNvbnN0OwogCiAgICAgdm9p
ZCByZWFkQ2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZUNhbGxiYWNrJiYpOwot
ICAgIHZvaWQgd3JpdGVDYWNoZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8dWludDY0X3Q+JiYsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBy
ZW1vdmVDYWNoZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0
X3Q+JiYsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisgICAgdm9pZCB3cml0ZUNhY2hl
UmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgV2Vi
Q29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisgICAgdm9pZCBy
ZW1vdmVDYWNoZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0
X3Q+JiYsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwog
Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmQ+Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVy
eU9wdGlvbnMmKTsKKyAgICBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5Q2FjaGUoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmKTsKIAogICAgIENhY2hlKiBj
YWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgK
aW5kZXggMWQ4ZjExOWE2ZTkxM2Y2NDlmZGMzM2RhMzM1OGU4NmVkYjZkN2Y2Ny4uOTY2YjUxNDRl
YzdkYjFjN2E5YTE3YTQ2ZjZhM2MwZjRhMzNjMzAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
aApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhY2hlU3Rv
cmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NQ2FjaGUuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM2LDcgKzM2LDcg
QEAgbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CiBzdHJ1Y3QgQ2FjaGUgewogICAgIHVpbnQ2NF90
IGlkZW50aWZpZXIgeyAwIH07CiAgICAgU3RyaW5nIG5hbWU7Ci0gICAgVmVjdG9yPFJlY29yZD4g
cmVjb3JkczsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4gcmVjb3JkczsK
ICAgICB1aW50NjRfdCBuZXh0UmVjb3JkSWRlbnRpZmllciB7IDAgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IDdmZTI5YTFkZDQ4ZDcwYmViZDI1Zjgw
MTM4NzFhNWE5NDlmNmM1N2IuLjM1ZWIxZDY1YjdmYThkOTVkZTFkNjMzMzVhMDljYTRkMGQ1NWI4
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcApAQCAtMjksOCArMjks
MTAgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSAiV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9u
cy5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGU7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OjpDYWNoZVN0b3JhZ2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsMTQg
KzQ0LDE0IEBAIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlCiAKIHZvaWQgQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbjo6b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNo
ZU5hbWUpCiB7Ci0gICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkub3BlbihvcmlnaW4sIGNhY2hl
TmFtZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCBy
ZXF1ZXN0SWRlbnRpZmllcl0oQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYmIHJlc3VsdCkgeworICAg
IEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLm9wZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZp
ZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgewogICAgICAgICBtX2Nv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246Ok9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25J
RC5zZXNzaW9uSUQoKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbjo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKLSAgICBFbmdpbmU6OmZy
b20oc2Vzc2lvbklEKS5yZW1vdmUoY2FjaGVJZGVudGlmaWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUlk
ZW50aWZpZXJPckVycm9yJiYgcmVzdWx0KSB7CisgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCku
cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oY29uc3QgQ2FjaGVJZGVudGlmaWVy
T3JFcnJvciYgcmVzdWx0KSB7CiAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVtb3ZlQ29tcGxldGVkKHJl
cXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0p
OwogfQpAQCAtNzUsNyArNzcsNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OmRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgIH0pOwog
fQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnB1dFJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
UmVjb3JkPiYmIHJlY29yZHMpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnB1
dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMp
CiB7CiAgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkucHV0UmVjb3JkcyhjYWNoZUlkZW50aWZp
ZXIsIFdURk1vdmUocmVjb3JkcyksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRo
aXMsIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJzT3JFcnJv
ciYmIHJlc3VsdCkgewogICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlB1dFJlY29yZHNDb21wbGV0ZWQocmVx
dWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCmluZGV4IDRhOTNlNWYzNmJjODcyZjhjMzhjODUyMTRi
NjM1MzYyNDczYzM0Y2UuLmZiM2E2NjRlNTQ1YzRkYWY3NTU4ZmQxNDlhYTFlYTFmMWRmOWQ1MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGVsZXRl
TWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJik7Ci0gICAgdm9pZCBwdXRSZWNvcmRzKFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYm
KTsKKyAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01D
YWNoZTo6UmVjb3JkPiYmKTsKIAogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBt
X2Nvbm5lY3Rpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCmluZGV4IDRkZjM5NDI1NmJmYmViZWRmN2U2ZjEwZjU4MDRlOWNjMTYwNGFh
YjQuLjU5MjJlZWQ2NjcyNzZkZGMxZTU0YTQ4MTg0M2RmYmUzYTllNTJkZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI3LDUgKzI3
LDUgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7CiAKICAgICBS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IHN0cnVjdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKLSAgICBQdXRSZWNv
cmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OlJlY29yZD4gcmVjb3JkKTsKKyAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IHJlY29yZCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA3
YzQ5Y2U4NjI5OGI2MjFmZWY2NzZiNWUwNjU4MjEwNGQ1NGY4ZmY0Li5hYTNiODIyZjAyOWY4YWYx
NzY5YzZhNGQ1OTVkNGFkZDM4ODJmZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI3OCwxMyArMjc4LDEzIEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxGZXRjaE9wdGlvbnM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRmV0Y2hPcHRp
b25zJiBvcHRpb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpDYWNoZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2FjaGVJbmZvJiBpbmZvKQordm9pZCBB
cmd1bWVudENvZGVyPERPTUNhY2hlOjpDYWNoZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgRE9NQ2FjaGU6OkNhY2hlSW5mbyYgaW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGlu
Zm8uaWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IGluZm8ubmFtZTsKIH0KIAotYm9vbCBBcmd1
bWVudENvZGVyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OkNhY2hlSW5mbz46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpDYWNoZUluZm8mIHJlY29yZCkK
K2Jvb2wgQXJndW1lbnRDb2RlcjxET01DYWNoZTo6Q2FjaGVJbmZvPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIERPTUNhY2hlOjpDYWNoZUluZm8mIHJlY29yZCkKIHsKICAgICB1aW50NjRfdCBp
ZGVudGlmaWVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCkBAIC0zMDAs
NyArMzAwLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OkNh
Y2hlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLAogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEFyZ3VtZW50Q29kZXI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29y
ZCYgcmVjb3JkKQordm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlOjpSZWNvcmQ+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2FjaGU6OlJlY29yZCYgcmVjb3JkKQogewogICAg
IGVuY29kZXIgPDwgcmVjb3JkLmlkZW50aWZpZXI7CiAKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbgogICAgIH0pOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCYgcmVjb3JkKQorYm9vbCBBcmd1bWVudENvZGVy
PERPTUNhY2hlOjpSZWNvcmQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRE9NQ2FjaGU6OlJl
Y29yZCYgcmVjb3JkKQogewogICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShpZGVudGlmaWVyKSkKQEAgLTM2MCw3ICszNjAsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIENhYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXBkYXRlUmVzcG9uc2VDb3VudGVy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6UmVzcG9uc2VCb2R5IHJlc3BvbnNlQm9keTsKKyAgICBXZWJDb3JlOjpET01DYWNo
ZTo6UmVzcG9uc2VCb2R5IHJlc3BvbnNlQm9keTsKICAgICBib29sIGhhc1NoYXJlZEJ1ZmZlckJv
ZHk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNTaGFyZWRCdWZmZXJCb2R5KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAppbmRleCA2N2VkYWY4NzRkNTA3ZTk2NWQyMWJmNTI4YjFiZDNiNmZjNzVlYWNjLi43
M2UwMmFkMjJjNWVlYjI2NzkzNWU3YTIxNGQ1MzQ3YWZmOTQwNTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMjA2LDE0ICsyMDYsMTQgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9u
cz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q2FjaGVRdWVy
eU9wdGlvbnMmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2FjaGVJbmZvPiB7Ci0gICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpD
YWNoZUluZm8mKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OkNhY2hlSW5mbyYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvPiB7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvJik7
CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpET01DYWNoZTo6Q2Fj
aGVJbmZvJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3Jk
Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpSZWNvcmQmKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZCYpOworICAgIHN0YXRpYyBib29s
IGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZCYpOwogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpFdmVudFRyYWNraW5nUmVnaW9u
cz4gewpAQCAtNzkyLDE0ICs3OTIsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlPiB7CiAgICAgPjsKIH07CiAKLXRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
RXJyb3I+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3Jl
OjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpFcnJvciwKLSAgICAgICAgV2ViQ29yZTo6Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6RXJyb3I6Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OkVycm9yOjpOb3RJbXBsZW1lbnRlZAotICAgID47Ci19OwotCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkZldGNoT3B0aW9uczo6VHlwZT4gewog
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkZldGNoT3B0
aW9uczo6VHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9X
ZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA1YzI4MmJlZWY3YjVlMjY2
MWU5MWI5NzZjYjgwNmFiMTU2YjQ0YjU5Li5jM2QxMzAyNzUwOWMzMmIzMjdjMjZkOWU0ZjEwZjYx
MzU5MjRiMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5o
IgogCisjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlRW5naW5lLmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgpAQCAtMzQsNiArMzUsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2Fj
aGU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpDYWNoZVN0b3JhZ2U7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNzksMzkgKzgxLDM5IEBAIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllCiAgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246
OkRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucyksIDApOwogfQogCi12b2lkIFdlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4mJiByZWNvcmRzKQordm9pZCBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYgcmVjb3JkcykK
IHsKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbjo6UHV0UmVjb3JkcyhtX3Nlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXIsIGNhY2hl
SWRlbnRpZmllciwgcmVjb3JkcyksIDApOwogfQogCi12b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246Om9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hlSWRl
bnRpZmllck9yRXJyb3ImJiByZXN1bHQpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
Om9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENhY2hlSWRl
bnRpZmllck9yRXJyb3ImIHJlc3VsdCkKIHsKLSAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpv
cGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQuaGFzVmFsdWUoKSA/IHJlc3Vs
dC52YWx1ZSgpIDogMCwgIXJlc3VsdC5oYXNWYWx1ZSgpID8gRXJyb3I6OkludGVybmFsIDogRXJy
b3I6Ok5vbmUpOworICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW5Db21wbGV0ZWQocmVx
dWVzdElkZW50aWZpZXIsIHJlc3VsdCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6cmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZUlk
ZW50aWZpZXJPckVycm9yJiYgcmVzdWx0KQordm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpyZW1vdmVDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IENhY2hl
SWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkKIHsKLSAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpyZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdC5oYXNWYWx1ZSgpID8g
cmVzdWx0LnZhbHVlKCkgOiAwLCAhcmVzdWx0Lmhhc1ZhbHVlKCkgPyBFcnJvcjo6SW50ZXJuYWwg
OiBFcnJvcjo6Tm9uZSk7CisgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlQ29tcGxl
dGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpOwogfQogCiB2b2lkIFdlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OnVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgQ2Fj
aGVJbmZvc09yRXJyb3ImJiByZXN1bHQpCiB7Ci0gICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
dXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQuaGFzVmFsdWUoKSA/IHJlc3Vs
dC52YWx1ZSgpIDogVmVjdG9yPENhY2hlSW5mbz4oKSk7CisgICAgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6dXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwog
fQogCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZVJlY29yZHModWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIFJlY29yZHNPckVycm9yJiYgcmVzdWx0KQogewotICAgIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdC5oYXNWYWx1ZSgpID8gV1RGTW92ZShyZXN1bHQudmFsdWUoKSkgOiBWZWN0b3I8UmVjb3Jk
PigpKTsKKyAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVSZWNvcmRzKHJlcXVlc3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkKIHsKLSAgICBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBy
ZXN1bHQuaGFzVmFsdWUoKSA/IHJlc3VsdC52YWx1ZSgpIDogVmVjdG9yPHVpbnQ2NF90PigpLCAh
cmVzdWx0Lmhhc1ZhbHVlKCkgPyBFcnJvcjo6SW50ZXJuYWwgOiBFcnJvcjo6Tm9uZSk7CisgICAg
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRl
bnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKIH0KIAogdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBS
ZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1bHQpCiB7Ci0gICAgQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0Lmhh
c1ZhbHVlKCkgPyByZXN1bHQudmFsdWUoKSA6IFZlY3Rvcjx1aW50NjRfdD4oKSwgIXJlc3VsdC5o
YXNWYWx1ZSgpID8gRXJyb3I6OkludGVybmFsIDogRXJyb3I6Ok5vbmUpOworICAgIENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdWx0KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCmluZGV4IDczYzFkMzdh
OTc4YjU3NDI1ZWI3NmVjMjJmNzQ0NTg5MTcyNTEyMDQuLjI1YWZmY2YwMGFkYzA4ZjgyMTRlZDc0
ZjUwZmM4MjEzOGMxODFjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaApAQCAtMjUsNyArMjUsNiBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKQEAgLTU5LDE1ICs1OCwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkb1JldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKSBmaW5hbDsKICAgICB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJikgZmluYWw7Ci0g
ICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxSZWNvcmQ+JiYpIGZpbmFsOworICAgIHZv
aWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJikg
ZmluYWw7CiAKLSAgICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIENhY2hlU3RvcmFnZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYmKTsKLSAgICB2b2lkIHJl
bW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgQ2FjaGVTdG9yYWdlOjpD
YWNoZUlkZW50aWZpZXJPckVycm9yJiYpOwotICAgIHZvaWQgdXBkYXRlQ2FjaGVzKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZVN0b3JhZ2U6OkNhY2hlSW5mb3NPckVycm9yJiYpOwor
ICAgIHZvaWQgb3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKKyAgICB2b2lkIHJl
bW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKKyAgICB2b2lkIHVwZGF0ZUNhY2hl
cyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5m
b3NPckVycm9yJiYpOwogCi0gICAgdm9pZCB1cGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBDYWNoZVN0b3JhZ2U6OlJlY29yZHNPckVycm9yJiYpOwotICAgIHZvaWQgZGVs
ZXRlUmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgQ2FjaGVTdG9y
YWdlOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJik7Ci0gICAgdm9pZCBwdXRSZWNvcmRzQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZVN0b3JhZ2U6OlJlY29yZElk
ZW50aWZpZXJzT3JFcnJvciYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlY29yZHModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRzT3JFcnJvciYmKTsKKyAg
ICB2b2lkIGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJik7CisgICAgdm9p
ZCBwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3Jl
OjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYpOwogCiAgICAgV2ViQ2FjaGVT
dG9yYWdlUHJvdmlkZXImIG1fcHJvdmlkZXI7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9u
SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQzMDg2M2Zh
NzdiMDA2ZTIyNTA0ZGVjNzBmNmM4NTFmZGYxYzFlYWMuLmE5ZTMzMjQxZjM5NmYxOWEwYWUwZTMw
NDkzNzJjZmRhNTE4MmExNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9D
YWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0yMSwxMSArMjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbiB7Ci0gICAgT3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlSWRlbnRpZmllck9yRXJy
b3IgcmVzdWx0KTsKLSAgICBSZW1vdmVDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZUlkZW50aWZpZXJPckVycm9yIHJlc3VsdCk7
Ci0gICAgVXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6Q2FjaGVJbmZvc09yRXJyb3IgcmVzdWx0KTsKKyAgICBPcGVuQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVu
dGlmaWVyT3JFcnJvciByZXN1bHQpOworICAgIFJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3Ig
cmVzdWx0KTsKKyAgICBVcGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdl
YkNvcmU6OkRPTUNhY2hlOjpDYWNoZUluZm9zT3JFcnJvciByZXN1bHQpOwogCi0gICAgVXBkYXRl
UmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OlJlY29yZHNPckVycm9yIHJlc3VsdCk7Ci0gICAgRGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OlJlY29yZElkZW50
aWZpZXJzT3JFcnJvciByZXN1bHQpOwotICAgIFB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpSZWNvcmRJZGVudGlmaWVy
c09yRXJyb3IgcmVzdWx0KTsKKyAgICBVcGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6UmVjb3Jkc09yRXJyb3IgcmVzdWx0KTsKKyAgICBE
ZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3Jl
OjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yIHJlc3VsdCk7CisgICAgUHV0UmVj
b3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2Fj
aGU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciByZXN1bHQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318917</attachid>
            <date>2017-08-23 14:15:27 -0700</date>
            <delta_ts>2017-08-23 14:30:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175902-20170823141526.patch</filename>
            <type>text/plain</type>
            <size>91219</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ2YmZhNDczYTE1MjAy
MjM3Nzg1YjdiZGI2NjBmZDg5NGYxN2M2My4uZmFjYTI1ZjU5MGI1ODVlN2RlYjRjMzA0OTFhOTQ0
Yjc1ZmI0ZDVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE3LTA4LTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBVbmlm
eSBXZWJDb3JlIGFuZCBXZWJLaXQgZXJyb3IgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAg
ICAgICBJbnRyb2R1Y2luZyBhIERPTUNhY2hlIG5hbWVzcGFjZSBlbmNsb3Npbmcgc3RydWN0dXJl
cywgY2FsbGJhY2tzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucworICAgICAgICBwcmV2aW91c2x5
IGZvdW5kIGluIGVpdGhlciBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIG9yIFdlYktp
dDo6Q2FjaGVTdG9yYWdlLgorCisgICAgICAgIFNvbWUgcHJldmlvdXNseSB1c2VkIGNhbGxiYWNr
cyBoYWQgbm8gd2F5IHRvIHBhc3MgZXJyb3JzIGluIFdlYkNvcmUgd2hpbGUgdGhleSBoYWQgaW4g
V2ViS2l0LgorICAgICAgICBVcGRhdGVkIENhY2hlLCBDYWNoZVN0b3JhZ2UsIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gYW5kIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gdG8gZGVhbCB3aXRo
IHRoZXNlIHBvdGVudGlhbCBlcnJvcnMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoVGFza3NIYW5kbGVyOjpGZXRjaFRhc2tzSGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFRhc2tzSGFuZGxlcjo6cmVjb3JkcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFRhc2tzSGFuZGxlcjo6YWRkUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6
OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnF1ZXJ5Q2FjaGVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6
YmF0Y2hEZWxldGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dG9Db25uZWN0aW9uUmVj
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpiYXRjaFB1dE9wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZTo6dXBkYXRlUmVjb3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
U3RvcmFnZTo6cmVtb3ZlKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5o
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuT3JSZW1v
dmVDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
dXBkYXRlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OnVwZGF0ZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6ZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246Om9wZW5Db21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24pOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b0Nyb3NzVGhyZWFkUmVjb3JkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpm
cm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlY29yZHNEYXRhRnJvbVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc0Rh
dGFPckVycm9yRnJvbVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc0Zyb21SZWNv
cmRzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpyZWNvcmRzT3JFcnJvckZyb21SZWNvcmRzRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1Jl
dHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24pOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxNy0wOC0yMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBUcmFjayBWaWRlb1BsYXliYWNrUXVhbGl0eSBtZXRyaWNzIHdoZW4gdXNp
bmcgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkOTNmODdjOTIwYmRm
OWU0MDUzZTRjMmI2YzJlYmViMzA5MGQ2MzU1Li5lNmQzYmNhYzNlZGNiMTgwNjIwOWI3NTRiNmFm
MGE1YzY2NDJmYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA4LTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBVbmlm
eSBXZWJDb3JlIGFuZCBXZWJLaXQgZXJyb3IgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92aW5nIGFsbCBjYWxsYmFja3MgYW5kIGVy
cm9yIGRlZmluaXRpb25zIGZyb20gV2ViS2l0CisgICAgICAgIGFuZCByZXVzaW5nIERPTUNhY2hl
IG9uZXMgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpj
YWNoZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cXVl
cnlDYWNoZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbjo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb246OnB1dFJlY29yZHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPERPTUNhY2hlOjpDYWNoZUluZm8+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPERPTUNhY2hlOjpDYWNoZUluZm8+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZUNvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZUNhY2hlcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZVJlY29yZHMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkZWxldGVSZWNvcmRzQ29t
cGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cHV0
UmVjb3Jkc0NvbXBsZXRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDE3LTA4LTIzICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLVUlEZWxlZ2F0
ZVByaXZhdGUgY2FsbGJhY2tzIGNvcnJlc3BvbmRpbmcgdG8gV0tQYWdlVUlDbGllbnQncyB0YWtl
Rm9jdXMsIGZvY3VzLCBhbmQgdW5mb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
LmNwcAppbmRleCBkNjQyMzE0YzIzYjIxOWVhMjk5MGY2MzM4MjkzMzM3ODY3NmU5YjgyLi4zNjZl
YjM2OWU1ZTJhNTQ5YWU4ZDk0MWEzZmQwNDA3MjYxZTI0MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0NhY2hlLmNwcApAQCAtMzQsOSArMzQsMTEgQEAKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOjpET01DYWNoZTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkIHRvQ29ubmVjdGlvblJlY29yZChjb25zdCBGZXRjaFJl
cXVlc3QmLCBGZXRjaFJlc3BvbnNlJiwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VC
b2R5JiYpOworc3RhdGljIFJlY29yZCB0b0Nvbm5lY3Rpb25SZWNvcmQoY29uc3QgRmV0Y2hSZXF1
ZXN0JiwgRmV0Y2hSZXNwb25zZSYsIFJlc3BvbnNlQm9keSYmKTsKIAogQ2FjaGU6OkNhY2hlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFN0cmluZyYmIG5hbWUsIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCkBAIC0xMzUsNyArMTM3LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGhhc1Jlc3BvbnNlVmFyeVN0YXJIZWFkZXJWYWx1ZShjb25zdCBGZXRjaFJlc3Bv
bnNlJiByZXNwb25zZSkKIAogY2xhc3MgRmV0Y2hUYXNrc0hhbmRsZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxGZXRjaFRhc2tzSGFuZGxlcj4gewogcHVibGljOgotICAgIGV4cGxpY2l0IEZldGNoVGFz
a3NIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OlJlY29yZD4+JiYpPiYmIGNhbGxiYWNrKQorICAgIGV4cGxpY2l0IEZldGNoVGFz
a3NIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPFJlY29yZD4+JiYpPiYm
IGNhbGxiYWNrKQogICAgICAgICA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCiAgICAg
ewogICAgIH0KQEAgLTE0Niw5ICsxNDgsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NhbGxi
YWNrKFdURk1vdmUobV9yZWNvcmRzKSk7CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4mIHJlY29yZHMoKSBjb25zdCB7IHJldHVybiBtX3Jl
Y29yZHM7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVjb3JkPiYgcmVjb3JkcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjb3JkczsgfQogCi0gICAgc2l6ZV90IGFkZFJlY29yZChDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpSZWNvcmQmJiByZWNvcmQpCisgICAgc2l6ZV90IGFkZFJlY29yZChSZWNvcmQmJiBy
ZWNvcmQpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlzRG9uZSgpKTsKICAgICAgICAgbV9yZWNv
cmRzLmFwcGVuZChXVEZNb3ZlKHJlY29yZCkpOwpAQCAtMTcwLDggKzE3Miw4IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJl
Y29yZD4gbV9yZWNvcmRzOwotICAgIEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4+JiYpPiBtX2NhbGxiYWNrOworICAgIFZlY3Rv
cjxSZWNvcmQ+IG1fcmVjb3JkczsKKyAgICBGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3Rv
cjxSZWNvcmQ+PiYmKT4gbV9jYWxsYmFjazsKIH07CiAKIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJl
cXVlc3Q+PiBDYWNoZTo6cmVxdWVzdEZyb21JbmZvKFJlcXVlc3RJbmZvJiYgaW5mbywgYm9vbCBp
Z25vcmVNZXRob2QpCkBAIC0yMDcsNyArMjA5LDcgQEAgdm9pZCBDYWNoZTo6YWRkQWxsKFZlY3Rv
cjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWkK
ICAgICAgICAgcmVxdWVzdHMudW5jaGVja2VkQXBwZW5kKHJlcXVlc3RPckV4Y2VwdGlvbi5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgfQogCi0gICAgYXV0byB0YXNrSGFuZGxlciA9IGFkb3B0
UmVmKCpuZXcgRmV0Y2hUYXNrc0hhbmRsZXIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPFZlY3RvcjxD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+PiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
YXV0byB0YXNrSGFuZGxlciA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hUYXNrc0hhbmRsZXIoW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWNvcmQ+PiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIHByb21pc2UucmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjQ4LDcgKzI1MCw3IEBAIHZvaWQgQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYg
aW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pCiAKICAgICAgICAgICAgIENh
Y2hlUXVlcnlPcHRpb25zIG9wdGlvbnM7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJl
Y29yZCA6IHRhc2tIYW5kbGVyLT5yZWNvcmRzKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6cXVlcnlDYWNoZU1hdGNoKHJlcXVlc3QtPnJlc291cmNlUmVx
dWVzdCgpLCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBvcHRpb25zKSkgeworICAg
ICAgICAgICAgICAgIGlmIChET01DYWNoZTo6cXVlcnlDYWNoZU1hdGNoKHJlcXVlc3QtPnJlc291
cmNlUmVxdWVzdCgpLCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3BvbnNlLCBvcHRpb25zKSkg
ewogICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+ZXJyb3IoRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiYWRkQWxsIGNhbm5vdCBzdG9yZSBzZXZlcmFs
IG1hdGNoaW5nIHJlcXVlc3RzIil9KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTMxMCw3ICszMTIsNyBAQCB2b2lkIENhY2hlOjpwdXQoUmVxdWVz
dEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZURl
ZgogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICBwcm9taXNlLnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlc3BvbnNl
Qm9keSBib2R5OworICAgICAgICAgICAgICAgIERPTUNhY2hlOjpSZXNwb25zZUJvZHkgYm9keTsK
ICAgICAgICAgICAgICAgICBpZiAoYXV0byBidWZmZXIgPSByZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKICAgICAgICAgICAgICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNw
b25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShF
eGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CkBAIC0zODEsOSArMzgzLDEyIEBA
IHZvaWQgQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNo
ZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsCiB2b2lkIENhY2hlOjpyZXRyaWV2ZVJlY29yZHMoV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5
KHRoaXMpOwotICAgIG1fY29ubmVjdGlvbi0+cmV0cmlldmVSZWNvcmRzKG1faWRlbnRpZmllciwg
W3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFZlY3RvcjxDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpSZWNvcmQ+JiYgcmVjb3JkcykgeworICAgIG1fY29ubmVjdGlvbi0+cmV0cmll
dmVSZWNvcmRzKG1faWRlbnRpZmllciwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7CiAgICAgICAgIGlmICghbV9pc1N0b3BwZWQp
IHsKLSAgICAgICAgICAgIHVwZGF0ZVJlY29yZHMoV1RGTW92ZShyZWNvcmRzKSk7CisgICAgICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHByb3BhZ2F0ZSB0aGF0IGVycm9yIHVw
IHRvIHRoZSBwcm9taXNlIGJhc2VkIG9wZXJhdGlvbi4KKyAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQuaGFzVmFsdWUoKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAg
ICAgICAgICAgICAgdXBkYXRlUmVjb3JkcyhXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSk7CiAgICAg
ICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9CiAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2
aXR5KHRoaXMpOwpAQCAtNDAwLDcgKzQwNSw3IEBAIHZvaWQgQ2FjaGU6OnF1ZXJ5Q2FjaGUoUmVm
PEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsCiBz
dGF0aWMgaW5saW5lIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IEZldGNoUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBjYWNoZWRSZXNwb25zZSwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgLy8gV2UgbmVlZCB0byBwYXNzIHRoZSByZXNvdXJjZSByZXF1ZXN0IHdpdGggYWxs
IGNvcnJlY3QgaGVhZGVycyBoZW5jZSB3aHkgd2UgY2FsbCByZXNvdXJjZVJlcXVlc3QoKS4KLSAg
ICByZXR1cm4gQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cXVlcnlDYWNoZU1hdGNoKHJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCksIGNhY2hlZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIGNhY2hl
ZFJlc3BvbnNlLCBvcHRpb25zKTsKKyAgICByZXR1cm4gRE9NQ2FjaGU6OnF1ZXJ5Q2FjaGVNYXRj
aChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBjYWNoZWRSZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCBjYWNoZWRSZXNwb25zZSwgb3B0aW9ucyk7CiB9CiAKIFZlY3RvcjxDYWNoZVN0b3JhZ2VS
ZWNvcmQ+IENhY2hlOjpxdWVyeUNhY2hlV2l0aFRhcmdldFN0b3JhZ2UoY29uc3QgRmV0Y2hSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgVmVj
dG9yPENhY2hlU3RvcmFnZVJlY29yZD4mIHRhcmdldFN0b3JhZ2UpCkBAIC00MTksMTUgKzQyNCwx
OCBAQCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiBDYWNoZTo6cXVlcnlDYWNoZVdpdGhUYXJn
ZXRTdG9yYWdlKGNvbnN0IEZldGNoUmVxdWVzdAogdm9pZCBDYWNoZTo6YmF0Y2hEZWxldGVPcGVy
YXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9w
dGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25Pcjxib29sPiYmKT4mJiBjYWxsYmFj
aykKIHsKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7Ci0gICAgbV9jb25uZWN0aW9uLT5i
YXRjaERlbGV0ZU9wZXJhdGlvbihtX2lkZW50aWZpZXIsIHJlcXVlc3QuaW50ZXJuYWxSZXF1ZXN0
KCksIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6RXJy
b3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkKLSAgICAgICAgICAgIGNhbGxi
YWNrKENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmV4Y2VwdGlvbk9yUmVzdWx0KCFyZWNvcmRzLmlz
RW1wdHkoKSwgZXJyb3IpKTsKLQorICAgIG1fY29ubmVjdGlvbi0+YmF0Y2hEZWxldGVPcGVyYXRp
b24obV9pZGVudGlmaWVyLCByZXF1ZXN0LmludGVybmFsUmVxdWVzdCgpLCBXVEZNb3ZlKG9wdGlv
bnMpLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oUmVjb3JkSWRlbnRpZmll
cnNPckVycm9yJiYgcmVzdWx0KSB7CisgICAgICAgIGlmICghbV9pc1N0b3BwZWQpIHsKKyAgICAg
ICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgY2FsbGJhY2so
RE9NQ2FjaGU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjayghcmVzdWx0LnZhbHVlKCkuaXNFbXB0eSgp
KTsKKyAgICAgICAgfQogICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICB9
KTsKIH0KIAotQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkIHRvQ29ubmVjdGlvblJlY29y
ZChjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoUmVzcG9uc2UmIHJlc3BvbnNlLCBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkmJiByZXNwb25zZUJvZHkpCitSZWNv
cmQgdG9Db25uZWN0aW9uUmVjb3JkKGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgRmV0Y2hS
ZXNwb25zZSYgcmVzcG9uc2UsIERPTUNhY2hlOjpSZXNwb25zZUJvZHkmJiByZXNwb25zZUJvZHkp
CiB7CiAgICAgLy8gRklYTUU6IEFkZCBhIHNldEhUVFBIZWFkZXJGaWVsZHMgb24gUmVzb3VyY2VS
ZXNwb25zZUJhc2UuCiAgICAgUmVzb3VyY2VSZXNwb25zZSBjYWNoZWRSZXNwb25zZSA9IHJlc3Bv
bnNlLnJlc291cmNlUmVzcG9uc2UoKTsKQEAgLTQ0NiwyNiArNDU0LDI5IEBAIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OlJlY29yZCB0b0Nvbm5lY3Rpb25SZWNvcmQoY29uc3QgRmV0Y2hSZXF1ZXN0
JiByZXF1ZXN0LCBGCiAgICAgfTsKIH0KIAotdm9pZCBDYWNoZTo6YmF0Y2hQdXRPcGVyYXRpb24o
Y29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaFJlc3BvbnNlJiByZXNwb25zZSwgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5JiYgcmVzcG9uc2VCb2R5LCBXVEY6OkZ1
bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYgY2FsbGJhY2spCit2b2lkIENhY2hl
OjpiYXRjaFB1dE9wZXJhdGlvbihjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoUmVz
cG9uc2UmIHJlc3BvbnNlLCBET01DYWNoZTo6UmVzcG9uc2VCb2R5JiYgcmVzcG9uc2VCb2R5LCBX
VEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4gcmVjb3JkczsKKyAgICBW
ZWN0b3I8UmVjb3JkPiByZWNvcmRzOwogICAgIHJlY29yZHMuYXBwZW5kKHRvQ29ubmVjdGlvblJl
Y29yZChyZXF1ZXN0LCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZUJvZHkpKSk7CiAKICAgICBi
YXRjaFB1dE9wZXJhdGlvbihXVEZNb3ZlKHJlY29yZHMpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9
CiAKLXZvaWQgQ2FjaGU6OmJhdGNoUHV0T3BlcmF0aW9uKFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpSZWNvcmQ+JiYgcmVjb3JkcywgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9y
PHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBDYWNoZTo6YmF0Y2hQdXRPcGVyYXRpb24oVmVj
dG9yPFJlY29yZD4mJiByZWNvcmRzLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8dm9p
ZD4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAg
IG1fY29ubmVjdGlvbi0+YmF0Y2hQdXRPcGVyYXRpb24obV9pZGVudGlmaWVyLCBXVEZNb3ZlKHJl
Y29yZHMpLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oVmVjdG9yPHVpbnQ2
NF90PiYmLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpFcnJvciBlcnJvcikgewotICAgICAgICBp
ZiAoIW1faXNTdG9wcGVkKQotICAgICAgICAgICAgY2FsbGJhY2soQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6ZXJyb3JUb0V4Y2VwdGlvbihlcnJvcikpOwotCisgICAgbV9jb25uZWN0aW9uLT5iYXRj
aFB1dE9wZXJhdGlvbihtX2lkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIFt0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJiByZXN1
bHQpIHsKKyAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgeworICAgICAgICAgICAgaWYgKCFyZXN1
bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhET01DYWNoZTo6ZXJyb3JU
b0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIH0KICAgICAgICAgdW5zZXRQZW5kaW5nQWN0
aXZpdHkodGhpcyk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ2FjaGU6OnVwZGF0ZVJlY29yZHMoVmVj
dG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4mJiByZWNvcmRzKQordm9pZCBDYWNo
ZTo6dXBkYXRlUmVjb3JkcyhWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMpCiB7CiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29y
ZD4gbmV3UmVjb3JkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaAppbmRleCBlZmIz
NGJiYzFlOWYwNjY1ZWY4MTQ4OTQwODI1ODVkNGRjMWEzYzdjLi4yN2M1NWMyNmVlODMyNDFkZGEy
ODEyNDU2N2E4OGE2MTI2YzkyOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5o
CkBAIC03MywxMCArNzMsMTAgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVj
b3JkPiBxdWVyeUNhY2hlV2l0aFRhcmdldFN0b3JhZ2UoY29uc3QgRmV0Y2hSZXF1ZXN0JiwgY29u
c3QgQ2FjaGVRdWVyeU9wdGlvbnMmLCBjb25zdCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiYp
OwogICAgIHZvaWQgcXVlcnlDYWNoZShSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBDYWNoZVF1ZXJ5T3B0
aW9ucyYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29y
ZD4mKT4mJik7CiAgICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlvbihjb25zdCBGZXRjaFJlcXVl
c3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
Ym9vbD4mJik+JiYpOwotICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1
ZXN0JiwgRmV0Y2hSZXNwb25zZSYsIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlc3BvbnNlQm9k
eSYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpOwotICAgIHZv
aWQgYmF0Y2hQdXRPcGVyYXRpb24oVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29y
ZD4mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKKyAgICB2
b2lkIGJhdGNoUHV0T3BlcmF0aW9uKGNvbnN0IEZldGNoUmVxdWVzdCYsIEZldGNoUmVzcG9uc2Um
LCBET01DYWNoZTo6UmVzcG9uc2VCb2R5JiYsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25P
cjx2b2lkPiYmKT4mJik7CisgICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbihWZWN0b3I8RE9NQ2Fj
aGU6OlJlY29yZD4mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYm
KTsKIAotICAgIHZvaWQgdXBkYXRlUmVjb3JkcyhWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6UmVjb3JkPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlY29yZHMoVmVjdG9yPERPTUNhY2hlOjpS
ZWNvcmQ+JiYpOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICB1aW50NjRfdCBtX2lkZW50aWZp
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggZWQ4MDhmZGU2NjJmMjJjY2YxZTkxMjI1ZDAyZGEwZWM4ZmI3YWRhMy4uN2VkY2U2NDgxMWEx
ODEyMDA1MGIyYjliNDYyNjhmYTYyMGQzOGM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIkpT
RmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIENhY2hlU3RvcmFnZTo6Q2FjaGVTdG9yYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCkBAIC0xMTcs
OCArMTE5LDE2IEBAIHZvaWQgQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2V0UGVuZGlu
Z0FjdGl2aXR5KHRoaXMpOwotICAgIG1fY29ubmVjdGlvbi0+cmV0cmlldmVDYWNoZXMob3JpZ2lu
LCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oVmVjdG9yPENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OkNhY2hlSW5mbz4mJiBjYWNoZXNJbmZvKSB7CisgICAgbV9jb25uZWN0aW9u
LT5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIW1faXNTdG9w
cGVkKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHByb3BhZ2F0
ZSB0aGF0IGVycm9yIHVwIHRvIHRoZSBwcm9taXNlIGJhc2VkIG9wZXJhdGlvbi4KKyAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQuaGFzVmFsdWUoKSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5o
YXNWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvJiBjYWNoZXNJbmZvID0g
cmVzdWx0LnZhbHVlKCk7CisKICAgICAgICAgICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgICAgICAgICAgbV9jYWNoZXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGF1dG8m
IGNhY2hlKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlc0luZm8uZmluZE1hdGNoaW5n
KFsmXShjb25zdCBhdXRvJiBpbmZvKSB7IHJldHVybiBpbmZvLmlkZW50aWZpZXIgPT0gY2FjaGUt
PmlkZW50aWZpZXIoKTsgfSkgPT0gbm90Rm91bmQ7CkBAIC0xNTIsMTMgKzE2MiwxMyBAQCB2b2lk
IENhY2hlU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJl
ZDxJRExJbnRlcmZhY2U8Q2FjaAogICAgICAgICBBU1NFUlQoIW9yaWdpbi5pc051bGwoKSk7CiAK
ICAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgICAgICBtX2Nvbm5lY3Rpb24t
Pm9wZW4ob3JpZ2luLCBuYW1lLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6RXJy
b3IgZXJyb3IpIG11dGFibGUgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4ob3JpZ2luLCBu
YW1lLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGNvbnN0IENhY2hl
SWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1f
aXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjplcnJvclRvRXhjZXB0aW9uKGVycm9yKTsKLSAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVj
dChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKworICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNh
Y2hlOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CiAgICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGUgPSBDYWNoZTo6Y3JlYXRlKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IG5hbWUgfSwgY2FjaGVJZGVudGlmaWVy
LCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNo
ZSA9IENhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgbmFt
ZSB9LCByZXN1bHQudmFsdWUoKSwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UucmVzb2x2ZShjYWNoZSk7CiAgICAgICAgICAgICAgICAgICAgIG1f
Y2FjaGVzLmFwcGVuZChXVEZNb3ZlKGNhY2hlKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTgx
LDExICsxOTEsMTMgQEAgdm9pZCBDYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5h
bWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHAKICAgICAgICAgQVNTRVJUKCFv
cmlnaW4uaXNOdWxsKCkpOwogCiAgICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9jYWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVy
KCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0odWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpFcnJvciBlcnJvcikgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0oY2FjaGVJZGVudGlmaWVyKTsKLSAgICAgICAg
ICAgIGlmICghbV9pc1N0b3BwZWQpCi0gICAgICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6ZXhjZXB0aW9uT3JSZXN1bHQodHJ1ZSwgZXJyb3IpKTsKLQor
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZShtX2NhY2hlc1twb3NpdGlvbl0tPmlkZW50aWZp
ZXIoKSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShjb25zdCBDYWNo
ZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFt
X2lzU3RvcHBlZCkgeworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisg
ICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlOjplcnJvclRvRXhjZXB0
aW9uKHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlLnJlc29sdmUodHJ1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fY2Fj
aGVzLnJlbW92ZShwb3NpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAzMTU3ZmMzOGY5NzEwMDgz
MmQxYWNmZjQ1NzE2NmU2ZjQ1YWQyZTdkLi44YTg5MmRmMmFkYzZiOTNiN2MyZjNjNTY4MjZjZDQ0
ZmJkY2E5ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTI3LDU4ICsyNywxMSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKIAotI2luY2x1
ZGUgIkNhY2hlUXVlcnlPcHRpb25zLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uLmgiCi0jaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeGNlcHRpb25Pcjx2b2lkPiBDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjplcnJvclRvRXhjZXB0aW9uKEVycm9yIGVycm9yKQotewotICAgIHN3aXRjaCAoZXJy
b3IpIHsKLSAgICBjYXNlIEVycm9yOjpOb25lOgotICAgICAgICByZXR1cm4geyB9OwotICAgIGNh
c2UgRXJyb3I6Ok5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfTsKLSAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9OwotICAgIH0KLX0KLQotYm9vbCBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIGNhY2hlZFJlc3BvbnNlLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYgb3B0
aW9ucykKLXsKLSAgICBBU1NFUlQob3B0aW9ucy5pZ25vcmVNZXRob2QgfHwgcmVxdWVzdC5odHRw
TWV0aG9kKCkgPT0gIkdFVCIpOwotCi0gICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgp
OwotICAgIFVSTCBjYWNoZWRSZXF1ZXN0VVJMID0gY2FjaGVkUmVxdWVzdC51cmwoKTsKLQotICAg
IGlmIChvcHRpb25zLmlnbm9yZVNlYXJjaCkgewotICAgICAgICByZXF1ZXN0VVJMLnNldFF1ZXJ5
KHsgfSk7Ci0gICAgICAgIGNhY2hlZFJlcXVlc3RVUkwuc2V0UXVlcnkoeyB9KTsKLSAgICB9Ci0g
ICAgaWYgKCFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHJlcXVlc3RVUkwsIGNhY2hl
ZFJlcXVlc3RVUkwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAob3B0aW9ucy5p
Z25vcmVWYXJ5KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFN0cmluZyB2YXJ5VmFsdWUg
PSBjYWNoZWRSZXNwb25zZS5odHRwSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6
OlZhcnkpOwotICAgIGlmICh2YXJ5VmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQsIHdlIHNob3VsZCBiZSBhYmxl
IHRvIHNwbGl0IGFuZCB0cmltIHdoaXRlc3BhY2VzIGF0IHRoZSBzYW1lIHRpbWUuCi0gICAgVmVj
dG9yPFN0cmluZz4gdmFyeUhlYWRlck5hbWVzOwotICAgIHZhcnlWYWx1ZS5zcGxpdCgnLCcsIGZh
bHNlLCB2YXJ5SGVhZGVyTmFtZXMpOwotICAgIGZvciAoYXV0byYgbmFtZSA6IHZhcnlIZWFkZXJO
YW1lcykgewotICAgICAgICBpZiAoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKG5h
bWUpID09ICIqIikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGNhY2hl
ZFJlcXVlc3QuaHR0cEhlYWRlckZpZWxkKG5hbWUpICE9IHJlcXVlc3QuaHR0cEhlYWRlckZpZWxk
KG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKGNvbnN0IFN0cmluZyYg
b3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgT3BlblJlbW92ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RS
ZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0
cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTg2LDcgKzM5
LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpvcGVuKGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwKICAgICBkb09wZW4ocmVxdWVzdElkZW50aWZp
ZXIsIG9yaWdpbiwgY2FjaGVOYW1lKTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBPcGVuUmVtb3ZlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7
CiAgICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC05NCw3ICs0Nyw3IEBAIHZvaWQgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgT3BlblJl
bW92ZUNhbGxiYWNrCiAgICAgZG9SZW1vdmUocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRp
Zmllcik7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVDYWNoZXMo
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBDYWNoZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9yZXRyaWV2ZUNh
Y2hlc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJh
Y2spKTsKQEAgLTExMCw3ICs2Myw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmV0
cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgUmVjb3Jkc0NhCiAgICAgZG9S
ZXRyaWV2ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0aW9ucywgQmF0Y2hPcGVyYXRpb25D
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaERl
bGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwogICAgIG1fYmF0Y2hEZWxldGVBbmRQdXRQ
ZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CkBAIC0xMTgsNyArNzEsNyBAQCB2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmJhdGNoRGVs
ZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgY29ucwogICAgIGRvQmF0Y2hE
ZWxldGVPcGVyYXRpb24ocmVxdWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgcmVxdWVz
dCwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
YmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmIHJlY29yZHMsIEJhdGNoT3BlcmF0
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0
Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYm
IHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CiAg
ICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTEyNiw2MSArNzksMzQgQEAgdm9pZCBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIFZlY3RvcjwKICAgICBkb0JhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3RJZGVudGlmaWVyLCBj
YWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcykpOwogfQogCi12b2lkIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246Om9wZW5PclJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikKK3ZvaWQgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6b3Blbk9yUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpCiB7CiAgICAg
aWYgKGF1dG8gY2FsbGJhY2sgPSBtX29wZW5BbmRSZW1vdmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy50
YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKLSAgICAgICAgY2FsbGJhY2soY2FjaGVJZGVudGlmaWVy
LCBlcnJvcik7CisgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6dXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBW
ZWN0b3I8Q2FjaGVJbmZvPiYmIGNhY2hlcykKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
dXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZUluZm9zT3JFcnJv
ciYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcmV0cmlldmVDYWNoZXNQ
ZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxiYWNr
KFdURk1vdmUoY2FjaGVzKSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CiB9
CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyh1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzKQordm9pZCBDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1f
cmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKQot
ICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZHMpKTsKKyAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkZWxldGVS
ZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0
X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIEV4cGVj
dGVkPFZlY3Rvcjx1aW50NjRfdD4sIEVycm9yPiYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0byBj
YWxsYmFjayA9IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0
SWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsK
KyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpCit2b2lkIENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIEV4cGVjdGVkPFZlY3Rvcjx1aW50NjRfdD4sIEVycm9yPiYmIHJlc3VsdCkKIHsK
ICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVz
dHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVj
b3JkcyksIGVycm9yKTsKLX0KLQotQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5
IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Omlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3Bv
bnNlQm9keSYgYm9keSkKLXsKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25z
dCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewotICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlz
b2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOwotICAgIH0sIFtdKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikgewotICAgICAgICByZXR1cm4gQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVz
cG9uc2VCb2R5IHsgfTsKLSAgICB9KTsKLX0KLQotc3RhdGljIGlubGluZSBDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkmIGJvZHkpCi17Ci0gICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKLSAgICAgICAg
cmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwotICAgIH0s
IFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewotICAgICAgICByZXR1cm4gQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5IHsgfTsKLSAgICB9KTsKLX0KLQotQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6UmVjb3JkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZDo6Y29weSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlY29yZCB7IGlkZW50aWZpZXIsIHVwZGF0ZVJlc3BvbnNl
Q291bnRlciwgcmVxdWVzdEhlYWRlcnNHdWFyZCwgcmVxdWVzdCwgb3B0aW9ucywgcmVmZXJyZXIs
IHJlc3BvbnNlSGVhZGVyc0d1YXJkLCByZXNwb25zZSwgY29weVJlc3BvbnNlQm9keShyZXNwb25z
ZUJvZHkpIH07CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggNzIzNjE2YzZiZmYzNmI3NGM4YmM4ZjY4
YzE4Mjc0N2QyNzMwMzQ3OS4uZjIwODBkYzk5MWJmYTViNGU1NDM2Y2Q3NTdjZGJkNWYxMjg5YTA3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgKQEAgLTI2LDEwNiArMjYsNTIgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJGZXRjaEhlYWRlcnMuaCIKLSNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0j
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiRE9NQ2FjaGUuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBDYWNoZVF1ZXJ5T3B0aW9uczsKLQogY2xh
c3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oKSk7IH0KICAgICB2aXJ0dWFsIH5DYWNoZVN0b3JhZ2VDb25uZWN0aW9u
KCkgPSBkZWZhdWx0OwogCi0gICAgZW51bSBjbGFzcyBFcnJvciB7Ci0gICAgICAgIE5vbmUsCi0g
ICAgICAgIE5vdEltcGxlbWVudGVkLAotICAgICAgICBJbnRlcm5hbAotICAgIH07Ci0KLSAgICBz
dGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gZXJyb3JUb0V4Y2VwdGlvbihFcnJvcik7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIEV4Y2VwdGlvbk9yPFQ+IGV4Y2VwdGlvbk9yUmVzdWx0
KFQmJiB2YWx1ZSwgRXJyb3IgZXJyb3IpCi0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IGVy
cm9yVG9FeGNlcHRpb24oZXJyb3IpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgICAg
IHJldHVybiBzdGQ6OmZvcndhcmQ8VD4odmFsdWUpOwotICAgIH0KLQotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7Ci0KLSAgICB1c2luZyBSZXNw
b25zZUJvZHkgPSBWYXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hh
cmVkQnVmZmVyPj47Ci0gICAgc3RhdGljIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9k
eShjb25zdCBSZXNwb25zZUJvZHkmKTsKLQotICAgIHN0cnVjdCBSZWNvcmQgewotICAgICAgICBX
RUJDT1JFX0VYUE9SVCBSZWNvcmQgY29weSgpIGNvbnN0OwotCi0gICAgICAgIHVpbnQ2NF90IGlk
ZW50aWZpZXI7Ci0gICAgICAgIHVpbnQ2NF90IHVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKLQotICAg
ICAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFkZXJzR3VhcmQ7Ci0gICAgICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0OwotICAgICAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKLSAg
ICAgICAgU3RyaW5nIHJlZmVycmVyOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIERPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxs
YmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIERPTUNh
Y2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlQ2FjaGVz
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01DYWNoZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwog
Ci0gICAgICAgIEZldGNoSGVhZGVyczo6R3VhcmQgcmVzcG9uc2VIZWFkZXJzR3VhcmQ7Ci0gICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlc3BvbnNlQm9keSByZXNw
b25zZUJvZHk7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBDYWNoZUluZm8gewotICAgICAgICB1aW50
NjRfdCBpZGVudGlmaWVyOwotICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICB9OwotCi0gICAgdXNp
bmcgT3BlblJlbW92ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBFcnJv
cik+OwotICAgIHVzaW5nIENhY2hlc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3Rv
cjxDYWNoZUluZm8+JiYpPjsKLSAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQoVmVjdG9yPFJlY29yZD4mJik+OwotICAgIHVzaW5nIEJhdGNoT3BlcmF0aW9uQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPHVpbnQ2NF90PiYmLCBFcnJvcik+Owot
Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJpbmcm
IC8qIGNhY2hlTmFtZSAqLywgT3BlblJlbW92ZUNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmVtb3Zl
KHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgT3BlblJlbW92ZUNhbGxiYWNrJiYpOwot
ICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIENhY2hl
c0NhbGxiYWNrJiYpOwotCi0gICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgLyogY2Fj
aGVJZGVudGlmaWVyICovLCBSZWNvcmRzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBiYXRjaERlbGV0
ZU9wZXJhdGlvbih1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2smJik7
Ci0gICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIg
Ki8sIFZlY3RvcjxSZWNvcmQ+JiYsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2smJik7CisgICAgdm9p
ZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBET01DYWNoZTo6UmVj
b3Jkc0NhbGxiYWNrJiYpOworICAgIHZvaWQgYmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmLCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICB2b2lkIGJh
dGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPERPTUNhY2hl
OjpSZWNvcmQ+JiYsIERPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpID0gIGRlZmF1bHQ7CiAKLSAg
ICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJ
ZGVudGlmaWVyLCBFcnJvciBlcnJvcikgeyBvcGVuT3JSZW1vdmVDb21wbGV0ZWQoaWRlbnRpZmll
ciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7IH0KLSAgICB2b2lkIHJlbW92ZUNvbXBsZXRlZCh1
aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVycm9yIGVycm9y
KSB7IG9wZW5PclJlbW92ZUNvbXBsZXRlZChpZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIGVy
cm9yKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8Q2FjaGVJbmZvPiYmKTsKKyAgICB2b2lkIG9wZW5Db21w
bGV0ZWQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgRE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmll
ck9yRXJyb3ImIHJlc3VsdCkgeyBvcGVuT3JSZW1vdmVDb21wbGV0ZWQoaWRlbnRpZmllciwgcmVz
dWx0KTsgfQorICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNv
bnN0IERPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIHsgb3Blbk9yUmVt
b3ZlQ29tcGxldGVkKGlkZW50aWZpZXIsIHJlc3VsdCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGU6OkNh
Y2hlSW5mb3NPckVycm9yJiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZWNv
cmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgRXJyb3IpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
VmVjdG9yPHVpbnQ2NF90PiYmLCBFcnJvcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZTo6UmVjb3Jkc09y
RXJyb3ImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVSZWNvcmRzQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNP
ckVycm9yJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0UmVjb3Jkc0NvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzT3JF
cnJvciYmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLywgY29uc3QgU3RyaW5n
JiAvKiBjYWNoZU5hbWUgKi8pIHsgb3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgMCwg
RXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkb1JlbW92ZSh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7
IHJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgMCwgRXJyb3I6Ok5vdEltcGxlbWVu
dGVkKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb09wZW4odWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25zdCBTdHJpbmcmIC8qIGNhY2hlTmFt
ZSAqLykgeyBvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChE
T01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9S
ZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRp
ZmllciAqLykgeyByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmV4cGVj
dGVkKERPTUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQpKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIC8qIG9yaWdpbiAqLykgeyB1cGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovKSB7IHVwZGF0ZVJlY29y
ZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZG9CYXRjaERl
bGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2Fj
aGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmKSB7IGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHsgfSwgRXJy
b3I6Ok5vdEltcGxlbWVudGVkKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkb0JhdGNoUHV0T3BlcmF0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZp
ZXIgKi8sIFZlY3RvcjxSZWNvcmQ+JiYpIHsgcHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRl
bnRpZmllciwgeyB9LCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQpOyB9CisgICAgdmlydHVhbCB2b2lk
IGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVR
dWVyeU9wdGlvbnMmJikgeyBkZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVy
LCBtYWtlVW5leHBlY3RlZChET01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBWZWN0b3I8RE9NQ2FjaGU6OlJl
Y29yZD4mJikgeyBwdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5l
eHBlY3RlZChET01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7IH0KIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgb3Blbk9yUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVycm9yKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIG9wZW5PclJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgRE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImKTsKIAotICAgIEhhc2hN
YXA8dWludDY0X3QsIE9wZW5SZW1vdmVDYWxsYmFjaz4gbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5k
aW5nUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ2FjaGVzQ2FsbGJhY2s+IG1fcmV0
cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVjb3Jk
c0NhbGxiYWNrPiBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0czsKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrPiBtX2JhdGNoRGVsZXRlQW5kUHV0UGVu
ZGluZ1JlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIERPTUNhY2hlOjpDYWNoZUlkZW50
aWZpZXJDYWxsYmFjaz4gbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHM7CisgICAg
SGFzaE1hcDx1aW50NjRfdCwgRE9NQ2FjaGU6OkNhY2hlSW5mb3NDYWxsYmFjaz4gbV9yZXRyaWV2
ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBET01DYWNoZTo6
UmVjb3Jkc0NhbGxiYWNrPiBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdSZXF1ZXN0czsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjaz4gbV9i
YXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0czsKIAogICAgIHVpbnQ2NF90IG1fbGFzdFJl
cXVlc3RJZGVudGlmaWVyIHsgMCB9OwogfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZGE4
MDg1NDQ1YmRjOGYwYWFkY2U4ODI4ZTZlZGY0OTkwYjgxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMCwwICsxLDExMSBA
QAorCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTUNhY2hl
LmgiCisKKyNpbmNsdWRlICJDYWNoZVF1ZXJ5T3B0aW9ucy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bi5oIgorI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
bmFtZXNwYWNlIERPTUNhY2hlIHsKKworRXhjZXB0aW9uIGVycm9yVG9FeGNlcHRpb24oRXJyb3Ig
ZXJyb3IpCit7CisgICAgc3dpdGNoIChlcnJvcikgeworICAgIGNhc2UgRXJyb3I6Ok5vdEltcGxl
bWVudGVkOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfTsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9y
IikgfTsKKyAgICB9Cit9CisKK2Jvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBjYWNoZWRSZXNwb25zZSwgY29uc3QgQ2FjaGVRdWVyeU9wdGlv
bnMmIG9wdGlvbnMpCit7CisgICAgQVNTRVJUKG9wdGlvbnMuaWdub3JlTWV0aG9kIHx8IHJlcXVl
c3QuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsKKworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVz
dC51cmwoKTsKKyAgICBVUkwgY2FjaGVkUmVxdWVzdFVSTCA9IGNhY2hlZFJlcXVlc3QudXJsKCk7
CisKKyAgICBpZiAob3B0aW9ucy5pZ25vcmVTZWFyY2gpIHsKKyAgICAgICAgcmVxdWVzdFVSTC5z
ZXRRdWVyeSh7IH0pOworICAgICAgICBjYWNoZWRSZXF1ZXN0VVJMLnNldFF1ZXJ5KHsgfSk7Cisg
ICAgfQorICAgIGlmICghZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihyZXF1ZXN0VVJM
LCBjYWNoZWRSZXF1ZXN0VVJMKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG9w
dGlvbnMuaWdub3JlVmFyeSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcgdmFy
eVZhbHVlID0gY2FjaGVkUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFk
ZXJOYW1lOjpWYXJ5KTsKKyAgICBpZiAodmFyeVZhbHVlLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LCB3ZSBzaG91bGQg
YmUgYWJsZSB0byBzcGxpdCBhbmQgdHJpbSB3aGl0ZXNwYWNlcyBhdCB0aGUgc2FtZSB0aW1lLgor
ICAgIFZlY3RvcjxTdHJpbmc+IHZhcnlIZWFkZXJOYW1lczsKKyAgICB2YXJ5VmFsdWUuc3BsaXQo
JywnLCBmYWxzZSwgdmFyeUhlYWRlck5hbWVzKTsKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiB2YXJ5
SGVhZGVyTmFtZXMpIHsKKyAgICAgICAgaWYgKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNw
YWNlcyhuYW1lKSA9PSAiKiIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlm
IChjYWNoZWRSZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZChuYW1lKSAhPSByZXF1ZXN0Lmh0dHBIZWFk
ZXJGaWVsZChuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK1Jlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmIGJvZHkpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10o
Y29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1EYXRh
LT5pc29sYXRlZENvcHkoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSB7CisgICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICB9LCBbXShjb25zdCBz
dGQ6Om51bGxwdHJfdCYpIHsKKyAgICAgICAgcmV0dXJuIERPTUNhY2hlOjpSZXNwb25zZUJvZHkg
eyB9OworICAgIH0pOworfQorCitzdGF0aWMgaW5saW5lIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9u
c2VCb2R5KGNvbnN0IERPTUNhY2hlOjpSZXNwb25zZUJvZHkmIGJvZHkpCit7CisgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
KyAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKKyAgICB9LCBbXShjb25zdCBSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigp
OworICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgeworICAgICAgICByZXR1cm4gRE9N
Q2FjaGU6OlJlc3BvbnNlQm9keSB7IH07CisgICAgfSk7Cit9CisKK1JlY29yZCBSZWNvcmQ6OmNv
cHkoKSBjb25zdAoreworICAgIHJldHVybiBSZWNvcmQgeyBpZGVudGlmaWVyLCB1cGRhdGVSZXNw
b25zZUNvdW50ZXIsIHJlcXVlc3RIZWFkZXJzR3VhcmQsIHJlcXVlc3QsIG9wdGlvbnMsIHJlZmVy
cmVyLCByZXNwb25zZUhlYWRlcnNHdWFyZCwgcmVzcG9uc2UsIGNvcHlSZXNwb25zZUJvZHkocmVz
cG9uc2VCb2R5KSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBET01DYWNoZQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45OGRhODExMWIzZWYzZjIwMjAxZjZjYzA3ODhmNzM0YmVkYzY4OWYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC0w
LDAgKzEsMTAwIEBACisKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZl
dGNoSGVhZGVycy5oIgorI2luY2x1ZGUgIkZldGNoT3B0aW9ucy5oIgorI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2FjaGVRdWVy
eU9wdGlvbnM7CisKK25hbWVzcGFjZSBET01DYWNoZSB7CisKK2VudW0gY2xhc3MgRXJyb3Igewor
ICAgIE5vdEltcGxlbWVudGVkLAorICAgIEludGVybmFsCit9OworCitFeGNlcHRpb24gZXJyb3JU
b0V4Y2VwdGlvbihFcnJvcik7CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNo
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBj
YWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9w
dGlvbnMmKTsKKwordXNpbmcgUmVzcG9uc2VCb2R5ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworUmVzcG9uc2VCb2R5IGlzb2xhdGVk
UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOworCitzdHJ1Y3QgUmVjb3JkIHsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWNvcmQgY29weSgpIGNvbnN0OworCisgICAgdWludDY0X3QgaWRl
bnRpZmllcjsKKyAgICB1aW50NjRfdCB1cGRhdGVSZXNwb25zZUNvdW50ZXI7CisKKyAgICBGZXRj
aEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFkZXJzR3VhcmQ7CisgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3Q7CisgICAgRmV0Y2hPcHRpb25zIG9wdGlvbnM7CisgICAgU3RyaW5nIHJlZmVycmVy
OworCisgICAgRmV0Y2hIZWFkZXJzOjpHdWFyZCByZXNwb25zZUhlYWRlcnNHdWFyZDsKKyAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgIFJlc3BvbnNlQm9keSByZXNwb25zZUJvZHk7
Cit9OworCitzdHJ1Y3QgQ2FjaGVJbmZvIHsKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyOworICAg
IFN0cmluZyBuYW1lOworfTsKKwordXNpbmcgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciA9IEV4cGVj
dGVkPHVpbnQ2NF90LCBFcnJvcj47Cit1c2luZyBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZChjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJik+OworCit1c2lu
ZyBSZWNvcmRJZGVudGlmaWVyc09yRXJyb3IgPSBFeHBlY3RlZDxWZWN0b3I8dWludDY0X3Q+LCBF
cnJvcj47Cit1c2luZyBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2
b2lkKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKT47CisKK3VzaW5nIENhY2hlSW5mb3NPckVy
cm9yID0gRXhwZWN0ZWQ8VmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUluZm8+LCBFcnJv
cj47Cit1c2luZyBDYWNoZUluZm9zQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVJ
bmZvc09yRXJyb3ImJik+OworCit1c2luZyBSZWNvcmRzT3JFcnJvciA9IEV4cGVjdGVkPFZlY3Rv
cjxSZWNvcmQ+LCBFcnJvcj47Cit1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoUmVjb3Jkc09yRXJyb3ImJik+OworCit1c2luZyBDb21wbGV0aW9uQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPjsKKworfSAvLyBuYW1lc3BhY2Ug
RE9NQ2FjaGUKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RE9NQ2FjaGU6
OkVycm9yLAorICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVk
LAorICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6OkludGVybmFsCisgICAgPjsKK307
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAxMGFhNjU0OTQ2MWI5NzgyNmQ0MzMx
ZmIzNDJhODE0MzNjZGZiZDRjLi44MjA5OTRiMTExOGYyZDM1MGZjY2U2M2YzYjc5Yzk1OTU5ZDI3
YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNs
dWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgQ3Jvc3NUaHJlYWRSZWNvcmREYXRhIHsKQEAgLTUwLDEwICs1MiwxMCBAQCBzdHJ1Y3Qg
Q3Jvc3NUaHJlYWRSZWNvcmREYXRhIHsKIAogICAgIEZldGNoSGVhZGVyczo6R3VhcmQgcmVzcG9u
c2VIZWFkZXJzR3VhcmQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZTo6Q3Jvc3NUaHJlYWREYXRhIHJl
c3BvbnNlOwotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlc3BvbnNlQm9keSByZXNwb25z
ZUJvZHk7CisgICAgUmVzcG9uc2VCb2R5IHJlc3BvbnNlQm9keTsKIH07CiAKLXN0YXRpYyBDcm9z
c1RocmVhZFJlY29yZERhdGEgdG9Dcm9zc1RocmVhZFJlY29yZERhdGEoY29uc3QgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6UmVjb3JkJiByZWNvcmQpCitzdGF0aWMgQ3Jvc3NUaHJlYWRSZWNvcmRE
YXRhIHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKGNvbnN0IFJlY29yZCYgcmVjb3JkKQogewogICAg
IHJldHVybiBDcm9zc1RocmVhZFJlY29yZERhdGEgewogICAgICAgICByZWNvcmQuaWRlbnRpZmll
ciwKQEAgLTY0LDEzICs2NiwxMyBAQCBzdGF0aWMgQ3Jvc3NUaHJlYWRSZWNvcmREYXRhIHRvQ3Jv
c3NUaHJlYWRSZWNvcmREYXRhKGNvbnN0IENhY2hlU3RvcmFnZUNvbm5lY3RpbwogICAgICAgICBy
ZWNvcmQucmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHJlY29yZC5yZXNwb25zZUhl
YWRlcnNHdWFyZCwKICAgICAgICAgcmVjb3JkLnJlc3BvbnNlLmNyb3NzVGhyZWFkRGF0YSgpLAot
ICAgICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjppc29sYXRlZFJlc3BvbnNlQm9keShyZWNv
cmQucmVzcG9uc2VCb2R5KQorICAgICAgICBpc29sYXRlZFJlc3BvbnNlQm9keShyZWNvcmQucmVz
cG9uc2VCb2R5KQogICAgIH07CiB9CiAKLXN0YXRpYyBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpS
ZWNvcmQgZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YShDcm9zc1RocmVhZFJlY29yZERhdGEmJiBk
YXRhKQorc3RhdGljIFJlY29yZCBmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKENyb3NzVGhyZWFk
UmVjb3JkRGF0YSYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OlJlY29yZCB7CisgICAgcmV0dXJuIFJlY29yZCB7CiAgICAgICAgIGRhdGEuaWRlbnRpZmllciwK
ICAgICAgICAgZGF0YS51cGRhdGVSZXNwb25zZUNvdW50ZXIsCiAgICAgICAgIGRhdGEucmVxdWVz
dEhlYWRlcnNHdWFyZCwKQEAgLTExNSwxMCArMTE3LDEwIEBAIHZvaWQgV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBT
dHJpCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVChtX21h
aW5UaHJlYWRDb25uZWN0aW9uKTsKIAotICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5v
cGVuKG9yaWdpbiwgY2FjaGVOYW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IEVycm9yIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgZXJyb3IsIGNhY2hlSWRlbnRpZmllciwgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9tYWlu
VGhyZWFkQ29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oY29uc3Qg
Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1f
cHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHRd
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkp
OwotICAgICAgICAgICAgICAgIG9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIGNhY2hl
SWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICAgICAgICAgIG9wZW5Db21wbGV0ZWQocmVxdWVz
dElkZW50aWZpZXIsIHJlc3VsdCk7CiAgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CkBAIC0xMzAsMTEgKzEzMiwxMSBAQCB2b2lkIFdvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdAogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQobV9t
YWluVGhyZWFkQ29ubmVjdGlvbik7CiAKLSAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+
cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXSh1aW50NjRf
dCByZW1vdmVkQ2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRDYWNoZUlkZW50aWZpZXIsIHJlbW92ZWRDYWNoZUlk
ZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIG1fcHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIGVy
cm9yXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAg
bV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwg
Y2FjaGVJZGVudGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11
dGFibGUgeworICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaGFzVmFsdWUoKSB8fCByZXN1bHQu
dmFsdWUoKSA9PSBjYWNoZUlkZW50aWZpZXIpOworICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdF0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgICAg
ICAgICAgcmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIs
IGVycm9yKTsKKyAgICAgICAgICAgICAgICByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZp
ZXIsIHJlc3VsdCk7CiAgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CkBAIC0xNDYsMjEgKzE0OCwyNiBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsCiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRD
b25uZWN0aW9uKTsKIAotICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2ZUNh
Y2hlcyhvcmlnaW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IFZlY3RvcjxDYWNoZUluZm8+JiBjYWNoZXMpIG11
dGFibGUgewotICAgICAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4gaXNvbGF0ZWRDYWNoZXM7Ci0g
ICAgICAgICAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhY2hlcy5z
aXplKCkpOwotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYWNoZSA6IGNhY2hlcykKLSAg
ICAgICAgICAgICAgICBpc29sYXRlZENhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsg
Y2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZS5pc29sYXRlZENvcHkoKSB9KTsKLQotICAgICAg
ICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY2FjaGVzID0gV1RGTW92ZShp
c29sYXRlZENhY2hlcyksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmV0
cmlldmVDYWNoZXMob3JpZ2luLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBDYWNoZUluZm9zT3JFcnJvciBpc29sYXRlZFJlc3VsdDsK
KyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgaXNv
bGF0ZWRSZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBWZWN0b3I8Q2FjaGVJbmZvPiBpc29sYXRlZENhY2hlczsKKyAgICAgICAgICAg
ICAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlc3VsdC52YWx1ZSgp
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYWNoZSA6IHJlc3Vs
dC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICBpc29sYXRlZENhY2hlcy51bmNoZWNrZWRB
cHBlbmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZS5pc29sYXRlZENv
cHkoKSB9KTsKKyAgICAgICAgICAgICAgICBpc29sYXRlZFJlc3VsdCA9IFdURk1vdmUoaXNvbGF0
ZWRDYWNoZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zv
ck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUoaXNvbGF0
ZWRSZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKLSAgICAgICAgICAgICAgICB1cGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZp
ZXIsIFdURk1vdmUoY2FjaGVzKSk7CisgICAgICAgICAgICAgICAgdXBkYXRlQ2FjaGVzKHJlcXVl
c3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgfSwgbV90YXNrTW9k
ZSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCi1zdGF0aWMgaW5saW5lIFZlY3RvcjxDcm9z
c1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhRnJvbVJlY29yZHMoY29uc3QgVmVjdG9yPENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4mIHJlY29yZHMpCitzdGF0aWMgaW5saW5lIFZl
Y3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhRnJvbVJlY29yZHMoY29uc3Qg
VmVjdG9yPFJlY29yZD4mIHJlY29yZHMpCiB7CiAgICAgVmVjdG9yPENyb3NzVGhyZWFkUmVjb3Jk
RGF0YT4gcmVjb3Jkc0RhdGE7CiAgICAgcmVjb3Jkc0RhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShyZWNvcmRzLnNpemUoKSk7CkBAIC0xNjksMjUgKzE3Niw0MCBAQCBzdGF0aWMgaW5saW5lIFZl
Y3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhRnJvbVJlY29yZHMoY29uc3Qg
VmVjdG9yPAogICAgIHJldHVybiByZWNvcmRzRGF0YTsKIH0KIAotc3RhdGljIGlubGluZSBWZWN0
b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiByZWNvcmRzRnJvbVJlY29yZHNEYXRh
KFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+JiYgcmVjb3Jkc0RhdGEpCitzdGF0aWMgaW5s
aW5lIEV4cGVjdGVkPFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+LCBFcnJvcj4gcmVjb3Jk
c0RhdGFPckVycm9yRnJvbVJlY29yZHMoY29uc3QgUmVjb3Jkc09yRXJyb3ImIHJlc3VsdCkKIHsK
LSAgICBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiByZWNvcmRzOworICAg
IGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChy
ZXN1bHQuZXJyb3IoKSk7CisKKyAgICByZXR1cm4gcmVjb3Jkc0RhdGFGcm9tUmVjb3JkcyhyZXN1
bHQudmFsdWUoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgVmVjdG9yPFJlY29yZD4gcmVjb3Jkc0Zy
b21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNvcmREYXRhPiYmIHJlY29yZHNEYXRh
KQoreworICAgIFZlY3RvcjxSZWNvcmQ+IHJlY29yZHM7CiAgICAgcmVjb3Jkcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHJlY29yZHNEYXRhLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiByZWNvcmRE
YXRhIDogcmVjb3Jkc0RhdGEpCiAgICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKGZyb21D
cm9zc1RocmVhZFJlY29yZERhdGEoV1RGTW92ZShyZWNvcmREYXRhKSkpOwogICAgIHJldHVybiBy
ZWNvcmRzOwogfQogCitzdGF0aWMgaW5saW5lIFJlY29yZHNPckVycm9yIHJlY29yZHNPckVycm9y
RnJvbVJlY29yZHNEYXRhKEV4cGVjdGVkPFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+LCBF
cnJvcj4mJiByZWNvcmRzRGF0YSkKK3sKKyAgICBpZiAoIXJlY29yZHNEYXRhLmhhc1ZhbHVlKCkp
CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZWNvcmRzRGF0YS5lcnJvcigpKTsKKyAg
ICByZXR1cm4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShXVEZNb3ZlKHJlY29yZHNEYXRhLnZhbHVl
KCkpKTsKK30KKwogdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZl
UmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlm
aWVyKQogewogICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKIAotICAg
ICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2ZVJlY29yZHMoY2FjaGVJZGVudGlm
aWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVl
c3RJZGVudGlmaWVyXShWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMpIG11dGFibGUgewotICAgICAg
ICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVjb3Jkc0RhdGEgPSByZWNv
cmRzRGF0YUZyb21SZWNvcmRzKHJlY29yZHMpLCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIG1fbWFpblRocmVhZENv
bm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29y
ZHNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHJlc3VsdCA9IHJlY29yZHNEYXRhT3JFcnJvckZyb21SZWNvcmRz
KHJlc3VsdCksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgICAgICB1cGRhdGVSZWNv
cmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVj
b3Jkc0RhdGEpKSk7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRp
ZmllciwgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEoV1RGTW92ZShyZXN1bHQpKSk7CiAg
ICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0xOTks
MTEgKzIyMSwxMSBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hE
ZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aQogICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CiAK
LSAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hEZWxldGVPcGVyYXRpb24oY2Fj
aGVJZGVudGlmaWVyLCByZXF1ZXN0LCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShWZWN0b3I8
dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpIG11dGFibGUgeworICAgICAgICBtX21h
aW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaERlbGV0ZU9wZXJhdGlvbihjYWNoZUlkZW50aWZpZXIs
IHJlcXVlc3QsIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJzT3JF
cnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKLSAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpLCBlcnJvciwgcmVxdWVz
dElkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewor
ICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50
aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgICAgICAgICAgZGVsZXRl
UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZWNvcmRzKSwgZXJy
b3IpOworICAgICAgICAgICAgICAgIGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CkBAIC0yMTUsMTEgKzIzNywxMSBAQCB2b2lkIFdvcmtlckNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZQogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQo
bV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CiAKLSAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlv
bi0+YmF0Y2hQdXRPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVyLCByZWNvcmRzRnJvbVJlY29yZHNE
YXRhKFdURk1vdmUocmVjb3Jkc0RhdGEpKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oVmVjdG9yPHVpbnQ2NF90PiYmIHJl
Y29yZHMsIEVycm9yIGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVj
dGlvbi0+YmF0Y2hQdXRPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVyLCByZWNvcmRzRnJvbVJlY29y
ZHNEYXRhKFdURk1vdmUocmVjb3Jkc0RhdGEpKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0oUmVjb3JkSWRlbnRpZmllcnNP
ckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAotICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyksIGVycm9yLCByZXF1
ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRl
bnRpZmllciwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgICAgICBwdXRS
ZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBlcnJv
cik7CisgICAgICAgICAgICAgICAgcHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0sIG1fdGFza01vZGUpOwogICAgICAg
ICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggOWY0OGFmMmZiZTE4MTU0
ZWY1MDJiMmY5MjQyYTg0YzEzYTMwNWUyNS4uMWFkZGM1MjRlZGI5YzVkNzdlZTY4YTU0YjFlZWYx
OGIyODhkMWQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTQyLDEzICs0MiwxMyBAQCBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oV29ya2Vy
R2xvYmFsU2NvcGUmKTsKIAogICAgIC8vIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24K
LSAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyogY2FjaGVOYW1lICovKSBmaW5hbDsKLSAg
ICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBj
YWNoZUlkZW50aWZpZXIgKi8pIGZpbmFsOwotICAgIHZvaWQgZG9SZXRyaWV2ZUNhY2hlcyh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8pIGZpbmFs
OworICAgIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpIGZpbmFsOworICAgIHZvaWQgZG9S
ZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgZmluYWw7CiAKICAgICB2b2lkIGRvUmV0cmll
dmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50
aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsK
LSAgICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJikgZmluYWw7CisgICAg
dm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNoZTo6UmVjb3JkPiYmKSBmaW5hbDsK
IAogICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Njb3BlOwogICAgIFdvcmtlckxvYWRlclByb3h5
JiBtX3Byb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGU4ZjgwYmQzNmJhYzdmZDQwMGE1YzcyYTgzNWUxMjE5YTEwMjQxNGIu
LjliODA3NmQ4ZWZmOTg5ODE4YmRiZWIxODM2YzBiNmYwM2E1MTFjZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3OTIsNiAr
MTc5Miw4IEBACiAJCTQxRjU0RjhFMUM1MEM1MEMwMDMzODQ4OCAvKiBGZXRjaFJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGNTRGODcx
QzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoUmVxdWVzdC5jcHAgKi87IH07CiAJCTQxRkEzMDNFMTMx
NkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkEzMDNDMTMxNkMyOUMwMEMwQkZDNSAv
KiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLzsgfTsKIAkJNDFGQTMwM0YxMzE2QzI5QzAwQzBC
RkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkEzMDNEMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRp
YUNvbnRyb2xzLmggKi87IH07CisJCTQxRkFCRDJEMUY0REZFNEEwMDZBNkM5NyAvKiBET01DYWNo
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQUJE
MkIxRjRERkU0MjAwNkE2Qzk3IC8qIERPTUNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFGQUJEMkYxRjRFMDJDQjAwNkE2Qzk3IC8qIERP
TUNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRkFCRDJFMUY0RTAyNTEwMDZBNkM5NyAvKiBET01DYWNoZS5jcHAgKi87IH07CiAJCTQxRkIy
NzlDMUYzNERCOEEwMDc5NTQ4NyAvKiBET01XaW5kb3dDYWNoZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OEUxRjM0QzI4MjAwNzk1NDg3
IC8qIERPTVdpbmRvd0NhY2hlcy5jcHAgKi87IH07CiAJCTQxRkIyNzlEMUYzNERCOEUwMDc5NTQ4
NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc4RjFGMzRDMjgyMDA3OTU0ODcgLyogV29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXMuY3BwICovOyB9OwogCQk0MzEwN0JFMjE4Q0MxOURFMDBDQzE4RTgg
LyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MzEwN0JFMTE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1
ZG9UeXBlTWFwLmggKi87IH07CkBAIC05NDc5LDYgKzk0ODEsOCBAQAogCQk0MUY1NEY4OTFDNTBD
NEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBG
ZXRjaFJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZBMzAzQzEz
MTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9scy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQTMwM0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1l
ZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVk
aWFDb250cm9scy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUZBQkQyQjFGNERG
RTQyMDA2QTZDOTcgLyogRE9NQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFGQUJEMkUxRjRF
MDI1MTAwNkE2Qzk3IC8qIERPTUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERPTUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFG
QjI3OEMxRjM0QzI4MjAwNzk1NDg3IC8qIERPTVdpbmRvd0NhY2hlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01XaW5kb3dDYWNoZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQjI3
OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxRkIyNzhFMUYzNEMyODIwMDc5NTQ4NyAvKiBET01XaW5kb3dDYWNoZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93Q2FjaGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3NjkwLDYgKzE3Njk0LDggQEAKIAkJCQk0MUQxMjlDOTFGM0QwRUUzMDBE
MTVFNDcgLyogQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNDFEMTI5Q0MxRjNE
MEVFMzAwRDE1RTQ3IC8qIENhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCAqLywKIAkJCQk0MUQxMjlD
QTFGM0QwRUUzMDBEMTVFNDcgLyogQ2FjaGVTdG9yYWdlUmVjb3JkLmggKi8sCisJCQkJNDFGQUJE
MkUxRjRFMDI1MTAwNkE2Qzk3IC8qIERPTUNhY2hlLmNwcCAqLywKKwkJCQk0MUZBQkQyQjFGNERG
RTQyMDA2QTZDOTcgLyogRE9NQ2FjaGUuaCAqLywKIAkJCQk0MUZCMjc4RTFGMzRDMjgyMDA3OTU0
ODcgLyogRE9NV2luZG93Q2FjaGVzLmNwcCAqLywKIAkJCQk0MUZCMjc4QzFGMzRDMjgyMDA3OTU0
ODcgLyogRE9NV2luZG93Q2FjaGVzLmggKi8sCiAJCQkJNDEzODBDMkIxRjM0M0UyRjAwMTU1RkRB
IC8qIERPTVdpbmRvd0NhY2hlcy5pZGwgKi8sCkBAIC0yNzIzMSw2ICsyNzIzNyw3IEBACiAJCQkJ
QTgxODVGMzkwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50VHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTczODg5QTExMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQThGNkJDMzBEQjU1Q0RDMDAxREI3OTQgLyogRE9NQXBwbGljYXRpb25D
YWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8qIERP
TUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlBMEY3NTE2NDA5NENGMDAzRDZCOEQgLyog
RE9NQ1NTTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjNBODg3MjE0NTYzMkY5MDAz
QUU4RjUgLyogRE9NRE9NU2V0dGFibGVUb2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdB
QUJBMjVBMTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuaCBpbiBIZWFkZXJzICovLApAQCAt
MzEyNjMsNiArMzEyNzAsNyBAQAogCQkJCUE4MTg1RjNBMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1
bWVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTczODg5QTAxMTZFQTlEQzAwQURGMzEz
IC8qIERvY3VtZW50V3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEY2QkMyMERCNTVD
REMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTQxRkFCRDJGMUY0RTAyQ0IwMDZBNkM5NyAvKiBET01DYWNoZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdBQUJBMjU5MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQkRGMjQxNTZDMTg4MzAwMUMxMjQzIC8qIERPTUVycm9y
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NGY2
NzFmMzg5NTgwYTE2NzlkZDdiMzIxMTFiZGFiY2E0NmFmZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oPgotI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1uYW1lc3BhY2UgQ2Fj
aGVTdG9yYWdlIHsKLQotZW51bSBjbGFzcyBFcnJvciB7Ci0gICAgSW50ZXJuYWwKLX07Ci0KLXVz
aW5nIFJlY29yZCA9IFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZDsKLQot
dXNpbmcgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciA9IEV4cGVjdGVkPHVpbnQ2NF90LCBFcnJvcj47
Ci11c2luZyBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ2FjaGVJZGVu
dGlmaWVyT3JFcnJvciYmKT47Ci0KLXVzaW5nIENhY2hlSW5mb3NPckVycm9yID0gRXhwZWN0ZWQ8
VmVjdG9yPFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OkNhY2hlSW5mbz4sIEVycm9y
PjsKLXVzaW5nIENhY2hlSW5mb3NDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ2FjaGVJbmZvc09y
RXJyb3ImJik+OwotCi11c2luZyBSZWNvcmRzT3JFcnJvciA9IEV4cGVjdGVkPFZlY3RvcjxSZWNv
cmQ+LCBFcnJvcj47Ci11c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlY29y
ZHNPckVycm9yJiYpPjsKLQotdXNpbmcgUmVjb3JkSWRlbnRpZmllcnNPckVycm9yID0gRXhwZWN0
ZWQ8VmVjdG9yPHVpbnQ2NF90PiwgRXJyb3I+OwotdXNpbmcgUmVjb3JkSWRlbnRpZmllcnNDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYpPjsKLQotdXNp
bmcgQ29tcGxldGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPEVycm9y
PiYmKT47Ci0KLX0gLy8gbmFtZXNwYWNlIENhY2hlU3RvcmFnZQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YktpdDo6Q2FjaGVTdG9yYWdlOjpFcnJvcj4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8Ci0gICAgICAgIFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFcnJvciwKLSAgICAgICAgV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVycm9yOjpJbnRlcm5hbAotICAgID47Ci19OwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwCmluZGV4IDM2YWE2NzNiNDM1MzQ4MTg4MDI3N2IyZTYyOTcxZTQ0YWY5YzQyZWUuLjVh
ZWJiZTY2OWJlZDJiOGM3MTViODM1ZjU1NTFjNjRiZDc0OTBjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OjpET01DYWNoZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBDYWNoZVN0b3Jh
Z2UgewpAQCAtMTI2LDEwICsxMjgsMTAgQEAgdm9pZCBFbmdpbmU6OnJldHJpZXZlQ2FjaGVzKGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBDYWNoZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKIAogICAg
ICAgICBhdXRvJiBjYWNoZXMgPSBjYWNoZXNPckVycm9yLnZhbHVlKCkuZ2V0KCk7CiAKLSAgICAg
ICAgVmVjdG9yPFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OkNhY2hlSW5mbz4gY2Fj
aGVzSW5mbzsKKyAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4gY2FjaGVzSW5mbzsKICAgICAgICAg
Y2FjaGVzSW5mby5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNhY2hlcy5zaXplKCkpOwogICAgICAg
ICBmb3IgKGF1dG8mIGNhY2hlIDogY2FjaGVzKQotICAgICAgICAgICAgY2FjaGVzSW5mby51bmNo
ZWNrZWRBcHBlbmQoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2FjaGVJbmZvIHsg
Y2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZX0pOworICAgICAgICAgICAgY2FjaGVzSW5mby51
bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZX0p
OwogCiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2FjaGVzSW5mbykpOwogICAgIH0pOwpAQCAt
Mjk3LDcgKzI5OSw3IEBAIFZlY3Rvcjx1aW50NjRfdD4gRW5naW5lOjpxdWVyeUNhY2hlKGNvbnN0
IFZlY3RvcjxSZWNvcmQ+JiByZWNvcmRzLCBjb25zdCBXZWJDb3JlCiAKICAgICBWZWN0b3I8dWlu
dDY0X3Q+IHJlc3VsdHM7CiAgICAgZm9yIChjb25zdCBhdXRvJiByZWNvcmQgOiByZWNvcmRzKSB7
Ci0gICAgICAgIGlmIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpxdWVyeUNhY2hl
TWF0Y2gocmVxdWVzdCwgcmVjb3JkLnJlcXVlc3QsIHJlY29yZC5yZXNwb25zZSwgb3B0aW9ucykp
CisgICAgICAgIGlmIChXZWJDb3JlOjpET01DYWNoZTo6cXVlcnlDYWNoZU1hdGNoKHJlcXVlc3Qs
IHJlY29yZC5yZXF1ZXN0LCByZWNvcmQucmVzcG9uc2UsIG9wdGlvbnMpKQogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQocmVjb3JkLmlkZW50aWZpZXIpOwogICAgIH0KICAgICByZXR1cm4gcmVz
dWx0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDBmMWJhNGMyOTc0ZjU4MDgwY2M5ZDhhOGEzZGQwZGMw
Zjc2MjQ1YWYuLjI5MTc3MTJmZDNkZGU5Y2Y0MzcwMGVjMDAyOTQ2ODNlNmJkY2VlYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmUuaApAQCAtNDUsMzEgKzQ1LDMxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRW5naW5l
JiBmcm9tKFBBTDo6U2Vzc2lvbklEKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95RW5naW5lKFBB
TDo6U2Vzc2lvbklEKTsKIAotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYpOwotICAgIHZv
aWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJik7Ci0gICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25zdCBTdHJpbmcmIG9yaWdpbiwgQ2Fj
aGVJbmZvc0NhbGxiYWNrJiYpOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZp
ZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lk
IHJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBXZWJDb3JlOjpET01DYWNoZTo6
Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCi0gICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBwdXRSZWNv
cmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiwgUmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKLSAgICB2b2lkIGRlbGV0ZU1hdGNoaW5nUmVjb3Jkcyh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOworICAg
IHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6
RE9NQ2FjaGU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHB1dFJlY29yZHModWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJiwg
V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisgICAgdm9p
ZCBkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIEVuZ2luZSYgZGVmYXVsdEVuZ2luZSgpOwogCi0gICAgdm9pZCB3cml0ZUNhY2hl
c1RvRGlzayhDb21wbGV0aW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlz
ayhXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxiYWNrJiYpOwogCi0gICAgdXNpbmcg
Q2FjaGVzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VmVjdG9yPENh
Y2hlPj4sIEVycm9yPjsKLSAgICB1c2luZyBDYWNoZXNDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
Q2FjaGVzT3JFcnJvciYmKT47Ci0gICAgdm9pZCByZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoQ2FjaGVzT3JFcnJvciYmKT4mJik7Ci0KLSAgICB1
c2luZyBDYWNoZU9yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENhY2hl
PiwgRXJyb3I+OwotICAgIHVzaW5nIENhY2hlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKENhY2hl
T3JFcnJvciYmKT47CisgICAgdXNpbmcgQ2FjaGVzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8VmVjdG9yPENhY2hlPj4sIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJvcj47
CisgICAgdXNpbmcgQ2FjaGVzQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVzT3JF
cnJvciYmKT47CisgICAgdm9pZCByZWFkQ2FjaGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmln
aW4sIENhY2hlc0NhbGxiYWNrJiYpOwogCisgICAgdXNpbmcgQ2FjaGVPckVycm9yID0gRXhwZWN0
ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZT4sIFdlYkNvcmU6OkRPTUNhY2hlOjpFcnJv
cj47CisgICAgdXNpbmcgQ2FjaGVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChDYWNoZU9y
RXJyb3ImJik+OwogICAgIHZvaWQgcmVhZENhY2hlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Q2FjaGVDYWxsYmFjayYmKTsKLSAgICB2b2lkIHdyaXRlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxi
YWNrJiYpOwotICAgIHZvaWQgcmVtb3ZlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwog
Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmQ+Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVy
eU9wdGlvbnMmKTsKKyAgICB2b2lkIHdyaXRlQ2FjaGVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZUNhY2hlUmVjb3Jkcyh1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGU6
OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisKKyAgICBWZWN0b3I8dWludDY0X3Q+IHF1
ZXJ5Q2FjaGUoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlv
bnMmKTsKIAogICAgIENhY2hlKiBjYWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmgKaW5kZXggMWQ4ZjExOWE2ZTkxM2Y2NDlmZGMzM2RhMzM1OGU4
NmVkYjZkN2Y2Ny4uOTY2YjUxNDRlYzdkYjFjN2E5YTE3YTQ2ZjZhM2MwZjRhMzNjMzAyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NQ2FjaGUu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIENhY2hlU3RvcmFnZSB7CiBzdHJ1Y3Qg
Q2FjaGUgewogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgeyAwIH07CiAgICAgU3RyaW5nIG5hbWU7
Ci0gICAgVmVjdG9yPFJlY29yZD4gcmVjb3JkczsKKyAgICBWZWN0b3I8V2ViQ29yZTo6RE9NQ2Fj
aGU6OlJlY29yZD4gcmVjb3JkczsKICAgICB1aW50NjRfdCBuZXh0UmVjb3JkSWRlbnRpZmllciB7
IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uY3BwCmluZGV4IDdm
ZTI5YTFkZDQ4ZDcwYmViZDI1ZjgwMTM4NzFhNWE5NDlmNmM1N2IuLjM1ZWIxZDY1YjdmYThkOTVk
ZTFkNjMzMzVhMDljYTRkMGQ1NWI4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0
aW9uLmNwcApAQCAtMjksOCArMjksMTAgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9N
Q2FjaGU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpDYWNoZVN0b3JhZ2U7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNDIsMTQgKzQ0LDE0IEBAIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlCiAK
IHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3BlbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpCiB7Ci0gICAgRW5naW5lOjpmcm9tKHNlc3Npb25J
RCkub3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0oQ2FjaGVJZGVudGlmaWVyT3JF
cnJvciYmIHJlc3VsdCkgeworICAgIEVuZ2luZTo6ZnJvbShzZXNzaW9uSUQpLm9wZW4ob3JpZ2lu
LCBjYWNoZU5hbWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Np
b25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJl
c3VsdCkgewogICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Ok9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZp
ZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQg
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVtb3ZlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
cikKIHsKLSAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5yZW1vdmUoY2FjaGVJZGVudGlmaWVy
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBzZXNzaW9uSUQsIHJlcXVl
c3RJZGVudGlmaWVyXShDYWNoZUlkZW50aWZpZXJPckVycm9yJiYgcmVzdWx0KSB7CisgICAgRW5n
aW5lOjpmcm9tKHNlc3Npb25JRCkucmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllcl0o
Y29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSB7CiAgICAgICAgIG1fY29ubmVj
dGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6UmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQpLCBzZXNzaW9uSUQu
c2Vzc2lvbklEKCkpOwogICAgIH0pOwogfQpAQCAtNzUsNyArNzcsNyBAQCB2b2lkIENhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlbGV0ZU1hdGNoaW5nUmVjb3JkcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSQogICAgIH0pOwogfQogCi12b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b246OnB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmIHJlY29yZHMpCit2b2lkIENhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb246OnB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0
b3I8UmVjb3JkPiYmIHJlY29yZHMpCiB7CiAgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkucHV0
UmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcyksIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKFJl
Y29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgewogICAgICAgICBtX2Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlB1
dFJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5z
ZXNzaW9uSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCmluZGV4IDRhOTNl
NWYzNmJjODcyZjhjMzhjODUyMTRiNjM1MzYyNDczYzM0Y2UuLmZiM2E2NjRlNTQ1YzRkYWY3NTU4
ZmQxNDlhYTFlYTFmMWRmOWQ1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5o
CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlY29yZHMoUEFMOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJik7Ci0gICAg
dm9pZCBwdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6UmVjb3JkPiYmKTsKKyAgICB2b2lkIHB1dFJlY29yZHMoUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIs
IFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmKTsKIAogICAgIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDRkZjM5NDI1NmJmYmViZWRm
N2U2ZjEwZjU4MDRlOWNjMTYwNGFhYjQuLjU5MjJlZWQ2NjcyNzZkZGMxZTU0YTQ4MTg0M2RmYmUz
YTllNTJkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KQEAgLTI3LDUgKzI3LDUgQEAgbWVzc2FnZXMgLT4gQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbiB7CiAKICAgICBSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllcik7CiAgICAg
RGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyBv
cHRpb25zKTsKLSAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdl
YkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4gcmVjb3JkKTsKKyAgICBQdXRS
ZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkRPTUNhY2hlOjpS
ZWNvcmQ+IHJlY29yZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCBhNmY4YTAxZDI2ZTgyYzA1OTE4NjllZjg2NmM5YzlmZjY5NjJh
ODVhLi5jMmRjNzU1OWQxNDcwMTcyNWRiMWE5NjUzYjFlMzk4MjhiMzJhMzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTIxNCwxMyAr
MjE0LDEzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDYWNoZVF1ZXJ5T3B0aW9ucz46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBDYWNoZVF1ZXJ5T3B0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgQXJndW1lbnRDb2RlcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpDYWNoZUluZm8+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2Fj
aGVJbmZvJiBpbmZvKQordm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlOjpDYWNoZUluZm8+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2FjaGU6OkNhY2hlSW5mbyYgaW5mbykK
IHsKICAgICBlbmNvZGVyIDw8IGluZm8uaWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IGluZm8u
bmFtZTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OkNh
Y2hlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpDYWNoZUluZm8mIHJlY29yZCkKK2Jvb2wgQXJndW1lbnRDb2RlcjxET01DYWNoZTo6Q2FjaGVJ
bmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERPTUNhY2hlOjpDYWNoZUluZm8mIHJlY29y
ZCkKIHsKICAgICB1aW50NjRfdCBpZGVudGlmaWVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aWRlbnRpZmllcikpCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OkNhY2hlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLAog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OlJlY29yZCYgcmVjb3JkKQordm9pZCBBcmd1bWVudENvZGVyPERPTUNh
Y2hlOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2FjaGU6OlJl
Y29yZCYgcmVjb3JkKQogewogICAgIGVuY29kZXIgPDwgcmVjb3JkLmlkZW50aWZpZXI7CiAKQEAg
LTI2Miw3ICsyNjIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbgogICAgIH0pOwogfQogCi1i
b29sIEFyZ3VtZW50Q29kZXI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCYgcmVjb3Jk
KQorYm9vbCBBcmd1bWVudENvZGVyPERPTUNhY2hlOjpSZWNvcmQ+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgRE9NQ2FjaGU6OlJlY29yZCYgcmVjb3JkKQogewogICAgIHVpbnQ2NF90IGlkZW50
aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZGVudGlmaWVyKSkKQEAgLTI5Niw3ICsy
OTYsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3Jk
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENhYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dXBkYXRlUmVzcG9uc2VDb3VudGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5IHJlc3BvbnNlQm9keTsK
KyAgICBXZWJDb3JlOjpET01DYWNoZTo6UmVzcG9uc2VCb2R5IHJlc3BvbnNlQm9keTsKICAgICBi
b29sIGhhc1NoYXJlZEJ1ZmZlckJvZHk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNTaGFy
ZWRCdWZmZXJCb2R5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAwODFmYjAxZjRkNjZiMWMwM2JhY2Qx
YTg5YWEwYWJjZDJjZmFkYzZlLi43OTBiODI5YmU0NzliOGFjYjY5MTEyZDdlZjEwYzg2MmZlYWUy
MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApA
QCAtMjAwLDE0ICsyMDAsMTQgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVy
JiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Q2FjaGVJbmZv
PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpDYWNoZUluZm8mKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OkNhY2hlSW5mbyYpOwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJ
bmZvPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpE
T01DYWNoZTo6Q2FjaGVJbmZvJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBX
ZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4gewot
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6UmVjb3JkJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQmKTsKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29y
ZCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RE9NQ2FjaGU6
OlJlY29yZCYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpFdmVudFRyYWNraW5nUmVnaW9ucz4gewpAQCAtNzg2LDEyICs3ODYsNCBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlPiB7
CiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6RXJyb3I+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAotICAgICAgICBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpFcnJvciwKLSAg
ICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6RXJyb3I6Ok5vbmUsCi0gICAg
ICAgIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OkVycm9yOjpOb3RJbXBsZW1lbnRl
ZAotICAgID47Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYyOTliNGIzMWE1N2E2MGExYzZm
MWI4ODg1YmE3OWU1MDcyZmMxZGEuLjkwZTFhY2RhNTI1NTViNGRlYzY2Y2NjMTA4ZjY2NTlkZDA5
MTM2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtOTA2LDcgKzkwNiw2IEBACiAJCTQxREM0NTlFMUUzREJEQTEwMEIxMUY1MSAvKiBX
ZWJSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFEQzQ1OUQxRTNEQkNGMDAwQjExRjUxIC8qIFdlYlJUQ1NvY2tldC5jcHAgKi87IH07
CiAJCTQxREM0NTlGMUUzREJEQTUwMEIxMUY1MSAvKiBXZWJSVENTb2NrZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFGNUYzMUUzQkZFN0YwMDFB
RTY3OCAvKiBXZWJSVENTb2NrZXQuaCAqLzsgfTsKIAkJNDFEQzQ1QTExRTNEQzUzRjAwQjExRjUx
IC8qIFdlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxREM0NUEwMUUzREM1M0MwMEIxMUY1MSAvKiBXZWJSVENSZXNvbHZlci5j
cHAgKi87IH07Ci0JCTQxRkFCRDI5MUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFCRDI3MUY0
RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2UuaCAqLzsgfTsKIAkJNDFGQUJEMkExRjRERTAw
MTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBQkQyODFGNERERkRDMDA2QTZDOTcgLyog
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCAqLzsgfTsKIAkJNDFGQUY1RjUxRTNDMDY0OTAwMUFF
Njc4IC8qIFdlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUZBRjVGNDFFM0MwNjQxMDAxQUU2NzggLyogV2ViUlRDUmVzb2x2ZXIu
aCAqLzsgfTsKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4IC8qIExpYldlYlJUQ1Jlc29sdmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVG
NjFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKQEAgLTMxNzks
NyArMzE3OCw2IEBACiAJCTQxREM0NTlBMUUzREJCMjQwMEIxMUY1MSAvKiBMaWJXZWJSVENTb2Nr
ZXRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDU29j
a2V0Q2xpZW50Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NTlEMUUzREJDRjAw
MEIxMUY1MSAvKiBXZWJSVENTb2NrZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL1dlYlJUQ1Nv
Y2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NUEwMUUzREM1M0Mw
MEIxMUY1MSAvKiBXZWJSVENSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBXZWJSVENSZXNvbHZlci5jcHA7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9XZWJS
VENSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxRkFCRDI3MUY0
RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FjaGVTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
RkFCRDI4MUY0RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZBRjVGMzFFM0JGRTdGMDAxQUU2NzggLyog
V2ViUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlJUQ1Nv
Y2tldC5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvV2ViUlRDU29ja2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRkFGNUY0MUUzQzA2NDEwMDFBRTY3OCAvKiBXZWJSVENSZXNv
bHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJSVENSZXNvbHZlci5o
OyBwYXRoID0gTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTgxOTQsNyArODE5Miw2IEBACiAJCUU0ODlEMjgyMUEwQTJCRTgwMDc4
QzA2QSAvKiBjYWNoZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJNDFGQUJEMjcxRjREREZEQzAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZS5oICovLAogCQkJ
CTQxODk3RUQ2MUY0MTVEODYwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuY3BwICovLAog
CQkJCTQxODk3RUQyMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCAqLywK
IAkJCQk0MUZBQkQyODFGNERERkRDMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
aCAqLywKQEAgLTg0MzAsNyArODQyNyw2IEBACiAJCQkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUw
IC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNTExMUJF
NDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY1RkEx
MjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxRkFC
RDI5MUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFREExRjQxNUQ4QTAwMTZGQTQyIC8q
IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uY3BwCmluZGV4IDVjMjgyYmVlZjdiNWUyNjYxZTkxYjk3NmNiODA2YWIxNTZiNDRi
NTkuLmMzZDEzMDI3NTA5YzMyYjMyN2MyNmQ5ZTRmMTBmNjEzNTkyNGIyMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJDYWNoZVN0
b3JhZ2VFbmdpbmUuaCIKICNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCkBAIC0zNCw2ICszNSw3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03OSwzOSArODEs
MzkgQEAgdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3BlcmF0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWUKICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6RGVsZXRlTWF0Y2hpbmdSZWNvcmRz
KG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0
LCBvcHRpb25zKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9C
YXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVj
b3JkPiYmIHJlY29yZHMpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQ
dXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzKQogewogICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uOjpQdXRSZWNvcmRzKG1f
c2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCByZWNvcmRzKSwg
MCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYmIHJlc3Vs
dCkKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0
KQogewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW5Db21wbGV0ZWQocmVxdWVzdElk
ZW50aWZpZXIsIHJlc3VsdC5oYXNWYWx1ZSgpID8gcmVzdWx0LnZhbHVlKCkgOiAwLCAhcmVzdWx0
Lmhhc1ZhbHVlKCkgPyBFcnJvcjo6SW50ZXJuYWwgOiBFcnJvcjo6Tm9uZSk7CisgICAgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0
KTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hlSWRlbnRpZmllck9yRXJyb3ImJiByZXN1
bHQpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZUNvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVz
dWx0KQogewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJlbW92ZUNvbXBsZXRlZChyZXF1
ZXN0SWRlbnRpZmllciwgcmVzdWx0Lmhhc1ZhbHVlKCkgPyByZXN1bHQudmFsdWUoKSA6IDAsICFy
ZXN1bHQuaGFzVmFsdWUoKSA/IEVycm9yOjpJbnRlcm5hbCA6IEVycm9yOjpOb25lKTsKKyAgICBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIs
IHJlc3VsdCk7CiB9CiAKIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlQ2Fj
aGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZUluZm9zT3JFcnJvciYmIHJlc3Vs
dCkKIHsKLSAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVDYWNoZXMocmVxdWVzdElk
ZW50aWZpZXIsIHJlc3VsdC5oYXNWYWx1ZSgpID8gcmVzdWx0LnZhbHVlKCkgOiBWZWN0b3I8Q2Fj
aGVJbmZvPigpKTsKKyAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVDYWNoZXMocmVx
dWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKIHZvaWQgV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
UmVjb3Jkc09yRXJyb3ImJiByZXN1bHQpCiB7Ci0gICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
dXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0Lmhhc1ZhbHVlKCkgPyBXVEZN
b3ZlKHJlc3VsdC52YWx1ZSgpKSA6IFZlY3RvcjxSZWNvcmQ+KCkpOworICAgIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OnVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVz
dWx0KSk7CiB9CiAKIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZGVsZXRlUmVjb3Jk
c0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUmVjb3JkSWRlbnRpZmllcnNP
ckVycm9yJiYgcmVzdWx0KQogewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJl
Y29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdC5oYXNWYWx1ZSgpID8gcmVz
dWx0LnZhbHVlKCkgOiBWZWN0b3I8dWludDY0X3Q+KCksICFyZXN1bHQuaGFzVmFsdWUoKSA/IEVy
cm9yOjpJbnRlcm5hbCA6IEVycm9yOjpOb25lKTsKKyAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpkZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3Vs
dCkpOwogfQogCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21w
bGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFJlY29yZElkZW50aWZpZXJzT3JFcnJv
ciYmIHJlc3VsdCkKIHsKLSAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29t
cGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQuaGFzVmFsdWUoKSA/IHJlc3VsdC52YWx1
ZSgpIDogVmVjdG9yPHVpbnQ2NF90PigpLCAhcmVzdWx0Lmhhc1ZhbHVlKCkgPyBFcnJvcjo6SW50
ZXJuYWwgOiBFcnJvcjo6Tm9uZSk7CisgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cHV0UmVj
b3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggNzNjMWQzN2E5NzhiNTc0MjVlYjc2ZWMyMmY3NDQ1
ODkxNzI1MTIwNC4uMjVhZmZjZjAwYWRjMDhmODIxNGVkNzRmNTBmYzgyMTM4YzE4MWM3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtNTksMTUgKzU4LDE1
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
ZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0
X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJD
b3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKLSAgICB2b2lkIGRvQmF0Y2hQdXRPcGVy
YXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgVmVjdG9yPFJlY29yZD4mJikgZmluYWw7CisgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9u
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZl
Y3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmKSBmaW5hbDsKIAotICAgIHZvaWQgb3Bl
bkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgQ2FjaGVTdG9yYWdlOjpDYWNo
ZUlkZW50aWZpZXJPckVycm9yJiYpOwotICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZVN0b3JhZ2U6OkNhY2hlSWRlbnRpZmllck9yRXJyb3Im
Jik7Ci0gICAgdm9pZCB1cGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENh
Y2hlU3RvcmFnZTo6Q2FjaGVJbmZvc09yRXJyb3ImJik7CisgICAgdm9pZCBvcGVuQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZTo6Q2Fj
aGVJZGVudGlmaWVyT3JFcnJvciYpOworICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlm
aWVyT3JFcnJvciYpOworICAgIHZvaWQgdXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvc09yRXJyb3ImJik7CiAKLSAgICB2
b2lkIHVwZGF0ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hlU3RvcmFn
ZTo6UmVjb3Jkc09yRXJyb3ImJik7Ci0gICAgdm9pZCBkZWxldGVSZWNvcmRzQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZVN0b3JhZ2U6OlJlY29yZElkZW50aWZpZXJz
T3JFcnJvciYmKTsKLSAgICB2b2lkIHB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIENhY2hlU3RvcmFnZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYpOwor
ICAgIHZvaWQgdXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OlJlY29yZHNPckVycm9yJiYpOworICAgIHZvaWQgZGVsZXRlUmVjb3Jkc0Nv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJl
Y29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsKKyAgICB2b2lkIHB1dFJlY29yZHNDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVu
dGlmaWVyc09yRXJyb3ImJik7CiAKICAgICBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlciYgbV9wcm92
aWRlcjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZDMwODYzZmE3N2IwMDZlMjI1MDRkZWM3MGY2Yzg1
MWZkZjFjMWVhYy4uYTllMzMyNDFmMzk2ZjE5YTBhZTBlMzA0OTM3MmNmZGE1MTgyYTE0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hl
L1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTIxLDExICsyMSwxMSBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
IHsKLSAgICBPcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciByZXN1bHQpOwotICAgIFJlbW92
ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlSWRlbnRpZmllck9yRXJyb3IgcmVzdWx0KTsKLSAgICBVcGRhdGVDYWNoZXModWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZUluZm9z
T3JFcnJvciByZXN1bHQpOworICAgIE9wZW5Db21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJPckVycm9yIHJlc3VsdCk7
CisgICAgUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3Jl
OjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciByZXN1bHQpOworICAgIFVwZGF0ZUNh
Y2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNhY2hl
SW5mb3NPckVycm9yIHJlc3VsdCk7CiAKLSAgICBVcGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6UmVjb3Jkc09yRXJyb3IgcmVzdWx0
KTsKLSAgICBEZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yIHJlc3VsdCk7
Ci0gICAgUHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciByZXN1bHQpOworICAg
IFVwZGF0ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNh
Y2hlOjpSZWNvcmRzT3JFcnJvciByZXN1bHQpOworICAgIERlbGV0ZVJlY29yZHNDb21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRJZGVu
dGlmaWVyc09yRXJyb3IgcmVzdWx0KTsKKyAgICBQdXRSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNP
ckVycm9yIHJlc3VsdCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318919</attachid>
            <date>2017-08-23 14:30:18 -0700</date>
            <delta_ts>2017-08-23 17:07:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175902-20170823143017.patch</filename>
            <type>text/plain</type>
            <size>91810</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ2YmZhNDczYTE1MjAy
MjM3Nzg1YjdiZGI2NjBmZDg5NGYxN2M2My4uMTM2ZTIwMjczYmY2YzIzZTQxYTliMDM3ODYwYjAw
MzU2ZmViZDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE3LTA4LTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2FjaGUgQVBJXSBVbmlm
eSBXZWJDb3JlIGFuZCBXZWJLaXQgZXJyb3IgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTkwMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKworICAg
ICAgICBJbnRyb2R1Y2luZyBhIERPTUNhY2hlIG5hbWVzcGFjZSBlbmNsb3Npbmcgc3RydWN0dXJl
cywgY2FsbGJhY2tzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucworICAgICAgICBwcmV2aW91c2x5
IGZvdW5kIGluIGVpdGhlciBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uIG9yIFdlYktp
dDo6Q2FjaGVTdG9yYWdlLgorCisgICAgICAgIFNvbWUgcHJldmlvdXNseSB1c2VkIGNhbGxiYWNr
cyBoYWQgbm8gd2F5IHRvIHBhc3MgZXJyb3JzIGluIFdlYkNvcmUgd2hpbGUgdGhleSBoYWQgaW4g
V2ViS2l0LgorICAgICAgICBVcGRhdGVkIENhY2hlLCBDYWNoZVN0b3JhZ2UsIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24gYW5kIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24gdG8gZGVhbCB3aXRo
IHRoZXNlIHBvdGVudGlhbCBlcnJvcnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
VGFza3NIYW5kbGVyOjpGZXRjaFRhc2tzSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aFRhc2tzSGFuZGxlcjo6cmVjb3JkcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFRh
c2tzSGFuZGxlcjo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjphZGRBbGwp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZTo6cmV0cmlldmVSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OnF1ZXJ5Q2FjaGVNYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6YmF0Y2hEZWxldGVPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6dG9Db25uZWN0aW9uUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
OjpiYXRjaFB1dE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZTo6dXBkYXRlUmVj
b3Jkcyk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFn
ZTo6cmV0cmlldmVDYWNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlOjpvcGVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZTo6cmVtb3ZlKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpy
ZXRyaWV2ZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpiYXRjaERlbGV0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uOjpvcGVuT3JSZW1vdmVDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZVJlY29yZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxl
dGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW5Db21wbGV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlQ29tcGxl
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0
Y2hQdXRPcGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0Nyb3NzVGhyZWFkUmVjb3Jk
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpmcm9tQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JlbW92ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJp
ZXZlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnJlY29yZHNEYXRhRnJvbVJlY29yZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVjb3Jkc0Zyb21SZWNvcmRzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZWNvcmRzT3JFcnJvckZyb21SZWNvcmRzRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoRGVsZXRlT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0
Y2hQdXRPcGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNy0wOC0yMyAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBUcmFjayBWaWRlb1BsYXli
YWNrUXVhbGl0eSBtZXRyaWNzIHdoZW4gdXNpbmcgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkOTNmODdjOTIwYmRmOWU0MDUzZTRjMmI2YzJlYmViMzA5MGQ2MzU1Li5l
NmQzYmNhYzNlZGNiMTgwNjIwOWI3NTRiNmFmMGE1YzY2NDJmYWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQyIEBACisyMDE3LTA4LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBbQ2FjaGUgQVBJXSBVbmlmeSBXZWJDb3JlIGFuZCBXZWJLaXQgZXJyb3IgaGFu
ZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTkwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92aW5nIGFsbCBjYWxsYmFja3MgYW5kIGVycm9yIGRlZmluaXRpb25zIGZyb20gV2ViS2l0Cisg
ICAgICAgIGFuZCByZXVzaW5nIERPTUNhY2hlIG9uZXMgaW5zdGVhZC4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjYWNoZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cXVlcnlDYWNoZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnB1dFJlY29yZHMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlOjpDYWNoZUluZm8+OjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlOjpDYWNoZUluZm8+Ojpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlOjpSZWNvcmQ+Ojpl
bmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlOjpSZWNvcmQ+Ojpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkb0JhdGNoUHV0T3BlcmF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNv
bXBsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJl
bW92ZUNvbXBsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OnVwZGF0ZUNhY2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnVwZGF0ZVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpkZWxldGVSZWNvcmRzQ29tcGxldGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgor
CiAyMDE3LTA4LTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQWRkIFdLVUlEZWxlZ2F0ZVByaXZhdGUgY2FsbGJhY2tzIGNvcnJlc3BvbmRp
bmcgdG8gV0tQYWdlVUlDbGllbnQncyB0YWtlRm9jdXMsIGZvY3VzLCBhbmQgdW5mb2N1cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCAyMTdmZmQ2NzAyN2MxNTQ3MTM3OWIwOThiMWYzZDZjNjFkNGZi
OTZlLi40ZGFhOWNiODk4NWE1MTA2ZmE1ZDJhMGVmM2I3Yzg4MWFmMDBiYTY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtODk3LDYgKzg5Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBN
b2R1bGVzL2NhY2hlL0NhY2hlLmNwcAogICAgIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNw
cAogICAgIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKyAgICBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAogICAgIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVz
LmNwcAogICAgIE1vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAK
ICAgICBNb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcAppbmRleCBkNjQyMzE0YzIzYjIxOWVhMjk5MGY2MzM4
MjkzMzM3ODY3NmU5YjgyLi4zNjZlYjM2OWU1ZTJhNTQ5YWU4ZDk0MWEzZmQwNDA3MjYxZTI0MzRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmNwcApAQCAtMzQsOSArMzQsMTEg
QEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiVVJMLmgi
CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkIHRvQ29ubmVjdGlv
blJlY29yZChjb25zdCBGZXRjaFJlcXVlc3QmLCBGZXRjaFJlc3BvbnNlJiwgQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5JiYpOworc3RhdGljIFJlY29yZCB0b0Nvbm5lY3Rpb25S
ZWNvcmQoY29uc3QgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hSZXNwb25zZSYsIFJlc3BvbnNlQm9keSYm
KTsKIAogQ2FjaGU6OkNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFN0cmlu
ZyYmIG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24pCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCkBAIC0xMzUs
NyArMTM3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc1Jlc3BvbnNlVmFyeVN0YXJIZWFkZXJW
YWx1ZShjb25zdCBGZXRjaFJlc3BvbnNlJiByZXNwb25zZSkKIAogY2xhc3MgRmV0Y2hUYXNrc0hh
bmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGZXRjaFRhc2tzSGFuZGxlcj4gewogcHVibGljOgot
ICAgIGV4cGxpY2l0IEZldGNoVGFza3NIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
VmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4+JiYpPiYmIGNhbGxiYWNrKQor
ICAgIGV4cGxpY2l0IEZldGNoVGFza3NIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
VmVjdG9yPFJlY29yZD4+JiYpPiYmIGNhbGxiYWNrKQogICAgICAgICA6IG1fY2FsbGJhY2soV1RG
TW92ZShjYWxsYmFjaykpCiAgICAgewogICAgIH0KQEAgLTE0Niw5ICsxNDgsOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX2NhbGxiYWNrKFdURk1vdmUobV9yZWNvcmRzKSk7CiAgICAgfQogCi0g
ICAgY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4mIHJlY29yZHMo
KSBjb25zdCB7IHJldHVybiBtX3JlY29yZHM7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVjb3JkPiYg
cmVjb3JkcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVjb3JkczsgfQogCi0gICAgc2l6ZV90IGFkZFJl
Y29yZChDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQmJiByZWNvcmQpCisgICAgc2l6ZV90
IGFkZFJlY29yZChSZWNvcmQmJiByZWNvcmQpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlzRG9u
ZSgpKTsKICAgICAgICAgbV9yZWNvcmRzLmFwcGVuZChXVEZNb3ZlKHJlY29yZCkpOwpAQCAtMTcw
LDggKzE3Miw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4gbV9yZWNvcmRzOwotICAgIEZ1bmN0aW9uPHZvaWQo
RXhjZXB0aW9uT3I8VmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4+JiYpPiBt
X2NhbGxiYWNrOworICAgIFZlY3RvcjxSZWNvcmQ+IG1fcmVjb3JkczsKKyAgICBGdW5jdGlvbjx2
b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWNvcmQ+PiYmKT4gbV9jYWxsYmFjazsKIH07CiAKIEV4
Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBDYWNoZTo6cmVxdWVzdEZyb21JbmZvKFJlcXVl
c3RJbmZvJiYgaW5mbywgYm9vbCBpZ25vcmVNZXRob2QpCkBAIC0yMDcsNyArMjA5LDcgQEAgdm9p
ZCBDYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWkKICAgICAgICAgcmVxdWVzdHMudW5jaGVja2VkQXBwZW5kKHJl
cXVlc3RPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgfQogCi0gICAgYXV0
byB0YXNrSGFuZGxlciA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hUYXNrc0hhbmRsZXIoW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
KEV4Y2VwdGlvbk9yPFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+PiYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgYXV0byB0YXNrSGFuZGxlciA9IGFkb3B0UmVmKCpuZXcgRmV0
Y2hUYXNrc0hhbmRsZXIoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWNvcmQ+PiYmIHJl
c3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjQ4LDcgKzI1MCw3IEBAIHZvaWQgQ2FjaGU6OmFkZEFsbChW
ZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pCiAKICAgICAgICAgICAgIENhY2hlUXVlcnlPcHRpb25zIG9wdGlvbnM7CiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHJlY29yZCA6IHRhc2tIYW5kbGVyLT5yZWNvcmRzKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cXVlcnlDYWNoZU1hdGNo
KHJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLCByZWNvcmQucmVxdWVzdCwgcmVjb3JkLnJlc3Bv
bnNlLCBvcHRpb25zKSkgeworICAgICAgICAgICAgICAgIGlmIChET01DYWNoZTo6cXVlcnlDYWNo
ZU1hdGNoKHJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLCByZWNvcmQucmVxdWVzdCwgcmVjb3Jk
LnJlc3BvbnNlLCBvcHRpb25zKSkgewogICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+
ZXJyb3IoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiYWRkQWxs
IGNhbm5vdCBzdG9yZSBzZXZlcmFsIG1hdGNoaW5nIHJlcXVlc3RzIil9KTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTMxMCw3ICszMTIsNyBAQCB2
b2lkIENhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiBy
ZXNwb25zZSwgRE9NUHJvbWlzZURlZgogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OlJlc3BvbnNlQm9keSBib2R5OworICAgICAgICAgICAgICAgIERPTUNhY2hl
OjpSZXNwb25zZUJvZHkgYm9keTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBidWZmZXIgPSBy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgICAgICAgICBiYXRjaFB1dE9wZXJhdGlv
bihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7
CkBAIC0zODEsOSArMzgzLDEyIEBAIHZvaWQgQ2FjaGU6OmtleXMoc3RkOjpvcHRpb25hbDxSZXF1
ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsCiB2b2lkIENhY2hl
OjpyZXRyaWV2ZVJlY29yZHMoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIG1fY29ubmVjdGlvbi0+cmV0cmlldmVS
ZWNvcmRzKG1faWRlbnRpZmllciwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KFZlY3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+JiYgcmVjb3JkcykgeworICAg
IG1fY29ubmVjdGlvbi0+cmV0cmlldmVSZWNvcmRzKG1faWRlbnRpZmllciwgW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSB7CiAgICAg
ICAgIGlmICghbV9pc1N0b3BwZWQpIHsKLSAgICAgICAgICAgIHVwZGF0ZVJlY29yZHMoV1RGTW92
ZShyZWNvcmRzKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHBy
b3BhZ2F0ZSB0aGF0IGVycm9yIHVwIHRvIHRoZSBwcm9taXNlIGJhc2VkIG9wZXJhdGlvbi4KKyAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQuaGFzVmFsdWUoKSk7CisgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgdXBkYXRlUmVjb3JkcyhXVEZNb3ZlKHJl
c3VsdC52YWx1ZSgpKSk7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9CiAgICAg
ICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwpAQCAtNDAwLDcgKzQwNSw3IEBAIHZvaWQg
Q2FjaGU6OnF1ZXJ5Q2FjaGUoUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBDYWNoZVF1ZXJ5
T3B0aW9ucyYmIG9wdGlvbnMsCiBzdGF0aWMgaW5saW5lIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNv
bnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiBjYWNoZWRSZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBjYWNoZWRSZXNwb25zZSwgY29uc3QgQ2FjaGVR
dWVyeU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gV2UgbmVlZCB0byBwYXNzIHRoZSByZXNv
dXJjZSByZXF1ZXN0IHdpdGggYWxsIGNvcnJlY3QgaGVhZGVycyBoZW5jZSB3aHkgd2UgY2FsbCBy
ZXNvdXJjZVJlcXVlc3QoKS4KLSAgICByZXR1cm4gQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cXVl
cnlDYWNoZU1hdGNoKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIGNhY2hlZFJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCksIGNhY2hlZFJlc3BvbnNlLCBvcHRpb25zKTsKKyAgICByZXR1cm4gRE9N
Q2FjaGU6OnF1ZXJ5Q2FjaGVNYXRjaChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBjYWNoZWRS
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBjYWNoZWRSZXNwb25zZSwgb3B0aW9ucyk7CiB9CiAK
IFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+IENhY2hlOjpxdWVyeUNhY2hlV2l0aFRhcmdldFN0
b3JhZ2UoY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4mIHRhcmdldFN0b3Jh
Z2UpCkBAIC00MTksMTUgKzQyNCwxOCBAQCBWZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiBDYWNo
ZTo6cXVlcnlDYWNoZVdpdGhUYXJnZXRTdG9yYWdlKGNvbnN0IEZldGNoUmVxdWVzdAogdm9pZCBD
YWNoZTo6YmF0Y2hEZWxldGVPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBD
YWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25P
cjxib29sPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7
Ci0gICAgbV9jb25uZWN0aW9uLT5iYXRjaERlbGV0ZU9wZXJhdGlvbihtX2lkZW50aWZpZXIsIHJl
cXVlc3QuaW50ZXJuYWxSZXF1ZXN0KCksIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKCFtX2lzU3RvcHBl
ZCkKLSAgICAgICAgICAgIGNhbGxiYWNrKENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmV4Y2VwdGlv
bk9yUmVzdWx0KCFyZWNvcmRzLmlzRW1wdHkoKSwgZXJyb3IpKTsKLQorICAgIG1fY29ubmVjdGlv
bi0+YmF0Y2hEZWxldGVPcGVyYXRpb24obV9pZGVudGlmaWVyLCByZXF1ZXN0LmludGVybmFsUmVx
dWVzdCgpLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSB7CisgICAgICAgIGlmICgh
bV9pc1N0b3BwZWQpIHsKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAg
ICAgICAgICAgICAgY2FsbGJhY2soRE9NQ2FjaGU6OmVycm9yVG9FeGNlcHRpb24ocmVzdWx0LmVy
cm9yKCkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjayghcmVz
dWx0LnZhbHVlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgfQogICAgICAgICB1bnNldFBlbmRpbmdB
Y3Rpdml0eSh0aGlzKTsKICAgICB9KTsKIH0KIAotQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVj
b3JkIHRvQ29ubmVjdGlvblJlY29yZChjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNo
UmVzcG9uc2UmIHJlc3BvbnNlLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkm
JiByZXNwb25zZUJvZHkpCitSZWNvcmQgdG9Db25uZWN0aW9uUmVjb3JkKGNvbnN0IEZldGNoUmVx
dWVzdCYgcmVxdWVzdCwgRmV0Y2hSZXNwb25zZSYgcmVzcG9uc2UsIERPTUNhY2hlOjpSZXNwb25z
ZUJvZHkmJiByZXNwb25zZUJvZHkpCiB7CiAgICAgLy8gRklYTUU6IEFkZCBhIHNldEhUVFBIZWFk
ZXJGaWVsZHMgb24gUmVzb3VyY2VSZXNwb25zZUJhc2UuCiAgICAgUmVzb3VyY2VSZXNwb25zZSBj
YWNoZWRSZXNwb25zZSA9IHJlc3BvbnNlLnJlc291cmNlUmVzcG9uc2UoKTsKQEAgLTQ0NiwyNiAr
NDU0LDI5IEBAIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB0b0Nvbm5lY3Rpb25SZWNv
cmQoY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBGCiAgICAgfTsKIH0KIAotdm9pZCBDYWNo
ZTo6YmF0Y2hQdXRPcGVyYXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaFJl
c3BvbnNlJiByZXNwb25zZSwgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5JiYg
cmVzcG9uc2VCb2R5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYg
Y2FsbGJhY2spCit2b2lkIENhY2hlOjpiYXRjaFB1dE9wZXJhdGlvbihjb25zdCBGZXRjaFJlcXVl
c3QmIHJlcXVlc3QsIEZldGNoUmVzcG9uc2UmIHJlc3BvbnNlLCBET01DYWNoZTo6UmVzcG9uc2VC
b2R5JiYgcmVzcG9uc2VCb2R5LCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4m
Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJl
Y29yZD4gcmVjb3JkczsKKyAgICBWZWN0b3I8UmVjb3JkPiByZWNvcmRzOwogICAgIHJlY29yZHMu
YXBwZW5kKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LCByZXNwb25zZSwgV1RGTW92ZShyZXNw
b25zZUJvZHkpKSk7CiAKICAgICBiYXRjaFB1dE9wZXJhdGlvbihXVEZNb3ZlKHJlY29yZHMpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgQ2FjaGU6OmJhdGNoUHV0T3BlcmF0aW9uKFZl
Y3RvcjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQ+JiYgcmVjb3JkcywgV1RGOjpGdW5j
dGlvbjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBDYWNoZTo6
YmF0Y2hQdXRPcGVyYXRpb24oVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgc2V0UGVuZGlu
Z0FjdGl2aXR5KHRoaXMpOwotICAgIG1fY29ubmVjdGlvbi0+YmF0Y2hQdXRPcGVyYXRpb24obV9p
ZGVudGlmaWVyLCBXVEZNb3ZlKHJlY29yZHMpLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oVmVjdG9yPHVpbnQ2NF90PiYmLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpFcnJv
ciBlcnJvcikgewotICAgICAgICBpZiAoIW1faXNTdG9wcGVkKQotICAgICAgICAgICAgY2FsbGJh
Y2soQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZXJyb3JUb0V4Y2VwdGlvbihlcnJvcikpOwotCisg
ICAgbV9jb25uZWN0aW9uLT5iYXRjaFB1dE9wZXJhdGlvbihtX2lkZW50aWZpZXIsIFdURk1vdmUo
cmVjb3JkcyksIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShSZWNvcmRJZGVu
dGlmaWVyc09yRXJyb3ImJiByZXN1bHQpIHsKKyAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgewor
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBjYWxs
YmFjayhET01DYWNoZTo6ZXJyb3JUb0V4Y2VwdGlvbihyZXN1bHQuZXJyb3IoKSkpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgIH0KICAg
ICAgICAgdW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAgICAgfSk7CiB9CiAKLXZvaWQgQ2Fj
aGU6OnVwZGF0ZVJlY29yZHMoVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4m
JiByZWNvcmRzKQordm9pZCBDYWNoZTo6dXBkYXRlUmVjb3JkcyhWZWN0b3I8UmVjb3JkPiYmIHJl
Y29yZHMpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgVmVj
dG9yPENhY2hlU3RvcmFnZVJlY29yZD4gbmV3UmVjb3JkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvQ2FjaGUuaAppbmRleCBlZmIzNGJiYzFlOWYwNjY1ZWY4MTQ4OTQwODI1ODVkNGRjMWEzYzdj
Li4yN2M1NWMyNmVlODMyNDFkZGEyODEyNDU2N2E4OGE2MTI2YzkyOWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZS5oCkBAIC03MywxMCArNzMsMTAgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8Q2FjaGVTdG9yYWdlUmVjb3JkPiBxdWVyeUNhY2hlV2l0aFRhcmdldFN0b3JhZ2UoY29u
c3QgRmV0Y2hSZXF1ZXN0JiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmLCBjb25zdCBWZWN0b3I8
Q2FjaGVTdG9yYWdlUmVjb3JkPiYpOwogICAgIHZvaWQgcXVlcnlDYWNoZShSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVj
dG9yPENhY2hlU3RvcmFnZVJlY29yZD4mKT4mJik7CiAgICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJh
dGlvbihjb25zdCBGZXRjaFJlcXVlc3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoRXhjZXB0aW9uT3I8Ym9vbD4mJik+JiYpOwotICAgIHZvaWQgYmF0Y2hQdXRPcGVy
YXRpb24oY29uc3QgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hSZXNwb25zZSYsIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OlJlc3BvbnNlQm9keSYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYpOwotICAgIHZvaWQgYmF0Y2hQdXRPcGVyYXRpb24oVmVjdG9yPENhY2hlU3Rv
cmFnZUNvbm5lY3Rpb246OlJlY29yZD4mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9y
PHZvaWQ+JiYpPiYmKTsKKyAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKGNvbnN0IEZldGNoUmVx
dWVzdCYsIEZldGNoUmVzcG9uc2UmLCBET01DYWNoZTo6UmVzcG9uc2VCb2R5JiYsIFdURjo6RnVu
Y3Rpb248dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJik7CisgICAgdm9pZCBiYXRjaFB1dE9w
ZXJhdGlvbihWZWN0b3I8RE9NQ2FjaGU6OlJlY29yZD4mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4
Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKTsKIAotICAgIHZvaWQgdXBkYXRlUmVjb3JkcyhWZWN0b3I8
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVJlY29y
ZHMoVmVjdG9yPERPTUNhY2hlOjpSZWNvcmQ+JiYpOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKICAg
ICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZWQ4MDhmZGU2NjJmMjJjY2YxZTkxMjI1ZDAyZGEwZWM4
ZmI3YWRhMy4uN2VkY2U2NDgxMWExODEyMDA1MGIyYjliNDYyNjhmYTYyMGQzOGM5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzEsNiAr
MzEsOCBAQAogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU6OkRPTUNhY2hlOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlU3RvcmFnZTo6Q2FjaGVTdG9yYWdlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24pCkBAIC0xMTcsOCArMTE5LDE2IEBAIHZvaWQgQ2FjaGVTdG9yYWdlOjpyZXRy
aWV2ZUNhY2hlcyhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotICAgIG1fY29ubmVjdGlvbi0+
cmV0cmlldmVDYWNoZXMob3JpZ2luLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OkNhY2hlSW5mbz4mJiBjYWNoZXNJbmZv
KSB7CisgICAgbV9jb25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIFt0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkgewog
ICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHByb2JhYmx5IHByb3BhZ2F0ZSB0aGF0IGVycm9yIHVwIHRvIHRoZSBwcm9taXNlIGJhc2Vk
IG9wZXJhdGlvbi4KKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaGFzVmFsdWUoKSk7CisgICAg
ICAgICAgICBpZiAoIXJlc3VsdC5oYXNWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBhdXRvJiBjYWNoZXNJbmZvID0gcmVzdWx0LnZhbHVlKCk7CisKICAgICAgICAgICAgIEFTU0VS
VChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICAgICAgbV9jYWNoZXMucmVtb3Zl
QWxsTWF0Y2hpbmcoWyZdKGF1dG8mIGNhY2hlKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNh
Y2hlc0luZm8uZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpbmZvKSB7IHJldHVybiBpbmZv
LmlkZW50aWZpZXIgPT0gY2FjaGUtPmlkZW50aWZpZXIoKTsgfSkgPT0gbm90Rm91bmQ7CkBAIC0x
NTIsMTMgKzE2MiwxMyBAQCB2b2lkIENhY2hlU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIG5h
bWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8Q2FjaAogICAgICAgICBBU1NFUlQo
IW9yaWdpbi5pc051bGwoKSk7CiAKICAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwot
ICAgICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4ob3JpZ2luLCBuYW1lLCBbdGhpcywgbmFtZSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6RXJyb3IgZXJyb3IpIG11dGFibGUgeworICAgICAgICBtX2Nvbm5l
Y3Rpb24tPm9wZW4ob3JpZ2luLCBuYW1lLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoIW1faXNTdG9wcGVkKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjplcnJvclRvRXhjZXB0aW9uKGVycm9yKTsK
LSAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlLnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKworICAg
ICAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAg
IHByb21pc2UucmVqZWN0KERPTUNhY2hlOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigp
KSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gY2Fj
aGUgPSBDYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IG5h
bWUgfSwgY2FjaGVJZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBjYWNoZSA9IENhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgU3RyaW5nIHsgbmFtZSB9LCByZXN1bHQudmFsdWUoKSwgbV9jb25uZWN0aW9uLmNv
cHlSZWYoKSk7CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShjYWNoZSk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fY2FjaGVzLmFwcGVuZChXVEZNb3ZlKGNhY2hlKSk7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMTgxLDExICsxOTEsMTMgQEAgdm9pZCBDYWNoZVN0b3JhZ2U6OnJl
bW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYm
IHAKICAgICAgICAgQVNTRVJUKCFvcmlnaW4uaXNOdWxsKCkpOwogCiAgICAgICAgIHNldFBlbmRp
bmdBY3Rpdml0eSh0aGlzKTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9jYWNoZXNb
cG9zaXRpb25dLT5pZGVudGlmaWVyKCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpFcnJvciBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgICAgICBVTlVTRURfUEFSQU0oY2FjaGVJ
ZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGlmICghbV9pc1N0b3BwZWQpCi0gICAgICAgICAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZXhjZXB0aW9uT3JSZXN1
bHQodHJ1ZSwgZXJyb3IpKTsKLQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZShtX2NhY2hl
c1twb3NpdGlvbl0tPmlkZW50aWZpZXIoKSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUg
eworICAgICAgICAgICAgaWYgKCFtX2lzU3RvcHBlZCkgeworICAgICAgICAgICAgICAgIGlmICgh
cmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERP
TUNhY2hlOjplcnJvclRvRXhjZXB0aW9uKHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUodHJ1ZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIG1fY2FjaGVzLnJlbW92ZShwb3NpdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApp
bmRleCAzMTU3ZmMzOGY5NzEwMDgzMmQxYWNmZjQ1NzE2NmU2ZjQ1YWQyZTdkLi44YTg5MmRmMmFk
YzZiOTNiN2MyZjNjNTY4MjZjZDQ0ZmJkY2E5ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTI3LDU4
ICsyNywxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb24uaCIKIAotI2luY2x1ZGUgIkNhY2hlUXVlcnlPcHRpb25zLmgiCi0jaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOjpET01DYWNoZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeGNlcHRpb25Pcjx2
b2lkPiBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjplcnJvclRvRXhjZXB0aW9uKEVycm9yIGVycm9y
KQotewotICAgIHN3aXRjaCAoZXJyb3IpIHsKLSAgICBjYXNlIEVycm9yOjpOb25lOgotICAgICAg
ICByZXR1cm4geyB9OwotICAgIGNhc2UgRXJyb3I6Ok5vdEltcGxlbWVudGVkOgotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGlt
cGxlbWVudGVkIikgfTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9OwotICAg
IH0KLX0KLQotYm9vbCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpxdWVyeUNhY2hlTWF0Y2goY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hl
ZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGNhY2hlZFJlc3BvbnNlLCBjb25zdCBD
YWNoZVF1ZXJ5T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBBU1NFUlQob3B0aW9ucy5pZ25vcmVN
ZXRob2QgfHwgcmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIkdFVCIpOwotCi0gICAgVVJMIHJlcXVl
c3RVUkwgPSByZXF1ZXN0LnVybCgpOwotICAgIFVSTCBjYWNoZWRSZXF1ZXN0VVJMID0gY2FjaGVk
UmVxdWVzdC51cmwoKTsKLQotICAgIGlmIChvcHRpb25zLmlnbm9yZVNlYXJjaCkgewotICAgICAg
ICByZXF1ZXN0VVJMLnNldFF1ZXJ5KHsgfSk7Ci0gICAgICAgIGNhY2hlZFJlcXVlc3RVUkwuc2V0
UXVlcnkoeyB9KTsKLSAgICB9Ci0gICAgaWYgKCFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKHJlcXVlc3RVUkwsIGNhY2hlZFJlcXVlc3RVUkwpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAob3B0aW9ucy5pZ25vcmVWYXJ5KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIFN0cmluZyB2YXJ5VmFsdWUgPSBjYWNoZWRSZXNwb25zZS5odHRwSGVhZGVyRmllbGQoV2Vi
Q29yZTo6SFRUUEhlYWRlck5hbWU6OlZhcnkpOwotICAgIGlmICh2YXJ5VmFsdWUuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2ll
bnQsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHNwbGl0IGFuZCB0cmltIHdoaXRlc3BhY2VzIGF0IHRo
ZSBzYW1lIHRpbWUuCi0gICAgVmVjdG9yPFN0cmluZz4gdmFyeUhlYWRlck5hbWVzOwotICAgIHZh
cnlWYWx1ZS5zcGxpdCgnLCcsIGZhbHNlLCB2YXJ5SGVhZGVyTmFtZXMpOwotICAgIGZvciAoYXV0
byYgbmFtZSA6IHZhcnlIZWFkZXJOYW1lcykgewotICAgICAgICBpZiAoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVFRQU3BhY2VzKG5hbWUpID09ICIqIikKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgaWYgKGNhY2hlZFJlcXVlc3QuaHR0cEhlYWRlckZpZWxkKG5hbWUpICE9IHJl
cXVlc3QuaHR0cEhlYWRlckZpZWxkKG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
OjpvcGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwgT3Bl
blJlbW92ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
Om9wZW4oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgY2FjaGVOYW1lLCBDYWNo
ZUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKICAgICBtX29wZW5BbmRSZW1v
dmVDYWNoZVBlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2Fs
bGJhY2spKTsKQEAgLTg2LDcgKzM5LDcgQEAgdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpv
cGVuKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGNhY2hlTmFtZSwKICAgICBk
b09wZW4ocmVxdWVzdElkZW50aWZpZXIsIG9yaWdpbiwgY2FjaGVOYW1lKTsKIH0KIAotdm9pZCBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBP
cGVuUmVtb3ZlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6cmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVJZGVudGlmaWVyQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9s
YXN0UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVx
dWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC05NCw3
ICs0Nyw3IEBAIHZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6cmVtb3ZlKHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllciwgT3BlblJlbW92ZUNhbGxiYWNrCiAgICAgZG9SZW1vdmUocmVxdWVzdElk
ZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6cmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnJldHJpZXZlQ2FjaGVz
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWNoZUluZm9zQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZp
ZXI7CiAgICAgbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTExMCw3ICs2Myw3IEBAIHZvaWQgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6cmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgUmVjb3Jkc0NhCiAgICAgZG9SZXRyaWV2ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hE
ZWxldGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkNhY2hlUXVlcnlPcHRpb25zJiYgb3B0
aW9ucywgQmF0Y2hPcGVyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2FjaGVRdWVyeU9wdGlvbnMmJiBv
cHRpb25zLCBSZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOwogICAg
IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVy
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xMTgsNyArNzEsNyBAQCB2b2lkIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmJhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmll
ciwgY29ucwogICAgIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24ocmVxdWVzdElkZW50aWZpZXIsIGNh
Y2hlSWRlbnRpZmllciwgcmVxdWVzdCwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKLXZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYm
IHJlY29yZHMsIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6YmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlm
aWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMsIFJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0
UmVxdWVzdElkZW50aWZpZXI7CiAgICAgbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0
cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTEyNiw2MSAr
NzksMzQgQEAgdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpiYXRjaFB1dE9wZXJhdGlvbih1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjwKICAgICBkb0JhdGNoUHV0T3BlcmF0aW9u
KHJlcXVlc3RJZGVudGlmaWVyLCBjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVjb3JkcykpOwog
fQogCi12b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9wZW5PclJlbW92ZUNvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJv
ciBlcnJvcikKK3ZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3Blbk9yUmVtb3ZlQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBDYWNoZUlkZW50aWZpZXJPckVy
cm9yJiByZXN1bHQpCiB7CiAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX29wZW5BbmRSZW1vdmVD
YWNoZVBlbmRpbmdSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkKLSAgICAgICAgY2Fs
bGJhY2soY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7CisgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlQ2FjaGVzKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8Q2FjaGVJbmZvPiYmIGNhY2hlcykKK3ZvaWQgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlm
aWVyLCBDYWNoZUluZm9zT3JFcnJvciYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmll
cikpCi0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2FjaGVzKSk7CisgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKLXZvaWQgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBk
YXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiBy
ZWNvcmRzKQordm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1cGRhdGVSZWNvcmRzKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBSZWNvcmRzT3JFcnJvciYmIHJlc3VsdCkKIHsKICAgICBp
ZiAoYXV0byBjYWxsYmFjayA9IG1fcmV0cmlldmVSZWNvcmRzUGVuZGluZ1JlcXVlc3RzLnRha2Uo
cmVxdWVzdElkZW50aWZpZXIpKQotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlY29yZHMpKTsK
KyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotdm9pZCBDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uOjpkZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpCit2b2lkIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIEV4cGVjdGVkPFZlY3Rvcjx1aW50NjRfdD4sIEVycm9yPiYmIHJlc3Vs
dCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fYmF0Y2hEZWxldGVBbmRQdXRQZW5kaW5n
UmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAgIGNhbGxiYWNrKFdURk1v
dmUocmVjb3JkcyksIGVycm9yKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsK
IH0KIAotdm9pZCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJy
b3IgZXJyb3IpCit2b2lkIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnB1dFJlY29yZHNDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIEV4cGVjdGVkPFZlY3Rvcjx1aW50NjRfdD4s
IEVycm9yPiYmIHJlc3VsdCkKIHsKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fYmF0Y2hEZWxl
dGVBbmRQdXRQZW5kaW5nUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAg
IGNhbGxiYWNrKFdURk1vdmUocmVjb3JkcyksIGVycm9yKTsKLX0KLQotQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6UmVzcG9uc2VCb2R5IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Omlzb2xhdGVkUmVz
cG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKLXsKLSAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewotICAgICAg
ICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOwot
ICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewotICAgICAgICByZXR1cm4gQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5IHsgfTsKLSAgICB9KTsKLX0KLQotc3RhdGlj
IGlubGluZSBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkgY29weVJlc3BvbnNl
Qm9keShjb25zdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpSZXNwb25zZUJvZHkmIGJvZHkpCi17
Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKLSAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBb
XShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIHJldHVybiBidWZm
ZXIuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewotICAgICAg
ICByZXR1cm4gQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9uc2VCb2R5IHsgfTsKLSAgICB9
KTsKLX0KLQotQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OlJlY29yZDo6Y29weSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFJlY29yZCB7IGlkZW50
aWZpZXIsIHVwZGF0ZVJlc3BvbnNlQ291bnRlciwgcmVxdWVzdEhlYWRlcnNHdWFyZCwgcmVxdWVz
dCwgb3B0aW9ucywgcmVmZXJyZXIsIHJlc3BvbnNlSGVhZGVyc0d1YXJkLCByZXNwb25zZSwgY29w
eVJlc3BvbnNlQm9keShyZXNwb25zZUJvZHkpIH07CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
cmVzdWx0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggNzIz
NjE2YzZiZmYzNmI3NGM4YmM4ZjY4YzE4Mjc0N2QyNzMwMzQ3OS4uZjIwODBkYzk5MWJmYTViNGU1
NDM2Y2Q3NTdjZGJkNWYxMjg5YTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKQEAgLTI2LDEwNiArMjYsNTIgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJGZXRjaEhlYWRlcnMuaCIKLSNpbmNsdWRlICJG
ZXRjaE9wdGlvbnMuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAi
RE9NQ2FjaGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBDYWNo
ZVF1ZXJ5T3B0aW9uczsKLQogY2xhc3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IENhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKSk7IH0KICAgICB2aXJ0dWFsIH5D
YWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwogCi0gICAgZW51bSBjbGFzcyBFcnJv
ciB7Ci0gICAgICAgIE5vbmUsCi0gICAgICAgIE5vdEltcGxlbWVudGVkLAotICAgICAgICBJbnRl
cm5hbAotICAgIH07Ci0KLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gZXJyb3JUb0V4Y2Vw
dGlvbihFcnJvcik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIEV4Y2VwdGlvbk9y
PFQ+IGV4Y2VwdGlvbk9yUmVzdWx0KFQmJiB2YWx1ZSwgRXJyb3IgZXJyb3IpCi0gICAgewotICAg
ICAgICBhdXRvIHJlc3VsdCA9IGVycm9yVG9FeGNlcHRpb24oZXJyb3IpOwotICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBzdGQ6OmZvcndhcmQ8VD4odmFsdWUpOwotICAg
IH0KLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVk
UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25z
Jik7Ci0KLSAgICB1c2luZyBSZXNwb25zZUJvZHkgPSBWYXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47Ci0gICAgc3RhdGljIFJlc3BvbnNlQm9k
eSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKLQotICAgIHN0cnVj
dCBSZWNvcmQgewotICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmQgY29weSgpIGNvbnN0Owot
Ci0gICAgICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7Ci0gICAgICAgIHVpbnQ2NF90IHVwZGF0ZVJl
c3BvbnNlQ291bnRlcjsKLQotICAgICAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFk
ZXJzR3VhcmQ7Ci0gICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwotICAgICAgICBGZXRj
aE9wdGlvbnMgb3B0aW9uczsKLSAgICAgICAgU3RyaW5nIHJlZmVycmVyOworICAgIHZvaWQgb3Bl
bihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIERPTUNhY2hl
OjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIsIERPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAg
ICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBET01DYWNoZTo6Q2Fj
aGVJbmZvc0NhbGxiYWNrJiYpOwogCi0gICAgICAgIEZldGNoSGVhZGVyczo6R3VhcmQgcmVzcG9u
c2VIZWFkZXJzR3VhcmQ7Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAg
ICAgIFJlc3BvbnNlQm9keSByZXNwb25zZUJvZHk7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBDYWNo
ZUluZm8gewotICAgICAgICB1aW50NjRfdCBpZGVudGlmaWVyOwotICAgICAgICBTdHJpbmcgbmFt
ZTsKLSAgICB9OwotCi0gICAgdXNpbmcgT3BlblJlbW92ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlv
bjx2b2lkKHVpbnQ2NF90LCBFcnJvcik+OwotICAgIHVzaW5nIENhY2hlc0NhbGxiYWNrID0gV1RG
OjpGdW5jdGlvbjx2b2lkKFZlY3RvcjxDYWNoZUluZm8+JiYpPjsKLSAgICB1c2luZyBSZWNvcmRz
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlY29yZD4mJik+OwotICAgIHVz
aW5nIEJhdGNoT3BlcmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPHVp
bnQ2NF90PiYmLCBFcnJvcik+OwotCi0gICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgLyogb3Jp
Z2luICovLCBjb25zdCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLywgT3BlblJlbW92ZUNhbGxiYWNr
JiYpOwotICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgT3Bl
blJlbW92ZUNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmV0cmlldmVDYWNoZXMoY29uc3QgU3RyaW5n
JiAvKiBvcmlnaW4gKi8sIENhY2hlc0NhbGxiYWNrJiYpOwotCi0gICAgdm9pZCByZXRyaWV2ZVJl
Y29yZHModWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBSZWNvcmRzQ2FsbGJhY2smJik7
Ci0gICAgdm9pZCBiYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZp
ZXIgKi8sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENhY2hlUXVlcnlPcHRpb25zJiYsIEJhdGNo
T3BlcmF0aW9uQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBiYXRjaFB1dE9wZXJhdGlvbih1aW50NjRf
dCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxSZWNvcmQ+JiYsIEJhdGNoT3BlcmF0aW9u
Q2FsbGJhY2smJik7CisgICAgdm9pZCByZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBET01DYWNoZTo6UmVjb3Jkc0NhbGxiYWNrJiYpOworICAgIHZvaWQgYmF0Y2hEZWxl
dGVPcGVyYXRpb24odWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxs
YmFjayYmKTsKKyAgICB2b2lkIGJhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IGNhY2hlSWRlbnRp
ZmllciwgVmVjdG9yPERPTUNhY2hlOjpSZWNvcmQ+JiYsIERPTUNhY2hlOjpSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bigpID0gIGRlZmF1bHQ7CiAKLSAgICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0X3QgaWRlbnRp
ZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJvcikgeyBvcGVuT3JSZW1v
dmVDb21wbGV0ZWQoaWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyLCBlcnJvcik7IH0KLSAgICB2
b2lkIHJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIEVycm9yIGVycm9yKSB7IG9wZW5PclJlbW92ZUNvbXBsZXRlZChpZGVudGlmaWVy
LCBjYWNoZUlkZW50aWZpZXIsIGVycm9yKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8Q2FjaGVJbmZvPiYm
KTsKKyAgICB2b2lkIG9wZW5Db21wbGV0ZWQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgRE9N
Q2FjaGU6OkNhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgeyBvcGVuT3JSZW1vdmVDb21w
bGV0ZWQoaWRlbnRpZmllciwgcmVzdWx0KTsgfQorICAgIHZvaWQgcmVtb3ZlQ29tcGxldGVkKHVp
bnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IERPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJPckVycm9y
JiByZXN1bHQpIHsgb3Blbk9yUmVtb3ZlQ29tcGxldGVkKGlkZW50aWZpZXIsIHJlc3VsdCk7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgRE9NQ2FjaGU6OkNhY2hlSW5mb3NPckVycm9yJiYpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0
b3I8UmVjb3JkPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJlY29yZHNDb21w
bGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4mJiwgRXJy
b3IpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBFcnJvcik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBET01DYWNoZTo6UmVjb3Jkc09yRXJyb3ImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
ZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBET01DYWNo
ZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgRE9NQ2FjaGU6
OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZv
aWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9y
aWdpbiAqLywgY29uc3QgU3RyaW5nJiAvKiBjYWNoZU5hbWUgKi8pIHsgb3BlbkNvbXBsZXRlZChy
ZXF1ZXN0SWRlbnRpZmllciwgMCwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkb1JlbW92ZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyog
Y2FjaGVJZGVudGlmaWVyICovKSB7IHJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwg
MCwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkb09wZW4odWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgLyogb3JpZ2luICovLCBjb25z
dCBTdHJpbmcmIC8qIGNhY2hlTmFtZSAqLykgeyBvcGVuQ29tcGxldGVkKHJlcXVlc3RJZGVudGlm
aWVyLCBtYWtlVW5leHBlY3RlZChET01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVudGVkKSk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLykgeyByZW1vdmVDb21wbGV0ZWQocmVxdWVzdElk
ZW50aWZpZXIsIG1ha2VVbmV4cGVjdGVkKERPTUNhY2hlOjpFcnJvcjo6Tm90SW1wbGVtZW50ZWQp
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIC8qIG9yaWdpbiAqLykgeyB1cGRhdGVDYWNoZXMocmVx
dWVzdElkZW50aWZpZXIsIHsgfSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkb1JldHJpZXZlUmVj
b3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlm
aWVyICovKSB7IHVwZGF0ZVJlY29yZHMocmVxdWVzdElkZW50aWZpZXIsIHsgfSk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICovLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmKSB7IGRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVz
dElkZW50aWZpZXIsIHsgfSwgRXJyb3I6Ok5vdEltcGxlbWVudGVkKTsgfQotICAgIHZpcnR1YWwg
dm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8sIFZlY3RvcjxSZWNvcmQ+JiYpIHsgcHV0UmVjb3Jk
c0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgeyB9LCBFcnJvcjo6Tm90SW1wbGVtZW50ZWQp
OyB9CisgICAgdmlydHVhbCB2b2lkIGRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IC8qIGNhY2hlSWRlbnRpZmllciAqLywgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJikgeyBkZWxldGVSZWNvcmRzQ29tcGxl
dGVkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChET01DYWNoZTo6RXJyb3I6Ok5v
dEltcGxlbWVudGVkKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9CYXRjaFB1dE9wZXJhdGlvbih1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgLyogY2FjaGVJZGVudGlmaWVyICov
LCBWZWN0b3I8RE9NQ2FjaGU6OlJlY29yZD4mJikgeyBwdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVl
c3RJZGVudGlmaWVyLCBtYWtlVW5leHBlY3RlZChET01DYWNoZTo6RXJyb3I6Ok5vdEltcGxlbWVu
dGVkKSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3Blbk9yUmVtb3ZlQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVy
cm9yKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZW5PclJlbW92ZUNvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgRE9NQ2FjaGU6OkNhY2hlSWRlbnRpZmllck9y
RXJyb3ImKTsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIE9wZW5SZW1vdmVDYWxsYmFjaz4gbV9v
cGVuQW5kUmVtb3ZlQ2FjaGVQZW5kaW5nUmVxdWVzdHM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
Q2FjaGVzQ2FsbGJhY2s+IG1fcmV0cmlldmVDYWNoZXNQZW5kaW5nUmVxdWVzdHM7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVjb3Jkc0NhbGxiYWNrPiBtX3JldHJpZXZlUmVjb3Jkc1BlbmRpbmdS
ZXF1ZXN0czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBCYXRjaE9wZXJhdGlvbkNhbGxiYWNrPiBt
X2JhdGNoRGVsZXRlQW5kUHV0UGVuZGluZ1JlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3Qs
IERPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjaz4gbV9vcGVuQW5kUmVtb3ZlQ2FjaGVQ
ZW5kaW5nUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgRE9NQ2FjaGU6OkNhY2hlSW5m
b3NDYWxsYmFjaz4gbV9yZXRyaWV2ZUNhY2hlc1BlbmRpbmdSZXF1ZXN0czsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBET01DYWNoZTo6UmVjb3Jkc0NhbGxiYWNrPiBtX3JldHJpZXZlUmVjb3Jkc1Bl
bmRpbmdSZXF1ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBET01DYWNoZTo6UmVjb3JkSWRl
bnRpZmllcnNDYWxsYmFjaz4gbV9iYXRjaERlbGV0ZUFuZFB1dFBlbmRpbmdSZXF1ZXN0czsKIAog
ICAgIHVpbnQ2NF90IG1fbGFzdFJlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwogfTsKLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMzZGE4MDg1NDQ1YmRjOGYwYWFkY2U4ODI4ZTZlZGY0OTkwYjgxOWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcApAQCAtMCwwICsxLDExMSBAQAorCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRPTUNhY2hlLmgiCisKKyNpbmNsdWRlICJDYWNoZVF1ZXJ5T3B0aW9ucy5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIERPTUNhY2hlIHsKKworRXhjZXB0aW9uIGVy
cm9yVG9FeGNlcHRpb24oRXJyb3IgZXJyb3IpCit7CisgICAgc3dpdGNoIChlcnJvcikgeworICAg
IGNhc2UgRXJyb3I6Ok5vdEltcGxlbWVudGVkOgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiTm90IGltcGxlbWVudGVkIikgfTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxp
dGVyYWwoIkludGVybmFsIGVycm9yIikgfTsKKyAgICB9Cit9CisKK2Jvb2wgcXVlcnlDYWNoZU1h
dGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBjYWNoZWRSZXNwb25zZSwg
Y29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgQVNTRVJUKG9wdGlvbnMu
aWdub3JlTWV0aG9kIHx8IHJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsKKworICAgIFVS
TCByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKKyAgICBVUkwgY2FjaGVkUmVxdWVzdFVSTCA9
IGNhY2hlZFJlcXVlc3QudXJsKCk7CisKKyAgICBpZiAob3B0aW9ucy5pZ25vcmVTZWFyY2gpIHsK
KyAgICAgICAgcmVxdWVzdFVSTC5zZXRRdWVyeSh7IH0pOworICAgICAgICBjYWNoZWRSZXF1ZXN0
VVJMLnNldFF1ZXJ5KHsgfSk7CisgICAgfQorICAgIGlmICghZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihyZXF1ZXN0VVJMLCBjYWNoZWRSZXF1ZXN0VVJMKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKG9wdGlvbnMuaWdub3JlVmFyeSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBTdHJpbmcgdmFyeVZhbHVlID0gY2FjaGVkUmVzcG9uc2UuaHR0cEhlYWRlckZp
ZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpWYXJ5KTsKKyAgICBpZiAodmFyeVZhbHVlLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGlu
ZWZmaWNpZW50LCB3ZSBzaG91bGQgYmUgYWJsZSB0byBzcGxpdCBhbmQgdHJpbSB3aGl0ZXNwYWNl
cyBhdCB0aGUgc2FtZSB0aW1lLgorICAgIFZlY3RvcjxTdHJpbmc+IHZhcnlIZWFkZXJOYW1lczsK
KyAgICB2YXJ5VmFsdWUuc3BsaXQoJywnLCBmYWxzZSwgdmFyeUhlYWRlck5hbWVzKTsKKyAgICBm
b3IgKGF1dG8mIG5hbWUgOiB2YXJ5SGVhZGVyTmFtZXMpIHsKKyAgICAgICAgaWYgKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhuYW1lKSA9PSAiKiIpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmIChjYWNoZWRSZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZChuYW1l
KSAhPSByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZChuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Jlc3BvbnNlQm9keSBpc29sYXRl
ZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCit7CisgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKKyAg
ICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKKyAgICB9LCBbXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIHJldHVybiBidWZmZXItPmNvcHko
KTsKKyAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKKyAgICAgICAgcmV0dXJuIERP
TUNhY2hlOjpSZXNwb25zZUJvZHkgeyB9OworICAgIH0pOworfQorCitzdGF0aWMgaW5saW5lIFJl
c3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IERPTUNhY2hlOjpSZXNwb25zZUJvZHkm
IGJvZHkpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZv
cm1EYXRhPiYgZm9ybURhdGEpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsK
KyAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIHJl
dHVybiBidWZmZXIuY29weVJlZigpOworICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
eworICAgICAgICByZXR1cm4gRE9NQ2FjaGU6OlJlc3BvbnNlQm9keSB7IH07CisgICAgfSk7Cit9
CisKK1JlY29yZCBSZWNvcmQ6OmNvcHkoKSBjb25zdAoreworICAgIHJldHVybiBSZWNvcmQgeyBp
ZGVudGlmaWVyLCB1cGRhdGVSZXNwb25zZUNvdW50ZXIsIHJlcXVlc3RIZWFkZXJzR3VhcmQsIHJl
cXVlc3QsIG9wdGlvbnMsIHJlZmVycmVyLCByZXNwb25zZUhlYWRlcnNHdWFyZCwgcmVzcG9uc2Us
IGNvcHlSZXNwb25zZUJvZHkocmVzcG9uc2VCb2R5KSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBE
T01DYWNoZQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OGRhODExMWIzZWYzZjIwMjAxZjZjYzA3ODhm
NzM0YmVkYzY4OWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCkBAIC0wLDAgKzEsMTAwIEBACisKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkZldGNoSGVhZGVycy5oIgorI2luY2x1ZGUgIkZldGNoT3B0aW9u
cy5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgQ2FjaGVRdWVyeU9wdGlvbnM7CisKK25hbWVzcGFjZSBET01DYWNoZSB7CisK
K2VudW0gY2xhc3MgRXJyb3IgeworICAgIE5vdEltcGxlbWVudGVkLAorICAgIEludGVybmFsCit9
OworCitFeGNlcHRpb24gZXJyb3JUb0V4Y2VwdGlvbihFcnJvcik7CisKK1dFQkNPUkVfRVhQT1JU
IGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKKwordXNpbmcgUmVzcG9uc2VCb2R5ID0gVmFy
aWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+Owor
UmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwor
CitzdHJ1Y3QgUmVjb3JkIHsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmQgY29weSgpIGNvbnN0
OworCisgICAgdWludDY0X3QgaWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCB1cGRhdGVSZXNwb25z
ZUNvdW50ZXI7CisKKyAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFkZXJzR3VhcmQ7
CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CisgICAgRmV0Y2hPcHRpb25zIG9wdGlvbnM7
CisgICAgU3RyaW5nIHJlZmVycmVyOworCisgICAgRmV0Y2hIZWFkZXJzOjpHdWFyZCByZXNwb25z
ZUhlYWRlcnNHdWFyZDsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgIFJlc3Bv
bnNlQm9keSByZXNwb25zZUJvZHk7Cit9OworCitzdHJ1Y3QgQ2FjaGVJbmZvIHsKKyAgICB1aW50
NjRfdCBpZGVudGlmaWVyOworICAgIFN0cmluZyBuYW1lOworfTsKKwordXNpbmcgQ2FjaGVJZGVu
dGlmaWVyT3JFcnJvciA9IEV4cGVjdGVkPHVpbnQ2NF90LCBFcnJvcj47Cit1c2luZyBDYWNoZUlk
ZW50aWZpZXJDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBDYWNoZUlkZW50aWZp
ZXJPckVycm9yJik+OworCit1c2luZyBSZWNvcmRJZGVudGlmaWVyc09yRXJyb3IgPSBFeHBlY3Rl
ZDxWZWN0b3I8dWludDY0X3Q+LCBFcnJvcj47Cit1c2luZyBSZWNvcmRJZGVudGlmaWVyc0NhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKT47CisK
K3VzaW5nIENhY2hlSW5mb3NPckVycm9yID0gRXhwZWN0ZWQ8VmVjdG9yPFdlYkNvcmU6OkRPTUNh
Y2hlOjpDYWNoZUluZm8+LCBFcnJvcj47Cit1c2luZyBDYWNoZUluZm9zQ2FsbGJhY2sgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoQ2FjaGVJbmZvc09yRXJyb3ImJik+OworCit1c2luZyBSZWNvcmRzT3JF
cnJvciA9IEV4cGVjdGVkPFZlY3RvcjxSZWNvcmQ+LCBFcnJvcj47Cit1c2luZyBSZWNvcmRzQ2Fs
bGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVjb3Jkc09yRXJyb3ImJik+OworCit1c2luZyBD
b21wbGV0aW9uQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYp
PjsKKworfSAvLyBuYW1lc3BhY2UgRE9NQ2FjaGUKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
RE9NQ2FjaGU6OkVycm9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6RE9NQ2FjaGU6OkVycm9yLAorICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6
RXJyb3I6Ok5vdEltcGxlbWVudGVkLAorICAgICAgICBXZWJDb3JlOjpET01DYWNoZTo6RXJyb3I6
OkludGVybmFsCisgICAgPjsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCAx
MGFhNjU0OTQ2MWI5NzgyNmQ0MzMxZmIzNDJhODE0MzNjZGZiZDRjLi44MjA5OTRiMTExOGYyZDM1
MGZjY2U2M2YzYjc5Yzk1OTU5ZDI3YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL1dvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAg
LTM2LDYgKzM2LDggQEAKICNpbmNsdWRlICJXb3JrZXJSdW5Mb29wLmgiCiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZWNvcmREYXRhIHsKQEAgLTUw
LDEwICs1MiwxMCBAQCBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZWNvcmREYXRhIHsKIAogICAgIEZldGNo
SGVhZGVyczo6R3VhcmQgcmVzcG9uc2VIZWFkZXJzR3VhcmQ7CiAgICAgUmVzb3VyY2VSZXNwb25z
ZTo6Q3Jvc3NUaHJlYWREYXRhIHJlc3BvbnNlOwotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OlJlc3BvbnNlQm9keSByZXNwb25zZUJvZHk7CisgICAgUmVzcG9uc2VCb2R5IHJlc3BvbnNlQm9k
eTsKIH07CiAKLXN0YXRpYyBDcm9zc1RocmVhZFJlY29yZERhdGEgdG9Dcm9zc1RocmVhZFJlY29y
ZERhdGEoY29uc3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkJiByZWNvcmQpCitzdGF0
aWMgQ3Jvc3NUaHJlYWRSZWNvcmREYXRhIHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKGNvbnN0IFJl
Y29yZCYgcmVjb3JkKQogewogICAgIHJldHVybiBDcm9zc1RocmVhZFJlY29yZERhdGEgewogICAg
ICAgICByZWNvcmQuaWRlbnRpZmllciwKQEAgLTY0LDEzICs2NiwxMyBAQCBzdGF0aWMgQ3Jvc3NU
aHJlYWRSZWNvcmREYXRhIHRvQ3Jvc3NUaHJlYWRSZWNvcmREYXRhKGNvbnN0IENhY2hlU3RvcmFn
ZUNvbm5lY3RpbwogICAgICAgICByZWNvcmQucmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksCiAgICAg
ICAgIHJlY29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZCwKICAgICAgICAgcmVjb3JkLnJlc3BvbnNl
LmNyb3NzVGhyZWFkRGF0YSgpLAotICAgICAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjppc29s
YXRlZFJlc3BvbnNlQm9keShyZWNvcmQucmVzcG9uc2VCb2R5KQorICAgICAgICBpc29sYXRlZFJl
c3BvbnNlQm9keShyZWNvcmQucmVzcG9uc2VCb2R5KQogICAgIH07CiB9CiAKLXN0YXRpYyBDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uOjpSZWNvcmQgZnJvbUNyb3NzVGhyZWFkUmVjb3JkRGF0YShDcm9z
c1RocmVhZFJlY29yZERhdGEmJiBkYXRhKQorc3RhdGljIFJlY29yZCBmcm9tQ3Jvc3NUaHJlYWRS
ZWNvcmREYXRhKENyb3NzVGhyZWFkUmVjb3JkRGF0YSYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIENh
Y2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCB7CisgICAgcmV0dXJuIFJlY29yZCB7CiAgICAg
ICAgIGRhdGEuaWRlbnRpZmllciwKICAgICAgICAgZGF0YS51cGRhdGVSZXNwb25zZUNvdW50ZXIs
CiAgICAgICAgIGRhdGEucmVxdWVzdEhlYWRlcnNHdWFyZCwKQEAgLTExNSwxMCArMTE3LDEwIEBA
IHZvaWQgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6ZG9PcGVuKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBTdHJpCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKIAotICAgICAgICBtX21h
aW5UaHJlYWRDb25uZWN0aW9uLT5vcGVuKG9yaWdpbiwgY2FjaGVOYW1lLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXSh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIEVycm9yIGVycm9yKSBtdXRhYmxlIHsKLSAgICAgICAgICAg
IG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgZXJyb3Is
IGNhY2hlSWRlbnRpZmllciwgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+b3BlbihvcmlnaW4sIGNhY2hl
TmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1
ZXN0SWRlbnRpZmllcl0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVl
c3RJZGVudGlmaWVyLCByZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgICAgIG9wZW5Db21wbGV0ZWQocmVx
dWVzdElkZW50aWZpZXIsIGNhY2hlSWRlbnRpZmllciwgZXJyb3IpOworICAgICAgICAgICAgICAg
IG9wZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCk7CiAgICAgICAgICAgICB9
LCBtX3Rhc2tNb2RlKTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0xMzAsMTEgKzEzMiwxMSBA
QCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmVtb3ZlKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdAogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CiAKLSAgICAgICAgbV9t
YWluVGhyZWFkQ29ubmVjdGlvbi0+cmVtb3ZlKGNhY2hlSWRlbnRpZmllciwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgY2Fj
aGVJZGVudGlmaWVyXSh1aW50NjRfdCByZW1vdmVkQ2FjaGVJZGVudGlmaWVyLCBFcnJvciBlcnJv
cikgbXV0YWJsZSB7Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRDYWNoZUlkZW50
aWZpZXIsIHJlbW92ZWRDYWNoZUlkZW50aWZpZXIgPT0gY2FjaGVJZGVudGlmaWVyKTsKLSAgICAg
ICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVy
LCBjYWNoZUlkZW50aWZpZXIsIGVycm9yXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSBtdXRhYmxlIHsKKyAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+cmVtb3ZlKGNhY2hl
SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMp
LCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJZGVudGlmaWVyXShjb25zdCBDYWNoZUlkZW50aWZp
ZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgQVNTRVJUKCFyZXN1bHQu
aGFzVmFsdWUoKSB8fCByZXN1bHQudmFsdWUoKSA9PSBjYWNoZUlkZW50aWZpZXIpOworICAgICAg
ICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXIs
IHJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSk7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlm
aWVyLCBjYWNoZUlkZW50aWZpZXIsIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZW1vdmVDb21w
bGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCk7CiAgICAgICAgICAgICB9LCBtX3Rhc2tN
b2RlKTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0xNDYsMjEgKzE0OCwyNiBAQCB2b2lkIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvUmV0cmlldmVDYWNoZXModWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAg
IEFTU0VSVChtX21haW5UaHJlYWRDb25uZWN0aW9uKTsKIAotICAgICAgICBtX21haW5UaHJlYWRD
b25uZWN0aW9uLT5yZXRyaWV2ZUNhY2hlcyhvcmlnaW4sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IFZlY3RvcjxD
YWNoZUluZm8+JiBjYWNoZXMpIG11dGFibGUgewotICAgICAgICAgICAgVmVjdG9yPENhY2hlSW5m
bz4gaXNvbGF0ZWRDYWNoZXM7Ci0gICAgICAgICAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGNhY2hlcy5zaXplKCkpOwotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBjYWNoZSA6IGNhY2hlcykKLSAgICAgICAgICAgICAgICBpc29sYXRlZENhY2hlcy51bmNoZWNr
ZWRBcHBlbmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZS5pc29sYXRl
ZENvcHkoKSB9KTsKLQotICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgY2FjaGVzID0gV1RGTW92ZShpc29sYXRlZENhY2hlcyksIHJlcXVlc3RJZGVudGlmaWVyXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgbV9tYWlu
VGhyZWFkQ29ubmVjdGlvbi0+cmV0cmlldmVDYWNoZXMob3JpZ2luLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUlu
Zm9zT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBDYWNoZUluZm9zT3JF
cnJvciBpc29sYXRlZFJlc3VsdDsKKyAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkp
CisgICAgICAgICAgICAgICAgaXNvbGF0ZWRSZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Q2FjaGVJbmZvPiBpc29sYXRl
ZENhY2hlczsKKyAgICAgICAgICAgICAgICBpc29sYXRlZENhY2hlcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHJlc3VsdC52YWx1ZSgpLnNpemUoKSk7CisgICAgICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBjYWNoZSA6IHJlc3VsdC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICAgICBpc29s
YXRlZENhY2hlcy51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllciwg
Y2FjaGUubmFtZS5pc29sYXRlZENvcHkoKSB9KTsKKyAgICAgICAgICAgICAgICBpc29sYXRlZFJl
c3VsdCA9IFdURk1vdmUoaXNvbGF0ZWRDYWNoZXMpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdCA9IFdURk1vdmUoaXNvbGF0ZWRSZXN1bHQpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgICAgICB1cGRhdGVD
YWNoZXMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FjaGVzKSk7CisgICAgICAgICAgICAg
ICAgdXBkYXRlQ2FjaGVzKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAg
ICAgICAgICAgfSwgbV90YXNrTW9kZSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCi1zdGF0
aWMgaW5saW5lIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNEYXRhRnJvbVJl
Y29yZHMoY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZD4mIHJlY29y
ZHMpCitzdGF0aWMgaW5saW5lIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNE
YXRhRnJvbVJlY29yZHMoY29uc3QgVmVjdG9yPFJlY29yZD4mIHJlY29yZHMpCiB7CiAgICAgVmVj
dG9yPENyb3NzVGhyZWFkUmVjb3JkRGF0YT4gcmVjb3Jkc0RhdGE7CiAgICAgcmVjb3Jkc0RhdGEu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWNvcmRzLnNpemUoKSk7CkBAIC0xNjksMjUgKzE3Niw0
MCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+IHJlY29yZHNE
YXRhRnJvbVJlY29yZHMoY29uc3QgVmVjdG9yPAogICAgIHJldHVybiByZWNvcmRzRGF0YTsKIH0K
IAotc3RhdGljIGlubGluZSBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiBy
ZWNvcmRzRnJvbVJlY29yZHNEYXRhKFZlY3RvcjxDcm9zc1RocmVhZFJlY29yZERhdGE+JiYgcmVj
b3Jkc0RhdGEpCitzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxDcm9zc1RocmVhZFJlY29y
ZERhdGE+LCBFcnJvcj4gcmVjb3Jkc0RhdGFPckVycm9yRnJvbVJlY29yZHMoY29uc3QgUmVjb3Jk
c09yRXJyb3ImIHJlc3VsdCkKIHsKLSAgICBWZWN0b3I8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
UmVjb3JkPiByZWNvcmRzOworICAgIGlmICghcmVzdWx0Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChyZXN1bHQuZXJyb3IoKSk7CisKKyAgICByZXR1cm4gcmVjb3Jk
c0RhdGFGcm9tUmVjb3JkcyhyZXN1bHQudmFsdWUoKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgVmVj
dG9yPFJlY29yZD4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShWZWN0b3I8Q3Jvc3NUaHJlYWRSZWNv
cmREYXRhPiYmIHJlY29yZHNEYXRhKQoreworICAgIFZlY3RvcjxSZWNvcmQ+IHJlY29yZHM7CiAg
ICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlY29yZHNEYXRhLnNpemUoKSk7CiAg
ICAgZm9yIChhdXRvJiByZWNvcmREYXRhIDogcmVjb3Jkc0RhdGEpCiAgICAgICAgIHJlY29yZHMu
dW5jaGVja2VkQXBwZW5kKGZyb21Dcm9zc1RocmVhZFJlY29yZERhdGEoV1RGTW92ZShyZWNvcmRE
YXRhKSkpOwogICAgIHJldHVybiByZWNvcmRzOwogfQogCitzdGF0aWMgaW5saW5lIFJlY29yZHNP
ckVycm9yIHJlY29yZHNPckVycm9yRnJvbVJlY29yZHNEYXRhKEV4cGVjdGVkPFZlY3RvcjxDcm9z
c1RocmVhZFJlY29yZERhdGE+LCBFcnJvcj4mJiByZWNvcmRzRGF0YSkKK3sKKyAgICBpZiAoIXJl
Y29yZHNEYXRhLmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChyZWNv
cmRzRGF0YS5lcnJvcigpKTsKKyAgICByZXR1cm4gcmVjb3Jkc0Zyb21SZWNvcmRzRGF0YShXVEZN
b3ZlKHJlY29yZHNEYXRhLnZhbHVlKCkpKTsKK30KKwogdm9pZCBXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpkb1JldHJpZXZlUmVjb3Jkcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
dWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogewogICAgIG1fcHJveHkucG9zdFRhc2tUb0xvYWRl
cihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXF1ZXN0SWRlbnRpZmll
ciwgY2FjaGVJZGVudGlmaWVyXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVChtX21haW5UaHJl
YWRDb25uZWN0aW9uKTsKIAotICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5yZXRyaWV2
ZVJlY29yZHMoY2FjaGVJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIHJlcXVlc3RJZGVudGlmaWVyXShWZWN0b3I8UmVjb3JkPiYmIHJlY29y
ZHMpIG11dGFibGUgewotICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgcmVjb3Jkc0RhdGEgPSByZWNvcmRzRGF0YUZyb21SZWNvcmRzKHJlY29yZHMpLCByZXF1ZXN0
SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Cisg
ICAgICAgIG1fbWFpblRocmVhZENvbm5lY3Rpb24tPnJldHJpZXZlUmVjb3JkcyhjYWNoZUlkZW50
aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVx
dWVzdElkZW50aWZpZXJdKFJlY29yZHNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlc3VsdCA9IHJlY29yZHNE
YXRhT3JFcnJvckZyb21SZWNvcmRzKHJlc3VsdCksIHJlcXVlc3RJZGVudGlmaWVyXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAg
ICAgICAgICAgICB1cGRhdGVSZWNvcmRzKHJlcXVlc3RJZGVudGlmaWVyLCByZWNvcmRzRnJvbVJl
Y29yZHNEYXRhKFdURk1vdmUocmVjb3Jkc0RhdGEpKSk7CisgICAgICAgICAgICAgICAgdXBkYXRl
UmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgcmVjb3Jkc09yRXJyb3JGcm9tUmVjb3Jkc0RhdGEo
V1RGTW92ZShyZXN1bHQpKSk7CiAgICAgICAgICAgICB9LCBtX3Rhc2tNb2RlKTsKICAgICAgICAg
fSk7CiAgICAgfSk7CkBAIC0xOTksMTEgKzIyMSwxMSBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRvQmF0Y2hEZWxldGVPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50
aQogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQobV9tYWlu
VGhyZWFkQ29ubmVjdGlvbik7CiAKLSAgICAgICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0
Y2hEZWxldGVPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVyLCByZXF1ZXN0LCBXVEZNb3ZlKG9wdGlv
bnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlcXVl
c3RJZGVudGlmaWVyXShWZWN0b3I8dWludDY0X3Q+JiYgcmVjb3JkcywgRXJyb3IgZXJyb3IpIG11
dGFibGUgeworICAgICAgICBtX21haW5UaHJlYWRDb25uZWN0aW9uLT5iYXRjaERlbGV0ZU9wZXJh
dGlvbihjYWNoZUlkZW50aWZpZXIsIHJlcXVlc3QsIFdURk1vdmUob3B0aW9ucyksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXJd
KFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKLSAgICAgICAg
ICAgIG1fcHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlY29yZHMgPSBXVEZNb3ZlKHJl
Y29yZHMpLCBlcnJvciwgcmVxdWVzdElkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0g
ICAgICAgICAgICAgICAgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwg
V1RGTW92ZShyZWNvcmRzKSwgZXJyb3IpOworICAgICAgICAgICAgICAgIGRlbGV0ZVJlY29yZHND
b21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAg
ICB9LCBtX3Rhc2tNb2RlKTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0yMTUsMTEgKzIzNywx
MSBAQCB2b2lkIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRp
b24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZQogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkQ29ubmVjdGlvbik7CiAKLSAgICAgICAg
bV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hQdXRPcGVyYXRpb24oY2FjaGVJZGVudGlmaWVy
LCByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVjb3Jkc0RhdGEpKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllcl0o
VmVjdG9yPHVpbnQ2NF90PiYmIHJlY29yZHMsIEVycm9yIGVycm9yKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9tYWluVGhyZWFkQ29ubmVjdGlvbi0+YmF0Y2hQdXRPcGVyYXRpb24oY2FjaGVJZGVudGlm
aWVyLCByZWNvcmRzRnJvbVJlY29yZHNEYXRhKFdURk1vdmUocmVjb3Jkc0RhdGEpKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmll
cl0oUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAotICAgICAg
ICAgICAgbV9wcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVjb3JkcyA9IFdURk1vdmUo
cmVjb3JkcyksIGVycm9yLCByZXF1ZXN0SWRlbnRpZmllcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX3Byb3h5LnBvc3RUYXNrRm9yTW9k
ZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCByZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
LSAgICAgICAgICAgICAgICBwdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCBX
VEZNb3ZlKHJlY29yZHMpLCBlcnJvcik7CisgICAgICAgICAgICAgICAgcHV0UmVjb3Jkc0NvbXBs
ZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIH0s
IG1fdGFza01vZGUpOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgK
aW5kZXggOWY0OGFmMmZiZTE4MTU0ZWY1MDJiMmY5MjQyYTg0YzEzYTMwNWUyNS4uMWFkZGM1MjRl
ZGI5YzVkNzdlZTY4YTU0YjFlZWYxOGIyODhkMWQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgK
QEAgLTQyLDEzICs0MiwxMyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdvcmtlckNhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24oV29ya2VyR2xvYmFsU2NvcGUmKTsKIAogICAgIC8vIFdlYkNvcmU6OkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24KLSAgICB2b2lkIGRvT3Blbih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiAvKiBvcmlnaW4gKi8sIGNvbnN0IFN0cmluZyYgLyogY2Fj
aGVOYW1lICovKSBmaW5hbDsKLSAgICB2b2lkIGRvUmVtb3ZlKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCAvKiBjYWNoZUlkZW50aWZpZXIgKi8pIGZpbmFsOwotICAgIHZvaWQg
ZG9SZXRyaWV2ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiAvKiBvcmlnaW4gKi8pIGZpbmFsOworICAgIHZvaWQgZG9PcGVuKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUp
IGZpbmFsOworICAgIHZvaWQgZG9SZW1vdmUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBkb1JldHJpZXZlQ2FjaGVz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgZmluYWw7
CiAKICAgICB2b2lkIGRvUmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaERlbGV0
ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1
ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKLSAgICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0
X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJl
Y29yZD4mJikgZmluYWw7CisgICAgdm9pZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxET01DYWNo
ZTo6UmVjb3JkPiYmKSBmaW5hbDsKIAogICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Njb3BlOwog
ICAgIFdvcmtlckxvYWRlclByb3h5JiBtX3Byb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4ZjgwYmQzNmJhYzdmZDQwMGE1
YzcyYTgzNWUxMjE5YTEwMjQxNGIuLjliODA3NmQ4ZWZmOTg5ODE4YmRiZWIxODM2YzBiNmYwM2E1
MTFjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE3OTIsNiArMTc5Miw4IEBACiAJCTQxRjU0RjhFMUM1MEM1MEMwMDMzODQ4
OCAvKiBGZXRjaFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDFGNTRGODcxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoUmVxdWVzdC5jcHAg
Ki87IH07CiAJCTQxRkEzMDNFMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkEz
MDNDMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCAqLzsgfTsKIAkJ
NDFGQTMwM0YxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkEzMDNEMTMxNkMyOUMw
MEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmggKi87IH07CisJCTQxRkFCRDJEMUY0REZF
NEEwMDZBNkM5NyAvKiBET01DYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDFGQUJEMkIxRjRERkU0MjAwNkE2Qzk3IC8qIERPTUNhY2hlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFGQUJEMkYx
RjRFMDJDQjAwNkE2Qzk3IC8qIERPTUNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFCRDJFMUY0RTAyNTEwMDZBNkM5NyAvKiBET01DYWNo
ZS5jcHAgKi87IH07CiAJCTQxRkIyNzlDMUYzNERCOEEwMDc5NTQ4NyAvKiBET01XaW5kb3dDYWNo
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFG
QjI3OEUxRjM0QzI4MjAwNzk1NDg3IC8qIERPTVdpbmRvd0NhY2hlcy5jcHAgKi87IH07CiAJCTQx
RkIyNzlEMUYzNERCOEUwMDc5NTQ4NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZCMjc4RjFGMzRD
MjgyMDA3OTU0ODcgLyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwICovOyB9OwogCQk0MzEw
N0JFMjE4Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzEwN0JFMTE4Q0MxOURFMDBD
QzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggKi87IH07CkBAIC05NDc5LDYgKzk0ODEs
OCBAQAogCQk0MUY1NEY4OTFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBGZXRjaFJlcXVlc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUZBMzAzQzEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVkaWFDb250cm9s
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNZWRpYUNv
bnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQTMwM0QxMzE2QzI5
QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9scy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MUZBQkQyQjFGNERGRTQyMDA2QTZDOTcgLyogRE9NQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDFGQUJEMkUxRjRFMDI1MTAwNkE2Qzk3IC8qIERPTUNhY2hlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUNhY2hlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQjI3OEMxRjM0QzI4MjAwNzk1NDg3IC8qIERPTVdpbmRvd0Nh
Y2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01XaW5kb3dDYWNoZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFGQjI3OEQxRjM0QzI4MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNj
b3BlQ2FjaGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkIyNzhFMUYzNEMyODIwMDc5NTQ4NyAvKiBE
T01XaW5kb3dDYWNoZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93Q2FjaGVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjkwLDYgKzE3Njk0LDggQEAKIAkJ
CQk0MUQxMjlDOTFGM0QwRUUzMDBEMTVFNDcgLyogQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAg
Ki8sCiAJCQkJNDFEMTI5Q0MxRjNEMEVFMzAwRDE1RTQ3IC8qIENhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uaCAqLywKIAkJCQk0MUQxMjlDQTFGM0QwRUUzMDBEMTVFNDcgLyogQ2FjaGVTdG9yYWdlUmVj
b3JkLmggKi8sCisJCQkJNDFGQUJEMkUxRjRFMDI1MTAwNkE2Qzk3IC8qIERPTUNhY2hlLmNwcCAq
LywKKwkJCQk0MUZBQkQyQjFGNERGRTQyMDA2QTZDOTcgLyogRE9NQ2FjaGUuaCAqLywKIAkJCQk0
MUZCMjc4RTFGMzRDMjgyMDA3OTU0ODcgLyogRE9NV2luZG93Q2FjaGVzLmNwcCAqLywKIAkJCQk0
MUZCMjc4QzFGMzRDMjgyMDA3OTU0ODcgLyogRE9NV2luZG93Q2FjaGVzLmggKi8sCiAJCQkJNDEz
ODBDMkIxRjM0M0UyRjAwMTU1RkRBIC8qIERPTVdpbmRvd0NhY2hlcy5pZGwgKi8sCkBAIC0yNzIz
MSw2ICsyNzIzNyw3IEBACiAJCQkJQTgxODVGMzkwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTczODg5QTExMTZFQTlEQzAwQURGMzEzIC8qIERv
Y3VtZW50V3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThGNkJDMzBEQjU1Q0RDMDAxREI3
OTQgLyogRE9NQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQUJEMkQx
RjRERkU0QTAwNkE2Qzk3IC8qIERPTUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQzlBMEY3
NTE2NDA5NENGMDAzRDZCOEQgLyogRE9NQ1NTTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5QjNBODg3MjE0NTYzMkY5MDAzQUU4RjUgLyogRE9NRE9NU2V0dGFibGVUb2tlbkxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTdBQUJBMjVBMTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3Iu
aCBpbiBIZWFkZXJzICovLApAQCAtMzEyNjMsNiArMzEyNzAsNyBAQAogCQkJCUE4MTg1RjNBMDk3
NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcz
ODg5QTAxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBOEY2QkMyMERCNTVDREMwMDFEQjc5NCAvKiBET01BcHBsaWNhdGlvbkNhY2hlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQxRkFCRDJGMUY0RTAyQ0IwMDZBNkM5NyAvKiBET01DYWNo
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDY3NzczODE5NUNBRjNEMDA3MkUwRDMgLyogRE9N
Q1NTTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBQUJBMjU5MTRCQzYxMzMwMEFB
OUExMSAvKiBET01FZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxQkRGMjQxNTZDMTg4
MzAwMUMxMjQzIC8qIERPTUVycm9yLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg3NGY2NzFmMzg5NTgwYTE2NzlkZDdiMzIxMTFiZGFiY2E0NmFmZWQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2UuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1uYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKLQotZW51bSBjbGFzcyBFcnJvciB7Ci0g
ICAgSW50ZXJuYWwKLX07Ci0KLXVzaW5nIFJlY29yZCA9IFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OlJlY29yZDsKLQotdXNpbmcgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciA9IEV4cGVj
dGVkPHVpbnQ2NF90LCBFcnJvcj47Ci11c2luZyBDYWNoZUlkZW50aWZpZXJDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYmKT47Ci0KLXVzaW5nIENhY2hlSW5m
b3NPckVycm9yID0gRXhwZWN0ZWQ8VmVjdG9yPFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b246OkNhY2hlSW5mbz4sIEVycm9yPjsKLXVzaW5nIENhY2hlSW5mb3NDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoQ2FjaGVJbmZvc09yRXJyb3ImJik+OwotCi11c2luZyBSZWNvcmRzT3JFcnJvciA9
IEV4cGVjdGVkPFZlY3RvcjxSZWNvcmQ+LCBFcnJvcj47Ci11c2luZyBSZWNvcmRzQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJlY29yZHNPckVycm9yJiYpPjsKLQotdXNpbmcgUmVjb3JkSWRlbnRp
ZmllcnNPckVycm9yID0gRXhwZWN0ZWQ8VmVjdG9yPHVpbnQ2NF90PiwgRXJyb3I+OwotdXNpbmcg
UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVjb3JkSWRlbnRpZmll
cnNPckVycm9yJiYpPjsKLQotdXNpbmcgQ29tcGxldGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmKT47Ci0KLX0gLy8gbmFtZXNwYWNlIENhY2hlU3RvcmFn
ZQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFcnJvcj4gewotICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpF
cnJvciwKLSAgICAgICAgV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVycm9yOjpJbnRlcm5hbAotICAg
ID47Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDM2YWE2NzNiNDM1MzQ4MTg4MDI3N2Iy
ZTYyOTcxZTQ0YWY5YzQyZWUuLjVhZWJiZTY2OWJlZDJiOGM3MTViODM1ZjU1NTFjNjRiZDc0OTBj
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNoZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UgewpAQCAtMTI2LDEwICsxMjgsMTAgQEAgdm9pZCBFbmdp
bmU6OnJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDYWNoZUluZm9zQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIAogICAgICAgICBhdXRvJiBjYWNoZXMgPSBjYWNoZXNPckVycm9yLnZh
bHVlKCkuZ2V0KCk7CiAKLSAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OkNhY2hlSW5mbz4gY2FjaGVzSW5mbzsKKyAgICAgICAgVmVjdG9yPENhY2hlSW5mbz4g
Y2FjaGVzSW5mbzsKICAgICAgICAgY2FjaGVzSW5mby5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNh
Y2hlcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGNhY2hlIDogY2FjaGVzKQotICAgICAg
ICAgICAgY2FjaGVzSW5mby51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6Q2FjaGVJbmZvIHsgY2FjaGUuaWRlbnRpZmllciwgY2FjaGUubmFtZX0pOworICAg
ICAgICAgICAgY2FjaGVzSW5mby51bmNoZWNrZWRBcHBlbmQoQ2FjaGVJbmZvIHsgY2FjaGUuaWRl
bnRpZmllciwgY2FjaGUubmFtZX0pOwogCiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2FjaGVz
SW5mbykpOwogICAgIH0pOwpAQCAtMjk3LDcgKzI5OSw3IEBAIFZlY3Rvcjx1aW50NjRfdD4gRW5n
aW5lOjpxdWVyeUNhY2hlKGNvbnN0IFZlY3RvcjxSZWNvcmQ+JiByZWNvcmRzLCBjb25zdCBXZWJD
b3JlCiAKICAgICBWZWN0b3I8dWludDY0X3Q+IHJlc3VsdHM7CiAgICAgZm9yIChjb25zdCBhdXRv
JiByZWNvcmQgOiByZWNvcmRzKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpxdWVyeUNhY2hlTWF0Y2gocmVxdWVzdCwgcmVjb3JkLnJlcXVlc3QsIHJlY29y
ZC5yZXNwb25zZSwgb3B0aW9ucykpCisgICAgICAgIGlmIChXZWJDb3JlOjpET01DYWNoZTo6cXVl
cnlDYWNoZU1hdGNoKHJlcXVlc3QsIHJlY29yZC5yZXF1ZXN0LCByZWNvcmQucmVzcG9uc2UsIG9w
dGlvbnMpKQogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVjb3JkLmlkZW50aWZpZXIpOwog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oCmluZGV4IDBmMWJhNGMyOTc0
ZjU4MDgwY2M5ZDhhOGEzZGQwZGMwZjc2MjQ1YWYuLjI5MTc3MTJmZDNkZGU5Y2Y0MzcwMGVjMDAy
OTQ2ODNlNmJkY2VlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaApAQCAtNDUsMzEgKzQ1LDMxIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgRW5naW5lJiBmcm9tKFBBTDo6U2Vzc2lvbklEKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95RW5naW5lKFBBTDo6U2Vzc2lvbklEKTsKIAotICAgIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmll
ckNhbGxiYWNrJiYpOwotICAgIHZvaWQgcmVtb3ZlKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwg
Q2FjaGVJZGVudGlmaWVyQ2FsbGJhY2smJik7Ci0gICAgdm9pZCByZXRyaWV2ZUNhY2hlcyhjb25z
dCBTdHJpbmcmIG9yaWdpbiwgQ2FjaGVJbmZvc0NhbGxiYWNrJiYpOworICAgIHZvaWQgb3Blbihj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIFdlYkNvcmU6OkRP
TUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92ZSh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJD
YWxsYmFjayYmKTsKKyAgICB2b2lkIHJldHJpZXZlQ2FjaGVzKGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvc0NhbGxiYWNrJiYpOwogCi0gICAgdm9pZCBy
ZXRyaWV2ZVJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBSZWNvcmRzQ2FsbGJhY2sm
Jik7Ci0gICAgdm9pZCBwdXRSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9y
PFJlY29yZD4mJiwgUmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKLSAgICB2b2lkIGRlbGV0
ZU1hdGNoaW5nUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmLCBSZWNvcmRJZGVudGlm
aWVyc0NhbGxiYWNrJiYpOworICAgIHZvaWQgcmV0cmlldmVSZWNvcmRzKHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZHNDYWxsYmFjayYmKTsKKyAgICB2
b2lkIHB1dFJlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6
RE9NQ2FjaGU6OlJlY29yZD4mJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJz
Q2FsbGJhY2smJik7CisgICAgdm9pZCBkZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJh
Y2smJik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIEVuZ2luZSYgZGVmYXVsdEVuZ2luZSgpOwog
Ci0gICAgdm9pZCB3cml0ZUNhY2hlc1RvRGlzayhDb21wbGV0aW9uQ2FsbGJhY2smJik7CisgICAg
dm9pZCB3cml0ZUNhY2hlc1RvRGlzayhXZWJDb3JlOjpET01DYWNoZTo6Q29tcGxldGlvbkNhbGxi
YWNrJiYpOwogCi0gICAgdXNpbmcgQ2FjaGVzT3JFcnJvciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8VmVjdG9yPENhY2hlPj4sIEVycm9yPjsKLSAgICB1c2luZyBDYWNoZXNDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoQ2FjaGVzT3JFcnJvciYmKT47Ci0gICAgdm9pZCByZWFkQ2Fj
aGVzRnJvbURpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIEZ1bmN0aW9uPHZvaWQoQ2FjaGVzT3JF
cnJvciYmKT4mJik7Ci0KLSAgICB1c2luZyBDYWNoZU9yRXJyb3IgPSBFeHBlY3RlZDxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPENhY2hlPiwgRXJyb3I+OwotICAgIHVzaW5nIENhY2hlQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKENhY2hlT3JFcnJvciYmKT47CisgICAgdXNpbmcgQ2FjaGVzT3JFcnJv
ciA9IEV4cGVjdGVkPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8VmVjdG9yPENhY2hlPj4sIFdlYkNv
cmU6OkRPTUNhY2hlOjpFcnJvcj47CisgICAgdXNpbmcgQ2FjaGVzQ2FsbGJhY2sgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoQ2FjaGVzT3JFcnJvciYmKT47CisgICAgdm9pZCByZWFkQ2FjaGVzRnJvbURp
c2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIENhY2hlc0NhbGxiYWNrJiYpOwogCisgICAgdXNpbmcg
Q2FjaGVPckVycm9yID0gRXhwZWN0ZWQ8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDYWNoZT4sIFdl
YkNvcmU6OkRPTUNhY2hlOjpFcnJvcj47CisgICAgdXNpbmcgQ2FjaGVDYWxsYmFjayA9IFdURjo6
RnVuY3Rpb248dm9pZChDYWNoZU9yRXJyb3ImJik+OwogICAgIHZvaWQgcmVhZENhY2hlKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllciwgQ2FjaGVDYWxsYmFjayYmKTsKLSAgICB2b2lkIHdyaXRlQ2Fj
aGVSZWNvcmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBS
ZWNvcmRJZGVudGlmaWVyc0NhbGxiYWNrJiYpOwotICAgIHZvaWQgcmVtb3ZlQ2FjaGVSZWNvcmRz
KHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBSZWNvcmRJZGVu
dGlmaWVyc0NhbGxiYWNrJiYpOwogCi0gICAgVmVjdG9yPHVpbnQ2NF90PiBxdWVyeUNhY2hlKGNv
bnN0IFZlY3RvcjxSZWNvcmQ+JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmKTsKKyAgICB2b2lkIHdyaXRlQ2FjaGVSZWNv
cmRzKHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90PiYmLCBXZWJDb3Jl
OjpET01DYWNoZTo6UmVjb3JkSWRlbnRpZmllcnNDYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlbW92
ZUNhY2hlUmVjb3Jkcyh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4m
JiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CisKKyAg
ICBWZWN0b3I8dWludDY0X3Q+IHF1ZXJ5Q2FjaGUoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkRPTUNh
Y2hlOjpSZWNvcmQ+JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmKTsKIAogICAgIENhY2hlKiBjYWNoZSh1aW50NjRfdCBj
YWNoZUlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgKaW5kZXggMWQ4ZjExOWE2
ZTkxM2Y2NDlmZGMzM2RhMzM1OGU4NmVkYjZkN2Y2Ny4uOTY2YjUxNDRlYzdkYjFjN2E5YTE3YTQ2
ZjZhM2MwZjRhMzNjMzAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaApAQCAtMjUsNyArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhY2hlU3RvcmFnZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvRE9NQ2FjaGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIENh
Y2hlU3RvcmFnZSB7CiBzdHJ1Y3QgQ2FjaGUgewogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgeyAw
IH07CiAgICAgU3RyaW5nIG5hbWU7Ci0gICAgVmVjdG9yPFJlY29yZD4gcmVjb3JkczsKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4gcmVjb3JkczsKICAgICB1aW50NjRfdCBu
ZXh0UmVjb3JkSWRlbnRpZmllciB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24uY3BwCmluZGV4IDdmZTI5YTFkZDQ4ZDcwYmViZDI1ZjgwMTM4NzFhNWE5NDlmNmM1
N2IuLjM1ZWIxZDY1YjdmYThkOTVkZTFkNjMzMzVhMDljYTRkMGQ1NWI4YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLmNwcApAQCAtMjksOCArMjksMTAgQEAKIAogI2luY2x1
ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5T3B0aW9ucy5oPgogCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpDYWNo
ZVN0b3JhZ2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsMTQgKzQ0LDE0IEBAIENhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OkNhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24oTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlCiAKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
b3BlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUpCiB7Ci0gICAg
RW5naW5lOjpmcm9tKHNlc3Npb25JRCkub3BlbihvcmlnaW4sIGNhY2hlTmFtZSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmll
cl0oQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYmIHJlc3VsdCkgeworICAgIEVuZ2luZTo6ZnJvbShz
ZXNzaW9uSUQpLm9wZW4ob3JpZ2luLCBjYWNoZU5hbWUsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwgcmVxdWVzdElkZW50aWZpZXJdKGNvbnN0IENhY2hl
SWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgewogICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246Ok9wZW5Db21w
bGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7
CiAgICAgfSk7CiB9CiAKIHZvaWQgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6cmVtb3Zl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllcikKIHsKLSAgICBFbmdpbmU6OmZyb20oc2Vzc2lvbklEKS5y
ZW1vdmUoY2FjaGVJZGVudGlmaWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0
aGlzLCBzZXNzaW9uSUQsIHJlcXVlc3RJZGVudGlmaWVyXShDYWNoZUlkZW50aWZpZXJPckVycm9y
JiYgcmVzdWx0KSB7CisgICAgRW5naW5lOjpmcm9tKHNlc3Npb25JRCkucmVtb3ZlKGNhY2hlSWRl
bnRpZmllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgc2Vzc2lvbklE
LCByZXF1ZXN0SWRlbnRpZmllcl0oY29uc3QgQ2FjaGVJZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0
KSB7CiAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2Vi
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVtb3ZlQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVy
LCByZXN1bHQpLCBzZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwogICAgIH0pOwogfQpAQCAtNzUsNyAr
NzcsNyBAQCB2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OmRlbGV0ZU1hdGNoaW5n
UmVjb3JkcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgIH0pOwogfQogCi12b2lkIENhY2hl
U3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnB1dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVy
LCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmIHJlY29y
ZHMpCit2b2lkIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb246OnB1dFJlY29yZHMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8UmVjb3JkPiYmIHJlY29yZHMpCiB7CiAgICAgRW5naW5l
Ojpmcm9tKHNlc3Npb25JRCkucHV0UmVjb3JkcyhjYWNoZUlkZW50aWZpZXIsIFdURk1vdmUocmVj
b3JkcyksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIHNlc3Npb25JRCwg
cmVxdWVzdElkZW50aWZpZXJdKFJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkgewog
ICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYkNhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OlB1dFJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIs
IHJlc3VsdCksIHNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbi5oCmluZGV4IDRhOTNlNWYzNmJjODcyZjhjMzhjODUyMTRiNjM1MzYyNDczYzM0Y2Uu
LmZiM2E2NjRlNTQ1YzRkYWY3NTU4ZmQxNDlhYTFlYTFmMWRmOWQ1MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGVsZXRlTWF0Y2hpbmdSZWNvcmRz
KFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2Fj
aGVJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVR
dWVyeU9wdGlvbnMmJik7Ci0gICAgdm9pZCBwdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmKTsKKyAgICB2b2lkIHB1
dFJlY29yZHMoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYm
KTsKIAogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IDRkZjM5NDI1NmJmYmViZWRmN2U2ZjEwZjU4MDRlOWNjMTYwNGFhYjQuLjU5MjJlZWQ2Njcy
NzZkZGMxZTU0YTQ4MTg0M2RmYmUzYTllNTJkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI3LDUgKzI3LDUgQEAgbWVzc2FnZXMg
LT4gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiB7CiAKICAgICBSZWNvcmRzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNh
Y2hlSWRlbnRpZmllcik7CiAgICAgRGVsZXRlTWF0Y2hpbmdSZWNvcmRzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3Jl
OjpDYWNoZVF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKLSAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hl
SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29y
ZD4gcmVjb3JkKTsKKyAgICBQdXRSZWNvcmRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9y
PFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmQ+IHJlY29yZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBhNmY4YTAxZDI2ZTgyYzA1
OTE4NjllZjg2NmM5YzlmZjY5NjJhODVhLi5jMmRjNzU1OWQxNDcwMTcyNWRiMWE5NjUzYjFlMzk4
MjhiMzJhMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKQEAgLTIxNCwxMyArMjE0LDEzIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDYWNoZVF1
ZXJ5T3B0aW9ucz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDYWNoZVF1ZXJ5T3B0aW9uCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpDYWNoZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6Q2FjaGVJbmZvJiBpbmZvKQordm9pZCBBcmd1bWVudENvZGVyPERP
TUNhY2hlOjpDYWNoZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2Fj
aGU6OkNhY2hlSW5mbyYgaW5mbykKIHsKICAgICBlbmNvZGVyIDw8IGluZm8uaWRlbnRpZmllcjsK
ICAgICBlbmNvZGVyIDw8IGluZm8ubmFtZTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPENhY2hl
U3RvcmFnZUNvbm5lY3Rpb246OkNhY2hlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpDYWNoZUluZm8mIHJlY29yZCkKK2Jvb2wgQXJndW1lbnRD
b2RlcjxET01DYWNoZTo6Q2FjaGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERPTUNh
Y2hlOjpDYWNoZUluZm8mIHJlY29yZCkKIHsKICAgICB1aW50NjRfdCBpZGVudGlmaWVyOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9v
bCBBcmd1bWVudENvZGVyPENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OkNhY2hlSW5mbz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFyZ3VtZW50
Q29kZXI8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OlJlY29yZCYgcmVjb3JkKQordm9p
ZCBBcmd1bWVudENvZGVyPERPTUNhY2hlOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgRE9NQ2FjaGU6OlJlY29yZCYgcmVjb3JkKQogewogICAgIGVuY29kZXIgPDwgcmVj
b3JkLmlkZW50aWZpZXI7CiAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbgogICAgIH0pOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8Q2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6UmVjb3JkPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OlJlY29yZCYgcmVjb3JkKQorYm9vbCBBcmd1bWVudENvZGVyPERPTUNhY2hlOjpSZWNv
cmQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRE9NQ2FjaGU6OlJlY29yZCYgcmVjb3JkKQog
ewogICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZGVu
dGlmaWVyKSkKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6UmVjb3JkPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENhYwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodXBkYXRlUmVzcG9uc2VDb3VudGVyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVzcG9u
c2VCb2R5IHJlc3BvbnNlQm9keTsKKyAgICBXZWJDb3JlOjpET01DYWNoZTo6UmVzcG9uc2VCb2R5
IHJlc3BvbnNlQm9keTsKICAgICBib29sIGhhc1NoYXJlZEJ1ZmZlckJvZHk7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShoYXNTaGFyZWRCdWZmZXJCb2R5KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAw
ODFmYjAxZjRkNjZiMWMwM2JhY2QxYTg5YWEwYWJjZDJjZmFkYzZlLi43OTBiODI5YmU0NzliOGFj
YjY5MTEyZDdlZjEwYzg2MmZlYWUyMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMjAwLDE0ICsyMDAsMTQgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucz4gewogICAgIHN0YXRp
YyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmKTsKIH07
CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6Q2FjaGVJbmZvPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpDYWNoZUluZm8mKTsKLSAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OkNhY2hlSW5mbyYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvJik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZvJik7CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNv
bm5lY3Rpb246OlJlY29yZD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkJik7Ci0gICAgc3RhdGlj
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpS
ZWNvcmQmKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RE9NQ2Fj
aGU6OlJlY29yZD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6RE9NQ2FjaGU6OlJlY29yZCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVy
JiwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZCYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpFdmVudFRyYWNraW5nUmVnaW9ucz4gewpAQCAtNzg2LDEy
ICs3ODYsNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1lZGlhU2Vs
ZWN0aW9uT3B0aW9uOjpUeXBlPiB7CiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6RXJyb3I+IHsKLSAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOjpFcnJvciwKLSAgICAgICAgV2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6RXJyb3I6Ok5vbmUsCi0gICAgICAgIFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OkVycm9yOjpOb3RJbXBsZW1lbnRlZAotICAgID47Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDYyOTliNGIzMWE1N2E2MGExYzZmMWI4ODg1YmE3OWU1MDcyZmMxZGEuLjkwZTFhY2RhNTI1NTVi
NGRlYzY2Y2NjMTA4ZjY2NTlkZDA5MTM2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTA2LDcgKzkwNiw2IEBACiAJCTQxREM0NTlF
MUUzREJEQTEwMEIxMUY1MSAvKiBXZWJSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEQzQ1OUQxRTNEQkNGMDAwQjExRjUxIC8qIFdl
YlJUQ1NvY2tldC5jcHAgKi87IH07CiAJCTQxREM0NTlGMUUzREJEQTUwMEIxMUY1MSAvKiBXZWJS
VENTb2NrZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRkFGNUYzMUUzQkZFN0YwMDFBRTY3OCAvKiBXZWJSVENTb2NrZXQuaCAqLzsgfTsKIAkJNDFE
QzQ1QTExRTNEQzUzRjAwQjExRjUxIC8qIFdlYlJUQ1Jlc29sdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxREM0NUEwMUUzREM1M0MwMEIxMUY1
MSAvKiBXZWJSVENSZXNvbHZlci5jcHAgKi87IH07Ci0JCTQxRkFCRDI5MUY0REUwMDEwMDZBNkM5
NyAvKiBDYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxRkFCRDI3MUY0RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2UuaCAqLzsg
fTsKIAkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBQkQy
ODFGNERERkRDMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCAqLzsgfTsKIAkJ
NDFGQUY1RjUxRTNDMDY0OTAwMUFFNjc4IC8qIFdlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBRjVGNDFFM0MwNjQxMDAxQUU2
NzggLyogV2ViUlRDUmVzb2x2ZXIuaCAqLzsgfTsKIAkJNDFGQUY1RjgxRTNDMTAyMTAwMUFFNjc4
IC8qIExpYldlYlJUQ1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUZBRjVGNjFFM0MwQjQ3MDAxQUU2NzggLyogTGliV2ViUlRDUmVzb2x2
ZXIuaCAqLzsgfTsKQEAgLTMxNzksNyArMzE3OCw2IEBACiAJCTQxREM0NTlBMUUzREJCMjQwMEIx
MUY1MSAvKiBMaWJXZWJSVENTb2NrZXRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxREM0NTlEMUUzREJDRjAwMEIxMUY1MSAvKiBXZWJSVENTb2NrZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUlRDU29ja2V0LmNwcDsgcGF0aCA9IE5l
dHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxREM0NUEwMUUzREM1M0MwMEIxMUY1MSAvKiBXZWJSVENSZXNvbHZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJSVENSZXNvbHZlci5jcHA7IHBhdGgg
PSBOZXR3b3JrL3dlYnJ0Yy9XZWJSVENSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxRkFCRDI3MUY0RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxRkFCRDI4MUY0RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZBRjVG
MzFFM0JGRTdGMDAxQUU2NzggLyogV2ViUlRDU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdlYlJUQ1NvY2tldC5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvV2ViUlRD
U29ja2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFGNUY0MUUzQzA2NDEw
MDFBRTY3OCAvKiBXZWJSVENSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJSVENSZXNvbHZlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxOTQsNyArODE5Miw2IEBACiAJ
CUU0ODlEMjgyMUEwQTJCRTgwMDc4QzA2QSAvKiBjYWNoZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDFGQUJEMjcxRjREREZEQzAwNkE2Qzk3IC8qIENh
Y2hlU3RvcmFnZS5oICovLAogCQkJCTQxODk3RUQ2MUY0MTVEODYwMDE2RkE0MiAvKiBDYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwICovLAogCQkJCTQxODk3RUQyMUY0MTVEODUwMDE2RkE0MiAvKiBDYWNo
ZVN0b3JhZ2VFbmdpbmUuaCAqLywKIAkJCQk0MUZBQkQyODFGNERERkRDMDA2QTZDOTcgLyogQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuaCAqLywKQEAgLTg0MzAsNyArODQyNyw2IEBACiAJCQkJNEY2
MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNTcwNTExMUJFNDEwRTYwMDg3NEFGMSAvKiBCbG9ja1NQSS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTQxRkFCRDI5MUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0
b3JhZ2VFbmdpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5
NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdF
REExRjQxNUQ4QTAwMTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dl
YkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nh
Y2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDVjMjgyYmVlZjdiNWUyNjYx
ZTkxYjk3NmNiODA2YWIxNTZiNDRiNTkuLmMzZDEzMDI3NTA5YzMyYjMyN2MyNmQ5ZTRmMTBmNjEz
NTkyNGIyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgi
CiAKKyNpbmNsdWRlICJDYWNoZVN0b3JhZ2VFbmdpbmUuaCIKICNpbmNsdWRlICJDYWNoZVN0b3Jh
Z2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCkBAIC0zNCw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpET01DYWNo
ZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6OkNhY2hlU3RvcmFnZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC03OSwzOSArODEsMzkgQEAgdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Ojpkb0JhdGNoRGVsZXRlT3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWUKICAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbjo6
RGVsZXRlTWF0Y2hpbmdSZWNvcmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2Fj
aGVJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6ZG9CYXRjaFB1dE9wZXJhdGlvbih1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6UmVjb3JkPiYmIHJlY29yZHMpCit2b2lkIFdlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJiByZWNvcmRzKQog
ewogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uOjpQdXRSZWNvcmRzKG1fc2Vzc2lvbklELCByZXF1ZXN0SWRlbnRpZmllciwgY2FjaGVJ
ZGVudGlmaWVyLCByZWNvcmRzKSwgMCk7CiB9CiAKLXZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbjo6b3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgQ2FjaGVJZGVu
dGlmaWVyT3JFcnJvciYmIHJlc3VsdCkKK3ZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6
b3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2FjaGVJZGVu
dGlmaWVyT3JFcnJvciYgcmVzdWx0KQogewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246Om9w
ZW5Db21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdC5oYXNWYWx1ZSgpID8gcmVzdWx0
LnZhbHVlKCkgOiAwLCAhcmVzdWx0Lmhhc1ZhbHVlKCkgPyBFcnJvcjo6SW50ZXJuYWwgOiBFcnJv
cjo6Tm9uZSk7CisgICAgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6b3BlbkNvbXBsZXRlZChyZXF1
ZXN0SWRlbnRpZmllciwgcmVzdWx0KTsKIH0KIAotdm9pZCBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjpyZW1vdmVDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hlSWRl
bnRpZmllck9yRXJyb3ImJiByZXN1bHQpCit2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OnJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgQ2FjaGVJ
ZGVudGlmaWVyT3JFcnJvciYgcmVzdWx0KQogewotICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246
OnJlbW92ZUNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0Lmhhc1ZhbHVlKCkgPyBy
ZXN1bHQudmFsdWUoKSA6IDAsICFyZXN1bHQuaGFzVmFsdWUoKSA/IEVycm9yOjpJbnRlcm5hbCA6
IEVycm9yOjpOb25lKTsKKyAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpyZW1vdmVDb21wbGV0
ZWQocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCk7CiB9CiAKIHZvaWQgV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjo6dXBkYXRlQ2FjaGVzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNo
ZUluZm9zT3JFcnJvciYmIHJlc3VsdCkKIHsKLSAgICBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjp1
cGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdC5oYXNWYWx1ZSgpID8gcmVzdWx0
LnZhbHVlKCkgOiBWZWN0b3I8Q2FjaGVJbmZvPigpKTsKKyAgICBDYWNoZVN0b3JhZ2VDb25uZWN0
aW9uOjp1cGRhdGVDYWNoZXMocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiB9
CiAKIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlUmVjb3Jkcyh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgUmVjb3Jkc09yRXJyb3ImJiByZXN1bHQpCiB7Ci0gICAgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6dXBkYXRlUmVjb3JkcyhyZXF1ZXN0SWRlbnRpZmllciwgcmVz
dWx0Lmhhc1ZhbHVlKCkgPyBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSA6IFZlY3RvcjxSZWNvcmQ+
KCkpOworICAgIENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OnVwZGF0ZVJlY29yZHMocmVxdWVzdElk
ZW50aWZpZXIsIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKIHZvaWQgV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbjo6ZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgUmVjb3JkSWRlbnRpZmllcnNPckVycm9yJiYgcmVzdWx0KQogewotICAgIENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmRlbGV0ZVJlY29yZHNDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHJl
c3VsdC5oYXNWYWx1ZSgpID8gcmVzdWx0LnZhbHVlKCkgOiBWZWN0b3I8dWludDY0X3Q+KCksICFy
ZXN1bHQuaGFzVmFsdWUoKSA/IEVycm9yOjpJbnRlcm5hbCA6IEVycm9yOjpOb25lKTsKKyAgICBD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpkZWxldGVSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVu
dGlmaWVyLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5l
Y3Rpb246OnB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFJl
Y29yZElkZW50aWZpZXJzT3JFcnJvciYmIHJlc3VsdCkKIHsKLSAgICBDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uOjpwdXRSZWNvcmRzQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQuaGFz
VmFsdWUoKSA/IHJlc3VsdC52YWx1ZSgpIDogVmVjdG9yPHVpbnQ2NF90PigpLCAhcmVzdWx0Lmhh
c1ZhbHVlKCkgPyBFcnJvcjo6SW50ZXJuYWwgOiBFcnJvcjo6Tm9uZSk7CisgICAgQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6cHV0UmVjb3Jkc0NvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgV1RG
TW92ZShyZXN1bHQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgKaW5kZXggNzNjMWQzN2E5
NzhiNTc0MjVlYjc2ZWMyMmY3NDQ1ODkxNzI1MTIwNC4uMjVhZmZjZjAwYWRjMDhmODIxNGVkNzRm
NTBmYzgyMTM4YzE4MWM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nh
Y2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oCkBAIC0yNSw3ICsyNSw2IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KIApAQCAtNTksMTUgKzU4LDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvUmV0cmlldmVS
ZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBjYWNoZUlkZW50aWZp
ZXIpIGZpbmFsOwogICAgIHZvaWQgZG9CYXRjaERlbGV0ZU9wZXJhdGlvbih1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgdWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDYWNoZVF1ZXJ5T3B0aW9ucyYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRvQmF0Y2hQdXRPcGVyYXRpb24odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHVp
bnQ2NF90IGNhY2hlSWRlbnRpZmllciwgVmVjdG9yPFJlY29yZD4mJikgZmluYWw7CisgICAgdm9p
ZCBkb0JhdGNoUHV0T3BlcmF0aW9uKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCBjYWNoZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpET01DYWNoZTo6UmVjb3JkPiYmKSBm
aW5hbDsKIAotICAgIHZvaWQgb3BlbkNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgQ2FjaGVTdG9yYWdlOjpDYWNoZUlkZW50aWZpZXJPckVycm9yJiYpOwotICAgIHZvaWQgcmVt
b3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZVN0b3JhZ2U6OkNh
Y2hlSWRlbnRpZmllck9yRXJyb3ImJik7Ci0gICAgdm9pZCB1cGRhdGVDYWNoZXModWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIENhY2hlU3RvcmFnZTo6Q2FjaGVJbmZvc09yRXJyb3ImJik7Cisg
ICAgdm9pZCBvcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOworICAgIHZvaWQgcmVt
b3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpE
T01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciYpOworICAgIHZvaWQgdXBkYXRlQ2FjaGVz
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJbmZv
c09yRXJyb3ImJik7CiAKLSAgICB2b2lkIHVwZGF0ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIENhY2hlU3RvcmFnZTo6UmVjb3Jkc09yRXJyb3ImJik7Ci0gICAgdm9pZCBkZWxl
dGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBDYWNoZVN0b3Jh
Z2U6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsKLSAgICB2b2lkIHB1dFJlY29yZHNDb21w
bGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIENhY2hlU3RvcmFnZTo6UmVjb3JkSWRl
bnRpZmllcnNPckVycm9yJiYpOworICAgIHZvaWQgdXBkYXRlUmVjb3Jkcyh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZHNPckVycm9yJiYpOworICAg
IHZvaWQgZGVsZXRlUmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzT3JFcnJvciYmKTsKKyAgICB2b2lk
IHB1dFJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6
OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3ImJik7CiAKICAgICBXZWJDYWNoZVN0
b3JhZ2VQcm92aWRlciYgbV9wcm92aWRlcjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25J
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nh
Y2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZDMwODYzZmE3
N2IwMDZlMjI1MDRkZWM3MGY2Yzg1MWZkZjFjMWVhYy4uYTllMzMyNDFmMzk2ZjE5YTBhZTBlMzA0
OTM3MmNmZGE1MTgyYTE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Nh
Y2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KQEAgLTIxLDExICsyMSwxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uIHsKLSAgICBPcGVuQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJv
ciByZXN1bHQpOwotICAgIFJlbW92ZUNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlSWRlbnRpZmllck9yRXJyb3IgcmVzdWx0KTsK
LSAgICBVcGRhdGVDYWNoZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYktpdDo6Q2Fj
aGVTdG9yYWdlOjpDYWNoZUluZm9zT3JFcnJvciByZXN1bHQpOworICAgIE9wZW5Db21wbGV0ZWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50
aWZpZXJPckVycm9yIHJlc3VsdCk7CisgICAgUmVtb3ZlQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNoZTo6Q2FjaGVJZGVudGlmaWVyT3JFcnJvciBy
ZXN1bHQpOworICAgIFVwZGF0ZUNhY2hlcyh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgV2Vi
Q29yZTo6RE9NQ2FjaGU6OkNhY2hlSW5mb3NPckVycm9yIHJlc3VsdCk7CiAKLSAgICBVcGRhdGVS
ZWNvcmRzKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6
UmVjb3Jkc09yRXJyb3IgcmVzdWx0KTsKLSAgICBEZWxldGVSZWNvcmRzQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6UmVjb3JkSWRlbnRp
ZmllcnNPckVycm9yIHJlc3VsdCk7Ci0gICAgUHV0UmVjb3Jkc0NvbXBsZXRlZCh1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OlJlY29yZElkZW50aWZpZXJz
T3JFcnJvciByZXN1bHQpOworICAgIFVwZGF0ZVJlY29yZHModWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpSZWNvcmRzT3JFcnJvciByZXN1bHQpOworICAgIERl
bGV0ZVJlY29yZHNDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6
OkRPTUNhY2hlOjpSZWNvcmRJZGVudGlmaWVyc09yRXJyb3IgcmVzdWx0KTsKKyAgICBQdXRSZWNv
cmRzQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpET01DYWNo
ZTo6UmVjb3JkSWRlbnRpZmllcnNPckVycm9yIHJlc3VsdCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318942</attachid>
            <date>2017-08-23 17:07:42 -0700</date>
            <delta_ts>2017-08-23 17:39:27 -0700</delta_ts>
            <desc>Patch - windows fix</desc>
            <filename>bug-175902-20170823170741.patch</filename>
            <type>text/plain</type>
            <size>1378</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjYTdhN2ExYWFlZDk5
NDc3MGQ1ZWI0MDMyZTdkNWRkMWU2NjMyNC4uMWYzN2YyNTFmYWNkM2YyNmJiMWU3ZWE0MzQ1NjI3
ZjYwNDlkZDA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDE2IEBACiAKICAgICAgICAgW0NhY2hl
IEFQSV0gVW5pZnkgV2ViQ29yZSBhbmQgV2ViS2l0IGVycm9yIGhhbmRsaW5nCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5MDIKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzM0MDQ1OTMzPgorCisgICAgICAgIFVucmV2aWV3ZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6IEZpeGluZyBXaW5kb3dzIGJ1aWxkLgorCisyMDE3
LTA4LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbQ2Fj
aGUgQVBJXSBVbmlmeSBXZWJDb3JlIGFuZCBXZWJLaXQgZXJyb3IgaGFuZGxpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTkwMgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmgKaW5kZXggOThkYTgxMTFiM2VmM2YyMDIwMWY2Y2MwNzg4ZjczNGJlZGM2ODlm
Mi4uYzIxMjNhOTRhMzY0NTI5NjZlMzJhYTM0ZjY3MjY0NmVmMTE1YjQ1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaApAQCAtODMsNyArODMsNyBAQCB1c2luZyBDYWNo
ZUluZm9zQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FjaGVJbmZvc09yRXJyb3ImJik+
OwogdXNpbmcgUmVjb3Jkc09yRXJyb3IgPSBFeHBlY3RlZDxWZWN0b3I8UmVjb3JkPiwgRXJyb3I+
OwogdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFJlY29yZHNPckVy
cm9yJiYpPjsKIAotdXNpbmcgQ29tcGxldGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6
Om9wdGlvbmFsPEVycm9yPiYmKT47Cit1c2luZyBDb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+OwogCiB9IC8vIG5hbWVzcGFjZSBE
T01DYWNoZQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>