<?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>236169</bug_id>
          
          <creation_ts>2022-02-04 18:32:50 -0800</creation_ts>
          <short_desc>Notification refactoring</short_desc>
          <delta_ts>2022-02-05 00:32:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1837677</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-04 18:32:50 -0800</bug_when>
    <thetext>Notification refactoring

All in support of upcoming showNotification() work.

Splitting some &quot;no behavior change&quot; bits from a mega patch out here, including:
- Make Notification objects reliant on ScriptExecutionContext, and not Documents
- Give them more direct access to a NotificationClient instead of having to go through a Page&apos;s NotificationController
- Give ServiceWorkerGlobalScope objects a SessionID for future use</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837679</commentid>
    <comment_count>1</comment_count>
      <attachid>450961</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-04 18:41:36 -0800</bug_when>
    <thetext>Created attachment 450961
EWS v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837690</commentid>
    <comment_count>2</comment_count>
      <attachid>450964</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-04 19:11:18 -0800</bug_when>
    <thetext>Created attachment 450964
EWS v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837691</commentid>
    <comment_count>3</comment_count>
      <attachid>450965</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-04 19:23:03 -0800</bug_when>
    <thetext>Created attachment 450965
EWS v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837693</commentid>
    <comment_count>4</comment_count>
      <attachid>450966</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-04 19:41:42 -0800</bug_when>
    <thetext>Created attachment 450966
EWS v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837694</commentid>
    <comment_count>5</comment_count>
      <attachid>450967</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-04 19:55:47 -0800</bug_when>
    <thetext>Created attachment 450967
EWS v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837698</commentid>
    <comment_count>6</comment_count>
      <attachid>450969</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-04 20:30:23 -0800</bug_when>
    <thetext>Created attachment 450969
EWS v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837703</commentid>
    <comment_count>7</comment_count>
      <attachid>450972</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-04 21:25:45 -0800</bug_when>
    <thetext>Created attachment 450972
EWS v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837725</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-05 00:11:47 -0800</bug_when>
    <thetext>Committed r289153 (246849@main): &lt;https://commits.webkit.org/246849@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450972.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837726</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-05 00:12:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/88522349&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450961</attachid>
            <date>2022-02-04 18:41:36 -0800</date>
            <delta_ts>2022-02-04 19:11:18 -0800</delta_ts>
            <desc>EWS v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34723</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDk5NTVlMmNkMjEuLjZmMGE4NDQ3ZjFkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY2IEBACisyMDIyLTAyLTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBOb3RpZmljYXRpb24gcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjE2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoTm8gYmVoYXZpb3Ig
Y2hhbmdlKQorCQkKKwkJU29tZSAibm8gYmVoYXZpb3IgY2hhbmdlIiByZWZhY3RvcnMgYnJva2Vu
IG91dCBmcm9tIGFuIHVwY29taW5nIGxhcmdlciBwYXRjaCwgaW5jbHVkaW5nOgorCQktIE1ha2Ug
Tm90aWZpY2F0aW9uIG9iamVjdHMgcmVsaWFudCBvbiBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlu
c3RlYWQgb2YgRG9jdW1lbnQKKwkJLSBHaXZlIHRoZW0gYSBkaXJlY3QgcGF0aCB0byBhIE5vdGlm
aWNhdGlvbkNsaWVudCBpbnN0ZWFkIG9mIGhhdmluZyB0byBnbyB0aHJvdWdoIGEgUGFnZSdzIE5v
dGlmaWNhdGlvbkNvbnRyb2xsZXIKKwkJLSBHaXZlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQncyBh
IHNlc3Npb25JRCgpIGFjY2Vzc29yIGZvciBmdXR1cmUgdXNlCisJCS0gU29tZSBOb3RpZmljYXRp
b24gb2JqZWN0IHRocmVhZGluZyBoYXJkZW5pbmcKKworICAgICAgICAqIE1vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9u
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzaG93KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9u
OjpjbGllbnRGcm9tQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnN0
b3ApOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6ZG9jdW1lbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKwkJCisgICAgICAgICogTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oOgorICAgICAgICAKKwkJKiBNb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGE6OmRlY29kZSk6CisgICAgICAgIAorCQkqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6bm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAKKwkJKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bm90aWZp
Y2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNlc3Npb25JRCBjb25zdCk6CisgICAgICAgIAorCQkqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6
CisgICAgICAgIAorCQkqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgCisJCSogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZVdvcmtlclBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6U2Vydmlj
ZVdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjptX25vdGlmaWNhdGlvbkNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9i
YWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5oOgorICAgICAgICAKKwkJKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZXZlcnRpbmcgcjI4OTA5OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggZWM0YTY4ODU2NmQ0Li42
ODViMWU0ZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC0zNSwxMiArMzUsMTAgQEAKIAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5v
dGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJOb3RpZmljYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVy
bWlzc2lvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiV2luZG93RXZlbnRMb29wLmgiCkBAIC01Miw3
ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKE5vdGlmaWNhdGlvbik7CiAKLVJlZjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3Jl
YXRlKERvY3VtZW50JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25z
JiBvcHRpb25zKQorUmVmPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IGFkb3B0UmVmKCpuZXcg
Tm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKSk7CiAgICAgbm90aWZpY2F0aW9u
LT5zdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTYwLDE3ICs1OCwyNCBAQCBSZWY8Tm90aWZpY2F0aW9u
PiBOb3RpZmljYXRpb246OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgYwogICAgIHJldHVybiBub3RpZmljYXRpb247CiB9CiAKLU5vdGlmaWNhdGlvbjo6Tm90
aWZpY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
T3B0aW9ucyYgb3B0aW9ucykKLSAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKLSAgICAs
IG1fdGl0bGUodGl0bGUpCitOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBv
cHRpb25zKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorICAgICwgbV90aXRsZSh0
aXRsZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZGlyZWN0aW9uKG9wdGlvbnMuZGlyKQotICAg
ICwgbV9sYW5nKG9wdGlvbnMubGFuZykKLSAgICAsIG1fYm9keShvcHRpb25zLmJvZHkpCi0gICAg
LCBtX3RhZyhvcHRpb25zLnRhZykKKyAgICAsIG1fbGFuZyhvcHRpb25zLmxhbmcuaXNvbGF0ZWRD
b3B5KCkpCisgICAgLCBtX2JvZHkob3B0aW9ucy5ib2R5Lmlzb2xhdGVkQ29weSgpKQorICAgICwg
bV90YWcob3B0aW9ucy50YWcuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3N0YXRlKElkbGUpCiB7
CisgICAgaWYgKGNvbnRleHQuaXNEb2N1bWVudCgpKQorICAgICAgICBtX25vdGlmaWNhdGlvblNv
dXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQ7CisgICAgZWxzZSBpZiAoY29udGV4
dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICBtX25vdGlmaWNhdGlvblNv
dXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6U2VydmljZVdvcmtlcjsKKyAgICBlbHNlCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKICAgICBpZiAoIW9wdGlvbnMuaWNv
bi5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBpY29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVV
Ukwob3B0aW9ucy5pY29uKTsKKyAgICAgICAgYXV0byBpY29uVVJMID0gY29udGV4dC5jb21wbGV0
ZVVSTChvcHRpb25zLmljb24pOwogICAgICAgICBpZiAoaWNvblVSTC5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICBtX2ljb24gPSBpY29uVVJMOwogICAgIH0KQEAgLTkyLDE3ICs5NywxNSBAQCB2b2lk
IE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgaWYgKG1fc3RhdGUgIT0gSWRsZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAo
IXBhZ2UpCisgICAgYXV0byogY2xpZW50ID0gY2xpZW50RnJvbUNvbnRleHQoKTsKKyAgICBpZiAo
IWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgY2xpZW50ID0gTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCk7Ci0KLSAgICBpZiAoY2xpZW50LmNo
ZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IFBlcm1pc3Npb246Okdy
YW50ZWQpIHsKKyAgICBpZiAoY2xpZW50LT5jaGVja1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSAhPSBQZXJtaXNzaW9uOjpHcmFudGVkKSB7CiAgICAgICAgIGRpc3BhdGNoRXJy
b3JFdmVudCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChjbGllbnQuc2hvdygq
dGhpcykpCisgICAgaWYgKGNsaWVudC0+c2hvdygqdGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBT
aG93aW5nOwogfQogCkBAIC0xMTIsOCArMTE1LDggQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3Nl
KCkKICAgICBjYXNlIElkbGU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2hvd2luZzogewot
ICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgICAg
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNsaWVudCgpLmNhbmNlbCgqdGhp
cyk7CisgICAgICAgIGlmIChhdXRvKiBjbGllbnQgPSBjbGllbnRGcm9tQ29udGV4dCgpKQorICAg
ICAgICAgICAgY2xpZW50LT5jYW5jZWwoKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgY2FzZSBDbG9zZWQ6CkBAIC0xMjEsOSArMTI0LDExIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpj
bG9zZSgpCiAgICAgfQogfQogCi1Eb2N1bWVudCogTm90aWZpY2F0aW9uOjpkb2N1bWVudCgpIGNv
bnN0CitOb3RpZmljYXRpb25DbGllbnQqIE5vdGlmaWNhdGlvbjo6Y2xpZW50RnJvbUNvbnRleHQo
KQogewotICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKKyAgICBpZiAoYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQtPm5vdGlmaWNhdGlvbkNsaWVudCgpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBOb3RpZmljYXRpb246OmFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdApAQCAtMTM1LDggKzE0MCw4IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdG9w
KCkKIHsKICAgICBBY3RpdmVET01PYmplY3Q6OnN0b3AoKTsKIAotICAgIGlmIChhdXRvKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpm
cm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoKnRoaXMpOwor
ICAgIGlmIChhdXRvKiBjbGllbnQgPSBjbGllbnRGcm9tQ29udGV4dCgpKQorICAgICAgICBjbGll
bnQtPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCgqdGhpcyk7CiB9CiAKIHZvaWQgTm90aWZp
Y2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCkBAIC0xNzIsMTkgKzE3NywyMiBA
QCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hDbG9zZUV2ZW50KCkKIAogdm9pZCBOb3RpZmlj
YXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCgpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25Tb3VyY2UgPT0gTm90aWZpY2F0aW9uU291cmNl
OjpEb2N1bWVudCk7CisKICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tT
b3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9
CiAKLWF1dG8gTm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkgLT4g
UGVybWlzc2lvbgorYXV0byBOb3RpZmljYXRpb246OnBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgLT4gUGVybWlzc2lvbgogewotICAgIGF1dG8qIHBhZ2UgPSBkb2N1
bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQorICAgIGF1dG8qIGNsaWVudCA9IGNvbnRleHQu
bm90aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiBQ
ZXJtaXNzaW9uOjpEZWZhdWx0OwogCi0gICAgaWYgKCFkb2N1bWVudC5pc1NlY3VyZUNvbnRleHQo
KSkKKyAgICBpZiAoIWNvbnRleHQuaXNTZWN1cmVDb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBQ
ZXJtaXNzaW9uOjpEZW5pZWQ7CiAKLSAgICByZXR1cm4gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6
ZnJvbShkb2N1bWVudC5wYWdlKCkpLT5jbGllbnQoKS5jaGVja1Blcm1pc3Npb24oJmRvY3VtZW50
KTsKKyAgICByZXR1cm4gY2xpZW50LT5jaGVja1Blcm1pc3Npb24oJmNvbnRleHQpOwogfQogCiB2
b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0xOTcsOCArMjA1LDggQEAgdm9pZCBOb3RpZmlj
YXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgUmVmUHRyPE5vdGlm
aWNhdGlvblBlcm0KICAgICAgICAgfSk7CiAgICAgfTsKIAotICAgIGF1dG8qIHBhZ2UgPSBkb2N1
bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQorICAgIGF1dG8qIGNsaWVudCA9IHN0YXRpY19j
YXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmPihkb2N1bWVudCkubm90aWZpY2F0aW9uQ2xpZW50
KCk7CisgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybiByZXNvbHZlUHJvbWlzZUFuZENh
bGxiYWNrKFBlcm1pc3Npb246OkRlbmllZCk7CiAKICAgICBpZiAoIWRvY3VtZW50LmlzU2VjdXJl
Q29udGV4dCgpKSB7CkBAIC0yMDYsNyArMjE0LDcgQEAgdm9pZCBOb3RpZmljYXRpb246OnJlcXVl
c3RQZXJtaXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm0K
ICAgICAgICAgcmV0dXJuIHJlc29sdmVQcm9taXNlQW5kQ2FsbGJhY2soUGVybWlzc2lvbjo6RGVu
aWVkKTsKICAgICB9CiAKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5j
bGllbnQoKS5yZXF1ZXN0UGVybWlzc2lvbihkb2N1bWVudCwgV1RGTW92ZShyZXNvbHZlUHJvbWlz
ZUFuZENhbGxiYWNrKSk7CisgICAgY2xpZW50LT5yZXF1ZXN0UGVybWlzc2lvbihkb2N1bWVudCwg
V1RGTW92ZShyZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0
aW9uOjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgpCkBAIC0yMjcsMTUgKzIzNSwxOSBAQCBib29s
IE5vdGlmaWNhdGlvbjo6dmlydHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAKIE5vdGlm
aWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhKCkgY29uc3QKIHsKKyAgICBhdXRvIHNlc3Np
b25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoc2Vzc2lvbklEKTsKKwogICAgIHJldHVybiB7Ci0gICAgICAgIG1fdGl0bGUsCi0g
ICAgICAgIG1fYm9keSwKLSAgICAgICAgbV9pY29uLnN0cmluZygpLAorICAgICAgICBtX3RpdGxl
Lmlzb2xhdGVkQ29weSgpLAorICAgICAgICBtX2JvZHkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAg
IG1faWNvbi5zdHJpbmcoKS5pc29sYXRlZENvcHkoKSwKICAgICAgICAgbV90YWcsCiAgICAgICAg
IG1fbGFuZywKICAgICAgICAgbV9kaXJlY3Rpb24sCi0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwKKyAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICBpZGVudGlmaWVyKCksCisgICAgICAgICpzZXNzaW9uSUQsCiAgICAgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCmluZGV4IGEwNzM0MTNmYWU4Yi4uZjRhOTNiZDYxMDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7Citj
bGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CiBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2Fs
bGJhY2s7CiAKIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFN0cmluZyB0YWc7CiAgICAgICAgIFN0cmluZyBpY29uOwogICAgIH07Ci0g
ICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb24+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmKTsKKyAgICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBPcHRpb25zJik7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+Tm90aWZpY2F0
aW9uKCk7CiAKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmaW5hbGl6ZSgpOwogCi0gICAgc3RhdGljIFBlcm1pc3Npb24gcGVybWlzc2lvbihEb2N1
bWVudCYpOworICAgIHN0YXRpYyBQZXJtaXNzaW9uIHBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKERvY3VtZW50Jiwg
UmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4mJiwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJik7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KQEAgLTk2LDkgKzk3LDkgQEAgcHVibGljOgogICAgIHVzaW5nIFRo
cmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb24o
RG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7CisgICAgTm90
aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBPcHRpb25zJik7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKKyAgICBO
b3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZyb21Db250ZXh0KCk7CiAgICAgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBOb3Rp
ZmljYXRpb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KIAogICAgIHZvaWQgc2hvd1Nvb24o
KTsKQEAgLTEyNCw2ICsxMjUsMTIgQEAgcHJpdmF0ZToKICAgICBlbnVtIFN0YXRlIHsgSWRsZSwg
U2hvd2luZywgQ2xvc2VkIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IElkbGUgfTsKICAgICBib29s
IG1faGFzUmVsZXZhbnRFdmVudExpc3RlbmVyIHsgZmFsc2UgfTsKKworICAgIGVudW0gY2xhc3Mg
Tm90aWZpY2F0aW9uU291cmNlIDogYm9vbCB7CisgICAgICAgIERvY3VtZW50LAorICAgICAgICBT
ZXJ2aWNlV29ya2VyLAorICAgIH07CisgICAgTm90aWZpY2F0aW9uU291cmNlIG1fbm90aWZpY2F0
aW9uU291cmNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5o
CmluZGV4IDdhMTc4ZGZiODNkNy4uYThiMzBiMmYzN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBA
IC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICAvLyBDaGVja3MgdGhlIGN1cnJlbnQgbGV2ZWwg
b2YgcGVybWlzc2lvbi4KICAgICB2aXJ0dWFsIFBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CiAKLXByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5O
b3RpZmljYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaAppbmRleCA2
NzRiY2IxZDdiMmYuLmJjZGRlM2MwNTg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC00NSwxMiArNDYsMTMgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEg
ewogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3Ry
aW5nIG9yaWdpblN0cmluZzsKICAgICBVVUlEIG5vdGlmaWNhdGlvbklEOworICAgIFBBTDo6U2Vz
c2lvbklEIHNvdXJjZVNlc3Npb247CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9p
ZCBOb3RpZmljYXRpb25EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAg
ICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2Ug
PDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8PCBub3RpZmljYXRpb25JRDsKKyAgICBlbmNv
ZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGly
ZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8PCBub3RpZmljYXRpb25JRCA8PCBzb3VyY2VTZXNzaW9u
OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTYsNiArOTgsMTEgQEAgc3RkOjpv
cHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3RpZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc291cmNlU2Vz
c2lvbjsKKyAgICBkZWNvZGVyID4+IHNvdXJjZVNlc3Npb247CisgICAgaWYgKCFzb3VyY2VTZXNz
aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgcmV0dXJuIHsgewogICAg
ICAgICBXVEZNb3ZlKCp0aXRsZSksCiAgICAgICAgIFdURk1vdmUoKmJvZHkpLApAQCAtMTA1LDYg
KzExMiw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZpY2F0aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIFdURk1vdmUoKmRpcmVjdGlvbiks
CiAgICAgICAgIFdURk1vdmUoKm9yaWdpblN0cmluZyksCiAgICAgICAgIFdURk1vdmUoKm5vdGlm
aWNhdGlvbklEKSwKKyAgICAgICAgV1RGTW92ZSgqc291cmNlU2Vzc2lvbiksCiAgICAgfSB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkZGE4MTlhMzQxODYuLjkwYjRjNTdkNzhh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNjAsNiArMTYwLDcgQEAKICNpbmNsdWRl
ICJOb2RlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJO
b2RlV2l0aEluZGV4LmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtOTA2NCw2ICs5MDY1LDI1IEBAIHZvaWQgRG9jdW1l
bnQ6OndoZW5WaXNpYmxlKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKICAgICBjYWxsYmFj
aygpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitOb3RpZmljYXRpb25DbGllbnQq
IERvY3VtZW50Ojpub3RpZmljYXRpb25DbGllbnQoKQoreworICAgIGF1dG8qIHBhZ2UgPSB0aGlz
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiAmTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCk7Cit9
CisKK3N0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IERvY3VtZW50OjpzZXNzaW9uSUQoKSBj
b25zdAoreworICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQorICAgICAgICByZXR1
cm4gcGFnZS0+c2Vzc2lvbklEKCk7CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIERPQ1VNRU5UX1JFTEVBU0Vf
TE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNhOGM2M2FkZjdlMC4uYWYyOWRjODg2OTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTc5Niw2ICsxNzk2LDExIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhZGRUb0RvY3VtZW50c01hcCgpOwogICAgIHZvaWQgcmVtb3ZlRnJvbURvY3VtZW50c01h
cCgpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uQ2xpZW50
KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vz
c2lvbklEPiBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCiAgICAgY29uc3QgUmVm
PGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwogCiAgICAgVW5pcXVlUmVmPFF1aXJrcz4gbV9x
dWlya3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRl
eCA1NjkzMjEzNTRlM2QuLmRmMGRhM2YwYmQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IYW5kbGVUeXBlcy5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTc4LDYgKzc5LDEwIEBAIGVudW0g
Y2xhc3MgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlZmVy
cmVyUG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgVGFza1NvdXJjZSA6IHVpbnQ4X3Q7CiAK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK2NsYXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogY2xhc3MgU2VydmljZVdvcmtlcjsK
IGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7CkBAIC05NCw2ICs5OSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3Jr
bGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC0xMTIsNiArMTE4
LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0
dGluZ3NWYWx1ZXMoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAg
ICB2aXJ0dWFsIE5vdGlmaWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9uQ2xpZW50KCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4g
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisjZW5kaWYKKwogICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXgg
NDdkNWM0ZmIxZjkxLi4zZjEzNGNkZDA1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDxtZW1vcnk+Cisj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzMsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgRmV0Y2hSZXF1ZXN0
Q3JlZGVudGlhbHMgY3JlZGVudGlhbHM7CiAgICAgU2V0dGluZ3M6OlZhbHVlcyBzZXR0aW5nc1Zh
bHVlczsKICAgICBXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUgeyBXb3JrZXJUaHJl
YWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lv
bklEPiBzZXNzaW9uSUQ7CiAKICAgICBXb3JrZXJQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNv
bnN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNjA3MWQ4NjgxYTljLi45MDRkNGZj
ODhjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01MCwyMCArNTAsMjIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKTsKIAotUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4
dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgY29uc3QgV29ya2VyUGFyYW1l
dGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29ya2Vy
VGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBz
b2NrZXRQcm92aWRlcikKK1JlZjxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTo6Y3JlYXRlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHRE
YXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIGNvbnN0IFdvcmtlclBhcmFtZXRl
cnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgU2VydmljZVdvcmtlclRo
cmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29j
a2V0UHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYgbm90aWZp
Y2F0aW9uQ2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgYXV0byBzY29w
ZSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIHsgV1RGTW92ZShjb250
ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0
aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRl
ciB9KTsKKyAgICBhdXRvIHNjb3BlID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUgeyBXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgcGFyYW1z
LCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9u
UHJveHksIHNvY2tldFByb3ZpZGVyLCBXVEZNb3ZlKG5vdGlmaWNhdGlvbkNsaWVudCksIHNlc3Np
b25JRCB9KTsKICAgICBzY29wZS0+YXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMocGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7CiAgICAg
c2NvcGUtPm5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CiAg
ICAgcmV0dXJuIHNjb3BlOwogfQogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwg
U2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBw
YXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJlYWQm
IHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFBy
b3ZpZGVyKQorU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJE
YXRhJiYgd29ya2VyRGF0YSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgc3RkOjp1
bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRpb25DbGllbnQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVh
ZFR5cGU6OlNlcnZpY2VXb3JrZXIsIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdU
Rk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikKICAgICAs
IG1fY29udGV4dERhdGEoV1RGTW92ZShjb250ZXh0RGF0YSkpCiAgICAgLCBtX3JlZ2lzdHJhdGlv
bihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqdGhpcywgbmF2aWdhdG9y
KCkuc2VydmljZVdvcmtlcigpLCBXVEZNb3ZlKG1fY29udGV4dERhdGEucmVnaXN0cmF0aW9uKSkp
CiAgICAgLCBtX3NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcjo6Z2V0T3JDcmVhdGUoKnRoaXMs
IFdURk1vdmUod29ya2VyRGF0YSkpKQogICAgICwgbV9jbGllbnRzKFNlcnZpY2VXb3JrZXJDbGll
bnRzOjpjcmVhdGUoKSkKKyAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fbm90
aWZpY2F0aW9uQ2xpZW50KFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCmluZGV4IGZmMDI1YTI3ZTdiYi4uNzFjYzYzMmE5ZjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oCkBAIC00NiwxMCArNDYsMTIgQEAgY2xhc3MgU2VydmljZVdvcmtlclRocmVhZDsK
IGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBmaW5hbCA6IHB1YmxpYyBXb3JrZXJHbG9i
YWxTY29wZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
PiBjcmVhdGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYs
IGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VX
b3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CisgICAgc3RhdGljIFJlZjxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlk
ZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmIG5vdGlmaWNhdGlvbkNs
aWVudCwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgflNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
OwogCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRzJiBjbGllbnRzKCkgeyBy
ZXR1cm4gbV9jbGllbnRzLmdldCgpOyB9CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYg
cmVnaXN0cmF0aW9uKCkgeyByZXR1cm4gbV9yZWdpc3RyYXRpb24uZ2V0KCk7IH0KICAgICBTZXJ2
aWNlV29ya2VyJiBzZXJ2aWNlV29ya2VyKCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyLmdldCgp
OyB9CkBAIC03OSwxMiArODEsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2Uq
IHNlcnZpY2VXb3JrZXJQYWdlKCk7CiAgICAgCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEm
JiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgU2Vydmlj
ZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJE
YXRhJiYsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNl
cnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgc3RkOjp1bmlxdWVf
cHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRpb25DbGllbnQsIFBBTDo6U2Vzc2lv
bklEKTsKICAgICB2b2lkIG5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNz
YXJ5KCk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpTZXJ2
aWNlV29ya2VyOyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3QgeyByZXR1cm4g
IW1fZXh0ZW5kZWRFdmVudHMuaXNFbXB0eSgpOyB9CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgpIGZpbmFsIHsg
cmV0dXJuIG1fbm90aWZpY2F0aW9uQ2xpZW50LmdldCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxQ
QUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9u
SUQ7IH0KKyNlbmRpZgorCiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1fY29udGV4dERh
dGE7CiAgICAgUmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+IG1fcmVnaXN0cmF0aW9uOwog
ICAgIFJlZjxTZXJ2aWNlV29ya2VyPiBtX3NlcnZpY2VXb3JrZXI7CkBAIC05NCw2ICsxMDEsOCBA
QCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9sYXN0UmVxdWVzdElkZW50aWZpZXIgeyAwIH07
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4+IG1fcGVuZGlu
Z1NraXBXYWl0aW5nUHJvbWlzZXM7CisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4gbV9ub3RpZmljYXRpb25DbGll
bnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
Y3BwCmluZGV4IDI2MGRiYmQzZTY2Mi4uNzY5NjMxMDczNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSBhIHZh
bGlkIFdvcmtlck9iamVjdFByb3h5CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MK
IAotc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEsIFN0cmluZyYmIHVzZXJBZ2Vu
dCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFs
dWVzJiBzZXR0aW5nc1ZhbHVlcykKK3N0YXRpYyBXb3JrZXJQYXJhbWV0ZXJzIGdlbmVyYXRlV29y
a2VyUGFyYW1ldGVycyhjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRh
LCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwg
Y29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHsKICAgICByZXR1cm4gewogICAgICAgICBjb250ZXh0RGF0YS5zY3JpcHRVUkws
CkBAIC05MiwxMiArOTIsMTMgQEAgc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3Jr
ZXJQYXJhbWV0ZXJzKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYKICAgICAgICAgY29u
dGV4dERhdGEud29ya2VyVHlwZSwKICAgICAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9t
aXQsCiAgICAgICAgIHNldHRpbmdzVmFsdWVzLAotICAgICAgICB3b3JrZXJUaHJlYWRNb2RlCisg
ICAgICAgIHdvcmtlclRocmVhZE1vZGUsCisgICAgICAgIHNlc3Npb25JRAogICAgIH07CiB9CiAK
LVNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwg
U3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUsIGNv
bnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94eSYg
bG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVy
KiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlclRocmVhZChnZW5lcmF0ZVdvcmtlclBhcmFt
ZXRlcnMoY29udGV4dERhdGEsIFdURk1vdmUodXNlckFnZW50KSwgd29ya2VyVGhyZWFkTW9kZSwg
c2V0dGluZ3NWYWx1ZXMpLCBjb250ZXh0RGF0YS5zY3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dl
clByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRo
cmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9y
aWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0
UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCitTZXJ2aWNl
V29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIFN0cmluZyYm
IHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0
aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclBy
b3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0
UHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYgbm90aWZpY2F0
aW9uQ2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgOiBXb3JrZXJUaHJlYWQo
Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnRleHREYXRhLCBXVEZNb3ZlKHVzZXJBZ2VudCks
IHdvcmtlclRocmVhZE1vZGUsIHNldHRpbmdzVmFsdWVzLCBzZXNzaW9uSUQpLCBjb250ZXh0RGF0
YS5zY3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjb250
ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0
KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdz
OjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGNv
bnRleHREYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICwgbV9qb2JEYXRhSWRlbnRp
Zmllcihjb250ZXh0RGF0YS5qb2JEYXRhSWRlbnRpZmllcikKICAgICAsIG1fY29udGV4dERhdGEo
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY29udGV4dERhdGEpKSkKQEAgLTEwNSw2ICsxMDYsOCBA
QCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmIGNvbnRleHREYXRhLAogICAgICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1t
eVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCkpCiAgICAgLCBtX2hlYXJ0QmVhdFRp
bWVvdXQoc2V0dGluZ3NWYWx1ZXMuc2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dCA/
IGhlYXJ0QmVhdFRpbWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGltZW91dCkKICAgICAsIG1faGVh
cnRCZWF0VGltZXIgeyAqdGhpcywgJlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVy
RmlyZWQgfQorICAgICwgbV9ub3RpZmljYXRpb25DbGllbnQoV1RGTW92ZShub3RpZmljYXRpb25D
bGllbnQpKQorCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5n
Ojppbml0KCk7CkBAIC0xMTUsNyArMTE4LDggQEAgU2VydmljZVdvcmtlclRocmVhZDo6flNlcnZp
Y2VXb3JrZXJUaHJlYWQoKSA9IGRlZmF1bHQ7CiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFt
ZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRleHREYXRh
KTsKLSAgICByZXR1cm4gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoKnN0ZDo6ZXhj
aGFuZ2UobV9jb250ZXh0RGF0YSwgc3RkOjpudWxsb3B0KSwgKnN0ZDo6ZXhjaGFuZ2UobV93b3Jr
ZXJEYXRhLCBzdGQ6Om51bGxvcHQpLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdU
Rk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkp
OworICAgIFJFTEVBU0VfQVNTRVJUKHBhcmFtcy5zZXNzaW9uSUQpOworICAgIHJldHVybiBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSgqc3RkOjpleGNoYW5nZShtX2NvbnRleHREYXRh
LCBzdGQ6Om51bGxvcHQpLCAqc3RkOjpleGNoYW5nZShtX3dvcmtlckRhdGEsIHN0ZDo6bnVsbG9w
dCksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBp
ZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgV1RGTW92ZShtX25vdGlmaWNh
dGlvbkNsaWVudCksICpwYXJhbXMuc2Vzc2lvbklEKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpydW5FdmVudExvb3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDg4YjY1
ZGU4MDMwYS4uZDczYzVhNWI5YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJOb3Rp
ZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmgiCkBAIC04NSw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVf
RVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNl
cnZpY2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSwg
Y29uc3QgU2V0dGluZ3M6OlZhbHVlcyYsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdn
ZXJQcm94eSYsIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIq
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdv
cmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmLCBXb3JrZXJMb2FkZXJQcm94
eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSos
IFNvY2tldFByb3ZpZGVyKiwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiBu
b3RpZmljYXRpb25DbGllbnQsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIEFTQ0lJTGl0ZXJhbCB0
aHJlYWROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYkNvcmU6IFNlcnZpY2VXb3JrZXIi
X3M7IH0KICAgICB2b2lkIGZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpIGZpbmFsOwpAQCAtMTE5
LDYgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGhlYXJ0
QmVhdFRpbWVvdXRGb3JUZXN0IHsgMV9zIH07CiAgICAgU2Vjb25kcyBtX2hlYXJ0QmVhdFRpbWVv
dXQgeyBoZWFydEJlYXRUaW1lb3V0IH07CiAgICAgVGltZXIgbV9oZWFydEJlYXRUaW1lcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiBtX25vdGlmaWNhdGlvbkNsaWVu
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwCmluZGV4IDRjZTc0ZTBjYmE4Zi4uYTk0ZTZkMWU3NjVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBzdGF0aWMg
SGFzaFNldDxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2VydmljZVdvcmtlclRocmVh
ZFByb3hpZXMoKQogICAgIHJldHVybiBzZXQ7CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmIHBhZ2UsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdv
cmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJl
YWRNb2RlLCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIpCitTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8
UGFnZT4mJiBwYWdlLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2Vy
dmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRo
cmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3Rv
cmFnZVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmIG5vdGlm
aWNhdGlvbkNsaWVudCkKICAgICA6IG1fcGFnZShXVEZNb3ZlKHBhZ2UpKQogICAgICwgbV9kb2N1
bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQogI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQogICAgICwgbV9yZW1vdGVEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8U2VydmljZVdv
cmtlckRlYnVnZ2FibGU+KCp0aGlzLCBjb250ZXh0RGF0YSkpCiAjZW5kaWYKLSAgICAsIG1fc2Vy
dmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoV1RGTW92ZShjb250
ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUodXNlckFnZW50KSwgd29ya2Vy
VGhyZWFkTW9kZSwgbV9kb2N1bWVudC0+c2V0dGluZ3NWYWx1ZXMoKSwgKnRoaXMsICp0aGlzLCBp
ZGJDb25uZWN0aW9uUHJveHkobV9kb2N1bWVudCksIG1fZG9jdW1lbnQtPnNvY2tldFByb3ZpZGVy
KCkpKQorICAgICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNy
ZWF0ZShXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZSh1
c2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBtX2RvY3VtZW50LT5zZXR0aW5nc1ZhbHVlcygp
LCAqdGhpcywgKnRoaXMsIGlkYkNvbm5lY3Rpb25Qcm94eShtX2RvY3VtZW50KSwgbV9kb2N1bWVu
dC0+c29ja2V0UHJvdmlkZXIoKSwgV1RGTW92ZShub3RpZmljYXRpb25DbGllbnQpLCBtX3BhZ2Ut
PnNlc3Npb25JRCgpKSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdl
UHJvdmlkZXIpCiAgICAgLCBtX2luc3BlY3RvclByb3h5KCp0aGlzKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuaAppbmRleCA5YjgzNmI3M2Y4MDkuLjBhNGJjN2ZmNDk0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
KTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkoVW5pcXVlUmVmPFBhZ2U+JiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNl
V29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUsIENhY2hl
U3RvcmFnZVByb3ZpZGVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVh
ZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2Vy
dmljZVdvcmtlckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlLCBD
YWNoZVN0b3JhZ2VQcm92aWRlciYsIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+
JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdl
ZChib29sIGlzT25MaW5lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZDBhMTVkOWI5ZGQuLjkzZTc0MzhkYjRh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0wNCAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTm90aWZpY2F0aW9uIHJlZmFjdG9yaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxNjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtl
cik6CisKIDIwMjItMDItMDQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg5MTI0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZhN2ZkYzdkZTA1OS4uZmYxMTY5NTJjZThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAj
aW5jbHVkZSAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJO
b3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgpAQCAt
MTQ3LDcgKzE0OCw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3Rh
bGxTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0CiAgICAgICAgIHBhZ2UtPnNl
dHRpbmdzKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFN0b3JhZ2VCbG9j
a2luZ1BvbGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CiAgICAgfQogICAg
IHBhZ2UtPnNldHVwRm9yUmVtb3RlV29ya2VyKGNvbnRleHREYXRhLnNjcmlwdFVSTCwgY29udGV4
dERhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKSwgY29udGV4dERhdGEucmVmZXJyZXJQ
b2xpY3kpOwotICAgIGF1dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2VydmljZVdvcmtl
clRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgV1RGTW92ZShjb250ZXh0RGF0YSks
IFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUoZWZmZWN0aXZlVXNlckFnZW50KSwgd29ya2Vy
VGhyZWFkTW9kZSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIo
KSk7CisKKyAgICBhdXRvIG5vdGlmaWNhdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViTm90aWZp
Y2F0aW9uQ2xpZW50PihudWxscHRyKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSA9IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSksIFdURk1v
dmUoY29udGV4dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKGVmZmVjdGl2ZVVz
ZXJBZ2VudCksIHdvcmtlclRocmVhZE1vZGUsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hl
U3RvcmFnZVByb3ZpZGVyKCksIFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSk7CiAKICAgICBp
ZiAobGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgICAgIHNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQobGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgPT0gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQ6Olllcyk7Cg==
</data>
<flag name="commit-queue"
          id="477524"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450964</attachid>
            <date>2022-02-04 19:11:18 -0800</date>
            <delta_ts>2022-02-04 19:33:09 -0800</delta_ts>
            <desc>EWS v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34957</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDk5NTVlMmNkMjEuLmM2NjNlNTdkM2NkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY2IEBACisyMDIyLTAyLTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBOb3RpZmljYXRpb24gcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjE2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoTm8gYmVoYXZpb3Ig
