<?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>220102</bug_id>
          
          <creation_ts>2020-12-22 13:30:53 -0800</creation_ts>
          <short_desc>Use WeakHashSet&lt;Page&gt; instead of HashSet&lt;Page*&gt;</short_desc>
          <delta_ts>2021-01-05 10:16:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716353</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-22 13:30:53 -0800</bug_when>
    <thetext>Use WeakHashSet&lt;Page&gt; instead of HashSet&lt;Page*&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716354</commentid>
    <comment_count>1</comment_count>
      <attachid>416687</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-22 13:32:29 -0800</bug_when>
    <thetext>Created attachment 416687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716820</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-29 13:31:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/72728030&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717016</commentid>
    <comment_count>3</comment_count>
      <attachid>416687</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-02 14:38:30 -0800</bug_when>
    <thetext>Comment on attachment 416687
Patch

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

&gt; Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp:173
&gt; +    for (const auto&amp; page : PageGroup::pageGroup(pageGroup-&gt;identifier())-&gt;pages())

Not sure we should have the const here. For one thing, changing the settings for a page doesn’t seem very &quot;const&quot;.

&gt; Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp:289
&gt; +    for (const auto&amp; page : PageGroup::pageGroup(pageGroup-&gt;identifier())-&gt;pages())

Ditto.

