<?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>290262</bug_id>
          
          <creation_ts>2025-03-22 11:25:28 -0700</creation_ts>
          <short_desc>[Cleanup] Move functions from RenderObject to RenderElement (cont...)</short_desc>
          <delta_ts>2025-03-24 07:23:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>290309</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2105309</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2025-03-22 11:25:28 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2105310</commentid>
    <comment_count>1</comment_count>
      <attachid>474689</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-03-22 11:27:38 -0700</bug_when>
    <thetext>Created attachment 474689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2105326</commentid>
    <comment_count>2</comment_count>
      <attachid>474690</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-03-22 13:35:09 -0700</bug_when>
    <thetext>Created attachment 474690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2105327</commentid>
    <comment_count>3</comment_count>
      <attachid>474691</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-03-22 13:52:44 -0700</bug_when>
    <thetext>Created attachment 474691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2105331</commentid>
    <comment_count>4</comment_count>
      <attachid>474692</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-03-22 14:13:31 -0700</bug_when>
    <thetext>Created attachment 474692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2105362</commentid>
    <comment_count>5</comment_count>
      <attachid>474693</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-03-22 18:21:38 -0700</bug_when>
    <thetext>Created attachment 474693
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2105549</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-03-24 05:37:51 -0700</bug_when>
    <thetext>Committed 292590@main (d3c34bc2d162): &lt;https://commits.webkit.org/292590@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 474693.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2105550</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-03-24 05:38:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/147741469&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2105564</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2025-03-24 07:23:49 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 290309</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474689</attachid>
            <date>2025-03-22 11:27:38 -0700</date>
            <delta_ts>2025-03-22 13:48:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-290262-20250322112737.patch</filename>
            <type>text/plain</type>
            <size>37046</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA5MmM0ZTJjNmIyNTQ3NzQ3NDEzMDUzNTJmODRmOTIyZWRlODgzZDc1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjIgTWFyIDIwMjUgMTE6MjU6MzYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbQ2xlYW51
cF0gTW92ZSBmdW5jdGlvbnMgZnJvbSBSZW5kZXJPYmplY3QgdG8gUmVuZGVyRWxlbWVudAogKGNv
bnQuLi4pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTAyNjIKClJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBpcyBhIGJpdCBvZiBhIG1peCBvZiBtb3Zl
IGFuZCB1c2UgUmVuZGVyRWxlbWVudCB3aGVyZSBhcHBsaWNhYmxlLgoKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVzLmg6CihXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVJdGVyYXRvcjo6YXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yIGNvbnN0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIgY29uc3QpOgooV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OnB1c2hPbnRvVHJhbnNmb3JtU3RhdGUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmg6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmlzQXRvbWlj
SW5saW5lTGV2ZWxCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
ZW9tZXRyeU1hcC5jcHA6CihXZWJDb3JlOjpjYW5NYXBCZXR3ZWVuUmVuZGVyZXJzVmlhTGF5ZXJz
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIg
Y29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoT250b1RyYW5zZm9y
bVN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0RnJv
bUFuY2VzdG9yQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9y
bVJlbGF0ZWRQcm9wZXJ0eSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdElubGluZXMuaDoKKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aGFzVHJhbnNmb3JtT3JQ
ZXJzcGVjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQXRv
bWljSW5saW5lTGV2ZWxCb3ggY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
cHJlc2VydmVzTmV3bGluZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaDoKKFdlYkNvcmU6OnNob3VsZENvbGxhcHNlV2hp
dGVTcGFjZSk6CihXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3gpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHA6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OlJl
bmRlclRyZWVCdWlsZGVyOjphdHRhY2hJbnRlcm5hbCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6YXR0YWNoVG9SZW5kZXJFbGVtZW50SW50ZXJuYWwpOgooV2ViQ29yZTo6UmVuZGVyVHJl
ZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lQ2hpbGRyZW5JZk5lZWRl
ZCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6cmVwb3J0VmlzdWFsbHlOb25FbXB0eUNv
bnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlckJsb2NrLmNwcDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6aW5zZXJ0
Q2hpbGRUb0NvbnRpbnVhdGlvbik6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwOgooV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6Ok11bHRpQ29sdW1uOjpyZXNvbHZlTW92ZWRDaGlsZCk6CihXZWJDb3JlOjpSZW5kZXJU
cmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46Om11bHRpQ29sdW1uUmVsYXRpdmVXaWxsQmVSZW1vdmVk
KToKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6aGFuZGxlU3Bhbm5l
clJlbW92YWwpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlck11bHRpQ29sdW1uLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHA6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6
UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZCk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNw
cDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50
Rm9yQ2hpbGQpOgotLS0KIC4uLi9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVz
LmggICB8ICA1ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
ICAgfCA3NiArKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oICAgICAgfCAgOSArKysKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50SW5saW5lcy5oICB8ICAzICsKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5jcHAgICB8ICAzICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCAgICAgfCA3NCAtLS0tLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCAgICAgICB8IDExIC0tLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdElubGluZXMuaCAgIHwgIDUgLS0KIC4uLi9yZW5kZXJpbmcvbGluZS9MaW5l
SW5saW5lSGVhZGVycy5oICAgICAgICB8IDEyICstLQogLi4uL3N2Zy9TVkdCb3VuZGluZ0JveENv
bXB1dGF0aW9uLmNwcCAgICAgICAgIHwgIDIgKy0KIC4uLi9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwICB8ICA4ICstCiAuLi4vdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJCbG9jay5jcHAgICAgICAgfCAgMiArLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uY3BwIHwgMTUgKystLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uaCAgIHwgIDIgKy0KIC4uLi91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1
YnkuY3BwICAgICAgICB8ICA2ICstCiAuLi4vdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5
LmggICAgICAgICAgfCAgMiArLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwICAgICAgIHwgIDIgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDExOCBpbnNlcnRpb25zKCspLCAx
MTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUl0ZXJhdG9ySW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUl0ZXJhdG9ySW5saW5lcy5oCmluZGV4IDEyZDlmNWYwMTE0OS4uYTVhMGZjZDY5
MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRl
cmF0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZUl0ZXJhdG9ySW5saW5lcy5oCkBAIC0yNiwxMCArMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGlubGluZSBib29sIExlZ2FjeUlubGluZUl0ZXJhdG9yOjphdFRleHRQYXJhZ3JhcGhTZXBh
cmF0b3IoKSBjb25zdAogewotICAgIGF1dG8qIHRleHRSZW5kZXJlciA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKTsKLSAgICByZXR1cm4gdGV4dFJlbmRlcmVyCi0gICAg
ICAgICYmIG1fcmVuZGVyZXItPnByZXNlcnZlc05ld2xpbmUoKQotICAgICAgICAmJiB0ZXh0UmVu
ZGVyZXItPmNoYXJhY3RlckF0KG1fcG9zKSA9PSAnXG4nOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogaW5saW5lIGJvb2wgTGVnYWN5SW5saW5lSXRlcmF0b3I6OmF0UGFyYWdyYXBoU2VwYXJhdG9y
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRl
eCA3NThhZDI2NmQxZjQuLjgxZjNiMTYxNWNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjE4NCw2ICsyMTg0LDI4IEBAIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBsYXllck1vZGVs
T2JqZWN0Lmhhc1NlbGZQYWludGluZ0xheWVyKCk7CiB9CiAKK0xheW91dFNpemUgUmVuZGVyRWxl
bWVudDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIGNv
bnRhaW5lcikgY29uc3QKK3sKKyAgICBMYXlvdXRTaXplIG9mZnNldDsKKyAgICBMYXlvdXRQb2lu
dCByZWZlcmVuY2VQb2ludDsKKyAgICBDaGVja2VkUHRyIGN1cnJlbnRDb250YWluZXIgPSB0aGlz
OworICAgIGRvIHsKKyAgICAgICAgQ2hlY2tlZFB0ciBuZXh0Q29udGFpbmVyID0gY3VycmVudENv
bnRhaW5lci0+Y29udGFpbmVyKCk7CisgICAgICAgIEFTU0VSVChuZXh0Q29udGFpbmVyKTsKKyAg
ICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKSB7CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdl
IHJlYWNoZWQgdGhlIHRvcCB3aXRob3V0IGZpbmRpbmcgY29udGFpbmVyLgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFjdXJyZW50Q29udGFpbmVyLT5pc1Ry
YW5zZm9ybWVkKCkpOworICAgICAgICBMYXlvdXRTaXplIGN1cnJlbnRPZmZzZXQgPSBjdXJyZW50
Q29udGFpbmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKCpuZXh0Q29udGFpbmVyLCByZWZlcmVuY2VQ
b2ludCk7CisgICAgICAgIG9mZnNldCArPSBjdXJyZW50T2Zmc2V0OworICAgICAgICByZWZlcmVu
Y2VQb2ludC5tb3ZlKGN1cnJlbnRPZmZzZXQpOworICAgICAgICBjdXJyZW50Q29udGFpbmVyID0g
V1RGTW92ZShuZXh0Q29udGFpbmVyKTsKKyAgICB9IHdoaWxlIChjdXJyZW50Q29udGFpbmVyICE9
ICZjb250YWluZXIpOworCisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogdm9pZCBSZW5kZXJFbGVt
ZW50OjpwdXNoT250b0dlb21ldHJ5TWFwKFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCwg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgUmVuZGVyRWxl
bWVudCogY29udGFpbmVyLCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0CiB7CiAgICAgYm9v
bCBpc0ZpeGVkUG9zID0gaXNGaXhlZFBvc2l0aW9uZWQoKTsKQEAgLTI3MTAsNCArMjczMiw1OCBA
QCB2b2lkIFJlbmRlckVsZW1lbnQ6OmxheW91dElmTmVlZGVkKCkKICAgICBsYXlvdXQoKTsKIH0K
IAorYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lck9iamVjdCkgY29uc3QKK3sKKyAgICBpZiAoaXNU
cmFuc2Zvcm1lZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGFzTGF5ZXIoKSAm
JiBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKS0+c25hcHNo
b3R0ZWRTY3JvbGxPZmZzZXRGb3JBbmNob3JQb3NpdGlvbmluZygpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoY29udGFpbmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUo
KS5oYXNQZXJzcGVjdGl2ZSgpKQorICAgICAgICByZXR1cm4gY29udGFpbmVyT2JqZWN0ID09IHBh
cmVudCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gRklYTUU6IE5vdyB0aGF0IGl0J3Mg
bm8gbG9uZ2VyIHBhc3NlZCBhIGNvbnRhaW5lciBtYXliZSB0aGlzIHNob3VsZCBiZSByZW5hbWVk
Pwordm9pZCBSZW5kZXJFbGVtZW50OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExh
eW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKSBjb25zdAoreworICAgIHRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKKyAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKG9mZnNldEluQ29udGFpbmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVy
LmhlaWdodCgpKTsKKyAgICBDaGVja2VkUHRyPFJlbmRlckxheWVyPiBsYXllcjsKKyAgICBpZiAo
aGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0Pigq
dGhpcykubGF5ZXIoKSkgJiYgbGF5ZXItPnRyYW5zZm9ybSgpKQorICAgICAgICB0cmFuc2Zvcm0u
bXVsdGlwbHkobGF5ZXItPmN1cnJlbnRUcmFuc2Zvcm0oKSk7CisKKyAgICBDaGVja2VkUHRyIHBl
cnNwZWN0aXZlT2JqZWN0ID0gcGFyZW50KCk7CisKKyAgICBpZiAocGVyc3BlY3RpdmVPYmplY3Qg
JiYgcGVyc3BlY3RpdmVPYmplY3QtPmhhc0xheWVyKCkgJiYgcGVyc3BlY3RpdmVPYmplY3QtPnN0
eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkgeworICAgICAgICAvLyBQZXJwc2VjdGl2ZSBvbiB0aGUg
Y29udGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdlIGhhdmUgdG8gZmFjdG9yIGl0IGluIGhlcmUuCisg
ICAgICAgIEFTU0VSVChwZXJzcGVjdGl2ZU9iamVjdC0+aGFzTGF5ZXIoKSk7CisgICAgICAgIEZs
b2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0PigqcGVyc3BlY3RpdmVPYmplY3QpLmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7CisK
KyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CisgICAgICAg
IHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVPYmplY3QtPnN0
eWxlKCkudXNlZFBlcnNwZWN0aXZlKCkpOworCisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGVS
aWdodDNkKC1wZXJzcGVjdGl2ZU9yaWdpbi54KCksIC1wZXJzcGVjdGl2ZU9yaWdpbi55KCksIDAp
OworICAgICAgICB0cmFuc2Zvcm0gPSBwZXJzcGVjdGl2ZU1hdHJpeCAqIHRyYW5zZm9ybTsKKyAg
ICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QocGVyc3BlY3RpdmVPcmlnaW4ueCgpLCBw
ZXJzcGVjdGl2ZU9yaWdpbi55KCksIDApOworICAgIH0KK30KKwordm9pZCBSZW5kZXJFbGVtZW50
OjpwdXNoT250b1RyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwg
T3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4gbW9kZSwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgUmVuZGVyRWxlbWVudCogY29udGFpbmVy
LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRJbkNvbnRhaW5lciwgYm9vbCBjb250YWluZXJTa2lw
cGVkKSBjb25zdAoreworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUuY29udGFpbnMoVXNlVHJh
bnNmb3JtcykgJiYgcGFydGljaXBhdGVzSW5QcmVzZXJ2ZTNEKCk7CisgICAgaWYgKG1vZGUuY29u
dGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihj
b250YWluZXIpKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAg
ICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvZmZzZXRJbkNvbnRhaW5lciwgbWF0cml4KTsK
KyAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0obWF0cml4LCBwcmVzZXJ2ZTNE
ID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6
RmxhdHRlblRyYW5zZm9ybSk7CisgICAgfSBlbHNlCisgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1v
dmUob2Zmc2V0SW5Db250YWluZXIud2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0KCks
IHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5z
Zm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKKworICAgIGlmIChjb250YWluZXJTa2lwcGVk
KSB7CisgICAgICAgIC8vIFRoZXJlIGNhbid0IGJlIGEgdHJhbnNmb3JtIGJldHdlZW4gcmVwYWlu
dENvbnRhaW5lciBhbmQgY29udGFpbmVyLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRh
aW5lcnMsIHNvIGl0IHNob3VsZCBiZSBzYWZlCisgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3Qg
dGhlIGRlbHRhIGJldHdlZW4gdGhlIHJlcGFpbnRDb250YWluZXIgYW5kIGNvbnRhaW5lci4KKyAg
ICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5vZmZz
ZXRGcm9tQW5jZXN0b3JDb250YWluZXIoKmNvbnRhaW5lcik7CisgICAgICAgIHRyYW5zZm9ybVN0
YXRlLm1vdmUoLWNvbnRhaW5lck9mZnNldC53aWR0aCgpLCAtY29udGFpbmVyT2Zmc2V0LmhlaWdo
dCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBU
cmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAgfQorfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiOTUxZDE3OTI0ODAuLjQ4NGNh
ZjFlMTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0y
NjgsNiArMjY4LDcgQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mt
dHJhbnNmb3Jtcy0xLyN0cmFuc2Zvcm0tYm94CiAgICAgaW5saW5lIEZsb2F0UmVjdCB0cmFuc2Zv
cm1SZWZlcmVuY2VCb3hSZWN0KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAgICAgaW5saW5l
IEZsb2F0UmVjdCB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkgY29uc3Q7CisgICAgaW5saW5l
IGJvb2wgaXNUcmFuc2Zvcm1lZCgpIGNvbnN0OwogCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3Jn
L1RSL2Nzcy10cmFuc2Zvcm1zLTEvI3JlZmVyZW5jZS1ib3gKICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCByZWZlcmVuY2VCb3hSZWN0KENTU0JveFR5cGUpIGNvbnN0OwpAQCAtMzExLDYgKzMxMiw3IEBA
IHB1YmxpYzoKICAgICBpbmxpbmUgYm9vbCBpc0Jsb2NrQm94KCkgY29uc3Q7CiAgICAgaW5saW5l
IGJvb2wgaXNCbG9ja0xldmVsQm94KCkgY29uc3Q7CiAgICAgaW5saW5lIGJvb2wgaXNCbG9ja0Nv
bnRhaW5lcigpIGNvbnN0OworICAgIGlubGluZSBib29sIGlzQXRvbWljSW5saW5lTGV2ZWxCb3go
KSBjb25zdDsKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvZmZzZXRQYXJlbnQoKSBjb25z
dDsKICAgICAvLyBQdXNoZXMgc3RhdGUgb250byBSZW5kZXJHZW9tZXRyeU1hcCBhYm91dCBob3cg
dG8gbWFwIGNvb3JkaW5hdGVzIGZyb20gdGhpcyByZW5kZXJlciB0byBpdHMgY29udGFpbmVyLCBv
ciBhbmNlc3RvclRvU3RvcEF0ICh3aGljaGV2ZXIgaXMgZW5jb3VudGVyZWQgZmlyc3QpLgpAQCAt
MzM0LDYgKzMzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkud3JpdGluZ01vZGUoKTsgfQogCisgICAgYm9vbCBzaG91
bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5l
cikgY29uc3Q7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91
dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0Owor
ICAgIHZvaWQgcHVzaE9udG9UcmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNl
dDxNYXBDb29yZGluYXRlc01vZGU+LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBjb25zdCBSZW5kZXJFbGVtZW50KiBjb250YWluZXIsIGNvbnN0IExheW91
dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0Owor
CisgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5l
cigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMg
aGF2ZSB0cmFuc2Zvcm1zLgorICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFp
bmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRl
ckVsZW1lbnQoVHlwZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxUeXBlRmxh
Zz4sIFR5cGVTcGVjaWZpY0ZsYWdzKTsKICAgICBSZW5kZXJFbGVtZW50KFR5cGUsIERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVGbGFnPiwgVHlwZVNwZWNpZmljRmxhZ3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxp
bmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudElubGluZXMuaApp
bmRleCAxN2EzMDBhYjJhZWQuLjFhOTVmMjY5YTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2lu
Y2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgi
CisjaW5jbHVkZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzgsNiArMzksNyBAQCBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNNYXNrKCkg
Y29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNNYXNrKCk7IH0KIGlubGluZSBib29sIFJlbmRlckVs
ZW1lbnQ6Omhhc091dGxpbmUoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc091dGxpbmUoKSB8
fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpOyB9CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50Ojpo
YXNTaGFwZU91dHNpZGUoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLnNoYXBlT3V0c2lkZSgpOyB9
CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50Ojppc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1
cm4gc3R5bGUoKS5oYXNPcGFjaXR5KCk7IH0KK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6Omlz
VHJhbnNmb3JtZWQoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHko
KSAmJiAoc3R5bGUoKS5hZmZlY3RzVHJhbnNmb3JtKCkgfHwgaGFzU1ZHVHJhbnNmb3JtKCkpOyB9
CiBpbmxpbmUgZmxvYXQgUmVuZGVyRWxlbWVudDo6b3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkub3BhY2l0eSgpOyB9CiBpbmxpbmUgRmxvYXRSZWN0IFJlbmRlckVsZW1lbnQ6OnRyYW5z
Zm9ybVJlZmVyZW5jZUJveFJlY3QoKSBjb25zdCB7IHJldHVybiB0cmFuc2Zvcm1SZWZlcmVuY2VC
b3hSZWN0KHN0eWxlKCkpOyB9CiBpbmxpbmUgRmxvYXRSZWN0IFJlbmRlckVsZW1lbnQ6OnRyYW5z
Zm9ybVJlZmVyZW5jZUJveFJlY3QoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdCB7IHJl
dHVybiByZWZlcmVuY2VCb3hSZWN0KHRyYW5zZm9ybUJveFRvQ1NTQm94VHlwZShzdHlsZS50cmFu
c2Zvcm1Cb3goKSkpOyB9CkBAIC00Nyw2ICs0OSw3IEBAIGlubGluZSBib29sIFJlbmRlckVsZW1l
bnQ6Omhhc0FwcGxlVmlzdWFsRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNBcHBs
CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNBcHBsZVZpc3VhbEVmZmVjdFJlcXVpcmlu
Z0JhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNBcHBsZVZpc3VhbEVm
ZmVjdFJlcXVpcmluZ0JhY2tkcm9wRmlsdGVyKCk7IH0KICNlbmRpZgogCitpbmxpbmUgYm9vbCBS
ZW5kZXJFbGVtZW50Ojppc0F0b21pY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gc3R5
bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIShzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6SW5saW5lICYmICFpc1JlcGxhY2VkT3JBdG9taWNJbmxpbmUoKSk7IH0KIGlubGlu
ZSBib29sIFJlbmRlckVsZW1lbnQ6OmlzQmxvY2tMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpOyB9CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50
Ojppc0Fub255bW91c0Jsb2NrKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IDNiOGZmMTQxYTIyNi4uNGY4ZDA1OTE0YWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAK
QEAgLTE1Miw3ICsxNTIsOCBAQCBzdGF0aWMgYm9vbCBjYW5NYXBCZXR3ZWVuUmVuZGVyZXJzVmlh
TGF5ZXJzKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcgogICAgICAgICBpZiAo
Y3VycmVudC0+aXNGaXhlZFBvc2l0aW9uZWQoKSB8fCBzdHlsZS53cml0aW5nTW9kZSgpLmlzQmxv
Y2tGbGlwcGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGN1
cnJlbnQtPmhhc1RyYW5zZm9ybU9yUGVyc3BlY3RpdmUoKSkKKyAgICAgICAgYXV0byBoYXNUcmFu
c2Zvcm1PclBlcnNwZWN0aXZlID0gY3VycmVudC0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCkgJiYgKGN1cnJlbnQtPmlzVHJhbnNmb3JtZWQoKSB8fCBjdXJyZW50LT5zdHlsZSgpLmhhc1Bl
cnNwZWN0aXZlKCkpOworICAgICAgICBpZiAoaGFzVHJhbnNmb3JtT3JQZXJzcGVjdGl2ZSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGlmIChjdXJyZW50LT5p
c1JlbmRlckZyYWdtZW50ZWRGbG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDBiM2UwMDdkOWViYy4uMDRiOTI2ZmM1M2I5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTU0MCw2MCArMTU0MCw2IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChPcHRpb25TZXQ8TWFwQ29v
cmRpbmF0ZXNNb2RlPiBtb2RlLCBUCiAgICAgfQogfQogCi1ib29sIFJlbmRlck9iamVjdDo6c2hv
dWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJFbGVtZW50KiBjb250YWlu
ZXJPYmplY3QpIGNvbnN0Ci17Ci0gICAgaWYgKGlzVHJhbnNmb3JtZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKGhhc0xheWVyKCkgJiYgZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdD4oKnRoaXMpLmxheWVyKCktPnNuYXBzaG90dGVkU2Nyb2xsT2Zmc2V0Rm9yQW5jaG9y
UG9zaXRpb25pbmcoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNvbnRhaW5lck9i
amVjdCAmJiBjb250YWluZXJPYmplY3QtPnN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkKLSAgICAg
ICAgcmV0dXJuIGNvbnRhaW5lck9iamVjdCA9PSBwYXJlbnQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLS8vIEZJWE1FOiBOb3cgdGhhdCBpdCdzIG5vIGxvbmdlciBwYXNzZWQgYSBjb250YWlu
ZXIgbWF5YmUgdGhpcyBzaG91bGQgYmUgcmVuYW1lZD8KLXZvaWQgUmVuZGVyT2JqZWN0OjpnZXRU
cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVy
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKSBjb25zdAotewotICAgIHRyYW5zZm9y
bS5tYWtlSWRlbnRpdHkoKTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9mZnNldEluQ29udGFp
bmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpKTsKLSAgICBDaGVja2VkUHRy
PFJlbmRlckxheWVyPiBsYXllcjsKLSAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSBkb3du
Y2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKSkgJiYgbGF5ZXItPnRy
YW5zZm9ybSgpKQotICAgICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobGF5ZXItPmN1cnJlbnRUcmFu
c2Zvcm0oKSk7Ci0KLSAgICBDaGVja2VkUHRyIHBlcnNwZWN0aXZlT2JqZWN0ID0gcGFyZW50KCk7
Ci0KLSAgICBpZiAocGVyc3BlY3RpdmVPYmplY3QgJiYgcGVyc3BlY3RpdmVPYmplY3QtPmhhc0xh
eWVyKCkgJiYgcGVyc3BlY3RpdmVPYmplY3QtPnN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkgewot
ICAgICAgICAvLyBQZXJwc2VjdGl2ZSBvbiB0aGUgY29udGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdl
IGhhdmUgdG8gZmFjdG9yIGl0IGluIGhlcmUuCi0gICAgICAgIEFTU0VSVChwZXJzcGVjdGl2ZU9i
amVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4g
PSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqcGVyc3BlY3RpdmVPYmplY3QpLmxh
eWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7Ci0KLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcGVyc3BlY3RpdmVNYXRyaXg7Ci0gICAgICAgIHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVy
c3BlY3RpdmUocGVyc3BlY3RpdmVPYmplY3QtPnN0eWxlKCkudXNlZFBlcnNwZWN0aXZlKCkpOwot
ICAgICAgICAKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QoLXBlcnNwZWN0aXZl
T3JpZ2luLngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7Ci0gICAgICAgIHRyYW5zZm9y
bSA9IHBlcnNwZWN0aXZlTWF0cml4ICogdHJhbnNmb3JtOwotICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlUmlnaHQzZChwZXJzcGVjdGl2ZU9yaWdpbi54KCksIHBlcnNwZWN0aXZlT3JpZ2luLnko
KSwgMCk7Ci0gICAgfQotfQotCi12b2lkIFJlbmRlck9iamVjdDo6cHVzaE9udG9UcmFuc2Zvcm1T
dGF0ZShUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE9wdGlvblNldDxNYXBDb29yZGlu
YXRlc01vZGU+IG1vZGUsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0SW5Db250YWluZXIsIGJvb2wgY29udGFpbmVyU2tpcHBlZCkgY29uc3QKLXsKLSAgICBi
b29sIHByZXNlcnZlM0QgPSBtb2RlLmNvbnRhaW5zKFVzZVRyYW5zZm9ybXMpICYmIHBhcnRpY2lw
YXRlc0luUHJlc2VydmUzRCgpOwotICAgIGlmIChtb2RlLmNvbnRhaW5zKFVzZVRyYW5zZm9ybXMp
ICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29udGFpbmVyKSkgewotICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7Ci0gICAgICAgIGdldFRyYW5zZm9ybUZyb21D
b250YWluZXIob2Zmc2V0SW5Db250YWluZXIsIG1hdHJpeCk7Ci0gICAgICAgIHRyYW5zZm9ybVN0
YXRlLmFwcGx5VHJhbnNmb3JtKG1hdHJpeCwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpB
Y2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwot
ICAgIH0gZWxzZQotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKG9mZnNldEluQ29udGFpbmVy
LndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNm
b3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRy
YW5zZm9ybSk7Ci0KLSAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewotICAgICAgICAvLyBUaGVy
ZSBjYW4ndCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWluZXIgYW5kIGNvbnRh
aW5lciwgYmVjYXVzZSB0cmFuc2Zvcm1zIGNyZWF0ZSBjb250YWluZXJzLCBzbyBpdCBzaG91bGQg
YmUgc2FmZQotICAgICAgICAvLyB0byBqdXN0IHN1YnRyYWN0IHRoZSBkZWx0YSBiZXR3ZWVuIHRo
ZSByZXBhaW50Q29udGFpbmVyIGFuZCBjb250YWluZXIuCi0gICAgICAgIExheW91dFNpemUgY29u
dGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFp
bmVyKCpjb250YWluZXIpOwotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKC1jb250YWluZXJP
ZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRy
YW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0
ZW5UcmFuc2Zvcm0pOwotICAgIH0KLX0KLQogRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxU
b0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4g
bW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gVHJhY2sgdGhlIHBvaW50IGF0
IHRoZSBjZW50ZXIgb2YgdGhlIHF1YWQncyBib3VuZGluZyBib3guIEFzIG1hcExvY2FsVG9Db250
YWluZXIoKSBjYWxscyBvZmZzZXRGcm9tQ29udGFpbmVyKCksCkBAIC0xNjI4LDI2ICsxNTc0LDYg
QEAgTGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxl
bWVudCYgY29udGFpbmVyLCBjb25zdCBMYXkKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1MYXlv
dXRTaXplIFJlbmRlck9iamVjdDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnN0IFJl
bmRlckVsZW1lbnQmIGNvbnRhaW5lcikgY29uc3QKLXsKLSAgICBMYXlvdXRTaXplIG9mZnNldDsK
LSAgICBMYXlvdXRQb2ludCByZWZlcmVuY2VQb2ludDsKLSAgICBDaGVja2VkUHRyIGN1cnJlbnRD
b250YWluZXIgPSB0aGlzOwotICAgIGRvIHsKLSAgICAgICAgQ2hlY2tlZFB0ciBuZXh0Q29udGFp
bmVyID0gY3VycmVudENvbnRhaW5lci0+Y29udGFpbmVyKCk7Ci0gICAgICAgIEFTU0VSVChuZXh0
Q29udGFpbmVyKTsgIC8vIFRoaXMgbWVhbnMgd2UgcmVhY2hlZCB0aGUgdG9wIHdpdGhvdXQgZmlu
ZGluZyBjb250YWluZXIuCi0gICAgICAgIGlmICghbmV4dENvbnRhaW5lcikKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBBU1NFUlQoIWN1cnJlbnRDb250YWluZXItPmlzVHJhbnNmb3JtZWQo
KSk7Ci0gICAgICAgIExheW91dFNpemUgY3VycmVudE9mZnNldCA9IGN1cnJlbnRDb250YWluZXIt
Pm9mZnNldEZyb21Db250YWluZXIoKm5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKLSAg
ICAgICAgb2Zmc2V0ICs9IGN1cnJlbnRPZmZzZXQ7Ci0gICAgICAgIHJlZmVyZW5jZVBvaW50Lm1v
dmUoY3VycmVudE9mZnNldCk7Ci0gICAgICAgIGN1cnJlbnRDb250YWluZXIgPSBXVEZNb3ZlKG5l
eHRDb250YWluZXIpOwotICAgIH0gd2hpbGUgKGN1cnJlbnRDb250YWluZXIgIT0gJmNvbnRhaW5l
cik7Ci0KLSAgICByZXR1cm4gb2Zmc2V0OwotfQotCiBib29sIFJlbmRlck9iamVjdDo6cGFydGlj
aXBhdGVzSW5QcmVzZXJ2ZTNEKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzTGF5ZXIoKSAmJiBk
b3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKS0+cGFydGljaXBh
dGVzSW5QcmVzZXJ2ZTNEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
aW5kZXggMDRiNWM3MjkyNjBmLi43MDVjOTg0ZmRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTQzMCw4ICs0MzAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1JlbmRlcklubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUZsYWdzLmNvbnRhaW5zKFR5cGVG
bGFnOjpJc1JlbmRlcklubGluZSk7IH0KICAgICBib29sIGlzUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUZsYWdzLmNvbnRhaW5zKFR5cGVGbGFnOjpJc0xheWVy
TW9kZWxPYmplY3QpOyB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0F0b21pY0lubGluZUxldmVsQm94
KCkgY29uc3Q7Ci0KICAgICBib29sIGlzUmVuZGVyQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBUeXBlOjpDb3VudGVyOyB9CiAgICAgYm9vbCBpc1JlbmRlclF1b3RlKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IFR5cGU6OlF1b3RlOyB9CiAKQEAgLTcwMiw4ICs3MDAsNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNOb25WaXNpYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlQml0ZmllbGRzLmhhc0ZsYWcoU3RhdGVGbGFnOjpIYXNOb25WaXNpYmxlT3ZlcmZsb3cp
OyB9CiAKICAgICBib29sIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGVCaXRmaWVsZHMuaGFzRmxhZyhTdGF0ZUZsYWc6Okhhc1RyYW5zZm9ybVJlbGF0
ZWRQcm9wZXJ0eSk7IH0gLy8gVHJhbnNmb3JtLCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5
bGU6IHByZXNlcnZlLTNkLgotICAgIGlubGluZSBib29sIGlzVHJhbnNmb3JtZWQoKSBjb25zdDsK
LSAgICBpbmxpbmUgYm9vbCBoYXNUcmFuc2Zvcm1PclBlcnNwZWN0aXZlKCkgY29uc3Q7CiAKICAg
ICBib29sIGNhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVC
aXRmaWVsZHMuaGFzRmxhZyhTdGF0ZUZsYWc6OkNhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbik7IH0K
ICAgICBib29sIHNldENhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbihib29sKTsKQEAgLTgyOSw4ICs4
MjUsNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgY29udGFp
bmVyKCkgcmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4gbXVsdGktY29sdW1uIGxh
eW91dCwKICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBkaWZmZXJlbnQgcG9pbnRz
LCBzbyByZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhlIGdpdmVuIHBvaW50Lgog
ICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQm
LCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0
cikgY29uc3Q7Ci0gICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhl
IGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRl
IG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgotICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2Vz
dG9yQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVz
KFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVu
c2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7
CkBAIC0xMDk0LDExICsxMDg4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wq
IHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRl
VG9Mb2NhbFBvaW50KE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBUcmFuc2Zvcm1TdGF0
ZSYpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lcikgY29uc3Q7Ci0gICAgdm9pZCBnZXRUcmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OwotICAgIAotICAgIHZvaWQgcHVzaE9udG9UcmFuc2Zv
cm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBSZW5k
ZXJFbGVtZW50KiBjb250YWluZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVy
LCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0OwotCiAgICAgYm9vbCBwYXJ0aWNpcGF0ZXNJ
blByZXNlcnZlM0QoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgLyogYWRkaXRpb25hbE9m
ZnNldCAqLywgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLyogcGFpbnRDb250YWluZXIg
Ki8gPSBudWxscHRyKSBjb25zdCB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdElubGluZXMuaAppbmRleCA1MjQxNDc3Zjk1ZmEuLmYxMWFlZTdmMWExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdElubGluZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0SW5saW5lcy5oCkBAIC0y
MSwxNSArMjEsMTAgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBib29sIFJlbmRlck9i
amVjdDo6aGFzVHJhbnNmb3JtT3JQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChpc1RyYW5zZm9ybWVkKCkgfHwgc3R5bGUoKS5oYXNQ
ZXJzcGVjdGl2ZSgpKTsgfQotaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0F0b21pY0lubGlu
ZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkg
JiYgIShzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lICYmICFpc1JlcGxh
Y2VkT3JBdG9taWNJbmxpbmUoKSk7IH0KLWlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNUcmFu
c2Zvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYm
IChzdHlsZSgpLmFmZmVjdHNUcmFuc2Zvcm0oKSB8fCBoYXNTVkdUcmFuc2Zvcm0oKSk7IH0KLWlu
bGluZSBib29sIFJlbmRlck9iamVjdDo6cHJlc2VydmVzTmV3bGluZSgpIGNvbnN0IHsgcmV0dXJu
ICFpc1JlbmRlclNWR0lubGluZVRleHQoKSAmJiBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpOyB9
CiBpbmxpbmUgUmVmPERvY3VtZW50PiBSZW5kZXJPYmplY3Q6OnByb3RlY3RlZERvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gZG9jdW1lbnQoKTsgfQogaW5saW5lIGNvbnN0IExvY2FsRnJhbWVWaWV3
TGF5b3V0Q29udGV4dCYgUmVuZGVyT2JqZWN0OjpsYXlvdXRDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAppbmRleCBjMDQ5Mjc0
MTllMTMuLmY0NzNhMTY1ZmNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lSW5saW5lSGVhZGVycy5oCkBAIC01MiwxNSArNTIsMTUgQEAgaW5saW5lIGJvb2wg
cmVxdWlyZXNMaW5lQm94Rm9yQ29udGVudChjb25zdCBSZW5kZXJJbmxpbmUmIGZsb3csIGNvbnN0
IExpbmVJbmZvJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIGJvb2wgc2hvdWxkQ29s
bGFwc2VXaGl0ZVNwYWNlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgTGluZUluZm8m
IGxpbmVJbmZvLCBXaGl0ZXNwYWNlUG9zaXRpb24gd2hpdGVzcGFjZVBvc2l0aW9uKQoraW5saW5l
IGJvb2wgc2hvdWxkQ29sbGFwc2VXaGl0ZVNwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBXaGl0ZXNwYWNlUG9zaXRpb24gd2hpdGVzcGFjZVBv
c2l0aW9uKQogewogICAgIC8vIENTUzIgMTYuNi4xCiAgICAgLy8gSWYgYSBzcGFjZSAoVSswMDIw
KSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBoYXMgJ3doaXRlLXNwYWNlJyBzZXQgdG8gJ25v
cm1hbCcsICdub3dyYXAnLCBvciAncHJlLWxpbmUnLCBpdCBpcyByZW1vdmVkLgogICAgIC8vIElm
IGEgc3BhY2UgKFUrMDAyMCkgYXQgdGhlIGVuZCBvZiBhIGxpbmUgaGFzICd3aGl0ZS1zcGFjZScg
c2V0IHRvICdub3JtYWwnLCAnbm93cmFwJywgb3IgJ3ByZS1saW5lJywgaXQgaXMgYWxzbyByZW1v
dmVkLgogICAgIC8vIElmIHNwYWNlcyAoVSswMDIwKSBvciB0YWJzIChVKzAwMDkpIGF0IHRoZSBl
bmQgb2YgYSBsaW5lIGhhdmUgJ3doaXRlLXNwYWNlJyBzZXQgdG8gJ3ByZS13cmFwJywgVUFzIG1h
eSB2aXN1YWxseSBjb2xsYXBzZSB0aGVtLgotICAgIHJldHVybiBzdHlsZS0+Y29sbGFwc2VXaGl0
ZVNwYWNlKCkKLSAgICAgICAgfHwgKHdoaXRlc3BhY2VQb3NpdGlvbiA9PSBUcmFpbGluZ1doaXRl
c3BhY2UgJiYgc3R5bGUtPndoaXRlU3BhY2VDb2xsYXBzZSgpID09IFdoaXRlU3BhY2VDb2xsYXBz
ZTo6UHJlc2VydmUKLSAgICAgICAgICAgICYmIHN0eWxlLT50ZXh0V3JhcE1vZGUoKSA9PSBUZXh0
V3JhcE1vZGU6OldyYXAgJiYgIWxpbmVJbmZvLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIHN0eWxl
LmNvbGxhcHNlV2hpdGVTcGFjZSgpCisgICAgICAgIHx8ICh3aGl0ZXNwYWNlUG9zaXRpb24gPT0g
VHJhaWxpbmdXaGl0ZXNwYWNlICYmIHN0eWxlLndoaXRlU3BhY2VDb2xsYXBzZSgpID09IFdoaXRl
U3BhY2VDb2xsYXBzZTo6UHJlc2VydmUKKyAgICAgICAgICAgICYmIHN0eWxlLnRleHRXcmFwTW9k
ZSgpID09IFRleHRXcmFwTW9kZTo6V3JhcCAmJiAhbGluZUluZm8uaXNFbXB0eSgpKTsKIH0KIAog
aW5saW5lIGJvb2wgc2tpcE5vbkJyZWFraW5nU3BhY2UoY29uc3QgTGVnYWN5SW5saW5lSXRlcmF0
b3ImIGl0LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8pCkBAIC04OCwxMSArODgsMTEgQEAgaW5s
aW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94KGNvbnN0IExlZ2FjeUlubGluZUl0ZXJhdG9yJiBpdCwg
Y29uc3QgTGluZUluZm8mIGxpbmUKICAgICAgICAgcmVuZGVyZXJJc0VtcHR5SW5saW5lID0gaXNF
bXB0eUlubGluZSgqaW5saW5lUmVuZGVyZXIpOwogICAgIH0KIAotICAgIGlmICghc2hvdWxkQ29s
bGFwc2VXaGl0ZVNwYWNlKCZpdC5yZW5kZXJlcigpLT5zdHlsZSgpLCBsaW5lSW5mbywgd2hpdGVz
cGFjZVBvc2l0aW9uKSkKKyAgICBpZiAoIXNob3VsZENvbGxhcHNlV2hpdGVTcGFjZShpdC5yZW5k
ZXJlcigpLT5zdHlsZSgpLCBsaW5lSW5mbywgd2hpdGVzcGFjZVBvc2l0aW9uKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBVQ2hhciBjdXJyZW50ID0gaXQuY3VycmVudCgpOwotICAgIGJv
b2wgbm90SnVzdFdoaXRlc3BhY2UgPSBjdXJyZW50ICE9ICcgJyAmJiBjdXJyZW50ICE9ICdcdCcg
JiYgY3VycmVudCAhPSBzb2Z0SHlwaGVuICYmIChjdXJyZW50ICE9ICdcbicgfHwgaXQucmVuZGVy
ZXIoKS0+cHJlc2VydmVzTmV3bGluZSgpKSAmJiAhc2tpcE5vbkJyZWFraW5nU3BhY2UoaXQsIGxp
bmVJbmZvKTsKKyAgICBib29sIG5vdEp1c3RXaGl0ZXNwYWNlID0gY3VycmVudCAhPSAnICcgJiYg
Y3VycmVudCAhPSAnXHQnICYmIGN1cnJlbnQgIT0gc29mdEh5cGhlbiAmJiBjdXJyZW50ICE9ICdc
bicgJiYgIXNraXBOb25CcmVha2luZ1NwYWNlKGl0LCBsaW5lSW5mbyk7CiAgICAgcmV0dXJuIG5v
dEp1c3RXaGl0ZXNwYWNlIHx8IHJlbmRlcmVySXNFbXB0eUlubGluZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRh
dGlvbi5jcHAKaW5kZXggYzNkMjg5MjFmYjI2Li5jMTRiODk1YzU3MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0
aW9uLmNwcApAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3JlbWVu
dGVyLmgiCiAjaW5jbHVkZSAiUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlJl
bmRlckNoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCisj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdDb250
YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAppbmRleCAzNDNlOWU5OGE5
ZDUuLjk1ZDZlY2ZjYzE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9p
ZCBSZW5kZXJUcmVlQnVpbGRlcjo6YXR0YWNoSW50ZXJuYWwoUmVuZGVyRWxlbWVudCYgcGFyZW50
LCBSZW5kZXJQdHI8UmVuZGVyT2IKICAgICB9CiAKICAgICBpZiAocGFyZW50LnN0eWxlKCkuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpSdWJ5IHx8IHBhcmVudC5zdHlsZSgpLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6UnVieUJsb2NrKSB7Ci0gICAgICAgIGF1dG8mIHBhcmVudENhbmRpZGF0
ZSA9IHJ1YnlCdWlsZGVyKCkuZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGls
ZChwYXJlbnQsICpjaGlsZCwgYmVmb3JlQ2hpbGQpOworICAgICAgICBhdXRvJiBwYXJlbnRDYW5k
aWRhdGUgPSBydWJ5QnVpbGRlcigpLmZpbmRPckNyZWF0ZVBhcmVudEZvclN0eWxlQmFzZWRSdWJ5
Q2hpbGQocGFyZW50LCBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLCBiZWZvcmVDaGls
ZCk7CiAgICAgICAgIGlmICgmcGFyZW50Q2FuZGlkYXRlID09ICZwYXJlbnQpIHsKICAgICAgICAg
ICAgIHJ1YnlCdWlsZGVyKCkuYXR0YWNoRm9yU3R5bGVCYXNlZFJ1YnkocGFyZW50Q2FuZGlkYXRl
LCBXVEZNb3ZlKGNoaWxkKSwgYmVmb3JlQ2hpbGQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDgwLDcgKzQ4MCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OmF0dGFjaFRvUmVuZGVyRWxl
bWVudEludGVybmFsKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuCiAgICAgfQogCiAgICAgbmV3
Q2hpbGQtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwotICAgIGF1dG8gaXNP
dXRPZkZsb3dCb3ggPSBuZXdDaGlsZC0+c3R5bGUoKS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpOwor
ICAgIGF1dG8gaXNPdXRPZkZsb3dCb3ggPSBuZXdDaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCk7CiAgICAgaWYgKCFpc091dE9mRmxvd0JveCkKICAgICAgICAgcGFyZW50LnNldFByZWZlcnJl
ZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKIApAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgUmVu
ZGVyVHJlZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lQ2hpbGRyZW5J
Zk5lZWRlZChSZW5kZXJFCiAgICAgLy8gaWYgd2UgZmluZCBhIGNvbnRpbnVhdGlvbi4KICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFsbENoaWxkcmVuQmVJbmxpbmU7CiAgICAgZm9yIChh
dXRvKiBjdXJyZW50ID0gYmxvY2tQYXJlbnQtPmZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGN1cnJlbnQtPnN0eWxl
KCkuaXNGbG9hdGluZygpIHx8IGN1cnJlbnQtPnN0eWxlKCkuaGFzT3V0T2ZGbG93UG9zaXRpb24o
KSkKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICghaXM8UmVuZGVyQmxvY2s+
KCpjdXJyZW50KSkKQEAgLTExMDIsNyArMTEwMiw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6
OnJlcG9ydFZpc3VhbGx5Tm9uRW1wdHlDb250ZW50KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVu
CiAgICAgICAgIH07CiAgICAgICAgIC8vIFNWRyBjb250ZW50IHRlbmRzIHRvIGhhdmUgYSBmaXhl
ZCBzaXplIGNvbnN0cnVjdC4gSG93ZXZlciB0aGlzIGlzIGtub3duIHRvIGJlIGluYWNjdXJhdGUg
aW4gY2VydGFpbiBjYXNlcyAoYm94LXNpemluZzogYm9yZGVyLWJveCkgb3IgZXNwZWNpYWxseSB3
aGVuIHRoZSBwYXJlbnQgYm94IGlzIG92ZXJzaXplZC4KICAgICAgICAgYXV0byBjYW5kaWRhdGVT
aXplID0gSW50U2l6ZSB7IH07Ci0gICAgICAgIGlmIChhdXRvIHNpemUgPSBmaXhlZFNpemUoY2hp
bGQpKQorICAgICAgICBpZiAoYXV0byBzaXplID0gZml4ZWRTaXplKGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KGNoaWxkKSkpCiAgICAgICAgICAgICBjYW5kaWRhdGVTaXplID0gKnNpemU7CiAgICAg
ICAgIGVsc2UgaWYgKGF1dG8gc2l6ZSA9IGZpeGVkU2l6ZShwYXJlbnQpKQogICAgICAgICAgICAg
Y2FuZGlkYXRlU2l6ZSA9ICpzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCmluZGV4IDg3Mzgy
NWNiYWJlOS4uZTdlYzk3YmVkMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6Omluc2VydENoaWxkVG9D
b250aW51YXRpb24oUmVuZGVyQmxvY2smIHBhcmVudCwgUmUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGJvb2wgY2hpbGRJc05vcm1hbCA9IGNoaWxkLT5pc0lubGluZSgpIHx8IGNoaWxk
LT5zdHlsZSgpLmNvbHVtblNwYW4oKSA9PSBDb2x1bW5TcGFuOjpOb25lOworICAgIGJvb2wgY2hp
bGRJc05vcm1hbCA9IGNoaWxkLT5pc0lubGluZSgpIHx8IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+
KCpjaGlsZCkuc3R5bGUoKS5jb2x1bW5TcGFuKCkgPT0gQ29sdW1uU3Bhbjo6Tm9uZTsKICAgICBi
b29sIGJjcElzTm9ybWFsID0gYmVmb3JlQ2hpbGRQYXJlbnQtPmlzSW5saW5lKCkgfHwgYmVmb3Jl
Q2hpbGRQYXJlbnQtPnN0eWxlKCkuY29sdW1uU3BhbigpID09IENvbHVtblNwYW46Ok5vbmU7CiAg
ICAgYm9vbCBmbG93SXNOb3JtYWwgPSBmbG93LT5pc0lubGluZSgpIHx8IGZsb3ctPnN0eWxlKCku
Y29sdW1uU3BhbigpID09IENvbHVtblNwYW46Ok5vbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11
bHRpQ29sdW1uLmNwcAppbmRleCA5MDQ1YmRlYzYzMTMuLjQwMGRiZTZmOWNhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIFJlbmRlck9i
amVjdCogUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjpyZXNvbHZlTW92ZWRDaGlsZChS
ZW5kZXJGcmFnbWVudGVkCiAgICAgICAgIHJldHVybiBiZWZvcmVDaGlsZDsKIAogICAgIC8vIFdl
IG9ubHkgbmVlZCB0byByZXNvbHZlIGZvciBjb2x1bW4gc3Bhbm5lcnMuCi0gICAgaWYgKGJlZm9y
ZUNoaWxkLT5zdHlsZSgpLmNvbHVtblNwYW4oKSAhPSBDb2x1bW5TcGFuOjpBbGwpCisgICAgaWYg
KGJlZm9yZUNoaWxkUmVuZGVyQm94LT5zdHlsZSgpLmNvbHVtblNwYW4oKSAhPSBDb2x1bW5TcGFu
OjpBbGwpCiAgICAgICAgIHJldHVybiBiZWZvcmVDaGlsZDsKIAogICAgIC8vIFRoZSByZW5kZXJl
ciBmb3IgdGhlIGFjdHVhbCBET00gbm9kZSB0aGF0IGVzdGFibGlzaGVzIGEgc3Bhbm5lciBpcyBt
b3ZlZCBmcm9tIGl0cyBvcmlnaW5hbApAQCAtMjQ1LDYgKzI0NSw5IEBAIHZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjptdWx0aUNvbHVtbkRlc2NlbmRhbnRJbnNlcnRlZChSZW5k
ZXJNdWx0aUNvCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6bXVsdGlDb2x1
bW5SZWxhdGl2ZVdpbGxCZVJlbW92ZWQoUmVuZGVyTXVsdGlDb2x1bW5GbG93JiBmbG93LCBSZW5k
ZXJPYmplY3QmIHJlbGF0aXZlLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2FuQ29sbGFwc2VBbm9ueW1v
dXNCbG9jayBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrKQogewogICAgIGZsb3cuaW52YWxpZGF0
ZUZyYWdtZW50cygpOworICAgIGlmIChpczxSZW5kZXJUZXh0PihyZWxhdGl2ZSkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChhdXRvKiBwbGFjZWhvbGRlciA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcj4ocmVsYXRpdmUpKSB7CiAgICAgICAg
IC8vIFJlbW92ZSB0aGUgbWFwIGVudHJ5IGZvciB0aGlzIHNwYW5uZXIsIGJ1dCBsZWF2ZSB0aGUg
YWN0dWFsIHNwYW5uZXIgcmVuZGVyZXIgYWxvbmUuIEFsc28KICAgICAgICAgLy8ga2VlcCB0aGUg
cmVmZXJlbmNlIHRvIHRoZSBzcGFubmVyLCBzaW5jZSB0aGUgcGxhY2Vob2xkZXIgbWF5IGJlIGFi
b3V0IHRvIGJlIHJlLWluc2VydGVkCkBAIC0yNTMsMTEgKzI1NiwxMSBAQCB2b2lkIFJlbmRlclRy
ZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6bXVsdGlDb2x1bW5SZWxhdGl2ZVdpbGxCZVJlbW92ZWQo
UmVuZGVyTXVsdAogICAgICAgICBmbG93LnNwYW5uZXJNYXAoKS5yZW1vdmUocGxhY2Vob2xkZXIt
PnNwYW5uZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHJlbGF0aXZlLnN0
eWxlKCkuY29sdW1uU3BhbigpID09IENvbHVtblNwYW46OkFsbCkgewotICAgICAgICBpZiAocmVs
YXRpdmUucGFyZW50KCkgIT0gZmxvdy5wYXJlbnQoKSkKKyAgICBpZiAoYXV0byogcmVuZGVyQm94
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4ocmVsYXRpdmUpOyByZW5kZXJCb3ggJiYgcmVu
ZGVyQm94LT5zdHlsZSgpLmNvbHVtblNwYW4oKSA9PSBDb2x1bW5TcGFuOjpBbGwpIHsKKyAgICAg
ICAgaWYgKHJlbmRlckJveC0+cGFyZW50KCkgIT0gZmxvdy5wYXJlbnQoKSkKICAgICAgICAgICAg
IHJldHVybjsgLy8gbm90IGEgdmFsaWQgc3Bhbm5lci4KIAotICAgICAgICBoYW5kbGVTcGFubmVy
UmVtb3ZhbChmbG93LCByZWxhdGl2ZSwgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CisgICAg
ICAgIGhhbmRsZVNwYW5uZXJSZW1vdmFsKGZsb3csICpyZW5kZXJCb3gsIGNhbkNvbGxhcHNlQW5v
bnltb3VzQmxvY2spOwogICAgIH0KICAgICAvLyBOb3RlIHRoYXQgd2UgbWlnaHQgZW5kIHVwIHdp
dGggZW1wdHkgY29sdW1uIHNldHMgaWYgYWxsIGNvbHVtbiBjb250ZW50IGlzIHJlbW92ZWQuIFRo
YXQncyBubwogICAgIC8vIGJpZyBkZWFsIHRob3VnaCAoYW5kIGxvY2F0aW5nIHRoZW0gd291bGQg
YmUgZXhwZW5zaXZlKSwgYW5kIHRoZXkgd2lsbCBiZSBmb3VuZCBhbmQgcmUtdXNlZCBpZgpAQCAt
NDQyLDEwICs0NDUsMTAgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlD
b2x1bW46OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50KFIKICAgICByZXR1cm4gbmV4
dERlc2NlbmRhbnQ7CiB9CiAKLXZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjpo
YW5kbGVTcGFubmVyUmVtb3ZhbChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZsb3csIFJlbmRlck9i
amVjdCYgc3Bhbm5lciwgUmVuZGVyVHJlZUJ1aWxkZXI6OkNhbkNvbGxhcHNlQW5vbnltb3VzQmxv
Y2sgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jaykKK3ZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11
bHRpQ29sdW1uOjpoYW5kbGVTcGFubmVyUmVtb3ZhbChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZs
b3csIFJlbmRlckJveCYgc3Bhbm5lciwgUmVuZGVyVHJlZUJ1aWxkZXI6OkNhbkNvbGxhcHNlQW5v
bnltb3VzQmxvY2sgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jaykKIHsKICAgICAvLyBUaGUgcGxh
Y2Vob2xkZXIgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIHJlbW92ZWQsIGJ1dCBpZiBpdCBoYXNuJ3Qs
IGRvIHNvIG5vdy4KLSAgICBpZiAoYXV0byBwbGFjZWhvbGRlciA9IGZsb3cuc3Bhbm5lck1hcCgp
LnRha2UoJmRvd25jYXN0PFJlbmRlckJveD4oc3Bhbm5lcikpKQorICAgIGlmIChhdXRvIHBsYWNl
aG9sZGVyID0gZmxvdy5zcGFubmVyTWFwKCkudGFrZSgmc3Bhbm5lcikpCiAgICAgICAgIG1fYnVp
bGRlci5kZXN0cm95KCpwbGFjZWhvbGRlciwgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CiAK
ICAgICBpZiAoYXV0byogbmV4dCA9IHNwYW5uZXIubmV4dFNpYmxpbmcoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlck11bHRpQ29sdW1uLmgKaW5kZXggYjBkODAyYjc0ZTE0Li5kM2U0ZWY5MTRhM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlck11bHRpQ29sdW1uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY3JlYXRlRnJhZ21lbnRlZEZsb3coUmVuZGVyQmxvY2tGbG93Jik7CiAgICAg
dm9pZCBkZXN0cm95RnJhZ21lbnRlZEZsb3coUmVuZGVyQmxvY2tGbG93Jik7CiAgICAgUmVuZGVy
T2JqZWN0KiBwcm9jZXNzUG9zc2libGVTcGFubmVyRGVzY2VuZGFudChSZW5kZXJNdWx0aUNvbHVt
bkZsb3cmLCBSZW5kZXJPYmplY3QqJiBzdWJ0cmVlUm9vdCwgUmVuZGVyT2JqZWN0JiBkZXNjZW5k
YW50KTsKLSAgICB2b2lkIGhhbmRsZVNwYW5uZXJSZW1vdmFsKFJlbmRlck11bHRpQ29sdW1uRmxv
dyYsIFJlbmRlck9iamVjdCYgc3Bhbm5lciwgUmVuZGVyVHJlZUJ1aWxkZXI6OkNhbkNvbGxhcHNl
QW5vbnltb3VzQmxvY2spOworICAgIHZvaWQgaGFuZGxlU3Bhbm5lclJlbW92YWwoUmVuZGVyTXVs
dGlDb2x1bW5GbG93JiwgUmVuZGVyQm94JiBzcGFubmVyLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2Fu
Q29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CiAKICAgICBSZW5kZXJUcmVlQnVpbGRlciYgbV9idWls
ZGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAKaW5kZXggNDg0MjljY2JjYjIyLi4wNTYxZjBj
NGU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlclJ1YnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlQW5vbnltb3VzUmVuZGVyZXJGb3JSdWJ5KFJl
bmRlckVsZW1lbnQmIHBhCiAgICAgcmV0dXJuIHJ1Ynk7CiB9CiAKLVJlbmRlckVsZW1lbnQmIFJl
bmRlclRyZWVCdWlsZGVyOjpSdWJ5OjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVi
eUNoaWxkKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiYgYmVmb3JlQ2hpbGQpCitSZW5kZXJFbGVtZW50JiBSZW5kZXJUcmVlQnVp
bGRlcjo6UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZChSZW5k
ZXJFbGVtZW50JiBwYXJlbnQsIGNvbnN0IFJlbmRlckVsZW1lbnQmIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqJiBiZWZvcmVDaGlsZCkKIHsKICAgICBSZW5kZXJFbGVtZW50KiBiZWZvcmVDaGlsZEFuY2Vz
dG9yID0gJnBhcmVudDsKICAgICBpZiAoYXV0byogcnVieUlubGluZSA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJJbmxpbmU+KHBhcmVudCk7IHJ1YnlJbmxpbmUgJiYgcnVieUlubGluZS0+Y29udGlu
dWF0aW9uKCkpCkBAIC03MCw3ICs3MCw3IEBAIFJlbmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWls
ZGVyOjpSdWJ5OjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVieUNoaWxkCiAgICAg
ZWxzZSBpZiAoYXV0byogcnVieUJsb2NrID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJsb2NrPihw
YXJlbnQpOyBydWJ5QmxvY2sgJiYgcnVieUJsb2NrLT5jb250aW51YXRpb24oKSkKICAgICAgICAg
YmVmb3JlQ2hpbGRBbmNlc3RvciA9IFJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6Y29udGludWF0
aW9uQmVmb3JlKCpydWJ5QmxvY2ssIGJlZm9yZUNoaWxkKTsKIAotICAgIGlmICghY2hpbGQuaXNS
ZW5kZXJUZXh0KCkgJiYgY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlJ1
YnkgJiYgYmVmb3JlQ2hpbGRBbmNlc3Rvci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OlJ1YnlCbG9jaykKKyAgICBpZiAoY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OlJ1YnkgJiYgYmVmb3JlQ2hpbGRBbmNlc3Rvci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlJ1YnlCbG9jaykKICAgICAgICAgcmV0dXJuICpiZWZvcmVDaGlsZEFuY2Vz
dG9yOwogCiAgICAgaWYgKGJlZm9yZUNoaWxkQW5jZXN0b3ItPnN0eWxlKCkuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpSdWJ5QmxvY2spIHsKQEAgLTk1LDcgKzk1LDcgQEAgUmVuZGVyRWxlbWVu
dCYgUmVuZGVyVHJlZUJ1aWxkZXI6OlJ1Ynk6OmZpbmRPckNyZWF0ZVBhcmVudEZvclN0eWxlQmFz
ZWRSdWJ5Q2hpbGQKICAgICAgICAgcmV0dXJuICpuZXdQYXJlbnQ7CiAgICAgfQogCi0gICAgaWYg
KCFjaGlsZC5pc1JlbmRlclRleHQoKSAmJiAoY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6OlJ1YnlCYXNlIHx8IGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpSdWJ5QW5ub3RhdGlvbikpCisgICAgaWYgKGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpSdWJ5QmFzZSB8fCBjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6UnVieUFubm90YXRpb24pCiAgICAgICAgIHJldHVybiAqYmVmb3JlQ2hpbGRBbmNl
c3RvcjsKIAogICAgIGlmIChiZWZvcmVDaGlsZCAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCktPnN0
eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpSdWJ5QmFzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1Ynku
aAppbmRleCA3MWExNWNmM2VjNjUuLjU5NjViZjkyODU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuaApA
QCAtMzksNyArMzksNyBAQCBjbGFzcyBSZW5kZXJUcmVlQnVpbGRlcjo6UnVieSB7CiBwdWJsaWM6
CiAgICAgUnVieShSZW5kZXJUcmVlQnVpbGRlciYpOwogCi0gICAgUmVuZGVyRWxlbWVudCYgZmlu
ZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZChSZW5kZXJFbGVtZW50JiBwYXJl
bnQsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQsIFJlbmRlck9iamVjdComIGJlZm9yZUNoaWxk
KTsKKyAgICBSZW5kZXJFbGVtZW50JiBmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVi
eUNoaWxkKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgY29uc3QgUmVuZGVyRWxlbWVudCYgY2hpbGQs
IFJlbmRlck9iamVjdComIGJlZm9yZUNoaWxkKTsKICAgICB2b2lkIGF0dGFjaEZvclN0eWxlQmFz
ZWRSdWJ5KFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
VGFibGUuY3BwCmluZGV4IGM3NWI2ZDhhMWI4ZS4uYWEwY2FlMTVhMTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVyVGFibGUuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgUmVuZGVyRWxlbWVudCYgUmVuZGVyVHJl
ZUJ1aWxkZXI6OlRhYmxlOjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JDaGlsZChSZW5kZXJUYWJsZSYK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8qIHBhcmVudENhbmRpZGF0ZSA9IGJlZm9yZUNo
aWxkOworICAgIGF1dG8qIHBhcmVudENhbmRpZGF0ZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJF
bGVtZW50PihiZWZvcmVDaGlsZCk7CiAgICAgd2hpbGUgKHBhcmVudENhbmRpZGF0ZSAmJiBwYXJl
bnRDYW5kaWRhdGUtPnBhcmVudCgpLT5pc0Fub255bW91cygpCiAgICAgICAgICYmICFpczxSZW5k
ZXJUYWJsZVNlY3Rpb24+KCpwYXJlbnRDYW5kaWRhdGUpCiAgICAgICAgICYmIHBhcmVudENhbmRp
ZGF0ZS0+c3R5bGUoKS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbgo=
</data>
<flag name="commit-queue"
          id="498645"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474690</attachid>
            <date>2025-03-22 13:35:09 -0700</date>
            <delta_ts>2025-03-22 14:08:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-290262-20250322133508.patch</filename>
            <type>text/plain</type>
            <size>38777</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2YzYzMzU3NmU5NzI4MTE1ZmVmMWQyYzU1MjZhOGMxZDlkZjBjZmI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjIgTWFyIDIwMjUgMTE6MjU6MzYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbQ2xlYW51
cF0gTW92ZSBmdW5jdGlvbnMgZnJvbSBSZW5kZXJPYmplY3QgdG8gUmVuZGVyRWxlbWVudAogKGNv
bnQuLi4pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTAyNjIKClJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBpcyBhIGJpdCBvZiBhIG1peCBvZiBtb3Zl
IGFuZCB1c2UgUmVuZGVyRWxlbWVudCB3aGVyZSBhcHBsaWNhYmxlLgoKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVzLmg6CihXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVJdGVyYXRvcjo6YXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yIGNvbnN0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIgY29uc3QpOgooV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OnB1c2hPbnRvVHJhbnNmb3JtU3RhdGUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmg6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmlzQXRvbWlj
SW5saW5lTGV2ZWxCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
ZW9tZXRyeU1hcC5jcHA6CihXZWJDb3JlOjpjYW5NYXBCZXR3ZWVuUmVuZGVyZXJzVmlhTGF5ZXJz
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIg
Y29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoT250b1RyYW5zZm9y
bVN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0RnJv
bUFuY2VzdG9yQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9y
bVJlbGF0ZWRQcm9wZXJ0eSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdElubGluZXMuaDoKKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aGFzVHJhbnNmb3JtT3JQ
ZXJzcGVjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQXRv
bWljSW5saW5lTGV2ZWxCb3ggY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
cHJlc2VydmVzTmV3bGluZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaDoKKFdlYkNvcmU6OnNob3VsZENvbGxhcHNlV2hp
dGVTcGFjZSk6CihXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3gpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHA6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OlJl
bmRlclRyZWVCdWlsZGVyOjphdHRhY2hJbnRlcm5hbCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6YXR0YWNoVG9SZW5kZXJFbGVtZW50SW50ZXJuYWwpOgooV2ViQ29yZTo6UmVuZGVyVHJl
ZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lQ2hpbGRyZW5JZk5lZWRl
ZCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6cmVwb3J0VmlzdWFsbHlOb25FbXB0eUNv
bnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlckJsb2NrLmNwcDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6aW5zZXJ0
Q2hpbGRUb0NvbnRpbnVhdGlvbik6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwOgooV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6Ok11bHRpQ29sdW1uOjpyZXNvbHZlTW92ZWRDaGlsZCk6CihXZWJDb3JlOjpSZW5kZXJU
cmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46Om11bHRpQ29sdW1uUmVsYXRpdmVXaWxsQmVSZW1vdmVk
KToKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6aGFuZGxlU3Bhbm5l
clJlbW92YWwpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlck11bHRpQ29sdW1uLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHA6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6
UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZCk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNw
cDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50
Rm9yQ2hpbGQpOgotLS0KIC4uLi9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVz
LmggICB8ICA1ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
ICAgfCA3NiArKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oICAgICAgfCAgOSArKysKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50SW5saW5lcy5oICB8ICAzICsKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5jcHAgICB8ICAzICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCAgICAgfCA3NCAtLS0tLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCAgICAgICB8IDExIC0tLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdElubGluZXMuaCAgIHwgIDUgLS0KIC4uLi9yZW5kZXJpbmcvbGluZS9MaW5l
SW5saW5lSGVhZGVycy5oICAgICAgICB8IDEyICstLQogLi4uL3N2Zy9TVkdCb3VuZGluZ0JveENv
bXB1dGF0aW9uLmNwcCAgICAgICAgIHwgIDIgKy0KIC4uLi9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwICB8ICA4ICstCiAuLi4vdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJCbG9jay5jcHAgICAgICAgfCAgMiArLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uY3BwIHwgMTUgKystLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uaCAgIHwgIDIgKy0KIC4uLi91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1
YnkuY3BwICAgICAgICB8ICA2ICstCiAuLi4vdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5
LmggICAgICAgICAgfCAgMiArLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwICAgICAgIHwgIDIgKy0KIC4uLi9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSAgICAg
ICAgICAgICB8IDEwICstLQogMTggZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMoKyksIDEy
NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lSXRlcmF0b3JJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVn
YWN5SW5saW5lSXRlcmF0b3JJbmxpbmVzLmgKaW5kZXggMTJkOWY1ZjAxMTQ5Li5hNWEwZmNkNjkx
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVJdGVy
YXRvcklubGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
SXRlcmF0b3JJbmxpbmVzLmgKQEAgLTI2LDEwICsyNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogaW5saW5lIGJvb2wgTGVnYWN5SW5saW5lSXRlcmF0b3I6OmF0VGV4dFBhcmFncmFwaFNlcGFy
YXRvcigpIGNvbnN0CiB7Ci0gICAgYXV0byogdGV4dFJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlclRleHQ+KG1fcmVuZGVyZXIpOwotICAgIHJldHVybiB0ZXh0UmVuZGVyZXIKLSAgICAg
ICAgJiYgbV9yZW5kZXJlci0+cHJlc2VydmVzTmV3bGluZSgpCi0gICAgICAgICYmIHRleHRSZW5k
ZXJlci0+Y2hhcmFjdGVyQXQobV9wb3MpID09ICdcbic7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiBpbmxpbmUgYm9vbCBMZWdhY3lJbmxpbmVJdGVyYXRvcjo6YXRQYXJhZ3JhcGhTZXBhcmF0b3Io
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4
IDc1OGFkMjY2ZDFmNC4uODFmM2IxNjE1Y2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCkBAIC0yMTg0LDYgKzIxODQsMjggQEAgYm9vbCBSZW5kZXJFbGVt
ZW50OjpoYXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIGxheWVyTW9kZWxP
YmplY3QuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKTsKIH0KIAorTGF5b3V0U2l6ZSBSZW5kZXJFbGVt
ZW50OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoY29uc3QgUmVuZGVyRWxlbWVudCYgY29u
dGFpbmVyKSBjb25zdAoreworICAgIExheW91dFNpemUgb2Zmc2V0OworICAgIExheW91dFBvaW50
IHJlZmVyZW5jZVBvaW50OworICAgIENoZWNrZWRQdHIgY3VycmVudENvbnRhaW5lciA9IHRoaXM7
CisgICAgZG8geworICAgICAgICBDaGVja2VkUHRyIG5leHRDb250YWluZXIgPSBjdXJyZW50Q29u
dGFpbmVyLT5jb250YWluZXIoKTsKKyAgICAgICAgQVNTRVJUKG5leHRDb250YWluZXIpOworICAg
ICAgICBpZiAoIW5leHRDb250YWluZXIpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2Ug
cmVhY2hlZCB0aGUgdG9wIHdpdGhvdXQgZmluZGluZyBjb250YWluZXIuCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoIWN1cnJlbnRDb250YWluZXItPmlzVHJh
bnNmb3JtZWQoKSk7CisgICAgICAgIExheW91dFNpemUgY3VycmVudE9mZnNldCA9IGN1cnJlbnRD
b250YWluZXItPm9mZnNldEZyb21Db250YWluZXIoKm5leHRDb250YWluZXIsIHJlZmVyZW5jZVBv
aW50KTsKKyAgICAgICAgb2Zmc2V0ICs9IGN1cnJlbnRPZmZzZXQ7CisgICAgICAgIHJlZmVyZW5j
ZVBvaW50Lm1vdmUoY3VycmVudE9mZnNldCk7CisgICAgICAgIGN1cnJlbnRDb250YWluZXIgPSBX
VEZNb3ZlKG5leHRDb250YWluZXIpOworICAgIH0gd2hpbGUgKGN1cnJlbnRDb250YWluZXIgIT0g
JmNvbnRhaW5lcik7CisKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCiB2b2lkIFJlbmRlckVsZW1l
bnQ6OnB1c2hPbnRvR2VvbWV0cnlNYXAoUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwLCBj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBSZW5kZXJFbGVt
ZW50KiBjb250YWluZXIsIGJvb2wgY29udGFpbmVyU2tpcHBlZCkgY29uc3QKIHsKICAgICBib29s
IGlzRml4ZWRQb3MgPSBpc0ZpeGVkUG9zaXRpb25lZCgpOwpAQCAtMjcxMCw0ICsyNzMyLDU4IEBA
IHZvaWQgUmVuZGVyRWxlbWVudDo6bGF5b3V0SWZOZWVkZWQoKQogICAgIGxheW91dCgpOwogfQog
Citib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29u
c3QgUmVuZGVyRWxlbWVudCogY29udGFpbmVyT2JqZWN0KSBjb25zdAoreworICAgIGlmIChpc1Ry
YW5zZm9ybWVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChoYXNMYXllcigpICYm
IGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCp0aGlzKS5sYXllcigpLT5zbmFwc2hv
dHRlZFNjcm9sbE9mZnNldEZvckFuY2hvclBvc2l0aW9uaW5nKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChjb250YWluZXJPYmplY3QgJiYgY29udGFpbmVyT2JqZWN0LT5zdHlsZSgp
Lmhhc1BlcnNwZWN0aXZlKCkpCisgICAgICAgIHJldHVybiBjb250YWluZXJPYmplY3QgPT0gcGFy
ZW50KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBGSVhNRTogTm93IHRoYXQgaXQncyBu
byBsb25nZXIgcGFzc2VkIGEgY29udGFpbmVyIG1heWJlIHRoaXMgc2hvdWxkIGJlIHJlbmFtZWQ/
Cit2b2lkIFJlbmRlckVsZW1lbnQ6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgTGF5
b3V0U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0pIGNvbnN0Cit7CisgICAgdHJhbnNmb3JtLm1ha2VJZGVudGl0eSgpOworICAgIHRyYW5zZm9y
bS50cmFuc2xhdGUob2Zmc2V0SW5Db250YWluZXIud2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIu
aGVpZ2h0KCkpOworICAgIENoZWNrZWRQdHI8UmVuZGVyTGF5ZXI+IGxheWVyOworICAgIGlmICho
YXNMYXllcigpICYmIChsYXllciA9IGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCp0
aGlzKS5sYXllcigpKSAmJiBsYXllci0+dHJhbnNmb3JtKCkpCisgICAgICAgIHRyYW5zZm9ybS5t
dWx0aXBseShsYXllci0+Y3VycmVudFRyYW5zZm9ybSgpKTsKKworICAgIENoZWNrZWRQdHIgcGVy
c3BlY3RpdmVPYmplY3QgPSBwYXJlbnQoKTsKKworICAgIGlmIChwZXJzcGVjdGl2ZU9iamVjdCAm
JiBwZXJzcGVjdGl2ZU9iamVjdC0+aGFzTGF5ZXIoKSAmJiBwZXJzcGVjdGl2ZU9iamVjdC0+c3R5
bGUoKS5oYXNQZXJzcGVjdGl2ZSgpKSB7CisgICAgICAgIC8vIFBlcnBzZWN0aXZlIG9uIHRoZSBj
b250YWluZXIgYWZmZWN0cyB1cywgc28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4gaGVyZS4KKyAg
ICAgICAgQVNTRVJUKHBlcnNwZWN0aXZlT2JqZWN0LT5oYXNMYXllcigpKTsKKyAgICAgICAgRmxv
YXRQb2ludCBwZXJzcGVjdGl2ZU9yaWdpbiA9IGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q+KCpwZXJzcGVjdGl2ZU9iamVjdCkubGF5ZXIoKS0+cGVyc3BlY3RpdmVPcmlnaW4oKTsKKwor
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwZXJzcGVjdGl2ZU1hdHJpeDsKKyAgICAgICAg
cGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2ZShwZXJzcGVjdGl2ZU9iamVjdC0+c3R5
bGUoKS51c2VkUGVyc3BlY3RpdmUoKSk7CisKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJp
Z2h0M2QoLXBlcnNwZWN0aXZlT3JpZ2luLngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7
CisgICAgICAgIHRyYW5zZm9ybSA9IHBlcnNwZWN0aXZlTWF0cml4ICogdHJhbnNmb3JtOworICAg
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQzZChwZXJzcGVjdGl2ZU9yaWdpbi54KCksIHBl
cnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7CisgICAgfQorfQorCit2b2lkIFJlbmRlckVsZW1lbnQ6
OnB1c2hPbnRvVHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBP
cHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBtb2RlLCBjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBSZW5kZXJFbGVtZW50KiBjb250YWluZXIs
IGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBib29sIGNvbnRhaW5lclNraXBw
ZWQpIGNvbnN0Cit7CisgICAgYm9vbCBwcmVzZXJ2ZTNEID0gbW9kZS5jb250YWlucyhVc2VUcmFu
c2Zvcm1zKSAmJiBwYXJ0aWNpcGF0ZXNJblByZXNlcnZlM0QoKTsKKyAgICBpZiAobW9kZS5jb250
YWlucyhVc2VUcmFuc2Zvcm1zKSAmJiBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNv
bnRhaW5lcikpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OworICAgICAg
ICBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKG9mZnNldEluQ29udGFpbmVyLCBtYXRyaXgpOwor
ICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybShtYXRyaXgsIHByZXNlcnZlM0Qg
PyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpG
bGF0dGVuVHJhbnNmb3JtKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92
ZShvZmZzZXRJbkNvbnRhaW5lci53aWR0aCgpLCBvZmZzZXRJbkNvbnRhaW5lci5oZWlnaHQoKSwg
cHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNm
b3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOworCisgICAgaWYgKGNvbnRhaW5lclNraXBwZWQp
IHsKKyAgICAgICAgLy8gVGhlcmUgY2FuJ3QgYmUgYSB0cmFuc2Zvcm0gYmV0d2VlbiByZXBhaW50
Q29udGFpbmVyIGFuZCBjb250YWluZXIsIGJlY2F1c2UgdHJhbnNmb3JtcyBjcmVhdGUgY29udGFp
bmVycywgc28gaXQgc2hvdWxkIGJlIHNhZmUKKyAgICAgICAgLy8gdG8ganVzdCBzdWJ0cmFjdCB0
aGUgZGVsdGEgYmV0d2VlbiB0aGUgcmVwYWludENvbnRhaW5lciBhbmQgY29udGFpbmVyLgorICAg
ICAgICBMYXlvdXRTaXplIGNvbnRhaW5lck9mZnNldCA9IHJlcGFpbnRDb250YWluZXItPm9mZnNl
dEZyb21BbmNlc3RvckNvbnRhaW5lcigqY29udGFpbmVyKTsKKyAgICAgICAgdHJhbnNmb3JtU3Rh
dGUubW92ZSgtY29udGFpbmVyT2Zmc2V0LndpZHRoKCksIC1jb250YWluZXJPZmZzZXQuaGVpZ2h0
KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRy
YW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKKyAgICB9Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IGI5NTFkMTc5MjQ4MC4uNDg0Y2Fm
MWUxMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTI2
OCw2ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10
cmFuc2Zvcm1zLTEvI3RyYW5zZm9ybS1ib3gKICAgICBpbmxpbmUgRmxvYXRSZWN0IHRyYW5zZm9y
bVJlZmVyZW5jZUJveFJlY3QoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKICAgICBpbmxpbmUg
RmxvYXRSZWN0IHRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSBjb25zdDsKKyAgICBpbmxpbmUg
Ym9vbCBpc1RyYW5zZm9ybWVkKCkgY29uc3Q7CiAKICAgICAvLyBodHRwczovL3d3dy53My5vcmcv
VFIvY3NzLXRyYW5zZm9ybXMtMS8jcmVmZXJlbmNlLWJveAogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHJlZmVyZW5jZUJveFJlY3QoQ1NTQm94VHlwZSkgY29uc3Q7CkBAIC0zMTEsNiArMzEyLDcgQEAg
cHVibGljOgogICAgIGlubGluZSBib29sIGlzQmxvY2tCb3goKSBjb25zdDsKICAgICBpbmxpbmUg
Ym9vbCBpc0Jsb2NrTGV2ZWxCb3goKSBjb25zdDsKICAgICBpbmxpbmUgYm9vbCBpc0Jsb2NrQ29u
dGFpbmVyKCkgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgp
IGNvbnN0OwogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9mZnNldFBhcmVudCgpIGNvbnN0
OwogICAgIC8vIFB1c2hlcyBzdGF0ZSBvbnRvIFJlbmRlckdlb21ldHJ5TWFwIGFib3V0IGhvdyB0
byBtYXAgY29vcmRpbmF0ZXMgZnJvbSB0aGlzIHJlbmRlcmVyIHRvIGl0cyBjb250YWluZXIsIG9y
IGFuY2VzdG9yVG9TdG9wQXQgKHdoaWNoZXZlciBpcyBlbmNvdW50ZXJlZCBmaXJzdCkuCkBAIC0z
MzQsNiArMzM2LDEzIEBAIHB1YmxpYzoKIAogICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gc3R5bGUoKS53cml0aW5nTW9kZSgpOyB9CiAKKyAgICBib29sIHNob3Vs
ZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgUmVuZGVyRWxlbWVudCogY29udGFpbmVy
KSBjb25zdDsKKyAgICB2b2lkIGdldFRyYW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgTGF5b3V0
U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JikgY29uc3Q7Cisg
ICAgdm9pZCBwdXNoT250b1RyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0
PE1hcENvb3JkaW5hdGVzTW9kZT4sIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0
U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIsIGJvb2wgY29udGFpbmVyU2tpcHBlZCkgY29uc3Q7CisK
KyAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIGFuIG9iamVjdCB1cCB0aGUgY29udGFpbmVy
KCkgY2hhaW4uIEFzc2VydHMgdGhhdCBub25lIG9mIHRoZSBpbnRlcm1lZGlhdGUgb2JqZWN0cyBo
YXZlIHRyYW5zZm9ybXMuCisgICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQW5jZXN0b3JDb250YWlu
ZXIoY29uc3QgUmVuZGVyRWxlbWVudCYpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVy
RWxlbWVudChUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVGbGFn
PiwgVHlwZVNwZWNpZmljRmxhZ3MpOwogICAgIFJlbmRlckVsZW1lbnQoVHlwZSwgRG9jdW1lbnQm
LCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8VHlwZUZsYWc+LCBUeXBlU3BlY2lmaWNGbGFncyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudElubGlu
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50SW5saW5lcy5oCmlu
ZGV4IDE3YTMwMGFiMmFlZC4uMWE5NWYyNjlhMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudElubGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudElubGluZXMuaApAQCAtMjEsNiArMjEsNyBAQAogCiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIK
KyNpbmNsdWRlICJSZW5kZXJTdHlsZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zOCw2ICszOSw3IEBAIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6Omhhc01hc2soKSBj
b25zdCB7IHJldHVybiBzdHlsZSgpLmhhc01hc2soKTsgfQogaW5saW5lIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzT3V0bGluZSgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuaGFzT3V0bGluZSgpIHx8
IGhhc091dGxpbmVBbm5vdGF0aW9uKCk7IH0KIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6Omhh
c1NoYXBlT3V0c2lkZSgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkuc2hhcGVPdXRzaWRlKCk7IH0K
IGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmlzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVy
biBzdHlsZSgpLmhhc09wYWNpdHkoKTsgfQoraW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6aXNU
cmFuc2Zvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgp
ICYmIChzdHlsZSgpLmFmZmVjdHNUcmFuc2Zvcm0oKSB8fCBoYXNTVkdUcmFuc2Zvcm0oKSk7IH0K
IGlubGluZSBmbG9hdCBSZW5kZXJFbGVtZW50OjpvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3R5
bGUoKS5vcGFjaXR5KCk7IH0KIGlubGluZSBGbG9hdFJlY3QgUmVuZGVyRWxlbWVudDo6dHJhbnNm
b3JtUmVmZXJlbmNlQm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIHRyYW5zZm9ybVJlZmVyZW5jZUJv
eFJlY3Qoc3R5bGUoKSk7IH0KIGlubGluZSBGbG9hdFJlY3QgUmVuZGVyRWxlbWVudDo6dHJhbnNm
b3JtUmVmZXJlbmNlQm94UmVjdChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0IHsgcmV0
dXJuIHJlZmVyZW5jZUJveFJlY3QodHJhbnNmb3JtQm94VG9DU1NCb3hUeXBlKHN0eWxlLnRyYW5z
Zm9ybUJveCgpKSk7IH0KQEAgLTQ3LDYgKzQ5LDcgQEAgaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVu
dDo6aGFzQXBwbGVWaXN1YWxFZmZlY3QoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc0FwcGwK
IGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6Omhhc0FwcGxlVmlzdWFsRWZmZWN0UmVxdWlyaW5n
QmFja2Ryb3BGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc0FwcGxlVmlzdWFsRWZm
ZWN0UmVxdWlyaW5nQmFja2Ryb3BGaWx0ZXIoKTsgfQogI2VuZGlmCiAKK2lubGluZSBib29sIFJl
bmRlckVsZW1lbnQ6OmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBzdHls
ZSgpLmlzRGlzcGxheUlubGluZVR5cGUoKSAmJiAhKHN0eWxlKCkuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpJbmxpbmUgJiYgIWlzUmVwbGFjZWRPckF0b21pY0lubGluZSgpKTsgfQogaW5saW5l
IGJvb2wgUmVuZGVyRWxlbWVudDo6aXNCbG9ja0xldmVsQm94KCkgY29uc3QgeyByZXR1cm4gc3R5
bGUoKS5pc0Rpc3BsYXlCbG9ja0xldmVsKCk7IH0KIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6
OmlzQW5vbnltb3VzQmxvY2soKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKaW5kZXggM2I4ZmYxNDFhMjI2Li40ZjhkMDU5MTRhYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApA
QCAtMTUyLDcgKzE1Miw4IEBAIHN0YXRpYyBib29sIGNhbk1hcEJldHdlZW5SZW5kZXJlcnNWaWFM
YXllcnMoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyCiAgICAgICAgIGlmIChj
dXJyZW50LT5pc0ZpeGVkUG9zaXRpb25lZCgpIHx8IHN0eWxlLndyaXRpbmdNb2RlKCkuaXNCbG9j
a0ZsaXBwZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoY3Vy
cmVudC0+aGFzVHJhbnNmb3JtT3JQZXJzcGVjdGl2ZSgpKQorICAgICAgICBhdXRvIGhhc1RyYW5z
Zm9ybU9yUGVyc3BlY3RpdmUgPSBjdXJyZW50LT5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHko
KSAmJiAoY3VycmVudC0+aXNUcmFuc2Zvcm1lZCgpIHx8IGN1cnJlbnQtPnN0eWxlKCkuaGFzUGVy
c3BlY3RpdmUoKSk7CisgICAgICAgIGlmIChoYXNUcmFuc2Zvcm1PclBlcnNwZWN0aXZlKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgaWYgKGN1cnJlbnQtPmlz
UmVuZGVyRnJhZ21lbnRlZEZsb3coKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggMGIzZTAwN2Q5ZWJjLi4wNGI5MjZmYzUzYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xNTQwLDYwICsxNTQwLDYgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE9wdGlvblNldDxNYXBDb29y
ZGluYXRlc01vZGU+IG1vZGUsIFQKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyT2JqZWN0OjpzaG91
bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5l
ck9iamVjdCkgY29uc3QKLXsKLSAgICBpZiAoaXNUcmFuc2Zvcm1lZCgpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBpZiAoaGFzTGF5ZXIoKSAmJiBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVs
T2JqZWN0PigqdGhpcykubGF5ZXIoKS0+c25hcHNob3R0ZWRTY3JvbGxPZmZzZXRGb3JBbmNob3JQ
b3NpdGlvbmluZygpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoY29udGFpbmVyT2Jq
ZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUoKS5oYXNQZXJzcGVjdGl2ZSgpKQotICAgICAg
ICByZXR1cm4gY29udGFpbmVyT2JqZWN0ID09IHBhcmVudCgpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotLy8gRklYTUU6IE5vdyB0aGF0IGl0J3Mgbm8gbG9uZ2VyIHBhc3NlZCBhIGNvbnRhaW5l
ciBtYXliZSB0aGlzIHNob3VsZCBiZSByZW5hbWVkPwotdm9pZCBSZW5kZXJPYmplY3Q6OmdldFRy
YW5zZm9ybUZyb21Db250YWluZXIoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIs
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIGNvbnN0Ci17Ci0gICAgdHJhbnNmb3Jt
Lm1ha2VJZGVudGl0eSgpOwotICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2Zmc2V0SW5Db250YWlu
ZXIud2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0KCkpOwotICAgIENoZWNrZWRQdHI8
UmVuZGVyTGF5ZXI+IGxheWVyOwotICAgIGlmIChoYXNMYXllcigpICYmIChsYXllciA9IGRvd25j
YXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCp0aGlzKS5sYXllcigpKSAmJiBsYXllci0+dHJh
bnNmb3JtKCkpCi0gICAgICAgIHRyYW5zZm9ybS5tdWx0aXBseShsYXllci0+Y3VycmVudFRyYW5z
Zm9ybSgpKTsKLQotICAgIENoZWNrZWRQdHIgcGVyc3BlY3RpdmVPYmplY3QgPSBwYXJlbnQoKTsK
LQotICAgIGlmIChwZXJzcGVjdGl2ZU9iamVjdCAmJiBwZXJzcGVjdGl2ZU9iamVjdC0+aGFzTGF5
ZXIoKSAmJiBwZXJzcGVjdGl2ZU9iamVjdC0+c3R5bGUoKS5oYXNQZXJzcGVjdGl2ZSgpKSB7Ci0g
ICAgICAgIC8vIFBlcnBzZWN0aXZlIG9uIHRoZSBjb250YWluZXIgYWZmZWN0cyB1cywgc28gd2Ug
aGF2ZSB0byBmYWN0b3IgaXQgaW4gaGVyZS4KLSAgICAgICAgQVNTRVJUKHBlcnNwZWN0aXZlT2Jq
ZWN0LT5oYXNMYXllcigpKTsKLSAgICAgICAgRmxvYXRQb2ludCBwZXJzcGVjdGl2ZU9yaWdpbiA9
IGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCpwZXJzcGVjdGl2ZU9iamVjdCkubGF5
ZXIoKS0+cGVyc3BlY3RpdmVPcmlnaW4oKTsKLQotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBwZXJzcGVjdGl2ZU1hdHJpeDsKLSAgICAgICAgcGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJz
cGVjdGl2ZShwZXJzcGVjdGl2ZU9iamVjdC0+c3R5bGUoKS51c2VkUGVyc3BlY3RpdmUoKSk7Ci0g
ICAgICAgIAotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQzZCgtcGVyc3BlY3RpdmVP
cmlnaW4ueCgpLCAtcGVyc3BlY3RpdmVPcmlnaW4ueSgpLCAwKTsKLSAgICAgICAgdHJhbnNmb3Jt
ID0gcGVyc3BlY3RpdmVNYXRyaXggKiB0cmFuc2Zvcm07Ci0gICAgICAgIHRyYW5zZm9ybS50cmFu
c2xhdGVSaWdodDNkKHBlcnNwZWN0aXZlT3JpZ2luLngoKSwgcGVyc3BlY3RpdmVPcmlnaW4ueSgp
LCAwKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVuZGVyT2JqZWN0OjpwdXNoT250b1RyYW5zZm9ybVN0
YXRlKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgT3B0aW9uU2V0PE1hcENvb3JkaW5h
dGVzTW9kZT4gbW9kZSwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgY29uc3QgUmVuZGVyRWxlbWVudCogY29udGFpbmVyLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRJbkNvbnRhaW5lciwgYm9vbCBjb250YWluZXJTa2lwcGVkKSBjb25zdAotewotICAgIGJv
b2wgcHJlc2VydmUzRCA9IG1vZGUuY29udGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgcGFydGljaXBh
dGVzSW5QcmVzZXJ2ZTNEKCk7Ci0gICAgaWYgKG1vZGUuY29udGFpbnMoVXNlVHJhbnNmb3Jtcykg
JiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb250YWluZXIpKSB7Ci0gICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKLSAgICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNv
bnRhaW5lcihvZmZzZXRJbkNvbnRhaW5lciwgbWF0cml4KTsKLSAgICAgICAgdHJhbnNmb3JtU3Rh
dGUuYXBwbHlUcmFuc2Zvcm0obWF0cml4LCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFj
Y3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUob2Zmc2V0SW5Db250YWluZXIu
d2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zv
cm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJh
bnNmb3JtKTsKLQotICAgIGlmIChjb250YWluZXJTa2lwcGVkKSB7Ci0gICAgICAgIC8vIFRoZXJl
IGNhbid0IGJlIGEgdHJhbnNmb3JtIGJldHdlZW4gcmVwYWludENvbnRhaW5lciBhbmQgY29udGFp
bmVyLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRhaW5lcnMsIHNvIGl0IHNob3VsZCBi
ZSBzYWZlCi0gICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3QgdGhlIGRlbHRhIGJldHdlZW4gdGhl
IHJlcGFpbnRDb250YWluZXIgYW5kIGNvbnRhaW5lci4KLSAgICAgICAgTGF5b3V0U2l6ZSBjb250
YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5vZmZzZXRGcm9tQW5jZXN0b3JDb250YWlu
ZXIoKmNvbnRhaW5lcik7Ci0gICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUoLWNvbnRhaW5lck9m
ZnNldC53aWR0aCgpLCAtY29udGFpbmVyT2Zmc2V0LmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJh
bnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRl
blRyYW5zZm9ybSk7Ci0gICAgfQotfQotCiBGbG9hdFF1YWQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRv
Q29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmIGxvY2FsUXVhZCwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiBt
b2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKICAgICAvLyBUcmFjayB0aGUgcG9pbnQgYXQg
dGhlIGNlbnRlciBvZiB0aGUgcXVhZCdzIGJvdW5kaW5nIGJveC4gQXMgbWFwTG9jYWxUb0NvbnRh
aW5lcigpIGNhbGxzIG9mZnNldEZyb21Db250YWluZXIoKSwKQEAgLTE2MjgsMjYgKzE1NzQsNiBA
QCBMYXlvdXRTaXplIFJlbmRlck9iamVjdDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVt
ZW50JiBjb250YWluZXIsIGNvbnN0IExheQogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLUxheW91
dFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoY29uc3QgUmVu
ZGVyRWxlbWVudCYgY29udGFpbmVyKSBjb25zdAotewotICAgIExheW91dFNpemUgb2Zmc2V0Owot
ICAgIExheW91dFBvaW50IHJlZmVyZW5jZVBvaW50OwotICAgIENoZWNrZWRQdHIgY3VycmVudENv
bnRhaW5lciA9IHRoaXM7Ci0gICAgZG8gewotICAgICAgICBDaGVja2VkUHRyIG5leHRDb250YWlu
ZXIgPSBjdXJyZW50Q29udGFpbmVyLT5jb250YWluZXIoKTsKLSAgICAgICAgQVNTRVJUKG5leHRD
b250YWluZXIpOyAgLy8gVGhpcyBtZWFucyB3ZSByZWFjaGVkIHRoZSB0b3Agd2l0aG91dCBmaW5k
aW5nIGNvbnRhaW5lci4KLSAgICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIEFTU0VSVCghY3VycmVudENvbnRhaW5lci0+aXNUcmFuc2Zvcm1lZCgp
KTsKLSAgICAgICAgTGF5b3V0U2l6ZSBjdXJyZW50T2Zmc2V0ID0gY3VycmVudENvbnRhaW5lci0+
b2Zmc2V0RnJvbUNvbnRhaW5lcigqbmV4dENvbnRhaW5lciwgcmVmZXJlbmNlUG9pbnQpOwotICAg
ICAgICBvZmZzZXQgKz0gY3VycmVudE9mZnNldDsKLSAgICAgICAgcmVmZXJlbmNlUG9pbnQubW92
ZShjdXJyZW50T2Zmc2V0KTsKLSAgICAgICAgY3VycmVudENvbnRhaW5lciA9IFdURk1vdmUobmV4
dENvbnRhaW5lcik7Ci0gICAgfSB3aGlsZSAoY3VycmVudENvbnRhaW5lciAhPSAmY29udGFpbmVy
KTsKLQotICAgIHJldHVybiBvZmZzZXQ7Ci19Ci0KIGJvb2wgUmVuZGVyT2JqZWN0OjpwYXJ0aWNp
cGF0ZXNJblByZXNlcnZlM0QoKSBjb25zdAogewogICAgIHJldHVybiBoYXNMYXllcigpICYmIGRv
d25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCp0aGlzKS5sYXllcigpLT5wYXJ0aWNpcGF0
ZXNJblByZXNlcnZlM0QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApp
bmRleCAwNGI1YzcyOTI2MGYuLjcwNWM5ODRmZGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaApAQCAtNDMwLDggKzQzMCw2IEBAIHB1YmxpYzoKICAgICBib29sIGlz
UmVuZGVySW5saW5lKCkgY29uc3QgeyByZXR1cm4gbV90eXBlRmxhZ3MuY29udGFpbnMoVHlwZUZs
YWc6OklzUmVuZGVySW5saW5lKTsgfQogICAgIGJvb2wgaXNSZW5kZXJMYXllck1vZGVsT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlRmxhZ3MuY29udGFpbnMoVHlwZUZsYWc6OklzTGF5ZXJN
b2RlbE9iamVjdCk7IH0KIAotICAgIGlubGluZSBib29sIGlzQXRvbWljSW5saW5lTGV2ZWxCb3go
KSBjb25zdDsKLQogICAgIGJvb2wgaXNSZW5kZXJDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gdHlw
ZSgpID09IFR5cGU6OkNvdW50ZXI7IH0KICAgICBib29sIGlzUmVuZGVyUXVvdGUoKSBjb25zdCB7
IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6UXVvdGU7IH0KIApAQCAtNzAyLDggKzcwMCw2IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc05vblZpc2libGVPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGVCaXRmaWVsZHMuaGFzRmxhZyhTdGF0ZUZsYWc6Okhhc05vblZpc2libGVPdmVyZmxvdyk7
IH0KIAogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZUJpdGZpZWxkcy5oYXNGbGFnKFN0YXRlRmxhZzo6SGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KTsgfSAvLyBUcmFuc2Zvcm0sIHBlcnNwZWN0aXZlIG9yIHRyYW5zZm9ybS1zdHls
ZTogcHJlc2VydmUtM2QuCi0gICAgaW5saW5lIGJvb2wgaXNUcmFuc2Zvcm1lZCgpIGNvbnN0Owot
ICAgIGlubGluZSBib29sIGhhc1RyYW5zZm9ybU9yUGVyc3BlY3RpdmUoKSBjb25zdDsKIAogICAg
IGJvb2wgY2FwdHVyZWRJblZpZXdUcmFuc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZUJp
dGZpZWxkcy5oYXNGbGFnKFN0YXRlRmxhZzo6Q2FwdHVyZWRJblZpZXdUcmFuc2l0aW9uKTsgfQog
ICAgIGJvb2wgc2V0Q2FwdHVyZWRJblZpZXdUcmFuc2l0aW9uKGJvb2wpOwpAQCAtODI5LDggKzgy
NSw2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIHRoZSBjb250YWlu
ZXIoKSByZW5kZXJlciAoZXhjbHVkaW5nIHRyYW5zZm9ybXMpLiBJbiBtdWx0aS1jb2x1bW4gbGF5
b3V0LAogICAgIC8vIGRpZmZlcmVudCBvZmZzZXRzIGFwcGx5IGF0IGRpZmZlcmVudCBwb2ludHMs
IHNvIHJldHVybiB0aGUgb2Zmc2V0IHRoYXQgYXBwbGllcyB0byB0aGUgZ2l2ZW4gcG9pbnQuCiAg
ICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYs
IGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSBudWxscHRy
KSBjb25zdDsKLSAgICAvLyBSZXR1cm4gdGhlIG9mZnNldCBmcm9tIGFuIG9iamVjdCB1cCB0aGUg
Y29udGFpbmVyKCkgY2hhaW4uIEFzc2VydHMgdGhhdCBub25lIG9mIHRoZSBpbnRlcm1lZGlhdGUg
b2JqZWN0cyBoYXZlIHRyYW5zZm9ybXMuCi0gICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQW5jZXN0
b3JDb250YWluZXIoY29uc3QgUmVuZGVyRWxlbWVudCYpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFNlbGVjdGlvbkdlb21ldHJpZXMo
VmVjdG9yPFNlbGVjdGlvbkdlb21ldHJ5PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5z
aWduZWQgZW5kT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsK
QEAgLTEwOTQsMTEgKzEwODgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2Fs
VG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiwgYm9vbCog
d2FzRml4ZWQgPSBudWxscHRyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVU
b0xvY2FsUG9pbnQoT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIFRyYW5zZm9ybVN0YXRl
JikgY29uc3Q7CiAKLSAgICBib29sIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29u
c3QgUmVuZGVyRWxlbWVudCogY29udGFpbmVyKSBjb25zdDsKLSAgICB2b2lkIGdldFRyYW5zZm9y
bUZyb21Db250YWluZXIoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIsIFRyYW5z
Zm9ybWF0aW9uTWF0cml4JikgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBwdXNoT250b1RyYW5zZm9y
bVN0YXRlKFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IFJlbmRl
ckVsZW1lbnQqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0SW5Db250YWluZXIs
IGJvb2wgY29udGFpbmVyU2tpcHBlZCkgY29uc3Q7Ci0KICAgICBib29sIHBhcnRpY2lwYXRlc0lu
UHJlc2VydmUzRCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3Rz
KFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiAvKiBhZGRpdGlvbmFsT2Zm
c2V0ICovLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiAvKiBwYWludENvbnRhaW5lciAq
LyA9IG51bGxwdHIpIGNvbnN0IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0SW5saW5lcy5oCmluZGV4IDUyNDE0NzdmOTVmYS4uZjExYWVlN2YxYTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0SW5saW5lcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RJbmxpbmVzLmgKQEAgLTIx
LDE1ICsyMSwxMCBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZUlubGluZXMuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIGJvb2wgUmVuZGVyT2Jq
ZWN0OjpoYXNUcmFuc2Zvcm1PclBlcnNwZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKGlzVHJhbnNmb3JtZWQoKSB8fCBzdHlsZSgpLmhhc1Bl
cnNwZWN0aXZlKCkpOyB9Ci1pbmxpbmUgYm9vbCBSZW5kZXJPYmplY3Q6OmlzQXRvbWljSW5saW5l
TGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmlzRGlzcGxheUlubGluZVR5cGUoKSAm
JiAhKHN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUgJiYgIWlzUmVwbGFj
ZWRPckF0b21pY0lubGluZSgpKTsgfQotaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc1RyYW5z
Zm9ybWVkKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgJiYg
KHN0eWxlKCkuYWZmZWN0c1RyYW5zZm9ybSgpIHx8IGhhc1NWR1RyYW5zZm9ybSgpKTsgfQotaW5s
aW5lIGJvb2wgUmVuZGVyT2JqZWN0OjpwcmVzZXJ2ZXNOZXdsaW5lKCkgY29uc3QgeyByZXR1cm4g
IWlzUmVuZGVyU1ZHSW5saW5lVGV4dCgpICYmIHN0eWxlKCkucHJlc2VydmVOZXdsaW5lKCk7IH0K
IGlubGluZSBSZWY8RG9jdW1lbnQ+IFJlbmRlck9iamVjdDo6cHJvdGVjdGVkRG9jdW1lbnQoKSBj
b25zdCB7IHJldHVybiBkb2N1bWVudCgpOyB9CiBpbmxpbmUgY29uc3QgTG9jYWxGcmFtZVZpZXdM
YXlvdXRDb250ZXh0JiBSZW5kZXJPYmplY3Q6OmxheW91dENvbnRleHQoKSBjb25zdCB7IHJldHVy
biB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVJbmxpbmVIZWFkZXJzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCmluZGV4IGMwNDkyNzQx
OWUxMy4uZjQ3M2ExNjVmY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lSW5saW5lSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVJbmxpbmVIZWFkZXJzLmgKQEAgLTUyLDE1ICs1MiwxNSBAQCBpbmxpbmUgYm9vbCBy
ZXF1aXJlc0xpbmVCb3hGb3JDb250ZW50KGNvbnN0IFJlbmRlcklubGluZSYgZmxvdywgY29uc3Qg
TGluZUluZm8mCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgYm9vbCBzaG91bGRDb2xs
YXBzZVdoaXRlU3BhY2UoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBMaW5lSW5mbyYg
bGluZUluZm8sIFdoaXRlc3BhY2VQb3NpdGlvbiB3aGl0ZXNwYWNlUG9zaXRpb24pCitpbmxpbmUg
Ym9vbCBzaG91bGRDb2xsYXBzZVdoaXRlU3BhY2UoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBj
b25zdCBMaW5lSW5mbyYgbGluZUluZm8sIFdoaXRlc3BhY2VQb3NpdGlvbiB3aGl0ZXNwYWNlUG9z
aXRpb24pCiB7CiAgICAgLy8gQ1NTMiAxNi42LjEKICAgICAvLyBJZiBhIHNwYWNlIChVKzAwMjAp
IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIGhhcyAnd2hpdGUtc3BhY2UnIHNldCB0byAnbm9y
bWFsJywgJ25vd3JhcCcsIG9yICdwcmUtbGluZScsIGl0IGlzIHJlbW92ZWQuCiAgICAgLy8gSWYg
YSBzcGFjZSAoVSswMDIwKSBhdCB0aGUgZW5kIG9mIGEgbGluZSBoYXMgJ3doaXRlLXNwYWNlJyBz
ZXQgdG8gJ25vcm1hbCcsICdub3dyYXAnLCBvciAncHJlLWxpbmUnLCBpdCBpcyBhbHNvIHJlbW92
ZWQuCiAgICAgLy8gSWYgc3BhY2VzIChVKzAwMjApIG9yIHRhYnMgKFUrMDAwOSkgYXQgdGhlIGVu
ZCBvZiBhIGxpbmUgaGF2ZSAnd2hpdGUtc3BhY2UnIHNldCB0byAncHJlLXdyYXAnLCBVQXMgbWF5
IHZpc3VhbGx5IGNvbGxhcHNlIHRoZW0uCi0gICAgcmV0dXJuIHN0eWxlLT5jb2xsYXBzZVdoaXRl
U3BhY2UoKQotICAgICAgICB8fCAod2hpdGVzcGFjZVBvc2l0aW9uID09IFRyYWlsaW5nV2hpdGVz
cGFjZSAmJiBzdHlsZS0+d2hpdGVTcGFjZUNvbGxhcHNlKCkgPT0gV2hpdGVTcGFjZUNvbGxhcHNl
OjpQcmVzZXJ2ZQotICAgICAgICAgICAgJiYgc3R5bGUtPnRleHRXcmFwTW9kZSgpID09IFRleHRX
cmFwTW9kZTo6V3JhcCAmJiAhbGluZUluZm8uaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gc3R5bGUu
Y29sbGFwc2VXaGl0ZVNwYWNlKCkKKyAgICAgICAgfHwgKHdoaXRlc3BhY2VQb3NpdGlvbiA9PSBU
cmFpbGluZ1doaXRlc3BhY2UgJiYgc3R5bGUud2hpdGVTcGFjZUNvbGxhcHNlKCkgPT0gV2hpdGVT
cGFjZUNvbGxhcHNlOjpQcmVzZXJ2ZQorICAgICAgICAgICAgJiYgc3R5bGUudGV4dFdyYXBNb2Rl
KCkgPT0gVGV4dFdyYXBNb2RlOjpXcmFwICYmICFsaW5lSW5mby5pc0VtcHR5KCkpOwogfQogCiBp
bmxpbmUgYm9vbCBza2lwTm9uQnJlYWtpbmdTcGFjZShjb25zdCBMZWdhY3lJbmxpbmVJdGVyYXRv
ciYgaXQsIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbykKQEAgLTg4LDExICs4OCwxMSBAQCBpbmxp
bmUgYm9vbCByZXF1aXJlc0xpbmVCb3goY29uc3QgTGVnYWN5SW5saW5lSXRlcmF0b3ImIGl0LCBj
b25zdCBMaW5lSW5mbyYgbGluZQogICAgICAgICByZW5kZXJlcklzRW1wdHlJbmxpbmUgPSBpc0Vt
cHR5SW5saW5lKCppbmxpbmVSZW5kZXJlcik7CiAgICAgfQogCi0gICAgaWYgKCFzaG91bGRDb2xs
YXBzZVdoaXRlU3BhY2UoJml0LnJlbmRlcmVyKCktPnN0eWxlKCksIGxpbmVJbmZvLCB3aGl0ZXNw
YWNlUG9zaXRpb24pKQorICAgIGlmICghc2hvdWxkQ29sbGFwc2VXaGl0ZVNwYWNlKGl0LnJlbmRl
cmVyKCktPnN0eWxlKCksIGxpbmVJbmZvLCB3aGl0ZXNwYWNlUG9zaXRpb24pKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIFVDaGFyIGN1cnJlbnQgPSBpdC5jdXJyZW50KCk7Ci0gICAgYm9v
bCBub3RKdXN0V2hpdGVzcGFjZSA9IGN1cnJlbnQgIT0gJyAnICYmIGN1cnJlbnQgIT0gJ1x0JyAm
JiBjdXJyZW50ICE9IHNvZnRIeXBoZW4gJiYgKGN1cnJlbnQgIT0gJ1xuJyB8fCBpdC5yZW5kZXJl
cigpLT5wcmVzZXJ2ZXNOZXdsaW5lKCkpICYmICFza2lwTm9uQnJlYWtpbmdTcGFjZShpdCwgbGlu
ZUluZm8pOworICAgIGJvb2wgbm90SnVzdFdoaXRlc3BhY2UgPSBjdXJyZW50ICE9ICcgJyAmJiBj
dXJyZW50ICE9ICdcdCcgJiYgY3VycmVudCAhPSBzb2Z0SHlwaGVuICYmIGN1cnJlbnQgIT0gJ1xu
JyAmJiAhc2tpcE5vbkJyZWFraW5nU3BhY2UoaXQsIGxpbmVJbmZvKTsKICAgICByZXR1cm4gbm90
SnVzdFdoaXRlc3BhY2UgfHwgcmVuZGVyZXJJc0VtcHR5SW5saW5lOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0JvdW5kaW5nQm94Q29tcHV0YXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0
aW9uLmNwcAppbmRleCBjM2QyODkyMWZiMjYuLmMxNGI4OTVjNTcxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0JvdW5kaW5nQm94Q29tcHV0YXRp
b24uY3BwCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50
ZXIuaCIKICNpbmNsdWRlICJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQ2hpbGRJdGVyYXRvci5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIKKyNp
bmNsdWRlICJSZW5kZXJFbGVtZW50SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRh
aW5lci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDM0M2U5ZTk4YTlk
NS4uOTVkNmVjZmNjMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lk
IFJlbmRlclRyZWVCdWlsZGVyOjphdHRhY2hJbnRlcm5hbChSZW5kZXJFbGVtZW50JiBwYXJlbnQs
IFJlbmRlclB0cjxSZW5kZXJPYgogICAgIH0KIAogICAgIGlmIChwYXJlbnQuc3R5bGUoKS5kaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6OlJ1YnkgfHwgcGFyZW50LnN0eWxlKCkuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpSdWJ5QmxvY2spIHsKLSAgICAgICAgYXV0byYgcGFyZW50Q2FuZGlkYXRl
ID0gcnVieUJ1aWxkZXIoKS5maW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVieUNoaWxk
KHBhcmVudCwgKmNoaWxkLCBiZWZvcmVDaGlsZCk7CisgICAgICAgIGF1dG8mIHBhcmVudENhbmRp
ZGF0ZSA9IHJ1YnlCdWlsZGVyKCkuZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlD
aGlsZChwYXJlbnQsIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpjaGlsZCksIGJlZm9yZUNoaWxk
KTsKICAgICAgICAgaWYgKCZwYXJlbnRDYW5kaWRhdGUgPT0gJnBhcmVudCkgewogICAgICAgICAg
ICAgcnVieUJ1aWxkZXIoKS5hdHRhY2hGb3JTdHlsZUJhc2VkUnVieShwYXJlbnRDYW5kaWRhdGUs
IFdURk1vdmUoY2hpbGQpLCBiZWZvcmVDaGlsZCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00
ODAsNyArNDgwLDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6YXR0YWNoVG9SZW5kZXJFbGVt
ZW50SW50ZXJuYWwoUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW4KICAgICB9CiAKICAgICBuZXdD
aGlsZC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Ci0gICAgYXV0byBpc091
dE9mRmxvd0JveCA9IG5ld0NoaWxkLT5zdHlsZSgpLmhhc091dE9mRmxvd1Bvc2l0aW9uKCk7Cisg
ICAgYXV0byBpc091dE9mRmxvd0JveCA9IG5ld0NoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KTsKICAgICBpZiAoIWlzT3V0T2ZGbG93Qm94KQogICAgICAgICBwYXJlbnQuc2V0UHJlZmVycmVk
TG9naWNhbFdpZHRoc0RpcnR5KHRydWUpOwogCkBAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBSZW5k
ZXJUcmVlQnVpbGRlcjo6cmVtb3ZlQW5vbnltb3VzV3JhcHBlcnNGb3JJbmxpbmVDaGlsZHJlbklm
TmVlZGVkKFJlbmRlckUKICAgICAvLyBpZiB3ZSBmaW5kIGEgY29udGludWF0aW9uLgogICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gc2hvdWxkQWxsQ2hpbGRyZW5CZUlubGluZTsKICAgICBmb3IgKGF1
dG8qIGN1cnJlbnQgPSBibG9ja1BhcmVudC0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50
ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY3VycmVudC0+c3R5bGUo
KS5pc0Zsb2F0aW5nKCkgfHwgY3VycmVudC0+c3R5bGUoKS5oYXNPdXRPZkZsb3dQb3NpdGlvbigp
KQorICAgICAgICBpZiAoY3VycmVudC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgp
KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKCFpczxSZW5kZXJCbG9jaz4o
KmN1cnJlbnQpKQpAQCAtMTEwMiw3ICsxMTAyLDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6
cmVwb3J0VmlzdWFsbHlOb25FbXB0eUNvbnRlbnQoY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW4K
ICAgICAgICAgfTsKICAgICAgICAgLy8gU1ZHIGNvbnRlbnQgdGVuZHMgdG8gaGF2ZSBhIGZpeGVk
IHNpemUgY29uc3RydWN0LiBIb3dldmVyIHRoaXMgaXMga25vd24gdG8gYmUgaW5hY2N1cmF0ZSBp
biBjZXJ0YWluIGNhc2VzIChib3gtc2l6aW5nOiBib3JkZXItYm94KSBvciBlc3BlY2lhbGx5IHdo
ZW4gdGhlIHBhcmVudCBib3ggaXMgb3ZlcnNpemVkLgogICAgICAgICBhdXRvIGNhbmRpZGF0ZVNp
emUgPSBJbnRTaXplIHsgfTsKLSAgICAgICAgaWYgKGF1dG8gc2l6ZSA9IGZpeGVkU2l6ZShjaGls
ZCkpCisgICAgICAgIGlmIChhdXRvIHNpemUgPSBmaXhlZFNpemUoZG93bmNhc3Q8UmVuZGVyRWxl
bWVudD4oY2hpbGQpKSkKICAgICAgICAgICAgIGNhbmRpZGF0ZVNpemUgPSAqc2l6ZTsKICAgICAg
ICAgZWxzZSBpZiAoYXV0byBzaXplID0gZml4ZWRTaXplKHBhcmVudCkpCiAgICAgICAgICAgICBj
YW5kaWRhdGVTaXplID0gKnNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKaW5kZXggODczODI1
Y2JhYmU5Li5lN2VjOTdiZWQzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6aW5zZXJ0Q2hpbGRUb0Nv
bnRpbnVhdGlvbihSZW5kZXJCbG9jayYgcGFyZW50LCBSZQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYm9vbCBjaGlsZElzTm9ybWFsID0gY2hpbGQtPmlzSW5saW5lKCkgfHwgY2hpbGQt
PnN0eWxlKCkuY29sdW1uU3BhbigpID09IENvbHVtblNwYW46Ok5vbmU7CisgICAgYm9vbCBjaGls
ZElzTm9ybWFsID0gY2hpbGQtPmlzSW5saW5lKCkgfHwgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4o
KmNoaWxkKS5zdHlsZSgpLmNvbHVtblNwYW4oKSA9PSBDb2x1bW5TcGFuOjpOb25lOwogICAgIGJv
b2wgYmNwSXNOb3JtYWwgPSBiZWZvcmVDaGlsZFBhcmVudC0+aXNJbmxpbmUoKSB8fCBiZWZvcmVD
aGlsZFBhcmVudC0+c3R5bGUoKS5jb2x1bW5TcGFuKCkgPT0gQ29sdW1uU3Bhbjo6Tm9uZTsKICAg
ICBib29sIGZsb3dJc05vcm1hbCA9IGZsb3ctPmlzSW5saW5lKCkgfHwgZmxvdy0+c3R5bGUoKS5j
b2x1bW5TcGFuKCkgPT0gQ29sdW1uU3Bhbjo6Tm9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uY3BwCmluZGV4IDkwNDViZGVjNjMxMy4uNDAwZGJlNmY5Y2E2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0
aUNvbHVtbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46OnJlc29sdmVNb3ZlZENoaWxkKFJl
bmRlckZyYWdtZW50ZWQKICAgICAgICAgcmV0dXJuIGJlZm9yZUNoaWxkOwogCiAgICAgLy8gV2Ug
b25seSBuZWVkIHRvIHJlc29sdmUgZm9yIGNvbHVtbiBzcGFubmVycy4KLSAgICBpZiAoYmVmb3Jl
Q2hpbGQtPnN0eWxlKCkuY29sdW1uU3BhbigpICE9IENvbHVtblNwYW46OkFsbCkKKyAgICBpZiAo
YmVmb3JlQ2hpbGRSZW5kZXJCb3gtPnN0eWxlKCkuY29sdW1uU3BhbigpICE9IENvbHVtblNwYW46
OkFsbCkKICAgICAgICAgcmV0dXJuIGJlZm9yZUNoaWxkOwogCiAgICAgLy8gVGhlIHJlbmRlcmVy
IGZvciB0aGUgYWN0dWFsIERPTSBub2RlIHRoYXQgZXN0YWJsaXNoZXMgYSBzcGFubmVyIGlzIG1v
dmVkIGZyb20gaXRzIG9yaWdpbmFsCkBAIC0yNDUsNiArMjQ1LDkgQEAgdm9pZCBSZW5kZXJUcmVl
QnVpbGRlcjo6TXVsdGlDb2x1bW46Om11bHRpQ29sdW1uRGVzY2VuZGFudEluc2VydGVkKFJlbmRl
ck11bHRpQ28KIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjptdWx0aUNvbHVt
blJlbGF0aXZlV2lsbEJlUmVtb3ZlZChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZsb3csIFJlbmRl
ck9iamVjdCYgcmVsYXRpdmUsIFJlbmRlclRyZWVCdWlsZGVyOjpDYW5Db2xsYXBzZUFub255bW91
c0Jsb2NrIGNhbkNvbGxhcHNlQW5vbnltb3VzQmxvY2spCiB7CiAgICAgZmxvdy5pbnZhbGlkYXRl
RnJhZ21lbnRzKCk7CisgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbGF0aXZlKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgaWYgKGF1dG8qIHBsYWNlaG9sZGVyID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyPihyZWxhdGl2ZSkpIHsKICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBtYXAgZW50cnkgZm9yIHRoaXMgc3Bhbm5lciwgYnV0IGxlYXZlIHRoZSBh
Y3R1YWwgc3Bhbm5lciByZW5kZXJlciBhbG9uZS4gQWxzbwogICAgICAgICAvLyBrZWVwIHRoZSBy
ZWZlcmVuY2UgdG8gdGhlIHNwYW5uZXIsIHNpbmNlIHRoZSBwbGFjZWhvbGRlciBtYXkgYmUgYWJv
dXQgdG8gYmUgcmUtaW5zZXJ0ZWQKQEAgLTI1MywxMSArMjU2LDExIEBAIHZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjptdWx0aUNvbHVtblJlbGF0aXZlV2lsbEJlUmVtb3ZlZChS
ZW5kZXJNdWx0CiAgICAgICAgIGZsb3cuc3Bhbm5lck1hcCgpLnJlbW92ZShwbGFjZWhvbGRlci0+
c3Bhbm5lcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAocmVsYXRpdmUuc3R5
bGUoKS5jb2x1bW5TcGFuKCkgPT0gQ29sdW1uU3Bhbjo6QWxsKSB7Ci0gICAgICAgIGlmIChyZWxh
dGl2ZS5wYXJlbnQoKSAhPSBmbG93LnBhcmVudCgpKQorICAgIGlmIChhdXRvKiByZW5kZXJCb3gg
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94PihyZWxhdGl2ZSk7IHJlbmRlckJveCAmJiByZW5k
ZXJCb3gtPnN0eWxlKCkuY29sdW1uU3BhbigpID09IENvbHVtblNwYW46OkFsbCkgeworICAgICAg
ICBpZiAocmVuZGVyQm94LT5wYXJlbnQoKSAhPSBmbG93LnBhcmVudCgpKQogICAgICAgICAgICAg
cmV0dXJuOyAvLyBub3QgYSB2YWxpZCBzcGFubmVyLgogCi0gICAgICAgIGhhbmRsZVNwYW5uZXJS
ZW1vdmFsKGZsb3csIHJlbGF0aXZlLCBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrKTsKKyAgICAg
ICAgaGFuZGxlU3Bhbm5lclJlbW92YWwoZmxvdywgKnJlbmRlckJveCwgY2FuQ29sbGFwc2VBbm9u
eW1vdXNCbG9jayk7CiAgICAgfQogICAgIC8vIE5vdGUgdGhhdCB3ZSBtaWdodCBlbmQgdXAgd2l0
aCBlbXB0eSBjb2x1bW4gc2V0cyBpZiBhbGwgY29sdW1uIGNvbnRlbnQgaXMgcmVtb3ZlZC4gVGhh
dCdzIG5vCiAgICAgLy8gYmlnIGRlYWwgdGhvdWdoIChhbmQgbG9jYXRpbmcgdGhlbSB3b3VsZCBi
ZSBleHBlbnNpdmUpLCBhbmQgdGhleSB3aWxsIGJlIGZvdW5kIGFuZCByZS11c2VkIGlmCkBAIC00
NDIsMTAgKzQ0NSwxMCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNv
bHVtbjo6cHJvY2Vzc1Bvc3NpYmxlU3Bhbm5lckRlc2NlbmRhbnQoUgogICAgIHJldHVybiBuZXh0
RGVzY2VuZGFudDsKIH0KIAotdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46Omhh
bmRsZVNwYW5uZXJSZW1vdmFsKFJlbmRlck11bHRpQ29sdW1uRmxvdyYgZmxvdywgUmVuZGVyT2Jq
ZWN0JiBzcGFubmVyLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9j
ayBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrKQordm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6TXVs
dGlDb2x1bW46OmhhbmRsZVNwYW5uZXJSZW1vdmFsKFJlbmRlck11bHRpQ29sdW1uRmxvdyYgZmxv
dywgUmVuZGVyQm94JiBzcGFubmVyLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2FuQ29sbGFwc2VBbm9u
eW1vdXNCbG9jayBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrKQogewogICAgIC8vIFRoZSBwbGFj
ZWhvbGRlciBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gcmVtb3ZlZCwgYnV0IGlmIGl0IGhhc24ndCwg
ZG8gc28gbm93LgotICAgIGlmIChhdXRvIHBsYWNlaG9sZGVyID0gZmxvdy5zcGFubmVyTWFwKCku
dGFrZSgmZG93bmNhc3Q8UmVuZGVyQm94PihzcGFubmVyKSkpCisgICAgaWYgKGF1dG8gcGxhY2Vo
b2xkZXIgPSBmbG93LnNwYW5uZXJNYXAoKS50YWtlKCZzcGFubmVyKSkKICAgICAgICAgbV9idWls
ZGVyLmRlc3Ryb3koKnBsYWNlaG9sZGVyLCBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrKTsKIAog
ICAgIGlmIChhdXRvKiBuZXh0ID0gc3Bhbm5lci5uZXh0U2libGluZygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0
aUNvbHVtbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyTXVsdGlDb2x1bW4uaAppbmRleCBiMGQ4MDJiNzRlMTQuLmQzZTRlZjkxNGEzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVyTXVsdGlDb2x1bW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjcmVhdGVGcmFnbWVudGVkRmxvdyhSZW5kZXJCbG9ja0Zsb3cmKTsKICAgICB2
b2lkIGRlc3Ryb3lGcmFnbWVudGVkRmxvdyhSZW5kZXJCbG9ja0Zsb3cmKTsKICAgICBSZW5kZXJP
YmplY3QqIHByb2Nlc3NQb3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50KFJlbmRlck11bHRpQ29sdW1u
RmxvdyYsIFJlbmRlck9iamVjdComIHN1YnRyZWVSb290LCBSZW5kZXJPYmplY3QmIGRlc2NlbmRh
bnQpOwotICAgIHZvaWQgaGFuZGxlU3Bhbm5lclJlbW92YWwoUmVuZGVyTXVsdGlDb2x1bW5GbG93
JiwgUmVuZGVyT2JqZWN0JiBzcGFubmVyLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2FuQ29sbGFwc2VB
bm9ueW1vdXNCbG9jayk7CisgICAgdm9pZCBoYW5kbGVTcGFubmVyUmVtb3ZhbChSZW5kZXJNdWx0
aUNvbHVtbkZsb3cmLCBSZW5kZXJCb3gmIHNwYW5uZXIsIFJlbmRlclRyZWVCdWlsZGVyOjpDYW5D
b2xsYXBzZUFub255bW91c0Jsb2NrKTsKIAogICAgIFJlbmRlclRyZWVCdWlsZGVyJiBtX2J1aWxk
ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyUnVieS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcAppbmRleCA0ODQyOWNjYmNiMjIuLjA1NjFmMGM0
ZTk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVCdWlsZGVyUnVieS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVBbm9ueW1vdXNSZW5kZXJlckZvclJ1YnkoUmVu
ZGVyRWxlbWVudCYgcGEKICAgICByZXR1cm4gcnVieTsKIH0KIAotUmVuZGVyRWxlbWVudCYgUmVu
ZGVyVHJlZUJ1aWxkZXI6OlJ1Ynk6OmZpbmRPckNyZWF0ZVBhcmVudEZvclN0eWxlQmFzZWRSdWJ5
Q2hpbGQoUmVuZGVyRWxlbWVudCYgcGFyZW50LCBjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkLCBS
ZW5kZXJPYmplY3QqJiBiZWZvcmVDaGlsZCkKK1JlbmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWls
ZGVyOjpSdWJ5OjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVieUNoaWxkKFJlbmRl
ckVsZW1lbnQmIHBhcmVudCwgY29uc3QgUmVuZGVyRWxlbWVudCYgY2hpbGQsIFJlbmRlck9iamVj
dComIGJlZm9yZUNoaWxkKQogewogICAgIFJlbmRlckVsZW1lbnQqIGJlZm9yZUNoaWxkQW5jZXN0
b3IgPSAmcGFyZW50OwogICAgIGlmIChhdXRvKiBydWJ5SW5saW5lID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlcklubGluZT4ocGFyZW50KTsgcnVieUlubGluZSAmJiBydWJ5SW5saW5lLT5jb250aW51
YXRpb24oKSkKQEAgLTcwLDcgKzcwLDcgQEAgUmVuZGVyRWxlbWVudCYgUmVuZGVyVHJlZUJ1aWxk
ZXI6OlJ1Ynk6OmZpbmRPckNyZWF0ZVBhcmVudEZvclN0eWxlQmFzZWRSdWJ5Q2hpbGQKICAgICBl
bHNlIGlmIChhdXRvKiBydWJ5QmxvY2sgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQmxvY2s+KHBh
cmVudCk7IHJ1YnlCbG9jayAmJiBydWJ5QmxvY2stPmNvbnRpbnVhdGlvbigpKQogICAgICAgICBi
ZWZvcmVDaGlsZEFuY2VzdG9yID0gUmVuZGVyVHJlZUJ1aWxkZXI6OkJsb2NrOjpjb250aW51YXRp
b25CZWZvcmUoKnJ1YnlCbG9jaywgYmVmb3JlQ2hpbGQpOwogCi0gICAgaWYgKCFjaGlsZC5pc1Jl
bmRlclRleHQoKSAmJiBjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6UnVi
eSAmJiBiZWZvcmVDaGlsZEFuY2VzdG9yLT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlw
ZTo6UnVieUJsb2NrKQorICAgIGlmIChjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6UnVieSAmJiBiZWZvcmVDaGlsZEFuY2VzdG9yLT5zdHlsZSgpLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6UnVieUJsb2NrKQogICAgICAgICByZXR1cm4gKmJlZm9yZUNoaWxkQW5jZXN0
b3I7CiAKICAgICBpZiAoYmVmb3JlQ2hpbGRBbmNlc3Rvci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlJ1YnlCbG9jaykgewpAQCAtOTUsNyArOTUsNyBAQCBSZW5kZXJFbGVtZW50
JiBSZW5kZXJUcmVlQnVpbGRlcjo6UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNl
ZFJ1YnlDaGlsZAogICAgICAgICByZXR1cm4gKm5ld1BhcmVudDsKICAgICB9CiAKLSAgICBpZiAo
IWNoaWxkLmlzUmVuZGVyVGV4dCgpICYmIChjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6UnVieUJhc2UgfHwgY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OlJ1YnlBbm5vdGF0aW9uKSkKKyAgICBpZiAoY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlJ1YnlCYXNlIHx8IGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3Bs
YXlUeXBlOjpSdWJ5QW5ub3RhdGlvbikKICAgICAgICAgcmV0dXJuICpiZWZvcmVDaGlsZEFuY2Vz
dG9yOwogCiAgICAgaWYgKGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKS0+c3R5
bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlJ1YnlCYXNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5o
CmluZGV4IDcxYTE1Y2YzZWM2NS4uNTk2NWJmOTI4NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oCkBA
IC0zOSw3ICszOSw3IEBAIGNsYXNzIFJlbmRlclRyZWVCdWlsZGVyOjpSdWJ5IHsKIHB1YmxpYzoK
ICAgICBSdWJ5KFJlbmRlclRyZWVCdWlsZGVyJik7CiAKLSAgICBSZW5kZXJFbGVtZW50JiBmaW5k
T3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVieUNoaWxkKFJlbmRlckVsZW1lbnQmIHBhcmVu
dCwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwgUmVuZGVyT2JqZWN0KiYgYmVmb3JlQ2hpbGQp
OworICAgIFJlbmRlckVsZW1lbnQmIGZpbmRPckNyZWF0ZVBhcmVudEZvclN0eWxlQmFzZWRSdWJ5
Q2hpbGQoUmVuZGVyRWxlbWVudCYgcGFyZW50LCBjb25zdCBSZW5kZXJFbGVtZW50JiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiYgYmVmb3JlQ2hpbGQpOwogICAgIHZvaWQgYXR0YWNoRm9yU3R5bGVCYXNl
ZFJ1YnkoUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJU
YWJsZS5jcHAKaW5kZXggYzc1YjZkOGExYjhlLi5hYTBjYWUxNWExNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJUYWJsZS5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZW5kZXJFbGVtZW50JiBSZW5kZXJUcmVl
QnVpbGRlcjo6VGFibGU6OmZpbmRPckNyZWF0ZVBhcmVudEZvckNoaWxkKFJlbmRlclRhYmxlJgog
ICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byogcGFyZW50Q2FuZGlkYXRlID0gYmVmb3JlQ2hp
bGQ7CisgICAgYXV0byogcGFyZW50Q2FuZGlkYXRlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KGJlZm9yZUNoaWxkKTsKICAgICB3aGlsZSAocGFyZW50Q2FuZGlkYXRlICYmIHBhcmVu
dENhbmRpZGF0ZS0+cGFyZW50KCktPmlzQW5vbnltb3VzKCkKICAgICAgICAgJiYgIWlzPFJlbmRl
clRhYmxlU2VjdGlvbj4oKnBhcmVudENhbmRpZGF0ZSkKICAgICAgICAgJiYgcGFyZW50Q2FuZGlk
YXRlLT5zdHlsZSgpLmRpc3BsYXkoKSAhPSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRl
eCAwYjEwNjFjMDVhN2QuLmJiMjMzNmEzNzZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0yNTgsMTQgKzI1OCwxMyBAQCBA
aW1wbGVtZW50YXRpb24gRE9NSFRNTEVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVuc2lv
bnMpCiAtIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24KIHsKICAgICBpbnQg
cmVzdWx0ID0gMDsKLSAgICBSZW5kZXJPYmplY3QgKiByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKSB7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
Y29yZShzZWxmKS0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAocmVuZGVyZXItPmlzRmxvYXRp
bmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fAogICAgICAgICAgICAgcmVuZGVyZXItPmlzUmVu
ZGVyV2lkZ2V0KCkpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IElOVF9NQVg7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoIXJlbmRlcmVyLT5maXJzdENoaWxkU2xvdygpKSB7CisgICAgICAgIH0gZWxzZSBp
ZiAoIXJlbmRlcmVyLT5maXJzdENoaWxkU2xvdygpKQogICAgICAgICAgICAgcmVzdWx0ID0gMDsK
LSAgICAgICAgfSBlbHNlIGlmIChpczxXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJl
cikgfHwgKGlzPFJlbmRlckJsb2NrPigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJsb2Nr
PigqcmVuZGVyZXIpLmlubGluZUNvbnRpbnVhdGlvbigpKSkgeworICAgICAgICBlbHNlIGlmIChp
czxXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlcikgfHwgKGlzPFJlbmRlckJsb2Nr
PigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigqcmVuZGVyZXIpLmlubGluZUNv
bnRpbnVhdGlvbigpKSkgewogICAgICAgICAgICAgQk9PTCBub0Nvc3QgPSBOTzsKICAgICAgICAg
ICAgIGlmIChhdXRvIHJlbmRlckJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5k
ZXJlcikpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBwYXJlbnRSZW5kZXJCb3ggPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJCb3gtPnBhcmVudCgpKTsKQEAgLTI3Myw5ICsyNzIs
OCBAQCAtIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24KICAgICAgICAgICAg
ICAgICAgICAgbm9Db3N0ID0gWUVTOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0
ID0gKG5vQ29zdCA/IDAgOiAxKTsKLSAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+aXNUcmFu
c2Zvcm1lZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyRWxlbWVudD4ocmVuZGVy
ZXIpICYmIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcikuaXNUcmFuc2Zvcm1lZCgp
KQogICAgICAgICAgICAgcmVzdWx0ID0gSU5UX01BWDsKLSAgICAgICAgfQogICAgIH0KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQo=
</data>
<flag name="commit-queue"
          id="498646"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474691</attachid>
            <date>2025-03-22 13:52:44 -0700</date>
            <delta_ts>2025-03-22 14:28:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-290262-20250322135243.patch</filename>
            <type>text/plain</type>
            <size>39122</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA1MDQyMmU4OWUwNjI0NGMzYTA5MTRhM2Y5M2JjMDBkNWJiNTBmOWU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjIgTWFyIDIwMjUgMTE6MjU6MzYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbQ2xlYW51
cF0gTW92ZSBmdW5jdGlvbnMgZnJvbSBSZW5kZXJPYmplY3QgdG8gUmVuZGVyRWxlbWVudAogKGNv
bnQuLi4pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTAyNjIKClJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBpcyBhIGJpdCBvZiBhIG1peCBvZiBtb3Zl
IGFuZCB1c2UgUmVuZGVyRWxlbWVudCB3aGVyZSBhcHBsaWNhYmxlLgoKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVzLmg6CihXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVJdGVyYXRvcjo6YXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yIGNvbnN0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIgY29uc3QpOgooV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OnB1c2hPbnRvVHJhbnNmb3JtU3RhdGUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmg6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmlzQXRvbWlj
SW5saW5lTGV2ZWxCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
ZW9tZXRyeU1hcC5jcHA6CihXZWJDb3JlOjpjYW5NYXBCZXR3ZWVuUmVuZGVyZXJzVmlhTGF5ZXJz
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIg
Y29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoT250b1RyYW5zZm9y
bVN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0RnJv
bUFuY2VzdG9yQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9y
bVJlbGF0ZWRQcm9wZXJ0eSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdElubGluZXMuaDoKKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aGFzVHJhbnNmb3JtT3JQ
ZXJzcGVjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQXRv
bWljSW5saW5lTGV2ZWxCb3ggY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
cHJlc2VydmVzTmV3bGluZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaDoKKFdlYkNvcmU6OnNob3VsZENvbGxhcHNlV2hp
dGVTcGFjZSk6CihXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3gpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHA6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OlJl
bmRlclRyZWVCdWlsZGVyOjphdHRhY2hJbnRlcm5hbCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6YXR0YWNoVG9SZW5kZXJFbGVtZW50SW50ZXJuYWwpOgooV2ViQ29yZTo6UmVuZGVyVHJl
ZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lQ2hpbGRyZW5JZk5lZWRl
ZCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6cmVwb3J0VmlzdWFsbHlOb25FbXB0eUNv
bnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlckJsb2NrLmNwcDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6aW5zZXJ0
Q2hpbGRUb0NvbnRpbnVhdGlvbik6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwOgooV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6Ok11bHRpQ29sdW1uOjpyZXNvbHZlTW92ZWRDaGlsZCk6CihXZWJDb3JlOjpSZW5kZXJU
cmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46Om11bHRpQ29sdW1uUmVsYXRpdmVXaWxsQmVSZW1vdmVk
KToKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6aGFuZGxlU3Bhbm5l
clJlbW92YWwpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlck11bHRpQ29sdW1uLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHA6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6
UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZCk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNw
cDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50
Rm9yQ2hpbGQpOgotLS0KIC4uLi9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVz
LmggICB8ICA1ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
ICAgfCA3NiArKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oICAgICAgfCAgOSArKysKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50SW5saW5lcy5oICB8ICAzICsKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5jcHAgICB8ICAzICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCAgICAgfCA3NCAtLS0tLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCAgICAgICB8IDExIC0tLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdElubGluZXMuaCAgIHwgIDUgLS0KIC4uLi9yZW5kZXJpbmcvbGluZS9MaW5l
SW5saW5lSGVhZGVycy5oICAgICAgICB8IDEyICstLQogLi4uL3N2Zy9TVkdCb3VuZGluZ0JveENv
bXB1dGF0aW9uLmNwcCAgICAgICAgIHwgIDIgKy0KIC4uLi9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwICB8ICA4ICstCiAuLi4vdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJCbG9jay5jcHAgICAgICAgfCAgMiArLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uY3BwIHwgMTUgKystLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uaCAgIHwgIDIgKy0KIC4uLi91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1
YnkuY3BwICAgICAgICB8ICA2ICstCiAuLi4vdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5
LmggICAgICAgICAgfCAgMiArLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwICAgICAgIHwgIDIgKy0KIC4uLi9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSAgICAg
ICAgICAgICB8IDEzICsrLS0KIDE4IGZpbGVzIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCAx
MjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUl0ZXJhdG9ySW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUl0ZXJhdG9ySW5saW5lcy5oCmluZGV4IDEyZDlmNWYwMTE0OS4uYTVhMGZjZDY5
MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRl
cmF0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZUl0ZXJhdG9ySW5saW5lcy5oCkBAIC0yNiwxMCArMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGlubGluZSBib29sIExlZ2FjeUlubGluZUl0ZXJhdG9yOjphdFRleHRQYXJhZ3JhcGhTZXBh
cmF0b3IoKSBjb25zdAogewotICAgIGF1dG8qIHRleHRSZW5kZXJlciA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKTsKLSAgICByZXR1cm4gdGV4dFJlbmRlcmVyCi0gICAg
ICAgICYmIG1fcmVuZGVyZXItPnByZXNlcnZlc05ld2xpbmUoKQotICAgICAgICAmJiB0ZXh0UmVu
ZGVyZXItPmNoYXJhY3RlckF0KG1fcG9zKSA9PSAnXG4nOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogaW5saW5lIGJvb2wgTGVnYWN5SW5saW5lSXRlcmF0b3I6OmF0UGFyYWdyYXBoU2VwYXJhdG9y
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRl
eCA3NThhZDI2NmQxZjQuLjgxZjNiMTYxNWNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjE4NCw2ICsyMTg0LDI4IEBAIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBsYXllck1vZGVs
T2JqZWN0Lmhhc1NlbGZQYWludGluZ0xheWVyKCk7CiB9CiAKK0xheW91dFNpemUgUmVuZGVyRWxl
bWVudDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIGNv
bnRhaW5lcikgY29uc3QKK3sKKyAgICBMYXlvdXRTaXplIG9mZnNldDsKKyAgICBMYXlvdXRQb2lu
dCByZWZlcmVuY2VQb2ludDsKKyAgICBDaGVja2VkUHRyIGN1cnJlbnRDb250YWluZXIgPSB0aGlz
OworICAgIGRvIHsKKyAgICAgICAgQ2hlY2tlZFB0ciBuZXh0Q29udGFpbmVyID0gY3VycmVudENv
bnRhaW5lci0+Y29udGFpbmVyKCk7CisgICAgICAgIEFTU0VSVChuZXh0Q29udGFpbmVyKTsKKyAg
ICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKSB7CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdl
IHJlYWNoZWQgdGhlIHRvcCB3aXRob3V0IGZpbmRpbmcgY29udGFpbmVyLgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFjdXJyZW50Q29udGFpbmVyLT5pc1Ry
YW5zZm9ybWVkKCkpOworICAgICAgICBMYXlvdXRTaXplIGN1cnJlbnRPZmZzZXQgPSBjdXJyZW50
Q29udGFpbmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKCpuZXh0Q29udGFpbmVyLCByZWZlcmVuY2VQ
b2ludCk7CisgICAgICAgIG9mZnNldCArPSBjdXJyZW50T2Zmc2V0OworICAgICAgICByZWZlcmVu
Y2VQb2ludC5tb3ZlKGN1cnJlbnRPZmZzZXQpOworICAgICAgICBjdXJyZW50Q29udGFpbmVyID0g
V1RGTW92ZShuZXh0Q29udGFpbmVyKTsKKyAgICB9IHdoaWxlIChjdXJyZW50Q29udGFpbmVyICE9
ICZjb250YWluZXIpOworCisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogdm9pZCBSZW5kZXJFbGVt
ZW50OjpwdXNoT250b0dlb21ldHJ5TWFwKFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCwg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgUmVuZGVyRWxl
bWVudCogY29udGFpbmVyLCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0CiB7CiAgICAgYm9v
bCBpc0ZpeGVkUG9zID0gaXNGaXhlZFBvc2l0aW9uZWQoKTsKQEAgLTI3MTAsNCArMjczMiw1OCBA
QCB2b2lkIFJlbmRlckVsZW1lbnQ6OmxheW91dElmTmVlZGVkKCkKICAgICBsYXlvdXQoKTsKIH0K
IAorYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lck9iamVjdCkgY29uc3QKK3sKKyAgICBpZiAoaXNU
cmFuc2Zvcm1lZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGFzTGF5ZXIoKSAm
JiBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKS0+c25hcHNo
b3R0ZWRTY3JvbGxPZmZzZXRGb3JBbmNob3JQb3NpdGlvbmluZygpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoY29udGFpbmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUo
KS5oYXNQZXJzcGVjdGl2ZSgpKQorICAgICAgICByZXR1cm4gY29udGFpbmVyT2JqZWN0ID09IHBh
cmVudCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gRklYTUU6IE5vdyB0aGF0IGl0J3Mg
bm8gbG9uZ2VyIHBhc3NlZCBhIGNvbnRhaW5lciBtYXliZSB0aGlzIHNob3VsZCBiZSByZW5hbWVk
Pwordm9pZCBSZW5kZXJFbGVtZW50OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExh
eW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKSBjb25zdAoreworICAgIHRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKKyAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKG9mZnNldEluQ29udGFpbmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVy
LmhlaWdodCgpKTsKKyAgICBDaGVja2VkUHRyPFJlbmRlckxheWVyPiBsYXllcjsKKyAgICBpZiAo
aGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0Pigq
dGhpcykubGF5ZXIoKSkgJiYgbGF5ZXItPnRyYW5zZm9ybSgpKQorICAgICAgICB0cmFuc2Zvcm0u
bXVsdGlwbHkobGF5ZXItPmN1cnJlbnRUcmFuc2Zvcm0oKSk7CisKKyAgICBDaGVja2VkUHRyIHBl
cnNwZWN0aXZlT2JqZWN0ID0gcGFyZW50KCk7CisKKyAgICBpZiAocGVyc3BlY3RpdmVPYmplY3Qg
JiYgcGVyc3BlY3RpdmVPYmplY3QtPmhhc0xheWVyKCkgJiYgcGVyc3BlY3RpdmVPYmplY3QtPnN0
eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkgeworICAgICAgICAvLyBQZXJwc2VjdGl2ZSBvbiB0aGUg
Y29udGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdlIGhhdmUgdG8gZmFjdG9yIGl0IGluIGhlcmUuCisg
ICAgICAgIEFTU0VSVChwZXJzcGVjdGl2ZU9iamVjdC0+aGFzTGF5ZXIoKSk7CisgICAgICAgIEZs
b2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0PigqcGVyc3BlY3RpdmVPYmplY3QpLmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7CisK
KyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CisgICAgICAg
IHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVPYmplY3QtPnN0
eWxlKCkudXNlZFBlcnNwZWN0aXZlKCkpOworCisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGVS
aWdodDNkKC1wZXJzcGVjdGl2ZU9yaWdpbi54KCksIC1wZXJzcGVjdGl2ZU9yaWdpbi55KCksIDAp
OworICAgICAgICB0cmFuc2Zvcm0gPSBwZXJzcGVjdGl2ZU1hdHJpeCAqIHRyYW5zZm9ybTsKKyAg
ICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QocGVyc3BlY3RpdmVPcmlnaW4ueCgpLCBw
ZXJzcGVjdGl2ZU9yaWdpbi55KCksIDApOworICAgIH0KK30KKwordm9pZCBSZW5kZXJFbGVtZW50
OjpwdXNoT250b1RyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwg
T3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4gbW9kZSwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgUmVuZGVyRWxlbWVudCogY29udGFpbmVy
LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRJbkNvbnRhaW5lciwgYm9vbCBjb250YWluZXJTa2lw
cGVkKSBjb25zdAoreworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUuY29udGFpbnMoVXNlVHJh
bnNmb3JtcykgJiYgcGFydGljaXBhdGVzSW5QcmVzZXJ2ZTNEKCk7CisgICAgaWYgKG1vZGUuY29u
dGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihj
b250YWluZXIpKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAg
ICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvZmZzZXRJbkNvbnRhaW5lciwgbWF0cml4KTsK
KyAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0obWF0cml4LCBwcmVzZXJ2ZTNE
ID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6
RmxhdHRlblRyYW5zZm9ybSk7CisgICAgfSBlbHNlCisgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1v
dmUob2Zmc2V0SW5Db250YWluZXIud2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0KCks
IHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5z
Zm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKKworICAgIGlmIChjb250YWluZXJTa2lwcGVk
KSB7CisgICAgICAgIC8vIFRoZXJlIGNhbid0IGJlIGEgdHJhbnNmb3JtIGJldHdlZW4gcmVwYWlu
dENvbnRhaW5lciBhbmQgY29udGFpbmVyLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRh
aW5lcnMsIHNvIGl0IHNob3VsZCBiZSBzYWZlCisgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3Qg
dGhlIGRlbHRhIGJldHdlZW4gdGhlIHJlcGFpbnRDb250YWluZXIgYW5kIGNvbnRhaW5lci4KKyAg
ICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5vZmZz
ZXRGcm9tQW5jZXN0b3JDb250YWluZXIoKmNvbnRhaW5lcik7CisgICAgICAgIHRyYW5zZm9ybVN0
YXRlLm1vdmUoLWNvbnRhaW5lck9mZnNldC53aWR0aCgpLCAtY29udGFpbmVyT2Zmc2V0LmhlaWdo
dCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBU
cmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAgfQorfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiOTUxZDE3OTI0ODAuLjQ4NGNh
ZjFlMTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0y
NjgsNiArMjY4LDcgQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mt
dHJhbnNmb3Jtcy0xLyN0cmFuc2Zvcm0tYm94CiAgICAgaW5saW5lIEZsb2F0UmVjdCB0cmFuc2Zv
cm1SZWZlcmVuY2VCb3hSZWN0KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAgICAgaW5saW5l
IEZsb2F0UmVjdCB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkgY29uc3Q7CisgICAgaW5saW5l
IGJvb2wgaXNUcmFuc2Zvcm1lZCgpIGNvbnN0OwogCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3Jn
L1RSL2Nzcy10cmFuc2Zvcm1zLTEvI3JlZmVyZW5jZS1ib3gKICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCByZWZlcmVuY2VCb3hSZWN0KENTU0JveFR5cGUpIGNvbnN0OwpAQCAtMzExLDYgKzMxMiw3IEBA
IHB1YmxpYzoKICAgICBpbmxpbmUgYm9vbCBpc0Jsb2NrQm94KCkgY29uc3Q7CiAgICAgaW5saW5l
IGJvb2wgaXNCbG9ja0xldmVsQm94KCkgY29uc3Q7CiAgICAgaW5saW5lIGJvb2wgaXNCbG9ja0Nv
bnRhaW5lcigpIGNvbnN0OworICAgIGlubGluZSBib29sIGlzQXRvbWljSW5saW5lTGV2ZWxCb3go
KSBjb25zdDsKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvZmZzZXRQYXJlbnQoKSBjb25z
dDsKICAgICAvLyBQdXNoZXMgc3RhdGUgb250byBSZW5kZXJHZW9tZXRyeU1hcCBhYm91dCBob3cg
dG8gbWFwIGNvb3JkaW5hdGVzIGZyb20gdGhpcyByZW5kZXJlciB0byBpdHMgY29udGFpbmVyLCBv
ciBhbmNlc3RvclRvU3RvcEF0ICh3aGljaGV2ZXIgaXMgZW5jb3VudGVyZWQgZmlyc3QpLgpAQCAt
MzM0LDYgKzMzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkud3JpdGluZ01vZGUoKTsgfQogCisgICAgYm9vbCBzaG91
bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5l
cikgY29uc3Q7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91
dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0Owor
ICAgIHZvaWQgcHVzaE9udG9UcmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNl
dDxNYXBDb29yZGluYXRlc01vZGU+LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBjb25zdCBSZW5kZXJFbGVtZW50KiBjb250YWluZXIsIGNvbnN0IExheW91
dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0Owor
CisgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5l
cigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMg
aGF2ZSB0cmFuc2Zvcm1zLgorICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFp
bmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRl
ckVsZW1lbnQoVHlwZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxUeXBlRmxh
Zz4sIFR5cGVTcGVjaWZpY0ZsYWdzKTsKICAgICBSZW5kZXJFbGVtZW50KFR5cGUsIERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVGbGFnPiwgVHlwZVNwZWNpZmljRmxhZ3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxp
bmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudElubGluZXMuaApp
bmRleCAxN2EzMDBhYjJhZWQuLjFhOTVmMjY5YTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2lu
Y2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgi
CisjaW5jbHVkZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzgsNiArMzksNyBAQCBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNNYXNrKCkg
Y29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNNYXNrKCk7IH0KIGlubGluZSBib29sIFJlbmRlckVs
ZW1lbnQ6Omhhc091dGxpbmUoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc091dGxpbmUoKSB8
fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpOyB9CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50Ojpo
YXNTaGFwZU91dHNpZGUoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLnNoYXBlT3V0c2lkZSgpOyB9
CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50Ojppc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1
cm4gc3R5bGUoKS5oYXNPcGFjaXR5KCk7IH0KK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6Omlz
VHJhbnNmb3JtZWQoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHko
KSAmJiAoc3R5bGUoKS5hZmZlY3RzVHJhbnNmb3JtKCkgfHwgaGFzU1ZHVHJhbnNmb3JtKCkpOyB9
CiBpbmxpbmUgZmxvYXQgUmVuZGVyRWxlbWVudDo6b3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkub3BhY2l0eSgpOyB9CiBpbmxpbmUgRmxvYXRSZWN0IFJlbmRlckVsZW1lbnQ6OnRyYW5z
Zm9ybVJlZmVyZW5jZUJveFJlY3QoKSBjb25zdCB7IHJldHVybiB0cmFuc2Zvcm1SZWZlcmVuY2VC
b3hSZWN0KHN0eWxlKCkpOyB9CiBpbmxpbmUgRmxvYXRSZWN0IFJlbmRlckVsZW1lbnQ6OnRyYW5z
Zm9ybVJlZmVyZW5jZUJveFJlY3QoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdCB7IHJl
dHVybiByZWZlcmVuY2VCb3hSZWN0KHRyYW5zZm9ybUJveFRvQ1NTQm94VHlwZShzdHlsZS50cmFu
c2Zvcm1Cb3goKSkpOyB9CkBAIC00Nyw2ICs0OSw3IEBAIGlubGluZSBib29sIFJlbmRlckVsZW1l
bnQ6Omhhc0FwcGxlVmlzdWFsRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNBcHBs
CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNBcHBsZVZpc3VhbEVmZmVjdFJlcXVpcmlu
Z0JhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNBcHBsZVZpc3VhbEVm
ZmVjdFJlcXVpcmluZ0JhY2tkcm9wRmlsdGVyKCk7IH0KICNlbmRpZgogCitpbmxpbmUgYm9vbCBS
ZW5kZXJFbGVtZW50Ojppc0F0b21pY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gc3R5
bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIShzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6SW5saW5lICYmICFpc1JlcGxhY2VkT3JBdG9taWNJbmxpbmUoKSk7IH0KIGlubGlu
ZSBib29sIFJlbmRlckVsZW1lbnQ6OmlzQmxvY2tMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpOyB9CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50
Ojppc0Fub255bW91c0Jsb2NrKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IDNiOGZmMTQxYTIyNi4uNGY4ZDA1OTE0YWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAK
QEAgLTE1Miw3ICsxNTIsOCBAQCBzdGF0aWMgYm9vbCBjYW5NYXBCZXR3ZWVuUmVuZGVyZXJzVmlh
TGF5ZXJzKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcgogICAgICAgICBpZiAo
Y3VycmVudC0+aXNGaXhlZFBvc2l0aW9uZWQoKSB8fCBzdHlsZS53cml0aW5nTW9kZSgpLmlzQmxv
Y2tGbGlwcGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGN1
cnJlbnQtPmhhc1RyYW5zZm9ybU9yUGVyc3BlY3RpdmUoKSkKKyAgICAgICAgYXV0byBoYXNUcmFu
c2Zvcm1PclBlcnNwZWN0aXZlID0gY3VycmVudC0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCkgJiYgKGN1cnJlbnQtPmlzVHJhbnNmb3JtZWQoKSB8fCBjdXJyZW50LT5zdHlsZSgpLmhhc1Bl
cnNwZWN0aXZlKCkpOworICAgICAgICBpZiAoaGFzVHJhbnNmb3JtT3JQZXJzcGVjdGl2ZSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGlmIChjdXJyZW50LT5p
c1JlbmRlckZyYWdtZW50ZWRGbG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDBiM2UwMDdkOWViYy4uMDRiOTI2ZmM1M2I5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTU0MCw2MCArMTU0MCw2IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChPcHRpb25TZXQ8TWFwQ29v
cmRpbmF0ZXNNb2RlPiBtb2RlLCBUCiAgICAgfQogfQogCi1ib29sIFJlbmRlck9iamVjdDo6c2hv
dWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJFbGVtZW50KiBjb250YWlu
ZXJPYmplY3QpIGNvbnN0Ci17Ci0gICAgaWYgKGlzVHJhbnNmb3JtZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKGhhc0xheWVyKCkgJiYgZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdD4oKnRoaXMpLmxheWVyKCktPnNuYXBzaG90dGVkU2Nyb2xsT2Zmc2V0Rm9yQW5jaG9y
UG9zaXRpb25pbmcoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNvbnRhaW5lck9i
amVjdCAmJiBjb250YWluZXJPYmplY3QtPnN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkKLSAgICAg
ICAgcmV0dXJuIGNvbnRhaW5lck9iamVjdCA9PSBwYXJlbnQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLS8vIEZJWE1FOiBOb3cgdGhhdCBpdCdzIG5vIGxvbmdlciBwYXNzZWQgYSBjb250YWlu
ZXIgbWF5YmUgdGhpcyBzaG91bGQgYmUgcmVuYW1lZD8KLXZvaWQgUmVuZGVyT2JqZWN0OjpnZXRU
cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVy
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKSBjb25zdAotewotICAgIHRyYW5zZm9y
bS5tYWtlSWRlbnRpdHkoKTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9mZnNldEluQ29udGFp
bmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpKTsKLSAgICBDaGVja2VkUHRy
PFJlbmRlckxheWVyPiBsYXllcjsKLSAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSBkb3du
Y2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKSkgJiYgbGF5ZXItPnRy
YW5zZm9ybSgpKQotICAgICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobGF5ZXItPmN1cnJlbnRUcmFu
c2Zvcm0oKSk7Ci0KLSAgICBDaGVja2VkUHRyIHBlcnNwZWN0aXZlT2JqZWN0ID0gcGFyZW50KCk7
Ci0KLSAgICBpZiAocGVyc3BlY3RpdmVPYmplY3QgJiYgcGVyc3BlY3RpdmVPYmplY3QtPmhhc0xh
eWVyKCkgJiYgcGVyc3BlY3RpdmVPYmplY3QtPnN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkgewot
ICAgICAgICAvLyBQZXJwc2VjdGl2ZSBvbiB0aGUgY29udGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdl
IGhhdmUgdG8gZmFjdG9yIGl0IGluIGhlcmUuCi0gICAgICAgIEFTU0VSVChwZXJzcGVjdGl2ZU9i
amVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4g
PSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqcGVyc3BlY3RpdmVPYmplY3QpLmxh
eWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7Ci0KLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcGVyc3BlY3RpdmVNYXRyaXg7Ci0gICAgICAgIHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVy
c3BlY3RpdmUocGVyc3BlY3RpdmVPYmplY3QtPnN0eWxlKCkudXNlZFBlcnNwZWN0aXZlKCkpOwot
ICAgICAgICAKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QoLXBlcnNwZWN0aXZl
T3JpZ2luLngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7Ci0gICAgICAgIHRyYW5zZm9y
bSA9IHBlcnNwZWN0aXZlTWF0cml4ICogdHJhbnNmb3JtOwotICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlUmlnaHQzZChwZXJzcGVjdGl2ZU9yaWdpbi54KCksIHBlcnNwZWN0aXZlT3JpZ2luLnko
KSwgMCk7Ci0gICAgfQotfQotCi12b2lkIFJlbmRlck9iamVjdDo6cHVzaE9udG9UcmFuc2Zvcm1T
dGF0ZShUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE9wdGlvblNldDxNYXBDb29yZGlu
YXRlc01vZGU+IG1vZGUsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0SW5Db250YWluZXIsIGJvb2wgY29udGFpbmVyU2tpcHBlZCkgY29uc3QKLXsKLSAgICBi
b29sIHByZXNlcnZlM0QgPSBtb2RlLmNvbnRhaW5zKFVzZVRyYW5zZm9ybXMpICYmIHBhcnRpY2lw
YXRlc0luUHJlc2VydmUzRCgpOwotICAgIGlmIChtb2RlLmNvbnRhaW5zKFVzZVRyYW5zZm9ybXMp
ICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29udGFpbmVyKSkgewotICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7Ci0gICAgICAgIGdldFRyYW5zZm9ybUZyb21D
b250YWluZXIob2Zmc2V0SW5Db250YWluZXIsIG1hdHJpeCk7Ci0gICAgICAgIHRyYW5zZm9ybVN0
YXRlLmFwcGx5VHJhbnNmb3JtKG1hdHJpeCwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpB
Y2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwot
ICAgIH0gZWxzZQotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKG9mZnNldEluQ29udGFpbmVy
LndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNm
b3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRy
YW5zZm9ybSk7Ci0KLSAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewotICAgICAgICAvLyBUaGVy
ZSBjYW4ndCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWluZXIgYW5kIGNvbnRh
aW5lciwgYmVjYXVzZSB0cmFuc2Zvcm1zIGNyZWF0ZSBjb250YWluZXJzLCBzbyBpdCBzaG91bGQg
YmUgc2FmZQotICAgICAgICAvLyB0byBqdXN0IHN1YnRyYWN0IHRoZSBkZWx0YSBiZXR3ZWVuIHRo
ZSByZXBhaW50Q29udGFpbmVyIGFuZCBjb250YWluZXIuCi0gICAgICAgIExheW91dFNpemUgY29u
dGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFp
bmVyKCpjb250YWluZXIpOwotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKC1jb250YWluZXJP
ZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRy
YW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0
ZW5UcmFuc2Zvcm0pOwotICAgIH0KLX0KLQogRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxU
b0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4g
bW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gVHJhY2sgdGhlIHBvaW50IGF0
IHRoZSBjZW50ZXIgb2YgdGhlIHF1YWQncyBib3VuZGluZyBib3guIEFzIG1hcExvY2FsVG9Db250
YWluZXIoKSBjYWxscyBvZmZzZXRGcm9tQ29udGFpbmVyKCksCkBAIC0xNjI4LDI2ICsxNTc0LDYg
QEAgTGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxl
bWVudCYgY29udGFpbmVyLCBjb25zdCBMYXkKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1MYXlv
dXRTaXplIFJlbmRlck9iamVjdDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnN0IFJl
bmRlckVsZW1lbnQmIGNvbnRhaW5lcikgY29uc3QKLXsKLSAgICBMYXlvdXRTaXplIG9mZnNldDsK
LSAgICBMYXlvdXRQb2ludCByZWZlcmVuY2VQb2ludDsKLSAgICBDaGVja2VkUHRyIGN1cnJlbnRD
b250YWluZXIgPSB0aGlzOwotICAgIGRvIHsKLSAgICAgICAgQ2hlY2tlZFB0ciBuZXh0Q29udGFp
bmVyID0gY3VycmVudENvbnRhaW5lci0+Y29udGFpbmVyKCk7Ci0gICAgICAgIEFTU0VSVChuZXh0
Q29udGFpbmVyKTsgIC8vIFRoaXMgbWVhbnMgd2UgcmVhY2hlZCB0aGUgdG9wIHdpdGhvdXQgZmlu
ZGluZyBjb250YWluZXIuCi0gICAgICAgIGlmICghbmV4dENvbnRhaW5lcikKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBBU1NFUlQoIWN1cnJlbnRDb250YWluZXItPmlzVHJhbnNmb3JtZWQo
KSk7Ci0gICAgICAgIExheW91dFNpemUgY3VycmVudE9mZnNldCA9IGN1cnJlbnRDb250YWluZXIt
Pm9mZnNldEZyb21Db250YWluZXIoKm5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKLSAg
ICAgICAgb2Zmc2V0ICs9IGN1cnJlbnRPZmZzZXQ7Ci0gICAgICAgIHJlZmVyZW5jZVBvaW50Lm1v
dmUoY3VycmVudE9mZnNldCk7Ci0gICAgICAgIGN1cnJlbnRDb250YWluZXIgPSBXVEZNb3ZlKG5l
eHRDb250YWluZXIpOwotICAgIH0gd2hpbGUgKGN1cnJlbnRDb250YWluZXIgIT0gJmNvbnRhaW5l
cik7Ci0KLSAgICByZXR1cm4gb2Zmc2V0OwotfQotCiBib29sIFJlbmRlck9iamVjdDo6cGFydGlj
aXBhdGVzSW5QcmVzZXJ2ZTNEKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzTGF5ZXIoKSAmJiBk
b3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKS0+cGFydGljaXBh
dGVzSW5QcmVzZXJ2ZTNEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
aW5kZXggMDRiNWM3MjkyNjBmLi43MDVjOTg0ZmRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTQzMCw4ICs0MzAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1JlbmRlcklubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUZsYWdzLmNvbnRhaW5zKFR5cGVG
bGFnOjpJc1JlbmRlcklubGluZSk7IH0KICAgICBib29sIGlzUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUZsYWdzLmNvbnRhaW5zKFR5cGVGbGFnOjpJc0xheWVy
TW9kZWxPYmplY3QpOyB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0F0b21pY0lubGluZUxldmVsQm94
KCkgY29uc3Q7Ci0KICAgICBib29sIGlzUmVuZGVyQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBUeXBlOjpDb3VudGVyOyB9CiAgICAgYm9vbCBpc1JlbmRlclF1b3RlKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IFR5cGU6OlF1b3RlOyB9CiAKQEAgLTcwMiw4ICs3MDAsNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNOb25WaXNpYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlQml0ZmllbGRzLmhhc0ZsYWcoU3RhdGVGbGFnOjpIYXNOb25WaXNpYmxlT3ZlcmZsb3cp
OyB9CiAKICAgICBib29sIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGVCaXRmaWVsZHMuaGFzRmxhZyhTdGF0ZUZsYWc6Okhhc1RyYW5zZm9ybVJlbGF0
ZWRQcm9wZXJ0eSk7IH0gLy8gVHJhbnNmb3JtLCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5
bGU6IHByZXNlcnZlLTNkLgotICAgIGlubGluZSBib29sIGlzVHJhbnNmb3JtZWQoKSBjb25zdDsK
LSAgICBpbmxpbmUgYm9vbCBoYXNUcmFuc2Zvcm1PclBlcnNwZWN0aXZlKCkgY29uc3Q7CiAKICAg
ICBib29sIGNhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVC
aXRmaWVsZHMuaGFzRmxhZyhTdGF0ZUZsYWc6OkNhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbik7IH0K
ICAgICBib29sIHNldENhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbihib29sKTsKQEAgLTgyOSw4ICs4
MjUsNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgY29udGFp
bmVyKCkgcmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4gbXVsdGktY29sdW1uIGxh
eW91dCwKICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBkaWZmZXJlbnQgcG9pbnRz
LCBzbyByZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhlIGdpdmVuIHBvaW50Lgog
ICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQm
LCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0
cikgY29uc3Q7Ci0gICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhl
IGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRl
IG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgotICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2Vz
dG9yQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVz
KFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVu
c2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7
CkBAIC0xMDk0LDExICsxMDg4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wq
IHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRl
VG9Mb2NhbFBvaW50KE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBUcmFuc2Zvcm1TdGF0
ZSYpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lcikgY29uc3Q7Ci0gICAgdm9pZCBnZXRUcmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OwotICAgIAotICAgIHZvaWQgcHVzaE9udG9UcmFuc2Zv
cm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBSZW5k
ZXJFbGVtZW50KiBjb250YWluZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVy
LCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0OwotCiAgICAgYm9vbCBwYXJ0aWNpcGF0ZXNJ
blByZXNlcnZlM0QoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgLyogYWRkaXRpb25hbE9m
ZnNldCAqLywgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLyogcGFpbnRDb250YWluZXIg
Ki8gPSBudWxscHRyKSBjb25zdCB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdElubGluZXMuaAppbmRleCA1MjQxNDc3Zjk1ZmEuLmYxMWFlZTdmMWExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdElubGluZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0SW5saW5lcy5oCkBAIC0y
MSwxNSArMjEsMTAgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBib29sIFJlbmRlck9i
amVjdDo6aGFzVHJhbnNmb3JtT3JQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChpc1RyYW5zZm9ybWVkKCkgfHwgc3R5bGUoKS5oYXNQ
ZXJzcGVjdGl2ZSgpKTsgfQotaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0F0b21pY0lubGlu
ZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkg
JiYgIShzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lICYmICFpc1JlcGxh
Y2VkT3JBdG9taWNJbmxpbmUoKSk7IH0KLWlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNUcmFu
c2Zvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYm
IChzdHlsZSgpLmFmZmVjdHNUcmFuc2Zvcm0oKSB8fCBoYXNTVkdUcmFuc2Zvcm0oKSk7IH0KLWlu
bGluZSBib29sIFJlbmRlck9iamVjdDo6cHJlc2VydmVzTmV3bGluZSgpIGNvbnN0IHsgcmV0dXJu
ICFpc1JlbmRlclNWR0lubGluZVRleHQoKSAmJiBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpOyB9
CiBpbmxpbmUgUmVmPERvY3VtZW50PiBSZW5kZXJPYmplY3Q6OnByb3RlY3RlZERvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gZG9jdW1lbnQoKTsgfQogaW5saW5lIGNvbnN0IExvY2FsRnJhbWVWaWV3
TGF5b3V0Q29udGV4dCYgUmVuZGVyT2JqZWN0OjpsYXlvdXRDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAppbmRleCBjMDQ5Mjc0
MTllMTMuLmY0NzNhMTY1ZmNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lSW5saW5lSGVhZGVycy5oCkBAIC01MiwxNSArNTIsMTUgQEAgaW5saW5lIGJvb2wg
cmVxdWlyZXNMaW5lQm94Rm9yQ29udGVudChjb25zdCBSZW5kZXJJbmxpbmUmIGZsb3csIGNvbnN0
IExpbmVJbmZvJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIGJvb2wgc2hvdWxkQ29s
bGFwc2VXaGl0ZVNwYWNlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgTGluZUluZm8m
IGxpbmVJbmZvLCBXaGl0ZXNwYWNlUG9zaXRpb24gd2hpdGVzcGFjZVBvc2l0aW9uKQoraW5saW5l
IGJvb2wgc2hvdWxkQ29sbGFwc2VXaGl0ZVNwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBXaGl0ZXNwYWNlUG9zaXRpb24gd2hpdGVzcGFjZVBv
c2l0aW9uKQogewogICAgIC8vIENTUzIgMTYuNi4xCiAgICAgLy8gSWYgYSBzcGFjZSAoVSswMDIw
KSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBoYXMgJ3doaXRlLXNwYWNlJyBzZXQgdG8gJ25v
cm1hbCcsICdub3dyYXAnLCBvciAncHJlLWxpbmUnLCBpdCBpcyByZW1vdmVkLgogICAgIC8vIElm
IGEgc3BhY2UgKFUrMDAyMCkgYXQgdGhlIGVuZCBvZiBhIGxpbmUgaGFzICd3aGl0ZS1zcGFjZScg
c2V0IHRvICdub3JtYWwnLCAnbm93cmFwJywgb3IgJ3ByZS1saW5lJywgaXQgaXMgYWxzbyByZW1v
dmVkLgogICAgIC8vIElmIHNwYWNlcyAoVSswMDIwKSBvciB0YWJzIChVKzAwMDkpIGF0IHRoZSBl
bmQgb2YgYSBsaW5lIGhhdmUgJ3doaXRlLXNwYWNlJyBzZXQgdG8gJ3ByZS13cmFwJywgVUFzIG1h
eSB2aXN1YWxseSBjb2xsYXBzZSB0aGVtLgotICAgIHJldHVybiBzdHlsZS0+Y29sbGFwc2VXaGl0
ZVNwYWNlKCkKLSAgICAgICAgfHwgKHdoaXRlc3BhY2VQb3NpdGlvbiA9PSBUcmFpbGluZ1doaXRl
c3BhY2UgJiYgc3R5bGUtPndoaXRlU3BhY2VDb2xsYXBzZSgpID09IFdoaXRlU3BhY2VDb2xsYXBz
ZTo6UHJlc2VydmUKLSAgICAgICAgICAgICYmIHN0eWxlLT50ZXh0V3JhcE1vZGUoKSA9PSBUZXh0
V3JhcE1vZGU6OldyYXAgJiYgIWxpbmVJbmZvLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIHN0eWxl
LmNvbGxhcHNlV2hpdGVTcGFjZSgpCisgICAgICAgIHx8ICh3aGl0ZXNwYWNlUG9zaXRpb24gPT0g
VHJhaWxpbmdXaGl0ZXNwYWNlICYmIHN0eWxlLndoaXRlU3BhY2VDb2xsYXBzZSgpID09IFdoaXRl
U3BhY2VDb2xsYXBzZTo6UHJlc2VydmUKKyAgICAgICAgICAgICYmIHN0eWxlLnRleHRXcmFwTW9k
ZSgpID09IFRleHRXcmFwTW9kZTo6V3JhcCAmJiAhbGluZUluZm8uaXNFbXB0eSgpKTsKIH0KIAog
aW5saW5lIGJvb2wgc2tpcE5vbkJyZWFraW5nU3BhY2UoY29uc3QgTGVnYWN5SW5saW5lSXRlcmF0
b3ImIGl0LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8pCkBAIC04OCwxMSArODgsMTEgQEAgaW5s
aW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94KGNvbnN0IExlZ2FjeUlubGluZUl0ZXJhdG9yJiBpdCwg
Y29uc3QgTGluZUluZm8mIGxpbmUKICAgICAgICAgcmVuZGVyZXJJc0VtcHR5SW5saW5lID0gaXNF
bXB0eUlubGluZSgqaW5saW5lUmVuZGVyZXIpOwogICAgIH0KIAotICAgIGlmICghc2hvdWxkQ29s
bGFwc2VXaGl0ZVNwYWNlKCZpdC5yZW5kZXJlcigpLT5zdHlsZSgpLCBsaW5lSW5mbywgd2hpdGVz
cGFjZVBvc2l0aW9uKSkKKyAgICBpZiAoIXNob3VsZENvbGxhcHNlV2hpdGVTcGFjZShpdC5yZW5k
ZXJlcigpLT5zdHlsZSgpLCBsaW5lSW5mbywgd2hpdGVzcGFjZVBvc2l0aW9uKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBVQ2hhciBjdXJyZW50ID0gaXQuY3VycmVudCgpOwotICAgIGJv
b2wgbm90SnVzdFdoaXRlc3BhY2UgPSBjdXJyZW50ICE9ICcgJyAmJiBjdXJyZW50ICE9ICdcdCcg
JiYgY3VycmVudCAhPSBzb2Z0SHlwaGVuICYmIChjdXJyZW50ICE9ICdcbicgfHwgaXQucmVuZGVy
ZXIoKS0+cHJlc2VydmVzTmV3bGluZSgpKSAmJiAhc2tpcE5vbkJyZWFraW5nU3BhY2UoaXQsIGxp
bmVJbmZvKTsKKyAgICBib29sIG5vdEp1c3RXaGl0ZXNwYWNlID0gY3VycmVudCAhPSAnICcgJiYg
Y3VycmVudCAhPSAnXHQnICYmIGN1cnJlbnQgIT0gc29mdEh5cGhlbiAmJiBjdXJyZW50ICE9ICdc
bicgJiYgIXNraXBOb25CcmVha2luZ1NwYWNlKGl0LCBsaW5lSW5mbyk7CiAgICAgcmV0dXJuIG5v
dEp1c3RXaGl0ZXNwYWNlIHx8IHJlbmRlcmVySXNFbXB0eUlubGluZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRh
dGlvbi5jcHAKaW5kZXggYzNkMjg5MjFmYjI2Li5jMTRiODk1YzU3MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0
aW9uLmNwcApAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3JlbWVu
dGVyLmgiCiAjaW5jbHVkZSAiUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlJl
bmRlckNoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCisj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdDb250
YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAppbmRleCAzNDNlOWU5OGE5
ZDUuLjk1ZDZlY2ZjYzE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9p
ZCBSZW5kZXJUcmVlQnVpbGRlcjo6YXR0YWNoSW50ZXJuYWwoUmVuZGVyRWxlbWVudCYgcGFyZW50
LCBSZW5kZXJQdHI8UmVuZGVyT2IKICAgICB9CiAKICAgICBpZiAocGFyZW50LnN0eWxlKCkuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpSdWJ5IHx8IHBhcmVudC5zdHlsZSgpLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6UnVieUJsb2NrKSB7Ci0gICAgICAgIGF1dG8mIHBhcmVudENhbmRpZGF0
ZSA9IHJ1YnlCdWlsZGVyKCkuZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGls
ZChwYXJlbnQsICpjaGlsZCwgYmVmb3JlQ2hpbGQpOworICAgICAgICBhdXRvJiBwYXJlbnRDYW5k
aWRhdGUgPSBydWJ5QnVpbGRlcigpLmZpbmRPckNyZWF0ZVBhcmVudEZvclN0eWxlQmFzZWRSdWJ5
Q2hpbGQocGFyZW50LCBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLCBiZWZvcmVDaGls
ZCk7CiAgICAgICAgIGlmICgmcGFyZW50Q2FuZGlkYXRlID09ICZwYXJlbnQpIHsKICAgICAgICAg
ICAgIHJ1YnlCdWlsZGVyKCkuYXR0YWNoRm9yU3R5bGVCYXNlZFJ1YnkocGFyZW50Q2FuZGlkYXRl
LCBXVEZNb3ZlKGNoaWxkKSwgYmVmb3JlQ2hpbGQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDgwLDcgKzQ4MCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OmF0dGFjaFRvUmVuZGVyRWxl
bWVudEludGVybmFsKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuCiAgICAgfQogCiAgICAgbmV3
Q2hpbGQtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwotICAgIGF1dG8gaXNP
dXRPZkZsb3dCb3ggPSBuZXdDaGlsZC0+c3R5bGUoKS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpOwor
ICAgIGF1dG8gaXNPdXRPZkZsb3dCb3ggPSBuZXdDaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCk7CiAgICAgaWYgKCFpc091dE9mRmxvd0JveCkKICAgICAgICAgcGFyZW50LnNldFByZWZlcnJl
ZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKIApAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgUmVu
ZGVyVHJlZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lQ2hpbGRyZW5J
Zk5lZWRlZChSZW5kZXJFCiAgICAgLy8gaWYgd2UgZmluZCBhIGNvbnRpbnVhdGlvbi4KICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFsbENoaWxkcmVuQmVJbmxpbmU7CiAgICAgZm9yIChh
dXRvKiBjdXJyZW50ID0gYmxvY2tQYXJlbnQtPmZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGN1cnJlbnQtPnN0eWxl
KCkuaXNGbG9hdGluZygpIHx8IGN1cnJlbnQtPnN0eWxlKCkuaGFzT3V0T2ZGbG93UG9zaXRpb24o
KSkKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICghaXM8UmVuZGVyQmxvY2s+
KCpjdXJyZW50KSkKQEAgLTExMDIsNyArMTEwMiw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6
OnJlcG9ydFZpc3VhbGx5Tm9uRW1wdHlDb250ZW50KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVu
CiAgICAgICAgIH07CiAgICAgICAgIC8vIFNWRyBjb250ZW50IHRlbmRzIHRvIGhhdmUgYSBmaXhl
ZCBzaXplIGNvbnN0cnVjdC4gSG93ZXZlciB0aGlzIGlzIGtub3duIHRvIGJlIGluYWNjdXJhdGUg
aW4gY2VydGFpbiBjYXNlcyAoYm94LXNpemluZzogYm9yZGVyLWJveCkgb3IgZXNwZWNpYWxseSB3
aGVuIHRoZSBwYXJlbnQgYm94IGlzIG92ZXJzaXplZC4KICAgICAgICAgYXV0byBjYW5kaWRhdGVT
aXplID0gSW50U2l6ZSB7IH07Ci0gICAgICAgIGlmIChhdXRvIHNpemUgPSBmaXhlZFNpemUoY2hp
bGQpKQorICAgICAgICBpZiAoYXV0byBzaXplID0gZml4ZWRTaXplKGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KGNoaWxkKSkpCiAgICAgICAgICAgICBjYW5kaWRhdGVTaXplID0gKnNpemU7CiAgICAg
ICAgIGVsc2UgaWYgKGF1dG8gc2l6ZSA9IGZpeGVkU2l6ZShwYXJlbnQpKQogICAgICAgICAgICAg
Y2FuZGlkYXRlU2l6ZSA9ICpzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCmluZGV4IDg3Mzgy
NWNiYWJlOS4uZTdlYzk3YmVkMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6Omluc2VydENoaWxkVG9D
b250aW51YXRpb24oUmVuZGVyQmxvY2smIHBhcmVudCwgUmUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGJvb2wgY2hpbGRJc05vcm1hbCA9IGNoaWxkLT5pc0lubGluZSgpIHx8IGNoaWxk
LT5zdHlsZSgpLmNvbHVtblNwYW4oKSA9PSBDb2x1bW5TcGFuOjpOb25lOworICAgIGJvb2wgY2hp
bGRJc05vcm1hbCA9IGNoaWxkLT5pc0lubGluZSgpIHx8IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+
KCpjaGlsZCkuc3R5bGUoKS5jb2x1bW5TcGFuKCkgPT0gQ29sdW1uU3Bhbjo6Tm9uZTsKICAgICBi
b29sIGJjcElzTm9ybWFsID0gYmVmb3JlQ2hpbGRQYXJlbnQtPmlzSW5saW5lKCkgfHwgYmVmb3Jl
Q2hpbGRQYXJlbnQtPnN0eWxlKCkuY29sdW1uU3BhbigpID09IENvbHVtblNwYW46Ok5vbmU7CiAg
ICAgYm9vbCBmbG93SXNOb3JtYWwgPSBmbG93LT5pc0lubGluZSgpIHx8IGZsb3ctPnN0eWxlKCku
Y29sdW1uU3BhbigpID09IENvbHVtblNwYW46Ok5vbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11
bHRpQ29sdW1uLmNwcAppbmRleCA5MDQ1YmRlYzYzMTMuLjQwMGRiZTZmOWNhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIFJlbmRlck9i
amVjdCogUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjpyZXNvbHZlTW92ZWRDaGlsZChS
ZW5kZXJGcmFnbWVudGVkCiAgICAgICAgIHJldHVybiBiZWZvcmVDaGlsZDsKIAogICAgIC8vIFdl
IG9ubHkgbmVlZCB0byByZXNvbHZlIGZvciBjb2x1bW4gc3Bhbm5lcnMuCi0gICAgaWYgKGJlZm9y
ZUNoaWxkLT5zdHlsZSgpLmNvbHVtblNwYW4oKSAhPSBDb2x1bW5TcGFuOjpBbGwpCisgICAgaWYg
KGJlZm9yZUNoaWxkUmVuZGVyQm94LT5zdHlsZSgpLmNvbHVtblNwYW4oKSAhPSBDb2x1bW5TcGFu
OjpBbGwpCiAgICAgICAgIHJldHVybiBiZWZvcmVDaGlsZDsKIAogICAgIC8vIFRoZSByZW5kZXJl
ciBmb3IgdGhlIGFjdHVhbCBET00gbm9kZSB0aGF0IGVzdGFibGlzaGVzIGEgc3Bhbm5lciBpcyBt
b3ZlZCBmcm9tIGl0cyBvcmlnaW5hbApAQCAtMjQ1LDYgKzI0NSw5IEBAIHZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjptdWx0aUNvbHVtbkRlc2NlbmRhbnRJbnNlcnRlZChSZW5k
ZXJNdWx0aUNvCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6bXVsdGlDb2x1
bW5SZWxhdGl2ZVdpbGxCZVJlbW92ZWQoUmVuZGVyTXVsdGlDb2x1bW5GbG93JiBmbG93LCBSZW5k
ZXJPYmplY3QmIHJlbGF0aXZlLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2FuQ29sbGFwc2VBbm9ueW1v
dXNCbG9jayBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrKQogewogICAgIGZsb3cuaW52YWxpZGF0
ZUZyYWdtZW50cygpOworICAgIGlmIChpczxSZW5kZXJUZXh0PihyZWxhdGl2ZSkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChhdXRvKiBwbGFjZWhvbGRlciA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcj4ocmVsYXRpdmUpKSB7CiAgICAgICAg
IC8vIFJlbW92ZSB0aGUgbWFwIGVudHJ5IGZvciB0aGlzIHNwYW5uZXIsIGJ1dCBsZWF2ZSB0aGUg
YWN0dWFsIHNwYW5uZXIgcmVuZGVyZXIgYWxvbmUuIEFsc28KICAgICAgICAgLy8ga2VlcCB0aGUg
cmVmZXJlbmNlIHRvIHRoZSBzcGFubmVyLCBzaW5jZSB0aGUgcGxhY2Vob2xkZXIgbWF5IGJlIGFi
b3V0IHRvIGJlIHJlLWluc2VydGVkCkBAIC0yNTMsMTEgKzI1NiwxMSBAQCB2b2lkIFJlbmRlclRy
ZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6bXVsdGlDb2x1bW5SZWxhdGl2ZVdpbGxCZVJlbW92ZWQo
UmVuZGVyTXVsdAogICAgICAgICBmbG93LnNwYW5uZXJNYXAoKS5yZW1vdmUocGxhY2Vob2xkZXIt
PnNwYW5uZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHJlbGF0aXZlLnN0
eWxlKCkuY29sdW1uU3BhbigpID09IENvbHVtblNwYW46OkFsbCkgewotICAgICAgICBpZiAocmVs
YXRpdmUucGFyZW50KCkgIT0gZmxvdy5wYXJlbnQoKSkKKyAgICBpZiAoYXV0byogcmVuZGVyQm94
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4ocmVsYXRpdmUpOyByZW5kZXJCb3ggJiYgcmVu
ZGVyQm94LT5zdHlsZSgpLmNvbHVtblNwYW4oKSA9PSBDb2x1bW5TcGFuOjpBbGwpIHsKKyAgICAg
ICAgaWYgKHJlbmRlckJveC0+cGFyZW50KCkgIT0gZmxvdy5wYXJlbnQoKSkKICAgICAgICAgICAg
IHJldHVybjsgLy8gbm90IGEgdmFsaWQgc3Bhbm5lci4KIAotICAgICAgICBoYW5kbGVTcGFubmVy
UmVtb3ZhbChmbG93LCByZWxhdGl2ZSwgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CisgICAg
ICAgIGhhbmRsZVNwYW5uZXJSZW1vdmFsKGZsb3csICpyZW5kZXJCb3gsIGNhbkNvbGxhcHNlQW5v
bnltb3VzQmxvY2spOwogICAgIH0KICAgICAvLyBOb3RlIHRoYXQgd2UgbWlnaHQgZW5kIHVwIHdp
dGggZW1wdHkgY29sdW1uIHNldHMgaWYgYWxsIGNvbHVtbiBjb250ZW50IGlzIHJlbW92ZWQuIFRo
YXQncyBubwogICAgIC8vIGJpZyBkZWFsIHRob3VnaCAoYW5kIGxvY2F0aW5nIHRoZW0gd291bGQg
YmUgZXhwZW5zaXZlKSwgYW5kIHRoZXkgd2lsbCBiZSBmb3VuZCBhbmQgcmUtdXNlZCBpZgpAQCAt
NDQyLDEwICs0NDUsMTAgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlD
b2x1bW46OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50KFIKICAgICByZXR1cm4gbmV4
dERlc2NlbmRhbnQ7CiB9CiAKLXZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjpo
YW5kbGVTcGFubmVyUmVtb3ZhbChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZsb3csIFJlbmRlck9i
amVjdCYgc3Bhbm5lciwgUmVuZGVyVHJlZUJ1aWxkZXI6OkNhbkNvbGxhcHNlQW5vbnltb3VzQmxv
Y2sgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jaykKK3ZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11
bHRpQ29sdW1uOjpoYW5kbGVTcGFubmVyUmVtb3ZhbChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZs
b3csIFJlbmRlckJveCYgc3Bhbm5lciwgUmVuZGVyVHJlZUJ1aWxkZXI6OkNhbkNvbGxhcHNlQW5v
bnltb3VzQmxvY2sgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jaykKIHsKICAgICAvLyBUaGUgcGxh
Y2Vob2xkZXIgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIHJlbW92ZWQsIGJ1dCBpZiBpdCBoYXNuJ3Qs
IGRvIHNvIG5vdy4KLSAgICBpZiAoYXV0byBwbGFjZWhvbGRlciA9IGZsb3cuc3Bhbm5lck1hcCgp
LnRha2UoJmRvd25jYXN0PFJlbmRlckJveD4oc3Bhbm5lcikpKQorICAgIGlmIChhdXRvIHBsYWNl
aG9sZGVyID0gZmxvdy5zcGFubmVyTWFwKCkudGFrZSgmc3Bhbm5lcikpCiAgICAgICAgIG1fYnVp
bGRlci5kZXN0cm95KCpwbGFjZWhvbGRlciwgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CiAK
ICAgICBpZiAoYXV0byogbmV4dCA9IHNwYW5uZXIubmV4dFNpYmxpbmcoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlck11bHRpQ29sdW1uLmgKaW5kZXggYjBkODAyYjc0ZTE0Li5kM2U0ZWY5MTRhM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlck11bHRpQ29sdW1uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY3JlYXRlRnJhZ21lbnRlZEZsb3coUmVuZGVyQmxvY2tGbG93Jik7CiAgICAg
dm9pZCBkZXN0cm95RnJhZ21lbnRlZEZsb3coUmVuZGVyQmxvY2tGbG93Jik7CiAgICAgUmVuZGVy
T2JqZWN0KiBwcm9jZXNzUG9zc2libGVTcGFubmVyRGVzY2VuZGFudChSZW5kZXJNdWx0aUNvbHVt
bkZsb3cmLCBSZW5kZXJPYmplY3QqJiBzdWJ0cmVlUm9vdCwgUmVuZGVyT2JqZWN0JiBkZXNjZW5k
YW50KTsKLSAgICB2b2lkIGhhbmRsZVNwYW5uZXJSZW1vdmFsKFJlbmRlck11bHRpQ29sdW1uRmxv
dyYsIFJlbmRlck9iamVjdCYgc3Bhbm5lciwgUmVuZGVyVHJlZUJ1aWxkZXI6OkNhbkNvbGxhcHNl
QW5vbnltb3VzQmxvY2spOworICAgIHZvaWQgaGFuZGxlU3Bhbm5lclJlbW92YWwoUmVuZGVyTXVs
dGlDb2x1bW5GbG93JiwgUmVuZGVyQm94JiBzcGFubmVyLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2Fu
Q29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CiAKICAgICBSZW5kZXJUcmVlQnVpbGRlciYgbV9idWls
ZGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAKaW5kZXggNDg0MjljY2JjYjIyLi4wNTYxZjBj
NGU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlclJ1YnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlQW5vbnltb3VzUmVuZGVyZXJGb3JSdWJ5KFJl
bmRlckVsZW1lbnQmIHBhCiAgICAgcmV0dXJuIHJ1Ynk7CiB9CiAKLVJlbmRlckVsZW1lbnQmIFJl
bmRlclRyZWVCdWlsZGVyOjpSdWJ5OjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVi
eUNoaWxkKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiYgYmVmb3JlQ2hpbGQpCitSZW5kZXJFbGVtZW50JiBSZW5kZXJUcmVlQnVp
bGRlcjo6UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZChSZW5k
ZXJFbGVtZW50JiBwYXJlbnQsIGNvbnN0IFJlbmRlckVsZW1lbnQmIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqJiBiZWZvcmVDaGlsZCkKIHsKICAgICBSZW5kZXJFbGVtZW50KiBiZWZvcmVDaGlsZEFuY2Vz
dG9yID0gJnBhcmVudDsKICAgICBpZiAoYXV0byogcnVieUlubGluZSA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJJbmxpbmU+KHBhcmVudCk7IHJ1YnlJbmxpbmUgJiYgcnVieUlubGluZS0+Y29udGlu
dWF0aW9uKCkpCkBAIC03MCw3ICs3MCw3IEBAIFJlbmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWls
ZGVyOjpSdWJ5OjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVieUNoaWxkCiAgICAg
ZWxzZSBpZiAoYXV0byogcnVieUJsb2NrID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJsb2NrPihw
YXJlbnQpOyBydWJ5QmxvY2sgJiYgcnVieUJsb2NrLT5jb250aW51YXRpb24oKSkKICAgICAgICAg
YmVmb3JlQ2hpbGRBbmNlc3RvciA9IFJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6Y29udGludWF0
aW9uQmVmb3JlKCpydWJ5QmxvY2ssIGJlZm9yZUNoaWxkKTsKIAotICAgIGlmICghY2hpbGQuaXNS
ZW5kZXJUZXh0KCkgJiYgY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlJ1
YnkgJiYgYmVmb3JlQ2hpbGRBbmNlc3Rvci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OlJ1YnlCbG9jaykKKyAgICBpZiAoY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OlJ1YnkgJiYgYmVmb3JlQ2hpbGRBbmNlc3Rvci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlJ1YnlCbG9jaykKICAgICAgICAgcmV0dXJuICpiZWZvcmVDaGlsZEFuY2Vz
dG9yOwogCiAgICAgaWYgKGJlZm9yZUNoaWxkQW5jZXN0b3ItPnN0eWxlKCkuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpSdWJ5QmxvY2spIHsKQEAgLTk1LDcgKzk1LDcgQEAgUmVuZGVyRWxlbWVu
dCYgUmVuZGVyVHJlZUJ1aWxkZXI6OlJ1Ynk6OmZpbmRPckNyZWF0ZVBhcmVudEZvclN0eWxlQmFz
ZWRSdWJ5Q2hpbGQKICAgICAgICAgcmV0dXJuICpuZXdQYXJlbnQ7CiAgICAgfQogCi0gICAgaWYg
KCFjaGlsZC5pc1JlbmRlclRleHQoKSAmJiAoY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6OlJ1YnlCYXNlIHx8IGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpSdWJ5QW5ub3RhdGlvbikpCisgICAgaWYgKGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpSdWJ5QmFzZSB8fCBjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6UnVieUFubm90YXRpb24pCiAgICAgICAgIHJldHVybiAqYmVmb3JlQ2hpbGRBbmNl
c3RvcjsKIAogICAgIGlmIChiZWZvcmVDaGlsZCAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCktPnN0
eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpSdWJ5QmFzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1Ynku
aAppbmRleCA3MWExNWNmM2VjNjUuLjU5NjViZjkyODU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuaApA
QCAtMzksNyArMzksNyBAQCBjbGFzcyBSZW5kZXJUcmVlQnVpbGRlcjo6UnVieSB7CiBwdWJsaWM6
CiAgICAgUnVieShSZW5kZXJUcmVlQnVpbGRlciYpOwogCi0gICAgUmVuZGVyRWxlbWVudCYgZmlu
ZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZChSZW5kZXJFbGVtZW50JiBwYXJl
bnQsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQsIFJlbmRlck9iamVjdComIGJlZm9yZUNoaWxk
KTsKKyAgICBSZW5kZXJFbGVtZW50JiBmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVi
eUNoaWxkKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgY29uc3QgUmVuZGVyRWxlbWVudCYgY2hpbGQs
IFJlbmRlck9iamVjdComIGJlZm9yZUNoaWxkKTsKICAgICB2b2lkIGF0dGFjaEZvclN0eWxlQmFz
ZWRSdWJ5KFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
VGFibGUuY3BwCmluZGV4IGM3NWI2ZDhhMWI4ZS4uYWEwY2FlMTVhMTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVyVGFibGUuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgUmVuZGVyRWxlbWVudCYgUmVuZGVyVHJl
ZUJ1aWxkZXI6OlRhYmxlOjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JDaGlsZChSZW5kZXJUYWJsZSYK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8qIHBhcmVudENhbmRpZGF0ZSA9IGJlZm9yZUNo
aWxkOworICAgIGF1dG8qIHBhcmVudENhbmRpZGF0ZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJF
bGVtZW50PihiZWZvcmVDaGlsZCk7CiAgICAgd2hpbGUgKHBhcmVudENhbmRpZGF0ZSAmJiBwYXJl
bnRDYW5kaWRhdGUtPnBhcmVudCgpLT5pc0Fub255bW91cygpCiAgICAgICAgICYmICFpczxSZW5k
ZXJUYWJsZVNlY3Rpb24+KCpwYXJlbnRDYW5kaWRhdGUpCiAgICAgICAgICYmIHBhcmVudENhbmRp
ZGF0ZS0+c3R5bGUoKS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5k
ZXggMGIxMDYxYzA1YTdkLi40MWE0NDQ0NDAyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtNTUsNyArNTUsOCBAQAogI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJCbG9jay5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJCbG9j
a0Zsb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyQm94Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlck9iamVjdElubGluZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJFbGVtZW50SW5saW5lcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJUZXh0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JvdW5kZWRSZWN0Lmg+CkBAIC0yNTgsMTQgKzI1OSwxMyBA
QCBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVu
c2lvbnMpCiAtIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24KIHsKICAgICBp
bnQgcmVzdWx0ID0gMDsKLSAgICBSZW5kZXJPYmplY3QgKiByZW5kZXJlciA9IGNvcmUoc2VsZikt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKSB7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAocmVuZGVyZXItPmlzRmxv
YXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fAogICAgICAgICAgICAgcmVuZGVyZXItPmlz
UmVuZGVyV2lkZ2V0KCkpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IElOVF9NQVg7Ci0gICAgICAg
IH0gZWxzZSBpZiAoIXJlbmRlcmVyLT5maXJzdENoaWxkU2xvdygpKSB7CisgICAgICAgIH0gZWxz
ZSBpZiAoIXJlbmRlcmVyLT5maXJzdENoaWxkU2xvdygpKQogICAgICAgICAgICAgcmVzdWx0ID0g
MDsKLSAgICAgICAgfSBlbHNlIGlmIChpczxXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c+KCpyZW5k
ZXJlcikgfHwgKGlzPFJlbmRlckJsb2NrPigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJs
b2NrPigqcmVuZGVyZXIpLmlubGluZUNvbnRpbnVhdGlvbigpKSkgeworICAgICAgICBlbHNlIGlm
IChpczxXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlcikgfHwgKGlzPFJlbmRlckJs
b2NrPigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigqcmVuZGVyZXIpLmlubGlu
ZUNvbnRpbnVhdGlvbigpKSkgewogICAgICAgICAgICAgQk9PTCBub0Nvc3QgPSBOTzsKICAgICAg
ICAgICAgIGlmIChhdXRvIHJlbmRlckJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KCpy
ZW5kZXJlcikpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBwYXJlbnRSZW5kZXJCb3ggPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJCb3gtPnBhcmVudCgpKTsKQEAgLTI3Myw5ICsy
NzMsOCBAQCAtIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24KICAgICAgICAg
ICAgICAgICAgICAgbm9Db3N0ID0gWUVTOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVz
dWx0ID0gKG5vQ29zdCA/IDAgOiAxKTsKLSAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+aXNU
cmFuc2Zvcm1lZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyRWxlbWVudD4ocmVu
ZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpyZW5kZXJlcikuaXNUcmFuc2Zvcm1l
ZCgpKQogICAgICAgICAgICAgcmVzdWx0ID0gSU5UX01BWDsKLSAgICAgICAgfQogICAgIH0KICAg
ICByZXR1cm4gcmVzdWx0OwogfQo=
</data>
<flag name="commit-queue"
          id="498647"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474692</attachid>
            <date>2025-03-22 14:13:31 -0700</date>
            <delta_ts>2025-03-22 18:21:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-290262-20250322141330.patch</filename>
            <type>text/plain</type>
            <size>39062</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAxNWUzYmQ3MmE0NzRkMGYwMjhlMWY4YTY5YzRjODI1YzM3MTY1ZDM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjIgTWFyIDIwMjUgMTE6MjU6MzYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbQ2xlYW51
cF0gTW92ZSBmdW5jdGlvbnMgZnJvbSBSZW5kZXJPYmplY3QgdG8gUmVuZGVyRWxlbWVudAogKGNv
bnQuLi4pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTAyNjIKClJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBpcyBhIGJpdCBvZiBhIG1peCBvZiBtb3Zl
IGFuZCB1c2UgUmVuZGVyRWxlbWVudCB3aGVyZSBhcHBsaWNhYmxlLgoKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVzLmg6CihXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVJdGVyYXRvcjo6YXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yIGNvbnN0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIgY29uc3QpOgooV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OnB1c2hPbnRvVHJhbnNmb3JtU3RhdGUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmg6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmlzQXRvbWlj
SW5saW5lTGV2ZWxCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
ZW9tZXRyeU1hcC5jcHA6CihXZWJDb3JlOjpjYW5NYXBCZXR3ZWVuUmVuZGVyZXJzVmlhTGF5ZXJz
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIg
Y29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoT250b1RyYW5zZm9y
bVN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0RnJv
bUFuY2VzdG9yQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9y
bVJlbGF0ZWRQcm9wZXJ0eSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdElubGluZXMuaDoKKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aGFzVHJhbnNmb3JtT3JQ
ZXJzcGVjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQXRv
bWljSW5saW5lTGV2ZWxCb3ggY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
cHJlc2VydmVzTmV3bGluZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaDoKKFdlYkNvcmU6OnNob3VsZENvbGxhcHNlV2hp
dGVTcGFjZSk6CihXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3gpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHA6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OlJl
bmRlclRyZWVCdWlsZGVyOjphdHRhY2hJbnRlcm5hbCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6YXR0YWNoVG9SZW5kZXJFbGVtZW50SW50ZXJuYWwpOgooV2ViQ29yZTo6UmVuZGVyVHJl
ZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lQ2hpbGRyZW5JZk5lZWRl
ZCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6cmVwb3J0VmlzdWFsbHlOb25FbXB0eUNv
bnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlckJsb2NrLmNwcDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6aW5zZXJ0
Q2hpbGRUb0NvbnRpbnVhdGlvbik6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwOgooV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6Ok11bHRpQ29sdW1uOjpyZXNvbHZlTW92ZWRDaGlsZCk6CihXZWJDb3JlOjpSZW5kZXJU
cmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46Om11bHRpQ29sdW1uUmVsYXRpdmVXaWxsQmVSZW1vdmVk
KToKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6aGFuZGxlU3Bhbm5l
clJlbW92YWwpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlck11bHRpQ29sdW1uLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHA6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6
UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZCk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNw
cDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50
Rm9yQ2hpbGQpOgotLS0KIC4uLi9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVz
LmggICB8ICA1ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
ICAgfCA3NiArKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oICAgICAgfCAgOSArKysKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50SW5saW5lcy5oICB8ICAzICsKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5jcHAgICB8ICAzICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCAgICAgfCA3NCAtLS0tLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCAgICAgICB8IDExIC0tLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdElubGluZXMuaCAgIHwgIDUgLS0KIC4uLi9yZW5kZXJpbmcvbGluZS9MaW5l
SW5saW5lSGVhZGVycy5oICAgICAgICB8IDEyICstLQogLi4uL3N2Zy9TVkdCb3VuZGluZ0JveENv
bXB1dGF0aW9uLmNwcCAgICAgICAgIHwgIDIgKy0KIC4uLi9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwICB8ICA4ICstCiAuLi4vdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJCbG9jay5jcHAgICAgICAgfCAgMiArLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uY3BwIHwgMTUgKystLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uaCAgIHwgIDIgKy0KIC4uLi91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1
YnkuY3BwICAgICAgICB8ICA2ICstCiAuLi4vdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5
LmggICAgICAgICAgfCAgMiArLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwICAgICAgIHwgIDIgKy0KIC4uLi9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSAgICAg
ICAgICAgICB8IDEzICsrLS0KIDE4IGZpbGVzIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCAx
MjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUl0ZXJhdG9ySW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xl
Z2FjeUlubGluZUl0ZXJhdG9ySW5saW5lcy5oCmluZGV4IDEyZDlmNWYwMTE0OS4uYTVhMGZjZDY5
MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRl
cmF0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGlu
ZUl0ZXJhdG9ySW5saW5lcy5oCkBAIC0yNiwxMCArMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGlubGluZSBib29sIExlZ2FjeUlubGluZUl0ZXJhdG9yOjphdFRleHRQYXJhZ3JhcGhTZXBh
cmF0b3IoKSBjb25zdAogewotICAgIGF1dG8qIHRleHRSZW5kZXJlciA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKTsKLSAgICByZXR1cm4gdGV4dFJlbmRlcmVyCi0gICAg
ICAgICYmIG1fcmVuZGVyZXItPnByZXNlcnZlc05ld2xpbmUoKQotICAgICAgICAmJiB0ZXh0UmVu
ZGVyZXItPmNoYXJhY3RlckF0KG1fcG9zKSA9PSAnXG4nOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogaW5saW5lIGJvb2wgTGVnYWN5SW5saW5lSXRlcmF0b3I6OmF0UGFyYWdyYXBoU2VwYXJhdG9y
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRl
eCA3NThhZDI2NmQxZjQuLjgxZjNiMTYxNWNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjE4NCw2ICsyMTg0LDI4IEBAIGJvb2wgUmVuZGVyRWxl
bWVudDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBsYXllck1vZGVs
T2JqZWN0Lmhhc1NlbGZQYWludGluZ0xheWVyKCk7CiB9CiAKK0xheW91dFNpemUgUmVuZGVyRWxl
bWVudDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIGNv
bnRhaW5lcikgY29uc3QKK3sKKyAgICBMYXlvdXRTaXplIG9mZnNldDsKKyAgICBMYXlvdXRQb2lu
dCByZWZlcmVuY2VQb2ludDsKKyAgICBDaGVja2VkUHRyIGN1cnJlbnRDb250YWluZXIgPSB0aGlz
OworICAgIGRvIHsKKyAgICAgICAgQ2hlY2tlZFB0ciBuZXh0Q29udGFpbmVyID0gY3VycmVudENv
bnRhaW5lci0+Y29udGFpbmVyKCk7CisgICAgICAgIEFTU0VSVChuZXh0Q29udGFpbmVyKTsKKyAg
ICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKSB7CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdl
IHJlYWNoZWQgdGhlIHRvcCB3aXRob3V0IGZpbmRpbmcgY29udGFpbmVyLgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFjdXJyZW50Q29udGFpbmVyLT5pc1Ry
YW5zZm9ybWVkKCkpOworICAgICAgICBMYXlvdXRTaXplIGN1cnJlbnRPZmZzZXQgPSBjdXJyZW50
Q29udGFpbmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKCpuZXh0Q29udGFpbmVyLCByZWZlcmVuY2VQ
b2ludCk7CisgICAgICAgIG9mZnNldCArPSBjdXJyZW50T2Zmc2V0OworICAgICAgICByZWZlcmVu
Y2VQb2ludC5tb3ZlKGN1cnJlbnRPZmZzZXQpOworICAgICAgICBjdXJyZW50Q29udGFpbmVyID0g
V1RGTW92ZShuZXh0Q29udGFpbmVyKTsKKyAgICB9IHdoaWxlIChjdXJyZW50Q29udGFpbmVyICE9
ICZjb250YWluZXIpOworCisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogdm9pZCBSZW5kZXJFbGVt
ZW50OjpwdXNoT250b0dlb21ldHJ5TWFwKFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCwg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgUmVuZGVyRWxl
bWVudCogY29udGFpbmVyLCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0CiB7CiAgICAgYm9v
bCBpc0ZpeGVkUG9zID0gaXNGaXhlZFBvc2l0aW9uZWQoKTsKQEAgLTI3MTAsNCArMjczMiw1OCBA
QCB2b2lkIFJlbmRlckVsZW1lbnQ6OmxheW91dElmTmVlZGVkKCkKICAgICBsYXlvdXQoKTsKIH0K
IAorYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lck9iamVjdCkgY29uc3QKK3sKKyAgICBpZiAoaXNU
cmFuc2Zvcm1lZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGFzTGF5ZXIoKSAm
JiBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKS0+c25hcHNo
b3R0ZWRTY3JvbGxPZmZzZXRGb3JBbmNob3JQb3NpdGlvbmluZygpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoY29udGFpbmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5bGUo
KS5oYXNQZXJzcGVjdGl2ZSgpKQorICAgICAgICByZXR1cm4gY29udGFpbmVyT2JqZWN0ID09IHBh
cmVudCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gRklYTUU6IE5vdyB0aGF0IGl0J3Mg
bm8gbG9uZ2VyIHBhc3NlZCBhIGNvbnRhaW5lciBtYXliZSB0aGlzIHNob3VsZCBiZSByZW5hbWVk
Pwordm9pZCBSZW5kZXJFbGVtZW50OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExh
eW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKSBjb25zdAoreworICAgIHRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKKyAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKG9mZnNldEluQ29udGFpbmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVy
LmhlaWdodCgpKTsKKyAgICBDaGVja2VkUHRyPFJlbmRlckxheWVyPiBsYXllcjsKKyAgICBpZiAo
aGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0Pigq
dGhpcykubGF5ZXIoKSkgJiYgbGF5ZXItPnRyYW5zZm9ybSgpKQorICAgICAgICB0cmFuc2Zvcm0u
bXVsdGlwbHkobGF5ZXItPmN1cnJlbnRUcmFuc2Zvcm0oKSk7CisKKyAgICBDaGVja2VkUHRyIHBl
cnNwZWN0aXZlT2JqZWN0ID0gcGFyZW50KCk7CisKKyAgICBpZiAocGVyc3BlY3RpdmVPYmplY3Qg
JiYgcGVyc3BlY3RpdmVPYmplY3QtPmhhc0xheWVyKCkgJiYgcGVyc3BlY3RpdmVPYmplY3QtPnN0
eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkgeworICAgICAgICAvLyBQZXJwc2VjdGl2ZSBvbiB0aGUg
Y29udGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdlIGhhdmUgdG8gZmFjdG9yIGl0IGluIGhlcmUuCisg
ICAgICAgIEFTU0VSVChwZXJzcGVjdGl2ZU9iamVjdC0+aGFzTGF5ZXIoKSk7CisgICAgICAgIEZs
b2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0PigqcGVyc3BlY3RpdmVPYmplY3QpLmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7CisK
KyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CisgICAgICAg
IHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVPYmplY3QtPnN0
eWxlKCkudXNlZFBlcnNwZWN0aXZlKCkpOworCisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGVS
aWdodDNkKC1wZXJzcGVjdGl2ZU9yaWdpbi54KCksIC1wZXJzcGVjdGl2ZU9yaWdpbi55KCksIDAp
OworICAgICAgICB0cmFuc2Zvcm0gPSBwZXJzcGVjdGl2ZU1hdHJpeCAqIHRyYW5zZm9ybTsKKyAg
ICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QocGVyc3BlY3RpdmVPcmlnaW4ueCgpLCBw
ZXJzcGVjdGl2ZU9yaWdpbi55KCksIDApOworICAgIH0KK30KKwordm9pZCBSZW5kZXJFbGVtZW50
OjpwdXNoT250b1RyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwg
T3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4gbW9kZSwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgUmVuZGVyRWxlbWVudCogY29udGFpbmVy
LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRJbkNvbnRhaW5lciwgYm9vbCBjb250YWluZXJTa2lw
cGVkKSBjb25zdAoreworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUuY29udGFpbnMoVXNlVHJh
bnNmb3JtcykgJiYgcGFydGljaXBhdGVzSW5QcmVzZXJ2ZTNEKCk7CisgICAgaWYgKG1vZGUuY29u
dGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihj
b250YWluZXIpKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAg
ICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvZmZzZXRJbkNvbnRhaW5lciwgbWF0cml4KTsK
KyAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0obWF0cml4LCBwcmVzZXJ2ZTNE
ID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6
RmxhdHRlblRyYW5zZm9ybSk7CisgICAgfSBlbHNlCisgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1v
dmUob2Zmc2V0SW5Db250YWluZXIud2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0KCks
IHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRyYW5z
Zm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKKworICAgIGlmIChjb250YWluZXJTa2lwcGVk
KSB7CisgICAgICAgIC8vIFRoZXJlIGNhbid0IGJlIGEgdHJhbnNmb3JtIGJldHdlZW4gcmVwYWlu
dENvbnRhaW5lciBhbmQgY29udGFpbmVyLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNvbnRh
aW5lcnMsIHNvIGl0IHNob3VsZCBiZSBzYWZlCisgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJhY3Qg
dGhlIGRlbHRhIGJldHdlZW4gdGhlIHJlcGFpbnRDb250YWluZXIgYW5kIGNvbnRhaW5lci4KKyAg
ICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5vZmZz
ZXRGcm9tQW5jZXN0b3JDb250YWluZXIoKmNvbnRhaW5lcik7CisgICAgICAgIHRyYW5zZm9ybVN0
YXRlLm1vdmUoLWNvbnRhaW5lck9mZnNldC53aWR0aCgpLCAtY29udGFpbmVyT2Zmc2V0LmhlaWdo
dCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBU
cmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAgfQorfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiOTUxZDE3OTI0ODAuLjQ4NGNh
ZjFlMTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0y
NjgsNiArMjY4LDcgQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mt
dHJhbnNmb3Jtcy0xLyN0cmFuc2Zvcm0tYm94CiAgICAgaW5saW5lIEZsb2F0UmVjdCB0cmFuc2Zv
cm1SZWZlcmVuY2VCb3hSZWN0KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAgICAgaW5saW5l
IEZsb2F0UmVjdCB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkgY29uc3Q7CisgICAgaW5saW5l
IGJvb2wgaXNUcmFuc2Zvcm1lZCgpIGNvbnN0OwogCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3Jn
L1RSL2Nzcy10cmFuc2Zvcm1zLTEvI3JlZmVyZW5jZS1ib3gKICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCByZWZlcmVuY2VCb3hSZWN0KENTU0JveFR5cGUpIGNvbnN0OwpAQCAtMzExLDYgKzMxMiw3IEBA
IHB1YmxpYzoKICAgICBpbmxpbmUgYm9vbCBpc0Jsb2NrQm94KCkgY29uc3Q7CiAgICAgaW5saW5l
IGJvb2wgaXNCbG9ja0xldmVsQm94KCkgY29uc3Q7CiAgICAgaW5saW5lIGJvb2wgaXNCbG9ja0Nv
bnRhaW5lcigpIGNvbnN0OworICAgIGlubGluZSBib29sIGlzQXRvbWljSW5saW5lTGV2ZWxCb3go
KSBjb25zdDsKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvZmZzZXRQYXJlbnQoKSBjb25z
dDsKICAgICAvLyBQdXNoZXMgc3RhdGUgb250byBSZW5kZXJHZW9tZXRyeU1hcCBhYm91dCBob3cg
dG8gbWFwIGNvb3JkaW5hdGVzIGZyb20gdGhpcyByZW5kZXJlciB0byBpdHMgY29udGFpbmVyLCBv
ciBhbmNlc3RvclRvU3RvcEF0ICh3aGljaGV2ZXIgaXMgZW5jb3VudGVyZWQgZmlyc3QpLgpAQCAt
MzM0LDYgKzMzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkud3JpdGluZ01vZGUoKTsgfQogCisgICAgYm9vbCBzaG91
bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5l
cikgY29uc3Q7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91
dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0Owor
ICAgIHZvaWQgcHVzaE9udG9UcmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNl
dDxNYXBDb29yZGluYXRlc01vZGU+LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBjb25zdCBSZW5kZXJFbGVtZW50KiBjb250YWluZXIsIGNvbnN0IExheW91
dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0Owor
CisgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5l
cigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMg
aGF2ZSB0cmFuc2Zvcm1zLgorICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFp
bmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRl
ckVsZW1lbnQoVHlwZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxUeXBlRmxh
Zz4sIFR5cGVTcGVjaWZpY0ZsYWdzKTsKICAgICBSZW5kZXJFbGVtZW50KFR5cGUsIERvY3VtZW50
JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVGbGFnPiwgVHlwZVNwZWNpZmljRmxhZ3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxp
bmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudElubGluZXMuaApp
bmRleCAxN2EzMDBhYjJhZWQuLjFhOTVmMjY5YTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2lu
Y2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgi
CisjaW5jbHVkZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzgsNiArMzksNyBAQCBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNNYXNrKCkg
Y29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNNYXNrKCk7IH0KIGlubGluZSBib29sIFJlbmRlckVs
ZW1lbnQ6Omhhc091dGxpbmUoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc091dGxpbmUoKSB8
fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpOyB9CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50Ojpo
YXNTaGFwZU91dHNpZGUoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLnNoYXBlT3V0c2lkZSgpOyB9
CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50Ojppc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1
cm4gc3R5bGUoKS5oYXNPcGFjaXR5KCk7IH0KK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6Omlz
VHJhbnNmb3JtZWQoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHko
KSAmJiAoc3R5bGUoKS5hZmZlY3RzVHJhbnNmb3JtKCkgfHwgaGFzU1ZHVHJhbnNmb3JtKCkpOyB9
CiBpbmxpbmUgZmxvYXQgUmVuZGVyRWxlbWVudDo6b3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkub3BhY2l0eSgpOyB9CiBpbmxpbmUgRmxvYXRSZWN0IFJlbmRlckVsZW1lbnQ6OnRyYW5z
Zm9ybVJlZmVyZW5jZUJveFJlY3QoKSBjb25zdCB7IHJldHVybiB0cmFuc2Zvcm1SZWZlcmVuY2VC
b3hSZWN0KHN0eWxlKCkpOyB9CiBpbmxpbmUgRmxvYXRSZWN0IFJlbmRlckVsZW1lbnQ6OnRyYW5z
Zm9ybVJlZmVyZW5jZUJveFJlY3QoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdCB7IHJl
dHVybiByZWZlcmVuY2VCb3hSZWN0KHRyYW5zZm9ybUJveFRvQ1NTQm94VHlwZShzdHlsZS50cmFu
c2Zvcm1Cb3goKSkpOyB9CkBAIC00Nyw2ICs0OSw3IEBAIGlubGluZSBib29sIFJlbmRlckVsZW1l
bnQ6Omhhc0FwcGxlVmlzdWFsRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNBcHBs
CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNBcHBsZVZpc3VhbEVmZmVjdFJlcXVpcmlu
Z0JhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNBcHBsZVZpc3VhbEVm
ZmVjdFJlcXVpcmluZ0JhY2tkcm9wRmlsdGVyKCk7IH0KICNlbmRpZgogCitpbmxpbmUgYm9vbCBS
ZW5kZXJFbGVtZW50Ojppc0F0b21pY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gc3R5
bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIShzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6SW5saW5lICYmICFpc1JlcGxhY2VkT3JBdG9taWNJbmxpbmUoKSk7IH0KIGlubGlu
ZSBib29sIFJlbmRlckVsZW1lbnQ6OmlzQmxvY2tMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpOyB9CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50
Ojppc0Fub255bW91c0Jsb2NrKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IDNiOGZmMTQxYTIyNi4uNGY4ZDA1OTE0YWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAK
QEAgLTE1Miw3ICsxNTIsOCBAQCBzdGF0aWMgYm9vbCBjYW5NYXBCZXR3ZWVuUmVuZGVyZXJzVmlh
TGF5ZXJzKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcgogICAgICAgICBpZiAo
Y3VycmVudC0+aXNGaXhlZFBvc2l0aW9uZWQoKSB8fCBzdHlsZS53cml0aW5nTW9kZSgpLmlzQmxv
Y2tGbGlwcGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGN1
cnJlbnQtPmhhc1RyYW5zZm9ybU9yUGVyc3BlY3RpdmUoKSkKKyAgICAgICAgYXV0byBoYXNUcmFu
c2Zvcm1PclBlcnNwZWN0aXZlID0gY3VycmVudC0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCkgJiYgKGN1cnJlbnQtPmlzVHJhbnNmb3JtZWQoKSB8fCBjdXJyZW50LT5zdHlsZSgpLmhhc1Bl
cnNwZWN0aXZlKCkpOworICAgICAgICBpZiAoaGFzVHJhbnNmb3JtT3JQZXJzcGVjdGl2ZSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGlmIChjdXJyZW50LT5p
c1JlbmRlckZyYWdtZW50ZWRGbG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDBiM2UwMDdkOWViYy4uMDRiOTI2ZmM1M2I5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTU0MCw2MCArMTU0MCw2IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChPcHRpb25TZXQ8TWFwQ29v
cmRpbmF0ZXNNb2RlPiBtb2RlLCBUCiAgICAgfQogfQogCi1ib29sIFJlbmRlck9iamVjdDo6c2hv
dWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJFbGVtZW50KiBjb250YWlu
ZXJPYmplY3QpIGNvbnN0Ci17Ci0gICAgaWYgKGlzVHJhbnNmb3JtZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKGhhc0xheWVyKCkgJiYgZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdD4oKnRoaXMpLmxheWVyKCktPnNuYXBzaG90dGVkU2Nyb2xsT2Zmc2V0Rm9yQW5jaG9y
UG9zaXRpb25pbmcoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNvbnRhaW5lck9i
amVjdCAmJiBjb250YWluZXJPYmplY3QtPnN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkKLSAgICAg
ICAgcmV0dXJuIGNvbnRhaW5lck9iamVjdCA9PSBwYXJlbnQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLS8vIEZJWE1FOiBOb3cgdGhhdCBpdCdzIG5vIGxvbmdlciBwYXNzZWQgYSBjb250YWlu
ZXIgbWF5YmUgdGhpcyBzaG91bGQgYmUgcmVuYW1lZD8KLXZvaWQgUmVuZGVyT2JqZWN0OjpnZXRU
cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVy
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKSBjb25zdAotewotICAgIHRyYW5zZm9y
bS5tYWtlSWRlbnRpdHkoKTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9mZnNldEluQ29udGFp
bmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpKTsKLSAgICBDaGVja2VkUHRy
PFJlbmRlckxheWVyPiBsYXllcjsKLSAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSBkb3du
Y2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKSkgJiYgbGF5ZXItPnRy
YW5zZm9ybSgpKQotICAgICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobGF5ZXItPmN1cnJlbnRUcmFu
c2Zvcm0oKSk7Ci0KLSAgICBDaGVja2VkUHRyIHBlcnNwZWN0aXZlT2JqZWN0ID0gcGFyZW50KCk7
Ci0KLSAgICBpZiAocGVyc3BlY3RpdmVPYmplY3QgJiYgcGVyc3BlY3RpdmVPYmplY3QtPmhhc0xh
eWVyKCkgJiYgcGVyc3BlY3RpdmVPYmplY3QtPnN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkgewot
ICAgICAgICAvLyBQZXJwc2VjdGl2ZSBvbiB0aGUgY29udGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdl
IGhhdmUgdG8gZmFjdG9yIGl0IGluIGhlcmUuCi0gICAgICAgIEFTU0VSVChwZXJzcGVjdGl2ZU9i
amVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4g
PSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqcGVyc3BlY3RpdmVPYmplY3QpLmxh
eWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7Ci0KLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcGVyc3BlY3RpdmVNYXRyaXg7Ci0gICAgICAgIHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVy
c3BlY3RpdmUocGVyc3BlY3RpdmVPYmplY3QtPnN0eWxlKCkudXNlZFBlcnNwZWN0aXZlKCkpOwot
ICAgICAgICAKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QoLXBlcnNwZWN0aXZl
T3JpZ2luLngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7Ci0gICAgICAgIHRyYW5zZm9y
bSA9IHBlcnNwZWN0aXZlTWF0cml4ICogdHJhbnNmb3JtOwotICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlUmlnaHQzZChwZXJzcGVjdGl2ZU9yaWdpbi54KCksIHBlcnNwZWN0aXZlT3JpZ2luLnko
KSwgMCk7Ci0gICAgfQotfQotCi12b2lkIFJlbmRlck9iamVjdDo6cHVzaE9udG9UcmFuc2Zvcm1T
dGF0ZShUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE9wdGlvblNldDxNYXBDb29yZGlu
YXRlc01vZGU+IG1vZGUsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0SW5Db250YWluZXIsIGJvb2wgY29udGFpbmVyU2tpcHBlZCkgY29uc3QKLXsKLSAgICBi
b29sIHByZXNlcnZlM0QgPSBtb2RlLmNvbnRhaW5zKFVzZVRyYW5zZm9ybXMpICYmIHBhcnRpY2lw
YXRlc0luUHJlc2VydmUzRCgpOwotICAgIGlmIChtb2RlLmNvbnRhaW5zKFVzZVRyYW5zZm9ybXMp
ICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29udGFpbmVyKSkgewotICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7Ci0gICAgICAgIGdldFRyYW5zZm9ybUZyb21D
b250YWluZXIob2Zmc2V0SW5Db250YWluZXIsIG1hdHJpeCk7Ci0gICAgICAgIHRyYW5zZm9ybVN0
YXRlLmFwcGx5VHJhbnNmb3JtKG1hdHJpeCwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpB
Y2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwot
ICAgIH0gZWxzZQotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKG9mZnNldEluQ29udGFpbmVy
LndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNm
b3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRy
YW5zZm9ybSk7Ci0KLSAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewotICAgICAgICAvLyBUaGVy
ZSBjYW4ndCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWluZXIgYW5kIGNvbnRh
aW5lciwgYmVjYXVzZSB0cmFuc2Zvcm1zIGNyZWF0ZSBjb250YWluZXJzLCBzbyBpdCBzaG91bGQg
YmUgc2FmZQotICAgICAgICAvLyB0byBqdXN0IHN1YnRyYWN0IHRoZSBkZWx0YSBiZXR3ZWVuIHRo
ZSByZXBhaW50Q29udGFpbmVyIGFuZCBjb250YWluZXIuCi0gICAgICAgIExheW91dFNpemUgY29u
dGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFp
bmVyKCpjb250YWluZXIpOwotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKC1jb250YWluZXJP
ZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/IFRy
YW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0
ZW5UcmFuc2Zvcm0pOwotICAgIH0KLX0KLQogRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9jYWxU
b0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4g
bW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gVHJhY2sgdGhlIHBvaW50IGF0
IHRoZSBjZW50ZXIgb2YgdGhlIHF1YWQncyBib3VuZGluZyBib3guIEFzIG1hcExvY2FsVG9Db250
YWluZXIoKSBjYWxscyBvZmZzZXRGcm9tQ29udGFpbmVyKCksCkBAIC0xNjI4LDI2ICsxNTc0LDYg
QEAgTGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxl
bWVudCYgY29udGFpbmVyLCBjb25zdCBMYXkKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1MYXlv
dXRTaXplIFJlbmRlck9iamVjdDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnN0IFJl
bmRlckVsZW1lbnQmIGNvbnRhaW5lcikgY29uc3QKLXsKLSAgICBMYXlvdXRTaXplIG9mZnNldDsK
LSAgICBMYXlvdXRQb2ludCByZWZlcmVuY2VQb2ludDsKLSAgICBDaGVja2VkUHRyIGN1cnJlbnRD
b250YWluZXIgPSB0aGlzOwotICAgIGRvIHsKLSAgICAgICAgQ2hlY2tlZFB0ciBuZXh0Q29udGFp
bmVyID0gY3VycmVudENvbnRhaW5lci0+Y29udGFpbmVyKCk7Ci0gICAgICAgIEFTU0VSVChuZXh0
Q29udGFpbmVyKTsgIC8vIFRoaXMgbWVhbnMgd2UgcmVhY2hlZCB0aGUgdG9wIHdpdGhvdXQgZmlu
ZGluZyBjb250YWluZXIuCi0gICAgICAgIGlmICghbmV4dENvbnRhaW5lcikKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBBU1NFUlQoIWN1cnJlbnRDb250YWluZXItPmlzVHJhbnNmb3JtZWQo
KSk7Ci0gICAgICAgIExheW91dFNpemUgY3VycmVudE9mZnNldCA9IGN1cnJlbnRDb250YWluZXIt
Pm9mZnNldEZyb21Db250YWluZXIoKm5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsKLSAg
ICAgICAgb2Zmc2V0ICs9IGN1cnJlbnRPZmZzZXQ7Ci0gICAgICAgIHJlZmVyZW5jZVBvaW50Lm1v
dmUoY3VycmVudE9mZnNldCk7Ci0gICAgICAgIGN1cnJlbnRDb250YWluZXIgPSBXVEZNb3ZlKG5l
eHRDb250YWluZXIpOwotICAgIH0gd2hpbGUgKGN1cnJlbnRDb250YWluZXIgIT0gJmNvbnRhaW5l
cik7Ci0KLSAgICByZXR1cm4gb2Zmc2V0OwotfQotCiBib29sIFJlbmRlck9iamVjdDo6cGFydGlj
aXBhdGVzSW5QcmVzZXJ2ZTNEKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzTGF5ZXIoKSAmJiBk
b3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKS0+cGFydGljaXBh
dGVzSW5QcmVzZXJ2ZTNEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
aW5kZXggMDRiNWM3MjkyNjBmLi43MDVjOTg0ZmRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTQzMCw4ICs0MzAsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1JlbmRlcklubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUZsYWdzLmNvbnRhaW5zKFR5cGVG
bGFnOjpJc1JlbmRlcklubGluZSk7IH0KICAgICBib29sIGlzUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUZsYWdzLmNvbnRhaW5zKFR5cGVGbGFnOjpJc0xheWVy
TW9kZWxPYmplY3QpOyB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0F0b21pY0lubGluZUxldmVsQm94
KCkgY29uc3Q7Ci0KICAgICBib29sIGlzUmVuZGVyQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBUeXBlOjpDb3VudGVyOyB9CiAgICAgYm9vbCBpc1JlbmRlclF1b3RlKCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IFR5cGU6OlF1b3RlOyB9CiAKQEAgLTcwMiw4ICs3MDAsNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNOb25WaXNpYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlQml0ZmllbGRzLmhhc0ZsYWcoU3RhdGVGbGFnOjpIYXNOb25WaXNpYmxlT3ZlcmZsb3cp
OyB9CiAKICAgICBib29sIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGVCaXRmaWVsZHMuaGFzRmxhZyhTdGF0ZUZsYWc6Okhhc1RyYW5zZm9ybVJlbGF0
ZWRQcm9wZXJ0eSk7IH0gLy8gVHJhbnNmb3JtLCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5
bGU6IHByZXNlcnZlLTNkLgotICAgIGlubGluZSBib29sIGlzVHJhbnNmb3JtZWQoKSBjb25zdDsK
LSAgICBpbmxpbmUgYm9vbCBoYXNUcmFuc2Zvcm1PclBlcnNwZWN0aXZlKCkgY29uc3Q7CiAKICAg
ICBib29sIGNhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVC
aXRmaWVsZHMuaGFzRmxhZyhTdGF0ZUZsYWc6OkNhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbik7IH0K
ICAgICBib29sIHNldENhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbihib29sKTsKQEAgLTgyOSw4ICs4
MjUsNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgY29udGFp
bmVyKCkgcmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4gbXVsdGktY29sdW1uIGxh
eW91dCwKICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBkaWZmZXJlbnQgcG9pbnRz
LCBzbyByZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhlIGdpdmVuIHBvaW50Lgog
ICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQm
LCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0
cikgY29uc3Q7Ci0gICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhl
IGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRl
IG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgotICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2Vz
dG9yQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTZWxlY3Rpb25HZW9tZXRyaWVz
KFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVu
c2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7
CkBAIC0xMDk0LDExICsxMDg4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wq
IHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRl
VG9Mb2NhbFBvaW50KE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBUcmFuc2Zvcm1TdGF0
ZSYpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lcikgY29uc3Q7Ci0gICAgdm9pZCBnZXRUcmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OwotICAgIAotICAgIHZvaWQgcHVzaE9udG9UcmFuc2Zv
cm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBSZW5k
ZXJFbGVtZW50KiBjb250YWluZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVy
LCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0OwotCiAgICAgYm9vbCBwYXJ0aWNpcGF0ZXNJ
blByZXNlcnZlM0QoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgLyogYWRkaXRpb25hbE9m
ZnNldCAqLywgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLyogcGFpbnRDb250YWluZXIg
Ki8gPSBudWxscHRyKSBjb25zdCB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdElubGluZXMuaAppbmRleCA1MjQxNDc3Zjk1ZmEuLmYxMWFlZTdmMWExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdElubGluZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0SW5saW5lcy5oCkBAIC0y
MSwxNSArMjEsMTAgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBib29sIFJlbmRlck9i
amVjdDo6aGFzVHJhbnNmb3JtT3JQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChpc1RyYW5zZm9ybWVkKCkgfHwgc3R5bGUoKS5oYXNQ
ZXJzcGVjdGl2ZSgpKTsgfQotaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0F0b21pY0lubGlu
ZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkg
JiYgIShzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lICYmICFpc1JlcGxh
Y2VkT3JBdG9taWNJbmxpbmUoKSk7IH0KLWlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNUcmFu
c2Zvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYm
IChzdHlsZSgpLmFmZmVjdHNUcmFuc2Zvcm0oKSB8fCBoYXNTVkdUcmFuc2Zvcm0oKSk7IH0KLWlu
bGluZSBib29sIFJlbmRlck9iamVjdDo6cHJlc2VydmVzTmV3bGluZSgpIGNvbnN0IHsgcmV0dXJu
ICFpc1JlbmRlclNWR0lubGluZVRleHQoKSAmJiBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpOyB9
CiBpbmxpbmUgUmVmPERvY3VtZW50PiBSZW5kZXJPYmplY3Q6OnByb3RlY3RlZERvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gZG9jdW1lbnQoKTsgfQogaW5saW5lIGNvbnN0IExvY2FsRnJhbWVWaWV3
TGF5b3V0Q29udGV4dCYgUmVuZGVyT2JqZWN0OjpsYXlvdXRDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAppbmRleCBjMDQ5Mjc0
MTllMTMuLmY0NzNhMTY1ZmNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lSW5saW5lSGVhZGVycy5oCkBAIC01MiwxNSArNTIsMTUgQEAgaW5saW5lIGJvb2wg
cmVxdWlyZXNMaW5lQm94Rm9yQ29udGVudChjb25zdCBSZW5kZXJJbmxpbmUmIGZsb3csIGNvbnN0
IExpbmVJbmZvJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIGJvb2wgc2hvdWxkQ29s
bGFwc2VXaGl0ZVNwYWNlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgTGluZUluZm8m
IGxpbmVJbmZvLCBXaGl0ZXNwYWNlUG9zaXRpb24gd2hpdGVzcGFjZVBvc2l0aW9uKQoraW5saW5l
IGJvb2wgc2hvdWxkQ29sbGFwc2VXaGl0ZVNwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBXaGl0ZXNwYWNlUG9zaXRpb24gd2hpdGVzcGFjZVBv
c2l0aW9uKQogewogICAgIC8vIENTUzIgMTYuNi4xCiAgICAgLy8gSWYgYSBzcGFjZSAoVSswMDIw
KSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBoYXMgJ3doaXRlLXNwYWNlJyBzZXQgdG8gJ25v
cm1hbCcsICdub3dyYXAnLCBvciAncHJlLWxpbmUnLCBpdCBpcyByZW1vdmVkLgogICAgIC8vIElm
IGEgc3BhY2UgKFUrMDAyMCkgYXQgdGhlIGVuZCBvZiBhIGxpbmUgaGFzICd3aGl0ZS1zcGFjZScg
c2V0IHRvICdub3JtYWwnLCAnbm93cmFwJywgb3IgJ3ByZS1saW5lJywgaXQgaXMgYWxzbyByZW1v
dmVkLgogICAgIC8vIElmIHNwYWNlcyAoVSswMDIwKSBvciB0YWJzIChVKzAwMDkpIGF0IHRoZSBl
bmQgb2YgYSBsaW5lIGhhdmUgJ3doaXRlLXNwYWNlJyBzZXQgdG8gJ3ByZS13cmFwJywgVUFzIG1h
eSB2aXN1YWxseSBjb2xsYXBzZSB0aGVtLgotICAgIHJldHVybiBzdHlsZS0+Y29sbGFwc2VXaGl0
ZVNwYWNlKCkKLSAgICAgICAgfHwgKHdoaXRlc3BhY2VQb3NpdGlvbiA9PSBUcmFpbGluZ1doaXRl
c3BhY2UgJiYgc3R5bGUtPndoaXRlU3BhY2VDb2xsYXBzZSgpID09IFdoaXRlU3BhY2VDb2xsYXBz
ZTo6UHJlc2VydmUKLSAgICAgICAgICAgICYmIHN0eWxlLT50ZXh0V3JhcE1vZGUoKSA9PSBUZXh0
V3JhcE1vZGU6OldyYXAgJiYgIWxpbmVJbmZvLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIHN0eWxl
LmNvbGxhcHNlV2hpdGVTcGFjZSgpCisgICAgICAgIHx8ICh3aGl0ZXNwYWNlUG9zaXRpb24gPT0g
VHJhaWxpbmdXaGl0ZXNwYWNlICYmIHN0eWxlLndoaXRlU3BhY2VDb2xsYXBzZSgpID09IFdoaXRl
U3BhY2VDb2xsYXBzZTo6UHJlc2VydmUKKyAgICAgICAgICAgICYmIHN0eWxlLnRleHRXcmFwTW9k
ZSgpID09IFRleHRXcmFwTW9kZTo6V3JhcCAmJiAhbGluZUluZm8uaXNFbXB0eSgpKTsKIH0KIAog
aW5saW5lIGJvb2wgc2tpcE5vbkJyZWFraW5nU3BhY2UoY29uc3QgTGVnYWN5SW5saW5lSXRlcmF0
b3ImIGl0LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8pCkBAIC04OCwxMSArODgsMTEgQEAgaW5s
aW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94KGNvbnN0IExlZ2FjeUlubGluZUl0ZXJhdG9yJiBpdCwg
Y29uc3QgTGluZUluZm8mIGxpbmUKICAgICAgICAgcmVuZGVyZXJJc0VtcHR5SW5saW5lID0gaXNF
bXB0eUlubGluZSgqaW5saW5lUmVuZGVyZXIpOwogICAgIH0KIAotICAgIGlmICghc2hvdWxkQ29s
bGFwc2VXaGl0ZVNwYWNlKCZpdC5yZW5kZXJlcigpLT5zdHlsZSgpLCBsaW5lSW5mbywgd2hpdGVz
cGFjZVBvc2l0aW9uKSkKKyAgICBpZiAoIXNob3VsZENvbGxhcHNlV2hpdGVTcGFjZShpdC5yZW5k
ZXJlcigpLT5zdHlsZSgpLCBsaW5lSW5mbywgd2hpdGVzcGFjZVBvc2l0aW9uKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBVQ2hhciBjdXJyZW50ID0gaXQuY3VycmVudCgpOwotICAgIGJv
b2wgbm90SnVzdFdoaXRlc3BhY2UgPSBjdXJyZW50ICE9ICcgJyAmJiBjdXJyZW50ICE9ICdcdCcg
JiYgY3VycmVudCAhPSBzb2Z0SHlwaGVuICYmIChjdXJyZW50ICE9ICdcbicgfHwgaXQucmVuZGVy
ZXIoKS0+cHJlc2VydmVzTmV3bGluZSgpKSAmJiAhc2tpcE5vbkJyZWFraW5nU3BhY2UoaXQsIGxp
bmVJbmZvKTsKKyAgICBib29sIG5vdEp1c3RXaGl0ZXNwYWNlID0gY3VycmVudCAhPSAnICcgJiYg
Y3VycmVudCAhPSAnXHQnICYmIGN1cnJlbnQgIT0gc29mdEh5cGhlbiAmJiBjdXJyZW50ICE9ICdc
bicgJiYgIXNraXBOb25CcmVha2luZ1NwYWNlKGl0LCBsaW5lSW5mbyk7CiAgICAgcmV0dXJuIG5v
dEp1c3RXaGl0ZXNwYWNlIHx8IHJlbmRlcmVySXNFbXB0eUlubGluZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRh
dGlvbi5jcHAKaW5kZXggYzNkMjg5MjFmYjI2Li5jMTRiODk1YzU3MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0
aW9uLmNwcApAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3JlbWVu
dGVyLmgiCiAjaW5jbHVkZSAiUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlJl
bmRlckNoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCisj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdDb250
YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAppbmRleCAzNDNlOWU5OGE5
ZDUuLjk1ZDZlY2ZjYzE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9p
ZCBSZW5kZXJUcmVlQnVpbGRlcjo6YXR0YWNoSW50ZXJuYWwoUmVuZGVyRWxlbWVudCYgcGFyZW50
LCBSZW5kZXJQdHI8UmVuZGVyT2IKICAgICB9CiAKICAgICBpZiAocGFyZW50LnN0eWxlKCkuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpSdWJ5IHx8IHBhcmVudC5zdHlsZSgpLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6UnVieUJsb2NrKSB7Ci0gICAgICAgIGF1dG8mIHBhcmVudENhbmRpZGF0
ZSA9IHJ1YnlCdWlsZGVyKCkuZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGls
ZChwYXJlbnQsICpjaGlsZCwgYmVmb3JlQ2hpbGQpOworICAgICAgICBhdXRvJiBwYXJlbnRDYW5k
aWRhdGUgPSBydWJ5QnVpbGRlcigpLmZpbmRPckNyZWF0ZVBhcmVudEZvclN0eWxlQmFzZWRSdWJ5
Q2hpbGQocGFyZW50LCBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqY2hpbGQpLCBiZWZvcmVDaGls
ZCk7CiAgICAgICAgIGlmICgmcGFyZW50Q2FuZGlkYXRlID09ICZwYXJlbnQpIHsKICAgICAgICAg
ICAgIHJ1YnlCdWlsZGVyKCkuYXR0YWNoRm9yU3R5bGVCYXNlZFJ1YnkocGFyZW50Q2FuZGlkYXRl
LCBXVEZNb3ZlKGNoaWxkKSwgYmVmb3JlQ2hpbGQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDgwLDcgKzQ4MCw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OmF0dGFjaFRvUmVuZGVyRWxl
bWVudEludGVybmFsKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuCiAgICAgfQogCiAgICAgbmV3
Q2hpbGQtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwotICAgIGF1dG8gaXNP
dXRPZkZsb3dCb3ggPSBuZXdDaGlsZC0+c3R5bGUoKS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpOwor
ICAgIGF1dG8gaXNPdXRPZkZsb3dCb3ggPSBuZXdDaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCk7CiAgICAgaWYgKCFpc091dE9mRmxvd0JveCkKICAgICAgICAgcGFyZW50LnNldFByZWZlcnJl
ZExvZ2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKIApAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgUmVu
ZGVyVHJlZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lQ2hpbGRyZW5J
Zk5lZWRlZChSZW5kZXJFCiAgICAgLy8gaWYgd2UgZmluZCBhIGNvbnRpbnVhdGlvbi4KICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHNob3VsZEFsbENoaWxkcmVuQmVJbmxpbmU7CiAgICAgZm9yIChh
dXRvKiBjdXJyZW50ID0gYmxvY2tQYXJlbnQtPmZpcnN0Q2hpbGQoKTsgY3VycmVudDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGN1cnJlbnQtPnN0eWxl
KCkuaXNGbG9hdGluZygpIHx8IGN1cnJlbnQtPnN0eWxlKCkuaGFzT3V0T2ZGbG93UG9zaXRpb24o
KSkKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICghaXM8UmVuZGVyQmxvY2s+
KCpjdXJyZW50KSkKQEAgLTExMDIsNyArMTEwMiw3IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6
OnJlcG9ydFZpc3VhbGx5Tm9uRW1wdHlDb250ZW50KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVu
CiAgICAgICAgIH07CiAgICAgICAgIC8vIFNWRyBjb250ZW50IHRlbmRzIHRvIGhhdmUgYSBmaXhl
ZCBzaXplIGNvbnN0cnVjdC4gSG93ZXZlciB0aGlzIGlzIGtub3duIHRvIGJlIGluYWNjdXJhdGUg
aW4gY2VydGFpbiBjYXNlcyAoYm94LXNpemluZzogYm9yZGVyLWJveCkgb3IgZXNwZWNpYWxseSB3
aGVuIHRoZSBwYXJlbnQgYm94IGlzIG92ZXJzaXplZC4KICAgICAgICAgYXV0byBjYW5kaWRhdGVT
aXplID0gSW50U2l6ZSB7IH07Ci0gICAgICAgIGlmIChhdXRvIHNpemUgPSBmaXhlZFNpemUoY2hp
bGQpKQorICAgICAgICBpZiAoYXV0byBzaXplID0gZml4ZWRTaXplKGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KGNoaWxkKSkpCiAgICAgICAgICAgICBjYW5kaWRhdGVTaXplID0gKnNpemU7CiAgICAg
ICAgIGVsc2UgaWYgKGF1dG8gc2l6ZSA9IGZpeGVkU2l6ZShwYXJlbnQpKQogICAgICAgICAgICAg
Y2FuZGlkYXRlU2l6ZSA9ICpzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCmluZGV4IDg3Mzgy
NWNiYWJlOS4uZTdlYzk3YmVkMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyQmxvY2suY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6Omluc2VydENoaWxkVG9D
b250aW51YXRpb24oUmVuZGVyQmxvY2smIHBhcmVudCwgUmUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGJvb2wgY2hpbGRJc05vcm1hbCA9IGNoaWxkLT5pc0lubGluZSgpIHx8IGNoaWxk
LT5zdHlsZSgpLmNvbHVtblNwYW4oKSA9PSBDb2x1bW5TcGFuOjpOb25lOworICAgIGJvb2wgY2hp
bGRJc05vcm1hbCA9IGNoaWxkLT5pc0lubGluZSgpIHx8IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+
KCpjaGlsZCkuc3R5bGUoKS5jb2x1bW5TcGFuKCkgPT0gQ29sdW1uU3Bhbjo6Tm9uZTsKICAgICBi
b29sIGJjcElzTm9ybWFsID0gYmVmb3JlQ2hpbGRQYXJlbnQtPmlzSW5saW5lKCkgfHwgYmVmb3Jl
Q2hpbGRQYXJlbnQtPnN0eWxlKCkuY29sdW1uU3BhbigpID09IENvbHVtblNwYW46Ok5vbmU7CiAg
ICAgYm9vbCBmbG93SXNOb3JtYWwgPSBmbG93LT5pc0lubGluZSgpIHx8IGZsb3ctPnN0eWxlKCku
Y29sdW1uU3BhbigpID09IENvbHVtblNwYW46Ok5vbmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlck11
bHRpQ29sdW1uLmNwcAppbmRleCA5MDQ1YmRlYzYzMTMuLjQwMGRiZTZmOWNhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIFJlbmRlck9i
amVjdCogUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjpyZXNvbHZlTW92ZWRDaGlsZChS
ZW5kZXJGcmFnbWVudGVkCiAgICAgICAgIHJldHVybiBiZWZvcmVDaGlsZDsKIAogICAgIC8vIFdl
IG9ubHkgbmVlZCB0byByZXNvbHZlIGZvciBjb2x1bW4gc3Bhbm5lcnMuCi0gICAgaWYgKGJlZm9y
ZUNoaWxkLT5zdHlsZSgpLmNvbHVtblNwYW4oKSAhPSBDb2x1bW5TcGFuOjpBbGwpCisgICAgaWYg
KGJlZm9yZUNoaWxkUmVuZGVyQm94LT5zdHlsZSgpLmNvbHVtblNwYW4oKSAhPSBDb2x1bW5TcGFu
OjpBbGwpCiAgICAgICAgIHJldHVybiBiZWZvcmVDaGlsZDsKIAogICAgIC8vIFRoZSByZW5kZXJl
ciBmb3IgdGhlIGFjdHVhbCBET00gbm9kZSB0aGF0IGVzdGFibGlzaGVzIGEgc3Bhbm5lciBpcyBt
b3ZlZCBmcm9tIGl0cyBvcmlnaW5hbApAQCAtMjQ1LDYgKzI0NSw5IEBAIHZvaWQgUmVuZGVyVHJl
ZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjptdWx0aUNvbHVtbkRlc2NlbmRhbnRJbnNlcnRlZChSZW5k
ZXJNdWx0aUNvCiB2b2lkIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6bXVsdGlDb2x1
bW5SZWxhdGl2ZVdpbGxCZVJlbW92ZWQoUmVuZGVyTXVsdGlDb2x1bW5GbG93JiBmbG93LCBSZW5k
ZXJPYmplY3QmIHJlbGF0aXZlLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2FuQ29sbGFwc2VBbm9ueW1v
dXNCbG9jayBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrKQogewogICAgIGZsb3cuaW52YWxpZGF0
ZUZyYWdtZW50cygpOworICAgIGlmIChpczxSZW5kZXJUZXh0PihyZWxhdGl2ZSkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChhdXRvKiBwbGFjZWhvbGRlciA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlcj4ocmVsYXRpdmUpKSB7CiAgICAgICAg
IC8vIFJlbW92ZSB0aGUgbWFwIGVudHJ5IGZvciB0aGlzIHNwYW5uZXIsIGJ1dCBsZWF2ZSB0aGUg
YWN0dWFsIHNwYW5uZXIgcmVuZGVyZXIgYWxvbmUuIEFsc28KICAgICAgICAgLy8ga2VlcCB0aGUg
cmVmZXJlbmNlIHRvIHRoZSBzcGFubmVyLCBzaW5jZSB0aGUgcGxhY2Vob2xkZXIgbWF5IGJlIGFi
b3V0IHRvIGJlIHJlLWluc2VydGVkCkBAIC0yNTMsMTEgKzI1NiwxMSBAQCB2b2lkIFJlbmRlclRy
ZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6bXVsdGlDb2x1bW5SZWxhdGl2ZVdpbGxCZVJlbW92ZWQo
UmVuZGVyTXVsdAogICAgICAgICBmbG93LnNwYW5uZXJNYXAoKS5yZW1vdmUocGxhY2Vob2xkZXIt
PnNwYW5uZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHJlbGF0aXZlLnN0
eWxlKCkuY29sdW1uU3BhbigpID09IENvbHVtblNwYW46OkFsbCkgewotICAgICAgICBpZiAocmVs
YXRpdmUucGFyZW50KCkgIT0gZmxvdy5wYXJlbnQoKSkKKyAgICBpZiAoYXV0byogcmVuZGVyQm94
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4ocmVsYXRpdmUpOyByZW5kZXJCb3ggJiYgcmVu
ZGVyQm94LT5zdHlsZSgpLmNvbHVtblNwYW4oKSA9PSBDb2x1bW5TcGFuOjpBbGwpIHsKKyAgICAg
ICAgaWYgKHJlbmRlckJveC0+cGFyZW50KCkgIT0gZmxvdy5wYXJlbnQoKSkKICAgICAgICAgICAg
IHJldHVybjsgLy8gbm90IGEgdmFsaWQgc3Bhbm5lci4KIAotICAgICAgICBoYW5kbGVTcGFubmVy
UmVtb3ZhbChmbG93LCByZWxhdGl2ZSwgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CisgICAg
ICAgIGhhbmRsZVNwYW5uZXJSZW1vdmFsKGZsb3csICpyZW5kZXJCb3gsIGNhbkNvbGxhcHNlQW5v
bnltb3VzQmxvY2spOwogICAgIH0KICAgICAvLyBOb3RlIHRoYXQgd2UgbWlnaHQgZW5kIHVwIHdp
dGggZW1wdHkgY29sdW1uIHNldHMgaWYgYWxsIGNvbHVtbiBjb250ZW50IGlzIHJlbW92ZWQuIFRo
YXQncyBubwogICAgIC8vIGJpZyBkZWFsIHRob3VnaCAoYW5kIGxvY2F0aW5nIHRoZW0gd291bGQg
YmUgZXhwZW5zaXZlKSwgYW5kIHRoZXkgd2lsbCBiZSBmb3VuZCBhbmQgcmUtdXNlZCBpZgpAQCAt
NDQyLDEwICs0NDUsMTAgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlD
b2x1bW46OnByb2Nlc3NQb3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50KFIKICAgICByZXR1cm4gbmV4
dERlc2NlbmRhbnQ7CiB9CiAKLXZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjpo
YW5kbGVTcGFubmVyUmVtb3ZhbChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZsb3csIFJlbmRlck9i
amVjdCYgc3Bhbm5lciwgUmVuZGVyVHJlZUJ1aWxkZXI6OkNhbkNvbGxhcHNlQW5vbnltb3VzQmxv
Y2sgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jaykKK3ZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11
bHRpQ29sdW1uOjpoYW5kbGVTcGFubmVyUmVtb3ZhbChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZs
b3csIFJlbmRlckJveCYgc3Bhbm5lciwgUmVuZGVyVHJlZUJ1aWxkZXI6OkNhbkNvbGxhcHNlQW5v
bnltb3VzQmxvY2sgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jaykKIHsKICAgICAvLyBUaGUgcGxh
Y2Vob2xkZXIgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIHJlbW92ZWQsIGJ1dCBpZiBpdCBoYXNuJ3Qs
IGRvIHNvIG5vdy4KLSAgICBpZiAoYXV0byBwbGFjZWhvbGRlciA9IGZsb3cuc3Bhbm5lck1hcCgp
LnRha2UoJmRvd25jYXN0PFJlbmRlckJveD4oc3Bhbm5lcikpKQorICAgIGlmIChhdXRvIHBsYWNl
aG9sZGVyID0gZmxvdy5zcGFubmVyTWFwKCkudGFrZSgmc3Bhbm5lcikpCiAgICAgICAgIG1fYnVp
bGRlci5kZXN0cm95KCpwbGFjZWhvbGRlciwgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CiAK
ICAgICBpZiAoYXV0byogbmV4dCA9IHNwYW5uZXIubmV4dFNpYmxpbmcoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlck11bHRpQ29sdW1uLmgKaW5kZXggYjBkODAyYjc0ZTE0Li5kM2U0ZWY5MTRhM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlck11bHRpQ29sdW1uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY3JlYXRlRnJhZ21lbnRlZEZsb3coUmVuZGVyQmxvY2tGbG93Jik7CiAgICAg
dm9pZCBkZXN0cm95RnJhZ21lbnRlZEZsb3coUmVuZGVyQmxvY2tGbG93Jik7CiAgICAgUmVuZGVy
T2JqZWN0KiBwcm9jZXNzUG9zc2libGVTcGFubmVyRGVzY2VuZGFudChSZW5kZXJNdWx0aUNvbHVt
bkZsb3cmLCBSZW5kZXJPYmplY3QqJiBzdWJ0cmVlUm9vdCwgUmVuZGVyT2JqZWN0JiBkZXNjZW5k
YW50KTsKLSAgICB2b2lkIGhhbmRsZVNwYW5uZXJSZW1vdmFsKFJlbmRlck11bHRpQ29sdW1uRmxv
dyYsIFJlbmRlck9iamVjdCYgc3Bhbm5lciwgUmVuZGVyVHJlZUJ1aWxkZXI6OkNhbkNvbGxhcHNl
QW5vbnltb3VzQmxvY2spOworICAgIHZvaWQgaGFuZGxlU3Bhbm5lclJlbW92YWwoUmVuZGVyTXVs
dGlDb2x1bW5GbG93JiwgUmVuZGVyQm94JiBzcGFubmVyLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2Fu
Q29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CiAKICAgICBSZW5kZXJUcmVlQnVpbGRlciYgbV9idWls
ZGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHAKaW5kZXggNDg0MjljY2JjYjIyLi4wNTYxZjBj
NGU5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlclJ1YnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlQW5vbnltb3VzUmVuZGVyZXJGb3JSdWJ5KFJl
bmRlckVsZW1lbnQmIHBhCiAgICAgcmV0dXJuIHJ1Ynk7CiB9CiAKLVJlbmRlckVsZW1lbnQmIFJl
bmRlclRyZWVCdWlsZGVyOjpSdWJ5OjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVi
eUNoaWxkKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgY29uc3QgUmVuZGVyT2JqZWN0JiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiYgYmVmb3JlQ2hpbGQpCitSZW5kZXJFbGVtZW50JiBSZW5kZXJUcmVlQnVp
bGRlcjo6UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZChSZW5k
ZXJFbGVtZW50JiBwYXJlbnQsIGNvbnN0IFJlbmRlckVsZW1lbnQmIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqJiBiZWZvcmVDaGlsZCkKIHsKICAgICBSZW5kZXJFbGVtZW50KiBiZWZvcmVDaGlsZEFuY2Vz
dG9yID0gJnBhcmVudDsKICAgICBpZiAoYXV0byogcnVieUlubGluZSA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJJbmxpbmU+KHBhcmVudCk7IHJ1YnlJbmxpbmUgJiYgcnVieUlubGluZS0+Y29udGlu
dWF0aW9uKCkpCkBAIC03MCw3ICs3MCw3IEBAIFJlbmRlckVsZW1lbnQmIFJlbmRlclRyZWVCdWls
ZGVyOjpSdWJ5OjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVieUNoaWxkCiAgICAg
ZWxzZSBpZiAoYXV0byogcnVieUJsb2NrID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJsb2NrPihw
YXJlbnQpOyBydWJ5QmxvY2sgJiYgcnVieUJsb2NrLT5jb250aW51YXRpb24oKSkKICAgICAgICAg
YmVmb3JlQ2hpbGRBbmNlc3RvciA9IFJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6Y29udGludWF0
aW9uQmVmb3JlKCpydWJ5QmxvY2ssIGJlZm9yZUNoaWxkKTsKIAotICAgIGlmICghY2hpbGQuaXNS
ZW5kZXJUZXh0KCkgJiYgY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlJ1
YnkgJiYgYmVmb3JlQ2hpbGRBbmNlc3Rvci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5
cGU6OlJ1YnlCbG9jaykKKyAgICBpZiAoY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OlJ1YnkgJiYgYmVmb3JlQ2hpbGRBbmNlc3Rvci0+c3R5bGUoKS5kaXNwbGF5KCkgPT0g
RGlzcGxheVR5cGU6OlJ1YnlCbG9jaykKICAgICAgICAgcmV0dXJuICpiZWZvcmVDaGlsZEFuY2Vz
dG9yOwogCiAgICAgaWYgKGJlZm9yZUNoaWxkQW5jZXN0b3ItPnN0eWxlKCkuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpSdWJ5QmxvY2spIHsKQEAgLTk1LDcgKzk1LDcgQEAgUmVuZGVyRWxlbWVu
dCYgUmVuZGVyVHJlZUJ1aWxkZXI6OlJ1Ynk6OmZpbmRPckNyZWF0ZVBhcmVudEZvclN0eWxlQmFz
ZWRSdWJ5Q2hpbGQKICAgICAgICAgcmV0dXJuICpuZXdQYXJlbnQ7CiAgICAgfQogCi0gICAgaWYg
KCFjaGlsZC5pc1JlbmRlclRleHQoKSAmJiAoY2hpbGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6OlJ1YnlCYXNlIHx8IGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpSdWJ5QW5ub3RhdGlvbikpCisgICAgaWYgKGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpID09
IERpc3BsYXlUeXBlOjpSdWJ5QmFzZSB8fCBjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6UnVieUFubm90YXRpb24pCiAgICAgICAgIHJldHVybiAqYmVmb3JlQ2hpbGRBbmNl
c3RvcjsKIAogICAgIGlmIChiZWZvcmVDaGlsZCAmJiBiZWZvcmVDaGlsZC0+cGFyZW50KCktPnN0
eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpSdWJ5QmFzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1Ynku
aAppbmRleCA3MWExNWNmM2VjNjUuLjU5NjViZjkyODU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuaApA
QCAtMzksNyArMzksNyBAQCBjbGFzcyBSZW5kZXJUcmVlQnVpbGRlcjo6UnVieSB7CiBwdWJsaWM6
CiAgICAgUnVieShSZW5kZXJUcmVlQnVpbGRlciYpOwogCi0gICAgUmVuZGVyRWxlbWVudCYgZmlu
ZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZChSZW5kZXJFbGVtZW50JiBwYXJl
bnQsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGQsIFJlbmRlck9iamVjdComIGJlZm9yZUNoaWxk
KTsKKyAgICBSZW5kZXJFbGVtZW50JiBmaW5kT3JDcmVhdGVQYXJlbnRGb3JTdHlsZUJhc2VkUnVi
eUNoaWxkKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgY29uc3QgUmVuZGVyRWxlbWVudCYgY2hpbGQs
IFJlbmRlck9iamVjdComIGJlZm9yZUNoaWxkKTsKICAgICB2b2lkIGF0dGFjaEZvclN0eWxlQmFz
ZWRSdWJ5KFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFibGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
VGFibGUuY3BwCmluZGV4IGM3NWI2ZDhhMWI4ZS4uYWEwY2FlMTVhMTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJUYWJsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVyVGFibGUuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgUmVuZGVyRWxlbWVudCYgUmVuZGVyVHJl
ZUJ1aWxkZXI6OlRhYmxlOjpmaW5kT3JDcmVhdGVQYXJlbnRGb3JDaGlsZChSZW5kZXJUYWJsZSYK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8qIHBhcmVudENhbmRpZGF0ZSA9IGJlZm9yZUNo
aWxkOworICAgIGF1dG8qIHBhcmVudENhbmRpZGF0ZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJF
bGVtZW50PihiZWZvcmVDaGlsZCk7CiAgICAgd2hpbGUgKHBhcmVudENhbmRpZGF0ZSAmJiBwYXJl
bnRDYW5kaWRhdGUtPnBhcmVudCgpLT5pc0Fub255bW91cygpCiAgICAgICAgICYmICFpczxSZW5k
ZXJUYWJsZVNlY3Rpb24+KCpwYXJlbnRDYW5kaWRhdGUpCiAgICAgICAgICYmIHBhcmVudENhbmRp
ZGF0ZS0+c3R5bGUoKS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5k
ZXggMGIxMDYxYzA1YTdkLi5lMzUxZDg4NTJmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtNTUsNyArNTUsOCBAQAogI2lt
cG9ydCA8V2ViQ29yZS9SZW5kZXJCbG9jay5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJCbG9j
a0Zsb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyQm94Lmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L1JlbmRlck9iamVjdElubGluZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJFbGVtZW50SW5saW5lcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJUZXh0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JvdW5kZWRSZWN0Lmg+CkBAIC0yNTgsMTQgKzI1OSwxMyBA
QCBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVu
c2lvbnMpCiAtIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24KIHsKICAgICBp
bnQgcmVzdWx0ID0gMDsKLSAgICBSZW5kZXJPYmplY3QgKiByZW5kZXJlciA9IGNvcmUoc2VsZikt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyKSB7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAocmVuZGVyZXItPmlzRmxv
YXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fAogICAgICAgICAgICAgcmVuZGVyZXItPmlz
UmVuZGVyV2lkZ2V0KCkpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IElOVF9NQVg7Ci0gICAgICAg
IH0gZWxzZSBpZiAoIXJlbmRlcmVyLT5maXJzdENoaWxkU2xvdygpKSB7CisgICAgICAgIH0gZWxz
ZSBpZiAoIXJlbmRlcmVyLT5maXJzdENoaWxkKCkpCiAgICAgICAgICAgICByZXN1bHQgPSAwOwot
ICAgICAgICB9IGVsc2UgaWYgKGlzPFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVy
KSB8fCAoaXM8UmVuZGVyQmxvY2s+KCpyZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KCpyZW5kZXJlcikuaW5saW5lQ29udGludWF0aW9uKCkpKSB7CisgICAgICAgIGVsc2UgaWYgKGlz
PFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKSB8fCAoaXM8UmVuZGVyQmxvY2s+
KCpyZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpyZW5kZXJlcikuaW5saW5lQ29u
dGludWF0aW9uKCkpKSB7CiAgICAgICAgICAgICBCT09MIG5vQ29zdCA9IE5POwogICAgICAgICAg
ICAgaWYgKGF1dG8gcmVuZGVyQm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKnJlbmRl
cmVyKSkgewogICAgICAgICAgICAgICAgIGF1dG8qIHBhcmVudFJlbmRlckJveCA9IGR5bmFtaWNE
b3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlckJveC0+cGFyZW50KCkpOwpAQCAtMjczLDkgKzI3Myw4
IEBAIC0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlvbgogICAgICAgICAgICAg
ICAgICAgICBub0Nvc3QgPSBZRVM7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQg
PSAobm9Db3N0ID8gMCA6IDEpOwotICAgICAgICB9IGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RyYW5z
Zm9ybWVkKCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+aXNUcmFuc2Zvcm1lZCgp
KQogICAgICAgICAgICAgcmVzdWx0ID0gSU5UX01BWDsKLSAgICAgICAgfQogICAgIH0KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>474693</attachid>
            <date>2025-03-22 18:21:38 -0700</date>
            <delta_ts>2025-03-24 05:37:52 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-290262-20250322182138.patch</filename>
            <type>text/plain</type>
            <size>37470</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA3MTQ4MjdmZTIwNmJkZjg2YTY1Yjg2MzhkYjRhOWI3ZDA3OTUzOGM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjIgTWFyIDIwMjUgMTE6MjU6MzYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbQ2xlYW51
cF0gTW92ZSBmdW5jdGlvbnMgZnJvbSBSZW5kZXJPYmplY3QgdG8gUmVuZGVyRWxlbWVudAogKGNv
bnQuLi4pIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTAyNjIKClJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBpcyBhIGJpdCBvZiBhIG1peCBvZiBtb3Zl
IGFuZCB1c2UgUmVuZGVyRWxlbWVudCB3aGVyZSBhcHBsaWNhYmxlLgoKKiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVzLmg6CihXZWJDb3JlOjpMZWdh
Y3lJbmxpbmVJdGVyYXRvcjo6YXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yIGNvbnN0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIgY29uc3QpOgooV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJFbGVtZW50OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OnB1c2hPbnRvVHJhbnNmb3JtU3RhdGUgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmg6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmlzQXRvbWlj
SW5saW5lTGV2ZWxCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
ZW9tZXRyeU1hcC5jcHA6CihXZWJDb3JlOjpjYW5NYXBCZXR3ZWVuUmVuZGVyZXJzVmlhTGF5ZXJz
KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lciBjb25zdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmdldFRyYW5zZm9ybUZyb21Db250YWluZXIg
Y29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpwdXNoT250b1RyYW5zZm9y
bVN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6b2Zmc2V0RnJv
bUFuY2VzdG9yQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9y
bVJlbGF0ZWRQcm9wZXJ0eSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdElubGluZXMuaDoKKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aGFzVHJhbnNmb3JtT3JQ
ZXJzcGVjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzQXRv
bWljSW5saW5lTGV2ZWxCb3ggY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojppc1RyYW5zZm9ybWVkIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
cHJlc2VydmVzTmV3bGluZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaDoKKFdlYkNvcmU6OnNob3VsZENvbGxhcHNlV2hp
dGVTcGFjZSk6CihXZWJDb3JlOjpyZXF1aXJlc0xpbmVCb3gpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHA6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6OlJl
bmRlclRyZWVCdWlsZGVyOjphdHRhY2hJbnRlcm5hbCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6YXR0YWNoVG9SZW5kZXJFbGVtZW50SW50ZXJuYWwpOgooV2ViQ29yZTo6UmVuZGVyVHJl
ZUJ1aWxkZXI6OnJlbW92ZUFub255bW91c1dyYXBwZXJzRm9ySW5saW5lQ2hpbGRyZW5JZk5lZWRl
ZCk6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6cmVwb3J0VmlzdWFsbHlOb25FbXB0eUNv
bnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlckJsb2NrLmNwcDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6aW5zZXJ0
Q2hpbGRUb0NvbnRpbnVhdGlvbik6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwOgooV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6Ok11bHRpQ29sdW1uOjpyZXNvbHZlTW92ZWRDaGlsZCk6CihXZWJDb3JlOjpSZW5kZXJU
cmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46Om11bHRpQ29sdW1uUmVsYXRpdmVXaWxsQmVSZW1vdmVk
KToKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6aGFuZGxlU3Bhbm5l
clJlbW92YWwpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlck11bHRpQ29sdW1uLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyUnVieS5jcHA6CihXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6
UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZCk6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVieS5oOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRhYmxlLmNw
cDoKKFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50
Rm9yQ2hpbGQpOgotLS0KIC4uLi9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3JJbmxpbmVz
LmggICB8ICA1ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
ICAgfCA3NiArKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oICAgICAgfCAgOSArKysKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50SW5saW5lcy5oICB8ICAzICsKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5jcHAgICB8ICAzICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCAgICAgfCA3NCAtLS0tLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCAgICAgICB8IDExIC0tLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdElubGluZXMuaCAgIHwgIDUgLS0KIC4uLi9yZW5kZXJpbmcvbGluZS9MaW5l
SW5saW5lSGVhZGVycy5oICAgICAgICB8IDEyICstLQogLi4uL3N2Zy9TVkdCb3VuZGluZ0JveENv
bXB1dGF0aW9uLmNwcCAgICAgICAgIHwgIDIgKy0KIC4uLi9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwICB8ICA2ICstCiAuLi4vdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJCbG9jay5jcHAgICAgICAgfCAgMiArLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uY3BwIHwgMTUgKystLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
TXVsdGlDb2x1bW4uaCAgIHwgIDIgKy0KIC4uLi91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1
YnkuY3BwICAgICAgICB8IDExICsrLQogLi4uL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFi
bGUuY3BwICAgICAgIHwgIDIgKy0KIC4uLi9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSAg
ICAgICAgICAgICB8IDEzICsrLS0KIDE3IGZpbGVzIGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCsp
LCAxMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeUlubGluZUl0ZXJhdG9ySW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xlZ2FjeUlubGluZUl0ZXJhdG9ySW5saW5lcy5oCmluZGV4IDEyZDlmNWYwMTE0OS4uYTVhMGZj
ZDY5MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5l
SXRlcmF0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlu
bGluZUl0ZXJhdG9ySW5saW5lcy5oCkBAIC0yNiwxMCArMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGlubGluZSBib29sIExlZ2FjeUlubGluZUl0ZXJhdG9yOjphdFRleHRQYXJhZ3JhcGhT
ZXBhcmF0b3IoKSBjb25zdAogewotICAgIGF1dG8qIHRleHRSZW5kZXJlciA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJUZXh0PihtX3JlbmRlcmVyKTsKLSAgICByZXR1cm4gdGV4dFJlbmRlcmVyCi0g
ICAgICAgICYmIG1fcmVuZGVyZXItPnByZXNlcnZlc05ld2xpbmUoKQotICAgICAgICAmJiB0ZXh0
UmVuZGVyZXItPmNoYXJhY3RlckF0KG1fcG9zKSA9PSAnXG4nOworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogaW5saW5lIGJvb2wgTGVnYWN5SW5saW5lSXRlcmF0b3I6OmF0UGFyYWdyYXBoU2VwYXJh
dG9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApp
bmRleCA3NThhZDI2NmQxZjQuLjgxZjNiMTYxNWNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjE4NCw2ICsyMTg0LDI4IEBAIGJvb2wgUmVuZGVy
RWxlbWVudDo6aGFzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBsYXllck1v
ZGVsT2JqZWN0Lmhhc1NlbGZQYWludGluZ0xheWVyKCk7CiB9CiAKK0xheW91dFNpemUgUmVuZGVy
RWxlbWVudDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQm
IGNvbnRhaW5lcikgY29uc3QKK3sKKyAgICBMYXlvdXRTaXplIG9mZnNldDsKKyAgICBMYXlvdXRQ
b2ludCByZWZlcmVuY2VQb2ludDsKKyAgICBDaGVja2VkUHRyIGN1cnJlbnRDb250YWluZXIgPSB0
aGlzOworICAgIGRvIHsKKyAgICAgICAgQ2hlY2tlZFB0ciBuZXh0Q29udGFpbmVyID0gY3VycmVu
dENvbnRhaW5lci0+Y29udGFpbmVyKCk7CisgICAgICAgIEFTU0VSVChuZXh0Q29udGFpbmVyKTsK
KyAgICAgICAgaWYgKCFuZXh0Q29udGFpbmVyKSB7CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5z
IHdlIHJlYWNoZWQgdGhlIHRvcCB3aXRob3V0IGZpbmRpbmcgY29udGFpbmVyLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFjdXJyZW50Q29udGFpbmVyLT5p
c1RyYW5zZm9ybWVkKCkpOworICAgICAgICBMYXlvdXRTaXplIGN1cnJlbnRPZmZzZXQgPSBjdXJy
ZW50Q29udGFpbmVyLT5vZmZzZXRGcm9tQ29udGFpbmVyKCpuZXh0Q29udGFpbmVyLCByZWZlcmVu
Y2VQb2ludCk7CisgICAgICAgIG9mZnNldCArPSBjdXJyZW50T2Zmc2V0OworICAgICAgICByZWZl
cmVuY2VQb2ludC5tb3ZlKGN1cnJlbnRPZmZzZXQpOworICAgICAgICBjdXJyZW50Q29udGFpbmVy
ID0gV1RGTW92ZShuZXh0Q29udGFpbmVyKTsKKyAgICB9IHdoaWxlIChjdXJyZW50Q29udGFpbmVy
ICE9ICZjb250YWluZXIpOworCisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogdm9pZCBSZW5kZXJF
bGVtZW50OjpwdXNoT250b0dlb21ldHJ5TWFwKFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1h
cCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgUmVuZGVy
RWxlbWVudCogY29udGFpbmVyLCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0CiB7CiAgICAg
Ym9vbCBpc0ZpeGVkUG9zID0gaXNGaXhlZFBvc2l0aW9uZWQoKTsKQEAgLTI3MTAsNCArMjczMiw1
OCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmxheW91dElmTmVlZGVkKCkKICAgICBsYXlvdXQoKTsK
IH0KIAorYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lck9iamVjdCkgY29uc3QKK3sKKyAgICBpZiAo
aXNUcmFuc2Zvcm1lZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaGFzTGF5ZXIo
KSAmJiBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKS0+c25h
cHNob3R0ZWRTY3JvbGxPZmZzZXRGb3JBbmNob3JQb3NpdGlvbmluZygpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoY29udGFpbmVyT2JqZWN0ICYmIGNvbnRhaW5lck9iamVjdC0+c3R5
bGUoKS5oYXNQZXJzcGVjdGl2ZSgpKQorICAgICAgICByZXR1cm4gY29udGFpbmVyT2JqZWN0ID09
IHBhcmVudCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gRklYTUU6IE5vdyB0aGF0IGl0
J3Mgbm8gbG9uZ2VyIHBhc3NlZCBhIGNvbnRhaW5lciBtYXliZSB0aGlzIHNob3VsZCBiZSByZW5h
bWVkPwordm9pZCBSZW5kZXJFbGVtZW50OjpnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0
IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtKSBjb25zdAoreworICAgIHRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKKyAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKG9mZnNldEluQ29udGFpbmVyLndpZHRoKCksIG9mZnNldEluQ29udGFp
bmVyLmhlaWdodCgpKTsKKyAgICBDaGVja2VkUHRyPFJlbmRlckxheWVyPiBsYXllcjsKKyAgICBp
ZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0
PigqdGhpcykubGF5ZXIoKSkgJiYgbGF5ZXItPnRyYW5zZm9ybSgpKQorICAgICAgICB0cmFuc2Zv
cm0ubXVsdGlwbHkobGF5ZXItPmN1cnJlbnRUcmFuc2Zvcm0oKSk7CisKKyAgICBDaGVja2VkUHRy
IHBlcnNwZWN0aXZlT2JqZWN0ID0gcGFyZW50KCk7CisKKyAgICBpZiAocGVyc3BlY3RpdmVPYmpl
Y3QgJiYgcGVyc3BlY3RpdmVPYmplY3QtPmhhc0xheWVyKCkgJiYgcGVyc3BlY3RpdmVPYmplY3Qt
PnN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkgeworICAgICAgICAvLyBQZXJwc2VjdGl2ZSBvbiB0
aGUgY29udGFpbmVyIGFmZmVjdHMgdXMsIHNvIHdlIGhhdmUgdG8gZmFjdG9yIGl0IGluIGhlcmUu
CisgICAgICAgIEFTU0VSVChwZXJzcGVjdGl2ZU9iamVjdC0+aGFzTGF5ZXIoKSk7CisgICAgICAg
IEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4gPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVs
T2JqZWN0PigqcGVyc3BlY3RpdmVPYmplY3QpLmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7
CisKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CisgICAg
ICAgIHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVPYmplY3Qt
PnN0eWxlKCkudXNlZFBlcnNwZWN0aXZlKCkpOworCisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xh
dGVSaWdodDNkKC1wZXJzcGVjdGl2ZU9yaWdpbi54KCksIC1wZXJzcGVjdGl2ZU9yaWdpbi55KCks
IDApOworICAgICAgICB0cmFuc2Zvcm0gPSBwZXJzcGVjdGl2ZU1hdHJpeCAqIHRyYW5zZm9ybTsK
KyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QocGVyc3BlY3RpdmVPcmlnaW4ueCgp
LCBwZXJzcGVjdGl2ZU9yaWdpbi55KCksIDApOworICAgIH0KK30KKwordm9pZCBSZW5kZXJFbGVt
ZW50OjpwdXNoT250b1RyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0
ZSwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4gbW9kZSwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgUmVuZGVyRWxlbWVudCogY29udGFp
bmVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRJbkNvbnRhaW5lciwgYm9vbCBjb250YWluZXJT
a2lwcGVkKSBjb25zdAoreworICAgIGJvb2wgcHJlc2VydmUzRCA9IG1vZGUuY29udGFpbnMoVXNl
VHJhbnNmb3JtcykgJiYgcGFydGljaXBhdGVzSW5QcmVzZXJ2ZTNEKCk7CisgICAgaWYgKG1vZGUu
Y29udGFpbnMoVXNlVHJhbnNmb3JtcykgJiYgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5l
cihjb250YWluZXIpKSB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAg
ICAgICAgZ2V0VHJhbnNmb3JtRnJvbUNvbnRhaW5lcihvZmZzZXRJbkNvbnRhaW5lciwgbWF0cml4
KTsKKyAgICAgICAgdHJhbnNmb3JtU3RhdGUuYXBwbHlUcmFuc2Zvcm0obWF0cml4LCBwcmVzZXJ2
ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0
ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAgfSBlbHNlCisgICAgICAgIHRyYW5zZm9ybVN0YXRl
Lm1vdmUob2Zmc2V0SW5Db250YWluZXIud2lkdGgoKSwgb2Zmc2V0SW5Db250YWluZXIuaGVpZ2h0
KCksIHByZXNlcnZlM0QgPyBUcmFuc2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSA6IFRy
YW5zZm9ybVN0YXRlOjpGbGF0dGVuVHJhbnNmb3JtKTsKKworICAgIGlmIChjb250YWluZXJTa2lw
cGVkKSB7CisgICAgICAgIC8vIFRoZXJlIGNhbid0IGJlIGEgdHJhbnNmb3JtIGJldHdlZW4gcmVw
YWludENvbnRhaW5lciBhbmQgY29udGFpbmVyLCBiZWNhdXNlIHRyYW5zZm9ybXMgY3JlYXRlIGNv
bnRhaW5lcnMsIHNvIGl0IHNob3VsZCBiZSBzYWZlCisgICAgICAgIC8vIHRvIGp1c3Qgc3VidHJh
Y3QgdGhlIGRlbHRhIGJldHdlZW4gdGhlIHJlcGFpbnRDb250YWluZXIgYW5kIGNvbnRhaW5lci4K
KyAgICAgICAgTGF5b3V0U2l6ZSBjb250YWluZXJPZmZzZXQgPSByZXBhaW50Q29udGFpbmVyLT5v
ZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoKmNvbnRhaW5lcik7CisgICAgICAgIHRyYW5zZm9y
bVN0YXRlLm1vdmUoLWNvbnRhaW5lck9mZnNldC53aWR0aCgpLCAtY29udGFpbmVyT2Zmc2V0Lmhl
aWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0g
OiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRlblRyYW5zZm9ybSk7CisgICAgfQorfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiOTUxZDE3OTI0ODAuLjQ4
NGNhZjFlMTEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBA
IC0yNjgsNiArMjY4LDcgQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9j
c3MtdHJhbnNmb3Jtcy0xLyN0cmFuc2Zvcm0tYm94CiAgICAgaW5saW5lIEZsb2F0UmVjdCB0cmFu
c2Zvcm1SZWZlcmVuY2VCb3hSZWN0KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAgICAgaW5s
aW5lIEZsb2F0UmVjdCB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkgY29uc3Q7CisgICAgaW5s
aW5lIGJvb2wgaXNUcmFuc2Zvcm1lZCgpIGNvbnN0OwogCiAgICAgLy8gaHR0cHM6Ly93d3cudzMu
b3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTEvI3JlZmVyZW5jZS1ib3gKICAgICB2aXJ0dWFsIEZsb2F0
UmVjdCByZWZlcmVuY2VCb3hSZWN0KENTU0JveFR5cGUpIGNvbnN0OwpAQCAtMzExLDYgKzMxMiw3
IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgYm9vbCBpc0Jsb2NrQm94KCkgY29uc3Q7CiAgICAgaW5s
aW5lIGJvb2wgaXNCbG9ja0xldmVsQm94KCkgY29uc3Q7CiAgICAgaW5saW5lIGJvb2wgaXNCbG9j
a0NvbnRhaW5lcigpIGNvbnN0OworICAgIGlubGluZSBib29sIGlzQXRvbWljSW5saW5lTGV2ZWxC
b3goKSBjb25zdDsKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvZmZzZXRQYXJlbnQoKSBj
b25zdDsKICAgICAvLyBQdXNoZXMgc3RhdGUgb250byBSZW5kZXJHZW9tZXRyeU1hcCBhYm91dCBo
b3cgdG8gbWFwIGNvb3JkaW5hdGVzIGZyb20gdGhpcyByZW5kZXJlciB0byBpdHMgY29udGFpbmVy
LCBvciBhbmNlc3RvclRvU3RvcEF0ICh3aGljaGV2ZXIgaXMgZW5jb3VudGVyZWQgZmlyc3QpLgpA
QCAtMzM0LDYgKzMzNiwxMyBAQCBwdWJsaWM6CiAKICAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCkud3JpdGluZ01vZGUoKTsgfQogCisgICAgYm9vbCBz
aG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRh
aW5lcikgY29uc3Q7CisgICAgdm9pZCBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExh
eW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0
OworICAgIHZvaWQgcHVzaE9udG9UcmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlv
blNldDxNYXBDb29yZGluYXRlc01vZGU+LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBjb25zdCBSZW5kZXJFbGVtZW50KiBjb250YWluZXIsIGNvbnN0IExh
eW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0
OworCisgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhlIGNvbnRh
aW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVj
dHMgaGF2ZSB0cmFuc2Zvcm1zLgorICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFJl
bmRlckVsZW1lbnQoVHlwZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxUeXBl
RmxhZz4sIFR5cGVTcGVjaWZpY0ZsYWdzKTsKICAgICBSZW5kZXJFbGVtZW50KFR5cGUsIERvY3Vt
ZW50JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVGbGFnPiwgVHlwZVNwZWNpZmljRmxh
Z3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJ
bmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudElubGluZXMu
aAppbmRleCAxN2EzMDBhYjJhZWQuLjFhOTVmMjY5YTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnRJbmxpbmVzLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAog
I2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVz
LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMzgsNiArMzksNyBAQCBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNNYXNr
KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNNYXNrKCk7IH0KIGlubGluZSBib29sIFJlbmRl
ckVsZW1lbnQ6Omhhc091dGxpbmUoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLmhhc091dGxpbmUo
KSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpOyB9CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50
OjpoYXNTaGFwZU91dHNpZGUoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLnNoYXBlT3V0c2lkZSgp
OyB9CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50Ojppc1RyYW5zcGFyZW50KCkgY29uc3QgeyBy
ZXR1cm4gc3R5bGUoKS5oYXNPcGFjaXR5KCk7IH0KK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6
OmlzVHJhbnNmb3JtZWQoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVy
dHkoKSAmJiAoc3R5bGUoKS5hZmZlY3RzVHJhbnNmb3JtKCkgfHwgaGFzU1ZHVHJhbnNmb3JtKCkp
OyB9CiBpbmxpbmUgZmxvYXQgUmVuZGVyRWxlbWVudDo6b3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IHN0eWxlKCkub3BhY2l0eSgpOyB9CiBpbmxpbmUgRmxvYXRSZWN0IFJlbmRlckVsZW1lbnQ6OnRy
YW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSBjb25zdCB7IHJldHVybiB0cmFuc2Zvcm1SZWZlcmVu
Y2VCb3hSZWN0KHN0eWxlKCkpOyB9CiBpbmxpbmUgRmxvYXRSZWN0IFJlbmRlckVsZW1lbnQ6OnRy
YW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdCB7
IHJldHVybiByZWZlcmVuY2VCb3hSZWN0KHRyYW5zZm9ybUJveFRvQ1NTQm94VHlwZShzdHlsZS50
cmFuc2Zvcm1Cb3goKSkpOyB9CkBAIC00Nyw2ICs0OSw3IEBAIGlubGluZSBib29sIFJlbmRlckVs
ZW1lbnQ6Omhhc0FwcGxlVmlzdWFsRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNB
cHBsCiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpoYXNBcHBsZVZpc3VhbEVmZmVjdFJlcXVp
cmluZ0JhY2tkcm9wRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5oYXNBcHBsZVZpc3Vh
bEVmZmVjdFJlcXVpcmluZ0JhY2tkcm9wRmlsdGVyKCk7IH0KICNlbmRpZgogCitpbmxpbmUgYm9v
bCBSZW5kZXJFbGVtZW50Ojppc0F0b21pY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4g
c3R5bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBlKCkgJiYgIShzdHlsZSgpLmRpc3BsYXkoKSA9PSBE
aXNwbGF5VHlwZTo6SW5saW5lICYmICFpc1JlcGxhY2VkT3JBdG9taWNJbmxpbmUoKSk7IH0KIGlu
bGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmlzQmxvY2tMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJu
IHN0eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpOyB9CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVt
ZW50Ojppc0Fub255bW91c0Jsb2NrKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IDNiOGZmMTQxYTIyNi4uNGY4ZDA1OTE0
YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5j
cHAKQEAgLTE1Miw3ICsxNTIsOCBAQCBzdGF0aWMgYm9vbCBjYW5NYXBCZXR3ZWVuUmVuZGVyZXJz
VmlhTGF5ZXJzKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcgogICAgICAgICBp
ZiAoY3VycmVudC0+aXNGaXhlZFBvc2l0aW9uZWQoKSB8fCBzdHlsZS53cml0aW5nTW9kZSgpLmlz
QmxvY2tGbGlwcGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYg
KGN1cnJlbnQtPmhhc1RyYW5zZm9ybU9yUGVyc3BlY3RpdmUoKSkKKyAgICAgICAgYXV0byBoYXNU
cmFuc2Zvcm1PclBlcnNwZWN0aXZlID0gY3VycmVudC0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3Bl
cnR5KCkgJiYgKGN1cnJlbnQtPmlzVHJhbnNmb3JtZWQoKSB8fCBjdXJyZW50LT5zdHlsZSgpLmhh
c1BlcnNwZWN0aXZlKCkpOworICAgICAgICBpZiAoaGFzVHJhbnNmb3JtT3JQZXJzcGVjdGl2ZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGlmIChjdXJyZW50
LT5pc1JlbmRlckZyYWdtZW50ZWRGbG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCmluZGV4IDBiM2UwMDdkOWViYy4uMDRiOTI2ZmM1M2I5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTU0MCw2MCArMTU0MCw2IEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChPcHRpb25TZXQ8TWFw
Q29vcmRpbmF0ZXNNb2RlPiBtb2RlLCBUCiAgICAgfQogfQogCi1ib29sIFJlbmRlck9iamVjdDo6
c2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJFbGVtZW50KiBjb250
YWluZXJPYmplY3QpIGNvbnN0Ci17Ci0gICAgaWYgKGlzVHJhbnNmb3JtZWQoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKGhhc0xheWVyKCkgJiYgZG93bmNhc3Q8UmVuZGVyTGF5ZXJN
b2RlbE9iamVjdD4oKnRoaXMpLmxheWVyKCktPnNuYXBzaG90dGVkU2Nyb2xsT2Zmc2V0Rm9yQW5j
aG9yUG9zaXRpb25pbmcoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGNvbnRhaW5l
ck9iamVjdCAmJiBjb250YWluZXJPYmplY3QtPnN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkKLSAg
ICAgICAgcmV0dXJuIGNvbnRhaW5lck9iamVjdCA9PSBwYXJlbnQoKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLS8vIEZJWE1FOiBOb3cgdGhhdCBpdCdzIG5vIGxvbmdlciBwYXNzZWQgYSBjb250
YWluZXIgbWF5YmUgdGhpcyBzaG91bGQgYmUgcmVuYW1lZD8KLXZvaWQgUmVuZGVyT2JqZWN0Ojpn
ZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFp
bmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKSBjb25zdAotewotICAgIHRyYW5z
Zm9ybS5tYWtlSWRlbnRpdHkoKTsKLSAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9mZnNldEluQ29u
dGFpbmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpKTsKLSAgICBDaGVja2Vk
UHRyPFJlbmRlckxheWVyPiBsYXllcjsKLSAgICBpZiAoaGFzTGF5ZXIoKSAmJiAobGF5ZXIgPSBk
b3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKSkgJiYgbGF5ZXIt
PnRyYW5zZm9ybSgpKQotICAgICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobGF5ZXItPmN1cnJlbnRU
cmFuc2Zvcm0oKSk7Ci0KLSAgICBDaGVja2VkUHRyIHBlcnNwZWN0aXZlT2JqZWN0ID0gcGFyZW50
KCk7Ci0KLSAgICBpZiAocGVyc3BlY3RpdmVPYmplY3QgJiYgcGVyc3BlY3RpdmVPYmplY3QtPmhh
c0xheWVyKCkgJiYgcGVyc3BlY3RpdmVPYmplY3QtPnN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSkg
ewotICAgICAgICAvLyBQZXJwc2VjdGl2ZSBvbiB0aGUgY29udGFpbmVyIGFmZmVjdHMgdXMsIHNv
IHdlIGhhdmUgdG8gZmFjdG9yIGl0IGluIGhlcmUuCi0gICAgICAgIEFTU0VSVChwZXJzcGVjdGl2
ZU9iamVjdC0+aGFzTGF5ZXIoKSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgcGVyc3BlY3RpdmVPcmln
aW4gPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqcGVyc3BlY3RpdmVPYmplY3Qp
LmxheWVyKCktPnBlcnNwZWN0aXZlT3JpZ2luKCk7Ci0KLSAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7Ci0gICAgICAgIHBlcnNwZWN0aXZlTWF0cml4LmFwcGx5
UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVPYmplY3QtPnN0eWxlKCkudXNlZFBlcnNwZWN0aXZlKCkp
OwotICAgICAgICAKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZVJpZ2h0M2QoLXBlcnNwZWN0
aXZlT3JpZ2luLngoKSwgLXBlcnNwZWN0aXZlT3JpZ2luLnkoKSwgMCk7Ci0gICAgICAgIHRyYW5z
Zm9ybSA9IHBlcnNwZWN0aXZlTWF0cml4ICogdHJhbnNmb3JtOwotICAgICAgICB0cmFuc2Zvcm0u
dHJhbnNsYXRlUmlnaHQzZChwZXJzcGVjdGl2ZU9yaWdpbi54KCksIHBlcnNwZWN0aXZlT3JpZ2lu
LnkoKSwgMCk7Ci0gICAgfQotfQotCi12b2lkIFJlbmRlck9iamVjdDo6cHVzaE9udG9UcmFuc2Zv
cm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE9wdGlvblNldDxNYXBDb29y
ZGluYXRlc01vZGU+IG1vZGUsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0U2l6
ZSYgb2Zmc2V0SW5Db250YWluZXIsIGJvb2wgY29udGFpbmVyU2tpcHBlZCkgY29uc3QKLXsKLSAg
ICBib29sIHByZXNlcnZlM0QgPSBtb2RlLmNvbnRhaW5zKFVzZVRyYW5zZm9ybXMpICYmIHBhcnRp
Y2lwYXRlc0luUHJlc2VydmUzRCgpOwotICAgIGlmIChtb2RlLmNvbnRhaW5zKFVzZVRyYW5zZm9y
bXMpICYmIHNob3VsZFVzZVRyYW5zZm9ybUZyb21Db250YWluZXIoY29udGFpbmVyKSkgewotICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7Ci0gICAgICAgIGdldFRyYW5zZm9ybUZy
b21Db250YWluZXIob2Zmc2V0SW5Db250YWluZXIsIG1hdHJpeCk7Ci0gICAgICAgIHRyYW5zZm9y
bVN0YXRlLmFwcGx5VHJhbnNmb3JtKG1hdHJpeCwgcHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRl
OjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0p
OwotICAgIH0gZWxzZQotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKG9mZnNldEluQ29udGFp
bmVyLndpZHRoKCksIG9mZnNldEluQ29udGFpbmVyLmhlaWdodCgpLCBwcmVzZXJ2ZTNEID8gVHJh
bnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0gOiBUcmFuc2Zvcm1TdGF0ZTo6RmxhdHRl
blRyYW5zZm9ybSk7Ci0KLSAgICBpZiAoY29udGFpbmVyU2tpcHBlZCkgewotICAgICAgICAvLyBU
aGVyZSBjYW4ndCBiZSBhIHRyYW5zZm9ybSBiZXR3ZWVuIHJlcGFpbnRDb250YWluZXIgYW5kIGNv
bnRhaW5lciwgYmVjYXVzZSB0cmFuc2Zvcm1zIGNyZWF0ZSBjb250YWluZXJzLCBzbyBpdCBzaG91
bGQgYmUgc2FmZQotICAgICAgICAvLyB0byBqdXN0IHN1YnRyYWN0IHRoZSBkZWx0YSBiZXR3ZWVu
IHRoZSByZXBhaW50Q29udGFpbmVyIGFuZCBjb250YWluZXIuCi0gICAgICAgIExheW91dFNpemUg
Y29udGFpbmVyT2Zmc2V0ID0gcmVwYWludENvbnRhaW5lci0+b2Zmc2V0RnJvbUFuY2VzdG9yQ29u
dGFpbmVyKCpjb250YWluZXIpOwotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKC1jb250YWlu
ZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2VydmUzRCA/
IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3RhdGU6OkZs
YXR0ZW5UcmFuc2Zvcm0pOwotICAgIH0KLX0KLQogRmxvYXRRdWFkIFJlbmRlck9iamVjdDo6bG9j
YWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiBsb2NhbFF1YWQsIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9k
ZT4gbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gVHJhY2sgdGhlIHBvaW50
IGF0IHRoZSBjZW50ZXIgb2YgdGhlIHF1YWQncyBib3VuZGluZyBib3guIEFzIG1hcExvY2FsVG9D
b250YWluZXIoKSBjYWxscyBvZmZzZXRGcm9tQ29udGFpbmVyKCksCkBAIC0xNjI4LDI2ICsxNTc0
LDYgQEAgTGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVy
RWxlbWVudCYgY29udGFpbmVyLCBjb25zdCBMYXkKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1M
YXlvdXRTaXplIFJlbmRlck9iamVjdDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKGNvbnN0
IFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lcikgY29uc3QKLXsKLSAgICBMYXlvdXRTaXplIG9mZnNl
dDsKLSAgICBMYXlvdXRQb2ludCByZWZlcmVuY2VQb2ludDsKLSAgICBDaGVja2VkUHRyIGN1cnJl
bnRDb250YWluZXIgPSB0aGlzOwotICAgIGRvIHsKLSAgICAgICAgQ2hlY2tlZFB0ciBuZXh0Q29u
dGFpbmVyID0gY3VycmVudENvbnRhaW5lci0+Y29udGFpbmVyKCk7Ci0gICAgICAgIEFTU0VSVChu
ZXh0Q29udGFpbmVyKTsgIC8vIFRoaXMgbWVhbnMgd2UgcmVhY2hlZCB0aGUgdG9wIHdpdGhvdXQg
ZmluZGluZyBjb250YWluZXIuCi0gICAgICAgIGlmICghbmV4dENvbnRhaW5lcikKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBBU1NFUlQoIWN1cnJlbnRDb250YWluZXItPmlzVHJhbnNmb3Jt
ZWQoKSk7Ci0gICAgICAgIExheW91dFNpemUgY3VycmVudE9mZnNldCA9IGN1cnJlbnRDb250YWlu
ZXItPm9mZnNldEZyb21Db250YWluZXIoKm5leHRDb250YWluZXIsIHJlZmVyZW5jZVBvaW50KTsK
LSAgICAgICAgb2Zmc2V0ICs9IGN1cnJlbnRPZmZzZXQ7Ci0gICAgICAgIHJlZmVyZW5jZVBvaW50
Lm1vdmUoY3VycmVudE9mZnNldCk7Ci0gICAgICAgIGN1cnJlbnRDb250YWluZXIgPSBXVEZNb3Zl
KG5leHRDb250YWluZXIpOwotICAgIH0gd2hpbGUgKGN1cnJlbnRDb250YWluZXIgIT0gJmNvbnRh
aW5lcik7Ci0KLSAgICByZXR1cm4gb2Zmc2V0OwotfQotCiBib29sIFJlbmRlck9iamVjdDo6cGFy
dGljaXBhdGVzSW5QcmVzZXJ2ZTNEKCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzTGF5ZXIoKSAm
JiBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqdGhpcykubGF5ZXIoKS0+cGFydGlj
aXBhdGVzSW5QcmVzZXJ2ZTNEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKaW5kZXggMDRiNWM3MjkyNjBmLi43MDVjOTg0ZmRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTQzMCw4ICs0MzAsNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1JlbmRlcklubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUZsYWdzLmNvbnRhaW5zKFR5
cGVGbGFnOjpJc1JlbmRlcklubGluZSk7IH0KICAgICBib29sIGlzUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUZsYWdzLmNvbnRhaW5zKFR5cGVGbGFnOjpJc0xh
eWVyTW9kZWxPYmplY3QpOyB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0F0b21pY0lubGluZUxldmVs
Qm94KCkgY29uc3Q7Ci0KICAgICBib29sIGlzUmVuZGVyQ291bnRlcigpIGNvbnN0IHsgcmV0dXJu
IHR5cGUoKSA9PSBUeXBlOjpDb3VudGVyOyB9CiAgICAgYm9vbCBpc1JlbmRlclF1b3RlKCkgY29u
c3QgeyByZXR1cm4gdHlwZSgpID09IFR5cGU6OlF1b3RlOyB9CiAKQEAgLTcwMiw4ICs3MDAsNiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNOb25WaXNpYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlQml0ZmllbGRzLmhhc0ZsYWcoU3RhdGVGbGFnOjpIYXNOb25WaXNpYmxlT3ZlcmZs
b3cpOyB9CiAKICAgICBib29sIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGVCaXRmaWVsZHMuaGFzRmxhZyhTdGF0ZUZsYWc6Okhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eSk7IH0gLy8gVHJhbnNmb3JtLCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0t
c3R5bGU6IHByZXNlcnZlLTNkLgotICAgIGlubGluZSBib29sIGlzVHJhbnNmb3JtZWQoKSBjb25z
dDsKLSAgICBpbmxpbmUgYm9vbCBoYXNUcmFuc2Zvcm1PclBlcnNwZWN0aXZlKCkgY29uc3Q7CiAK
ICAgICBib29sIGNhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGVCaXRmaWVsZHMuaGFzRmxhZyhTdGF0ZUZsYWc6OkNhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbik7
IH0KICAgICBib29sIHNldENhcHR1cmVkSW5WaWV3VHJhbnNpdGlvbihib29sKTsKQEAgLTgyOSw4
ICs4MjUsNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgY29u
dGFpbmVyKCkgcmVuZGVyZXIgKGV4Y2x1ZGluZyB0cmFuc2Zvcm1zKS4gSW4gbXVsdGktY29sdW1u
IGxheW91dCwKICAgICAvLyBkaWZmZXJlbnQgb2Zmc2V0cyBhcHBseSBhdCBkaWZmZXJlbnQgcG9p
bnRzLCBzbyByZXR1cm4gdGhlIG9mZnNldCB0aGF0IGFwcGxpZXMgdG8gdGhlIGdpdmVuIHBvaW50
LgogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1l
bnQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVs
bHB0cikgY29uc3Q7Ci0gICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAg
dGhlIGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRp
YXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgotICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFu
Y2VzdG9yQ29udGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTZWxlY3Rpb25HZW9tZXRy
aWVzKFZlY3RvcjxTZWxlY3Rpb25HZW9tZXRyeT4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAs
IHVuc2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSk7CkBAIC0xMDk0LDExICsxMDg4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtYXBM
b2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJv
b2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29s
dXRlVG9Mb2NhbFBvaW50KE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBUcmFuc2Zvcm1T
dGF0ZSYpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5lcikgY29uc3Q7Ci0gICAgdm9pZCBnZXRUcmFu
c2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFpbmVyLCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OwotICAgIAotICAgIHZvaWQgcHVzaE9udG9UcmFu
c2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBjb25zdCBS
ZW5kZXJFbGVtZW50KiBjb250YWluZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEluQ29udGFp
bmVyLCBib29sIGNvbnRhaW5lclNraXBwZWQpIGNvbnN0OwotCiAgICAgYm9vbCBwYXJ0aWNpcGF0
ZXNJblByZXNlcnZlM0QoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdS
ZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgLyogYWRkaXRpb25h
bE9mZnNldCAqLywgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLyogcGFpbnRDb250YWlu
ZXIgKi8gPSBudWxscHRyKSBjb25zdCB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdElubGluZXMuaAppbmRleCA1MjQxNDc3Zjk1ZmEuLmYxMWFlZTdmMWExYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdElubGluZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0SW5saW5lcy5oCkBA
IC0yMSwxNSArMjEsMTAgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBib29sIFJlbmRl
ck9iamVjdDo6aGFzVHJhbnNmb3JtT3JQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1Ry
YW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChpc1RyYW5zZm9ybWVkKCkgfHwgc3R5bGUoKS5o
YXNQZXJzcGVjdGl2ZSgpKTsgfQotaW5saW5lIGJvb2wgUmVuZGVyT2JqZWN0Ojppc0F0b21pY0lu
bGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5pc0Rpc3BsYXlJbmxpbmVUeXBl
KCkgJiYgIShzdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lICYmICFpc1Jl
cGxhY2VkT3JBdG9taWNJbmxpbmUoKSk7IH0KLWlubGluZSBib29sIFJlbmRlck9iamVjdDo6aXNU
cmFuc2Zvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgp
ICYmIChzdHlsZSgpLmFmZmVjdHNUcmFuc2Zvcm0oKSB8fCBoYXNTVkdUcmFuc2Zvcm0oKSk7IH0K
LWlubGluZSBib29sIFJlbmRlck9iamVjdDo6cHJlc2VydmVzTmV3bGluZSgpIGNvbnN0IHsgcmV0
dXJuICFpc1JlbmRlclNWR0lubGluZVRleHQoKSAmJiBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgp
OyB9CiBpbmxpbmUgUmVmPERvY3VtZW50PiBSZW5kZXJPYmplY3Q6OnByb3RlY3RlZERvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gZG9jdW1lbnQoKTsgfQogaW5saW5lIGNvbnN0IExvY2FsRnJhbWVW
aWV3TGF5b3V0Q29udGV4dCYgUmVuZGVyT2JqZWN0OjpsYXlvdXRDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAppbmRleCBjMDQ5
Mjc0MTllMTMuLmY0NzNhMTY1ZmNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUlubGluZUhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lSW5saW5lSGVhZGVycy5oCkBAIC01MiwxNSArNTIsMTUgQEAgaW5saW5lIGJv
b2wgcmVxdWlyZXNMaW5lQm94Rm9yQ29udGVudChjb25zdCBSZW5kZXJJbmxpbmUmIGZsb3csIGNv
bnN0IExpbmVJbmZvJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIGJvb2wgc2hvdWxk
Q29sbGFwc2VXaGl0ZVNwYWNlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgTGluZUlu
Zm8mIGxpbmVJbmZvLCBXaGl0ZXNwYWNlUG9zaXRpb24gd2hpdGVzcGFjZVBvc2l0aW9uKQoraW5s
aW5lIGJvb2wgc2hvdWxkQ29sbGFwc2VXaGl0ZVNwYWNlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgTGluZUluZm8mIGxpbmVJbmZvLCBXaGl0ZXNwYWNlUG9zaXRpb24gd2hpdGVzcGFj
ZVBvc2l0aW9uKQogewogICAgIC8vIENTUzIgMTYuNi4xCiAgICAgLy8gSWYgYSBzcGFjZSAoVSsw
MDIwKSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBoYXMgJ3doaXRlLXNwYWNlJyBzZXQgdG8g
J25vcm1hbCcsICdub3dyYXAnLCBvciAncHJlLWxpbmUnLCBpdCBpcyByZW1vdmVkLgogICAgIC8v
IElmIGEgc3BhY2UgKFUrMDAyMCkgYXQgdGhlIGVuZCBvZiBhIGxpbmUgaGFzICd3aGl0ZS1zcGFj
ZScgc2V0IHRvICdub3JtYWwnLCAnbm93cmFwJywgb3IgJ3ByZS1saW5lJywgaXQgaXMgYWxzbyBy
ZW1vdmVkLgogICAgIC8vIElmIHNwYWNlcyAoVSswMDIwKSBvciB0YWJzIChVKzAwMDkpIGF0IHRo
ZSBlbmQgb2YgYSBsaW5lIGhhdmUgJ3doaXRlLXNwYWNlJyBzZXQgdG8gJ3ByZS13cmFwJywgVUFz
IG1heSB2aXN1YWxseSBjb2xsYXBzZSB0aGVtLgotICAgIHJldHVybiBzdHlsZS0+Y29sbGFwc2VX
aGl0ZVNwYWNlKCkKLSAgICAgICAgfHwgKHdoaXRlc3BhY2VQb3NpdGlvbiA9PSBUcmFpbGluZ1do
aXRlc3BhY2UgJiYgc3R5bGUtPndoaXRlU3BhY2VDb2xsYXBzZSgpID09IFdoaXRlU3BhY2VDb2xs
YXBzZTo6UHJlc2VydmUKLSAgICAgICAgICAgICYmIHN0eWxlLT50ZXh0V3JhcE1vZGUoKSA9PSBU
ZXh0V3JhcE1vZGU6OldyYXAgJiYgIWxpbmVJbmZvLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIHN0
eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpCisgICAgICAgIHx8ICh3aGl0ZXNwYWNlUG9zaXRpb24g
PT0gVHJhaWxpbmdXaGl0ZXNwYWNlICYmIHN0eWxlLndoaXRlU3BhY2VDb2xsYXBzZSgpID09IFdo
aXRlU3BhY2VDb2xsYXBzZTo6UHJlc2VydmUKKyAgICAgICAgICAgICYmIHN0eWxlLnRleHRXcmFw
TW9kZSgpID09IFRleHRXcmFwTW9kZTo6V3JhcCAmJiAhbGluZUluZm8uaXNFbXB0eSgpKTsKIH0K
IAogaW5saW5lIGJvb2wgc2tpcE5vbkJyZWFraW5nU3BhY2UoY29uc3QgTGVnYWN5SW5saW5lSXRl
cmF0b3ImIGl0LCBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8pCkBAIC04OCwxMSArODgsMTEgQEAg
aW5saW5lIGJvb2wgcmVxdWlyZXNMaW5lQm94KGNvbnN0IExlZ2FjeUlubGluZUl0ZXJhdG9yJiBp
dCwgY29uc3QgTGluZUluZm8mIGxpbmUKICAgICAgICAgcmVuZGVyZXJJc0VtcHR5SW5saW5lID0g
aXNFbXB0eUlubGluZSgqaW5saW5lUmVuZGVyZXIpOwogICAgIH0KIAotICAgIGlmICghc2hvdWxk
Q29sbGFwc2VXaGl0ZVNwYWNlKCZpdC5yZW5kZXJlcigpLT5zdHlsZSgpLCBsaW5lSW5mbywgd2hp
dGVzcGFjZVBvc2l0aW9uKSkKKyAgICBpZiAoIXNob3VsZENvbGxhcHNlV2hpdGVTcGFjZShpdC5y
ZW5kZXJlcigpLT5zdHlsZSgpLCBsaW5lSW5mbywgd2hpdGVzcGFjZVBvc2l0aW9uKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBVQ2hhciBjdXJyZW50ID0gaXQuY3VycmVudCgpOwotICAg
IGJvb2wgbm90SnVzdFdoaXRlc3BhY2UgPSBjdXJyZW50ICE9ICcgJyAmJiBjdXJyZW50ICE9ICdc
dCcgJiYgY3VycmVudCAhPSBzb2Z0SHlwaGVuICYmIChjdXJyZW50ICE9ICdcbicgfHwgaXQucmVu
ZGVyZXIoKS0+cHJlc2VydmVzTmV3bGluZSgpKSAmJiAhc2tpcE5vbkJyZWFraW5nU3BhY2UoaXQs
IGxpbmVJbmZvKTsKKyAgICBib29sIG5vdEp1c3RXaGl0ZXNwYWNlID0gY3VycmVudCAhPSAnICcg
JiYgY3VycmVudCAhPSAnXHQnICYmIGN1cnJlbnQgIT0gc29mdEh5cGhlbiAmJiBjdXJyZW50ICE9
ICdcbicgJiYgIXNraXBOb25CcmVha2luZ1NwYWNlKGl0LCBsaW5lSW5mbyk7CiAgICAgcmV0dXJu
IG5vdEp1c3RXaGl0ZXNwYWNlIHx8IHJlbmRlcmVySXNFbXB0eUlubGluZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21w
dXRhdGlvbi5jcHAKaW5kZXggYzNkMjg5MjFmYjI2Li5jMTRiODk1YzU3MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1
dGF0aW9uLmNwcApAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgIk5lc3RpbmdMZXZlbEluY3Jl
bWVudGVyLmgiCiAjaW5jbHVkZSAiUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oIgogI2luY2x1ZGUg
IlJlbmRlckNoaWxkSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgi
CisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdD
b250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAppbmRleCAzNDNlOWU5
OGE5ZDUuLmI4YzQzZDVmNDJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAg
dm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6YXR0YWNoVG9SZW5kZXJFbGVtZW50SW50ZXJuYWwoUmVu
ZGVyRWxlbWVudCYgcGFyZW50LCBSZW4KICAgICB9CiAKICAgICBuZXdDaGlsZC0+c2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7Ci0gICAgYXV0byBpc091dE9mRmxvd0JveCA9IG5l
d0NoaWxkLT5zdHlsZSgpLmhhc091dE9mRmxvd1Bvc2l0aW9uKCk7CisgICAgYXV0byBpc091dE9m
Rmxvd0JveCA9IG5ld0NoaWxkLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsKICAgICBpZiAoIWlz
T3V0T2ZGbG93Qm94KQogICAgICAgICBwYXJlbnQuc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0Rp
cnR5KHRydWUpOwogCkBAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6
cmVtb3ZlQW5vbnltb3VzV3JhcHBlcnNGb3JJbmxpbmVDaGlsZHJlbklmTmVlZGVkKFJlbmRlckUK
ICAgICAvLyBpZiB3ZSBmaW5kIGEgY29udGludWF0aW9uLgogICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gc2hvdWxkQWxsQ2hpbGRyZW5CZUlubGluZTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBi
bG9ja1BhcmVudC0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4
dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY3VycmVudC0+c3R5bGUoKS5pc0Zsb2F0aW5nKCkg
fHwgY3VycmVudC0+c3R5bGUoKS5oYXNPdXRPZkZsb3dQb3NpdGlvbigpKQorICAgICAgICBpZiAo
Y3VycmVudC0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgaWYgKCFpczxSZW5kZXJCbG9jaz4oKmN1cnJlbnQpKQpAQCAt
MTEwMiw3ICsxMTAyLDcgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6cmVwb3J0VmlzdWFsbHlO
b25FbXB0eUNvbnRlbnQoY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW4KICAgICAgICAgfTsKICAg
ICAgICAgLy8gU1ZHIGNvbnRlbnQgdGVuZHMgdG8gaGF2ZSBhIGZpeGVkIHNpemUgY29uc3RydWN0
LiBIb3dldmVyIHRoaXMgaXMga25vd24gdG8gYmUgaW5hY2N1cmF0ZSBpbiBjZXJ0YWluIGNhc2Vz
IChib3gtc2l6aW5nOiBib3JkZXItYm94KSBvciBlc3BlY2lhbGx5IHdoZW4gdGhlIHBhcmVudCBi
b3ggaXMgb3ZlcnNpemVkLgogICAgICAgICBhdXRvIGNhbmRpZGF0ZVNpemUgPSBJbnRTaXplIHsg
fTsKLSAgICAgICAgaWYgKGF1dG8gc2l6ZSA9IGZpeGVkU2l6ZShjaGlsZCkpCisgICAgICAgIGlm
IChhdXRvIHNpemUgPSBmaXhlZFNpemUoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGQpKSkK
ICAgICAgICAgICAgIGNhbmRpZGF0ZVNpemUgPSAqc2l6ZTsKICAgICAgICAgZWxzZSBpZiAoYXV0
byBzaXplID0gZml4ZWRTaXplKHBhcmVudCkpCiAgICAgICAgICAgICBjYW5kaWRhdGVTaXplID0g
KnNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKaW5kZXggODczODI1Y2JhYmU5Li5lN2VjOTdi
ZWQzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lk
IFJlbmRlclRyZWVCdWlsZGVyOjpCbG9jazo6aW5zZXJ0Q2hpbGRUb0NvbnRpbnVhdGlvbihSZW5k
ZXJCbG9jayYgcGFyZW50LCBSZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBj
aGlsZElzTm9ybWFsID0gY2hpbGQtPmlzSW5saW5lKCkgfHwgY2hpbGQtPnN0eWxlKCkuY29sdW1u
U3BhbigpID09IENvbHVtblNwYW46Ok5vbmU7CisgICAgYm9vbCBjaGlsZElzTm9ybWFsID0gY2hp
bGQtPmlzSW5saW5lKCkgfHwgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5zdHlsZSgp
LmNvbHVtblNwYW4oKSA9PSBDb2x1bW5TcGFuOjpOb25lOwogICAgIGJvb2wgYmNwSXNOb3JtYWwg
PSBiZWZvcmVDaGlsZFBhcmVudC0+aXNJbmxpbmUoKSB8fCBiZWZvcmVDaGlsZFBhcmVudC0+c3R5
bGUoKS5jb2x1bW5TcGFuKCkgPT0gQ29sdW1uU3Bhbjo6Tm9uZTsKICAgICBib29sIGZsb3dJc05v
cm1hbCA9IGZsb3ctPmlzSW5saW5lKCkgfHwgZmxvdy0+c3R5bGUoKS5jb2x1bW5TcGFuKCkgPT0g
Q29sdW1uU3Bhbjo6Tm9uZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uY3BwCmlu
ZGV4IDkwNDViZGVjNjMxMy4uNDAwZGJlNmY5Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJUcmVl
QnVpbGRlcjo6TXVsdGlDb2x1bW46OnJlc29sdmVNb3ZlZENoaWxkKFJlbmRlckZyYWdtZW50ZWQK
ICAgICAgICAgcmV0dXJuIGJlZm9yZUNoaWxkOwogCiAgICAgLy8gV2Ugb25seSBuZWVkIHRvIHJl
c29sdmUgZm9yIGNvbHVtbiBzcGFubmVycy4KLSAgICBpZiAoYmVmb3JlQ2hpbGQtPnN0eWxlKCku
Y29sdW1uU3BhbigpICE9IENvbHVtblNwYW46OkFsbCkKKyAgICBpZiAoYmVmb3JlQ2hpbGRSZW5k
ZXJCb3gtPnN0eWxlKCkuY29sdW1uU3BhbigpICE9IENvbHVtblNwYW46OkFsbCkKICAgICAgICAg
cmV0dXJuIGJlZm9yZUNoaWxkOwogCiAgICAgLy8gVGhlIHJlbmRlcmVyIGZvciB0aGUgYWN0dWFs
IERPTSBub2RlIHRoYXQgZXN0YWJsaXNoZXMgYSBzcGFubmVyIGlzIG1vdmVkIGZyb20gaXRzIG9y
aWdpbmFsCkBAIC0yNDUsNiArMjQ1LDkgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlD
b2x1bW46Om11bHRpQ29sdW1uRGVzY2VuZGFudEluc2VydGVkKFJlbmRlck11bHRpQ28KIHZvaWQg
UmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRpQ29sdW1uOjptdWx0aUNvbHVtblJlbGF0aXZlV2lsbEJl
UmVtb3ZlZChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmIGZsb3csIFJlbmRlck9iamVjdCYgcmVsYXRp
dmUsIFJlbmRlclRyZWVCdWlsZGVyOjpDYW5Db2xsYXBzZUFub255bW91c0Jsb2NrIGNhbkNvbGxh
cHNlQW5vbnltb3VzQmxvY2spCiB7CiAgICAgZmxvdy5pbnZhbGlkYXRlRnJhZ21lbnRzKCk7Cisg
ICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbGF0aXZlKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
aWYgKGF1dG8qIHBsYWNlaG9sZGVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlck11bHRpQ29sdW1u
U3Bhbm5lclBsYWNlaG9sZGVyPihyZWxhdGl2ZSkpIHsKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBt
YXAgZW50cnkgZm9yIHRoaXMgc3Bhbm5lciwgYnV0IGxlYXZlIHRoZSBhY3R1YWwgc3Bhbm5lciBy
ZW5kZXJlciBhbG9uZS4gQWxzbwogICAgICAgICAvLyBrZWVwIHRoZSByZWZlcmVuY2UgdG8gdGhl
IHNwYW5uZXIsIHNpbmNlIHRoZSBwbGFjZWhvbGRlciBtYXkgYmUgYWJvdXQgdG8gYmUgcmUtaW5z
ZXJ0ZWQKQEAgLTI1MywxMSArMjU2LDExIEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6Ok11bHRp
Q29sdW1uOjptdWx0aUNvbHVtblJlbGF0aXZlV2lsbEJlUmVtb3ZlZChSZW5kZXJNdWx0CiAgICAg
ICAgIGZsb3cuc3Bhbm5lck1hcCgpLnJlbW92ZShwbGFjZWhvbGRlci0+c3Bhbm5lcigpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAocmVsYXRpdmUuc3R5bGUoKS5jb2x1bW5TcGFu
KCkgPT0gQ29sdW1uU3Bhbjo6QWxsKSB7Ci0gICAgICAgIGlmIChyZWxhdGl2ZS5wYXJlbnQoKSAh
PSBmbG93LnBhcmVudCgpKQorICAgIGlmIChhdXRvKiByZW5kZXJCb3ggPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyQm94PihyZWxhdGl2ZSk7IHJlbmRlckJveCAmJiByZW5kZXJCb3gtPnN0eWxlKCku
Y29sdW1uU3BhbigpID09IENvbHVtblNwYW46OkFsbCkgeworICAgICAgICBpZiAocmVuZGVyQm94
LT5wYXJlbnQoKSAhPSBmbG93LnBhcmVudCgpKQogICAgICAgICAgICAgcmV0dXJuOyAvLyBub3Qg
YSB2YWxpZCBzcGFubmVyLgogCi0gICAgICAgIGhhbmRsZVNwYW5uZXJSZW1vdmFsKGZsb3csIHJl
bGF0aXZlLCBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrKTsKKyAgICAgICAgaGFuZGxlU3Bhbm5l
clJlbW92YWwoZmxvdywgKnJlbmRlckJveCwgY2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayk7CiAg
ICAgfQogICAgIC8vIE5vdGUgdGhhdCB3ZSBtaWdodCBlbmQgdXAgd2l0aCBlbXB0eSBjb2x1bW4g
c2V0cyBpZiBhbGwgY29sdW1uIGNvbnRlbnQgaXMgcmVtb3ZlZC4gVGhhdCdzIG5vCiAgICAgLy8g
YmlnIGRlYWwgdGhvdWdoIChhbmQgbG9jYXRpbmcgdGhlbSB3b3VsZCBiZSBleHBlbnNpdmUpLCBh
bmQgdGhleSB3aWxsIGJlIGZvdW5kIGFuZCByZS11c2VkIGlmCkBAIC00NDIsMTAgKzQ0NSwxMCBA
QCBSZW5kZXJPYmplY3QqIFJlbmRlclRyZWVCdWlsZGVyOjpNdWx0aUNvbHVtbjo6cHJvY2Vzc1Bv
c3NpYmxlU3Bhbm5lckRlc2NlbmRhbnQoUgogICAgIHJldHVybiBuZXh0RGVzY2VuZGFudDsKIH0K
IAotdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46OmhhbmRsZVNwYW5uZXJSZW1v
dmFsKFJlbmRlck11bHRpQ29sdW1uRmxvdyYgZmxvdywgUmVuZGVyT2JqZWN0JiBzcGFubmVyLCBS
ZW5kZXJUcmVlQnVpbGRlcjo6Q2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayBjYW5Db2xsYXBzZUFu
b255bW91c0Jsb2NrKQordm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6TXVsdGlDb2x1bW46OmhhbmRs
ZVNwYW5uZXJSZW1vdmFsKFJlbmRlck11bHRpQ29sdW1uRmxvdyYgZmxvdywgUmVuZGVyQm94JiBz
cGFubmVyLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayBjYW5D
b2xsYXBzZUFub255bW91c0Jsb2NrKQogewogICAgIC8vIFRoZSBwbGFjZWhvbGRlciBtYXkgYWxy
ZWFkeSBoYXZlIGJlZW4gcmVtb3ZlZCwgYnV0IGlmIGl0IGhhc24ndCwgZG8gc28gbm93LgotICAg
IGlmIChhdXRvIHBsYWNlaG9sZGVyID0gZmxvdy5zcGFubmVyTWFwKCkudGFrZSgmZG93bmNhc3Q8
UmVuZGVyQm94PihzcGFubmVyKSkpCisgICAgaWYgKGF1dG8gcGxhY2Vob2xkZXIgPSBmbG93LnNw
YW5uZXJNYXAoKS50YWtlKCZzcGFubmVyKSkKICAgICAgICAgbV9idWlsZGVyLmRlc3Ryb3koKnBs
YWNlaG9sZGVyLCBjYW5Db2xsYXBzZUFub255bW91c0Jsb2NrKTsKIAogICAgIGlmIChhdXRvKiBu
ZXh0ID0gc3Bhbm5lci5uZXh0U2libGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1
bW4uaAppbmRleCBiMGQ4MDJiNzRlMTQuLmQzZTRlZjkxNGEzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXJNdWx0aUNvbHVtbi5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVh
dGVGcmFnbWVudGVkRmxvdyhSZW5kZXJCbG9ja0Zsb3cmKTsKICAgICB2b2lkIGRlc3Ryb3lGcmFn
bWVudGVkRmxvdyhSZW5kZXJCbG9ja0Zsb3cmKTsKICAgICBSZW5kZXJPYmplY3QqIHByb2Nlc3NQ
b3NzaWJsZVNwYW5uZXJEZXNjZW5kYW50KFJlbmRlck11bHRpQ29sdW1uRmxvdyYsIFJlbmRlck9i
amVjdComIHN1YnRyZWVSb290LCBSZW5kZXJPYmplY3QmIGRlc2NlbmRhbnQpOwotICAgIHZvaWQg
aGFuZGxlU3Bhbm5lclJlbW92YWwoUmVuZGVyTXVsdGlDb2x1bW5GbG93JiwgUmVuZGVyT2JqZWN0
JiBzcGFubmVyLCBSZW5kZXJUcmVlQnVpbGRlcjo6Q2FuQ29sbGFwc2VBbm9ueW1vdXNCbG9jayk7
CisgICAgdm9pZCBoYW5kbGVTcGFubmVyUmVtb3ZhbChSZW5kZXJNdWx0aUNvbHVtbkZsb3cmLCBS
ZW5kZXJCb3gmIHNwYW5uZXIsIFJlbmRlclRyZWVCdWlsZGVyOjpDYW5Db2xsYXBzZUFub255bW91
c0Jsb2NrKTsKIAogICAgIFJlbmRlclRyZWVCdWlsZGVyJiBtX2J1aWxkZXI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
UnVieS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJSdWJ5LmNwcAppbmRleCA0ODQyOWNjYmNiMjIuLmU0NWMzMjdmNGI0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyUnVi
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyUnVieS5jcHAKQEAgLTcwLDEwICs3MCwxNSBAQCBSZW5kZXJFbGVtZW50JiBSZW5kZXJU
cmVlQnVpbGRlcjo6UnVieTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGls
ZAogICAgIGVsc2UgaWYgKGF1dG8qIHJ1YnlCbG9jayA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJC
bG9jaz4ocGFyZW50KTsgcnVieUJsb2NrICYmIHJ1YnlCbG9jay0+Y29udGludWF0aW9uKCkpCiAg
ICAgICAgIGJlZm9yZUNoaWxkQW5jZXN0b3IgPSBSZW5kZXJUcmVlQnVpbGRlcjo6QmxvY2s6OmNv
bnRpbnVhdGlvbkJlZm9yZSgqcnVieUJsb2NrLCBiZWZvcmVDaGlsZCk7CiAKLSAgICBpZiAoIWNo
aWxkLmlzUmVuZGVyVGV4dCgpICYmIGNoaWxkLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpSdWJ5ICYmIGJlZm9yZUNoaWxkQW5jZXN0b3ItPnN0eWxlKCkuZGlzcGxheSgpID09IERp
c3BsYXlUeXBlOjpSdWJ5QmxvY2spCi0gICAgICAgIHJldHVybiAqYmVmb3JlQ2hpbGRBbmNlc3Rv
cjsKKyAgICBhdXRvIGNoaWxkRWxlbWVudERpc3BsYXlUeXBlID0gWyZdIC0+IHN0ZDo6b3B0aW9u
YWw8RGlzcGxheVR5cGU+IHsKKyAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkKSkKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PihjaGlsZCkuc3R5bGUoKS5kaXNwbGF5KCk7CisgICAgfSgpOwogCiAgICAgaWYgKGJlZm9y
ZUNoaWxkQW5jZXN0b3ItPnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpSdWJ5Qmxv
Y2spIHsKKyAgICAgICAgaWYgKGNoaWxkRWxlbWVudERpc3BsYXlUeXBlICYmICpjaGlsZEVsZW1l
bnREaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6UnVieSkKKyAgICAgICAgICAgIHJldHVybiAq
YmVmb3JlQ2hpbGRBbmNlc3RvcjsKICAgICAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYW4gYW5vbnlt
b3VzIHJ1YnkgYm94IGFscmVhZHkuCiAgICAgICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgYmUgdGhl
IGltbWVkaWF0ZSBjaGlsZCBidXQgY29udGludWF0aW9ucyBjYW4gYnJlYWsgdGhpcyBhc3N1bXB0
aW9uLgogICAgICAgICBmb3IgKENoZWNrZWRQdHIgZmlyc3QgPSBiZWZvcmVDaGlsZEFuY2VzdG9y
LT5maXJzdENoaWxkKCk7IGZpcnN0OyBmaXJzdCA9IGZpcnN0LT5maXJzdENoaWxkU2xvdygpKSB7
CkBAIC05NSw3ICsxMDAsNyBAQCBSZW5kZXJFbGVtZW50JiBSZW5kZXJUcmVlQnVpbGRlcjo6UnVi
eTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yU3R5bGVCYXNlZFJ1YnlDaGlsZAogICAgICAgICByZXR1
cm4gKm5ld1BhcmVudDsKICAgICB9CiAKLSAgICBpZiAoIWNoaWxkLmlzUmVuZGVyVGV4dCgpICYm
IChjaGlsZC5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6UnVieUJhc2UgfHwgY2hp
bGQuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OlJ1YnlBbm5vdGF0aW9uKSkKKyAg
ICBpZiAoY2hpbGRFbGVtZW50RGlzcGxheVR5cGUgJiYgKCpjaGlsZEVsZW1lbnREaXNwbGF5VHlw
ZSA9PSBEaXNwbGF5VHlwZTo6UnVieUJhc2UgfHwgKmNoaWxkRWxlbWVudERpc3BsYXlUeXBlID09
IERpc3BsYXlUeXBlOjpSdWJ5QW5ub3RhdGlvbikpCiAgICAgICAgIHJldHVybiAqYmVmb3JlQ2hp
bGRBbmNlc3RvcjsKIAogICAgIGlmIChiZWZvcmVDaGlsZCAmJiBiZWZvcmVDaGlsZC0+cGFyZW50
KCktPnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpSdWJ5QmFzZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclRh
YmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlclRhYmxlLmNwcAppbmRleCBjNzViNmQ4YTFiOGUuLmFhMGNhZTE1YTE2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyVGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlclRhYmxlLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIFJlbmRlckVsZW1lbnQmIFJlbmRl
clRyZWVCdWlsZGVyOjpUYWJsZTo6ZmluZE9yQ3JlYXRlUGFyZW50Rm9yQ2hpbGQoUmVuZGVyVGFi
bGUmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvKiBwYXJlbnRDYW5kaWRhdGUgPSBiZWZv
cmVDaGlsZDsKKyAgICBhdXRvKiBwYXJlbnRDYW5kaWRhdGUgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4oYmVmb3JlQ2hpbGQpOwogICAgIHdoaWxlIChwYXJlbnRDYW5kaWRhdGUgJiYg
cGFyZW50Q2FuZGlkYXRlLT5wYXJlbnQoKS0+aXNBbm9ueW1vdXMoKQogICAgICAgICAmJiAhaXM8
UmVuZGVyVGFibGVTZWN0aW9uPigqcGFyZW50Q2FuZGlkYXRlKQogICAgICAgICAmJiBwYXJlbnRD
YW5kaWRhdGUtPnN0eWxlKCkuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
CmluZGV4IDBiMTA2MWMwNWE3ZC4uZTM1MWQ4ODUyZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTU1LDcgKzU1LDggQEAK
ICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyQmxvY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
QmxvY2tGbG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckJveC5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9SZW5kZXJPYmplY3RJbmxpbmVzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1l
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyRWxlbWVudElubGluZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVuZGVyU3R5bGVDb25zdGFudHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVy
VGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Sb3VuZGVkUmVjdC5oPgpAQCAtMjU4LDE0ICsyNTks
MTMgQEAgQGltcGxlbWVudGF0aW9uIERPTUhUTUxFbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlF
eHRlbnNpb25zKQogLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uCiB7CiAg
ICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgUmVuZGVyT2JqZWN0ICogcmVuZGVyZXIgPSBjb3JlKHNl
bGYpLT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlcikgeworICAgIGlmIChhdXRvKiByZW5k
ZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5p
c0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwKICAgICAgICAgICAgIHJlbmRlcmVy
LT5pc1JlbmRlcldpZGdldCgpKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBJTlRfTUFYOwotICAg
ICAgICB9IGVsc2UgaWYgKCFyZW5kZXJlci0+Zmlyc3RDaGlsZFNsb3coKSkgeworICAgICAgICB9
IGVsc2UgaWYgKCFyZW5kZXJlci0+Zmlyc3RDaGlsZCgpKQogICAgICAgICAgICAgcmVzdWx0ID0g
MDsKLSAgICAgICAgfSBlbHNlIGlmIChpczxXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c+KCpyZW5k
ZXJlcikgfHwgKGlzPFJlbmRlckJsb2NrPigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJs
b2NrPigqcmVuZGVyZXIpLmlubGluZUNvbnRpbnVhdGlvbigpKSkgeworICAgICAgICBlbHNlIGlm
IChpczxXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlcikgfHwgKGlzPFJlbmRlckJs
b2NrPigqcmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigqcmVuZGVyZXIpLmlubGlu
ZUNvbnRpbnVhdGlvbigpKSkgewogICAgICAgICAgICAgQk9PTCBub0Nvc3QgPSBOTzsKICAgICAg
ICAgICAgIGlmIChhdXRvIHJlbmRlckJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KCpy
ZW5kZXJlcikpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBwYXJlbnRSZW5kZXJCb3ggPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJCb3gtPnBhcmVudCgpKTsKQEAgLTI3Myw5ICsy
NzMsOCBAQCAtIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24KICAgICAgICAg
ICAgICAgICAgICAgbm9Db3N0ID0gWUVTOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVz
dWx0ID0gKG5vQ29zdCA/IDAgOiAxKTsKLSAgICAgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+aXNU
cmFuc2Zvcm1lZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAocmVuZGVyZXItPmlzVHJhbnNmb3Jt
ZWQoKSkKICAgICAgICAgICAgIHJlc3VsdCA9IElOVF9NQVg7Ci0gICAgICAgIH0KICAgICB9CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>