Y2hhbmdlKQorICAgICAgICAKKyAgICAgICAgU29tZSAibm8gYmVoYXZpb3IgY2hhbmdlIiByZWZh
Y3RvcnMgYnJva2VuIG91dCBmcm9tIGFuIHVwY29taW5nIGxhcmdlciBwYXRjaCwgaW5jbHVkaW5n
OgorICAgICAgICAtIE1ha2UgTm90aWZpY2F0aW9uIG9iamVjdHMgcmVsaWFudCBvbiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IGluc3RlYWQgb2YgRG9jdW1lbnQKKyAgICAgICAgLSBHaXZlIHRoZW0g
YSBkaXJlY3QgcGF0aCB0byBhIE5vdGlmaWNhdGlvbkNsaWVudCBpbnN0ZWFkIG9mIGhhdmluZyB0
byBnbyB0aHJvdWdoIGEgUGFnZSdzIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgLSBH
aXZlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQncyBhIHNlc3Npb25JRCgpIGFjY2Vzc29yIGZvciBm
dXR1cmUgdXNlCisgICAgICAgIC0gU29tZSBOb3RpZmljYXRpb24gb2JqZWN0IHRocmVhZGluZyBo
YXJkZW5pbmcKKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbGllbnRGcm9tQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZG9jdW1lbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNsaWVudC5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE6OmRlY29k
ZSk6CisgICAgICAgIAorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6bm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bm90
aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnNlc3Npb25JRCBjb25zdCk6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
VGhyZWFkLmg6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpt
X25vdGlmaWNhdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTA5OC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHAKaW5kZXggZWM0YTY4ODU2NmQ0Li42ODViMWU0ZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNSwxMiArMzUsMTAgQEAKIAogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
V2luZG93RXZlbnRMb29wLmgiCkBAIC01Miw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE5vdGlmaWNhdGlvbik7CiAKLVJlZjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQorUmVmPE5vdGlmaWNhdGlvbj4g
Tm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIG5v
dGlmaWNhdGlvbiA9IGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlLCBv
cHRpb25zKSk7CiAgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTYwLDE3
ICs1OCwyNCBAQCBSZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShEb2N1bWVu
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgYwogICAgIHJldHVybiBub3RpZmljYXRp
b247CiB9CiAKLU5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKLSAgICA6IEFjdGl2
ZURPTU9iamVjdChkb2N1bWVudCkKLSAgICAsIG1fdGl0bGUodGl0bGUpCitOb3RpZmljYXRpb246
Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KCZjb250ZXh0KQorICAgICwgbV90aXRsZSh0aXRsZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1f
ZGlyZWN0aW9uKG9wdGlvbnMuZGlyKQotICAgICwgbV9sYW5nKG9wdGlvbnMubGFuZykKLSAgICAs
IG1fYm9keShvcHRpb25zLmJvZHkpCi0gICAgLCBtX3RhZyhvcHRpb25zLnRhZykKKyAgICAsIG1f
bGFuZyhvcHRpb25zLmxhbmcuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX2JvZHkob3B0aW9ucy5i
b2R5Lmlzb2xhdGVkQ29weSgpKQorICAgICwgbV90YWcob3B0aW9ucy50YWcuaXNvbGF0ZWRDb3B5
KCkpCiAgICAgLCBtX3N0YXRlKElkbGUpCiB7CisgICAgaWYgKGNvbnRleHQuaXNEb2N1bWVudCgp
KQorICAgICAgICBtX25vdGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9j
dW1lbnQ7CisgICAgZWxzZSBpZiAoY29udGV4dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
KQorICAgICAgICBtX25vdGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6U2Vy
dmljZVdvcmtlcjsKKyAgICBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBp
Y29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwob3B0aW9ucy5pY29uKTsKKyAgICAgICAgYXV0
byBpY29uVVJMID0gY29udGV4dC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOwogICAgICAgICBp
ZiAoaWNvblVSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBtX2ljb24gPSBpY29uVVJMOwogICAg
IH0KQEAgLTkyLDE3ICs5NywxNSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgaWYg
KG1fc3RhdGUgIT0gSWRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogcGFnZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCisgICAgYXV0byogY2xpZW50ID0gY2xp
ZW50RnJvbUNvbnRleHQoKTsKKyAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byYgY2xpZW50ID0gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xp
ZW50KCk7Ci0KLSAgICBpZiAoY2xpZW50LmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpICE9IFBlcm1pc3Npb246OkdyYW50ZWQpIHsKKyAgICBpZiAoY2xpZW50LT5jaGVj
a1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSAhPSBQZXJtaXNzaW9uOjpHcmFu
dGVkKSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmIChjbGllbnQuc2hvdygqdGhpcykpCisgICAgaWYgKGNsaWVudC0+c2hvdygq
dGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogfQogCkBAIC0xMTIsOCArMTE1LDgg
QEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKICAgICBjYXNlIElkbGU6CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU2hvd2luZzogewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKSkKLSAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20o
cGFnZSktPmNsaWVudCgpLmNhbmNlbCgqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiBjbGllbnQg
PSBjbGllbnRGcm9tQ29udGV4dCgpKQorICAgICAgICAgICAgY2xpZW50LT5jYW5jZWwoKnRoaXMp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDbG9zZWQ6CkBAIC0xMjEsOSArMTI0
LDExIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgfQogfQogCi1Eb2N1bWVudCog
Tm90aWZpY2F0aW9uOjpkb2N1bWVudCgpIGNvbnN0CitOb3RpZmljYXRpb25DbGllbnQqIE5vdGlm
aWNhdGlvbjo6Y2xpZW50RnJvbUNvbnRleHQoKQogewotICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPm5vdGlm
aWNhdGlvbkNsaWVudCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBO
b3RpZmljYXRpb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAtMTM1LDggKzE0MCw4
IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdG9wKCkKIHsKICAgICBBY3RpdmVET01PYmplY3Q6OnN0
b3AoKTsKIAotICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQoKnRoaXMpOworICAgIGlmIChhdXRvKiBjbGllbnQgPSBjbGllbnRG
cm9tQ29udGV4dCgpKQorICAgICAgICBjbGllbnQtPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3ll
ZCgqdGhpcyk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24pCkBAIC0xNzIsMTkgKzE3NywyMiBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hD
bG9zZUV2ZW50KCkKIAogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCgpCiB7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25T
b3VyY2UgPT0gTm90aWZpY2F0aW9uU291cmNlOjpEb2N1bWVudCk7CisKICAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLWF1dG8gTm90aWZpY2F0aW9uOjpwZXJtaXNz
aW9uKERvY3VtZW50JiBkb2N1bWVudCkgLT4gUGVybWlzc2lvbgorYXV0byBOb3RpZmljYXRpb246
OnBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgLT4gUGVybWlzc2lv
bgogewotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIGF1dG8qIGNsaWVudCA9IGNvbnRleHQubm90aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybiBQZXJtaXNzaW9uOjpEZWZhdWx0OwogCi0gICAgaWYg
KCFkb2N1bWVudC5pc1NlY3VyZUNvbnRleHQoKSkKKyAgICBpZiAoIWNvbnRleHQuaXNTZWN1cmVD
b250ZXh0KCkpCiAgICAgICAgIHJldHVybiBQZXJtaXNzaW9uOjpEZW5pZWQ7CiAKLSAgICByZXR1
cm4gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpLT5jbGllbnQo
KS5jaGVja1Blcm1pc3Npb24oJmRvY3VtZW50KTsKKyAgICByZXR1cm4gY2xpZW50LT5jaGVja1Bl
cm1pc3Npb24oJmNvbnRleHQpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1p
c3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrPiYmIGNhbGxiYWNrLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0x
OTcsOCArMjA1LDggQEAgdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm0KICAgICAgICAgfSk7CiAgICAg
fTsKIAotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIGF1dG8qIGNsaWVudCA9IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmPihk
b2N1bWVudCkubm90aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCiAgICAgICAg
IHJldHVybiByZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrKFBlcm1pc3Npb246OkRlbmllZCk7CiAK
ICAgICBpZiAoIWRvY3VtZW50LmlzU2VjdXJlQ29udGV4dCgpKSB7CkBAIC0yMDYsNyArMjE0LDcg
QEAgdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm0KICAgICAgICAgcmV0dXJuIHJlc29sdmVQcm9taXNl
QW5kQ2FsbGJhY2soUGVybWlzc2lvbjo6RGVuaWVkKTsKICAgICB9CiAKLSAgICBOb3RpZmljYXRp
b25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5yZXF1ZXN0UGVybWlzc2lvbihkb2N1
bWVudCwgV1RGTW92ZShyZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrKSk7CisgICAgY2xpZW50LT5y
ZXF1ZXN0UGVybWlzc2lvbihkb2N1bWVudCwgV1RGTW92ZShyZXNvbHZlUHJvbWlzZUFuZENhbGxi
YWNrKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgp
CkBAIC0yMjcsMTUgKzIzNSwxOSBAQCBib29sIE5vdGlmaWNhdGlvbjo6dmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0CiAKIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRh
KCkgY29uc3QKIHsKKyAgICBhdXRvIHNlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2Vzc2lvbklEKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2Vzc2lvbklEKTsKKwogICAgIHJl
dHVybiB7Ci0gICAgICAgIG1fdGl0bGUsCi0gICAgICAgIG1fYm9keSwKLSAgICAgICAgbV9pY29u
LnN0cmluZygpLAorICAgICAgICBtX3RpdGxlLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBtX2Jv
ZHkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIG1faWNvbi5zdHJpbmcoKS5pc29sYXRlZENvcHko
KSwKICAgICAgICAgbV90YWcsCiAgICAgICAgIG1fbGFuZywKICAgICAgICAgbV9kaXJlY3Rpb24s
Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSwKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBpZGVudGlmaWVyKCksCisg
ICAgICAgICpzZXNzaW9uSUQsCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGEwNzM0MTNmYWU4Yi4u
ZjRhOTNiZDYxMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQ
cm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CiBjbGFz
cyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiAKIHN0cnVjdCBOb3RpZmljYXRpb25E
YXRhOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB0YWc7CiAgICAg
ICAgIFN0cmluZyBpY29uOwogICAgIH07Ci0gICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb24+IGNy
ZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmKTsKKyAg
ICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7CiAgICAgCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CiAKQEAgLTg1LDcgKzg2LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5hbGl6ZSgpOwogCi0gICAgc3RhdGlj
IFBlcm1pc3Npb24gcGVybWlzc2lvbihEb2N1bWVudCYpOworICAgIHN0YXRpYyBQZXJtaXNzaW9u
IHBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIHJl
cXVlc3RQZXJtaXNzaW9uKERvY3VtZW50JiwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjaz4mJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTk2LDkgKzk3
LDkgQEAgcHVibGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKIAog
cHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb24oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBPcHRpb25zJik7CisgICAgTm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7CiAKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZyb21D
b250ZXh0KCk7CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KIAogICAgIHZvaWQgc2hvd1Nvb24oKTsKQEAgLTEyNCw2ICsxMjUsMTIgQEAgcHJpdmF0
ZToKICAgICBlbnVtIFN0YXRlIHsgSWRsZSwgU2hvd2luZywgQ2xvc2VkIH07CiAgICAgU3RhdGUg
bV9zdGF0ZSB7IElkbGUgfTsKICAgICBib29sIG1faGFzUmVsZXZhbnRFdmVudExpc3RlbmVyIHsg
ZmFsc2UgfTsKKworICAgIGVudW0gY2xhc3MgTm90aWZpY2F0aW9uU291cmNlIDogYm9vbCB7Cisg
ICAgICAgIERvY3VtZW50LAorICAgICAgICBTZXJ2aWNlV29ya2VyLAorICAgIH07CisgICAgTm90
aWZpY2F0aW9uU291cmNlIG1fbm90aWZpY2F0aW9uU291cmNlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDdhMTc4ZGZiODNkNy4uYThiMzBiMmYz
N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICAv
LyBDaGVja3MgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgcGVybWlzc2lvbi4KICAgICB2aXJ0dWFsIFBl
cm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CiAK
LXByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkRhdGEuaAppbmRleCA2NzRiY2IxZDdiMmYuLmJjZGRlM2MwNTg3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PG9wdGlvbmFsPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NSwxMiArNDYsMTMg
QEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3RyaW5nIG9yaWdpblN0cmluZzsKICAgICBVVUlEIG5v
dGlmaWNhdGlvbklEOworICAgIFBBTDo6U2Vzc2lvbklEIHNvdXJjZVNlc3Npb247CiB9OwogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBOb3RpZmljYXRpb25EYXRhOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwg
aWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8
PCBub3RpZmljYXRpb25JRDsKKyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVS
TCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8PCBub3Rp
ZmljYXRpb25JRCA8PCBzb3VyY2VTZXNzaW9uOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtOTYsNiArOTgsMTEgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3Rp
ZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW5vdGlmaWNh
dGlvbklEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4gc291cmNlU2Vzc2lvbjsKKyAgICBkZWNvZGVyID4+IHNvdXJjZVNl
c3Npb247CisgICAgaWYgKCFzb3VyY2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCiAgICAgcmV0dXJuIHsgewogICAgICAgICBXVEZNb3ZlKCp0aXRsZSksCiAgICAgICAg
IFdURk1vdmUoKmJvZHkpLApAQCAtMTA1LDYgKzExMiw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZp
Y2F0aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIFdURk1vdmUoKmRpcmVjdGlvbiksCiAgICAgICAgIFdURk1vdmUoKm9yaWdpblN0cmlu
ZyksCiAgICAgICAgIFdURk1vdmUoKm5vdGlmaWNhdGlvbklEKSwKKyAgICAgICAgV1RGTW92ZSgq
c291cmNlU2Vzc2lvbiksCiAgICAgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCBkZGE4MTlhMzQxODYuLjkwYjRjNTdkNzhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xNjAsNiArMTYwLDcgQEAKICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJO
b2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJOb2RlV2l0aEluZGV4LmgiCisjaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKICNpbmNs
dWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtOTA2
NCw2ICs5MDY1LDI1IEBAIHZvaWQgRG9jdW1lbnQ6OndoZW5WaXNpYmxlKEZ1bmN0aW9uPHZvaWQo
KT4mJiBjYWxsYmFjaykKICAgICBjYWxsYmFjaygpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCitOb3RpZmljYXRpb25DbGllbnQqIERvY3VtZW50Ojpub3RpZmljYXRpb25DbGllbnQo
KQoreworICAgIGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiAmTm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShwYWdlKS0+Y2xpZW50KCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9u
SUQ+IERvY3VtZW50OjpzZXNzaW9uSUQoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBwYWdlID0g
dGhpcy0+cGFnZSgpKQorICAgICAgICByZXR1cm4gcGFnZS0+c2Vzc2lvbklEKCk7CisKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI3VuZGVmIERPQ1VNRU5UX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNh
OGM2M2FkZjdlMC4uYWYyOWRjODg2OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTc5Niw2
ICsxNzk2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRUb0RvY3VtZW50c01hcCgpOwogICAg
IHZvaWQgcmVtb3ZlRnJvbURvY3VtZW50c01hcCgpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBjb25zdCBmaW5h
bDsKKyNlbmRpZgorCiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwog
CiAgICAgVW5pcXVlUmVmPFF1aXJrcz4gbV9xdWlya3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCA1NjkzMjEzNTRlM2QuLmRmMGRhM2YwYmQ1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYW5kbGVUeXBlcy5o
PgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRU
YXNrLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KQEAgLTc4LDYgKzc5LDEwIEBAIGVudW0gY2xhc3MgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlZmVycmVyUG9saWN5IDogdWludDhfdDsKIGVudW0gY2xh
c3MgVGFza1NvdXJjZSA6IHVpbnQ4X3Q7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK2Ns
YXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogY2xhc3MgU2VydmljZVdvcmtlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7
CkBAIC05NCw2ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9i
YWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCkBAIC0xMTIsNiArMTE4LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Y29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMoKSBjb25zdCA9IDA7CiAKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvbkNsaWVudCog
bm90aWZpY2F0aW9uQ2xpZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gc3Rk
OjpudWxsb3B0OyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlV2Vi
QXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggNDdkNWM0ZmIxZjkxLi4zZjEzNGNkZDA1ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxh
Z3MuaD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMsNiArNzQsNyBA
QCBwdWJsaWM6CiAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHM7CiAgICAg
U2V0dGluZ3M6OlZhbHVlcyBzZXR0aW5nc1ZhbHVlczsKICAgICBXb3JrZXJUaHJlYWRNb2RlIHdv
cmtlclRocmVhZE1vZGUgeyBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQgfTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7CiAKICAgICBXb3JrZXJQ
YXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAK
aW5kZXggNjA3MWQ4NjgxYTljLi45MDRkNGZjODhjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CkBAIC01MCwyMCArNTAsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKIAotUmVmPFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29y
a2VyRGF0YSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0
aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKK1JlZjxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtl
ckRhdGEsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIG9yaWdpbiwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlv
blByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxO
b3RpZmljYXRpb25DbGllbnQ+JiYgbm90aWZpY2F0aW9uQ2xpZW50LCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7Ci0gICAgYXV0byBzY29wZSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlIHsgV1RGTW92ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSks
IHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29u
bmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciB9KTsKKyAgICBhdXRvIHNjb3BlID0gYWRvcHRS
ZWYoKm5ldyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgeyBXVEZNb3ZlKGNvbnRleHREYXRhKSwg
V1RGTW92ZSh3b3JrZXJEYXRhKSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RG
TW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBXVEZNb3Zl
KG5vdGlmaWNhdGlvbkNsaWVudCksIHNlc3Npb25JRCB9KTsKICAgICBzY29wZS0+YXBwbHlDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMocGFyYW1zLmNvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyk7CiAgICAgc2NvcGUtPm5vdGlmeVNlcnZpY2VXb3JrZXJQYWdl
T2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CiAgICAgcmV0dXJuIHNjb3BlOwogfQogCi1TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRh
LCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBv
cmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
IHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94
eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQorU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYg
Y29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNl
V29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3Zp
ZGVyKiBzb2NrZXRQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4m
JiBub3RpZmljYXRpb25DbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IFdv
cmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGU6OlNlcnZpY2VXb3JrZXIsIHBhcmFtcywg
V1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblBy
b3h5LCBzb2NrZXRQcm92aWRlcikKICAgICAsIG1fY29udGV4dERhdGEoV1RGTW92ZShjb250ZXh0
RGF0YSkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpn
ZXRPckNyZWF0ZSgqdGhpcywgbmF2aWdhdG9yKCkuc2VydmljZVdvcmtlcigpLCBXVEZNb3ZlKG1f
Y29udGV4dERhdGEucmVnaXN0cmF0aW9uKSkpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXIoU2Vydmlj
ZVdvcmtlcjo6Z2V0T3JDcmVhdGUoKnRoaXMsIFdURk1vdmUod29ya2VyRGF0YSkpKQogICAgICwg
bV9jbGllbnRzKFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjcmVhdGUoKSkKKyAgICAsIG1fc2Vzc2lv
bklEKHNlc3Npb25JRCkKKyAgICAsIG1fbm90aWZpY2F0aW9uQ2xpZW50KFdURk1vdmUobm90aWZp
Y2F0aW9uQ2xpZW50KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGZmMDI1YTI3ZTdi
Yi4uYzBhNDNkMWRkYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DbGll
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uaCIKQEAgLTQ2LDEwICs0NywxMiBAQCBjbGFzcyBTZXJ2aWNlV29ya2Vy
VGhyZWFkOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGZpbmFsIDogcHVibGljIFdv
cmtlckdsb2JhbFNjb3BlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU+IGNyZWF0ZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtl
ckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwg
U2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBzdGF0
aWMgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2Nr
ZXRQcm92aWRlciosIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6
U2Vzc2lvbklEKTsKIAogICAgIH5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKTsKIAorICAgIGJv
b2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50cyYgY2xpZW50cygpIHsgcmV0dXJuIG1fY2xp
ZW50cy5nZXQoKTsgfQogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlv
bigpIHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uLmdldCgpOyB9CiAgICAgU2VydmljZVdvcmtlciYg
c2VydmljZVdvcmtlcigpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtlci5nZXQoKTsgfQpAQCAtNzks
MTIgKzgyLDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQYWdlKiBzZXJ2aWNlV29y
a2VyUGFnZSgpOwogICAgIAogcHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJl
YWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CisgICAgU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25z
dCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2Vy
VGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmlj
YXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIG5vdGlmeVNlcnZpY2VX
b3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBUeXBlOjpTZXJ2aWNlV29ya2VyOyB9CiAgICAgYm9vbCBoYXNQZW5k
aW5nRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gIW1fZXh0ZW5kZWRFdmVudHMuaXNFbXB0eSgpOyB9
CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5v
dGlmaWNhdGlvbkNsaWVudCgpIGZpbmFsIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2xpZW50Lmdl
dCgpOyB9CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKyNlbmRpZgorCiAgICAgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIG1fY29udGV4dERhdGE7CiAgICAgUmVmPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24+IG1fcmVnaXN0cmF0aW9uOwogICAgIFJlZjxTZXJ2aWNlV29ya2VyPiBtX3NlcnZp
Y2VXb3JrZXI7CkBAIC05NCw2ICsxMDIsOCBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9s
YXN0UmVxdWVzdElkZW50aWZpZXIgeyAwIH07CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PERlZmVycmVkUHJvbWlzZT4+IG1fcGVuZGluZ1NraXBXYWl0aW5nUHJvbWlzZXM7CisgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlv
bkNsaWVudD4gbV9ub3RpZmljYXRpb25DbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDI2MGRiYmQzZTY2Mi4uOGM4MWM3
YjEwN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzYsNyArNzYsNyBAQCBw
cml2YXRlOgogLy8gRklYTUU6IFVzZSBhIHZhbGlkIFdvcmtlck9iamVjdFByb3h5CiAvLyBGSVhN
RTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAotc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2Vu
ZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29u
dGV4dERhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJl
YWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcykKK3N0YXRpYyBX
b3JrZXJQYXJhbWV0ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRo
cmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGlu
Z3NWYWx1ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZXR1cm4gewogICAg
ICAgICBjb250ZXh0RGF0YS5zY3JpcHRVUkwsCkBAIC05MiwxMiArOTIsMTMgQEAgc3RhdGljIFdv
cmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYKICAgICAgICAgY29udGV4dERhdGEud29ya2VyVHlwZSwKICAgICAgICAg
RmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQsCiAgICAgICAgIHNldHRpbmdzVmFsdWVzLAot
ICAgICAgICB3b3JrZXJUaHJlYWRNb2RlCisgICAgICAgIHdvcmtlclRocmVhZE1vZGUsCisgICAg
ICAgIHNlc3Npb25JRAogICAgIH07CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VX
b3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZp
Y2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJl
YWRNb2RlIHdvcmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdz
VmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJv
eHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25u
ZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtl
clRocmVhZChnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29udGV4dERhdGEsIFdURk1vdmUodXNl
ckFnZW50KSwgd29ya2VyVGhyZWFkTW9kZSwgc2V0dGluZ3NWYWx1ZXMpLCBjb250ZXh0RGF0YS5z
Y3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjb250ZXh0
RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCks
IGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpj
cmVhdGVBbGxFbmFibGVkKCkpCitTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2Vy
RGF0YSYmIHdvcmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3
b3JrZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywg
V29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1
Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblBy
b3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxOb3Rp
ZmljYXRpb25DbGllbnQ+JiYgbm90aWZpY2F0aW9uQ2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCisgICAgOiBXb3JrZXJUaHJlYWQoZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnRl
eHREYXRhLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHdvcmtlclRocmVhZE1vZGUsIHNldHRpbmdzVmFs
dWVzLCBzZXNzaW9uSUQpLCBjb250ZXh0RGF0YS5zY3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dl
clByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRo
cmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9y
aWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0
UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBt
X3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGNvbnRleHREYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKQogICAgICwgbV9qb2JEYXRhSWRlbnRpZmllcihjb250ZXh0RGF0YS5qb2JEYXRhSWRlbnRp
ZmllcikKICAgICAsIG1fY29udGV4dERhdGEoY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY29udGV4
dERhdGEpKSkKQEAgLTEwNSw2ICsxMDYsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNl
V29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLAogICAg
ICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hh
cmVkKCkpCiAgICAgLCBtX2hlYXJ0QmVhdFRpbWVvdXQoc2V0dGluZ3NWYWx1ZXMuc2hvdWxkVXNl
U2VydmljZVdvcmtlclNob3J0VGltZW91dCA/IGhlYXJ0QmVhdFRpbWVvdXRGb3JUZXN0IDogaGVh
cnRCZWF0VGltZW91dCkKICAgICAsIG1faGVhcnRCZWF0VGltZXIgeyAqdGhpcywgJlNlcnZpY2VX
b3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQgfQorICAgICwgbV9ub3RpZmljYXRpb25D
bGllbnQoV1RGTW92ZShub3RpZmljYXRpb25DbGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOwpAQCAtMTE1LDcgKzExNyw4IEBAIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwogUmVm
PFdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiBvcmlnaW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQobV9jb250ZXh0RGF0YSk7Ci0gICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6Y3JlYXRlKCpzdGQ6OmV4Y2hhbmdlKG1fY29udGV4dERhdGEsIHN0ZDo6bnVsbG9w
dCksICpzdGQ6OmV4Y2hhbmdlKG1fd29ya2VyRGF0YSwgc3RkOjpudWxsb3B0KSwgcGFyYW1zLCBX
VEZNb3ZlKG9yaWdpbiksICp0aGlzLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGlkYkNvbm5lY3Rpb25Q
cm94eSgpLCBzb2NrZXRQcm92aWRlcigpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChwYXJhbXMuc2Vz
c2lvbklEKTsKKyAgICByZXR1cm4gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoKnN0
ZDo6ZXhjaGFuZ2UobV9jb250ZXh0RGF0YSwgc3RkOjpudWxsb3B0KSwgKnN0ZDo6ZXhjaGFuZ2Uo
bV93b3JrZXJEYXRhLCBzdGQ6Om51bGxvcHQpLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgKnRo
aXMsIFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVjdGlvblByb3h5KCksIHNvY2tldFByb3Zp
ZGVyKCksIFdURk1vdmUobV9ub3RpZmljYXRpb25DbGllbnQpLCAqcGFyYW1zLnNlc3Npb25JRCk7
CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaAppbmRleCA4OGI2NWRlODAzMGEuLjc1NjZiNGQ0YTlkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHVz
aFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgpAQCAtODUs
NyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2Vy
QWdlbnQsIFdvcmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmLCBXb3JrZXJM
b2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdv
cmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEm
JiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0aW5nczo6
VmFsdWVzJiwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6dW5pcXVlX3B0
cjxOb3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIEFTQ0lJTGl0
ZXJhbCB0aHJlYWROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYkNvcmU6IFNlcnZpY2VX
b3JrZXIiX3M7IH0KICAgICB2b2lkIGZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpIGZpbmFsOwpA
QCAtMTE5LDYgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRz
IGhlYXJ0QmVhdFRpbWVvdXRGb3JUZXN0IHsgMV9zIH07CiAgICAgU2Vjb25kcyBtX2hlYXJ0QmVh
dFRpbWVvdXQgeyBoZWFydEJlYXRUaW1lb3V0IH07CiAgICAgVGltZXIgbV9oZWFydEJlYXRUaW1l
cjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiBtX25vdGlmaWNhdGlv
bkNsaWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDRjZTc0ZTBjYmE4Zi4uYTk0ZTZkMWU3NjVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBz
dGF0aWMgSGFzaFNldDxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2VydmljZVdvcmtl
clRocmVhZFByb3hpZXMoKQogICAgIHJldHVybiBzZXQ7CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmIHBhZ2Us
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0
YSYmIHdvcmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3Jr
ZXJUaHJlYWRNb2RlLCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIp
CitTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShVbmlx
dWVSZWY8UGFnZT4mJiBwYWdlLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0
YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdv
cmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNh
Y2hlU3RvcmFnZVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYm
IG5vdGlmaWNhdGlvbkNsaWVudCkKICAgICA6IG1fcGFnZShXVEZNb3ZlKHBhZ2UpKQogICAgICwg
bV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9yZW1vdGVEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8U2Vy
dmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBjb250ZXh0RGF0YSkpCiAjZW5kaWYKLSAgICAs
IG1fc2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoV1RGTW92
ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUodXNlckFnZW50KSwg
d29ya2VyVGhyZWFkTW9kZSwgbV9kb2N1bWVudC0+c2V0dGluZ3NWYWx1ZXMoKSwgKnRoaXMsICp0
aGlzLCBpZGJDb25uZWN0aW9uUHJveHkobV9kb2N1bWVudCksIG1fZG9jdW1lbnQtPnNvY2tldFBy
b3ZpZGVyKCkpKQorICAgICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RG
TW92ZSh1c2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBtX2RvY3VtZW50LT5zZXR0aW5nc1Zh
bHVlcygpLCAqdGhpcywgKnRoaXMsIGlkYkNvbm5lY3Rpb25Qcm94eShtX2RvY3VtZW50KSwgbV9k
b2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSwgV1RGTW92ZShub3RpZmljYXRpb25DbGllbnQpLCBt
X3BhZ2UtPnNlc3Npb25JRCgpKSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVT
dG9yYWdlUHJvdmlkZXIpCiAgICAgLCBtX2luc3BlY3RvclByb3h5KCp0aGlzKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCA5YjgzNmI3M2Y4MDkuLjBhNGJjN2ZmNDk0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTkxLDcgKzkxLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQoKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBT
ZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUs
IENhY2hlU3RvcmFnZVByb3ZpZGVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtl
clRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiwgU2VydmljZVdvcmtlckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRN
b2RlLCBDYWNoZVN0b3JhZ2VQcm92aWRlciYsIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25D
bGllbnQ+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRl
Q2hhbmdlZChib29sIGlzT25MaW5lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZDBhMTVkOWI5ZGQuLjkzZTc0
MzhkYjRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0wNCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTm90aWZpY2F0aW9uIHJlZmFjdG9y
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYx
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2Vydmlj
ZVdvcmtlcik6CisKIDIwMjItMDItMDQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg5MTI0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZhN2ZkYzdkZTA1OS4uZmYxMTY5NTJj
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC00NSw2ICs0NSw3
IEBACiAjaW5jbHVkZSAiV2ViRGF0YWJhc2VQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRl
ICJXZWJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5o
IgpAQCAtMTQ3LDcgKzE0OCw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
Omluc3RhbGxTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0CiAgICAgICAgIHBh
Z2UtPnNldHRpbmdzKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CiAgICAg
fQogICAgIHBhZ2UtPnNldHVwRm9yUmVtb3RlV29ya2VyKGNvbnRleHREYXRhLnNjcmlwdFVSTCwg
Y29udGV4dERhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKSwgY29udGV4dERhdGEucmVm
ZXJyZXJQb2xpY3kpOwotICAgIGF1dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgV1RGTW92ZShjb250ZXh0
RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUoZWZmZWN0aXZlVXNlckFnZW50KSwg
d29ya2VyVGhyZWFkTW9kZSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJv
dmlkZXIoKSk7CisKKyAgICBhdXRvIG5vdGlmaWNhdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8V2Vi
Tm90aWZpY2F0aW9uQ2xpZW50PihudWxscHRyKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSA9IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSks
IFdURk1vdmUoY29udGV4dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKGVmZmVj
dGl2ZVVzZXJBZ2VudCksIHdvcmtlclRocmVhZE1vZGUsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksIFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSk7CiAK
ICAgICBpZiAobGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgICAgIHNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQobGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPT0gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ6Olllcyk7Cg==
</data>
<flag name="commit-queue"
          id="477525"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450965</attachid>
            <date>2022-02-04 19:23:03 -0800</date>
            <delta_ts>2022-02-04 19:44:57 -0800</delta_ts>
            <desc>EWS v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34974</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDk5NTVlMmNkMjEuLmM2NjNlNTdkM2NkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY2IEBACisyMDIyLTAyLTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBOb3RpZmljYXRpb24gcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjE2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoTm8gYmVoYXZpb3Ig