&gt; Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp:345
&gt; +        for (const auto&amp; page : PageGroup::pageGroup(pageGroup-&gt;identifier())-&gt;pages()) {
&gt; +            for (const auto* frame = &amp;page.mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {

Could omit const here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717368</commentid>
    <comment_count>4</comment_count>
      <attachid>417016</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-05 10:07:58 -0800</bug_when>
    <thetext>Created attachment 417016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717377</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-05 10:16:17 -0800</bug_when>
    <thetext>http://trac.webkit.org/r271153</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416687</attachid>
            <date>2020-12-22 13:32:29 -0800</date>
            <delta_ts>2021-01-05 10:07:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220102-20201222133228.patch</filename>
            <type>text/plain</type>
            <size>25187</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q0NjU5Yjc4ZmQ2MGM2
Zjg0MjYwZjFjMDBiZjZiNjc0MGQwMTUyMC4uYzQ4ZjFiNDAxNGVhOTRlNWIxZWVlZTM5YzM1ZWFj
ZWRkM2M5MGFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTEyLTIyICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFdl
YWtIYXNoU2V0PFBhZ2U+IGluc3RlYWQgb2YgSGFzaFNldDxQYWdlKj4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmb3JtZXIgaXMgbW9yZSByZXNp
c3RlbnQgdG8gdXNpbmcgYSByYXcgcG9pbnRlciBhZnRlciB0aGUgb2JqZWN0IGhhcyBiZWVuIGZy
ZWVkLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlRGVidWdnZXI6OnNldEphdmFTY3JpcHRQYXVzZWQpOgorICAgICAgICAqIHBh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9u
VXNlclByZWZlcmVuY2VzOjpjdXJyZW50UGFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
YXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc0NhcHRpb25zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZl
cnNTdWJ0aXRsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJl
bmNlczo6c2V0VXNlclByZWZlcnNTdWJ0aXRsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzVGV4
dERlc2NyaXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2Vz
Ojp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJyaWRlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1l
VHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmZpbmQgY29uc3QpOgorICAg
ICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6
YWRkUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnJlbW92ZVBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpw
YWdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVyOjpQYWdlR3JvdXBMb2FkRGVmZXJyZXIpOgor
ICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyQ29udGVudFByb3ZpZGVyOjp+VXNlckNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyQ29udGVudFByb3ZpZGVyOjphZGRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJDb250ZW50UHJvdmlkZXI6OnJlbW92ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VXNl
ckNvbnRlbnRQcm92aWRlcjo6cmVnaXN0ZXJGb3JVc2VyTWVzc2FnZUhhbmRsZXJJbnZhbGlkYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRlcjo6dW5yZWdpc3RlckZv
clVzZXJNZXNzYWdlSGFuZGxlckludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
Q29udGVudFByb3ZpZGVyOjppbnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFVzZXJNZXNzYWdlSGFuZGxl
ckludmFsaWRhdGlvbkNsaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92
aWRlcjo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXNJbkFsbFBh
Z2VzKToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaDoKKyAgICAgICAgKiBw
YWdlL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaXRlZExpbmtT
dG9yZTo6flZpc2l0ZWRMaW5rU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlzaXRlZExpbmtT
dG9yZTo6YWRkUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0b3JlOjpyZW1v
dmVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmU6OmludmFsaWRhdGVT
dHlsZXNGb3JBbGxMaW5rcyk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0b3JlOjpp
bnZhbGlkYXRlU3R5bGVzRm9yTGluayk6CisgICAgICAgICogcGFnZS9WaXNpdGVkTGlua1N0b3Jl
Lmg6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luSW5mb1Byb3ZpZGVyOjp+UGx1Z2luSW5mb1Byb3ZpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlcjo6Y2xlYXJQYWdlc1BsdWdpbkRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luSW5mb1Byb3ZpZGVyOjpyZWZyZXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlcjo6YWRkUGFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5JbmZvUHJvdmlkZXI6OnJlbW92ZVBhZ2UpOgorICAgICAgICAqIHBsdWdpbnMvUGx1
Z2luSW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRj
aGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMpOgorCiAyMDIwLTEy
LTIyICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBhc3Bl
Y3QtcmF0aW8gb24gcG9zaXRpb25lZCBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjNGM2NmNlNjdlNTgw
OWE4ZDYzZjI3Y2EwYmViNTA5NWRlYWQyZDVmLi43YjAyMTE1NjIzYWMzYjM5M2UzNTVhZTgyYmNm
ZmM4YmQ4ZTRlZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTIyICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFdl
YWtIYXNoU2V0PFBhZ2U+IGluc3RlYWQgb2YgSGFzaFNldDxQYWdlKj4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGU6OmxpdmVEb2N1bWVudFVSTHMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KToKKwogMjAyMC0xMi0yMiAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDYW5u
b3Qgc2VlICdBZGQgdG8gbXkgc3RhdGlvbnMnIGJ1dHRvbiBpbiBCQkMgV29ybGQgc2VydmljZSBS
YWRpbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyLmNwcAppbmRleCA1MTMz
NmUwZmYwZGVhY2NjYjkxYzBiMTI4MDFjZmIwNzcyYTFmZDkxLi41NjkwYmZhMmZkM2Y5OWY0MDNi
NTU3YmEzNjAwOTI4YmFlOTNkNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZURlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURl
YnVnZ2VyLmNwcApAQCAtMTQ4LDEwICsxNDgsMTAgQEAgdm9pZCBQYWdlRGVidWdnZXI6OnJlcG9y
dEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogc3RhdGUsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHQK
IHZvaWQgUGFnZURlYnVnZ2VyOjpzZXRKYXZhU2NyaXB0UGF1c2VkKGNvbnN0IFBhZ2VHcm91cCYg
cGFnZUdyb3VwLCBib29sIHBhdXNlZCkKIHsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlR3Jv
dXAucGFnZXMoKSkgewotICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5tYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICAg
ICAgZm9yIChhdXRvKiBmcmFtZSA9ICZwYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAgICAgICAgc2V0SmF2YVNjcmlwdFBh
dXNlZCgqZnJhbWUsIHBhdXNlZCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIGZyb250ZW5kQ2xpZW50
ID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZyb250ZW5kQ2xpZW50KCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIGZyb250ZW5kQ2xpZW50ID0gcGFnZS5pbnNwZWN0b3JDb250
cm9sbGVyKCkuaW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKSkgewogICAgICAgICAgICAgaWYgKHBh
dXNlZCkKICAgICAgICAgICAgICAgICBmcm9udGVuZENsaWVudC0+cGFnZVBhdXNlZCgpOwogICAg
ICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5jcHAKaW5kZXggYzIyNGQzODU0ZTFmMGQ0MzhjNTZiYTQ4NTlhZTU5N2I1ZTBmMDM5Yi4u
YmIyNzAyYmRmYTNhNjQ0MDgxYTc3MTZjMWIzNzczMjBlYTQxMWRjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCkBAIC0xMDAsMTUgKzEwMCwx
NCBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25EaXNwbGF5TW9kZShD
YXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aQogCiBQYWdlKiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzOjpjdXJyZW50UGFnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcGFnZUdyb3VwLnBhZ2VzKCku
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiAqKG1fcGFn
ZUdyb3VwLnBhZ2VzKCkuYmVnaW4oKSk7CisgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlR3Jv
dXAucGFnZXMoKSkKKyAgICAgICAgcmV0dXJuICZwYWdlOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVzZXJQcmVmZXJzQ2FwdGlvbnMoKSBj
b25zdAogewotICAgIFBhZ2UqIHBhZ2UgPSBjdXJyZW50UGFnZSgpOworICAgIGF1dG8qIHBhZ2Ug
PSBjdXJyZW50UGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0xMTcsNyArMTE2LDcgQEAgYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJl
ZmVyc0NhcHRpb25zKCkgY29uc3QKIAogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRV
c2VyUHJlZmVyc0NhcHRpb25zKGJvb2wgcHJlZmVyZW5jZSkKIHsKLSAgICBQYWdlKiBwYWdlID0g
Y3VycmVudFBhZ2UoKTsKKyAgICBhdXRvKiBwYWdlID0gY3VycmVudFBhZ2UoKTsKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTI3LDcgKzEyNiw3IEBAIHZvaWQgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyhib29sIHByZWZlcmVuY2Up
CiAKIGJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNTdWJ0aXRsZXMoKSBj
b25zdAogewotICAgIFBhZ2UqIHBhZ2UgPSBjdXJyZW50UGFnZSgpOworICAgIGF1dG8qIHBhZ2Ug
PSBjdXJyZW50UGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0xMzYsNyArMTM1LDcgQEAgYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJl
ZmVyc1N1YnRpdGxlcygpIGNvbnN0CiAKIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0
VXNlclByZWZlcnNTdWJ0aXRsZXMoYm9vbCBwcmVmZXJlbmNlKQogewotICAgIFBhZ2UqIHBhZ2Ug
PSBjdXJyZW50UGFnZSgpOworICAgIGF1dG8qIHBhZ2UgPSBjdXJyZW50UGFnZSgpOwogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDYsNyArMTQ1LDcgQEAgdm9pZCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpzZXRVc2VyUHJlZmVyc1N1YnRpdGxlcyhib29sIHByZWZlcmVu
Y2UpCiAKIGJvb2wgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNUZXh0RGVzY3Jp
cHRpb25zKCkgY29uc3QKIHsKLSAgICBQYWdlKiBwYWdlID0gY3VycmVudFBhZ2UoKTsKKyAgICBh
dXRvKiBwYWdlID0gY3VycmVudFBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKQEAgLTE1NSw3ICsxNTQsNyBAQCBib29sIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OnVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucygpIGNvbnN0CiAKIHZvaWQgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25zKGJvb2wgcHJl
ZmVyZW5jZSkKIHsKLSAgICBQYWdlKiBwYWdlID0gY3VycmVudFBhZ2UoKTsKKyAgICBhdXRvKiBw
YWdlID0gY3VycmVudFBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKICAg
ICAKQEAgLTQwNiw3ICs0MDUsNyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVwZGF0
ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcnJpZGUoKQogewogICAgIFN0cmluZyBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldCA9IGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7CiAgICAgZm9yIChh
dXRvJiBwYWdlIDogbV9wYWdlR3JvdXAucGFnZXMoKSkKLSAgICAgICAgcGFnZS0+c2V0Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc1N0eWxlU2hlZXQoY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQpOwor
ICAgICAgICBwYWdlLnNldENhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0KGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0KTsKIH0KIAogU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OnByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVHJlZS5jcHAKaW5kZXggN2VjYmZmY2MzNWIwM2RjZWY1MjYzZWI5YzRiNzZkZDk3ZmU3NjVm
MS4uYzJiM2EzMzg1OGQxMTVjZTIzNmM3MjM0OTQ0NjE5YWE2YWE0NWU2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVUcmVlLmNwcApAQCAtMjY5LDEwICsyNjksMTAgQEAgRnJhbWUqIEZyYW1lVHJlZTo6
ZmluZChjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBGcmFtZSYgYWN0aXZlRnJhbWUpIGNvbnN0CiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBmb3IgKGF1
dG8qIG90aGVyUGFnZSA6IHBhZ2UtPmdyb3VwKCkucGFnZXMoKSkgewotICAgICAgICBpZiAob3Ro
ZXJQYWdlID09IHBhZ2UpCisgICAgZm9yIChhdXRvJiBvdGhlclBhZ2UgOiBwYWdlLT5ncm91cCgp
LnBhZ2VzKCkpIHsKKyAgICAgICAgaWYgKCZvdGhlclBhZ2UgPT0gcGFnZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBmb3IgKGF1dG8qIGZyYW1lID0gJm90aGVyUGFnZS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAg
ICAgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZvdGhlclBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChm
cmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSA9PSBuYW1lICYmIGlzRnJhbWVGYW1pbGlhcldpdGgo
YWN0aXZlRnJhbWUsICpmcmFtZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggOTg5OGVmMjc5YWYzYzNjMzc3
ZGNhNWVmOTQ2OTk1Zjc1OGFkM2IyYi4uYjIyZWIzYmY1MjY5ZDJmNzI1ZWUwMzBhYTY0ZGViYzUz
NzE0NjQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtOTEsMjEgKzkxLDIxIEBA
IFBhZ2VHcm91cCogUGFnZUdyb3VwOjpwYWdlR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cE5hbWUp
CiAKIHZvaWQgUGFnZUdyb3VwOjphZGRQYWdlKFBhZ2UmIHBhZ2UpCiB7Ci0gICAgQVNTRVJUKCFt
X3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7Ci0gICAgbV9wYWdlcy5hZGQoJnBhZ2UpOworICAgIEFT
U0VSVCghbV9wYWdlcy5jb250YWlucyhwYWdlKSk7CisgICAgbV9wYWdlcy5hZGQocGFnZSk7CiB9
CiAKIHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVQYWdlKFBhZ2UmIHBhZ2UpCiB7Ci0gICAgQVNTRVJU
KG1fcGFnZXMuY29udGFpbnMoJnBhZ2UpKTsKLSAgICBtX3BhZ2VzLnJlbW92ZSgmcGFnZSk7Cisg
ICAgQVNTRVJUKG1fcGFnZXMuY29udGFpbnMocGFnZSkpOworICAgIG1fcGFnZXMucmVtb3ZlKHBh
Z2UpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPKQogdm9pZCBQYWdlR3JvdXA6OmNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWQoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZXMpCi0gICAg
ICAgIHBhZ2UtPmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKKyAgICAgICAgcGFnZS5jYXB0
aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAgICAgQmFja0ZvcndhcmRDYWNoZTo6c2luZ2xldG9u
KCkubWFya1BhZ2VzRm9yQ2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuaAppbmRleCAxYmIwYTI2ZDU1YzFjM2Q4Njg0YmRjNTM1NTlmMjY5N2M0Njgx
ODEyLi5lZjdkZTJiMjFhZWE5ODg1ZDQyNmM4NGE4YThiODU5YWQyYmMyZWVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYWdlR3JvdXAqIHBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGdy
b3VwTmFtZSk7CiAKLSAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VzOyB9CisgICAgY29uc3QgV2Vha0hhc2hTZXQ8UGFnZT4mIHBhZ2VzKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlczsgfQogCiAgICAgdm9pZCBhZGRQYWdlKFBhZ2UmKTsKICAgICB2
b2lkIHJlbW92ZVBhZ2UoUGFnZSYpOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBIYXNoU2V0PFBhZ2UqPiBtX3BhZ2VzOworICAg
IFdlYWtIYXNoU2V0PFBhZ2U+IG1fcGFnZXM7CiAKICAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcAppbmRl
eCAwNzRjNDBhZThiMWQ1MDcwMTQ5MTViYjljZTdjZGY1NzcxY2Y3NWMwLi4xZWZmYTA2NzBhZTc4
OTgzMTAxODI5YzJjMmFkMWY3ZTY5MjMwMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogUGFnZUdyb3VwTG9hZERlZmVycmVyOjpQYWdlR3JvdXBMb2FkRGVmZXJyZXIoUGFn
ZSYgcGFnZSwgYm9vbCBkZWZlclNlbGYpCiB7CiAgICAgZm9yIChhdXRvJiBvdGhlclBhZ2UgOiBw
YWdlLmdyb3VwKCkucGFnZXMoKSkgewotICAgICAgICBpZiAoKGRlZmVyU2VsZiB8fCBvdGhlclBh
Z2UgIT0gJnBhZ2UpKSB7Ci0gICAgICAgICAgICBpZiAoIW90aGVyUGFnZS0+ZGVmZXJzTG9hZGlu
ZygpKSB7Ci0gICAgICAgICAgICAgICAgbV9kZWZlcnJlZEZyYW1lcy5hcHBlbmQoJm90aGVyUGFn
ZS0+bWFpbkZyYW1lKCkpOworICAgICAgICBpZiAoKGRlZmVyU2VsZiB8fCAmb3RoZXJQYWdlICE9
ICZwYWdlKSkgeworICAgICAgICAgICAgaWYgKCFvdGhlclBhZ2UuZGVmZXJzTG9hZGluZygpKSB7
CisgICAgICAgICAgICAgICAgbV9kZWZlcnJlZEZyYW1lcy5hcHBlbmQoJm90aGVyUGFnZS5tYWlu
RnJhbWUoKSk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGNvZGUgaXMgbm90IGxvZ2ljYWxs
eSBwYXJ0IG9mIGxvYWQgZGVmZXJyaW5nLCBidXQgd2UgZG8gbm90IHdhbnQgSlMgY29kZSBleGVj
dXRlZCBiZW5lYXRoIG1vZGFsCiAgICAgICAgICAgICAgICAgLy8gd2luZG93cyBvciBzaGVldHMs
IHdoaWNoIGlzIGV4YWN0bHkgd2hlbiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIgaXMgdXNlZC4KLSAg
ICAgICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZvdGhlclBhZ2UtPm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAg
ICAgICAgIGZvciAoYXV0byogZnJhbWUgPSAmb3RoZXJQYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQogICAgICAgICAgICAgICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3VzcGVuZFNjaGVkdWxlZFRhc2tzKFJlYXNvbkZvclN1c3Bl
bnNpb246OldpbGxEZWZlckxvYWRpbmcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmNwcAppbmRleCA5ZWVjOWE2NmY4
NmE4ZjdhZjYzMzgyYjA0NzA2ZDQ1ZjU4ZDA5ZGZjLi4xNmIzZDAxZjBhZmY4NGE1N2VkZDYxOTI1
MzhhYWIyMjkwMzNjNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92
aWRlci5jcHAKQEAgLTQ2LDQ3ICs0Niw0NyBAQCBVc2VyQ29udGVudFByb3ZpZGVyOjpVc2VyQ29u
dGVudFByb3ZpZGVyKCkKIAogVXNlckNvbnRlbnRQcm92aWRlcjo6flVzZXJDb250ZW50UHJvdmlk
ZXIoKQogewotICAgIEFTU0VSVChtX3BhZ2VzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcGFn
ZXMuY29tcHV0ZXNFbXB0eSgpKTsKIH0KIAogdm9pZCBVc2VyQ29udGVudFByb3ZpZGVyOjphZGRQ
YWdlKFBhZ2UmIHBhZ2UpCiB7Ci0gICAgQVNTRVJUKCFtX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7
CisgICAgQVNTRVJUKCFtX3BhZ2VzLmNvbnRhaW5zKHBhZ2UpKTsKIAotICAgIG1fcGFnZXMuYWRk
KCZwYWdlKTsKKyAgICBtX3BhZ2VzLmFkZChwYWdlKTsKIH0KIAogdm9pZCBVc2VyQ29udGVudFBy
b3ZpZGVyOjpyZW1vdmVQYWdlKFBhZ2UmIHBhZ2UpCiB7Ci0gICAgQVNTRVJUKG1fcGFnZXMuY29u
dGFpbnMoJnBhZ2UpKTsKKyAgICBBU1NFUlQobV9wYWdlcy5jb250YWlucyhwYWdlKSk7CiAKLSAg
ICBtX3BhZ2VzLnJlbW92ZSgmcGFnZSk7CisgICAgbV9wYWdlcy5yZW1vdmUocGFnZSk7CiB9CiAK
IHZvaWQgVXNlckNvbnRlbnRQcm92aWRlcjo6cmVnaXN0ZXJGb3JVc2VyTWVzc2FnZUhhbmRsZXJJ
bnZhbGlkYXRpb24oVXNlckNvbnRlbnRQcm92aWRlckludmFsaWRhdGlvbkNsaWVudCYgaW52YWxp
ZGF0aW9uQ2xpZW50KQogewotICAgIEFTU0VSVCghbV91c2VyTWVzc2FnZUhhbmRsZXJJbnZhbGlk
YXRpb25DbGllbnRzLmNvbnRhaW5zKCZpbnZhbGlkYXRpb25DbGllbnQpKTsKKyAgICBBU1NFUlQo
IW1fdXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9uQ2xpZW50cy5jb250YWlucyhpbnZhbGlk
YXRpb25DbGllbnQpKTsKIAogICAgIG1fdXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9uQ2xp
ZW50cy5hZGQoJmludmFsaWRhdGlvbkNsaWVudCk7CiB9CiAKIHZvaWQgVXNlckNvbnRlbnRQcm92
aWRlcjo6dW5yZWdpc3RlckZvclVzZXJNZXNzYWdlSGFuZGxlckludmFsaWRhdGlvbihVc2VyQ29u
dGVudFByb3ZpZGVySW52YWxpZGF0aW9uQ2xpZW50JiBpbnZhbGlkYXRpb25DbGllbnQpCiB7Ci0g
ICAgQVNTRVJUKG1fdXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9uQ2xpZW50cy5jb250YWlu
cygmaW52YWxpZGF0aW9uQ2xpZW50KSk7CisgICAgQVNTRVJUKG1fdXNlck1lc3NhZ2VIYW5kbGVy
SW52YWxpZGF0aW9uQ2xpZW50cy5jb250YWlucyhpbnZhbGlkYXRpb25DbGllbnQpKTsKIAotICAg
IG1fdXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9uQ2xpZW50cy5yZW1vdmUoJmludmFsaWRh
dGlvbkNsaWVudCk7CisgICAgbV91c2VyTWVzc2FnZUhhbmRsZXJJbnZhbGlkYXRpb25DbGllbnRz
LnJlbW92ZShpbnZhbGlkYXRpb25DbGllbnQpOwogfQogCiB2b2lkIFVzZXJDb250ZW50UHJvdmlk
ZXI6OmludmFsaWRhdGVBbGxSZWdpc3RlcmVkVXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9u
Q2xpZW50cygpCiB7CiAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX3VzZXJNZXNzYWdlSGFuZGxl
ckludmFsaWRhdGlvbkNsaWVudHMpCi0gICAgICAgIGNsaWVudC0+ZGlkSW52YWxpZGF0ZSgqdGhp
cyk7CisgICAgICAgIGNsaWVudC5kaWRJbnZhbGlkYXRlKCp0aGlzKTsKIH0KIAogdm9pZCBVc2Vy
Q29udGVudFByb3ZpZGVyOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZy
YW1lc0luQWxsUGFnZXMoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZXMpCi0gICAg
ICAgIHBhZ2UtPmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7
CisgICAgICAgIHBhZ2UuaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFt
ZXMoKTsKIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCmluZGV4IDQwNGEwYmNjOTNhYmU3M2IxZmVjZTk5
MmFiZjkyN2M1MzA4ZjJlZGMuLmQ5YTIxYjQxMzBlNDY2ZGUyYWFmMTcyMWZkZThlNWNmYjZjYmI4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCkBAIC0zMCw2
ICszMCw4IEBACiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogI2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgiCkBAIC01Niw3
ICs1OCw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOwogCiBjbGFzcyBVc2VyQ29udGVudFBy
b3ZpZGVyOwogCi1jbGFzcyBVc2VyQ29udGVudFByb3ZpZGVySW52YWxpZGF0aW9uQ2xpZW50IHsK
K2NsYXNzIFVzZXJDb250ZW50UHJvdmlkZXJJbnZhbGlkYXRpb25DbGllbnQgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8VXNlckNvbnRlbnRQcm92aWRlckludmFsaWRhdGlvbkNsaWVudD4gewogcHVi
bGljOgogICAgIHZpcnR1YWwgflVzZXJDb250ZW50UHJvdmlkZXJJbnZhbGlkYXRpb25DbGllbnQo
KQogICAgIHsKQEAgLTk4LDggKzEwMCw4IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzSW5BbGxQ
YWdlcygpOwogCiBwcml2YXRlOgotICAgIEhhc2hTZXQ8UGFnZSo+IG1fcGFnZXM7Ci0gICAgSGFz
aFNldDxVc2VyQ29udGVudFByb3ZpZGVySW52YWxpZGF0aW9uQ2xpZW50Kj4gbV91c2VyTWVzc2Fn
ZUhhbmRsZXJJbnZhbGlkYXRpb25DbGllbnRzOworICAgIFdlYWtIYXNoU2V0PFBhZ2U+IG1fcGFn
ZXM7CisgICAgV2Vha0hhc2hTZXQ8VXNlckNvbnRlbnRQcm92aWRlckludmFsaWRhdGlvbkNsaWVu
dD4gbV91c2VyTWVzc2FnZUhhbmRsZXJJbnZhbGlkYXRpb25DbGllbnRzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaXNpdGVk
TGlua1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5jcHAK
aW5kZXggZDdhNThiNWVmMmM2ZWViNWQ3ZDhhODIzZDUwYmY5ODk0OWZhNDU3OS4uYzk2N2M5NzI3
M2M4MDcyN2MxOGFiNjNhNjdiM2RhYzcyMTk4OGU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9WaXNpdGVkTGlua1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zp
c2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0zNiwzMyArMzYsMzMgQEAgVmlzaXRlZExpbmtTdG9yZTo6
VmlzaXRlZExpbmtTdG9yZSgpCiAKIFZpc2l0ZWRMaW5rU3RvcmU6On5WaXNpdGVkTGlua1N0b3Jl
KCkKIHsKLSAgICBBU1NFUlQobV9wYWdlcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3BhZ2Vz
LmNvbXB1dGVzRW1wdHkoKSk7CiB9CiAKIHZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkUGFnZShQ
YWdlJiBwYWdlKQogewotICAgIEFTU0VSVCghbV9wYWdlcy5jb250YWlucygmcGFnZSkpOworICAg
IEFTU0VSVCghbV9wYWdlcy5jb250YWlucyhwYWdlKSk7CiAKLSAgICBtX3BhZ2VzLmFkZCgmcGFn
ZSk7CisgICAgbV9wYWdlcy5hZGQocGFnZSk7CiB9CiAKIHZvaWQgVmlzaXRlZExpbmtTdG9yZTo6
cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQogewotICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZw
YWdlKSk7CisgICAgQVNTRVJUKG1fcGFnZXMuY29udGFpbnMocGFnZSkpOwogCi0gICAgbV9wYWdl
cy5yZW1vdmUoJnBhZ2UpOworICAgIG1fcGFnZXMucmVtb3ZlKHBhZ2UpOwogfQogCiB2b2lkIFZp
c2l0ZWRMaW5rU3RvcmU6OmludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpCiB7CiAgICAgZm9y
IChhdXRvJiBwYWdlIDogbV9wYWdlcykKLSAgICAgICAgcGFnZS0+aW52YWxpZGF0ZVN0eWxlc0Zv
ckFsbExpbmtzKCk7CisgICAgICAgIHBhZ2UuaW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCk7
CiB9CiAKIHZvaWQgVmlzaXRlZExpbmtTdG9yZTo6aW52YWxpZGF0ZVN0eWxlc0ZvckxpbmsoU2hh
cmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKIHsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2Vz
KQotICAgICAgICBwYWdlLT5pbnZhbGlkYXRlU3R5bGVzRm9yTGluayhsaW5rSGFzaCk7CisgICAg
ICAgIHBhZ2UuaW52YWxpZGF0ZVN0eWxlc0ZvckxpbmsobGlua0hhc2gpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRM
aW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4
IGJmYzBiOTA2MzM5OTY5NWM2YjVkOWMzMDllODM4OTU4MjY0NWEyMWUuLjMzYTI4ZDQzNDEwMjMz
YjJjMDk4MmI4NDNkYjRiZjFkOWVlODM0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExp
bmtTdG9yZS5oCkBAIC0yNiw4ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaW52YWxpZGF0ZVN0eWxlc0ZvckxpbmsoU2hhcmVkU3RyaW5nSGFzaCk7CiAKIHByaXZhdGU6
Ci0gICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsKKyAgICBXZWFrSGFzaFNldDxQYWdlPiBtX3Bh
Z2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuY3BwCmluZGV4IGFhOGQ3NzNlYTg0Y2MzZWU0ZTMyNDVm
YmZiZDgyM2ViZDYyYmExYWIuLjRjYTlmZDYzZDkwYTVlOGY5NzM2ZjRmNjdlZDU1MzdmNGJlNmNj
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luSW5mb1Byb3ZpZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkluZm9Qcm92aWRlci5jcHAK
QEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsdWdpbkluZm9Qcm92
aWRlcjo6flBsdWdpbkluZm9Qcm92aWRlcigpCiB7Ci0gICAgQVNTRVJUKG1fcGFnZXMuaXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQobV9wYWdlcy5jb21wdXRlc0VtcHR5KCkpOwogfQogCiB2b2lkIFBs
dWdpbkluZm9Qcm92aWRlcjo6Y2xlYXJQYWdlc1BsdWdpbkRhdGEoKQogewogICAgIGZvciAoYXV0
byYgcGFnZSA6IG1fcGFnZXMpCi0gICAgICAgIHBhZ2UtPmNsZWFyUGx1Z2luRGF0YSgpOworICAg
ICAgICBwYWdlLmNsZWFyUGx1Z2luRGF0YSgpOwogfQogCiB2b2lkIFBsdWdpbkluZm9Qcm92aWRl
cjo6cmVmcmVzaChib29sIHJlbG9hZFBhZ2VzKQpAQCAtNTEsMTQgKzUxLDE0IEBAIHZvaWQgUGx1
Z2luSW5mb1Byb3ZpZGVyOjpyZWZyZXNoKGJvb2wgcmVsb2FkUGFnZXMpCiAgICAgVmVjdG9yPFJl
ZjxGcmFtZT4+IGZyYW1lc05lZWRpbmdSZWxvYWQ7CiAKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBt
X3BhZ2VzKSB7Ci0gICAgICAgIHBhZ2UtPmNsZWFyUGx1Z2luRGF0YSgpOworICAgICAgICBwYWdl
LmNsZWFyUGx1Z2luRGF0YSgpOwogCiAgICAgICAgIGlmICghcmVsb2FkUGFnZXMpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5tYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewor
ICAgICAgICBmb3IgKGF1dG8qIGZyYW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChmcmFt
ZS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5jb250YWluc1BsdWdpbnMoKSkKLSAgICAgICAg
ICAgICAgICBmcmFtZXNOZWVkaW5nUmVsb2FkLmFwcGVuZChwYWdlLT5tYWluRnJhbWUoKSk7Cisg
ICAgICAgICAgICAgICAgZnJhbWVzTmVlZGluZ1JlbG9hZC5hcHBlbmQocGFnZS5tYWluRnJhbWUo
KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY4LDE2ICs2OCwxNiBAQCB2b2lkIFBsdWdpbklu
Zm9Qcm92aWRlcjo6cmVmcmVzaChib29sIHJlbG9hZFBhZ2VzKQogCiB2b2lkIFBsdWdpbkluZm9Q
cm92aWRlcjo6YWRkUGFnZShQYWdlJiBwYWdlKQogewotICAgIEFTU0VSVCghbV9wYWdlcy5jb250
YWlucygmcGFnZSkpOworICAgIEFTU0VSVCghbV9wYWdlcy5jb250YWlucyhwYWdlKSk7CiAKLSAg
ICBtX3BhZ2VzLmFkZCgmcGFnZSk7CisgICAgbV9wYWdlcy5hZGQocGFnZSk7CiB9CiAKIHZvaWQg
UGx1Z2luSW5mb1Byb3ZpZGVyOjpyZW1vdmVQYWdlKFBhZ2UmIHBhZ2UpCiB7Ci0gICAgQVNTRVJU
KG1fcGFnZXMuY29udGFpbnMoJnBhZ2UpKTsKKyAgICBBU1NFUlQobV9wYWdlcy5jb250YWlucyhw
YWdlKSk7CiAKLSAgICBtX3BhZ2VzLnJlbW92ZSgmcGFnZSk7CisgICAgbV9wYWdlcy5yZW1vdmUo
cGFnZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
SW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkluZm9Qcm92aWRl
ci5oCmluZGV4IDNkNmI0OGE3ZjM5MzBjNzE3ZTc0M2VhZTRiYzgxMzNlMzUyMjgxMjAuLjI1NmUx
NTJiZTZhNGY0Y2FkNWM5NGRhYWMxYjVjMTdjNjVlNWNlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luSW5mb1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuaApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlZnJl
c2hQbHVnaW5zKCkgPSAwOwogCi0gICAgSGFzaFNldDxQYWdlKj4gbV9wYWdlczsKKyAgICBXZWFr
SGFzaFNldDxQYWdlPiBtX3BhZ2VzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggMjg2NmFhOTNhNzYwMjQ0Yzlk
N2EwNTk2YzQ5YTViZmMxM2EzNjA5OC4uMDFkNzlkMGIwZDI1NWViNGU5ZTdiOGJlZDNhZTY5NWJm
OTNmYmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnRE
aXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERp
c3BhdGNoZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0CiAK
ICAgICAvLyBTZW5kIGV2ZW50cyB0byBldmVyeSBwYWdlLgogICAgIGZvciAoYXV0byYgcGFnZUlu
R3JvdXAgOiBwYWdlLT5ncm91cCgpLnBhZ2VzKCkpIHsKLSAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAmcGFnZUluR3JvdXAtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZvciAoYXV0byogZnJhbWUgPSAmcGFnZUlu
R3JvdXAubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VO
ZXh0KCkpIHsKICAgICAgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoc291cmNlRnJhbWUgIT0gZnJhbWUgJiYg
ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuZXF1YWwoc2VjdXJpdHlPcmlnaW4u
c2VjdXJpdHlPcmlnaW4oKS5wdHIoKSkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgU3RvcmFnZUV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2Um
IHBhZ2UsIGNvCiB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9y
YWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgZm9yIChhdXRvJiBwYWdl
IDogcGFnZUdyb3VwLnBhZ2VzKCkpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoKnBhZ2UsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVl
LCBTdG9yYWdlVHlwZTo6TG9jYWwsIHNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkucHRy
KCkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRE9NU3Rv
cmFnZUV2ZW50KHBhZ2UsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZTo6TG9j
YWwsIHNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkucHRyKCkpOwogCiAgICAgZm9yIChh
dXRvJiBmcmFtZSA6IGZyYW1lcykgewogICAgICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0
cihmcmFtZS0+ZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBhZWI1YWQxNGY5
ZjlhMDE4ZDA4ZDY1MDc2M2VhOTg3YmVlMDVmYmRlLi4xMmRmYTdhOTFjNzBkMzU4ZjMwODg2OGM2
NTI4MmZjZTBiY2VjMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTE3MCw5ICsxNzAsOCBA
QCB2b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vzc0FsbG93TGlzdHMoKQogCiB2
b2lkIEluamVjdGVkQnVuZGxlOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChX
ZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgY29uc3Qg
SGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5p
ZGVudGlmaWVyKCkpLT5wYWdlcygpOwotICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9y
IGl0ZXIgPSBwYWdlcy5iZWdpbigpOyBpdGVyICE9IHBhZ2VzLmVuZCgpOyArK2l0ZXIpCi0gICAg
ICAgICgqaXRlciktPnNldHRpbmdzKCkuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoZW5hYmxlZCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogUGFnZUdyb3VwOjpwYWdl
R3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5wYWdlcygpKQorICAgICAgICBwYWdlLnNl
dHRpbmdzKCkuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9
CiAKIGludCBJbmplY3RlZEJ1bmRsZTo6bnVtYmVyT2ZQYWdlcyhXZWJGcmFtZSogZnJhbWUsIGRv
dWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVscykKQEAgLTI4
Nyw5ICsyODYsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFn
ZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZwogCiB2b2lkIEluamVjdGVkQnVu
ZGxlOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3Jv
dXAsIGNvbnN0IFN0cmluZyYgbG9jYXRpb24pCiB7Ci0gICAgY29uc3QgSGFzaFNldDxQYWdlKj4m
IHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5w
YWdlcygpOwotICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGl0ZXIgPSBwYWdlcy5i
ZWdpbigpOyBpdGVyICE9IHBhZ2VzLmVuZCgpOyArK2l0ZXIpCi0gICAgICAgICgqaXRlciktPnNl
dHRpbmdzKCkuc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihVUkwoVVJMKCksIGxvY2F0aW9uKSk7
CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdy
b3VwLT5pZGVudGlmaWVyKCkpLT5wYWdlcygpKQorICAgICAgICBwYWdlLnNldHRpbmdzKCkuc2V0
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihVUkwoVVJMKCksIGxvY2F0aW9uKSk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OnNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV2ViUGFnZSogcGFn
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCkKQEAgLTM0Myw4ICsz
NDEsOCBAQCBJbmplY3RlZEJ1bmRsZTo6RG9jdW1lbnRJRFRvVVJMTWFwIEluamVjdGVkQnVuZGxl
OjpsaXZlRG9jdW1lbnRVUkxzKFdlYlBhZ2VHcm91cAogICAgICAgICByZXN1bHQuYWRkKGRvY3Vt
ZW50LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsK
IAogICAgIGlmIChleGNsdWRlRG9jdW1lbnRzSW5QYWdlR3JvdXBQYWdlcykgewotICAgICAgICBm
b3IgKGNvbnN0IGF1dG8qIHBhZ2UgOiBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlk
ZW50aWZpZXIoKSktPnBhZ2VzKCkpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byogZnJh
bWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWdlIDogUGFnZUdyb3Vw
OjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5wYWdlcygpKSB7CisgICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8qIGZyYW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIWZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICByZXN1bHQucmVtb3ZlKGZyYW1lLT5kb2N1bWVudCgpLT5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggZjQ5MWI2ZDJlMTgyY2YwNTk0YTliNzBm
MjI2ZTcwMDRlMzg4NTQwNS4uMmVjM2RjOGJiMTY1ZGU1MmFjZDVjZTIyNWVhY2YzOTVmMGU3MzRh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcApAQCAtMzM3LDggKzMzNyw4IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6
OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3QgT3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBs
SWRlCiAKICAgICAvLyBOYW1lc3BhY2UgSURzIGZvciBsb2NhbCBzdG9yYWdlIG5hbWVzcGFjZXMg
YXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgZ3JvdXAgSURzLgogICAgIGF1dG8mIHBhZ2VHcm91
cCA9ICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlR3JvdXAobV9uYW1lc3BhY2UucGFn
ZUdyb3VwSUQoKSktPmNvcmVQYWdlR3JvdXAoKTsKLSAgICBmb3IgKGF1dG8qIHBhZ2UgOiBwYWdl
R3JvdXAucGFnZXMoKSkKLSAgICAgICAgZnJhbWVzLmFwcGVuZFZlY3RvcihmcmFtZXNGb3JFdmVu
dERpc3BhdGNoaW5nKCpwYWdlLCBtX3NlY3VyaXR5T3JpZ2luLCBTdG9yYWdlVHlwZTo6TG9jYWws
IHN0b3JhZ2VBcmVhSW1wbElEKSk7CisgICAgZm9yIChhdXRvJiBwYWdlIDogcGFnZUdyb3VwLnBh
Z2VzKCkpCisgICAgICAgIGZyYW1lcy5hcHBlbmRWZWN0b3IoZnJhbWVzRm9yRXZlbnREaXNwYXRj
aGluZyhwYWdlLCBtX3NlY3VyaXR5T3JpZ2luLCBTdG9yYWdlVHlwZTo6TG9jYWwsIHN0b3JhZ2VB
cmVhSW1wbElEKSk7CiAKICAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBu
ZXdWYWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417016</attachid>
            <date>2021-01-05 10:07:58 -0800</date>
            <delta_ts>2021-01-05 10:08:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220102-20210105100756.patch</filename>
            <type>text/plain</type>
            <size>25188</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTY4ZTM5OGY0OGEwMTgw
Nzg1YzIxZTY3YjUwYTk5ZGZjZGEyZjA3Yi4uMjBmNmE5NDVmNGNmYTQ3ZTQ5YTE3ZTZhZDg1NWE4
YmFiN2NkZjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIxLTAxLTA1ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFdl
YWtIYXNoU2V0PFBhZ2U+IGluc3RlYWQgb2YgSGFzaFNldDxQYWdlKj4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDEwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoZSBmb3JtZXIgaXMgbW9yZSByZXNpc3Rl
bnQgdG8gdXNpbmcgYSByYXcgcG9pbnRlciBhZnRlciB0aGUgb2JqZWN0IGhhcyBiZWVuIGZyZWVk
LgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlRGVidWdnZXI6OnNldEphdmFTY3JpcHRQYXVzZWQpOgorICAgICAgICAqIHBhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpjdXJyZW50UGFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc0NhcHRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzQ2FwdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNT
dWJ0aXRsZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6c2V0VXNlclByZWZlcnNTdWJ0aXRsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNUZXh0RGVzY3JpcHRpb25zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzVGV4dERl
c2NyaXB0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1
cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJyaWRlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJl
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmZpbmQgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRk
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OnJlbW92ZVBhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpwYWdl
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OiBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVyOjpQYWdlR3JvdXBMb2FkRGVmZXJyZXIpOgorICAg
ICAgICAqIHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQ29udGVudFByb3ZpZGVyOjp+VXNlckNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyQ29udGVudFByb3ZpZGVyOjphZGRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJDb250ZW50UHJvdmlkZXI6OnJlbW92ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNv
bnRlbnRQcm92aWRlcjo6cmVnaXN0ZXJGb3JVc2VyTWVzc2FnZUhhbmRsZXJJbnZhbGlkYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRlcjo6dW5yZWdpc3RlckZvclVz
ZXJNZXNzYWdlSGFuZGxlckludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29u
dGVudFByb3ZpZGVyOjppbnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFVzZXJNZXNzYWdlSGFuZGxlcklu
dmFsaWRhdGlvbkNsaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRQcm92aWRl
cjo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXNJbkFsbFBhZ2Vz
KToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwYWdl
L1Zpc2l0ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9y
ZTo6flZpc2l0ZWRMaW5rU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlzaXRlZExpbmtTdG9y
ZTo6YWRkUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0b3JlOjpyZW1vdmVQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RvcmU6OmludmFsaWRhdGVTdHls
ZXNGb3JBbGxMaW5rcyk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpdGVkTGlua1N0b3JlOjppbnZh
bGlkYXRlU3R5bGVzRm9yTGluayk6CisgICAgICAgICogcGFnZS9WaXNpdGVkTGlua1N0b3JlLmg6
CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luSW5mb1Byb3ZpZGVyOjp+UGx1Z2luSW5mb1Byb3ZpZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlcjo6Y2xlYXJQYWdlc1BsdWdpbkRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luSW5mb1Byb3ZpZGVyOjpyZWZyZXNoKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsdWdpbkluZm9Qcm92aWRlcjo6YWRkUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5JbmZvUHJvdmlkZXI6OnJlbW92ZVBhZ2UpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2lu
SW5mb1Byb3ZpZGVyLmg6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
TG9jYWxTdG9yYWdlRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMpOgorCiAyMDIxLTAxLTA1
ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBWElz
b2xhdGVkT2JqZWN0Ojpkb0FYU3RyaW5nRm9yUmFuZ2UgbXVzdCByZXR1cm4gYW4gaXNvbGF0ZWRD
b3B5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA5MzY0NmZjMjA5ZWQxMjEyMmI4YTRhNzVlN2EzOTUyOTkwZWNmNzU5
Li5jMzAzOTFhZWUxYmZkYjg4OGJmZjI0OThjN2Y3YThhZTMzY2Q4NmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIxLTAxLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFdlYWtIYXNoU2V0PFBhZ2U+IGluc3RlYWQgb2Yg
SGFzaFNldDxQYWdlKj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMDEwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmxpdmVE
b2N1bWVudFVSTHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50KToKKwogMjAyMS0wMS0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBzZW5kV2l0aEFzeW5jUmVwbHkgaW5zdGVh
ZCBvZiBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlRGVidWdnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VEZWJ1Z2dlci5jcHAKaW5kZXggNTEzMzZlMGZmMGRlYWNjY2I5MWMwYjEyODAxY2ZiMDc3MmEx
ZmQ5MS4uNTY5MGJmYTJmZDNmOTlmNDAzYjU1N2JhMzYwMDkyOGJhZTkzZDZjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlci5jcHAKQEAgLTE0OCwxMCArMTQ4LDEwIEBA
IHZvaWQgUGFnZURlYnVnZ2VyOjpyZXBvcnRFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIHN0YXRl
LCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0CiB2b2lkIFBhZ2VEZWJ1Z2dlcjo6c2V0SmF2YVNjcmlw
dFBhdXNlZChjb25zdCBQYWdlR3JvdXAmIHBhZ2VHcm91cCwgYm9vbCBwYXVzZWQpCiB7CiAgICAg
Zm9yIChhdXRvJiBwYWdlIDogcGFnZUdyb3VwLnBhZ2VzKCkpIHsKLSAgICAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZvciAoYXV0byogZnJhbWUgPSAmcGFnZS5tYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAg
ICAgICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQoKmZyYW1lLCBwYXVzZWQpOwogCi0gICAgICAg
IGlmIChhdXRvKiBmcm9udGVuZENsaWVudCA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5p
bnNwZWN0b3JGcm9udGVuZENsaWVudCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBmcm9udGVuZENs
aWVudCA9IHBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZyb250ZW5kQ2xpZW50
KCkpIHsKICAgICAgICAgICAgIGlmIChwYXVzZWQpCiAgICAgICAgICAgICAgICAgZnJvbnRlbmRD
bGllbnQtPnBhZ2VQYXVzZWQoKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCmluZGV4IGMyMjRkMzg1NGUxZjBkNDM4
YzU2YmE0ODU5YWU1OTdiNWUwZjAzOWIuLmJiMjcwMmJkZmEzYTY0NDA4MWE3NzE2YzFiMzc3MzIw
ZWE0MTFkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmNwcApAQCAtMTAwLDE1ICsxMDAsMTQgQEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
OjpzZXRDYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGkKIAog
UGFnZSogQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y3VycmVudFBhZ2UoKSBjb25zdAogewotICAg
IGlmIChtX3BhZ2VHcm91cC5wYWdlcygpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICByZXR1cm4gKihtX3BhZ2VHcm91cC5wYWdlcygpLmJlZ2luKCkpOworICAgIGZv
ciAoYXV0byYgcGFnZSA6IG1fcGFnZUdyb3VwLnBhZ2VzKCkpCisgICAgICAgIHJldHVybiAmcGFn
ZTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
Ojp1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3QKIHsKLSAgICBQYWdlKiBwYWdlID0gY3VycmVu
dFBhZ2UoKTsKKyAgICBhdXRvKiBwYWdlID0gY3VycmVudFBhZ2UoKTsKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTE3LDcgKzExNiw3IEBAIGJvb2wgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0CiAKIHZvaWQgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZlcnNDYXB0aW9ucyhib29sIHByZWZlcmVu
Y2UpCiB7Ci0gICAgUGFnZSogcGFnZSA9IGN1cnJlbnRQYWdlKCk7CisgICAgYXV0byogcGFnZSA9
IGN1cnJlbnRQYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTEy
Nyw3ICsxMjYsNyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJz
Q2FwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKQogCiBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6
OnVzZXJQcmVmZXJzU3VidGl0bGVzKCkgY29uc3QKIHsKLSAgICBQYWdlKiBwYWdlID0gY3VycmVu
dFBhZ2UoKTsKKyAgICBhdXRvKiBwYWdlID0gY3VycmVudFBhZ2UoKTsKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTM2LDcgKzEzNSw3IEBAIGJvb2wgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6dXNlclByZWZlcnNTdWJ0aXRsZXMoKSBjb25zdAogCiB2b2lkIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGJvb2wgcHJlZmVy
ZW5jZSkKIHsKLSAgICBQYWdlKiBwYWdlID0gY3VycmVudFBhZ2UoKTsKKyAgICBhdXRvKiBwYWdl
ID0gY3VycmVudFBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTQ2LDcgKzE0NSw3IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0VXNlclByZWZl
cnNTdWJ0aXRsZXMoYm9vbCBwcmVmZXJlbmNlKQogCiBib29sIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucygpIGNvbnN0CiB7Ci0gICAgUGFnZSogcGFn
ZSA9IGN1cnJlbnRQYWdlKCk7CisgICAgYXV0byogcGFnZSA9IGN1cnJlbnRQYWdlKCk7CiAgICAg
aWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xNTUsNyArMTU0LDcg
QEAgYm9vbCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1c2VyUHJlZmVyc1RleHREZXNjcmlwdGlv
bnMoKSBjb25zdAogCiB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldFVzZXJQcmVmZXJz
VGV4dERlc2NyaXB0aW9ucyhib29sIHByZWZlcmVuY2UpCiB7Ci0gICAgUGFnZSogcGFnZSA9IGN1
cnJlbnRQYWdlKCk7CisgICAgYXV0byogcGFnZSA9IGN1cnJlbnRQYWdlKCk7CiAgICAgaWYgKCFw
YWdlKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC00MDYsNyArNDA1LDcgQEAgdm9pZCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJyaWRlKCkKIHsK
ICAgICBTdHJpbmcgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQgPSBjYXB0aW9uc1N0eWxlU2hl
ZXRPdmVycmlkZSgpOwogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZUdyb3VwLnBhZ2VzKCkp
Ci0gICAgICAgIHBhZ2UtPnNldENhcHRpb25Vc2VyUHJlZmVyZW5jZXNTdHlsZVNoZWV0KGNhcHRp
b25zT3ZlcnJpZGVTdHlsZVNoZWV0KTsKKyAgICAgICAgcGFnZS5zZXRDYXB0aW9uVXNlclByZWZl
cmVuY2VzU3R5bGVTaGVldChjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldCk7CiB9CiAKIFN0cmlu
ZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpwcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJp
ZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDdlY2JmZmNjMzViMDNk
Y2VmNTI2M2ViOWM0Yjc2ZGQ5N2ZlNzY1ZjEuLmMyYjNhMzM4NThkMTE1Y2UyMzZjNzIzNDk0NDYx
OWFhNmFhNDVlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTI2OSwxMCArMjY5
LDEwIEBAIEZyYW1lKiBGcmFtZVRyZWU6OmZpbmQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgRnJh
bWUmIGFjdGl2ZUZyYW1lKSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCi0gICAgZm9yIChhdXRvKiBvdGhlclBhZ2UgOiBwYWdlLT5ncm91cCgpLnBh
Z2VzKCkpIHsKLSAgICAgICAgaWYgKG90aGVyUGFnZSA9PSBwYWdlKQorICAgIGZvciAoYXV0byYg
b3RoZXJQYWdlIDogcGFnZS0+Z3JvdXAoKS5wYWdlcygpKSB7CisgICAgICAgIGlmICgmb3RoZXJQ
YWdlID09IHBhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZm9yIChhdXRvKiBm
cmFtZSA9ICZvdGhlclBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZvciAoYXV0byogZnJhbWUgPSAmb3RoZXJQ
YWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkgPT0gbmFt
ZSAmJiBpc0ZyYW1lRmFtaWxpYXJXaXRoKGFjdGl2ZUZyYW1lLCAqZnJhbWUpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmcmFtZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3Bw
CmluZGV4IDk4OThlZjI3OWFmM2MzYzM3N2RjYTVlZjk0Njk5NWY3NThhZDNiMmIuLmIyMmViM2Jm
NTI2OWQyZjcyNWVlMDMwYWE2NGRlYmM1MzcxNDY0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5jcHAKQEAgLTkxLDIxICs5MSwyMSBAQCBQYWdlR3JvdXAqIFBhZ2VHcm91cDo6cGFnZUdyb3Vw
KGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKQogCiB2b2lkIFBhZ2VHcm91cDo6YWRkUGFnZShQYWdl
JiBwYWdlKQogewotICAgIEFTU0VSVCghbV9wYWdlcy5jb250YWlucygmcGFnZSkpOwotICAgIG1f
cGFnZXMuYWRkKCZwYWdlKTsKKyAgICBBU1NFUlQoIW1fcGFnZXMuY29udGFpbnMocGFnZSkpOwor
ICAgIG1fcGFnZXMuYWRkKHBhZ2UpOwogfQogCiB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlUGFnZShQ
YWdlJiBwYWdlKQogewotICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7Ci0gICAg
bV9wYWdlcy5yZW1vdmUoJnBhZ2UpOworICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRhaW5zKHBhZ2Up
KTsKKyAgICBtX3BhZ2VzLnJlbW92ZShwYWdlKTsKIH0KIAogI2lmIEVOQUJMRShWSURFTykKIHZv
aWQgUGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKIHsKICAgICBmb3IgKGF1
dG8mIHBhZ2UgOiBtX3BhZ2VzKQotICAgICAgICBwYWdlLT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFu
Z2VkKCk7CisgICAgICAgIHBhZ2UuY2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwogICAgIEJh
Y2tGb3J3YXJkQ2FjaGU6OnNpbmdsZXRvbigpLm1hcmtQYWdlc0ZvckNhcHRpb25QcmVmZXJlbmNl
c0NoYW5nZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3Jv
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKaW5kZXggMWJiMGEyNmQ1NWMx
YzNkODY4NGJkYzUzNTU5ZjI2OTdjNDY4MTgxMi4uZWY3ZGUyYjIxYWVhOTg4NWQ0MjZjODRhOGE4
Yjg1OWFkMmJjMmVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCkBAIC0yNSw4ICsyNSw4IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFnZUdyb3VwKiBw
YWdlR3JvdXAoY29uc3QgU3RyaW5nJiBncm91cE5hbWUpOwogCi0gICAgY29uc3QgSGFzaFNldDxQ
YWdlKj4mIHBhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlczsgfQorICAgIGNvbnN0IFdlYWtI
YXNoU2V0PFBhZ2U+JiBwYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZXM7IH0KIAogICAgIHZv
aWQgYWRkUGFnZShQYWdlJik7CiAgICAgdm9pZCByZW1vdmVQYWdlKFBhZ2UmKTsKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgSGFz
aFNldDxQYWdlKj4gbV9wYWdlczsKKyAgICBXZWFrSGFzaFNldDxQYWdlPiBtX3BhZ2VzOwogCiAg
ICAgdW5zaWduZWQgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VH
cm91cExvYWREZWZlcnJlci5jcHAKaW5kZXggMDc0YzQwYWU4YjFkNTA3MDE0OTE1YmI5Y2U3Y2Rm
NTc3MWNmNzVjMC4uMWVmZmEwNjcwYWU3ODk4MzEwMTgyOWMyYzJhZDFmN2U2OTIzMDI5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcApAQCAtMzMs
MTMgKzMzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhZ2VHcm91cExvYWREZWZlcnJlcjo6
UGFnZUdyb3VwTG9hZERlZmVycmVyKFBhZ2UmIHBhZ2UsIGJvb2wgZGVmZXJTZWxmKQogewogICAg
IGZvciAoYXV0byYgb3RoZXJQYWdlIDogcGFnZS5ncm91cCgpLnBhZ2VzKCkpIHsKLSAgICAgICAg
aWYgKChkZWZlclNlbGYgfHwgb3RoZXJQYWdlICE9ICZwYWdlKSkgewotICAgICAgICAgICAgaWYg
KCFvdGhlclBhZ2UtPmRlZmVyc0xvYWRpbmcoKSkgewotICAgICAgICAgICAgICAgIG1fZGVmZXJy
ZWRGcmFtZXMuYXBwZW5kKCZvdGhlclBhZ2UtPm1haW5GcmFtZSgpKTsKKyAgICAgICAgaWYgKChk
ZWZlclNlbGYgfHwgJm90aGVyUGFnZSAhPSAmcGFnZSkpIHsKKyAgICAgICAgICAgIGlmICghb3Ro
ZXJQYWdlLmRlZmVyc0xvYWRpbmcoKSkgeworICAgICAgICAgICAgICAgIG1fZGVmZXJyZWRGcmFt
ZXMuYXBwZW5kKCZvdGhlclBhZ2UubWFpbkZyYW1lKCkpOwogCiAgICAgICAgICAgICAgICAgLy8g
VGhpcyBjb2RlIGlzIG5vdCBsb2dpY2FsbHkgcGFydCBvZiBsb2FkIGRlZmVycmluZywgYnV0IHdl
IGRvIG5vdCB3YW50IEpTIGNvZGUgZXhlY3V0ZWQgYmVuZWF0aCBtb2RhbAogICAgICAgICAgICAg
ICAgIC8vIHdpbmRvd3Mgb3Igc2hlZXRzLCB3aGljaCBpcyBleGFjdGx5IHdoZW4gUGFnZUdyb3Vw
TG9hZERlZmVycmVyIGlzIHVzZWQuCi0gICAgICAgICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUg
PSAmb3RoZXJQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGZyYW1lID0gJm90aGVy
UGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoKSkKICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN1c3BlbmRTY2hl
ZHVsZWRUYXNrcyhSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92
aWRlci5jcHAKaW5kZXggOWVlYzlhNjZmODZhOGY3YWY2MzM4MmIwNDcwNmQ0NWY1OGQwOWRmYy4u
MTZiM2QwMWYwYWZmODRhNTdlZGQ2MTkyNTM4YWFiMjI5MDMzYzQ2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuY3BwCkBAIC00Niw0NyArNDYsNDcgQEAgVXNl
ckNvbnRlbnRQcm92aWRlcjo6VXNlckNvbnRlbnRQcm92aWRlcigpCiAKIFVzZXJDb250ZW50UHJv
dmlkZXI6On5Vc2VyQ29udGVudFByb3ZpZGVyKCkKIHsKLSAgICBBU1NFUlQobV9wYWdlcy5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVChtX3BhZ2VzLmNvbXB1dGVzRW1wdHkoKSk7CiB9CiAKIHZvaWQg
VXNlckNvbnRlbnRQcm92aWRlcjo6YWRkUGFnZShQYWdlJiBwYWdlKQogewotICAgIEFTU0VSVCgh
bV9wYWdlcy5jb250YWlucygmcGFnZSkpOworICAgIEFTU0VSVCghbV9wYWdlcy5jb250YWlucyhw
YWdlKSk7CiAKLSAgICBtX3BhZ2VzLmFkZCgmcGFnZSk7CisgICAgbV9wYWdlcy5hZGQocGFnZSk7
CiB9CiAKIHZvaWQgVXNlckNvbnRlbnRQcm92aWRlcjo6cmVtb3ZlUGFnZShQYWdlJiBwYWdlKQog
ewotICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7CisgICAgQVNTRVJUKG1fcGFn
ZXMuY29udGFpbnMocGFnZSkpOwogCi0gICAgbV9wYWdlcy5yZW1vdmUoJnBhZ2UpOworICAgIG1f
cGFnZXMucmVtb3ZlKHBhZ2UpOwogfQogCiB2b2lkIFVzZXJDb250ZW50UHJvdmlkZXI6OnJlZ2lz
dGVyRm9yVXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9uKFVzZXJDb250ZW50UHJvdmlkZXJJ
bnZhbGlkYXRpb25DbGllbnQmIGludmFsaWRhdGlvbkNsaWVudCkKIHsKLSAgICBBU1NFUlQoIW1f
dXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9uQ2xpZW50cy5jb250YWlucygmaW52YWxpZGF0
aW9uQ2xpZW50KSk7CisgICAgQVNTRVJUKCFtX3VzZXJNZXNzYWdlSGFuZGxlckludmFsaWRhdGlv
bkNsaWVudHMuY29udGFpbnMoaW52YWxpZGF0aW9uQ2xpZW50KSk7CiAKICAgICBtX3VzZXJNZXNz
YWdlSGFuZGxlckludmFsaWRhdGlvbkNsaWVudHMuYWRkKCZpbnZhbGlkYXRpb25DbGllbnQpOwog
fQogCiB2b2lkIFVzZXJDb250ZW50UHJvdmlkZXI6OnVucmVnaXN0ZXJGb3JVc2VyTWVzc2FnZUhh
bmRsZXJJbnZhbGlkYXRpb24oVXNlckNvbnRlbnRQcm92aWRlckludmFsaWRhdGlvbkNsaWVudCYg
aW52YWxpZGF0aW9uQ2xpZW50KQogewotICAgIEFTU0VSVChtX3VzZXJNZXNzYWdlSGFuZGxlcklu
dmFsaWRhdGlvbkNsaWVudHMuY29udGFpbnMoJmludmFsaWRhdGlvbkNsaWVudCkpOworICAgIEFT
U0VSVChtX3VzZXJNZXNzYWdlSGFuZGxlckludmFsaWRhdGlvbkNsaWVudHMuY29udGFpbnMoaW52
YWxpZGF0aW9uQ2xpZW50KSk7CiAKLSAgICBtX3VzZXJNZXNzYWdlSGFuZGxlckludmFsaWRhdGlv
bkNsaWVudHMucmVtb3ZlKCZpbnZhbGlkYXRpb25DbGllbnQpOworICAgIG1fdXNlck1lc3NhZ2VI
YW5kbGVySW52YWxpZGF0aW9uQ2xpZW50cy5yZW1vdmUoaW52YWxpZGF0aW9uQ2xpZW50KTsKIH0K
IAogdm9pZCBVc2VyQ29udGVudFByb3ZpZGVyOjppbnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFVzZXJN
ZXNzYWdlSGFuZGxlckludmFsaWRhdGlvbkNsaWVudHMoKQogewogICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV91c2VyTWVzc2FnZUhhbmRsZXJJbnZhbGlkYXRpb25DbGllbnRzKQotICAgICAgICBj
bGllbnQtPmRpZEludmFsaWRhdGUoKnRoaXMpOworICAgICAgICBjbGllbnQuZGlkSW52YWxpZGF0
ZSgqdGhpcyk7CiB9CiAKIHZvaWQgVXNlckNvbnRlbnRQcm92aWRlcjo6aW52YWxpZGF0ZUluamVj
dGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXNJbkFsbFBhZ2VzKCkKIHsKICAgICBmb3IgKGF1
dG8mIHBhZ2UgOiBtX3BhZ2VzKQotICAgICAgICBwYWdlLT5pbnZhbGlkYXRlSW5qZWN0ZWRTdHls
ZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOworICAgICAgICBwYWdlLmludmFsaWRhdGVJbmplY3Rl
ZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaAppbmRl
eCA0MDRhMGJjYzkzYWJlNzNiMWZlY2U5OTJhYmY5MjdjNTMwOGYyZWRjLi5kOWEyMWI0MTMwZTQ2
NmRlMmFhZjE3MjFmZGU4ZTVjZmI2Y2JiODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50UHJvdmlkZXIuaApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICNpbmNsdWRlICJDb250ZW50RXh0
ZW5zaW9uQWN0aW9ucy5oIgpAQCAtNTYsNyArNTgsNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5m
bzsKIAogY2xhc3MgVXNlckNvbnRlbnRQcm92aWRlcjsKIAotY2xhc3MgVXNlckNvbnRlbnRQcm92
aWRlckludmFsaWRhdGlvbkNsaWVudCB7CitjbGFzcyBVc2VyQ29udGVudFByb3ZpZGVySW52YWxp
ZGF0aW9uQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVzZXJDb250ZW50UHJvdmlkZXJJ
bnZhbGlkYXRpb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Vc2VyQ29udGVudFBy
b3ZpZGVySW52YWxpZGF0aW9uQ2xpZW50KCkKICAgICB7CkBAIC05OCw4ICsxMDAsOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNo
ZWV0Q2FjaGVJbkFsbEZyYW1lc0luQWxsUGFnZXMoKTsKIAogcHJpdmF0ZToKLSAgICBIYXNoU2V0
PFBhZ2UqPiBtX3BhZ2VzOwotICAgIEhhc2hTZXQ8VXNlckNvbnRlbnRQcm92aWRlckludmFsaWRh
dGlvbkNsaWVudCo+IG1fdXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0aW9uQ2xpZW50czsKKyAg
ICBXZWFrSGFzaFNldDxQYWdlPiBtX3BhZ2VzOworICAgIFdlYWtIYXNoU2V0PFVzZXJDb250ZW50
UHJvdmlkZXJJbnZhbGlkYXRpb25DbGllbnQ+IG1fdXNlck1lc3NhZ2VIYW5kbGVySW52YWxpZGF0
aW9uQ2xpZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCmluZGV4IGQ3YTU4YjVlZjJjNmVlYjVkN2Q4YTgyM2Q1
MGJmOTg5NDlmYTQ1NzkuLmM5NjdjOTcyNzNjODA3MjdjMThhYjYzYTY3YjNkYWM3MjE5ODhlNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzaXRlZExpbmtTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaXNpdGVkTGlua1N0b3JlLmNwcApAQCAtMzYsMzMgKzM2
LDMzIEBAIFZpc2l0ZWRMaW5rU3RvcmU6OlZpc2l0ZWRMaW5rU3RvcmUoKQogCiBWaXNpdGVkTGlu
a1N0b3JlOjp+VmlzaXRlZExpbmtTdG9yZSgpCiB7Ci0gICAgQVNTRVJUKG1fcGFnZXMuaXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQobV9wYWdlcy5jb21wdXRlc0VtcHR5KCkpOwogfQogCiB2b2lkIFZp
c2l0ZWRMaW5rU3RvcmU6OmFkZFBhZ2UoUGFnZSYgcGFnZSkKIHsKLSAgICBBU1NFUlQoIW1fcGFn
ZXMuY29udGFpbnMoJnBhZ2UpKTsKKyAgICBBU1NFUlQoIW1fcGFnZXMuY29udGFpbnMocGFnZSkp
OwogCi0gICAgbV9wYWdlcy5hZGQoJnBhZ2UpOworICAgIG1fcGFnZXMuYWRkKHBhZ2UpOwogfQog
CiB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnJlbW92ZVBhZ2UoUGFnZSYgcGFnZSkKIHsKLSAgICBB
U1NFUlQobV9wYWdlcy5jb250YWlucygmcGFnZSkpOworICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRh
aW5zKHBhZ2UpKTsKIAotICAgIG1fcGFnZXMucmVtb3ZlKCZwYWdlKTsKKyAgICBtX3BhZ2VzLnJl
bW92ZShwYWdlKTsKIH0KIAogdm9pZCBWaXNpdGVkTGlua1N0b3JlOjppbnZhbGlkYXRlU3R5bGVz
Rm9yQWxsTGlua3MoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZXMpCi0gICAgICAg
IHBhZ2UtPmludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpOworICAgICAgICBwYWdlLmludmFs
aWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpOwogfQogCiB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6Omlu
dmFsaWRhdGVTdHlsZXNGb3JMaW5rKFNoYXJlZFN0cmluZ0hhc2ggbGlua0hhc2gpCiB7CiAgICAg
Zm9yIChhdXRvJiBwYWdlIDogbV9wYWdlcykKLSAgICAgICAgcGFnZS0+aW52YWxpZGF0ZVN0eWxl
c0ZvckxpbmsobGlua0hhc2gpOworICAgICAgICBwYWdlLmludmFsaWRhdGVTdHlsZXNGb3JMaW5r
KGxpbmtIYXNoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9WaXNpdGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1Zpc2l0ZWRMaW5rU3RvcmUuaAppbmRleCBiZmMwYjkwNjMzOTk2OTVjNmI1ZDljMzA5ZTgzODk1
ODI2NDVhMjFlLi4zM2EyOGQ0MzQxMDIzM2IyYzA5ODJiODQzZGI0YmYxZDllZTgzNGEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Zpc2l0ZWRMaW5rU3RvcmUuaApAQCAtMjYsOCArMjYsOCBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hh
c2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGVTdHlsZXNGb3JMaW5rKFNoYXJl
ZFN0cmluZ0hhc2gpOwogCiBwcml2YXRlOgotICAgIEhhc2hTZXQ8UGFnZSo+IG1fcGFnZXM7Cisg
ICAgV2Vha0hhc2hTZXQ8UGFnZT4gbV9wYWdlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luSW5mb1Byb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAppbmRl
eCBhYThkNzczZWE4NGNjM2VlNGUzMjQ1ZmJmYmQ4MjNlYmQ2MmJhMWFiLi40Y2E5ZmQ2M2Q5MGE1
ZThmOTczNmY0ZjY3ZWQ1NTM3ZjRiZTZjY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkluZm9Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5JbmZvUHJvdmlkZXIuY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBQbHVnaW5JbmZvUHJvdmlkZXI6On5QbHVnaW5JbmZvUHJvdmlkZXIoKQogewot
ICAgIEFTU0VSVChtX3BhZ2VzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcGFnZXMuY29tcHV0
ZXNFbXB0eSgpKTsKIH0KIAogdm9pZCBQbHVnaW5JbmZvUHJvdmlkZXI6OmNsZWFyUGFnZXNQbHVn
aW5EYXRhKCkKIHsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VzKQotICAgICAgICBwYWdl
LT5jbGVhclBsdWdpbkRhdGEoKTsKKyAgICAgICAgcGFnZS5jbGVhclBsdWdpbkRhdGEoKTsKIH0K
IAogdm9pZCBQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2goYm9vbCByZWxvYWRQYWdlcykKQEAg
LTUxLDE0ICs1MSwxNCBAQCB2b2lkIFBsdWdpbkluZm9Qcm92aWRlcjo6cmVmcmVzaChib29sIHJl
bG9hZFBhZ2VzKQogICAgIFZlY3RvcjxSZWY8RnJhbWU+PiBmcmFtZXNOZWVkaW5nUmVsb2FkOwog
CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlcykgewotICAgICAgICBwYWdlLT5jbGVhclBs
dWdpbkRhdGEoKTsKKyAgICAgICAgcGFnZS5jbGVhclBsdWdpbkRhdGEoKTsKIAogICAgICAgICBp
ZiAoIXJlbG9hZFBhZ2VzKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZm9yIChG
cmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZwYWdl
Lm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7CiAgICAgICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuY29u
dGFpbnNQbHVnaW5zKCkpCi0gICAgICAgICAgICAgICAgZnJhbWVzTmVlZGluZ1JlbG9hZC5hcHBl
bmQocGFnZS0+bWFpbkZyYW1lKCkpOworICAgICAgICAgICAgICAgIGZyYW1lc05lZWRpbmdSZWxv
YWQuYXBwZW5kKHBhZ2UubWFpbkZyYW1lKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02OCwx
NiArNjgsMTYgQEAgdm9pZCBQbHVnaW5JbmZvUHJvdmlkZXI6OnJlZnJlc2goYm9vbCByZWxvYWRQ
YWdlcykKIAogdm9pZCBQbHVnaW5JbmZvUHJvdmlkZXI6OmFkZFBhZ2UoUGFnZSYgcGFnZSkKIHsK
LSAgICBBU1NFUlQoIW1fcGFnZXMuY29udGFpbnMoJnBhZ2UpKTsKKyAgICBBU1NFUlQoIW1fcGFn
ZXMuY29udGFpbnMocGFnZSkpOwogCi0gICAgbV9wYWdlcy5hZGQoJnBhZ2UpOworICAgIG1fcGFn
ZXMuYWRkKHBhZ2UpOwogfQogCiB2b2lkIFBsdWdpbkluZm9Qcm92aWRlcjo6cmVtb3ZlUGFnZShQ
YWdlJiBwYWdlKQogewotICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZwYWdlKSk7CisgICAg
QVNTRVJUKG1fcGFnZXMuY29udGFpbnMocGFnZSkpOwogCi0gICAgbV9wYWdlcy5yZW1vdmUoJnBh
Z2UpOworICAgIG1fcGFnZXMucmVtb3ZlKHBhZ2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkluZm9Qcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5JbmZvUHJvdmlkZXIuaAppbmRleCAzZDZiNDhhN2YzOTMwYzcxN2U3NDNl
YWU0YmM4MTMzZTM1MjI4MTIwLi4yNTZlMTUyYmU2YTRmNGNhZDVjOTRkYWFjMWI1YzE3YzY1ZTVj
ZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkluZm9Qcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luSW5mb1Byb3ZpZGVyLmgKQEAg
LTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgot
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpID0gMDsKIAotICAgIEhhc2hTZXQ8
UGFnZSo+IG1fcGFnZXM7CisgICAgV2Vha0hhc2hTZXQ8UGFnZT4gbV9wYWdlczsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3Bw
CmluZGV4IDI4NjZhYTkzYTc2MDI0NGM5ZDdhMDU5NmM0OWE1YmZjMTNhMzYwOTguLjAxZDc5ZDBi
MGQyNTVlYjRlOWU3YjhiZWQzYWU2OTViZjkzZmJhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNjksNyArNjksNyBAQCB2
b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdAogCiAgICAgLy8gU2VuZCBldmVudHMgdG8gZXZlcnkgcGFn
ZS4KICAgICBmb3IgKGF1dG8mIHBhZ2VJbkdyb3VwIDogcGFnZS0+Z3JvdXAoKS5wYWdlcygpKSB7
Ci0gICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2VJbkdyb3VwLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBm
b3IgKGF1dG8qIGZyYW1lID0gJnBhZ2VJbkdyb3VwLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoIWZyYW1l
LT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYg
KHNvdXJjZUZyYW1lICE9IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLmVxdWFsKHNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkucHRyKCkpKQpAQCAtOTUs
NyArOTUsNyBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0
b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiBwYWdlLCBjbwogdm9pZCBTdG9yYWdlRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBhZ2VHcm91cCYgcGFn
ZUdyb3VwLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2lu
KQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VHcm91cC5wYWdlcygpKQotICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KCpwYWdl
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzZWN1cml0eU9y
aWdpbi5zZWN1cml0eU9yaWdpbigpLnB0cigpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChwYWdlLCBrZXksIG9sZFZhbHVlLCBu
ZXdWYWx1ZSwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdp
bigpLnB0cigpKTsKIAogICAgIGZvciAoYXV0byYgZnJhbWUgOiBmcmFtZXMpIHsKICAgICAgICAg
YXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoZnJhbWUtPmRvY3VtZW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKaW5kZXggYWViNWFkMTRmOWY5YTAxOGQwOGQ2NTA3NjNlYTk4N2JlZTA1ZmJkZS4u
MmVjZTIzYmFkN2FjODIwZDUxNzRmZDAzMGQ3N2U2NTk1ZDc2MTg3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCkBAIC0xNzAsOSArMTcwLDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVzZXRPcmln
aW5BY2Nlc3NBbGxvd0xpc3RzKCkKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9v
bCBlbmFibGVkKQogewotICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91
cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKLSAgICBmb3Ig
KEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRlciAhPSBw
YWdlcy5lbmQoKTsgKytpdGVyKQotICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygpLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGVuYWJsZWQpOworICAgIGZvciAoYXV0byYgcGFn
ZSA6IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMo
KSkKKyAgICAgICAgcGFnZS5zZXR0aW5ncygpLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKGVuYWJsZWQpOwogfQogCiBpbnQgSW5qZWN0ZWRCdW5kbGU6Om51bWJlck9mUGFnZXMo
V2ViRnJhbWUqIGZyYW1lLCBkb3VibGUgcGFnZVdpZHRoSW5QaXhlbHMsIGRvdWJsZSBwYWdlSGVp
Z2h0SW5QaXhlbHMpCkBAIC0yODcsOSArMjg2LDggQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlk
UmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWcK
IAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihXZWJQYWdl
R3JvdXBQcm94eSogcGFnZUdyb3VwLCBjb25zdCBTdHJpbmcmIGxvY2F0aW9uKQogewotICAgIGNv
bnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91
cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+OjppdGVy
YXRvciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRlciAhPSBwYWdlcy5lbmQoKTsgKytpdGVyKQot
ICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygpLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJM
KFVSTCgpLCBsb2NhdGlvbikpOworICAgIGZvciAoYXV0byYgcGFnZSA6IFBhZ2VHcm91cDo6cGFn
ZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKSkKKyAgICAgICAgcGFnZS5z
ZXR0aW5ncygpLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJMKFVSTCgpLCBsb2NhdGlvbikp
OwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9u
KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQp
CkBAIC0zNDMsOCArMzQxLDggQEAgSW5qZWN0ZWRCdW5kbGU6OkRvY3VtZW50SURUb1VSTE1hcCBJ
bmplY3RlZEJ1bmRsZTo6bGl2ZURvY3VtZW50VVJMcyhXZWJQYWdlR3JvdXAKICAgICAgICAgcmVz
dWx0LmFkZChkb2N1bWVudC0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIGRvY3VtZW50LT51cmwo
KS5zdHJpbmcoKSk7CiAKICAgICBpZiAoZXhjbHVkZURvY3VtZW50c0luUGFnZUdyb3VwUGFnZXMp
IHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvKiBwYWdlIDogUGFnZUdyb3VwOjpwYWdlR3JvdXAo
cGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5wYWdlcygpKSB7Ci0gICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8qIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IFBh
Z2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvKiBmcmFtZSA9ICZwYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0LnJlbW92ZShmcmFtZS0+ZG9jdW1lbnQoKS0+aWRlbnRpZmll
cigpLnRvVUludDY0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IGY0OTFiNmQyZTE4MmNmMDU5NGE5Yjcw
ZjIyNmU3MDA0ZTM4ODU0MDUuLjJlYzNkYzhiYjE2NWRlNTJhY2Q1Y2UyMjVlYWNmMzk1ZjBlNzM0
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAKQEAgLTMzNyw4ICszMzcsOCBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFw
OjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KGNvbnN0IE9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1w
bElkZQogCiAgICAgLy8gTmFtZXNwYWNlIElEcyBmb3IgbG9jYWwgc3RvcmFnZSBuYW1lc3BhY2Vz
IGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIGdyb3VwIElEcy4KICAgICBhdXRvJiBwYWdlR3Jv
dXAgPSAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZUdyb3VwKG1fbmFtZXNwYWNlLnBh
Z2VHcm91cElEKCkpLT5jb3JlUGFnZUdyb3VwKCk7Ci0gICAgZm9yIChhdXRvKiBwYWdlIDogcGFn
ZUdyb3VwLnBhZ2VzKCkpCi0gICAgICAgIGZyYW1lcy5hcHBlbmRWZWN0b3IoZnJhbWVzRm9yRXZl
bnREaXNwYXRjaGluZygqcGFnZSwgbV9zZWN1cml0eU9yaWdpbiwgU3RvcmFnZVR5cGU6OkxvY2Fs
LCBzdG9yYWdlQXJlYUltcGxJRCkpOworICAgIGZvciAoYXV0byYgcGFnZSA6IHBhZ2VHcm91cC5w
YWdlcygpKQorICAgICAgICBmcmFtZXMuYXBwZW5kVmVjdG9yKGZyYW1lc0ZvckV2ZW50RGlzcGF0
Y2hpbmcocGFnZSwgbV9zZWN1cml0eU9yaWdpbiwgU3RvcmFnZVR5cGU6OkxvY2FsLCBzdG9yYWdl
QXJlYUltcGxJRCkpOwogCiAgICAgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2Nh
bFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlR3JvdXAsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwg
bmV3VmFsdWUsIHVybFN0cmluZywgbV9zZWN1cml0eU9yaWdpbi0+ZGF0YSgpKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>