Y2hhbmdlKQorICAgICAgICAKKyAgICAgICAgU29tZSAibm8gYmVoYXZpb3IgY2hhbmdlIiByZWZh
Y3RvcnMgYnJva2VuIG91dCBmcm9tIGFuIHVwY29taW5nIGxhcmdlciBwYXRjaCwgaW5jbHVkaW5n
OgorICAgICAgICAtIE1ha2UgTm90aWZpY2F0aW9uIG9iamVjdHMgcmVsaWFudCBvbiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IGluc3RlYWQgb2YgRG9jdW1lbnQKKyAgICAgICAgLSBHaXZlIHRoZW0g
YSBkaXJlY3QgcGF0aCB0byBhIE5vdGlmaWNhdGlvbkNsaWVudCBpbnN0ZWFkIG9mIGhhdmluZyB0
byBnbyB0aHJvdWdoIGEgUGFnZSdzIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgLSBH
aXZlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQncyBhIHNlc3Npb25JRCgpIGFjY2Vzc29yIGZvciBm
dXR1cmUgdXNlCisgICAgICAgIC0gU29tZSBOb3RpZmljYXRpb24gb2JqZWN0IHRocmVhZGluZyBo
YXJkZW5pbmcKKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbGllbnRGcm9tQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZG9jdW1lbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNsaWVudC5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE6OmRlY29k
ZSk6CisgICAgICAgIAorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6bm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bm90
aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnNlc3Npb25JRCBjb25zdCk6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
VGhyZWFkLmg6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpt
X25vdGlmaWNhdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTA5OC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHAKaW5kZXggZWM0YTY4ODU2NmQ0Li42ODViMWU0ZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNSwxMiArMzUsMTAgQEAKIAogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
V2luZG93RXZlbnRMb29wLmgiCkBAIC01Miw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE5vdGlmaWNhdGlvbik7CiAKLVJlZjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQorUmVmPE5vdGlmaWNhdGlvbj4g
Tm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIG5v
dGlmaWNhdGlvbiA9IGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlLCBv
cHRpb25zKSk7CiAgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTYwLDE3
ICs1OCwyNCBAQCBSZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShEb2N1bWVu
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgYwogICAgIHJldHVybiBub3RpZmljYXRp
b247CiB9CiAKLU5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKLSAgICA6IEFjdGl2
ZURPTU9iamVjdChkb2N1bWVudCkKLSAgICAsIG1fdGl0bGUodGl0bGUpCitOb3RpZmljYXRpb246
Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KCZjb250ZXh0KQorICAgICwgbV90aXRsZSh0aXRsZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1f
ZGlyZWN0aW9uKG9wdGlvbnMuZGlyKQotICAgICwgbV9sYW5nKG9wdGlvbnMubGFuZykKLSAgICAs
IG1fYm9keShvcHRpb25zLmJvZHkpCi0gICAgLCBtX3RhZyhvcHRpb25zLnRhZykKKyAgICAsIG1f
bGFuZyhvcHRpb25zLmxhbmcuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX2JvZHkob3B0aW9ucy5i
b2R5Lmlzb2xhdGVkQ29weSgpKQorICAgICwgbV90YWcob3B0aW9ucy50YWcuaXNvbGF0ZWRDb3B5
KCkpCiAgICAgLCBtX3N0YXRlKElkbGUpCiB7CisgICAgaWYgKGNvbnRleHQuaXNEb2N1bWVudCgp
KQorICAgICAgICBtX25vdGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9j
dW1lbnQ7CisgICAgZWxzZSBpZiAoY29udGV4dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
KQorICAgICAgICBtX25vdGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6U2Vy
dmljZVdvcmtlcjsKKyAgICBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBp
Y29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwob3B0aW9ucy5pY29uKTsKKyAgICAgICAgYXV0
byBpY29uVVJMID0gY29udGV4dC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOwogICAgICAgICBp
ZiAoaWNvblVSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBtX2ljb24gPSBpY29uVVJMOwogICAg
IH0KQEAgLTkyLDE3ICs5NywxNSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgaWYg
KG1fc3RhdGUgIT0gSWRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogcGFnZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCisgICAgYXV0byogY2xpZW50ID0gY2xp
ZW50RnJvbUNvbnRleHQoKTsKKyAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byYgY2xpZW50ID0gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xp
ZW50KCk7Ci0KLSAgICBpZiAoY2xpZW50LmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpICE9IFBlcm1pc3Npb246OkdyYW50ZWQpIHsKKyAgICBpZiAoY2xpZW50LT5jaGVj
a1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSAhPSBQZXJtaXNzaW9uOjpHcmFu
dGVkKSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmIChjbGllbnQuc2hvdygqdGhpcykpCisgICAgaWYgKGNsaWVudC0+c2hvdygq
dGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogfQogCkBAIC0xMTIsOCArMTE1LDgg
QEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKICAgICBjYXNlIElkbGU6CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU2hvd2luZzogewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKSkKLSAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20o
cGFnZSktPmNsaWVudCgpLmNhbmNlbCgqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiBjbGllbnQg
PSBjbGllbnRGcm9tQ29udGV4dCgpKQorICAgICAgICAgICAgY2xpZW50LT5jYW5jZWwoKnRoaXMp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDbG9zZWQ6CkBAIC0xMjEsOSArMTI0
LDExIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgfQogfQogCi1Eb2N1bWVudCog
Tm90aWZpY2F0aW9uOjpkb2N1bWVudCgpIGNvbnN0CitOb3RpZmljYXRpb25DbGllbnQqIE5vdGlm
aWNhdGlvbjo6Y2xpZW50RnJvbUNvbnRleHQoKQogewotICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPm5vdGlm
aWNhdGlvbkNsaWVudCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBO
b3RpZmljYXRpb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAtMTM1LDggKzE0MCw4
IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdG9wKCkKIHsKICAgICBBY3RpdmVET01PYmplY3Q6OnN0
b3AoKTsKIAotICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQoKnRoaXMpOworICAgIGlmIChhdXRvKiBjbGllbnQgPSBjbGllbnRG
cm9tQ29udGV4dCgpKQorICAgICAgICBjbGllbnQtPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3ll
ZCgqdGhpcyk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24pCkBAIC0xNzIsMTkgKzE3NywyMiBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hD
bG9zZUV2ZW50KCkKIAogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCgpCiB7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25T
b3VyY2UgPT0gTm90aWZpY2F0aW9uU291cmNlOjpEb2N1bWVudCk7CisKICAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLWF1dG8gTm90aWZpY2F0aW9uOjpwZXJtaXNz
aW9uKERvY3VtZW50JiBkb2N1bWVudCkgLT4gUGVybWlzc2lvbgorYXV0byBOb3RpZmljYXRpb246
OnBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgLT4gUGVybWlzc2lv
bgogewotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIGF1dG8qIGNsaWVudCA9IGNvbnRleHQubm90aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybiBQZXJtaXNzaW9uOjpEZWZhdWx0OwogCi0gICAgaWYg
KCFkb2N1bWVudC5pc1NlY3VyZUNvbnRleHQoKSkKKyAgICBpZiAoIWNvbnRleHQuaXNTZWN1cmVD
b250ZXh0KCkpCiAgICAgICAgIHJldHVybiBQZXJtaXNzaW9uOjpEZW5pZWQ7CiAKLSAgICByZXR1
cm4gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpLT5jbGllbnQo
KS5jaGVja1Blcm1pc3Npb24oJmRvY3VtZW50KTsKKyAgICByZXR1cm4gY2xpZW50LT5jaGVja1Bl
cm1pc3Npb24oJmNvbnRleHQpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1p
c3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrPiYmIGNhbGxiYWNrLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0x
OTcsOCArMjA1LDggQEAgdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm0KICAgICAgICAgfSk7CiAgICAg
fTsKIAotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIGF1dG8qIGNsaWVudCA9IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmPihk
b2N1bWVudCkubm90aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCiAgICAgICAg
IHJldHVybiByZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrKFBlcm1pc3Npb246OkRlbmllZCk7CiAK
ICAgICBpZiAoIWRvY3VtZW50LmlzU2VjdXJlQ29udGV4dCgpKSB7CkBAIC0yMDYsNyArMjE0LDcg
QEAgdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm0KICAgICAgICAgcmV0dXJuIHJlc29sdmVQcm9taXNl
QW5kQ2FsbGJhY2soUGVybWlzc2lvbjo6RGVuaWVkKTsKICAgICB9CiAKLSAgICBOb3RpZmljYXRp
b25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5yZXF1ZXN0UGVybWlzc2lvbihkb2N1
bWVudCwgV1RGTW92ZShyZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrKSk7CisgICAgY2xpZW50LT5y
ZXF1ZXN0UGVybWlzc2lvbihkb2N1bWVudCwgV1RGTW92ZShyZXNvbHZlUHJvbWlzZUFuZENhbGxi
YWNrKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgp
CkBAIC0yMjcsMTUgKzIzNSwxOSBAQCBib29sIE5vdGlmaWNhdGlvbjo6dmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0CiAKIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRh
KCkgY29uc3QKIHsKKyAgICBhdXRvIHNlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2Vzc2lvbklEKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2Vzc2lvbklEKTsKKwogICAgIHJl
dHVybiB7Ci0gICAgICAgIG1fdGl0bGUsCi0gICAgICAgIG1fYm9keSwKLSAgICAgICAgbV9pY29u
LnN0cmluZygpLAorICAgICAgICBtX3RpdGxlLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBtX2Jv
ZHkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIG1faWNvbi5zdHJpbmcoKS5pc29sYXRlZENvcHko
KSwKICAgICAgICAgbV90YWcsCiAgICAgICAgIG1fbGFuZywKICAgICAgICAgbV9kaXJlY3Rpb24s
Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSwKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBpZGVudGlmaWVyKCksCisg
ICAgICAgICpzZXNzaW9uSUQsCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGEwNzM0MTNmYWU4Yi4u
ZjRhOTNiZDYxMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQ
cm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CiBjbGFz
cyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiAKIHN0cnVjdCBOb3RpZmljYXRpb25E
YXRhOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB0YWc7CiAgICAg
ICAgIFN0cmluZyBpY29uOwogICAgIH07Ci0gICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb24+IGNy
ZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmKTsKKyAg
ICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7CiAgICAgCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CiAKQEAgLTg1LDcgKzg2LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5hbGl6ZSgpOwogCi0gICAgc3RhdGlj
IFBlcm1pc3Npb24gcGVybWlzc2lvbihEb2N1bWVudCYpOworICAgIHN0YXRpYyBQZXJtaXNzaW9u
IHBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIHJl
cXVlc3RQZXJtaXNzaW9uKERvY3VtZW50JiwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjaz4mJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTk2LDkgKzk3
LDkgQEAgcHVibGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKIAog
cHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb24oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBPcHRpb25zJik7CisgICAgTm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7CiAKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZyb21D
b250ZXh0KCk7CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KIAogICAgIHZvaWQgc2hvd1Nvb24oKTsKQEAgLTEyNCw2ICsxMjUsMTIgQEAgcHJpdmF0
ZToKICAgICBlbnVtIFN0YXRlIHsgSWRsZSwgU2hvd2luZywgQ2xvc2VkIH07CiAgICAgU3RhdGUg
bV9zdGF0ZSB7IElkbGUgfTsKICAgICBib29sIG1faGFzUmVsZXZhbnRFdmVudExpc3RlbmVyIHsg
ZmFsc2UgfTsKKworICAgIGVudW0gY2xhc3MgTm90aWZpY2F0aW9uU291cmNlIDogYm9vbCB7Cisg
ICAgICAgIERvY3VtZW50LAorICAgICAgICBTZXJ2aWNlV29ya2VyLAorICAgIH07CisgICAgTm90
aWZpY2F0aW9uU291cmNlIG1fbm90aWZpY2F0aW9uU291cmNlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDdhMTc4ZGZiODNkNy4uYThiMzBiMmYz
N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICAv
LyBDaGVja3MgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgcGVybWlzc2lvbi4KICAgICB2aXJ0dWFsIFBl
cm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CiAK
LXByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkRhdGEuaAppbmRleCA2NzRiY2IxZDdiMmYuLmJjZGRlM2MwNTg3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PG9wdGlvbmFsPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NSwxMiArNDYsMTMg
QEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3RyaW5nIG9yaWdpblN0cmluZzsKICAgICBVVUlEIG5v
dGlmaWNhdGlvbklEOworICAgIFBBTDo6U2Vzc2lvbklEIHNvdXJjZVNlc3Npb247CiB9OwogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBOb3RpZmljYXRpb25EYXRhOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwg
aWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8
PCBub3RpZmljYXRpb25JRDsKKyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVS
TCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8PCBub3Rp
ZmljYXRpb25JRCA8PCBzb3VyY2VTZXNzaW9uOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtOTYsNiArOTgsMTEgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3Rp
ZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW5vdGlmaWNh
dGlvbklEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4gc291cmNlU2Vzc2lvbjsKKyAgICBkZWNvZGVyID4+IHNvdXJjZVNl
c3Npb247CisgICAgaWYgKCFzb3VyY2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCiAgICAgcmV0dXJuIHsgewogICAgICAgICBXVEZNb3ZlKCp0aXRsZSksCiAgICAgICAg
IFdURk1vdmUoKmJvZHkpLApAQCAtMTA1LDYgKzExMiw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZp
Y2F0aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIFdURk1vdmUoKmRpcmVjdGlvbiksCiAgICAgICAgIFdURk1vdmUoKm9yaWdpblN0cmlu
ZyksCiAgICAgICAgIFdURk1vdmUoKm5vdGlmaWNhdGlvbklEKSwKKyAgICAgICAgV1RGTW92ZSgq
c291cmNlU2Vzc2lvbiksCiAgICAgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCBkZGE4MTlhMzQxODYuLjkwYjRjNTdkNzhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xNjAsNiArMTYwLDcgQEAKICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJO
b2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJOb2RlV2l0aEluZGV4LmgiCisjaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKICNpbmNs
dWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtOTA2
NCw2ICs5MDY1LDI1IEBAIHZvaWQgRG9jdW1lbnQ6OndoZW5WaXNpYmxlKEZ1bmN0aW9uPHZvaWQo
KT4mJiBjYWxsYmFjaykKICAgICBjYWxsYmFjaygpOwogfQogCisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCitOb3RpZmljYXRpb25DbGllbnQqIERvY3VtZW50Ojpub3RpZmljYXRpb25DbGllbnQo
KQoreworICAgIGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiAmTm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShwYWdlKS0+Y2xpZW50KCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9u
SUQ+IERvY3VtZW50OjpzZXNzaW9uSUQoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBwYWdlID0g
dGhpcy0+cGFnZSgpKQorICAgICAgICByZXR1cm4gcGFnZS0+c2Vzc2lvbklEKCk7CisKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI3VuZGVmIERPQ1VNRU5UX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNh
OGM2M2FkZjdlMC4uYWYyOWRjODg2OTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTc5Niw2
ICsxNzk2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRUb0RvY3VtZW50c01hcCgpOwogICAg
IHZvaWQgcmVtb3ZlRnJvbURvY3VtZW50c01hcCgpOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBjb25zdCBmaW5h
bDsKKyNlbmRpZgorCiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwog
CiAgICAgVW5pcXVlUmVmPFF1aXJrcz4gbV9xdWlya3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCA1NjkzMjEzNTRlM2QuLmRmMGRhM2YwYmQ1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYW5kbGVUeXBlcy5o
PgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRU
YXNrLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KQEAgLTc4LDYgKzc5LDEwIEBAIGVudW0gY2xhc3MgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlZmVycmVyUG9saWN5IDogdWludDhfdDsKIGVudW0gY2xh
c3MgVGFza1NvdXJjZSA6IHVpbnQ4X3Q7CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK2Ns
YXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogY2xhc3MgU2VydmljZVdvcmtlcjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7
CkBAIC05NCw2ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9i
YWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCkBAIC0xMTIsNiArMTE4LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Y29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMoKSBjb25zdCA9IDA7CiAKKyNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB2aXJ0dWFsIE5vdGlmaWNhdGlvbkNsaWVudCog
bm90aWZpY2F0aW9uQ2xpZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gc3Rk
OjpudWxsb3B0OyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlV2Vi
QXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggNDdkNWM0ZmIxZjkxLi5jZjUwYzM2OGFlNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxh
Z3MuaD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMsNiArNzQsNyBA
QCBwdWJsaWM6CiAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHM7CiAgICAg
U2V0dGluZ3M6OlZhbHVlcyBzZXR0aW5nc1ZhbHVlczsKICAgICBXb3JrZXJUaHJlYWRNb2RlIHdv
cmtlclRocmVhZE1vZGUgeyBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQgfTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQgeyBzdGQ6Om51bGxvcHQg
fTsKIAogICAgIFdvcmtlclBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmNwcAppbmRleCA2MDcxZDg2ODFhOWMuLjkwNGQ0ZmM4OGNhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKQEAgLTUwLDIwICs1MCwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUp
OwogCi1SZWY8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU6OmNyZWF0ZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2Vydmlj
ZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVh
ZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVy
KQorUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
OjpjcmVhdGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VX
b3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwg
c3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRpb25DbGllbnQs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBhdXRvIHNjb3BlID0gYWRvcHRSZWYo
Km5ldyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgeyBXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RG
TW92ZSh3b3JrZXJEYXRhKSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92
ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyIH0pOworICAgIGF1
dG8gc2NvcGUgPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB7IFdURk1v
dmUoY29udGV4dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBwYXJhbXMsIFdURk1vdmUob3Jp
Z2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0
UHJvdmlkZXIsIFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSwgc2Vzc2lvbklEIH0pOwogICAg
IHNjb3BlLT5hcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyhwYXJhbXMu
Y29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKTsKICAgICBzY29wZS0+bm90aWZ5
U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKTsKICAgICByZXR1cm4gc2Nv
cGU7CiB9CiAKLVNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2Vy
RGF0YSYmIHdvcmtlckRhdGEsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8
U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCitTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJE
YXRhLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiBvcmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Q
cm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90
aWZpY2F0aW9uQ2xpZW50PiYmIG5vdGlmaWNhdGlvbkNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgIDogV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZTo6U2Vydmlj
ZVdvcmtlciwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmln
aW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQogICAgICwgbV9jb250ZXh0RGF0
YShXVEZNb3ZlKGNvbnRleHREYXRhKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCp0aGlzLCBuYXZpZ2F0b3IoKS5zZXJ2aWNlV29y
a2VyKCksIFdURk1vdmUobV9jb250ZXh0RGF0YS5yZWdpc3RyYXRpb24pKSkKICAgICAsIG1fc2Vy
dmljZVdvcmtlcihTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqdGhpcywgV1RGTW92ZSh3b3Jr
ZXJEYXRhKSkpCiAgICAgLCBtX2NsaWVudHMoU2VydmljZVdvcmtlckNsaWVudHM6OmNyZWF0ZSgp
KQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9ub3RpZmljYXRpb25DbGll
bnQoV1RGTW92ZShub3RpZmljYXRpb25DbGllbnQpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgK
aW5kZXggZmYwMjVhMjdlN2JiLi5jMGE0M2QxZGRjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgpAQCAtNDYsMTAgKzQ3LDEyIEBAIGNs
YXNzIFNlcnZpY2VXb3JrZXJUaHJlYWQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUg
ZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGUgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92
aWRlciopOworICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJl
YWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlv
bkNsaWVudD4mJiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgflNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSgpOwogCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRzJiBjbGllbnRz
KCkgeyByZXR1cm4gbV9jbGllbnRzLmdldCgpOyB9CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbiYgcmVnaXN0cmF0aW9uKCkgeyByZXR1cm4gbV9yZWdpc3RyYXRpb24uZ2V0KCk7IH0KICAg
ICBTZXJ2aWNlV29ya2VyJiBzZXJ2aWNlV29ya2VyKCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2Vy
LmdldCgpOyB9CkBAIC03OSwxMiArODIsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IFBhZ2UqIHNlcnZpY2VXb3JrZXJQYWdlKCk7CiAgICAgCiBwcml2YXRlOgotICAgIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtl
ckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwg
U2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VX
b3JrZXJEYXRhJiYsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+
JiYsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2lu
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgc3RkOjp1
bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZv
aWQgbm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKTsKIAogICAg
IFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OlNlcnZpY2VXb3JrZXI7IH0K
ICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoKSBjb25zdCB7IHJldHVybiAhbV9leHRlbmRlZEV2
ZW50cy5pc0VtcHR5KCk7IH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIE5vdGlm
aWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9uQ2xpZW50KCkgZmluYWwgeyByZXR1cm4gbV9ub3Rp
ZmljYXRpb25DbGllbnQuZ2V0KCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklE
PiBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorI2VuZGlm
CisKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9jb250ZXh0RGF0YTsKICAgICBSZWY8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4gbV9yZWdpc3RyYXRpb247CiAgICAgUmVmPFNlcnZp
Y2VXb3JrZXI+IG1fc2VydmljZVdvcmtlcjsKQEAgLTk0LDYgKzEwMiw4IEBAIHByaXZhdGU6CiAK
ICAgICB1aW50NjRfdCBtX2xhc3RSZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPj4gbV9wZW5kaW5nU2tpcFdhaXRpbmdQ
cm9taXNlczsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiBtX25vdGlmaWNhdGlvbkNsaWVudDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggMjYw
ZGJiZDNlNjYyLi44YzgxYzdiMTA3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIGEgdmFsaWQgV29ya2VyT2Jq
ZWN0UHJveHkKIC8vIEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCi1zdGF0aWMgV29y
a2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiBjb250ZXh0RGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJl
YWRNb2RlIHdvcmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdz
VmFsdWVzKQorc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJz
KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEsIFN0cmluZyYmIHVz
ZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0aW5n
czo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewog
ICAgIHJldHVybiB7CiAgICAgICAgIGNvbnRleHREYXRhLnNjcmlwdFVSTCwKQEAgLTkyLDEyICs5
MiwxMyBAQCBzdGF0aWMgV29ya2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMo
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJgogICAgICAgICBjb250ZXh0RGF0YS53b3Jr
ZXJUeXBlLAogICAgICAgICBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwKICAgICAgICAg
c2V0dGluZ3NWYWx1ZXMsCi0gICAgICAgIHdvcmtlclRocmVhZE1vZGUKKyAgICAgICAgd29ya2Vy
VGhyZWFkTW9kZSwKKyAgICAgICAgc2Vzc2lvbklECiAgICAgfTsKIH0KIAotU2VydmljZVdvcmtl
clRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBj
b250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2Vy
QWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0dGluZ3M6
OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwg
V29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3Zp
ZGVyKQotICAgIDogV29ya2VyVGhyZWFkKGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb250ZXh0
RGF0YSwgV1RGTW92ZSh1c2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBzZXR0aW5nc1ZhbHVl
cyksIGNvbnRleHREYXRhLnNjcmlwdCwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
OjpOb3JtYWwsIGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJp
dHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlND
OjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKK1NlcnZpY2VXb3JrZXJUaHJlYWQ6
OlNlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERh
dGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBX
b3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMm
IHNldHRpbmdzVmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRl
YnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
KiBpZGJDb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgc3Rk
Ojp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRpb25DbGllbnQsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICA6IFdvcmtlclRocmVhZChnZW5lcmF0ZVdvcmtl
clBhcmFtZXRlcnMoY29udGV4dERhdGEsIFdURk1vdmUodXNlckFnZW50KSwgd29ya2VyVGhyZWFk
TW9kZSwgc2V0dGluZ3NWYWx1ZXMsIHNlc3Npb25JRCksIGNvbnRleHREYXRhLnNjcmlwdCwgbG9h
ZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
aGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNvbnRleHREYXRhLnJlZ2lz
dHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVj
dGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVu
YWJsZWQoKSkKICAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoY29udGV4dERhdGEuc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgLCBtX2pvYkRhdGFJZGVudGlmaWVyKGNvbnRleHRE
YXRhLmpvYkRhdGFJZGVudGlmaWVyKQogICAgICwgbV9jb250ZXh0RGF0YShjcm9zc1RocmVhZENv
cHkoV1RGTW92ZShjb250ZXh0RGF0YSkpKQpAQCAtMTA1LDYgKzEwNiw3IEBAIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYg
Y29udGV4dERhdGEsCiAgICAgLCBtX3dvcmtlck9iamVjdFByb3h5KER1bW15U2VydmljZVdvcmtl
clRocmVhZFByb3h5OjpzaGFyZWQoKSkKICAgICAsIG1faGVhcnRCZWF0VGltZW91dChzZXR0aW5n
c1ZhbHVlcy5zaG91bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0ID8gaGVhcnRCZWF0VGlt
ZW91dEZvclRlc3QgOiBoZWFydEJlYXRUaW1lb3V0KQogICAgICwgbV9oZWFydEJlYXRUaW1lciB7
ICp0aGlzLCAmU2VydmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJlZCB9CisgICAg
LCBtX25vdGlmaWNhdGlvbkNsaWVudChXVEZNb3ZlKG5vdGlmaWNhdGlvbkNsaWVudCkpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7CkBAIC0x
MTUsNyArMTE3LDggQEAgU2VydmljZVdvcmtlclRocmVhZDo6flNlcnZpY2VXb3JrZXJUaHJlYWQo
KSA9IGRlZmF1bHQ7CiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9y
aWdpbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRleHREYXRhKTsKLSAgICByZXR1cm4g
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoKnN0ZDo6ZXhjaGFuZ2UobV9jb250ZXh0
RGF0YSwgc3RkOjpudWxsb3B0KSwgKnN0ZDo6ZXhjaGFuZ2UobV93b3JrZXJEYXRhLCBzdGQ6Om51
bGxvcHQpLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdURk1vdmUodG9wT3JpZ2lu
KSwgaWRiQ29ubmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKHBhcmFtcy5zZXNzaW9uSUQpOworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU6OmNyZWF0ZSgqc3RkOjpleGNoYW5nZShtX2NvbnRleHREYXRhLCBzdGQ6Om51bGxvcHQp
LCAqc3RkOjpleGNoYW5nZShtX3dvcmtlckRhdGEsIHN0ZDo6bnVsbG9wdCksIHBhcmFtcywgV1RG
TW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBpZGJDb25uZWN0aW9uUHJv
eHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgV1RGTW92ZShtX25vdGlmaWNhdGlvbkNsaWVudCksICpw
YXJhbXMuc2Vzc2lvbklEKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVu
dExvb3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDg4YjY1ZGU4MDMwYS4uNzU2NmI0
ZDRhOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQu
aCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgiCkBAIC04NSw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkV2ZW50
TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VX
b3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRh
JiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0dGluZ3M6
OlZhbHVlcyYsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBT
ZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUs
IGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVn
Z2VyUHJveHkmLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVy
Kiwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiwgUEFMOjpTZXNzaW9uSUQp
OwogCiAgICAgQVNDSUlMaXRlcmFsIHRocmVhZE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
V2ViQ29yZTogU2VydmljZVdvcmtlciJfczsgfQogICAgIHZvaWQgZmluaXNoZWRFdmFsdWF0aW5n
U2NyaXB0KCkgZmluYWw7CkBAIC0xMTksNiArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3RleHByIFNlY29uZHMgaGVhcnRCZWF0VGltZW91dEZvclRlc3QgeyAxX3MgfTsKICAgICBT
ZWNvbmRzIG1faGVhcnRCZWF0VGltZW91dCB7IGhlYXJ0QmVhdFRpbWVvdXQgfTsKICAgICBUaW1l
ciBtX2hlYXJ0QmVhdFRpbWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGll
bnQ+IG1fbm90aWZpY2F0aW9uQ2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggNGNlNzRlMGNiYThmLi5h
OTRlNmQxZTc2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAt
NjIsMTMgKzYyLDEzIEBAIHN0YXRpYyBIYXNoU2V0PFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSo+
JiBhbGxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveGllcygpCiAgICAgcmV0dXJuIHNldDsKIH0KIAot
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoVW5pcXVl
UmVmPFBhZ2U+JiYgcGFnZSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEs
IFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3Jr
ZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNo
ZVN0b3JhZ2VQcm92aWRlcikKK1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtl
clRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmIHBhZ2UsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIFN0cmlu
ZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBDYWNoZVN0
b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxOb3Rp
ZmljYXRpb25DbGllbnQ+JiYgbm90aWZpY2F0aW9uQ2xpZW50KQogICAgIDogbV9wYWdlKFdURk1v
dmUocGFnZSkpCiAgICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50
KCkpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLCBtX3JlbW90ZURlYnVnZ2Fi
bGUobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGNvbnRleHREYXRh
KSkKICNlbmRpZgotICAgICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RG
TW92ZSh1c2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBtX2RvY3VtZW50LT5zZXR0aW5nc1Zh
bHVlcygpLCAqdGhpcywgKnRoaXMsIGlkYkNvbm5lY3Rpb25Qcm94eShtX2RvY3VtZW50KSwgbV9k
b2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSkpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJUaHJlYWQo
U2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKFdURk1vdmUoY29udGV4dERhdGEpLCBXVEZNb3Zl
KHdvcmtlckRhdGEpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHdvcmtlclRocmVhZE1vZGUsIG1fZG9j
dW1lbnQtPnNldHRpbmdzVmFsdWVzKCksICp0aGlzLCAqdGhpcywgaWRiQ29ubmVjdGlvblByb3h5
KG1fZG9jdW1lbnQpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigpLCBXVEZNb3ZlKG5vdGlm
aWNhdGlvbkNsaWVudCksIG1fcGFnZS0+c2Vzc2lvbklEKCkpKQogICAgICwgbV9jYWNoZVN0b3Jh
Z2VQcm92aWRlcihjYWNoZVN0b3JhZ2VQcm92aWRlcikKICAgICAsIG1faW5zcGVjdG9yUHJveHko
KnRoaXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDliODM2Yjcz
ZjgwOS4uMGE0YmM3ZmY0OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApA
QCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JU
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwg
V29ya2VyVGhyZWFkTW9kZSwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdl
bnQsIFdvcmtlclRocmVhZE1vZGUsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNk
MGExNWQ5YjlkZC4uOTNlNzQzOGRiNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIy
LTAyLTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBOb3Rp
ZmljYXRpb24gcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246Omluc3RhbGxTZXJ2aWNlV29ya2VyKToKKwogMjAyMi0wMi0wNCAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5n
IHIyODkxMjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmE3ZmRj
N2RlMDU5Li5mZjExNjk1MmNlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCiAj
aW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNs
aWVudC5oIgorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbmNsdWRlICJXZWJQ
cmVmZXJlbmNlc1N0b3JlLmgiCkBAIC0xNDcsNyArMTQ4LDkgQEAgdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlckNvbnRl
eHREYXQKICAgICAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
c3RhdGljX2Nhc3Q8U3RvcmFnZUJsb2NraW5nUG9saWN5PihtX3ByZWZlcmVuY2VzU3RvcmUtPmdl
dFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xp
Y3lLZXkoKSkpKTsKICAgICB9CiAgICAgcGFnZS0+c2V0dXBGb3JSZW1vdGVXb3JrZXIoY29udGV4
dERhdGEuc2NyaXB0VVJMLCBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigp
LCBjb250ZXh0RGF0YS5yZWZlcnJlclBvbGljeSk7Ci0gICAgYXV0byBzZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2Up
LCBXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZShlZmZl
Y3RpdmVVc2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpKTsKKworICAgIGF1dG8gbm90aWZpY2F0aW9uQ2xpZW50
ID0gbWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DbGllbnQ+KG51bGxwdHIpOworICAgIGF1dG8g
c2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVh
dGUoV1RGTW92ZShwYWdlKSwgV1RGTW92ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0
YSksIFdURk1vdmUoZWZmZWN0aXZlVXNlckFnZW50KSwgd29ya2VyVGhyZWFkTW9kZSwgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSwgV1RGTW92ZShub3RpZmlj
YXRpb25DbGllbnQpKTsKIAogICAgIGlmIChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkK
ICAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKTsK
</data>
<flag name="commit-queue"
          id="477526"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450966</attachid>
            <date>2022-02-04 19:41:42 -0800</date>
            <delta_ts>2022-02-04 20:01:46 -0800</delta_ts>
            <desc>EWS v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34769</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDk5NTVlMmNkMjEuLmM2NjNlNTdkM2NkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY2IEBACisyMDIyLTAyLTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBOb3RpZmljYXRpb24gcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjE2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoTm8gYmVoYXZpb3Ig
Y2hhbmdlKQorICAgICAgICAKKyAgICAgICAgU29tZSAibm8gYmVoYXZpb3IgY2hhbmdlIiByZWZh
Y3RvcnMgYnJva2VuIG91dCBmcm9tIGFuIHVwY29taW5nIGxhcmdlciBwYXRjaCwgaW5jbHVkaW5n
OgorICAgICAgICAtIE1ha2UgTm90aWZpY2F0aW9uIG9iamVjdHMgcmVsaWFudCBvbiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IGluc3RlYWQgb2YgRG9jdW1lbnQKKyAgICAgICAgLSBHaXZlIHRoZW0g
YSBkaXJlY3QgcGF0aCB0byBhIE5vdGlmaWNhdGlvbkNsaWVudCBpbnN0ZWFkIG9mIGhhdmluZyB0
byBnbyB0aHJvdWdoIGEgUGFnZSdzIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgLSBH
aXZlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQncyBhIHNlc3Npb25JRCgpIGFjY2Vzc29yIGZvciBm
dXR1cmUgdXNlCisgICAgICAgIC0gU29tZSBOb3RpZmljYXRpb24gb2JqZWN0IHRocmVhZGluZyBo
YXJkZW5pbmcKKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbGllbnRGcm9tQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZG9jdW1lbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNsaWVudC5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE6OmRlY29k
ZSk6CisgICAgICAgIAorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6bm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bm90
aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnNlc3Npb25JRCBjb25zdCk6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
VGhyZWFkLmg6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpt
X25vdGlmaWNhdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTA5OC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHAKaW5kZXggZWM0YTY4ODU2NmQ0Li42ODViMWU0ZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNSwxMiArMzUsMTAgQEAKIAogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
V2luZG93RXZlbnRMb29wLmgiCkBAIC01Miw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE5vdGlmaWNhdGlvbik7CiAKLVJlZjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQorUmVmPE5vdGlmaWNhdGlvbj4g
Tm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIG5v
dGlmaWNhdGlvbiA9IGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlLCBv
cHRpb25zKSk7CiAgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTYwLDE3
ICs1OCwyNCBAQCBSZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShEb2N1bWVu
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgYwogICAgIHJldHVybiBub3RpZmljYXRp
b247CiB9CiAKLU5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKLSAgICA6IEFjdGl2
ZURPTU9iamVjdChkb2N1bWVudCkKLSAgICAsIG1fdGl0bGUodGl0bGUpCitOb3RpZmljYXRpb246
Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KCZjb250ZXh0KQorICAgICwgbV90aXRsZSh0aXRsZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1f
ZGlyZWN0aW9uKG9wdGlvbnMuZGlyKQotICAgICwgbV9sYW5nKG9wdGlvbnMubGFuZykKLSAgICAs
IG1fYm9keShvcHRpb25zLmJvZHkpCi0gICAgLCBtX3RhZyhvcHRpb25zLnRhZykKKyAgICAsIG1f
bGFuZyhvcHRpb25zLmxhbmcuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX2JvZHkob3B0aW9ucy5i
b2R5Lmlzb2xhdGVkQ29weSgpKQorICAgICwgbV90YWcob3B0aW9ucy50YWcuaXNvbGF0ZWRDb3B5
KCkpCiAgICAgLCBtX3N0YXRlKElkbGUpCiB7CisgICAgaWYgKGNvbnRleHQuaXNEb2N1bWVudCgp
KQorICAgICAgICBtX25vdGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9j
dW1lbnQ7CisgICAgZWxzZSBpZiAoY29udGV4dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
KQorICAgICAgICBtX25vdGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6U2Vy
dmljZVdvcmtlcjsKKyAgICBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBp
Y29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwob3B0aW9ucy5pY29uKTsKKyAgICAgICAgYXV0
byBpY29uVVJMID0gY29udGV4dC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOwogICAgICAgICBp
ZiAoaWNvblVSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBtX2ljb24gPSBpY29uVVJMOwogICAg
IH0KQEAgLTkyLDE3ICs5NywxNSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgaWYg
KG1fc3RhdGUgIT0gSWRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogcGFnZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCisgICAgYXV0byogY2xpZW50ID0gY2xp
ZW50RnJvbUNvbnRleHQoKTsKKyAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byYgY2xpZW50ID0gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xp
ZW50KCk7Ci0KLSAgICBpZiAoY2xpZW50LmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpICE9IFBlcm1pc3Npb246OkdyYW50ZWQpIHsKKyAgICBpZiAoY2xpZW50LT5jaGVj
a1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSAhPSBQZXJtaXNzaW9uOjpHcmFu
dGVkKSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmIChjbGllbnQuc2hvdygqdGhpcykpCisgICAgaWYgKGNsaWVudC0+c2hvdygq
dGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogfQogCkBAIC0xMTIsOCArMTE1LDgg
QEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKICAgICBjYXNlIElkbGU6CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU2hvd2luZzogewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKSkKLSAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20o
cGFnZSktPmNsaWVudCgpLmNhbmNlbCgqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiBjbGllbnQg
PSBjbGllbnRGcm9tQ29udGV4dCgpKQorICAgICAgICAgICAgY2xpZW50LT5jYW5jZWwoKnRoaXMp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDbG9zZWQ6CkBAIC0xMjEsOSArMTI0
LDExIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgfQogfQogCi1Eb2N1bWVudCog
Tm90aWZpY2F0aW9uOjpkb2N1bWVudCgpIGNvbnN0CitOb3RpZmljYXRpb25DbGllbnQqIE5vdGlm
aWNhdGlvbjo6Y2xpZW50RnJvbUNvbnRleHQoKQogewotICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPm5vdGlm
aWNhdGlvbkNsaWVudCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBO
b3RpZmljYXRpb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAtMTM1LDggKzE0MCw4
IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdG9wKCkKIHsKICAgICBBY3RpdmVET01PYmplY3Q6OnN0
b3AoKTsKIAotICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQoKnRoaXMpOworICAgIGlmIChhdXRvKiBjbGllbnQgPSBjbGllbnRG
cm9tQ29udGV4dCgpKQorICAgICAgICBjbGllbnQtPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3ll
ZCgqdGhpcyk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24pCkBAIC0xNzIsMTkgKzE3NywyMiBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hD
bG9zZUV2ZW50KCkKIAogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCgpCiB7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25T
b3VyY2UgPT0gTm90aWZpY2F0aW9uU291cmNlOjpEb2N1bWVudCk7CisKICAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLWF1dG8gTm90aWZpY2F0aW9uOjpwZXJtaXNz
aW9uKERvY3VtZW50JiBkb2N1bWVudCkgLT4gUGVybWlzc2lvbgorYXV0byBOb3RpZmljYXRpb246
OnBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgLT4gUGVybWlzc2lv
bgogewotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIGF1dG8qIGNsaWVudCA9IGNvbnRleHQubm90aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybiBQZXJtaXNzaW9uOjpEZWZhdWx0OwogCi0gICAgaWYg
KCFkb2N1bWVudC5pc1NlY3VyZUNvbnRleHQoKSkKKyAgICBpZiAoIWNvbnRleHQuaXNTZWN1cmVD
b250ZXh0KCkpCiAgICAgICAgIHJldHVybiBQZXJtaXNzaW9uOjpEZW5pZWQ7CiAKLSAgICByZXR1
cm4gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpLT5jbGllbnQo
KS5jaGVja1Blcm1pc3Npb24oJmRvY3VtZW50KTsKKyAgICByZXR1cm4gY2xpZW50LT5jaGVja1Bl
cm1pc3Npb24oJmNvbnRleHQpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1p
c3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrPiYmIGNhbGxiYWNrLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0x
OTcsOCArMjA1LDggQEAgdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm0KICAgICAgICAgfSk7CiAgICAg
fTsKIAotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIGF1dG8qIGNsaWVudCA9IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmPihk
b2N1bWVudCkubm90aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCiAgICAgICAg
IHJldHVybiByZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrKFBlcm1pc3Npb246OkRlbmllZCk7CiAK
ICAgICBpZiAoIWRvY3VtZW50LmlzU2VjdXJlQ29udGV4dCgpKSB7CkBAIC0yMDYsNyArMjE0LDcg
QEAgdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm0KICAgICAgICAgcmV0dXJuIHJlc29sdmVQcm9taXNl
QW5kQ2FsbGJhY2soUGVybWlzc2lvbjo6RGVuaWVkKTsKICAgICB9CiAKLSAgICBOb3RpZmljYXRp
b25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5yZXF1ZXN0UGVybWlzc2lvbihkb2N1
bWVudCwgV1RGTW92ZShyZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrKSk7CisgICAgY2xpZW50LT5y
ZXF1ZXN0UGVybWlzc2lvbihkb2N1bWVudCwgV1RGTW92ZShyZXNvbHZlUHJvbWlzZUFuZENhbGxi
YWNrKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgp
CkBAIC0yMjcsMTUgKzIzNSwxOSBAQCBib29sIE5vdGlmaWNhdGlvbjo6dmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0CiAKIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRh
KCkgY29uc3QKIHsKKyAgICBhdXRvIHNlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2Vzc2lvbklEKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2Vzc2lvbklEKTsKKwogICAgIHJl
dHVybiB7Ci0gICAgICAgIG1fdGl0bGUsCi0gICAgICAgIG1fYm9keSwKLSAgICAgICAgbV9pY29u
LnN0cmluZygpLAorICAgICAgICBtX3RpdGxlLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBtX2Jv
ZHkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIG1faWNvbi5zdHJpbmcoKS5pc29sYXRlZENvcHko
KSwKICAgICAgICAgbV90YWcsCiAgICAgICAgIG1fbGFuZywKICAgICAgICAgbV9kaXJlY3Rpb24s
Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSwKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBpZGVudGlmaWVyKCksCisg
ICAgICAgICpzZXNzaW9uSUQsCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGEwNzM0MTNmYWU4Yi4u
ZjRhOTNiZDYxMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQ
cm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CiBjbGFz
cyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiAKIHN0cnVjdCBOb3RpZmljYXRpb25E
YXRhOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB0YWc7CiAgICAg
ICAgIFN0cmluZyBpY29uOwogICAgIH07Ci0gICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb24+IGNy
ZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmKTsKKyAg
ICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7CiAgICAgCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CiAKQEAgLTg1LDcgKzg2LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5hbGl6ZSgpOwogCi0gICAgc3RhdGlj
IFBlcm1pc3Npb24gcGVybWlzc2lvbihEb2N1bWVudCYpOworICAgIHN0YXRpYyBQZXJtaXNzaW9u
IHBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIHJl
cXVlc3RQZXJtaXNzaW9uKERvY3VtZW50JiwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjaz4mJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTk2LDkgKzk3
LDkgQEAgcHVibGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKIAog
cHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb24oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBPcHRpb25zJik7CisgICAgTm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7CiAKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZyb21D
b250ZXh0KCk7CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KIAogICAgIHZvaWQgc2hvd1Nvb24oKTsKQEAgLTEyNCw2ICsxMjUsMTIgQEAgcHJpdmF0
ZToKICAgICBlbnVtIFN0YXRlIHsgSWRsZSwgU2hvd2luZywgQ2xvc2VkIH07CiAgICAgU3RhdGUg
bV9zdGF0ZSB7IElkbGUgfTsKICAgICBib29sIG1faGFzUmVsZXZhbnRFdmVudExpc3RlbmVyIHsg
ZmFsc2UgfTsKKworICAgIGVudW0gY2xhc3MgTm90aWZpY2F0aW9uU291cmNlIDogYm9vbCB7Cisg
ICAgICAgIERvY3VtZW50LAorICAgICAgICBTZXJ2aWNlV29ya2VyLAorICAgIH07CisgICAgTm90
aWZpY2F0aW9uU291cmNlIG1fbm90aWZpY2F0aW9uU291cmNlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDdhMTc4ZGZiODNkNy4uYThiMzBiMmYz
N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICAv
LyBDaGVja3MgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgcGVybWlzc2lvbi4KICAgICB2aXJ0dWFsIFBl
cm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CiAK
LXByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkRhdGEuaAppbmRleCA2NzRiY2IxZDdiMmYuLmJjZGRlM2MwNTg3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PG9wdGlvbmFsPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NSwxMiArNDYsMTMg
QEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3RyaW5nIG9yaWdpblN0cmluZzsKICAgICBVVUlEIG5v
dGlmaWNhdGlvbklEOworICAgIFBBTDo6U2Vzc2lvbklEIHNvdXJjZVNlc3Npb247CiB9OwogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBOb3RpZmljYXRpb25EYXRhOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwg
aWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8
PCBub3RpZmljYXRpb25JRDsKKyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVS
TCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8PCBub3Rp
ZmljYXRpb25JRCA8PCBzb3VyY2VTZXNzaW9uOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtOTYsNiArOTgsMTEgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3Rp
ZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW5vdGlmaWNh
dGlvbklEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4gc291cmNlU2Vzc2lvbjsKKyAgICBkZWNvZGVyID4+IHNvdXJjZVNl
c3Npb247CisgICAgaWYgKCFzb3VyY2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCiAgICAgcmV0dXJuIHsgewogICAgICAgICBXVEZNb3ZlKCp0aXRsZSksCiAgICAgICAg
IFdURk1vdmUoKmJvZHkpLApAQCAtMTA1LDYgKzExMiw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZp
Y2F0aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIFdURk1vdmUoKmRpcmVjdGlvbiksCiAgICAgICAgIFdURk1vdmUoKm9yaWdpblN0cmlu
ZyksCiAgICAgICAgIFdURk1vdmUoKm5vdGlmaWNhdGlvbklEKSwKKyAgICAgICAgV1RGTW92ZSgq
c291cmNlU2Vzc2lvbiksCiAgICAgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCBkZGE4MTlhMzQxODYuLjlkMTk4ZjczMjI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xNjAsNiArMTYwLDcgQEAKICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJO
b2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJOb2RlV2l0aEluZGV4LmgiCisjaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKICNpbmNs
dWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtOTA2
NCw2ICs5MDY1LDIzIEBAIHZvaWQgRG9jdW1lbnQ6OndoZW5WaXNpYmxlKEZ1bmN0aW9uPHZvaWQo
KT4mJiBjYWxsYmFjaykKICAgICBjYWxsYmFjaygpOwogfQogCitOb3RpZmljYXRpb25DbGllbnQq
IERvY3VtZW50Ojpub3RpZmljYXRpb25DbGllbnQoKQoreworICAgIGF1dG8qIHBhZ2UgPSB0aGlz
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiAmTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCk7Cit9
CisKK3N0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IERvY3VtZW50OjpzZXNzaW9uSUQoKSBj
b25zdAoreworICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQorICAgICAgICByZXR1
cm4gcGFnZS0+c2Vzc2lvbklEKCk7CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICN1bmRlZiBET0NVTUVOVF9SRUxFQVNFX0xPRwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCAzYThjNjNhZGY3ZTAuLjRkZDdkMzZjZTI0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTE3OTYsNiArMTc5Niw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRU
b0RvY3VtZW50c01hcCgpOwogICAgIHZvaWQgcmVtb3ZlRnJvbURvY3VtZW50c01hcCgpOwogCisg
ICAgTm90aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKKwog
ICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKIAogICAgIFVuaXF1ZVJl
ZjxRdWlya3M+IG1fcXVpcmtzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKaW5kZXggNTY5MzIxMzU0ZTNkLi5kMDAwZDU5ZDVhMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVz
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGFuZGxlVHlwZXMuaD4KKyNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC02OCw2ICs2
OSw3IEBAIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cDsKIGNsYXNzIEV2ZW50VGFyZ2V0OwogY2xh
c3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBOb3RpZmljYXRp
b25DbGllbnQ7CiBjbGFzcyBQZXJtaXNzaW9uQ29udHJvbGxlcjsKIGNsYXNzIFB1YmxpY1VSTE1h
bmFnZXI7CiBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwpAQCAtOTQsNiArOTYsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2hhZG93UmVh
bG1HbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzV29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApAQCAtMTEy
LDYgKzExNSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgU2V0dGluZ3M6OlZhbHVl
cyYgc2V0dGluZ3NWYWx1ZXMoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIE5vdGlmaWNhdGlv
bkNsaWVudCogbm90aWZpY2F0aW9uQ2xpZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZp
cnR1YWwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUV2YWwoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZVdl
YkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IDQ3ZDVjNGZiMWY5MS4uY2Y1MGMzNjhhZTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZs
YWdzLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTczLDYgKzc0LDcg
QEAgcHVibGljOgogICAgIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzOwogICAg
IFNldHRpbmdzOjpWYWx1ZXMgc2V0dGluZ3NWYWx1ZXM7CiAgICAgV29ya2VyVGhyZWFkTW9kZSB3
b3JrZXJUaHJlYWRNb2RlIHsgV29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkIH07Cisg
ICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEIHsgc3RkOjpudWxsb3B0
IH07CiAKICAgICBXb3JrZXJQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNjA3MWQ4NjgxYTljLi45MDRkNGZjODhjYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01MCwyMCArNTAsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KTsKIAotUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpjcmVhdGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZp
Y2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1z
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJl
YWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRl
cikKK1JlZjxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6Y3JlYXRlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNl
V29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFk
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIs
IHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYgbm90aWZpY2F0aW9uQ2xpZW50
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgYXV0byBzY29wZSA9IGFkb3B0UmVm
KCpuZXcgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIHsgV1RGTW92ZShjb250ZXh0RGF0YSksIFdU
Rk1vdmUod29ya2VyRGF0YSksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1v
dmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciB9KTsKKyAgICBh
dXRvIHNjb3BlID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgeyBXVEZN
b3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgcGFyYW1zLCBXVEZNb3ZlKG9y
aWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tl
dFByb3ZpZGVyLCBXVEZNb3ZlKG5vdGlmaWNhdGlvbkNsaWVudCksIHNlc3Npb25JRCB9KTsKICAg
ICBzY29wZS0+YXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMocGFyYW1z
LmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7CiAgICAgc2NvcGUtPm5vdGlm
eVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CiAgICAgcmV0dXJuIHNj
b3BlOwogfQogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtl
ckRhdGEmJiB3b3JrZXJEYXRhLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVm
PFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQorU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2Vy
RGF0YSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+
JiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9u
UHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPE5v
dGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRpb25DbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKICAgICA6IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGU6OlNlcnZp
Y2VXb3JrZXIsIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3Jp
Z2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikKICAgICAsIG1fY29udGV4dERh
dGEoV1RGTW92ZShjb250ZXh0RGF0YSkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqdGhpcywgbmF2aWdhdG9yKCkuc2VydmljZVdv
cmtlcigpLCBXVEZNb3ZlKG1fY29udGV4dERhdGEucmVnaXN0cmF0aW9uKSkpCiAgICAgLCBtX3Nl
cnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcjo6Z2V0T3JDcmVhdGUoKnRoaXMsIFdURk1vdmUod29y
a2VyRGF0YSkpKQogICAgICwgbV9jbGllbnRzKFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjcmVhdGUo
KSkKKyAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fbm90aWZpY2F0aW9uQ2xp
ZW50KFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
CmluZGV4IGZmMDI1YTI3ZTdiYi4uMDcwNzlmMTk1MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRl
ICJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKQEAgLTQ2LDEwICs0NywxMiBAQCBj
bGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
IGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJv
dmlkZXIqKTsKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRl
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBX
b3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhy
ZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRp
b25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIH5TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUoKTsKIAorICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50cyYgY2xpZW50
cygpIHsgcmV0dXJuIG1fY2xpZW50cy5nZXQoKTsgfQogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24mIHJlZ2lzdHJhdGlvbigpIHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uLmdldCgpOyB9CiAg
ICAgU2VydmljZVdvcmtlciYgc2VydmljZVdvcmtlcigpIHsgcmV0dXJuIG1fc2VydmljZVdvcmtl
ci5nZXQoKTsgfQpAQCAtNzksMTIgKzgyLDE1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBQYWdlKiBzZXJ2aWNlV29ya2VyUGFnZSgpOwogICAgIAogcHJpdmF0ZToKLSAgICBTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3Jr
ZXJEYXRhJiYsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYs
IFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CisgICAgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNl
V29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6
dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2
b2lkIG5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CiAKICAg
ICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpTZXJ2aWNlV29ya2VyOyB9
CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gIW1fZXh0ZW5kZWRF
dmVudHMuaXNFbXB0eSgpOyB9CiAKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlv
bkNsaWVudCgpIGZpbmFsIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2xpZW50LmdldCgpOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBt
X2NvbnRleHREYXRhOwogICAgIFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBtX3JlZ2lz
dHJhdGlvbjsKICAgICBSZWY8U2VydmljZVdvcmtlcj4gbV9zZXJ2aWNlV29ya2VyOwpAQCAtOTQs
NiArMTAwLDggQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fbGFzdFJlcXVlc3RJZGVudGlm
aWVyIHsgMCB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+
PiBtX3BlbmRpbmdTa2lwV2FpdGluZ1Byb21pc2VzOworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+IG1fbm90aWZp
Y2F0aW9uQ2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcAppbmRleCAyNjBkYmJkM2U2NjIuLjhjODFjN2IxMDdlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKIC8vIEZJWE1F
OiBVc2UgYSB2YWxpZCBXb3JrZXJPYmplY3RQcm94eQogLy8gRklYTUU6IFVzZSB2YWxpZCBydW50
aW1lIGZsYWdzCiAKLXN0YXRpYyBXb3JrZXJQYXJhbWV0ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1l
dGVycyhjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhLCBTdHJpbmcm
JiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0
dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMpCitzdGF0aWMgV29ya2VyUGFyYW1ldGVycyBn
ZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBj
b250ZXh0RGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRo
cmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgY29udGV4dERhdGEu
c2NyaXB0VVJMLApAQCAtOTIsMTIgKzkyLDEzIEBAIHN0YXRpYyBXb3JrZXJQYXJhbWV0ZXJzIGdl
bmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmCiAg
ICAgICAgIGNvbnRleHREYXRhLndvcmtlclR5cGUsCiAgICAgICAgIEZldGNoUmVxdWVzdENyZWRl
bnRpYWxzOjpPbWl0LAogICAgICAgICBzZXR0aW5nc1ZhbHVlcywKLSAgICAgICAgd29ya2VyVGhy
ZWFkTW9kZQorICAgICAgICB3b3JrZXJUaHJlYWRNb2RlLAorICAgICAgICBzZXNzaW9uSUQKICAg
ICB9OwogfQogCi1TZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdv
cmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJl
YWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9h
ZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2Nr
ZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJUaHJlYWQoZ2VuZXJhdGVX
b3JrZXJQYXJhbWV0ZXJzKGNvbnRleHREYXRhLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHdvcmtlclRo
cmVhZE1vZGUsIHNldHRpbmdzVmFsdWVzKSwgY29udGV4dERhdGEuc2NyaXB0LCBsb2FkZXJQcm94
eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgp
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY29udGV4dERhdGEucmVnaXN0cmF0aW9u
LmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJv
eHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgp
KQorU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRh
LCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwg
Y29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5
JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlk
ZXIqIHNvY2tldFByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYm
IG5vdGlmaWNhdGlvbkNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIDogV29y
a2VyVGhyZWFkKGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb250ZXh0RGF0YSwgV1RGTW92ZSh1
c2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBzZXR0aW5nc1ZhbHVlcywgc2Vzc2lvbklEKSwg
Y29udGV4dERhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5v
cm1hbCwgY29udGV4dERhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9y
aWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1
bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9zZXJ2aWNlV29ya2VySWRl
bnRpZmllcihjb250ZXh0RGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAsIG1fam9i
RGF0YUlkZW50aWZpZXIoY29udGV4dERhdGEuam9iRGF0YUlkZW50aWZpZXIpCiAgICAgLCBtX2Nv
bnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNvbnRleHREYXRhKSkpCkBAIC0xMDUs
NiArMTA2LDcgQEAgU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwKICAgICAsIG1fd29ya2VyT2JqZWN0
UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpKQogICAgICwgbV9o
ZWFydEJlYXRUaW1lb3V0KHNldHRpbmdzVmFsdWVzLnNob3VsZFVzZVNlcnZpY2VXb3JrZXJTaG9y
dFRpbWVvdXQgPyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVzdCA6IGhlYXJ0QmVhdFRpbWVvdXQpCiAg
ICAgLCBtX2hlYXJ0QmVhdFRpbWVyIHsgKnRoaXMsICZTZXJ2aWNlV29ya2VyVGhyZWFkOjpoZWFy
dEJlYXRUaW1lckZpcmVkIH0KKyAgICAsIG1fbm90aWZpY2F0aW9uQ2xpZW50KFdURk1vdmUobm90
aWZpY2F0aW9uQ2xpZW50KSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEF0
b21TdHJpbmc6OmluaXQoKTsKQEAgLTExNSw3ICsxMTcsOCBAQCBTZXJ2aWNlV29ya2VyVGhyZWFk
Ojp+U2VydmljZVdvcmtlclRocmVhZCgpID0gZGVmYXVsdDsKIFJlZjxXb3JrZXJHbG9iYWxTY29w
ZT4gU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgV29y
a2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBSZWY8
U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29u
dGV4dERhdGEpOwotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSgq
c3RkOjpleGNoYW5nZShtX2NvbnRleHREYXRhLCBzdGQ6Om51bGxvcHQpLCAqc3RkOjpleGNoYW5n
ZShtX3dvcmtlckRhdGEsIHN0ZDo6bnVsbG9wdCksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCAq
dGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJv
dmlkZXIoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQocGFyYW1zLnNlc3Npb25JRCk7CisgICAgcmV0
dXJuIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKCpzdGQ6OmV4Y2hhbmdlKG1fY29u
dGV4dERhdGEsIHN0ZDo6bnVsbG9wdCksICpzdGQ6OmV4Y2hhbmdlKG1fd29ya2VyRGF0YSwgc3Rk
OjpudWxsb3B0KSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksICp0aGlzLCBXVEZNb3ZlKHRvcE9y
aWdpbiksIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpLCBXVEZNb3ZlKG1f
bm90aWZpY2F0aW9uQ2xpZW50KSwgKnBhcmFtcy5zZXNzaW9uSUQpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5k
ZXggODhiNjVkZTgwMzBhLi43NTY2YjRkNGE5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1
ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb25EYXRh
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKQEAgLTg1LDcgKzg2LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgcnVuRXZlbnRMb29wKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJl
YWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3Jr
ZXJEZWJ1Z2dlclByb3h5JiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQ
cm92aWRlciopOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWQoU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJB
Z2VudCwgV29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYsIFdvcmtlckxv
YWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xp
ZW50PiYmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBBU0NJSUxpdGVyYWwgdGhyZWFkTmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJDb3JlOiBTZXJ2aWNlV29ya2VyIl9zOyB9CiAgICAg
dm9pZCBmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKSBmaW5hbDsKQEAgLTExOSw2ICsxMjAsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBoZWFydEJlYXRUaW1lb3V0
Rm9yVGVzdCB7IDFfcyB9OwogICAgIFNlY29uZHMgbV9oZWFydEJlYXRUaW1lb3V0IHsgaGVhcnRC
ZWF0VGltZW91dCB9OwogICAgIFRpbWVyIG1faGVhcnRCZWF0VGltZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4gbV9ub3RpZmljYXRpb25DbGllbnQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cAppbmRleCA0Y2U3NGUwY2JhOGYuLmE5NGU2ZDFlNzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgc3RhdGljIEhhc2hTZXQ8U2Vy
dmljZVdvcmtlclRocmVhZFByb3h5Kj4mIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkK
ICAgICByZXR1cm4gc2V0OwogfQogCi1TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBT
dHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgQ2Fj
aGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorU2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYgcGFn
ZSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJE
YXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlIHdv
cmtlclRocmVhZE1vZGUsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRl
ciwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRpb25DbGll
bnQpCiAgICAgOiBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKICAgICAsIG1fZG9jdW1lbnQoKm1fcGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ICAgICAsIG1fcmVtb3RlRGVidWdnYWJsZShtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJEZWJ1Z2dh
YmxlPigqdGhpcywgY29udGV4dERhdGEpKQogI2VuZGlmCi0gICAgLCBtX3NlcnZpY2VXb3JrZXJU
aHJlYWQoU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKFdURk1vdmUoY29udGV4dERhdGEpLCBX
VEZNb3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHdvcmtlclRocmVhZE1vZGUs
IG1fZG9jdW1lbnQtPnNldHRpbmdzVmFsdWVzKCksICp0aGlzLCAqdGhpcywgaWRiQ29ubmVjdGlv
blByb3h5KG1fZG9jdW1lbnQpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigpKSkKKyAgICAs
IG1fc2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoV1RGTW92
ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUodXNlckFnZW50KSwg
d29ya2VyVGhyZWFkTW9kZSwgbV9kb2N1bWVudC0+c2V0dGluZ3NWYWx1ZXMoKSwgKnRoaXMsICp0
aGlzLCBpZGJDb25uZWN0aW9uUHJveHkobV9kb2N1bWVudCksIG1fZG9jdW1lbnQtPnNvY2tldFBy
b3ZpZGVyKCksIFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSwgbV9wYWdlLT5zZXNzaW9uSUQo
KSkpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3ZpZGVyKQog
ICAgICwgbV9pbnNwZWN0b3JQcm94eSgqdGhpcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmgKaW5kZXggOWI4MzZiNzNmODA5Li4wYTRiYzdmZjQ5NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCk7CiAKIHByaXZh
dGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJl
ZjxQYWdlPiYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEm
JiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlLCBDYWNoZVN0b3JhZ2VQcm92
aWRlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShVbmlx
dWVSZWY8UGFnZT4mJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJE
YXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSwgQ2FjaGVTdG9yYWdl
UHJvdmlkZXImLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9vbCBpc09u
TGluZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggY2QwYTE1ZDliOWRkLi45M2U3NDM4ZGI0YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIE5vdGlmaWNhdGlvbiByZWZhY3RvcmluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorCiAyMDIy
LTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTEyNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAppbmRleCA2YTdmZGM3ZGUwNTkuLmZmMTE2OTUyY2U4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldl
YkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudExvYWRlci5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2Vz
S2V5cy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKQEAgLTE0Nyw3ICsxNDgs
OSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdv
cmtlcihTZXJ2aWNlV29ya2VyQ29udGV4dERhdAogICAgICAgICBwYWdlLT5zZXR0aW5ncygpLnNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzdGF0aWNfY2FzdDxTdG9yYWdlQmxvY2tpbmdQb2xpY3k+
KG1fcHJlZmVyZW5jZXNTdG9yZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OnN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSgpKSkpOwogICAgIH0KICAgICBwYWdlLT5zZXR1
cEZvclJlbW90ZVdvcmtlcihjb250ZXh0RGF0YS5zY3JpcHRVUkwsIGNvbnRleHREYXRhLnJlZ2lz
dHJhdGlvbi5rZXkudG9wT3JpZ2luKCksIGNvbnRleHREYXRhLnJlZmVycmVyUG9saWN5KTsKLSAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlKFdURk1vdmUocGFnZSksIFdURk1vdmUoY29udGV4dERhdGEpLCBXVEZNb3ZlKHdv
cmtlckRhdGEpLCBXVEZNb3ZlKGVmZmVjdGl2ZVVzZXJBZ2VudCksIHdvcmtlclRocmVhZE1vZGUs
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOworCisgICAg
YXV0byBub3RpZmljYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNsaWVu
dD4obnVsbHB0cik7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBXVEZNb3ZlKGNvbnRleHRE
YXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZShlZmZlY3RpdmVVc2VyQWdlbnQpLCB3
b3JrZXJUaHJlYWRNb2RlLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92
aWRlcigpLCBXVEZNb3ZlKG5vdGlmaWNhdGlvbkNsaWVudCkpOwogCiAgICAgaWYgKGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogICAgICAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkt
PnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkID09IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpOwo=
</data>
<flag name="commit-queue"
          id="477527"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450967</attachid>
            <date>2022-02-04 19:55:47 -0800</date>
            <delta_ts>2022-02-04 20:30:23 -0800</delta_ts>
            <desc>EWS v5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34832</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDk5NTVlMmNkMjEuLmM2NjNlNTdkM2NkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY2IEBACisyMDIyLTAyLTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBOb3RpZmljYXRpb24gcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjE2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoTm8gYmVoYXZpb3Ig
Y2hhbmdlKQorICAgICAgICAKKyAgICAgICAgU29tZSAibm8gYmVoYXZpb3IgY2hhbmdlIiByZWZh
Y3RvcnMgYnJva2VuIG91dCBmcm9tIGFuIHVwY29taW5nIGxhcmdlciBwYXRjaCwgaW5jbHVkaW5n
OgorICAgICAgICAtIE1ha2UgTm90aWZpY2F0aW9uIG9iamVjdHMgcmVsaWFudCBvbiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IGluc3RlYWQgb2YgRG9jdW1lbnQKKyAgICAgICAgLSBHaXZlIHRoZW0g
YSBkaXJlY3QgcGF0aCB0byBhIE5vdGlmaWNhdGlvbkNsaWVudCBpbnN0ZWFkIG9mIGhhdmluZyB0
byBnbyB0aHJvdWdoIGEgUGFnZSdzIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgLSBH
aXZlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQncyBhIHNlc3Npb25JRCgpIGFjY2Vzc29yIGZvciBm
dXR1cmUgdXNlCisgICAgICAgIC0gU29tZSBOb3RpZmljYXRpb24gb2JqZWN0IHRocmVhZGluZyBo
YXJkZW5pbmcKKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjbGllbnRGcm9tQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjpkaXNwYXRjaEVycm9yRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpwZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpk
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZG9jdW1lbnQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNsaWVudC5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE6OmRlY29k
ZSk6CisgICAgICAgIAorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6bm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bm90
aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnNlc3Npb25JRCBjb25zdCk6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
VGhyZWFkLmg6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpt
X25vdGlmaWNhdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTA5OC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHAKaW5kZXggZWM0YTY4ODU2NmQ0Li42ODViMWU0ZDFhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNSwxMiArMzUsMTAgQEAKIAogI2lu
Y2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgotI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25EYXRhLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAi
V2luZG93RXZlbnRMb29wLmgiCkBAIC01Miw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE5vdGlmaWNhdGlvbik7CiAKLVJlZjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQorUmVmPE5vdGlmaWNhdGlvbj4g
Tm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIG5v
dGlmaWNhdGlvbiA9IGFkb3B0UmVmKCpuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxlLCBv
cHRpb25zKSk7CiAgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTYwLDE3
ICs1OCwyNCBAQCBSZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNyZWF0ZShEb2N1bWVu
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgYwogICAgIHJldHVybiBub3RpZmljYXRp
b247CiB9CiAKLU5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYgb3B0aW9ucykKLSAgICA6IEFjdGl2
ZURPTU9iamVjdChkb2N1bWVudCkKLSAgICAsIG1fdGl0bGUodGl0bGUpCitOb3RpZmljYXRpb246
Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KCZjb250ZXh0KQorICAgICwgbV90aXRsZSh0aXRsZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1f
ZGlyZWN0aW9uKG9wdGlvbnMuZGlyKQotICAgICwgbV9sYW5nKG9wdGlvbnMubGFuZykKLSAgICAs
IG1fYm9keShvcHRpb25zLmJvZHkpCi0gICAgLCBtX3RhZyhvcHRpb25zLnRhZykKKyAgICAsIG1f
bGFuZyhvcHRpb25zLmxhbmcuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX2JvZHkob3B0aW9ucy5i
b2R5Lmlzb2xhdGVkQ29weSgpKQorICAgICwgbV90YWcob3B0aW9ucy50YWcuaXNvbGF0ZWRDb3B5
KCkpCiAgICAgLCBtX3N0YXRlKElkbGUpCiB7CisgICAgaWYgKGNvbnRleHQuaXNEb2N1bWVudCgp
KQorICAgICAgICBtX25vdGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9j
dW1lbnQ7CisgICAgZWxzZSBpZiAoY29udGV4dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
KQorICAgICAgICBtX25vdGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6U2Vy
dmljZVdvcmtlcjsKKyAgICBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBp
Y29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwob3B0aW9ucy5pY29uKTsKKyAgICAgICAgYXV0
byBpY29uVVJMID0gY29udGV4dC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOwogICAgICAgICBp
ZiAoaWNvblVSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBtX2ljb24gPSBpY29uVVJMOwogICAg
IH0KQEAgLTkyLDE3ICs5NywxNSBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgaWYg
KG1fc3RhdGUgIT0gSWRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogcGFnZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCisgICAgYXV0byogY2xpZW50ID0gY2xp
ZW50RnJvbUNvbnRleHQoKTsKKyAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byYgY2xpZW50ID0gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xp
ZW50KCk7Ci0KLSAgICBpZiAoY2xpZW50LmNoZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpICE9IFBlcm1pc3Npb246OkdyYW50ZWQpIHsKKyAgICBpZiAoY2xpZW50LT5jaGVj
a1Blcm1pc3Npb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSAhPSBQZXJtaXNzaW9uOjpHcmFu
dGVkKSB7CiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmIChjbGllbnQuc2hvdygqdGhpcykpCisgICAgaWYgKGNsaWVudC0+c2hvdygq
dGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogfQogCkBAIC0xMTIsOCArMTE1LDgg
QEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKICAgICBjYXNlIElkbGU6CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU2hvd2luZzogewotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKSkKLSAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20o
cGFnZSktPmNsaWVudCgpLmNhbmNlbCgqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiBjbGllbnQg
PSBjbGllbnRGcm9tQ29udGV4dCgpKQorICAgICAgICAgICAgY2xpZW50LT5jYW5jZWwoKnRoaXMp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDbG9zZWQ6CkBAIC0xMjEsOSArMTI0
LDExIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgfQogfQogCi1Eb2N1bWVudCog
Tm90aWZpY2F0aW9uOjpkb2N1bWVudCgpIGNvbnN0CitOb3RpZmljYXRpb25DbGllbnQqIE5vdGlm
aWNhdGlvbjo6Y2xpZW50RnJvbUNvbnRleHQoKQogewotICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPm5vdGlm
aWNhdGlvbkNsaWVudCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBO
b3RpZmljYXRpb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAtMTM1LDggKzE0MCw4
IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdG9wKCkKIHsKICAgICBBY3RpdmVET01PYmplY3Q6OnN0
b3AoKTsKIAotICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQoKnRoaXMpOworICAgIGlmIChhdXRvKiBjbGllbnQgPSBjbGllbnRG
cm9tQ29udGV4dCgpKQorICAgICAgICBjbGllbnQtPm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3ll
ZCgqdGhpcyk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24pCkBAIC0xNzIsMTkgKzE3NywyMiBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hD
bG9zZUV2ZW50KCkKIAogdm9pZCBOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCgpCiB7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25T
b3VyY2UgPT0gTm90aWZpY2F0aW9uU291cmNlOjpEb2N1bWVudCk7CisKICAgICBxdWV1ZVRhc2tU
b0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKLWF1dG8gTm90aWZpY2F0aW9uOjpwZXJtaXNz
aW9uKERvY3VtZW50JiBkb2N1bWVudCkgLT4gUGVybWlzc2lvbgorYXV0byBOb3RpZmljYXRpb246
OnBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgLT4gUGVybWlzc2lv
bgogewotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIGF1dG8qIGNsaWVudCA9IGNvbnRleHQubm90aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYg
KCFjbGllbnQpCiAgICAgICAgIHJldHVybiBQZXJtaXNzaW9uOjpEZWZhdWx0OwogCi0gICAgaWYg
KCFkb2N1bWVudC5pc1NlY3VyZUNvbnRleHQoKSkKKyAgICBpZiAoIWNvbnRleHQuaXNTZWN1cmVD
b250ZXh0KCkpCiAgICAgICAgIHJldHVybiBQZXJtaXNzaW9uOjpEZW5pZWQ7CiAKLSAgICByZXR1
cm4gTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudC5wYWdlKCkpLT5jbGllbnQo
KS5jaGVja1Blcm1pc3Npb24oJmRvY3VtZW50KTsKKyAgICByZXR1cm4gY2xpZW50LT5jaGVja1Bl
cm1pc3Npb24oJmNvbnRleHQpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1p
c3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNh
bGxiYWNrPiYmIGNhbGxiYWNrLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0x
OTcsOCArMjA1LDggQEAgdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm0KICAgICAgICAgfSk7CiAgICAg
fTsKIAotICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIGF1dG8qIGNsaWVudCA9IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmPihk
b2N1bWVudCkubm90aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpCiAgICAgICAg
IHJldHVybiByZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrKFBlcm1pc3Npb246OkRlbmllZCk7CiAK
ICAgICBpZiAoIWRvY3VtZW50LmlzU2VjdXJlQ29udGV4dCgpKSB7CkBAIC0yMDYsNyArMjE0LDcg
QEAgdm9pZCBOb3RpZmljYXRpb246OnJlcXVlc3RQZXJtaXNzaW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm0KICAgICAgICAgcmV0dXJuIHJlc29sdmVQcm9taXNl
QW5kQ2FsbGJhY2soUGVybWlzc2lvbjo6RGVuaWVkKTsKICAgICB9CiAKLSAgICBOb3RpZmljYXRp
b25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5yZXF1ZXN0UGVybWlzc2lvbihkb2N1
bWVudCwgV1RGTW92ZShyZXNvbHZlUHJvbWlzZUFuZENhbGxiYWNrKSk7CisgICAgY2xpZW50LT5y
ZXF1ZXN0UGVybWlzc2lvbihkb2N1bWVudCwgV1RGTW92ZShyZXNvbHZlUHJvbWlzZUFuZENhbGxi
YWNrKSk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpldmVudExpc3RlbmVyc0RpZENoYW5nZSgp
CkBAIC0yMjcsMTUgKzIzNSwxOSBAQCBib29sIE5vdGlmaWNhdGlvbjo6dmlydHVhbEhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0CiAKIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRh
KCkgY29uc3QKIHsKKyAgICBhdXRvIHNlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2Vzc2lvbklEKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2Vzc2lvbklEKTsKKwogICAgIHJl
dHVybiB7Ci0gICAgICAgIG1fdGl0bGUsCi0gICAgICAgIG1fYm9keSwKLSAgICAgICAgbV9pY29u
LnN0cmluZygpLAorICAgICAgICBtX3RpdGxlLmlzb2xhdGVkQ29weSgpLAorICAgICAgICBtX2Jv
ZHkuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIG1faWNvbi5zdHJpbmcoKS5pc29sYXRlZENvcHko
KSwKICAgICAgICAgbV90YWcsCiAgICAgICAgIG1fbGFuZywKICAgICAgICAgbV9kaXJlY3Rpb24s
Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSwKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBpZGVudGlmaWVyKCksCisg
ICAgICAgICpzZXNzaW9uSUQsCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IGEwNzM0MTNmYWU4Yi4u
ZjRhOTNiZDYxMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSwgMjAxMiwgMjAxNiwgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQ
cm9taXNlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CiBjbGFz
cyBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s7CiAKIHN0cnVjdCBOb3RpZmljYXRpb25E
YXRhOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB0YWc7CiAgICAg
ICAgIFN0cmluZyBpY29uOwogICAgIH07Ci0gICAgc3RhdGljIFJlZjxOb3RpZmljYXRpb24+IGNy
ZWF0ZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmKTsKKyAg
ICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7CiAgICAgCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+Tm90aWZpY2F0aW9uKCk7CiAKQEAgLTg1LDcgKzg2LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5hbGl6ZSgpOwogCi0gICAgc3RhdGlj
IFBlcm1pc3Npb24gcGVybWlzc2lvbihEb2N1bWVudCYpOworICAgIHN0YXRpYyBQZXJtaXNzaW9u
IHBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIHJl
cXVlc3RQZXJtaXNzaW9uKERvY3VtZW50JiwgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjaz4mJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTk2LDkgKzk3
LDkgQEAgcHVibGljOgogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKIAog
cHJpdmF0ZToKLSAgICBOb3RpZmljYXRpb24oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBPcHRpb25zJik7CisgICAgTm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7CiAKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZyb21D
b250ZXh0KCk7CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KIAogICAgIHZvaWQgc2hvd1Nvb24oKTsKQEAgLTEyNCw2ICsxMjUsMTIgQEAgcHJpdmF0
ZToKICAgICBlbnVtIFN0YXRlIHsgSWRsZSwgU2hvd2luZywgQ2xvc2VkIH07CiAgICAgU3RhdGUg
bV9zdGF0ZSB7IElkbGUgfTsKICAgICBib29sIG1faGFzUmVsZXZhbnRFdmVudExpc3RlbmVyIHsg
ZmFsc2UgfTsKKworICAgIGVudW0gY2xhc3MgTm90aWZpY2F0aW9uU291cmNlIDogYm9vbCB7Cisg
ICAgICAgIERvY3VtZW50LAorICAgICAgICBTZXJ2aWNlV29ya2VyLAorICAgIH07CisgICAgTm90
aWZpY2F0aW9uU291cmNlIG1fbm90aWZpY2F0aW9uU291cmNlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDdhMTc4ZGZiODNkNy4uYThiMzBiMmYz
N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKICAgICAv
LyBDaGVja3MgdGhlIGN1cnJlbnQgbGV2ZWwgb2YgcGVybWlzc2lvbi4KICAgICB2aXJ0dWFsIFBl
cm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CiAK
LXByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkRhdGEuaAppbmRleCA2NzRiY2IxZDdiMmYuLmJjZGRlM2MwNTg3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PG9wdGlvbmFsPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NSwxMiArNDYsMTMg
QEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3RyaW5nIG9yaWdpblN0cmluZzsKICAgICBVVUlEIG5v
dGlmaWNhdGlvbklEOworICAgIFBBTDo6U2Vzc2lvbklEIHNvdXJjZVNlc3Npb247CiB9OwogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBOb3RpZmljYXRpb25EYXRhOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwg
aWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8
PCBub3RpZmljYXRpb25JRDsKKyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVS
TCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8PCBub3Rp
ZmljYXRpb25JRCA8PCBzb3VyY2VTZXNzaW9uOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtOTYsNiArOTgsMTEgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3Rp
ZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW5vdGlmaWNh
dGlvbklEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4gc291cmNlU2Vzc2lvbjsKKyAgICBkZWNvZGVyID4+IHNvdXJjZVNl
c3Npb247CisgICAgaWYgKCFzb3VyY2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCiAgICAgcmV0dXJuIHsgewogICAgICAgICBXVEZNb3ZlKCp0aXRsZSksCiAgICAgICAg
IFdURk1vdmUoKmJvZHkpLApAQCAtMTA1LDYgKzExMiw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZp
Y2F0aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIFdURk1vdmUoKmRpcmVjdGlvbiksCiAgICAgICAgIFdURk1vdmUoKm9yaWdpblN0cmlu
ZyksCiAgICAgICAgIFdURk1vdmUoKm5vdGlmaWNhdGlvbklEKSwKKyAgICAgICAgV1RGTW92ZSgq
c291cmNlU2Vzc2lvbiksCiAgICAgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCBkZGE4MTlhMzQxODYuLmIwODY3MWZhNzhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xNjAsNiArMTYwLDcgQEAKICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJO
b2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJOb2RlV2l0aEluZGV4LmgiCisjaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuaCIKICNpbmNs
dWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpAQCAtOTA2
NCw2ICs5MDY1LDI3IEBAIHZvaWQgRG9jdW1lbnQ6OndoZW5WaXNpYmxlKEZ1bmN0aW9uPHZvaWQo
KT4mJiBjYWxsYmFjaykKICAgICBjYWxsYmFjaygpOwogfQogCitOb3RpZmljYXRpb25DbGllbnQq
IERvY3VtZW50Ojpub3RpZmljYXRpb25DbGllbnQoKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorICAgIGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiAmTm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6ZnJvbShwYWdlKS0+Y2xpZW50KCk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2Vu
ZGlmCit9CisKK3N0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IERvY3VtZW50OjpzZXNzaW9u
SUQoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQorICAgICAg
ICByZXR1cm4gcGFnZS0+c2Vzc2lvbklEKCk7CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICN1bmRlZiBET0NVTUVOVF9SRUxFQVNFX0xP
RwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzYThjNjNhZGY3ZTAuLjRkZDdkMzZjZTI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTE3OTYsNiArMTc5Niw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhZGRUb0RvY3VtZW50c01hcCgpOwogICAgIHZvaWQgcmVtb3ZlRnJvbURvY3VtZW50c01hcCgp
OwogCisgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBjb25zdCBmaW5h
bDsKKwogICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKIAogICAgIFVu
aXF1ZVJlZjxRdWlya3M+IG1fcXVpcmtzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKaW5kZXggNTY5MzIxMzU0ZTNkLi5kMDAwZDU5ZDVhMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29s
ZVR5cGVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGFuZGxlVHlwZXMuaD4KKyNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC02
OCw2ICs2OSw3IEBAIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cDsKIGNsYXNzIEV2ZW50VGFyZ2V0
OwogY2xhc3MgRm9udExvYWRSZXF1ZXN0OwogY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBOb3Rp
ZmljYXRpb25DbGllbnQ7CiBjbGFzcyBQZXJtaXNzaW9uQ29udHJvbGxlcjsKIGNsYXNzIFB1Ymxp
Y1VSTE1hbmFnZXI7CiBjbGFzcyBSZWplY3RlZFByb21pc2VUcmFja2VyOwpAQCAtOTQsNiArOTYs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2hh
ZG93UmVhbG1HbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzV29ya2xldEdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApA
QCAtMTEyLDYgKzExNSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgU2V0dGluZ3M6
OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIE5vdGlm
aWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9uQ2xpZW50KCkgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkgY29u
c3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUV2
YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
YWJsZVdlYkFzc2VtYmx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IDQ3ZDVjNGZiMWY5MS4uY2Y1MGMzNjhh
ZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVu
dGltZUZsYWdzLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTczLDYg
Kzc0LDcgQEAgcHVibGljOgogICAgIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxz
OwogICAgIFNldHRpbmdzOjpWYWx1ZXMgc2V0dGluZ3NWYWx1ZXM7CiAgICAgV29ya2VyVGhyZWFk
TW9kZSB3b3JrZXJUaHJlYWRNb2RlIHsgV29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFk
IH07CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEIHsgc3RkOjpu
dWxsb3B0IH07CiAKICAgICBXb3JrZXJQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNjA3MWQ4NjgxYTljLi45MDRkNGZjODhjYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01MCwyMCArNTAsMjIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKTsKIAotUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpjcmVhdGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEs
IFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYg
cGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyVGhyZWFk
JiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQ
cm92aWRlcikKK1JlZjxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTo6Y3JlYXRlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBT
ZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBh
cmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgU2VydmljZVdvcmtlclRocmVhZCYg
dGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJv
dmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYgbm90aWZpY2F0aW9u
Q2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgYXV0byBzY29wZSA9IGFk
b3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIHsgV1RGTW92ZShjb250ZXh0RGF0
YSksIFdURk1vdmUod29ya2VyRGF0YSksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQs
IFdURk1vdmUodG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciB9KTsK
KyAgICBhdXRvIHNjb3BlID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUg
eyBXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgcGFyYW1zLCBXVEZN
b3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHks
IHNvY2tldFByb3ZpZGVyLCBXVEZNb3ZlKG5vdGlmaWNhdGlvbkNsaWVudCksIHNlc3Npb25JRCB9
KTsKICAgICBzY29wZS0+YXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMo
cGFyYW1zLmNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyk7CiAgICAgc2NvcGUt
Pm5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CiAgICAgcmV0
dXJuIHNjb3BlOwogfQogCi1TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2Vydmlj
ZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVh
ZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVy
KQorU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYg
d29ya2VyRGF0YSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlP
cmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25u
ZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgc3RkOjp1bmlxdWVf
cHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRpb25DbGllbnQsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKICAgICA6IFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGU6
OlNlcnZpY2VXb3JrZXIsIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUo
dG9wT3JpZ2luKSwgY29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlcikKICAgICAsIG1fY29u
dGV4dERhdGEoV1RGTW92ZShjb250ZXh0RGF0YSkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbihTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqdGhpcywgbmF2aWdhdG9yKCkuc2Vy
dmljZVdvcmtlcigpLCBXVEZNb3ZlKG1fY29udGV4dERhdGEucmVnaXN0cmF0aW9uKSkpCiAgICAg
LCBtX3NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcjo6Z2V0T3JDcmVhdGUoKnRoaXMsIFdURk1v
dmUod29ya2VyRGF0YSkpKQogICAgICwgbV9jbGllbnRzKFNlcnZpY2VXb3JrZXJDbGllbnRzOjpj
cmVhdGUoKSkKKyAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fbm90aWZpY2F0
aW9uQ2xpZW50KFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oCmluZGV4IGZmMDI1YTI3ZTdiYi4uMDcwNzlmMTk1MzQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNp
bmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCIKQEAgLTQ2LDEwICs0Nywx
MiBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYs
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29j
a2V0UHJvdmlkZXIqKTsKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4g
Y3JlYXRlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBj
b25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29y
a2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6dW5pcXVlX3B0cjxOb3Rp
ZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIH5TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoKTsKIAorICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50cyYg
Y2xpZW50cygpIHsgcmV0dXJuIG1fY2xpZW50cy5nZXQoKTsgfQogICAgIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbigpIHsgcmV0dXJuIG1fcmVnaXN0cmF0aW9uLmdldCgp
OyB9CiAgICAgU2VydmljZVdvcmtlciYgc2VydmljZVdvcmtlcigpIHsgcmV0dXJuIG1fc2Vydmlj
ZVdvcmtlci5nZXQoKTsgfQpAQCAtNzksMTIgKzgyLDE1IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBQYWdlKiBzZXJ2aWNlV29ya2VyUGFnZSgpOwogICAgIAogcHJpdmF0ZToKLSAgICBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZp
Y2VXb3JrZXJEYXRhJiYsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3Jp
Z2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7Cisg
ICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBT
ZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRv
cE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlcios
IHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsK
ICAgICB2b2lkIG5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7
CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpTZXJ2aWNlV29y
a2VyOyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gIW1fZXh0
ZW5kZWRFdmVudHMuaXNFbXB0eSgpOyB9CiAKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlm
aWNhdGlvbkNsaWVudCgpIGZpbmFsIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2xpZW50LmdldCgp
OyB9CisgICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KKwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBtX2NvbnRleHREYXRhOwogICAgIFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBt
X3JlZ2lzdHJhdGlvbjsKICAgICBSZWY8U2VydmljZVdvcmtlcj4gbV9zZXJ2aWNlV29ya2VyOwpA
QCAtOTQsNiArMTAwLDggQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fbGFzdFJlcXVlc3RJ
ZGVudGlmaWVyIHsgMCB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEZWZlcnJlZFBy
b21pc2U+PiBtX3BlbmRpbmdTa2lwV2FpdGluZ1Byb21pc2VzOworICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+IG1f
bm90aWZpY2F0aW9uQ2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCAyNjBkYmJkM2U2NjIuLjhjODFjN2IxMDdlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKIC8v
IEZJWE1FOiBVc2UgYSB2YWxpZCBXb3JrZXJPYmplY3RQcm94eQogLy8gRklYTUU6IFVzZSB2YWxp
ZCBydW50aW1lIGZsYWdzCiAKLXN0YXRpYyBXb3JrZXJQYXJhbWV0ZXJzIGdlbmVyYXRlV29ya2Vy
UGFyYW1ldGVycyhjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhLCBT
dHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgY29u
c3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMpCitzdGF0aWMgV29ya2VyUGFyYW1l
dGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiBjb250ZXh0RGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlIHdv
cmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgY29udGV4
dERhdGEuc2NyaXB0VVJMLApAQCAtOTIsMTIgKzkyLDEzIEBAIHN0YXRpYyBXb3JrZXJQYXJhbWV0
ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmCiAgICAgICAgIGNvbnRleHREYXRhLndvcmtlclR5cGUsCiAgICAgICAgIEZldGNoUmVxdWVz
dENyZWRlbnRpYWxzOjpPbWl0LAogICAgICAgICBzZXR0aW5nc1ZhbHVlcywKLSAgICAgICAgd29y
a2VyVGhyZWFkTW9kZQorICAgICAgICB3b3JrZXJUaHJlYWRNb2RlLAorICAgICAgICBzZXNzaW9u
SUQKICAgICB9OwogfQogCi1TZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFk
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0
YSYmIHdvcmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3Jr
ZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29y
a2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dl
clByb3h5LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5
LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJUaHJlYWQoZ2Vu
ZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnRleHREYXRhLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHdv
cmtlclRocmVhZE1vZGUsIHNldHRpbmdzVmFsdWVzKSwgY29udGV4dERhdGEuc2NyaXB0LCBsb2Fk
ZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNo
YXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY29udGV4dERhdGEucmVnaXN0
cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0
aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5h
YmxlZCgpKQorU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3Jr
ZXJEYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFk
TW9kZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRl
clByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0
UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xp
ZW50PiYmIG5vdGlmaWNhdGlvbkNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAg
IDogV29ya2VyVGhyZWFkKGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb250ZXh0RGF0YSwgV1RG
TW92ZSh1c2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBzZXR0aW5nc1ZhbHVlcywgc2Vzc2lv
bklEKSwgY29udGV4dERhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVt
bXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGU6Ok5vcm1hbCwgY29udGV4dERhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1
cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBK
U0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9zZXJ2aWNlV29y
a2VySWRlbnRpZmllcihjb250ZXh0RGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICAs
IG1fam9iRGF0YUlkZW50aWZpZXIoY29udGV4dERhdGEuam9iRGF0YUlkZW50aWZpZXIpCiAgICAg
LCBtX2NvbnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNvbnRleHREYXRhKSkpCkBA
IC0xMDUsNiArMTA2LDcgQEAgU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVh
ZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwKICAgICAsIG1fd29ya2Vy
T2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpKQogICAg
ICwgbV9oZWFydEJlYXRUaW1lb3V0KHNldHRpbmdzVmFsdWVzLnNob3VsZFVzZVNlcnZpY2VXb3Jr
ZXJTaG9ydFRpbWVvdXQgPyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVzdCA6IGhlYXJ0QmVhdFRpbWVv
dXQpCiAgICAgLCBtX2hlYXJ0QmVhdFRpbWVyIHsgKnRoaXMsICZTZXJ2aWNlV29ya2VyVGhyZWFk
OjpoZWFydEJlYXRUaW1lckZpcmVkIH0KKyAgICAsIG1fbm90aWZpY2F0aW9uQ2xpZW50KFdURk1v
dmUobm90aWZpY2F0aW9uQ2xpZW50KSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEF0b21TdHJpbmc6OmluaXQoKTsKQEAgLTExNSw3ICsxMTcsOCBAQCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjp+U2VydmljZVdvcmtlclRocmVhZCgpID0gZGVmYXVsdDsKIFJlZjxXb3JrZXJHbG9i
YWxTY29wZT4gU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgV29ya2VyUGFyYW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2lu
LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KG1fY29udGV4dERhdGEpOwotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNy
ZWF0ZSgqc3RkOjpleGNoYW5nZShtX2NvbnRleHREYXRhLCBzdGQ6Om51bGxvcHQpLCAqc3RkOjpl
eGNoYW5nZShtX3dvcmtlckRhdGEsIHN0ZDo6bnVsbG9wdCksIHBhcmFtcywgV1RGTW92ZShvcmln
aW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29j
a2V0UHJvdmlkZXIoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQocGFyYW1zLnNlc3Npb25JRCk7Cisg
ICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKCpzdGQ6OmV4Y2hhbmdl
KG1fY29udGV4dERhdGEsIHN0ZDo6bnVsbG9wdCksICpzdGQ6OmV4Y2hhbmdlKG1fd29ya2VyRGF0
YSwgc3RkOjpudWxsb3B0KSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksICp0aGlzLCBXVEZNb3Zl
KHRvcE9yaWdpbiksIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpLCBXVEZN
b3ZlKG1fbm90aWZpY2F0aW9uQ2xpZW50KSwgKnBhcmFtcy5zZXNzaW9uSUQpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmgKaW5kZXggODhiNjVkZTgwMzBhLi43NTY2YjRkNGE5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAor
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRp
b25EYXRhLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKQEAgLTg1LDcgKzg2LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgcnVuRXZlbnRMb29wKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3Jr
ZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiwgV29ya2VyTG9hZGVyUHJveHkm
LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBT
b2NrZXRQcm92aWRlciopOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWQo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIFN0cmluZyYm
IHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIElEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0
aW9uQ2xpZW50PiYmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBBU0NJSUxpdGVyYWwgdGhyZWFk
TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJDb3JlOiBTZXJ2aWNlV29ya2VyIl9zOyB9
CiAgICAgdm9pZCBmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKSBmaW5hbDsKQEAgLTExOSw2ICsx
MjAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBoZWFydEJlYXRU
aW1lb3V0Rm9yVGVzdCB7IDFfcyB9OwogICAgIFNlY29uZHMgbV9oZWFydEJlYXRUaW1lb3V0IHsg
aGVhcnRCZWF0VGltZW91dCB9OwogICAgIFRpbWVyIG1faGVhcnRCZWF0VGltZXI7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4gbV9ub3RpZmljYXRpb25DbGllbnQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcAppbmRleCA0Y2U3NGUwY2JhOGYuLmE5NGU2ZDFlNzY1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgc3RhdGljIEhhc2hT
ZXQ8U2VydmljZVdvcmtlclRocmVhZFByb3h5Kj4mIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
aWVzKCkKICAgICByZXR1cm4gc2V0OwogfQogCi1TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiBwYWdlLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJE
YXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9k
ZSwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKQorU2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+
JiYgcGFnZSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VX
b3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRN
b2RlIHdvcmtlclRocmVhZE1vZGUsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQ
cm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRp
b25DbGllbnQpCiAgICAgOiBtX3BhZ2UoV1RGTW92ZShwYWdlKSkKICAgICAsIG1fZG9jdW1lbnQo
Km1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKICAgICAsIG1fcmVtb3RlRGVidWdnYWJsZShtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJE
ZWJ1Z2dhYmxlPigqdGhpcywgY29udGV4dERhdGEpKQogI2VuZGlmCi0gICAgLCBtX3NlcnZpY2VX
b3JrZXJUaHJlYWQoU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKFdURk1vdmUoY29udGV4dERh
dGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHdvcmtlclRocmVh
ZE1vZGUsIG1fZG9jdW1lbnQtPnNldHRpbmdzVmFsdWVzKCksICp0aGlzLCAqdGhpcywgaWRiQ29u
bmVjdGlvblByb3h5KG1fZG9jdW1lbnQpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigpKSkK
KyAgICAsIG1fc2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUo
V1RGTW92ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUodXNlckFn
ZW50KSwgd29ya2VyVGhyZWFkTW9kZSwgbV9kb2N1bWVudC0+c2V0dGluZ3NWYWx1ZXMoKSwgKnRo
aXMsICp0aGlzLCBpZGJDb25uZWN0aW9uUHJveHkobV9kb2N1bWVudCksIG1fZG9jdW1lbnQtPnNv
Y2tldFByb3ZpZGVyKCksIFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSwgbV9wYWdlLT5zZXNz
aW9uSUQoKSkpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVByb3Zp
ZGVyKQogICAgICwgbV9pbnNwZWN0b3JQcm94eSgqdGhpcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmgKaW5kZXggOWI4MzZiNzNmODA5Li4wYTRiYzdmZjQ5NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCk7CiAK
IHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFVu
aXF1ZVJlZjxQYWdlPiYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtl
ckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlLCBDYWNoZVN0b3Jh
Z2VQcm92aWRlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eShVbmlxdWVSZWY8UGFnZT4mJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VX
b3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSwgQ2FjaGVT
dG9yYWdlUHJvdmlkZXImLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoYm9v
bCBpc09uTGluZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2QwYTE1ZDliOWRkLi45M2U3NDM4ZGI0YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE5vdGlmaWNhdGlvbiByZWZhY3RvcmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgor
CiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTEyNC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2YTdmZGM3ZGUwNTkuLmZmMTE2OTUyY2U4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudExvYWRlci5o
IgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByZWZl
cmVuY2VzS2V5cy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKQEAgLTE0Nyw3
ICsxNDgsOSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2Vy
dmljZVdvcmtlcihTZXJ2aWNlV29ya2VyQ29udGV4dERhdAogICAgICAgICBwYWdlLT5zZXR0aW5n
cygpLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzdGF0aWNfY2FzdDxTdG9yYWdlQmxvY2tpbmdQ
b2xpY3k+KG1fcHJlZmVyZW5jZXNTdG9yZS0+Z2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSgpKSkpOwogICAgIH0KICAgICBwYWdl
LT5zZXR1cEZvclJlbW90ZVdvcmtlcihjb250ZXh0RGF0YS5zY3JpcHRVUkwsIGNvbnRleHREYXRh
LnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCksIGNvbnRleHREYXRhLnJlZmVycmVyUG9saWN5
KTsKLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSksIFdURk1vdmUoY29udGV4dERhdGEpLCBXVEZN
b3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKGVmZmVjdGl2ZVVzZXJBZ2VudCksIHdvcmtlclRocmVh
ZE1vZGUsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCkpOwor
CisgICAgYXV0byBub3RpZmljYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlv
bkNsaWVudD4obnVsbHB0cik7CisgICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBXVEZNb3ZlKGNv
bnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZShlZmZlY3RpdmVVc2VyQWdl
bnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3Jh
Z2VQcm92aWRlcigpLCBXVEZNb3ZlKG5vdGlmaWNhdGlvbkNsaWVudCkpOwogCiAgICAgaWYgKGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogICAgICAgICBzZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkID09IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZ
ZXMpOwo=
</data>
<flag name="review"
          id="477528"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="477529"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450969</attachid>
            <date>2022-02-04 20:30:23 -0800</date>
            <delta_ts>2022-02-04 21:25:45 -0800</delta_ts>
            <desc>EWS v6</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34939</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDk5NTVlMmNkMjEuLjcxYjQyOTEwNGNlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY2IEBACisyMDIyLTAyLTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBOb3RpZmljYXRpb24gcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjE2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlv
ciBjaGFuZ2UpCisgICAgICAgIAorICAgICAgICBTb21lICJubyBiZWhhdmlvciBjaGFuZ2UiIHJl
ZmFjdG9ycyBicm9rZW4gb3V0IGZyb20gYW4gdXBjb21pbmcgbGFyZ2VyIHBhdGNoLCBpbmNsdWRp
bmc6CisgICAgICAgIC0gTWFrZSBOb3RpZmljYXRpb24gb2JqZWN0cyByZWxpYW50IG9uIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZiBEb2N1bWVudAorICAgICAgICAtIEdpdmUgdGhl
bSBhIGRpcmVjdCBwYXRoIHRvIGEgTm90aWZpY2F0aW9uQ2xpZW50IGluc3RlYWQgb2YgaGF2aW5n
IHRvIGdvIHRocm91Z2ggYSBQYWdlJ3MgTm90aWZpY2F0aW9uQ29udHJvbGxlcgorICAgICAgICAt
IEdpdmUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCdzIGEgc2Vzc2lvbklEKCkgYWNjZXNzb3IgZm9y
IGZ1dHVyZSB1c2UKKyAgICAgICAgLSBTb21lIE5vdGlmaWNhdGlvbiBvYmplY3QgdGhyZWFkaW5n
IGhhcmRlbmluZworCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpj
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNsaWVudEZyb21Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OnBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkb2N1bWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojpub3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNlc3Npb25JRCBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgIAorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpu
b3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
Om1fbm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJU
aHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAgIAorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5Lmg6CisKIDIwMjItMDItMDQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg5MDk4Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmNwcAppbmRleCBlYzRhNjg4NTY2ZDQuLjY4NWIxZTRkMWEzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDExLCAyMDEyLCAyMDE2LCAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1LDEyICszNSwxMCBAQAogCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCi0jaW5jbHVk
ZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEu
aCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJXaW5kb3dFdmVudExvb3AuaCIKQEAgLTUyLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTm90aWZpY2F0aW9uKTsKIAotUmVmPE5v
dGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmIG9wdGlvbnMpCitSZWY8Tm90aWZpY2F0aW9u
PiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24oY29udGV4dCwgdGl0bGUs
IG9wdGlvbnMpKTsKICAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtNjAs
MTcgKzU4LDI0IEBAIFJlZjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKERvY3Vt
ZW50JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjCiAgICAgcmV0dXJuIG5vdGlmaWNh
dGlvbjsKIH0KIAotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQotICAgIDogQWN0
aXZlRE9NT2JqZWN0KGRvY3VtZW50KQotICAgICwgbV90aXRsZSh0aXRsZSkKK05vdGlmaWNhdGlv
bjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCisgICAgLCBtX3RpdGxlKHRpdGxlLmlzb2xhdGVkQ29weSgpKQogICAgICwg
bV9kaXJlY3Rpb24ob3B0aW9ucy5kaXIpCi0gICAgLCBtX2xhbmcob3B0aW9ucy5sYW5nKQotICAg
ICwgbV9ib2R5KG9wdGlvbnMuYm9keSkKLSAgICAsIG1fdGFnKG9wdGlvbnMudGFnKQorICAgICwg
bV9sYW5nKG9wdGlvbnMubGFuZy5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1fYm9keShvcHRpb25z
LmJvZHkuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3RhZyhvcHRpb25zLnRhZy5pc29sYXRlZENv
cHkoKSkKICAgICAsIG1fc3RhdGUoSWRsZSkKIHsKKyAgICBpZiAoY29udGV4dC5pc0RvY3VtZW50
KCkpCisgICAgICAgIG1fbm90aWZpY2F0aW9uU291cmNlID0gTm90aWZpY2F0aW9uU291cmNlOjpE
b2N1bWVudDsKKyAgICBlbHNlIGlmIChjb250ZXh0LmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KCkpCisgICAgICAgIG1fbm90aWZpY2F0aW9uU291cmNlID0gTm90aWZpY2F0aW9uU291cmNlOjpT
ZXJ2aWNlV29ya2VyOworICAgIGVsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKwogICAgIGlmICghb3B0aW9ucy5pY29uLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRv
IGljb25VUkwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOworICAgICAgICBh
dXRvIGljb25VUkwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKG9wdGlvbnMuaWNvbik7CiAgICAgICAg
IGlmIChpY29uVVJMLmlzVmFsaWQoKSkKICAgICAgICAgICAgIG1faWNvbiA9IGljb25VUkw7CiAg
ICAgfQpAQCAtOTIsMTcgKzk3LDE1IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICBp
ZiAobV9zdGF0ZSAhPSBJZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBwYWdlID0g
ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKKyAgICBhdXRvKiBjbGllbnQgPSBj
bGllbnRGcm9tQ29udGV4dCgpOworICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvJiBjbGllbnQgPSBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5j
bGllbnQoKTsKLQotICAgIGlmIChjbGllbnQuY2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkgIT0gUGVybWlzc2lvbjo6R3JhbnRlZCkgeworICAgIGlmIChjbGllbnQtPmNo
ZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IFBlcm1pc3Npb246Okdy
YW50ZWQpIHsKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgaWYgKGNsaWVudC5zaG93KCp0aGlzKSkKKyAgICBpZiAoY2xpZW50LT5zaG93
KCp0aGlzKSkKICAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7CiB9CiAKQEAgLTExMiw4ICsxMTUs
OCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQogICAgIGNhc2UgSWRsZToKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTaG93aW5nOiB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gZG9j
dW1lbnQoKS0+cGFnZSgpKQotICAgICAgICAgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJv
bShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKCp0aGlzKTsKKyAgICAgICAgaWYgKGF1dG8qIGNsaWVu
dCA9IGNsaWVudEZyb21Db250ZXh0KCkpCisgICAgICAgICAgICBjbGllbnQtPmNhbmNlbCgqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENsb3NlZDoKQEAgLTEyMSw5ICsx
MjQsMTEgQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKICAgICB9CiB9CiAKLURvY3VtZW50
KiBOb3RpZmljYXRpb246OmRvY3VtZW50KCkgY29uc3QKK05vdGlmaWNhdGlvbkNsaWVudCogTm90
aWZpY2F0aW9uOjpjbGllbnRGcm9tQ29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmIChhdXRvKiBjb250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gY29udGV4dC0+bm90
aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGNvbnN0IGNoYXIq
IE5vdGlmaWNhdGlvbjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBAIC0xMzUsOCArMTQw
LDggQEAgdm9pZCBOb3RpZmljYXRpb246OnN0b3AoKQogewogICAgIEFjdGl2ZURPTU9iamVjdDo6
c3RvcCgpOwogCi0gICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAg
ICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNsaWVudCgpLm5vdGlmaWNh
dGlvbk9iamVjdERlc3Ryb3llZCgqdGhpcyk7CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IGNsaWVu
dEZyb21Db250ZXh0KCkpCisgICAgICAgIGNsaWVudC0+bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJv
eWVkKCp0aGlzKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb246OnN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbikKQEAgLTE3MiwxOSArMTc3LDIyIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRj
aENsb3NlRXZlbnQoKQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkK
IHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX25vdGlmaWNhdGlv
blNvdXJjZSA9PSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50KTsKKwogICAgIHF1ZXVlVGFz
a1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAotYXV0byBOb3RpZmljYXRpb246OnBlcm1p
c3Npb24oRG9jdW1lbnQmIGRvY3VtZW50KSAtPiBQZXJtaXNzaW9uCithdXRvIE5vdGlmaWNhdGlv
bjo6cGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSAtPiBQZXJtaXNz
aW9uCiB7Ci0gICAgYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2Up
CisgICAgYXV0byogY2xpZW50ID0gY29udGV4dC5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBp
ZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIFBlcm1pc3Npb246OkRlZmF1bHQ7CiAKLSAgICBp
ZiAoIWRvY3VtZW50LmlzU2VjdXJlQ29udGV4dCgpKQorICAgIGlmICghY29udGV4dC5pc1NlY3Vy
ZUNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIFBlcm1pc3Npb246OkRlbmllZDsKIAotICAgIHJl
dHVybiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKGRvY3VtZW50LnBhZ2UoKSktPmNsaWVu
dCgpLmNoZWNrUGVybWlzc2lvbigmZG9jdW1lbnQpOworICAgIHJldHVybiBjbGllbnQtPmNoZWNr
UGVybWlzc2lvbigmY29udGV4dCk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVy
bWlzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAg
LTE5Nyw4ICsyMDUsOCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24oRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybQogICAgICAgICB9KTsKICAg
ICB9OwogCi0gICAgYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2Up
CisgICAgYXV0byogY2xpZW50ID0gc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCY+
KGRvY3VtZW50KS5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKICAgICAg
ICAgcmV0dXJuIHJlc29sdmVQcm9taXNlQW5kQ2FsbGJhY2soUGVybWlzc2lvbjo6RGVuaWVkKTsK
IAogICAgIGlmICghZG9jdW1lbnQuaXNTZWN1cmVDb250ZXh0KCkpIHsKQEAgLTIwNiw3ICsyMTQs
NyBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybQogICAgICAgICByZXR1cm4gcmVzb2x2ZVByb21p
c2VBbmRDYWxsYmFjayhQZXJtaXNzaW9uOjpEZW5pZWQpOwogICAgIH0KIAotICAgIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNsaWVudCgpLnJlcXVlc3RQZXJtaXNzaW9uKGRv
Y3VtZW50LCBXVEZNb3ZlKHJlc29sdmVQcm9taXNlQW5kQ2FsbGJhY2spKTsKKyAgICBjbGllbnQt
PnJlcXVlc3RQZXJtaXNzaW9uKGRvY3VtZW50LCBXVEZNb3ZlKHJlc29sdmVQcm9taXNlQW5kQ2Fs
bGJhY2spKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb246OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdl
KCkKQEAgLTIyNywxNSArMjM1LDE5IEBAIGJvb2wgTm90aWZpY2F0aW9uOjp2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogTm90aWZpY2F0aW9uRGF0YSBOb3RpZmljYXRpb246OmRh
dGEoKSBjb25zdAogeworICAgIGF1dG8gc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZXNzaW9uSUQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzZXNzaW9uSUQpOworCiAgICAg
cmV0dXJuIHsKLSAgICAgICAgbV90aXRsZSwKLSAgICAgICAgbV9ib2R5LAotICAgICAgICBtX2lj
b24uc3RyaW5nKCksCisgICAgICAgIG1fdGl0bGUuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIG1f
Ym9keS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgbV9pY29uLnN0cmluZygpLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICBtX3RhZywKICAgICAgICAgbV9sYW5nLAogICAgICAgICBtX2RpcmVjdGlv
biwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50
b1N0cmluZygpLAorICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3Jp
Z2luKCktPnRvU3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIGlkZW50aWZpZXIoKSwK
KyAgICAgICAgKnNlc3Npb25JRCwKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggYTA3MzQxM2ZhZThi
Li5mNGE5M2JkNjEwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTEsIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2LCAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJl
ZFByb21pc2U7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKIGNs
YXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjazsKIAogc3RydWN0IE5vdGlmaWNhdGlv
bkRhdGE7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHRhZzsKICAg
ICAgICAgU3RyaW5nIGljb247CiAgICAgfTsKLSAgICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4g
Y3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYpOwor
ICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmKTsKICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKIApAQCAtODUsNyArODYsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmFsaXplKCk7CiAKLSAgICBzdGF0
aWMgUGVybWlzc2lvbiBwZXJtaXNzaW9uKERvY3VtZW50Jik7CisgICAgc3RhdGljIFBlcm1pc3Np
b24gcGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIHZvaWQg
cmVxdWVzdFBlcm1pc3Npb24oRG9jdW1lbnQmLCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrPiYmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtOTYsOSAr
OTcsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOwog
CiBwcml2YXRlOgotICAgIE5vdGlmaWNhdGlvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IE9wdGlvbnMmKTsKKyAgICBOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmKTsKIAotICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OworICAgIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50RnJv
bUNvbnRleHQoKTsKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE5vdGlmaWNhdGlvbkV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsgfQogCiAgICAgdm9pZCBzaG93U29vbigpOwpAQCAtMTI0LDYgKzEyNSwxMiBAQCBwcml2
YXRlOgogICAgIGVudW0gU3RhdGUgeyBJZGxlLCBTaG93aW5nLCBDbG9zZWQgfTsKICAgICBTdGF0
ZSBtX3N0YXRlIHsgSWRsZSB9OwogICAgIGJvb2wgbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXIg
eyBmYWxzZSB9OworCisgICAgZW51bSBjbGFzcyBOb3RpZmljYXRpb25Tb3VyY2UgOiBib29sIHsK
KyAgICAgICAgRG9jdW1lbnQsCisgICAgICAgIFNlcnZpY2VXb3JrZXIsCisgICAgfTsKKyAgICBO
b3RpZmljYXRpb25Tb3VyY2UgbV9ub3RpZmljYXRpb25Tb3VyY2U7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggN2ExNzhkZmI4M2Q3Li5hOGIzMGIy
ZjM3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGljOgogICAg
IC8vIENoZWNrcyB0aGUgY3VycmVudCBsZXZlbCBvZiBwZXJtaXNzaW9uLgogICAgIHZpcnR1YWwg
UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopID0gMDsK
IAotcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbkNsaWVudCgpID0gZGVmYXVs
dDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uRGF0YS5oCmluZGV4IDY3NGJjYjFkN2IyZi4uYmNkZGUzYzA1ODc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25EYXRhLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9V
VUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ1LDEyICs0Niwx
MyBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YSB7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTdHJpbmcgb3JpZ2luU3RyaW5nOwogICAgIFVVSUQg
bm90aWZpY2F0aW9uSUQ7CisgICAgUEFMOjpTZXNzaW9uSUQgc291cmNlU2Vzc2lvbjsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE5vdGlmaWNhdGlvbkRhdGE6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYm9keSA8
PCBpY29uVVJMIDw8IHRhZyA8PCBsYW5ndWFnZSA8PCBkaXJlY3Rpb24gPDwgb3JpZ2luU3RyaW5n
IDw8IG5vdGlmaWNhdGlvbklEOworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYm9keSA8PCBpY29u
VVJMIDw8IHRhZyA8PCBsYW5ndWFnZSA8PCBkaXJlY3Rpb24gPDwgb3JpZ2luU3RyaW5nIDw8IG5v
dGlmaWNhdGlvbklEIDw8IHNvdXJjZVNlc3Npb247CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CkBAIC05Niw2ICs5OCwxMSBAQCBzdGQ6Om9wdGlvbmFsPE5vdGlmaWNhdGlvbkRhdGE+IE5v
dGlmaWNhdGlvbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghbm90aWZp
Y2F0aW9uSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICBzdGQ6Om9wdGlv
bmFsPFBBTDo6U2Vzc2lvbklEPiBzb3VyY2VTZXNzaW9uOworICAgIGRlY29kZXIgPj4gc291cmNl
U2Vzc2lvbjsKKyAgICBpZiAoIXNvdXJjZVNlc3Npb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKICAgICByZXR1cm4geyB7CiAgICAgICAgIFdURk1vdmUoKnRpdGxlKSwKICAgICAg
ICAgV1RGTW92ZSgqYm9keSksCkBAIC0xMDUsNiArMTEyLDcgQEAgc3RkOjpvcHRpb25hbDxOb3Rp
ZmljYXRpb25EYXRhPiBOb3RpZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgV1RGTW92ZSgqZGlyZWN0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqb3JpZ2luU3Ry
aW5nKSwKICAgICAgICAgV1RGTW92ZSgqbm90aWZpY2F0aW9uSUQpLAorICAgICAgICBXVEZNb3Zl
KCpzb3VyY2VTZXNzaW9uKSwKICAgICB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IGRkYTgxOWEzNDE4Ni4uYjA4NjcxZmE3OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTE2MCw2ICsxNjAsNyBAQAogI2luY2x1ZGUgIk5vZGVJdGVyYXRvci5oIgogI2luY2x1ZGUg
Ik5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVXaXRoSW5kZXguaCIKKyNpbmNsdWRlICJO
b3RpZmljYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCkBAIC05
MDY0LDYgKzkwNjUsMjcgQEAgdm9pZCBEb2N1bWVudDo6d2hlblZpc2libGUoRnVuY3Rpb248dm9p
ZCgpPiYmIGNhbGxiYWNrKQogICAgIGNhbGxiYWNrKCk7CiB9CiAKK05vdGlmaWNhdGlvbkNsaWVu
dCogRG9jdW1lbnQ6Om5vdGlmaWNhdGlvbkNsaWVudCgpCit7CisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuICZOb3RpZmljYXRpb25Db250cm9s
bGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7Cisj
ZW5kaWYKK30KKworc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gRG9jdW1lbnQ6OnNlc3Np
b25JRCgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisgICAg
ICAgIHJldHVybiBwYWdlLT5zZXNzaW9uSUQoKTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIERPQ1VNRU5UX1JFTEVBU0Vf
TE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNhOGM2M2FkZjdlMC4uNGRkN2QzNmNlMjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTc5Niw2ICsxNzk2LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFkZFRvRG9jdW1lbnRzTWFwKCk7CiAgICAgdm9pZCByZW1vdmVGcm9tRG9jdW1lbnRzTWFw
KCk7CiAKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgpIGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCgpIGNvbnN0IGZp
bmFsOworCiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwogCiAgICAg
VW5pcXVlUmVmPFF1aXJrcz4gbV9xdWlya3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAppbmRleCA1NjkzMjEzNTRlM2QuLmQwMDBkNTlkNWEwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25z
b2xlVHlwZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYW5kbGVUeXBlcy5oPgorI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAg
LTY4LDYgKzY5LDcgQEAgY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgRXZlbnRUYXJn
ZXQ7CiBjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIE5v
dGlmaWNhdGlvbkNsaWVudDsKIGNsYXNzIFBlcm1pc3Npb25Db250cm9sbGVyOwogY2xhc3MgUHVi
bGljVVJMTWFuYWdlcjsKIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI7CkBAIC05NCw2ICs5
Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9iYWxTY29wZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNT
aGFkb3dSZWFsbUdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CkBAIC0xMTIsNiArMTE1LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBTZXR0aW5n
czo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgTm90
aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSB7IHJldHVybiBudWxscHRyOyB9
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
RXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggNDdkNWM0ZmIxZjkxLi5jZjUwYzM2
OGFlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9S
dW50aW1lRmxhZ3MuaD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25J
RC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzMs
NiArNzQsNyBAQCBwdWJsaWM6CiAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlh
bHM7CiAgICAgU2V0dGluZ3M6OlZhbHVlcyBzZXR0aW5nc1ZhbHVlczsKICAgICBXb3JrZXJUaHJl
YWRNb2RlIHdvcmtlclRocmVhZE1vZGUgeyBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJl
YWQgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQgeyBzdGQ6
Om51bGxvcHQgfTsKIAogICAgIFdvcmtlclBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA2MDcxZDg2ODFhOWMuLjkwNGQ0ZmM4OGNh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTUwLDIwICs1MCwyMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUpOwogCi1SZWY8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OmNyZWF0ZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0
YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJl
YWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyKQorUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gU2VydmljZVdvcmtlckds
b2JhbFNjb3BlOjpjcmVhdGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEs
IFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYg
cGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyVGhyZWFk
JiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQ
cm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRp
b25DbGllbnQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBhdXRvIHNjb3BlID0g
YWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgeyBXVEZNb3ZlKGNvbnRleHRE
YXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVh
ZCwgV1RGTW92ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyIH0p
OworICAgIGF1dG8gc2NvcGUgPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSB7IFdURk1vdmUoY29udGV4dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBwYXJhbXMsIFdU
Rk1vdmUob3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94
eSwgc29ja2V0UHJvdmlkZXIsIFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSwgc2Vzc2lvbklE
IH0pOwogICAgIHNjb3BlLT5hcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyhwYXJhbXMuY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzKTsKICAgICBzY29w
ZS0+bm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKTsKICAgICBy
ZXR1cm4gc2NvcGU7CiB9CiAKLVNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2
aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFt
cywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgU2VydmljZVdvcmtlclRocmVhZCYgdGhy
ZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlk
ZXIpCitTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEm
JiB3b3JrZXJEYXRhLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiBvcmlnaW4sIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNv
bm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBzdGQ6OnVuaXF1
ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmIG5vdGlmaWNhdGlvbkNsaWVudCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogICAgIDogV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlw
ZTo6U2VydmljZVdvcmtlciwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksIHRocmVhZCwgV1RGTW92
ZSh0b3BPcmlnaW4pLCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyKQogICAgICwgbV9j
b250ZXh0RGF0YShXVEZNb3ZlKGNvbnRleHREYXRhKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCp0aGlzLCBuYXZpZ2F0b3IoKS5z
ZXJ2aWNlV29ya2VyKCksIFdURk1vdmUobV9jb250ZXh0RGF0YS5yZWdpc3RyYXRpb24pKSkKICAg
ICAsIG1fc2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqdGhpcywgV1RG
TW92ZSh3b3JrZXJEYXRhKSkpCiAgICAgLCBtX2NsaWVudHMoU2VydmljZVdvcmtlckNsaWVudHM6
OmNyZWF0ZSgpKQorICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9ub3RpZmlj
YXRpb25DbGllbnQoV1RGTW92ZShub3RpZmljYXRpb25DbGllbnQpKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmgKaW5kZXggZmYwMjVhMjdlN2JiLi4wNzA3OWYxOTUzNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAor
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgpAQCAtNDYsMTAgKzQ3
LDEyIEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWQ7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3Vy
aXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBT
b2NrZXRQcm92aWRlciopOworICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
PiBjcmVhdGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYs
IGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VX
b3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgc3RkOjp1bmlxdWVfcHRyPE5v
dGlmaWNhdGlvbkNsaWVudD4mJiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgflNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSgpOwogCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRz
JiBjbGllbnRzKCkgeyByZXR1cm4gbV9jbGllbnRzLmdldCgpOyB9CiAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKCkgeyByZXR1cm4gbV9yZWdpc3RyYXRpb24uZ2V0
KCk7IH0KICAgICBTZXJ2aWNlV29ya2VyJiBzZXJ2aWNlV29ya2VyKCkgeyByZXR1cm4gbV9zZXJ2
aWNlV29ya2VyLmdldCgpOyB9CkBAIC03OSwxMiArODIsMTUgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFBhZ2UqIHNlcnZpY2VXb3JrZXJQYWdlKCk7CiAgICAgCiBwcml2YXRlOgotICAg
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2Vy
dmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BP
cmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsK
KyAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYs
IFNlcnZpY2VXb3JrZXJEYXRhJiYsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYg
dG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVy
Kiwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiwgUEFMOjpTZXNzaW9uSUQp
OwogICAgIHZvaWQgbm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3Nhcnko
KTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OlNlcnZpY2VX
b3JrZXI7IH0KICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoKSBjb25zdCB7IHJldHVybiAhbV9l
eHRlbmRlZEV2ZW50cy5pc0VtcHR5KCk7IH0KIAorICAgIE5vdGlmaWNhdGlvbkNsaWVudCogbm90
aWZpY2F0aW9uQ2xpZW50KCkgZmluYWwgeyByZXR1cm4gbV9ub3RpZmljYXRpb25DbGllbnQuZ2V0
KCk7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQorCiAgICAgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIG1fY29udGV4dERhdGE7CiAgICAgUmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+
IG1fcmVnaXN0cmF0aW9uOwogICAgIFJlZjxTZXJ2aWNlV29ya2VyPiBtX3NlcnZpY2VXb3JrZXI7
CkBAIC05NCw2ICsxMDAsOCBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9sYXN0UmVxdWVz
dElkZW50aWZpZXIgeyAwIH07CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERlZmVycmVk
UHJvbWlzZT4+IG1fcGVuZGluZ1NraXBXYWl0aW5nUHJvbWlzZXM7CisgICAgUEFMOjpTZXNzaW9u
SUQgbV9zZXNzaW9uSUQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4g
bV9ub3RpZmljYXRpb25DbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDI2MGRiYmQzZTY2Mi4uOGM4MWM3YjEwN2VjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgog
Ly8gRklYTUU6IFVzZSBhIHZhbGlkIFdvcmtlck9iamVjdFByb3h5CiAvLyBGSVhNRTogVXNlIHZh
bGlkIHJ1bnRpbWUgZmxhZ3MKIAotc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3Jr
ZXJQYXJhbWV0ZXJzKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEs
IFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBj
b25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcykKK3N0YXRpYyBXb3JrZXJQYXJh
bWV0ZXJzIGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmIGNvbnRleHREYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUg
d29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZXR1cm4gewogICAgICAgICBjb250
ZXh0RGF0YS5zY3JpcHRVUkwsCkBAIC05MiwxMiArOTIsMTMgQEAgc3RhdGljIFdvcmtlclBhcmFt
ZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYKICAgICAgICAgY29udGV4dERhdGEud29ya2VyVHlwZSwKICAgICAgICAgRmV0Y2hSZXF1
ZXN0Q3JlZGVudGlhbHM6Ok9taXQsCiAgICAgICAgIHNldHRpbmdzVmFsdWVzLAotICAgICAgICB3
b3JrZXJUaHJlYWRNb2RlCisgICAgICAgIHdvcmtlclRocmVhZE1vZGUsCisgICAgICAgIHNlc3Np
b25JRAogICAgIH07CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJl
YWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJE
YXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlIHdv
cmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzLCBX
b3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVn
Z2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJv
eHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlclRocmVhZChn
ZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29udGV4dERhdGEsIFdURk1vdmUodXNlckFnZW50KSwg
d29ya2VyVGhyZWFkTW9kZSwgc2V0dGluZ3NWYWx1ZXMpLCBjb250ZXh0RGF0YS5zY3JpcHQsIGxv
YWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjb250ZXh0RGF0YS5yZWdp
c3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5l
Y3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxF
bmFibGVkKCkpCitTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdv
cmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJl
YWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9h
ZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2Nr
ZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25D
bGllbnQ+JiYgbm90aWZpY2F0aW9uQ2xpZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisg
ICAgOiBXb3JrZXJUaHJlYWQoZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnRleHREYXRhLCBX
VEZNb3ZlKHVzZXJBZ2VudCksIHdvcmtlclRocmVhZE1vZGUsIHNldHRpbmdzVmFsdWVzLCBzZXNz
aW9uSUQpLCBjb250ZXh0RGF0YS5zY3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBE
dW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0
TW9kZTo6Tm9ybWFsLCBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNl
Y3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIs
IEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX3NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKGNvbnRleHREYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAg
ICwgbV9qb2JEYXRhSWRlbnRpZmllcihjb250ZXh0RGF0YS5qb2JEYXRhSWRlbnRpZmllcikKICAg
ICAsIG1fY29udGV4dERhdGEoY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY29udGV4dERhdGEpKSkK
QEAgLTEwNSw2ICsxMDYsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLAogICAgICwgbV93b3Jr
ZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCkpCiAg
ICAgLCBtX2hlYXJ0QmVhdFRpbWVvdXQoc2V0dGluZ3NWYWx1ZXMuc2hvdWxkVXNlU2VydmljZVdv
cmtlclNob3J0VGltZW91dCA/IGhlYXJ0QmVhdFRpbWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGlt
ZW91dCkKICAgICAsIG1faGVhcnRCZWF0VGltZXIgeyAqdGhpcywgJlNlcnZpY2VXb3JrZXJUaHJl
YWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQgfQorICAgICwgbV9ub3RpZmljYXRpb25DbGllbnQoV1RG
TW92ZShub3RpZmljYXRpb25DbGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOwpAQCAtMTE1LDcgKzExNyw4IEBAIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwogUmVmPFdvcmtlckds
b2JhbFNjb3BlPiBTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmln
aW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9jb250ZXh0RGF0YSk7Ci0gICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6
Y3JlYXRlKCpzdGQ6OmV4Y2hhbmdlKG1fY29udGV4dERhdGEsIHN0ZDo6bnVsbG9wdCksICpzdGQ6
OmV4Y2hhbmdlKG1fd29ya2VyRGF0YSwgc3RkOjpudWxsb3B0KSwgcGFyYW1zLCBXVEZNb3ZlKG9y
aWdpbiksICp0aGlzLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBz
b2NrZXRQcm92aWRlcigpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChwYXJhbXMuc2Vzc2lvbklEKTsK
KyAgICByZXR1cm4gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoKnN0ZDo6ZXhjaGFu
Z2UobV9jb250ZXh0RGF0YSwgc3RkOjpudWxsb3B0KSwgKnN0ZDo6ZXhjaGFuZ2UobV93b3JrZXJE
YXRhLCBzdGQ6Om51bGxvcHQpLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdURk1v
dmUodG9wT3JpZ2luKSwgaWRiQ29ubmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCksIFdU
Rk1vdmUobV9ub3RpZmljYXRpb25DbGllbnQpLCAqcGFyYW1zLnNlc3Npb25JRCk7CiB9CiAKIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaAppbmRleCA4OGI2NWRlODAzMGEuLjc1NjZiNGQ0YTlkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlw
dGlvbkRhdGEuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgpAQCAtODUsNyArODYsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdv
cmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmLCBXb3JrZXJMb2FkZXJQcm94
eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSos
IFNvY2tldFByb3ZpZGVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVh
ZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgU3RyaW5n
JiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiwg
V29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmlj
YXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIEFTQ0lJTGl0ZXJhbCB0aHJl
YWROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYkNvcmU6IFNlcnZpY2VXb3JrZXIiX3M7
IH0KICAgICB2b2lkIGZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpIGZpbmFsOwpAQCAtMTE5LDYg
KzEyMCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGhlYXJ0QmVh
dFRpbWVvdXRGb3JUZXN0IHsgMV9zIH07CiAgICAgU2Vjb25kcyBtX2hlYXJ0QmVhdFRpbWVvdXQg
eyBoZWFydEJlYXRUaW1lb3V0IH07CiAgICAgVGltZXIgbV9oZWFydEJlYXRUaW1lcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiBtX25vdGlmaWNhdGlvbkNsaWVudDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuY3BwCmluZGV4IDRjZTc0ZTBjYmE4Zi4uYTk0ZTZkMWU3NjVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBzdGF0aWMgSGFz
aFNldDxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2VydmljZVdvcmtlclRocmVhZFBy
b3hpZXMoKQogICAgIHJldHVybiBzZXQ7CiB9CiAKLVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
U2VydmljZVdvcmtlclRocmVhZFByb3h5KFVuaXF1ZVJlZjxQYWdlPiYmIHBhZ2UsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtl
ckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRN
b2RlLCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIpCitTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFn
ZT4mJiBwYWdlLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2Vydmlj
ZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVh
ZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFn
ZVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmIG5vdGlmaWNh
dGlvbkNsaWVudCkKICAgICA6IG1fcGFnZShXVEZNb3ZlKHBhZ2UpKQogICAgICwgbV9kb2N1bWVu
dCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQogICAgICwgbV9yZW1vdGVEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8U2VydmljZVdvcmtl
ckRlYnVnZ2FibGU+KCp0aGlzLCBjb250ZXh0RGF0YSkpCiAjZW5kaWYKLSAgICAsIG1fc2Vydmlj
ZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoV1RGTW92ZShjb250ZXh0
RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUodXNlckFnZW50KSwgd29ya2VyVGhy
ZWFkTW9kZSwgbV9kb2N1bWVudC0+c2V0dGluZ3NWYWx1ZXMoKSwgKnRoaXMsICp0aGlzLCBpZGJD
b25uZWN0aW9uUHJveHkobV9kb2N1bWVudCksIG1fZG9jdW1lbnQtPnNvY2tldFByb3ZpZGVyKCkp
KQorICAgICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0
ZShXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZSh1c2Vy
QWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBtX2RvY3VtZW50LT5zZXR0aW5nc1ZhbHVlcygpLCAq
dGhpcywgKnRoaXMsIGlkYkNvbm5lY3Rpb25Qcm94eShtX2RvY3VtZW50KSwgbV9kb2N1bWVudC0+
c29ja2V0UHJvdmlkZXIoKSwgV1RGTW92ZShub3RpZmljYXRpb25DbGllbnQpLCBtX3BhZ2UtPnNl
c3Npb25JRCgpKSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJv
dmlkZXIpCiAgICAgLCBtX2luc3BlY3RvclByb3h5KCp0aGlzKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuaAppbmRleCA5YjgzNmI3M2Y4MDkuLjBhNGJjN2ZmNDk0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKTsK
IAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHko
VW5pcXVlUmVmPFBhZ2U+JiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29y
a2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUsIENhY2hlU3Rv
cmFnZVByb3ZpZGVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5KFVuaXF1ZVJlZjxQYWdlPiYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2Vydmlj
ZVdvcmtlckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlLCBDYWNo
ZVN0b3JhZ2VQcm92aWRlciYsIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChi
b29sIGlzT25MaW5lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZDBhMTVkOWI5ZGQuLjA4ZjJkNjA2NDc3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMi0wNCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTm90aWZpY2F0aW9uIHJlZmFjdG9yaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxNjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2Vy
KToKKwogMjAyMi0wMi0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODkxMjQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmE3ZmRjN2RlMDU5Li41Y2YyOGZmODkxZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJXZWJEYXRhYmFzZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnRMb2Fk
ZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIldlYk5v
dGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQ
cmVmZXJlbmNlc0tleXMuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCkBAIC0x
NDcsNyArMTQ4LDEzIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3Rh
bGxTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0CiAgICAgICAgIHBhZ2UtPnNl
dHRpbmdzKCkuc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KHN0YXRpY19jYXN0PFN0b3JhZ2VCbG9j
a2luZ1BvbGljeT4obV9wcmVmZXJlbmNlc1N0b3JlLT5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKSk7CiAgICAgfQogICAg
IHBhZ2UtPnNldHVwRm9yUmVtb3RlV29ya2VyKGNvbnRleHREYXRhLnNjcmlwdFVSTCwgY29udGV4
dERhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKSwgY29udGV4dERhdGEucmVmZXJyZXJQ
b2xpY3kpOwotICAgIGF1dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2VydmljZVdvcmtl
clRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgV1RGTW92ZShjb250ZXh0RGF0YSks
IFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUoZWZmZWN0aXZlVXNlckFnZW50KSwgd29ya2Vy
VGhyZWFkTW9kZSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIo
KSk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50PiBu
b3RpZmljYXRpb25DbGllbnQ7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgbm90aWZp
Y2F0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DbGllbnQ+KG51bGxwdHIp
OworI2VuZGlmCisKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZSksIFdURk1vdmUoY29udGV4dERh
dGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKGVmZmVjdGl2ZVVzZXJBZ2VudCksIHdv
cmtlclRocmVhZE1vZGUsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3Zp
ZGVyKCksIFdURk1vdmUobm90aWZpY2F0aW9uQ2xpZW50KSk7CiAKICAgICBpZiAobGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+
c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQobGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQgPT0gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Olllcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450972</attachid>
            <date>2022-02-04 21:25:45 -0800</date>
            <delta_ts>2022-02-05 00:32:19 -0800</delta_ts>
            <desc>EWS v7</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>35409</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDk5NTVlMmNkMjEuLjcxYjQyOTEwNGNlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY2IEBACisyMDIyLTAyLTA0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBOb3RpZmljYXRpb24gcmVmYWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjE2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChObyBiZWhhdmlv
ciBjaGFuZ2UpCisgICAgICAgIAorICAgICAgICBTb21lICJubyBiZWhhdmlvciBjaGFuZ2UiIHJl
ZmFjdG9ycyBicm9rZW4gb3V0IGZyb20gYW4gdXBjb21pbmcgbGFyZ2VyIHBhdGNoLCBpbmNsdWRp
bmc6CisgICAgICAgIC0gTWFrZSBOb3RpZmljYXRpb24gb2JqZWN0cyByZWxpYW50IG9uIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZiBEb2N1bWVudAorICAgICAgICAtIEdpdmUgdGhl
bSBhIGRpcmVjdCBwYXRoIHRvIGEgTm90aWZpY2F0aW9uQ2xpZW50IGluc3RlYWQgb2YgaGF2aW5n
IHRvIGdvIHRocm91Z2ggYSBQYWdlJ3MgTm90aWZpY2F0aW9uQ29udHJvbGxlcgorICAgICAgICAt
IEdpdmUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCdzIGEgc2Vzc2lvbklEKCkgYWNjZXNzb3IgZm9y
IGZ1dHVyZSB1c2UKKyAgICAgICAgLSBTb21lIE5vdGlmaWNhdGlvbiBvYmplY3QgdGhyZWFkaW5n
IGhhcmRlbmluZworCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OnNob3cpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpj
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNsaWVudEZyb21Db250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb246OmRpc3BhdGNoRXJyb3JFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246OnBlcm1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uOjpyZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkb2N1bWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojpub3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNlc3Npb25JRCBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgIAorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpu
b3RpZmljYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
Om1fbm90aWZpY2F0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJU
aHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAgIAorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5Lmg6CisKIDIwMjItMDItMDQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg5MDk4Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmNwcAppbmRleCBlYzRhNjg4NTY2ZDQuLjY4NWIxZTRkMWEzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEsIDIwMTIsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDExLCAyMDEyLCAyMDE2LCAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1LDEyICszNSwxMCBAQAogCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCi0jaW5jbHVk
ZSAiTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEu
aCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCIKICNpbmNsdWRl
ICJXaW5kb3dFdmVudExvb3AuaCIKQEAgLTUyLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTm90aWZpY2F0aW9uKTsKIAotUmVmPE5v
dGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmIG9wdGlvbnMpCitSZWY8Tm90aWZpY2F0aW9u
PiBOb3RpZmljYXRpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24oY29udGV4dCwgdGl0bGUs
IG9wdGlvbnMpKTsKICAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtNjAs
MTcgKzU4LDI0IEBAIFJlZjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKERvY3Vt
ZW50JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjCiAgICAgcmV0dXJuIG5vdGlmaWNh
dGlvbjsKIH0KIAotTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJiBvcHRpb25zKQotICAgIDogQWN0
aXZlRE9NT2JqZWN0KGRvY3VtZW50KQotICAgICwgbV90aXRsZSh0aXRsZSkKK05vdGlmaWNhdGlv
bjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCisgICAgLCBtX3RpdGxlKHRpdGxlLmlzb2xhdGVkQ29weSgpKQogICAgICwg
bV9kaXJlY3Rpb24ob3B0aW9ucy5kaXIpCi0gICAgLCBtX2xhbmcob3B0aW9ucy5sYW5nKQotICAg
ICwgbV9ib2R5KG9wdGlvbnMuYm9keSkKLSAgICAsIG1fdGFnKG9wdGlvbnMudGFnKQorICAgICwg
bV9sYW5nKG9wdGlvbnMubGFuZy5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1fYm9keShvcHRpb25z
LmJvZHkuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3RhZyhvcHRpb25zLnRhZy5pc29sYXRlZENv
cHkoKSkKICAgICAsIG1fc3RhdGUoSWRsZSkKIHsKKyAgICBpZiAoY29udGV4dC5pc0RvY3VtZW50
KCkpCisgICAgICAgIG1fbm90aWZpY2F0aW9uU291cmNlID0gTm90aWZpY2F0aW9uU291cmNlOjpE
b2N1bWVudDsKKyAgICBlbHNlIGlmIChjb250ZXh0LmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KCkpCisgICAgICAgIG1fbm90aWZpY2F0aW9uU291cmNlID0gTm90aWZpY2F0aW9uU291cmNlOjpT
ZXJ2aWNlV29ya2VyOworICAgIGVsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKwogICAgIGlmICghb3B0aW9ucy5pY29uLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRv
IGljb25VUkwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOworICAgICAgICBh
dXRvIGljb25VUkwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKG9wdGlvbnMuaWNvbik7CiAgICAgICAg
IGlmIChpY29uVVJMLmlzVmFsaWQoKSkKICAgICAgICAgICAgIG1faWNvbiA9IGljb25VUkw7CiAg
ICAgfQpAQCAtOTIsMTcgKzk3LDE1IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICBp
ZiAobV9zdGF0ZSAhPSBJZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBwYWdlID0g
ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKKyAgICBhdXRvKiBjbGllbnQgPSBj
bGllbnRGcm9tQ29udGV4dCgpOworICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvJiBjbGllbnQgPSBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5j
bGllbnQoKTsKLQotICAgIGlmIChjbGllbnQuY2hlY2tQZXJtaXNzaW9uKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkgIT0gUGVybWlzc2lvbjo6R3JhbnRlZCkgeworICAgIGlmIChjbGllbnQtPmNo
ZWNrUGVybWlzc2lvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpICE9IFBlcm1pc3Npb246Okdy
YW50ZWQpIHsKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgaWYgKGNsaWVudC5zaG93KCp0aGlzKSkKKyAgICBpZiAoY2xpZW50LT5zaG93
KCp0aGlzKSkKICAgICAgICAgbV9zdGF0ZSA9IFNob3dpbmc7CiB9CiAKQEAgLTExMiw4ICsxMTUs
OCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQogICAgIGNhc2UgSWRsZToKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTaG93aW5nOiB7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gZG9j
dW1lbnQoKS0+cGFnZSgpKQotICAgICAgICAgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJv
bShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKCp0aGlzKTsKKyAgICAgICAgaWYgKGF1dG8qIGNsaWVu
dCA9IGNsaWVudEZyb21Db250ZXh0KCkpCisgICAgICAgICAgICBjbGllbnQtPmNhbmNlbCgqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENsb3NlZDoKQEAgLTEyMSw5ICsx
MjQsMTEgQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKICAgICB9CiB9CiAKLURvY3VtZW50
KiBOb3RpZmljYXRpb246OmRvY3VtZW50KCkgY29uc3QKK05vdGlmaWNhdGlvbkNsaWVudCogTm90
aWZpY2F0aW9uOjpjbGllbnRGcm9tQ29udGV4dCgpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmIChhdXRvKiBjb250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gY29udGV4dC0+bm90
aWZpY2F0aW9uQ2xpZW50KCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGNvbnN0IGNoYXIq
IE5vdGlmaWNhdGlvbjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBAIC0xMzUsOCArMTQw
LDggQEAgdm9pZCBOb3RpZmljYXRpb246OnN0b3AoKQogewogICAgIEFjdGl2ZURPTU9iamVjdDo6
c3RvcCgpOwogCi0gICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAg
ICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNsaWVudCgpLm5vdGlmaWNh
dGlvbk9iamVjdERlc3Ryb3llZCgqdGhpcyk7CisgICAgaWYgKGF1dG8qIGNsaWVudCA9IGNsaWVu
dEZyb21Db250ZXh0KCkpCisgICAgICAgIGNsaWVudC0+bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJv
eWVkKCp0aGlzKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb246OnN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbikKQEAgLTE3MiwxOSArMTc3LDIyIEBAIHZvaWQgTm90aWZpY2F0aW9uOjpkaXNwYXRj
aENsb3NlRXZlbnQoKQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkK
IHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX25vdGlmaWNhdGlv
blNvdXJjZSA9PSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50KTsKKwogICAgIHF1ZXVlVGFz
a1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAotYXV0byBOb3RpZmljYXRpb246OnBlcm1p
c3Npb24oRG9jdW1lbnQmIGRvY3VtZW50KSAtPiBQZXJtaXNzaW9uCithdXRvIE5vdGlmaWNhdGlv
bjo6cGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSAtPiBQZXJtaXNz
aW9uCiB7Ci0gICAgYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2Up
CisgICAgYXV0byogY2xpZW50ID0gY29udGV4dC5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBp
ZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuIFBlcm1pc3Npb246OkRlZmF1bHQ7CiAKLSAgICBp
ZiAoIWRvY3VtZW50LmlzU2VjdXJlQ29udGV4dCgpKQorICAgIGlmICghY29udGV4dC5pc1NlY3Vy
ZUNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIFBlcm1pc3Npb246OkRlbmllZDsKIAotICAgIHJl
dHVybiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKGRvY3VtZW50LnBhZ2UoKSktPmNsaWVu
dCgpLmNoZWNrUGVybWlzc2lvbigmZG9jdW1lbnQpOworICAgIHJldHVybiBjbGllbnQtPmNoZWNr
UGVybWlzc2lvbigmY29udGV4dCk7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVy
bWlzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAg
LTE5Nyw4ICsyMDUsOCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24oRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybQogICAgICAgICB9KTsKICAg
ICB9OwogCi0gICAgYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKLSAgICBpZiAoIXBhZ2Up
CisgICAgYXV0byogY2xpZW50ID0gc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCY+
KGRvY3VtZW50KS5ub3RpZmljYXRpb25DbGllbnQoKTsKKyAgICBpZiAoIWNsaWVudCkKICAgICAg
ICAgcmV0dXJuIHJlc29sdmVQcm9taXNlQW5kQ2FsbGJhY2soUGVybWlzc2lvbjo6RGVuaWVkKTsK
IAogICAgIGlmICghZG9jdW1lbnQuaXNTZWN1cmVDb250ZXh0KCkpIHsKQEAgLTIwNiw3ICsyMTQs
NyBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb24oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybQogICAgICAgICByZXR1cm4gcmVzb2x2ZVByb21p
c2VBbmRDYWxsYmFjayhQZXJtaXNzaW9uOjpEZW5pZWQpOwogICAgIH0KIAotICAgIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNsaWVudCgpLnJlcXVlc3RQZXJtaXNzaW9uKGRv
Y3VtZW50LCBXVEZNb3ZlKHJlc29sdmVQcm9taXNlQW5kQ2FsbGJhY2spKTsKKyAgICBjbGllbnQt
PnJlcXVlc3RQZXJtaXNzaW9uKGRvY3VtZW50LCBXVEZNb3ZlKHJlc29sdmVQcm9taXNlQW5kQ2Fs
bGJhY2spKTsKIH0KIAogdm9pZCBOb3RpZmljYXRpb246OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdl
KCkKQEAgLTIyNywxNSArMjM1LDE5IEBAIGJvb2wgTm90aWZpY2F0aW9uOjp2aXJ0dWFsSGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogTm90aWZpY2F0aW9uRGF0YSBOb3RpZmljYXRpb246OmRh
dGEoKSBjb25zdAogeworICAgIGF1dG8gc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZXNzaW9uSUQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzZXNzaW9uSUQpOworCiAgICAg
cmV0dXJuIHsKLSAgICAgICAgbV90aXRsZSwKLSAgICAgICAgbV9ib2R5LAotICAgICAgICBtX2lj
b24uc3RyaW5nKCksCisgICAgICAgIG1fdGl0bGUuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIG1f
Ym9keS5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgbV9pY29uLnN0cmluZygpLmlzb2xhdGVkQ29w
eSgpLAogICAgICAgICBtX3RhZywKICAgICAgICAgbV9sYW5nLAogICAgICAgICBtX2RpcmVjdGlv
biwKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50
b1N0cmluZygpLAorICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3Jp
Z2luKCktPnRvU3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIGlkZW50aWZpZXIoKSwK
KyAgICAgICAgKnNlc3Npb25JRCwKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggYTA3MzQxM2ZhZThi
Li5mNGE5M2JkNjEwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTEsIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExLCAyMDEyLCAyMDE2LCAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJl
ZFByb21pc2U7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vdGlmaWNhdGlvbkNsaWVudDsKIGNs
YXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjazsKIAogc3RydWN0IE5vdGlmaWNhdGlv
bkRhdGE7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHRhZzsKICAg
ICAgICAgU3RyaW5nIGljb247CiAgICAgfTsKLSAgICBzdGF0aWMgUmVmPE5vdGlmaWNhdGlvbj4g
Y3JlYXRlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYpOwor
ICAgIHN0YXRpYyBSZWY8Tm90aWZpY2F0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmKTsKICAgICAKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKIApAQCAtODUsNyArODYsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmFsaXplKCk7CiAKLSAgICBzdGF0
aWMgUGVybWlzc2lvbiBwZXJtaXNzaW9uKERvY3VtZW50Jik7CisgICAgc3RhdGljIFBlcm1pc3Np
b24gcGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIHZvaWQg
cmVxdWVzdFBlcm1pc3Npb24oRG9jdW1lbnQmLCBSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lv
bkNhbGxiYWNrPiYmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtOTYsOSAr
OTcsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOwog
CiBwcml2YXRlOgotICAgIE5vdGlmaWNhdGlvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IE9wdGlvbnMmKTsKKyAgICBOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbnMmKTsKIAotICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OworICAgIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50RnJv
bUNvbnRleHQoKTsKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE5vdGlmaWNhdGlvbkV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsgfQogCiAgICAgdm9pZCBzaG93U29vbigpOwpAQCAtMTI0LDYgKzEyNSwxMiBAQCBwcml2
YXRlOgogICAgIGVudW0gU3RhdGUgeyBJZGxlLCBTaG93aW5nLCBDbG9zZWQgfTsKICAgICBTdGF0
ZSBtX3N0YXRlIHsgSWRsZSB9OwogICAgIGJvb2wgbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXIg
eyBmYWxzZSB9OworCisgICAgZW51bSBjbGFzcyBOb3RpZmljYXRpb25Tb3VyY2UgOiBib29sIHsK
KyAgICAgICAgRG9jdW1lbnQsCisgICAgICAgIFNlcnZpY2VXb3JrZXIsCisgICAgfTsKKyAgICBO
b3RpZmljYXRpb25Tb3VyY2UgbV9ub3RpZmljYXRpb25Tb3VyY2U7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggN2ExNzhkZmI4M2Q3Li5hOGIzMGIy
ZjM3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTY4LDcgKzY4LDYgQEAgcHVibGljOgogICAg
IC8vIENoZWNrcyB0aGUgY3VycmVudCBsZXZlbCBvZiBwZXJtaXNzaW9uLgogICAgIHZpcnR1YWwg
UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopID0gMDsK
IAotcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbkNsaWVudCgpID0gZGVmYXVs
dDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uRGF0YS5oCmluZGV4IDY3NGJjYjFkN2IyZi4uYmNkZGUzYzA1ODc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25EYXRhLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8b3B0aW9uYWw+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9V
VUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQ1LDEyICs0Niwx
MyBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YSB7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBTdHJpbmcgb3JpZ2luU3RyaW5nOwogICAgIFVVSUQg
bm90aWZpY2F0aW9uSUQ7CisgICAgUEFMOjpTZXNzaW9uSUQgc291cmNlU2Vzc2lvbjsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE5vdGlmaWNhdGlvbkRhdGE6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYm9keSA8
PCBpY29uVVJMIDw8IHRhZyA8PCBsYW5ndWFnZSA8PCBkaXJlY3Rpb24gPDwgb3JpZ2luU3RyaW5n
IDw8IG5vdGlmaWNhdGlvbklEOworICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYm9keSA8PCBpY29u
VVJMIDw8IHRhZyA8PCBsYW5ndWFnZSA8PCBkaXJlY3Rpb24gPDwgb3JpZ2luU3RyaW5nIDw8IG5v
dGlmaWNhdGlvbklEIDw8IHNvdXJjZVNlc3Npb247CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CkBAIC05Niw2ICs5OCwxMSBAQCBzdGQ6Om9wdGlvbmFsPE5vdGlmaWNhdGlvbkRhdGE+IE5v
dGlmaWNhdGlvbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghbm90aWZp
Y2F0aW9uSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICBzdGQ6Om9wdGlv
bmFsPFBBTDo6U2Vzc2lvbklEPiBzb3VyY2VTZXNzaW9uOworICAgIGRlY29kZXIgPj4gc291cmNl
U2Vzc2lvbjsKKyAgICBpZiAoIXNvdXJjZVNlc3Npb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKICAgICByZXR1cm4geyB7CiAgICAgICAgIFdURk1vdmUoKnRpdGxlKSwKICAgICAg
ICAgV1RGTW92ZSgqYm9keSksCkBAIC0xMDUsNiArMTEyLDcgQEAgc3RkOjpvcHRpb25hbDxOb3Rp
ZmljYXRpb25EYXRhPiBOb3RpZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgV1RGTW92ZSgqZGlyZWN0aW9uKSwKICAgICAgICAgV1RGTW92ZSgqb3JpZ2luU3Ry
aW5nKSwKICAgICAgICAgV1RGTW92ZSgqbm90aWZpY2F0aW9uSUQpLAorICAgICAgICBXVEZNb3Zl
KCpzb3VyY2VTZXNzaW9uKSwKICAgICB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IGRkYTgxOWEzNDE4Ni4uYjA4NjcxZmE3OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTE2MCw2ICsxNjAsNyBAQAogI2luY2x1ZGUgIk5vZGVJdGVyYXRvci5oIgogI2luY2x1ZGUg
Ik5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVXaXRoSW5kZXguaCIKKyNpbmNsdWRlICJO
b3RpZmljYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCkBAIC05
MDY0LDYgKzkwNjUsMjcgQEAgdm9pZCBEb2N1bWVudDo6d2hlblZpc2libGUoRnVuY3Rpb248dm9p
ZCgpPiYmIGNhbGxiYWNrKQogICAgIGNhbGxiYWNrKCk7CiB9CiAKK05vdGlmaWNhdGlvbkNsaWVu
dCogRG9jdW1lbnQ6Om5vdGlmaWNhdGlvbkNsaWVudCgpCit7CisjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCisgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuICZOb3RpZmljYXRpb25Db250cm9s
bGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7Cisj
ZW5kaWYKK30KKworc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gRG9jdW1lbnQ6OnNlc3Np
b25JRCgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisgICAg
ICAgIHJldHVybiBwYWdlLT5zZXNzaW9uSUQoKTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIERPQ1VNRU5UX1JFTEVBU0Vf
TE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNhOGM2M2FkZjdlMC4uNGRkN2QzNmNlMjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTc5Niw2ICsxNzk2LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFkZFRvRG9jdW1lbnRzTWFwKCk7CiAgICAgdm9pZCByZW1vdmVGcm9tRG9jdW1lbnRzTWFw
KCk7CiAKKyAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgpIGZpbmFs
OworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRCgpIGNvbnN0IGZp
bmFsOworCiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRpbmdzOwogCiAgICAg
VW5pcXVlUmVmPFF1aXJrcz4gbV9xdWlya3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAppbmRleCA1NjkzMjEzNTRlM2QuLmQwMDBkNTlkNWEwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25z
b2xlVHlwZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYW5kbGVUeXBlcy5oPgorI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAg
LTY4LDYgKzY5LDcgQEAgY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogY2xhc3MgRXZlbnRUYXJn
ZXQ7CiBjbGFzcyBGb250TG9hZFJlcXVlc3Q7CiBjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIE5v
dGlmaWNhdGlvbkNsaWVudDsKIGNsYXNzIFBlcm1pc3Npb25Db250cm9sbGVyOwogY2xhc3MgUHVi
bGljVVJMTWFuYWdlcjsKIGNsYXNzIFJlamVjdGVkUHJvbWlzZVRyYWNrZXI7CkBAIC05NCw2ICs5
Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNXb3JrZXJHbG9iYWxTY29wZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNT
aGFkb3dSZWFsbUdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNXb3JrbGV0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CkBAIC0xMTIsNiArMTE1LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBTZXR0aW5n
czo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgTm90
aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSB7IHJldHVybiBudWxscHRyOyB9
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
RXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDQwNjcxNzNhODlhNS4uOGY3
NDI3NDY3MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC02
MSw3ICs2MSw4IEBAIFdvcmtlclBhcmFtZXRlcnMgV29ya2VyUGFyYW1ldGVyczo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAgICAgY3JlZGVudGlhbHMsCiAg
ICAgICAgIHNldHRpbmdzVmFsdWVzLmlzb2xhdGVkQ29weSgpLAotICAgICAgICB3b3JrZXJUaHJl
YWRNb2RlCisgICAgICAgIHdvcmtlclRocmVhZE1vZGUsCisgICAgICAgIHNlc3Npb25JRCwKICAg
ICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCA0N2Q1YzRm
YjFmOTEuLmNmNTBjMzY4YWU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03Myw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICBGZXRjaFJlcXVlc3RDcmVkZW50
aWFscyBjcmVkZW50aWFsczsKICAgICBTZXR0aW5nczo6VmFsdWVzIHNldHRpbmdzVmFsdWVzOwog
ICAgIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSB7IFdvcmtlclRocmVhZE1vZGU6
OkNyZWF0ZU5ld1RocmVhZCB9OworICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNl
c3Npb25JRCB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgV29ya2VyUGFyYW1ldGVycyBpc29sYXRl
ZENvcHkoKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDYwNzFkODY4MWE5
Yy4uOTA0ZDRmYzg4Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNTAsMjAgKzUwLDIy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSk7CiAKLVJlZjxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgU2Vy
dmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2lu
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQ
cm92aWRlciogc29ja2V0UHJvdmlkZXIpCitSZWY8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBjb25zdCBXb3Jr
ZXJQYXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFNlcnZp
Y2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJv
dmlkZXIqIHNvY2tldFByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50
PiYmIG5vdGlmaWNhdGlvbkNsaWVudCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAg
IGF1dG8gc2NvcGUgPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB7IFdU
Rk1vdmUoY29udGV4dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBwYXJhbXMsIFdURk1vdmUo
b3JpZ2luKSwgdGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29j
a2V0UHJvdmlkZXIgfSk7CisgICAgYXV0byBzY29wZSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlIHsgV1RGTW92ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0
YSksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCB0aHJlYWQsIFdURk1vdmUodG9wT3JpZ2luKSwg
Y29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgV1RGTW92ZShub3RpZmljYXRpb25DbGll
bnQpLCBzZXNzaW9uSUQgfSk7CiAgICAgc2NvcGUtPmFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzKHBhcmFtcy5jb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMpOwogICAgIHNjb3BlLT5ub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vz
c2FyeSgpOwogICAgIHJldHVybiBzY29wZTsKIH0KIAotU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
OjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29u
dGV4dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgY29uc3QgV29ya2VyUGFy
YW1ldGVycyYgcGFyYW1zLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBTZXJ2aWNlV29y
a2VyVGhyZWFkJiB0aHJlYWQsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVy
KiBzb2NrZXRQcm92aWRlcikKK1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2
aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFt
cywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgU2VydmljZVdvcmtlclRocmVhZCYgdGhy
ZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlk
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYgbm90aWZpY2F0aW9uQ2xp
ZW50LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgOiBXb3JrZXJHbG9iYWxTY29wZShX
b3JrZXJUaHJlYWRUeXBlOjpTZXJ2aWNlV29ya2VyLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwg
dGhyZWFkLCBXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlk
ZXIpCiAgICAgLCBtX2NvbnRleHREYXRhKFdURk1vdmUoY29udGV4dERhdGEpKQogICAgICwgbV9y
ZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnRoaXMs
IG5hdmlnYXRvcigpLnNlcnZpY2VXb3JrZXIoKSwgV1RGTW92ZShtX2NvbnRleHREYXRhLnJlZ2lz
dHJhdGlvbikpKQogICAgICwgbV9zZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXI6OmdldE9yQ3Jl
YXRlKCp0aGlzLCBXVEZNb3ZlKHdvcmtlckRhdGEpKSkKICAgICAsIG1fY2xpZW50cyhTZXJ2aWNl
V29ya2VyQ2xpZW50czo6Y3JlYXRlKCkpCisgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisg
ICAgLCBtX25vdGlmaWNhdGlvbkNsaWVudChXVEZNb3ZlKG5vdGlmaWNhdGlvbkNsaWVudCkpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBmZjAyNWEyN2U3YmIuLjA3MDc5ZjE5NTM0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgi
CkBAIC00NiwxMCArNDcsMTIgQEAgY2xhc3MgU2VydmljZVdvcmtlclRocmVhZDsKIGNsYXNzIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSBmaW5hbCA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIGNvbnN0IFdv
cmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJl
YWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2Vydmlj
ZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmln
aW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBzdGQ6
OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAg
ICB+U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCk7CiAKKyAgICBib29sIGlzU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudHMmIGNsaWVudHMoKSB7IHJldHVybiBtX2NsaWVudHMuZ2V0KCk7IH0KICAg
ICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24oKSB7IHJldHVybiBtX3Jl
Z2lzdHJhdGlvbi5nZXQoKTsgfQogICAgIFNlcnZpY2VXb3JrZXImIHNlcnZpY2VXb3JrZXIoKSB7
IHJldHVybiBtX3NlcnZpY2VXb3JrZXIuZ2V0KCk7IH0KQEAgLTc5LDEyICs4MiwxNSBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogc2VydmljZVdvcmtlclBhZ2UoKTsKICAgICAK
IHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2Nr
ZXRQcm92aWRlciopOworICAgIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVy
cyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Kiwg
U29ja2V0UHJvdmlkZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmLCBQ
QUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRp
b25JZk5lY2Vzc2FyeSgpOwogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
VHlwZTo6U2VydmljZVdvcmtlcjsgfQogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0
IHsgcmV0dXJuICFtX2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCisgICAgTm90aWZpY2F0
aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbCB7IHJldHVybiBtX25vdGlmaWNh
dGlvbkNsaWVudC5nZXQoKTsgfQorICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNl
c3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CisKICAgICBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgbV9jb250ZXh0RGF0YTsKICAgICBSZWY8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbj4gbV9yZWdpc3RyYXRpb247CiAgICAgUmVmPFNlcnZpY2VXb3JrZXI+IG1f
c2VydmljZVdvcmtlcjsKQEAgLTk0LDYgKzEwMCw4IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRf
dCBtX2xhc3RSZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8RGVmZXJyZWRQcm9taXNlPj4gbV9wZW5kaW5nU2tpcFdhaXRpbmdQcm9taXNlczsKKyAg
ICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZp
Y2F0aW9uQ2xpZW50PiBtX25vdGlmaWNhdGlvbkNsaWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggMjYwZGJiZDNlNjYyLi44
YzgxYzdiMTA3ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIGEgdmFsaWQgV29ya2VyT2JqZWN0UHJveHkKIC8v
IEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCi1zdGF0aWMgV29ya2VyUGFyYW1ldGVy
cyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiBjb250ZXh0RGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlIHdvcmtl
clRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzKQorc3Rh
dGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29y
a2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBz
ZXR0aW5nc1ZhbHVlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHJldHVybiB7
CiAgICAgICAgIGNvbnRleHREYXRhLnNjcmlwdFVSTCwKQEAgLTkyLDEyICs5MiwxMyBAQCBzdGF0
aWMgV29ya2VyUGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJgogICAgICAgICBjb250ZXh0RGF0YS53b3JrZXJUeXBlLAogICAg
ICAgICBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwKICAgICAgICAgc2V0dGluZ3NWYWx1
ZXMsCi0gICAgICAgIHdvcmtlclRocmVhZE1vZGUKKyAgICAgICAgd29ya2VyVGhyZWFkTW9kZSwK
KyAgICAgICAgc2Vzc2lvbklECiAgICAgfTsKIH0KIAotU2VydmljZVdvcmtlclRocmVhZDo6U2Vy
dmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwg
U2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtl
clRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0
dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdn
ZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlk
YkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDog
V29ya2VyVGhyZWFkKGdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyhjb250ZXh0RGF0YSwgV1RGTW92
ZSh1c2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBzZXR0aW5nc1ZhbHVlcyksIGNvbnRleHRE
YXRhLnNjcmlwdCwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtl
clRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNv
bnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5n
ZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxh
Z3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKK1NlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3Jr
ZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VX
b3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRN
b2RlIHdvcmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFs
dWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkm
IGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0
aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRy
PE5vdGlmaWNhdGlvbkNsaWVudD4mJiBub3RpZmljYXRpb25DbGllbnQsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKKyAgICA6IFdvcmtlclRocmVhZChnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMo
Y29udGV4dERhdGEsIFdURk1vdmUodXNlckFnZW50KSwgd29ya2VyVGhyZWFkTW9kZSwgc2V0dGlu
Z3NWYWx1ZXMsIHNlc3Npb25JRCksIGNvbnRleHREYXRhLnNjcmlwdCwgbG9hZGVyUHJveHksIGRl
YnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXku
dG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBz
b2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKICAg
ICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoY29udGV4dERhdGEuc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpCiAgICAgLCBtX2pvYkRhdGFJZGVudGlmaWVyKGNvbnRleHREYXRhLmpvYkRhdGFJ
ZGVudGlmaWVyKQogICAgICwgbV9jb250ZXh0RGF0YShjcm9zc1RocmVhZENvcHkoV1RGTW92ZShj
b250ZXh0RGF0YSkpKQpAQCAtMTA1LDYgKzEwNiw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNl
cnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEs
CiAgICAgLCBtX3dvcmtlck9iamVjdFByb3h5KER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpzaGFyZWQoKSkKICAgICAsIG1faGVhcnRCZWF0VGltZW91dChzZXR0aW5nc1ZhbHVlcy5zaG91
bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0ID8gaGVhcnRCZWF0VGltZW91dEZvclRlc3Qg
OiBoZWFydEJlYXRUaW1lb3V0KQogICAgICwgbV9oZWFydEJlYXRUaW1lciB7ICp0aGlzLCAmU2Vy
dmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJGaXJlZCB9CisgICAgLCBtX25vdGlmaWNh
dGlvbkNsaWVudChXVEZNb3ZlKG5vdGlmaWNhdGlvbkNsaWVudCkpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBdG9tU3RyaW5nOjppbml0KCk7CkBAIC0xMTUsNyArMTE3LDgg
QEAgU2VydmljZVdvcmtlclRocmVhZDo6flNlcnZpY2VXb3JrZXJUaHJlYWQoKSA9IGRlZmF1bHQ7
CiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbikKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChtX2NvbnRleHREYXRhKTsKLSAgICByZXR1cm4gU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjpjcmVhdGUoKnN0ZDo6ZXhjaGFuZ2UobV9jb250ZXh0RGF0YSwgc3RkOjpu
dWxsb3B0KSwgKnN0ZDo6ZXhjaGFuZ2UobV93b3JrZXJEYXRhLCBzdGQ6Om51bGxvcHQpLCBwYXJh
bXMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVj
dGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHBhcmFt
cy5zZXNzaW9uSUQpOworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0
ZSgqc3RkOjpleGNoYW5nZShtX2NvbnRleHREYXRhLCBzdGQ6Om51bGxvcHQpLCAqc3RkOjpleGNo
YW5nZShtX3dvcmtlckRhdGEsIHN0ZDo6bnVsbG9wdCksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4p
LCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0
UHJvdmlkZXIoKSwgV1RGTW92ZShtX25vdGlmaWNhdGlvbkNsaWVudCksICpwYXJhbXMuc2Vzc2lv
bklEKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5oCmluZGV4IDg4YjY1ZGU4MDMwYS4uNzU2NmI0ZDRhOWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRl
ICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCkBA
IC04NSw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWQo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIFN0cmluZyYm
IHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIElEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2
aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2Vy
RGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRp
bmdzOjpWYWx1ZXMmLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2VyUHJveHkmLCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgc3RkOjp1bmlx
dWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgQVND
SUlMaXRlcmFsIHRocmVhZE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViQ29yZTogU2Vy
dmljZVdvcmtlciJfczsgfQogICAgIHZvaWQgZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KCkgZmlu
YWw7CkBAIC0xMTksNiArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3RleHByIFNl
Y29uZHMgaGVhcnRCZWF0VGltZW91dEZvclRlc3QgeyAxX3MgfTsKICAgICBTZWNvbmRzIG1faGVh
cnRCZWF0VGltZW91dCB7IGhlYXJ0QmVhdFRpbWVvdXQgfTsKICAgICBUaW1lciBtX2hlYXJ0QmVh
dFRpbWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+IG1fbm90aWZp
Y2F0aW9uQ2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggNGNlNzRlMGNiYThmLi5hOTRlNmQxZTc2NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtNjIsMTMgKzYyLDEz
IEBAIHN0YXRpYyBIYXNoU2V0PFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSo+JiBhbGxTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveGllcygpCiAgICAgcmV0dXJuIHNldDsKIH0KIAotU2VydmljZVdvcmtl
clRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYg
cGFnZSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3Jr
ZXJEYXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2Rl
IHdvcmtlclRocmVhZE1vZGUsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92
aWRlcikKK1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
KFVuaXF1ZVJlZjxQYWdlPiYmIHBhZ2UsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRl
eHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2Vu
dCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBDYWNoZVN0b3JhZ2VQcm92aWRl
ciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGll
bnQ+JiYgbm90aWZpY2F0aW9uQ2xpZW50KQogICAgIDogbV9wYWdlKFdURk1vdmUocGFnZSkpCiAg
ICAgLCBtX2RvY3VtZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgLCBtX3JlbW90ZURlYnVnZ2FibGUobWFrZVVuaXF1
ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGNvbnRleHREYXRhKSkKICNlbmRpZgot
ICAgICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShX
VEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZSh1c2VyQWdl
bnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBtX2RvY3VtZW50LT5zZXR0aW5nc1ZhbHVlcygpLCAqdGhp
cywgKnRoaXMsIGlkYkNvbm5lY3Rpb25Qcm94eShtX2RvY3VtZW50KSwgbV9kb2N1bWVudC0+c29j
a2V0UHJvdmlkZXIoKSkpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtl
clRocmVhZDo6Y3JlYXRlKFdURk1vdmUoY29udGV4dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEp
LCBXVEZNb3ZlKHVzZXJBZ2VudCksIHdvcmtlclRocmVhZE1vZGUsIG1fZG9jdW1lbnQtPnNldHRp
bmdzVmFsdWVzKCksICp0aGlzLCAqdGhpcywgaWRiQ29ubmVjdGlvblByb3h5KG1fZG9jdW1lbnQp
LCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigpLCBXVEZNb3ZlKG5vdGlmaWNhdGlvbkNsaWVu
dCksIG1fcGFnZS0+c2Vzc2lvbklEKCkpKQogICAgICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcihj
YWNoZVN0b3JhZ2VQcm92aWRlcikKICAgICAsIG1faW5zcGVjdG9yUHJveHkoKnRoaXMpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IDliODM2YjczZjgwOS4uMGE0YmM3
ZmY0OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtOTEsNyArOTEs
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCgpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eShVbmlxdWVSZWY8UGFnZT4mJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFk
TW9kZSwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkoVW5pcXVlUmVmPFBhZ2U+JiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRo
cmVhZE1vZGUsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNh
dGlvbkNsaWVudD4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBuZXR3b3Jr
U3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNkMGExNWQ5YjlkZC4u
MDhmMmQ2MDY0NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTAyLTA0ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBOb3RpZmljYXRpb24gcmVm
YWN0b3JpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNjE2OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFs
bFNlcnZpY2VXb3JrZXIpOgorCiAyMDIyLTAyLTA0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4OTEyNC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA2YTdmZGM3ZGUwNTkuLjVj
ZjI4ZmY4OTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJX
ZWJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgog
I2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2Vz
U3RvcmUuaCIKQEAgLTE0Nyw3ICsxNDgsMTMgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlckNvbnRleHREYXQKICAg
ICAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc3RhdGljX2Nh
c3Q8U3RvcmFnZUJsb2NraW5nUG9saWN5PihtX3ByZWZlcmVuY2VzU3RvcmUtPmdldFVJbnQzMlZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXkoKSkp
KTsKICAgICB9CiAgICAgcGFnZS0+c2V0dXBGb3JSZW1vdGVXb3JrZXIoY29udGV4dERhdGEuc2Ny
aXB0VVJMLCBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLCBjb250ZXh0
RGF0YS5yZWZlcnJlclBvbGljeSk7Ci0gICAgYXV0byBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkg
PSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBhZ2UpLCBXVEZNb3Zl
KGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZShlZmZlY3RpdmVVc2Vy
QWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0
b3JhZ2VQcm92aWRlcigpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOb3RpZmlj
YXRpb25DbGllbnQ+IG5vdGlmaWNhdGlvbkNsaWVudDsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKKyAgICBub3RpZmljYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNs
aWVudD4obnVsbHB0cik7CisjZW5kaWYKKworICAgIGF1dG8gc2VydmljZVdvcmtlclRocmVhZFBy
b3h5ID0gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlKSwgV1RG
TW92ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUoZWZmZWN0aXZl
VXNlckFnZW50KSwgd29ya2VyVGhyZWFkTW9kZSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2Fj
aGVTdG9yYWdlUHJvdmlkZXIoKSwgV1RGTW92ZShub3RpZmljYXRpb25DbGllbnQpKTsKIAogICAg
IGlmIChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKICAgICAgICAgc2VydmljZVdvcmtl
clRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCA9PSBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZDo6WWVzKTsK
</data>
<flag name="commit-queue"
          id="477545"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>