<?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>232707</bug_id>
          
          <creation_ts>2021-11-04 03:47:01 -0700</creation_ts>
          <short_desc>[GTK][a11y] Add implementation of hyperlink interface when building with ATSPI</short_desc>
          <delta_ts>2021-11-19 00:52:04 -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>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>232300</dependson>
    
    <dependson>232622</dependson>
          <blocked>230253</blocked>
    
    <blocked>232708</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>aperez</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mifenton</cc>
    
    <cc>samuel_white</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1811814</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-04 03:47:01 -0700</bug_when>
    <thetext>Implement hyperlink</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811835</commentid>
    <comment_count>1</comment_count>
      <attachid>443298</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-04 06:00:24 -0700</bug_when>
    <thetext>Created attachment 443298
Patch

This won&apos;t apply because it depends on other bugs not fixed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816387</commentid>
    <comment_count>2</comment_count>
      <attachid>444661</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-18 04:39:19 -0800</bug_when>
    <thetext>Created attachment 444661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816389</commentid>
    <comment_count>3</comment_count>
      <attachid>444662</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-18 04:52:17 -0800</bug_when>
    <thetext>Created attachment 444662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816403</commentid>
    <comment_count>4</comment_count>
      <attachid>444662</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-11-18 06:23:26 -0800</bug_when>
    <thetext>Comment on attachment 444662
Patch

Patch LGTM with a nit. Please apply the suggestion below before landing :)

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

&gt; Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp:499
&gt; +        if (--index == -1)

This modifies “index“ in place, which made me wonder “why, and where is the modified
value used later?“. But then it&apos;s not used again at all. So I would prefer to have
this check written this way for readability:

  if (index == 0)

=)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816769</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-19 00:52:04 -0800</bug_when>
    <thetext>Committed r286050 (244437@main): &lt;https://commits.webkit.org/244437@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443298</attachid>
            <date>2021-11-04 06:00:24 -0700</date>
            <delta_ts>2021-11-18 04:39:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-hyperkink.diff</filename>
            <type>text/plain</type>
            <size>26942</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkZDA5MWQ2NWM5ZTkuLjU3NTcyNjY3YzgzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDIxLTExLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Yg
aHlwZXJsaW5rIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjcwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBoeXBlcmxpbmsgaW1wbGVt
ZW50YXRpb24gYW5kIG1ha2UgbGlua3MgYmUgaGFuZGxlZCBhcyByZXBsYWNlZCBvYmplY3RzIHRv
bywgdG8gZW5zdXJlIGFsbCBoeXBlcmxpbmtzIGFyZQorICAgICAgICBoYW5kbGVkIHRoZSBzYW1l
IHdheS4gVGhhdCdzIGNvbnNpc3RlbnQgd2l0aCBjaHJvbWl1bS4KKworICAgICAgICAqIFNvdXJj
ZXNHVEsudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6aW50ZXJmYWNlc0Zvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpidWlsZEludGVyZmFjZXMgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dXJsIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6b2Zmc2V0SW5QYXJlbnQg
Y29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OmNoYXJhY3Rlck9mZnNldCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCk6CisK
IDIwMjEtMTAtMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB2YWx1ZSBpbnRlcmZh
Y2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IDQ3N2Uz
MTU2ZDc3MS4uMTg4NDVjYzAyMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
R1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNDIsNiArNDIs
NyBAQCBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKIGFjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RDb21wb25lbnRBdHNwaS5jcHAKK2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdEh5cGVybGlua0F0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0VmFsdWVBdHNwaS5jcHAKIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eVJvb3RBdHNwaS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAppbmRleCBkOGQ1
OTUwMmIxZDcuLjU2NGU3OTNiZmYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCIKICNp
bmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtODYsNiArODcs
OSBAQCBPcHRpb25TZXQ8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZhY2U+IEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6aW50ZXJmYQogICAgIGlmIChjb3JlT2JqZWN0LnN1cHBvcnRz
UmFuZ2VWYWx1ZSgpKQogICAgICAgICBpbnRlcmZhY2VzLmFkZChJbnRlcmZhY2U6OlZhbHVlKTsK
IAorICAgIGlmIChjb3JlT2JqZWN0LmlzTGluaygpIHx8IChpc1JlbmRlcmVyUmVwbGFjZWRFbGVt
ZW50KHJlbmRlcmVyKSkpCisgICAgICAgIGludGVyZmFjZXMuYWRkKEludGVyZmFjZTo6SHlwZXJs
aW5rKTsKKwogICAgIHJldHVybiBpbnRlcmZhY2VzOwogfQogCkBAIC00NzQsNiArNDc4LDggQEAg
Y29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnBhdGgoKQogICAgICAgICAg
ICAgaW50ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3
ZWJraXRfdGV4dF9pbnRlcmZhY2UpLCAmc190ZXh0RnVuY3Rpb25zIH0pOwogICAgICAgICBpZiAo
bV9pbnRlcmZhY2VzLmNvbnRhaW5zKEludGVyZmFjZTo6VmFsdWUpKQogICAgICAgICAgICAgaW50
ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRf
dmFsdWVfaW50ZXJmYWNlKSwgJnNfdmFsdWVGdW5jdGlvbnMgfSk7CisgICAgICAgIGlmIChtX2lu
dGVyZmFjZXMuY29udGFpbnMoSW50ZXJmYWNlOjpIeXBlcmxpbmspKQorICAgICAgICAgICAgaW50
ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRf
aHlwZXJsaW5rX2ludGVyZmFjZSksICZzX2h5cGVybGlua0Z1bmN0aW9ucyB9KTsKICAgICAgICAg
bV9wYXRoID0gYXRzcGlSb290LT5hdHNwaSgpLnJlZ2lzdGVyT2JqZWN0KCp0aGlzLCBXVEZNb3Zl
KGludGVyZmFjZXMpKTsKICAgICB9CiAKQEAgLTEwOTEsNiArMTA5Nyw4IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpOjpidWlsZEludGVyZmFjZXMoR1ZhcmlhbnRCdWlsZGVyKiBidWls
ZGVyKSBjb25zdAogICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgInMiLCB3
ZWJraXRfdGV4dF9pbnRlcmZhY2UubmFtZSk7CiAgICAgaWYgKG1faW50ZXJmYWNlcy5jb250YWlu
cyhJbnRlcmZhY2U6OlZhbHVlKSkKICAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKGJ1aWxk
ZXIsICJzIiwgd2Via2l0X3ZhbHVlX2ludGVyZmFjZS5uYW1lKTsKKyAgICBpZiAobV9pbnRlcmZh
Y2VzLmNvbnRhaW5zKEludGVyZmFjZTo6SHlwZXJsaW5rKSkKKyAgICAgICAgZ192YXJpYW50X2J1
aWxkZXJfYWRkKGJ1aWxkZXIsICJzIiwgd2Via2l0X2h5cGVybGlua19pbnRlcmZhY2UubmFtZSk7
CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZXJpYWxpemUoR1ZhcmlhbnRC
dWlsZGVyKiBidWlsZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgKaW5kZXggM2Nh
MjIzNzM3MjY3Li44OTljNWVjMjU0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaApAQCAt
NDYsNyArNDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFjY2Vzc2libGUgPSAxIDw8IDAsCiAgICAg
ICAgIENvbXBvbmVudCA9IDEgPDwgMSwKICAgICAgICAgVGV4dCA9IDEgPDwgMiwKLSAgICAgICAg
VmFsdWUgPSAxIDw8IDMKKyAgICAgICAgVmFsdWUgPSAxIDw8IDMsCisgICAgICAgIEh5cGVybGlu
ayA9IDEgPDwgNAogICAgIH07CiAgICAgY29uc3QgT3B0aW9uU2V0PEludGVyZmFjZT4mIGludGVy
ZmFjZXMoKSBjb25zdCB7IHJldHVybiBtX2ludGVyZmFjZXM7IH0KIApAQCAtMTE3LDYgKzExOCw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbWluaW11bUluY3JlbWVudCgp
IGNvbnN0OwogICAgIHZvaWQgdmFsdWVDaGFuZ2VkKGRvdWJsZSk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBVUkwgdXJsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpKEFYQ29yZU9iamVjdCopOwogCkBAIC0xMzksNiArMTQyLDcgQEAgcHJp
dmF0ZToKICAgICBDU3RyaW5nIHRleHQoaW50LCBpbnQpIGNvbnN0OwogICAgIENTdHJpbmcgdGV4
dEF0T2Zmc2V0KGludCwgVGV4dEdyYW51bGFyaXR5LCBpbnQmLCBpbnQmKSBjb25zdDsKICAgICBp
bnQgY2hhcmFjdGVyQXRPZmZzZXQoaW50KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBjaGFyYWN0ZXJPZmZzZXQoVUNoYXIsIGludCkgY29uc3Q7CiAgICAgSW50UmVjdCB0ZXh0
RXh0ZW50cyhpbnQsIGludCwgdWludDMyX3QpIGNvbnN0OwogICAgIGludCBvZmZzZXRBdFBvaW50
KGNvbnN0IEludFBvaW50JiwgdWludDMyX3QpIGNvbnN0OwogICAgIEludFBvaW50IGJvdW5kc0Zv
clNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgY29uc3Q7CkBAIC0xNDgsMTIgKzE1
MiwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgc2Nyb2xsVG9NYWtlVmlzaWJsZShpbnQsIGludCwg
dWludDMyX3QpIGNvbnN0OwogICAgIGJvb2wgc2Nyb2xsVG9Qb2ludChpbnQsIGludCwgdWludDMy
X3QsIGludCwgaW50KSBjb25zdDsKIAorICAgIHVuc2lnbmVkIG9mZnNldEluUGFyZW50KCkgY29u
c3Q7CisKICAgICBzdGF0aWMgT3B0aW9uU2V0PEludGVyZmFjZT4gaW50ZXJmYWNlc0Zvck9iamVj
dChBWENvcmVPYmplY3QmKTsKIAogICAgIHN0YXRpYyBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX2Fj
Y2Vzc2libGVGdW5jdGlvbnM7CiAgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfY29t
cG9uZW50RnVuY3Rpb25zOwogICAgIHN0YXRpYyBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX3RleHRG
dW5jdGlvbnM7CiAgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfdmFsdWVGdW5jdGlv
bnM7CisgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaHlwZXJsaW5rRnVuY3Rpb25z
OwogCiAgICAgQVhDb3JlT2JqZWN0KiBtX2F4T2JqZWN0IHsgbnVsbHB0ciB9OwogICAgIEFYQ29y
ZU9iamVjdCogbV9jb3JlT2JqZWN0IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRz
cGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNjM5YjQwMzM3MjVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3Bw
CkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGku
aCIKKworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBVU0UoQVRTUEkpCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaTo6c19oeXBlcmxpbmtGdW5jdGlvbnMgPSB7CisgICAgLy8gbWV0aG9kX2Nh
bGwKKyAgICBbXShHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwg
Y29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciogbWV0aG9kTmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRl
cnMsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgYXV0
byBhdHNwaU9iamVjdCA9IFJlZiB7ICpzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGkqPih1c2VyRGF0YSkgfTsKKyAgICAgICAgYXRzcGlPYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpOworCisgICAgICAgIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRPYmplY3QiKSkg
eworICAgICAgICAgICAgaW50IGluZGV4OworICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJh
bWV0ZXJzLCAiKGkpIiwgJmluZGV4KTsKKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2Nh
dGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsICFp
bmRleCA/IGF0c3BpT2JqZWN0LT5yZWZlcmVuY2UoKSA6IGF0c3BpT2JqZWN0LT5yb290KCktPmF0
c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMCht
ZXRob2ROYW1lLCAiR2V0VVJJIikpIHsKKyAgICAgICAgICAgIGludCBpbmRleDsKKyAgICAgICAg
ICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihpKSIsICZpbmRleCk7CisgICAgICAgICAg
ICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFy
aWFudF9uZXcoIihzKSIsICFpbmRleCA/IGF0c3BpT2JqZWN0LT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpIDogIiIpKTsKKyAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5h
bWUsICJJc1ZhbGlkIikpCisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0
dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihiKSIsIGF0c3BpT2JqZWN0LT5t
X2F4T2JqZWN0ID8gVFJVRSA6IEZBTFNFKSk7CisgICAgfSwKKyAgICAvLyBnZXRfcHJvcGVydHkK
KyAgICBbXShHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgY29u
c3QgZ2NoYXIqLCBjb25zdCBnY2hhciogcHJvcGVydHlOYW1lLCBHRXJyb3IqKiBlcnJvciwgZ3Bv
aW50ZXIgdXNlckRhdGEpIC0+IEdWYXJpYW50KiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisgICAgICAgIGF1dG8gYXRzcGlPYmplY3QgPSBSZWYgeyAqc3RhdGlj
X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKj4odXNlckRhdGEpIH07CisgICAgICAgIGF0
c3BpT2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgICAgICBpZiAoIWdfc3RyY21w
MChwcm9wZXJ0eU5hbWUsICJOQW5jaG9ycyIpKQorICAgICAgICAgICAgcmV0dXJuIGdfdmFyaWFu
dF9uZXdfaW50MzIoMSk7CisgICAgICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIlN0
YXJ0SW5kZXgiKSkKKyAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKGF0c3Bp
T2JqZWN0LT5vZmZzZXRJblBhcmVudCgpKTsKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVy
dHlOYW1lLCAiRW5kSW5kZXgiKSkKKyAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2lu
dDMyKGF0c3BpT2JqZWN0LT5vZmZzZXRJblBhcmVudCgpICsgMSk7CisKKyAgICAgICAgZ19zZXRf
ZXJyb3IoZXJyb3IsIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfTk9UX1NVUFBPUlRFRCwgIlVua25v
d24gcHJvcGVydHkgJyVzJyIsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0sCisgICAgLy8gc2V0X3Byb3BlcnR5LAorICAgIG51bGxwdHIsCisgICAgLy8gcGFk
ZGluZworICAgIG51bGxwdHIKK307CisKK1VSTCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnVy
bCgpIGNvbnN0Cit7CisgICAgQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGlzTWFpblRocmVhZCgp
ID8gbV9jb3JlT2JqZWN0IDogbV9heE9iamVjdDsKKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9i
amVjdC0+dXJsKCkgOiBVUkwoKTsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpvZmZzZXRJblBhcmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6
OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDx1bnNpZ25lZD4oW3RoaXNdKCkgLT4gdW5zaWdu
ZWQgeworICAgICAgICBpZiAobV9jb3JlT2JqZWN0KQorICAgICAgICAgICAgbV9jb3JlT2JqZWN0
LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgICAgICBpZiAoIW1fY29yZU9iamVjdCkKKyAg
ICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGF1dG8qIHBhcmVudCA9IG1fY29yZU9iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIGlmICghcGFyZW50IHx8ICFwYXJl
bnQtPndyYXBwZXIoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGludCBpbmRl
eCA9IC0xOworICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IHBhcmVudC0+Y2hpbGRyZW4o
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7CisgICAgICAg
ICAgICBpZiAoY2hpbGQtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byogd3JhcHBlciA9IGNoaWxkLT53cmFwcGVy
KCk7CisgICAgICAgICAgICBpZiAoIXdyYXBwZXIgfHwgIXdyYXBwZXItPmludGVyZmFjZXMoKS5j
b250YWlucyhJbnRlcmZhY2U6Okh5cGVybGluaykpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGluZGV4Kys7CisgICAgICAgICAgICBpZiAod3JhcHBlciA9PSB0aGlz
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluZGV4
ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+
d3JhcHBlcigpLT5jaGFyYWN0ZXJPZmZzZXQob2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIGlu
ZGV4KS52YWx1ZV9vcigwKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IDIwNTRlNDU5ODJkZS4uNDJkMTIxYjBk
MjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTIxLDEzICsy
MSwxOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5oIgogCiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKKyNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUF0c3BpRW51bXMuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSb290QXRzcGkuaCIKICNpbmNsdWRlICJFZGl0
aW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKKyNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgogI2luY2x1ZGUgIlN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgorI2luY2x1ZGUg
PGdpby9naW8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00ODQsNiArNDg5LDI0IEBA
IGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNoYXJhY3RlckF0T2Zmc2V0KGludCBvZmZz
ZXQpIGNvbnN0CiAgICAgcmV0dXJuIGdfdXRmOF9nZXRfY2hhcihnX3V0Zjhfb2Zmc2V0X3RvX3Bv
aW50ZXIodXRmOFRleHQuZGF0YSgpLCBvZmZzZXQpKTsKIH0KIAorc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjaGFyYWN0ZXJPZmZzZXQoVUNoYXIgY2hh
cmFjdGVyLCBpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgYXV0byB1dGYxNlRleHQgPSB0ZXh0KCk7
CisgICAgdW5zaWduZWQgc3RhcnQgPSAwOworICAgIHNpemVfdCBvZmZzZXQ7CisgICAgd2hpbGUg
KChvZmZzZXQgPSB1dGYxNlRleHQuZmluZChjaGFyYWN0ZXIsIHN0YXJ0KSkgIT0gbm90Rm91bmQp
IHsKKyAgICAgICAgc3RhcnQgPSBvZmZzZXQgKyAxOworICAgICAgICBpZiAoLS1pbmRleCA9PSAt
MSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIG1hcHBpbmcgPSBv
ZmZzZXRNYXBwaW5nKHV0ZjE2VGV4dCk7CisgICAgcmV0dXJuIFVURjE2T2Zmc2V0VG9VVEY4KG1h
cHBpbmcsIG9mZnNldCk7Cit9CisKIEludFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpi
b3VuZHNGb3JSYW5nZSh1bnNpZ25lZCB1dGYxNk9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCB1aW50
MzJfdCBjb29yZGluYXRlVHlwZSkgY29uc3QKIHsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6
cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEludFJlY3Q+KFt0aGlzLCB1dGYxNk9mZnNldCwg
bGVuZ3RoLCBjb29yZGluYXRlVHlwZV0oKSAtPiBJbnRSZWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBlYzZmZjI5NGM4MWIuLmViNmVlZDNmNmRjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjc2LDYgKzI3NiwxMSBA
QCBib29sIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVB
dHRyKSwgImltZyIpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgVVNFKEFUU1BJKQor
ICAgICAgICAvLyBMaW5rcyBhcmUgYWxzbyByZXBsYWNlZCB3aXRoIG9iamVjdCByZXBsYWNlbWVu
dCBjaGFyYWN0ZXIgaW4gQVRTUEkuCisgICAgICAgIGlmIChlbGVtZW50LmlzTGluaygpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7
CkBAIC03NDksNyArNzU0LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxl
bWVudCgpCiAKICAgICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogCi0gICAgaWYgKG1fYmVoYXZpb3Jz
LmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVycykgJiYgcmVuZGVyZXIuaXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKG1fYmVoYXZpb3Jz
LmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVycykpIHsKICAgICAgICAgZW1pdENoYXJhY3RlcihvYmplY3RSZXBsYWNlbWVudENoYXJh
Y3RlciwgKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUsIDAsIDEpOwogICAgICAgICAvLyBE
b24ndCBwcm9jZXNzIHN1YnRyZWVzIGZvciBlbWJlZGRlZCBvYmplY3RzLiBJZiB0aGUgdGV4dCB0
aGVyZSBpcyByZXF1aXJlZCwKICAgICAgICAgLy8gaXQgbXVzdCBiZSBleHBsaWNpdGx5IGFza2Vk
IGJ5IHNwZWNpZnlpbmcgYSByYW5nZSBmYWxsaW5nIGluc2lkZSBpdHMgYm91bmRhcmllcy4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NGI3MzY4
ODBjMjYuLjk3Njg1M2Y0MmFiYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTExLTA0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBBZGQg
aW1wbGVtZW50YXRpb24gb2YgaHlwZXJsaW5rIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGgg
QVRTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjcwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB1bml0IHRlc3RzIHRvIGNoZWNrIGh5cGVybGluayBpbnRlcmZhY2UgYW5kIGltcGxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKSBpbiBXVFIuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHA6CisgICAg
ICAgICh0ZXN0VGV4dFJlcGxhY2VkT2JqZWN0cyk6CisgICAgICAgICh0ZXN0SHlwZXJsaW5rQmFz
aWMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHA6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisKIDIwMjEtMTAtMjYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB2YWx1ZSBpbnRlcmZhY2Ugd2hlbiBidWlsZGlu
ZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKaW5kZXggM2IyMzhkNmIz
ZTA4Li4xOGUwNGI5OGVjMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKQEAgLTE1
MzMsNiArMTUzMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RUZXh0UmVwbGFjZWRPYmplY3RzKEFjY2Vz
c2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAiPGh0bWw+IgogICAg
ICAgICAiICA8Ym9keT4iCiAgICAgICAgICIgICAgPHA+VGhpcyBpcyA8YnV0dG9uPmJ1dHRvbjE8
L2J1dHRvbj4gYW5kIDxidXR0b24+YnV0dG9uMjwvYnV0dG9uPiBpbiBwYXJhZ3JhcGg8L3A+Igor
ICAgICAgICAiICAgIDxwPlRoaXMgaXMgPGEgaHJlZj0nIyc+bGluazE8L2E+IGFuZCA8YSBocmVm
PScjJz5saW5rMjwvYT4gaW4gcGFyYWdyYXBoPC9wPiIKICAgICAgICAgIiAgPC9ib2R5PiIKICAg
ICAgICAgIjwvaHRtbD4iLAogICAgICAgICBudWxscHRyKTsKQEAgLTE1NDMsNyArMTU0NCw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RUZXh0UmVwbGFjZWRPYmplY3RzKEFjY2Vzc2liaWxpdHlUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgYXV0byBkb2N1bWVudFdlYiA9IHRlc3QtPmZpbmRE
b2N1bWVudFdlYih0ZXN0QXBwLmdldCgpKTsKICAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FD
Q0VTU0lCTEUoZG9jdW1lbnRXZWIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlf
YWNjZXNzaWJsZV9nZXRfY2hpbGRfY291bnQoZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpLCA9
PSwgMSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2Nv
dW50KGRvY3VtZW50V2ViLmdldCgpLCBudWxscHRyKSwgPT0sIDIpOwogCiAgICAgYXV0byBwID0g
YWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KGRvY3VtZW50V2Vi
LmdldCgpLCAwLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19URVhUKHAu
Z2V0KCkpKTsKQEAgLTE2MTEsNiArMTYxMiwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0VGV4dFJlcGxh
Y2VkT2JqZWN0cyhBY2Nlc3NpYmlsaXR5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBn
X2Fzc2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA9PSwg
MCk7CiAgICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgMTUpOwogICAgIGdfYXNz
ZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCAyOCk7CisKKyAgICAvLyBMaW5rcyBhcmUgYWxzbyBy
ZXBsYWNlZCBlbGVtZW50cy4KKyAgICBwID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0
X2NoaWxkX2F0X2luZGV4KGRvY3VtZW50V2ViLmdldCgpLCAxLCBudWxscHRyKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShBVFNQSV9JU19URVhUKHAuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
YXRzcGlfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50KEFUU1BJX1RFWFQocC5nZXQoKSksIG51bGxw
dHIpLCA9PSwgMjgpOworICAgIHRleHQucmVzZXQoYXRzcGlfdGV4dF9nZXRfdGV4dChBVFNQSV9U
RVhUKHAuZ2V0KCkpLCAwLCAtMSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0
LmdldCgpLCA9PSwgIlRoaXMgaXMgXDM1N1wyNzdcMjc0IGFuZCBcMzU3XDI3N1wyNzQgaW4gcGFy
YWdyYXBoIik7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxk
X2NvdW50KHAuZ2V0KCksIG51bGxwdHIpLCA9PSwgMik7CisKKyAgICBhdXRvIGxpbmsxID0gYWRv
cHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KHAuZ2V0KCksIDAsIG51
bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX1RFWFQobGluazEuZ2V0KCkpKTsK
KyAgICB0ZXh0LnJlc2V0KGF0c3BpX3RleHRfZ2V0X3RleHQoQVRTUElfVEVYVChsaW5rMS5nZXQo
KSksIDAsIC0xLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQuZ2V0KCksID09
LCAibGluazEiKTsKKworICAgIGF1dG8gbGluazIgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJs
ZV9nZXRfY2hpbGRfYXRfaW5kZXgocC5nZXQoKSwgMSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0
X3RydWUoQVRTUElfSVNfVEVYVChsaW5rMi5nZXQoKSkpOworICAgIHRleHQucmVzZXQoYXRzcGlf
dGV4dF9nZXRfdGV4dChBVFNQSV9URVhUKGxpbmsyLmdldCgpKSwgMCwgLTEsIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dC5nZXQoKSwgPT0sICJsaW5rMiIpOwogI2VuZGlmCiB9
CiAKQEAgLTE2NjUsNiArMTY4NCwxMTIgQEAgc3RhdGljIHZvaWQgdGVzdFZhbHVlQmFzaWMoQWNj
ZXNzaWJpbGl0eVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wZmxv
YXQoYXRzcGlfdmFsdWVfZ2V0X2N1cnJlbnRfdmFsdWUoQVRTUElfVkFMVUUoc2xpZGVyLmdldCgp
KSwgbnVsbHB0ciksID09LCAwKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEh5cGVybGlua0Jhc2lj
KEFjY2Vzc2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPnNo
b3dJbldpbmRvdyg4MDAsIDYwMCk7CisgICAgdGVzdC0+bG9hZEh0bWwoCisgICAgICAgICI8aHRt
bD4iCisgICAgICAgICIgIDxib2R5PiIKKyAgICAgICAgIiAgICA8YSBocmVmPSdodHRwczovL3d3
dy53ZWJraXRndGsub3JnJz5XZWJLaXRHVEs8L2E+IgorICAgICAgICAiICAgIDxkaXYgcm9sZT0n
bGluayc+TGluazwvZGl2PiIKKyAgICAgICAgIiAgICA8cD5UaGlzIGlzIDxidXR0b24+YnV0dG9u
MTwvYnV0dG9uPiBhbmQgPGJ1dHRvbj5idXR0b24yPC9idXR0b24+IGluIGEgcGFyYWdyYXBoPC9w
PiIKKyAgICAgICAgIiAgICA8cD5UaGlzIGlzIDxhIGhyZWY9J2h0dHBzOi8vd3d3LndlYmtpdGd0
ay5vcmcnPmxpbmsxPC9hPiBhbmQgPGEgaHJlZj0naHR0cHM6Ly93d3cuZ25vbWUub3JnJz5saW5r
MjwvYT4gaW4gcGFyYWdyYXBoPC9wPiIKKyAgICAgICAgIiAgPC9ib2R5PiIKKyAgICAgICAgIjwv
aHRtbD4iLAorICAgICAgICBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKworICAgIGF1dG8gdGVzdEFwcCA9IHRlc3QtPmZpbmRUZXN0QXBwbGljYXRpb24oKTsK
KyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUodGVzdEFwcC5nZXQoKSkpOwor
CisgICAgYXV0byBkb2N1bWVudFdlYiA9IHRlc3QtPmZpbmREb2N1bWVudFdlYih0ZXN0QXBwLmdl
dCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoZG9jdW1lbnRXZWIu
Z2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRf
Y291bnQoZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpLCA9PSwgNCk7CisKKyAgICBhdXRvIHNl
Y3Rpb24gPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoZG9j
dW1lbnRXZWIuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lT
X0FDQ0VTU0lCTEUoc2VjdGlvbi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9yb2xlKHNlY3Rpb24uZ2V0KCksIG51bGxwdHIpLCA9PSwgQVRTUElfUk9M
RV9TRUNUSU9OKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hp
bGRfY291bnQoc2VjdGlvbi5nZXQoKSwgbnVsbHB0ciksID09LCAxKTsKKworICAgIGF1dG8gYSA9
IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChzZWN0aW9uLmdl
dCgpLCAwLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxF
KGEuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfcm9s
ZShhLmdldCgpLCBudWxscHRyKSwgPT0sIEFUU1BJX1JPTEVfTElOSyk7CisgICAgYXV0byBsaW5r
ID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2h5cGVybGluayhhLmdldCgpKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19IWVBFUkxJTksobGluay5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X25fYW5jaG9ycyhBVFNQSV9IWVBFUkxJ
TksobGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMSk7CisgICAgZ19hc3NlcnRfdHJ1ZShhdHNw
aV9oeXBlcmxpbmtfaXNfdmFsaWQoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRy
KSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfc3RhcnRfaW5kZXgo
QVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDApOworICAgIGdfYXNz
ZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X2VuZF9pbmRleChBVFNQSV9IWVBFUkxJTkso
bGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB1cmko
YXRzcGlfaHlwZXJsaW5rX2dldF91cmkoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBu
dWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHVyaS5nZXQoKSwgPT0sICJodHRwczovL3d3
dy53ZWJraXRndGsub3JnLyIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2dl
dF9vYmplY3QoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRyKSA9PSBhLmdl
dCgpKTsKKworICAgIGF1dG8gZGl2ID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2No
aWxkX2F0X2luZGV4KGRvY3VtZW50V2ViLmdldCgpLCAxLCBudWxscHRyKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGRpdi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2Nt
cGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9yb2xlKGRpdi5nZXQoKSwgbnVsbHB0ciksID09LCBB
VFNQSV9ST0xFX0xJTkspOworICAgIGxpbmsgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9n
ZXRfaHlwZXJsaW5rKGRpdi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfSFlQ
RVJMSU5LKGxpbmsuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5r
X2dldF9uX2FuY2hvcnMoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0s
IDEpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2lzX3ZhbGlkKEFUU1BJX0hZ
UEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNw
aV9oeXBlcmxpbmtfZ2V0X3N0YXJ0X2luZGV4KEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwg
bnVsbHB0ciksID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dl
dF9lbmRfaW5kZXgoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDEp
OworICAgIHVyaS5yZXNldChhdHNwaV9oeXBlcmxpbmtfZ2V0X3VyaShBVFNQSV9IWVBFUkxJTkso
bGluay5nZXQoKSksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodXJpLmdldCgp
LCA9PSwgIiIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2dldF9vYmplY3Qo
QVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRyKSA9PSBkaXYuZ2V0KCkpOwor
CisgICAgYXV0byBwID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2lu
ZGV4KGRvY3VtZW50V2ViLmdldCgpLCAyLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShB
VFNQSV9JU19BQ0NFU1NJQkxFKHAuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlf
YWNjZXNzaWJsZV9nZXRfY2hpbGRfY291bnQocC5nZXQoKSwgbnVsbHB0ciksID09LCAyKTsKKyAg
ICBhdXRvIGJ1dHRvbjEgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRf
aW5kZXgocC5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNf
QUNDRVNTSUJMRShidXR0b24xLmdldCgpKSk7CisgICAgbGluayA9IGFkb3B0R1JlZihhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9oeXBlcmxpbmsoYnV0dG9uMS5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3Ry
dWUoQVRTUElfSVNfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
YXRzcGlfaHlwZXJsaW5rX2dldF9uX2FuY2hvcnMoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkp
LCBudWxscHRyKSwgPT0sIDEpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2lz
X3ZhbGlkKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0cikpOworICAgIGdfYXNz
ZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X3N0YXJ0X2luZGV4KEFUU1BJX0hZUEVSTElO
SyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCA4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRz
cGlfaHlwZXJsaW5rX2dldF9lbmRfaW5kZXgoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBu
dWxscHRyKSwgPT0sIDkpOworICAgIHVyaS5yZXNldChhdHNwaV9oeXBlcmxpbmtfZ2V0X3VyaShB
VFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9j
bXBzdHIodXJpLmdldCgpLCA9PSwgIiIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJs
aW5rX2dldF9vYmplY3QoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRyKSA9
PSBidXR0b24xLmdldCgpKTsKKyAgICBhdXRvIGJ1dHRvbjIgPSBhZG9wdEdSZWYoYXRzcGlfYWNj
ZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgocC5nZXQoKSwgMSwgbnVsbHB0cikpOworICAgIGdf
YXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShidXR0b24yLmdldCgpKSk7CisgICAgbGlu
ayA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9oeXBlcmxpbmsoYnV0dG9uMi5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9uX2FuY2hvcnMoQVRTUElf
SFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDEpOworICAgIGdfYXNzZXJ0X3Ry
dWUoYXRzcGlfaHlwZXJsaW5rX2lzX3ZhbGlkKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwg
bnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X3N0YXJ0
X2luZGV4KEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxNCk7Cisg
ICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfZW5kX2luZGV4KEFUU1BJX0hZ
UEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxNSk7CisgICAgdXJpLnJlc2V0KGF0
c3BpX2h5cGVybGlua19nZXRfdXJpKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgMCwgbnVs
bHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih1cmkuZ2V0KCksID09LCAiIik7CisgICAgZ19h
c3NlcnRfdHJ1ZShhdHNwaV9oeXBlcmxpbmtfZ2V0X29iamVjdChBVFNQSV9IWVBFUkxJTksobGlu
ay5nZXQoKSksIDAsIG51bGxwdHIpID09IGJ1dHRvbjIuZ2V0KCkpOworCisgICAgcCA9IGFkb3B0
R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChkb2N1bWVudFdlYi5nZXQo
KSwgMywgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShw
LmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxk
X2NvdW50KHAuZ2V0KCksIG51bGxwdHIpLCA9PSwgMik7CisgICAgYXV0byBsaW5rMSA9IGFkb3B0
R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChwLmdldCgpLCAwLCBudWxs
cHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGxpbmsxLmdldCgp
KSk7CisgICAgbGluayA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9oeXBlcmxpbmso
bGluazEuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0hZUEVSTElOSyhsaW5r
LmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfbl9hbmNo
b3JzKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxKTsKKyAgICBn
X2Fzc2VydF90cnVlKGF0c3BpX2h5cGVybGlua19pc192YWxpZChBVFNQSV9IWVBFUkxJTksobGlu
ay5nZXQoKSksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5r
X2dldF9zdGFydF9pbmRleChBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIpLCA9
PSwgOCk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfZW5kX2luZGV4
KEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCA5KTsKKyAgICB1cmku
cmVzZXQoYXRzcGlfaHlwZXJsaW5rX2dldF91cmkoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkp
LCAwLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHVyaS5nZXQoKSwgPT0sICJodHRw
czovL3d3dy53ZWJraXRndGsub3JnLyIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJs
aW5rX2dldF9vYmplY3QoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRyKSA9
PSBsaW5rMS5nZXQoKSk7CisgICAgYXV0byBsaW5rMiA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3Np
YmxlX2dldF9jaGlsZF9hdF9pbmRleChwLmdldCgpLCAxLCBudWxscHRyKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGxpbmsyLmdldCgpKSk7CisgICAgbGluayA9IGFk
b3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9oeXBlcmxpbmsobGluazIuZ2V0KCkpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0hZUEVSTElOSyhsaW5rLmdldCgpKSk7CisgICAgZ19h
c3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfbl9hbmNob3JzKEFUU1BJX0hZUEVSTElO
SyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxKTsKKyAgICBnX2Fzc2VydF90cnVlKGF0c3Bp
X2h5cGVybGlua19pc192YWxpZChBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIp
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9zdGFydF9pbmRleChB
VFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMTQpOworICAgIGdfYXNz
ZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X2VuZF9pbmRleChBVFNQSV9IWVBFUkxJTkso
bGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMTUpOworICAgIHVyaS5yZXNldChhdHNwaV9oeXBl
cmxpbmtfZ2V0X3VyaShBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIDAsIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIodXJpLmdldCgpLCA9PSwgImh0dHBzOi8vd3d3Lmdub21lLm9y
Zy8iKTsKKyAgICBnX2Fzc2VydF90cnVlKGF0c3BpX2h5cGVybGlua19nZXRfb2JqZWN0KEFUU1BJ
X0hZUEVSTElOSyhsaW5rLmdldCgpKSwgMCwgbnVsbHB0cikgPT0gbGluazIuZ2V0KCkpOworfQor
CiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0
QWNjZXNzaWJpbGl0eSIsICJhY2Nlc3NpYmxlL2Jhc2ljLWhpZXJhcmNoeSIsIHRlc3RBY2Nlc3Np
YmxlQmFzaWNIaWVyYXJjaHkpOwpAQCAtMTY4Niw2ICsxODExLDcgQEAgdm9pZCBiZWZvcmVBbGwo
KQogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAidGV4
dC9zdGF0ZS1jaGFuZ2VkIiwgdGVzdFRleHRTdGF0ZUNoYW5nZWQpOwogICAgIEFjY2Vzc2liaWxp
dHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAidGV4dC9yZXBsYWNlZC1vYmplY3Rz
IiwgdGVzdFRleHRSZXBsYWNlZE9iamVjdHMpOwogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQo
IldlYktpdEFjY2Vzc2liaWxpdHkiLCAidmFsdWUvYmFzaWMiLCB0ZXN0VmFsdWVCYXNpYyk7Cisg
ICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNzaWJpbGl0eSIsICJoeXBlcmxp
bmsvYmFzaWMiLCB0ZXN0SHlwZXJsaW5rQmFzaWMpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcAppbmRleCAw
YWQyZmFiYzVjMGIuLmQ0N2E2YzFkZGE2NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQWNjZXNzaWJpbGl0eUF0c3BpRW51bXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZUZyYW1lLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgpAQCAtMTIxNSw3ICsxMjE2LDI0IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCiAK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQog
ewotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIGlm
ICghbV9lbGVtZW50IHx8ICFtX2VsZW1lbnQtPmludGVyZmFjZXMoKS5jb250YWlucyhXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OkludGVyZmFjZTo6SHlwZXJsaW5rKSkKKyAgICAg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBtX2Vs
ZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIGF1dG8gYXhVUkwgPSBtX2VsZW1lbnQt
PnVybCgpOworICAgIGlmIChheFVSTC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBWFVSTDogKG51bGwpIik7CisKKyAgICBpZiAoYXhVUkwu
aXNMb2NhbEZpbGUoKSkgeworICAgICAgICAvLyBEbyBub3QgZXhwb3NlIGFic29sdXRlIHBhdGhz
LgorICAgICAgICBhdXRvIHBhdGggPSBheFVSTC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBh
dXRvIGluZGV4ID0gcGF0aC5maW5kKCJMYXlvdXRUZXN0cyIpOworICAgICAgICBpZiAoaW5kZXgg
IT0gbm90Rm91bmQpCisgICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcoaW5kZXgpOwor
ICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtYWtlU3RyaW5nKCJBWFVS
TDogIiwgcGF0aCkpLmxlYWtSZWYoKTsKKyAgICB9CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJp
bmc6OnRyeUNyZWF0ZShtYWtlU3RyaW5nKCJBWFVSTDogIiwgYXhVUkwuc3RyaW5nKCkpKS5sZWFr
UmVmKCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9u
TGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444661</attachid>
            <date>2021-11-18 04:39:19 -0800</date>
            <delta_ts>2021-11-18 04:52:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-hyperlink.diff</filename>
            <type>text/plain</type>
            <size>26928</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNjUwZGMxMjJhNGEuLjA1MTI1N2U3ZjA4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDIxLTExLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Yg
aHlwZXJsaW5rIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjcwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBoeXBlcmxpbmsgaW1wbGVt
ZW50YXRpb24gYW5kIG1ha2UgbGlua3MgYmUgaGFuZGxlZCBhcyByZXBsYWNlZCBvYmplY3RzIHRv
bywgdG8gZW5zdXJlIGFsbCBoeXBlcmxpbmtzIGFyZQorICAgICAgICBoYW5kbGVkIHRoZSBzYW1l
IHdheS4gVGhhdCdzIGNvbnNpc3RlbnQgd2l0aCBjaHJvbWl1bS4KKworICAgICAgICAqIFNvdXJj
ZXNHVEsudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6aW50ZXJmYWNlc0Zvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpidWlsZEludGVyZmFjZXMgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dXJsIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6b2Zmc2V0SW5QYXJlbnQg
Y29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OmNoYXJhY3Rlck9mZnNldCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCk6CisK
IDIwMjEtMTAtMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB2YWx1ZSBpbnRlcmZh
Y2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IDQ3N2Uz
MTU2ZDc3MS4uMTg4NDVjYzAyMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
R1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNDIsNiArNDIs
NyBAQCBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKIGFjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RDb21wb25lbnRBdHNwaS5jcHAKK2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdEh5cGVybGlua0F0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0VmFsdWVBdHNwaS5jcHAKIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eVJvb3RBdHNwaS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAppbmRleCAwOGEy
NzJiMzkxNTkuLmFiZmY1YWI3YmEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCIKICNp
bmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtODYsNiArODcs
OSBAQCBPcHRpb25TZXQ8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZhY2U+IEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6aW50ZXJmYQogICAgIGlmIChjb3JlT2JqZWN0LnN1cHBvcnRz
UmFuZ2VWYWx1ZSgpKQogICAgICAgICBpbnRlcmZhY2VzLmFkZChJbnRlcmZhY2U6OlZhbHVlKTsK
IAorICAgIGlmIChjb3JlT2JqZWN0LmlzTGluaygpIHx8IChpc1JlbmRlcmVyUmVwbGFjZWRFbGVt
ZW50KHJlbmRlcmVyKSkpCisgICAgICAgIGludGVyZmFjZXMuYWRkKEludGVyZmFjZTo6SHlwZXJs
aW5rKTsKKwogICAgIHJldHVybiBpbnRlcmZhY2VzOwogfQogCkBAIC00NzQsNiArNDc4LDggQEAg
Y29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnBhdGgoKQogICAgICAgICAg
ICAgaW50ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3
ZWJraXRfdGV4dF9pbnRlcmZhY2UpLCAmc190ZXh0RnVuY3Rpb25zIH0pOwogICAgICAgICBpZiAo
bV9pbnRlcmZhY2VzLmNvbnRhaW5zKEludGVyZmFjZTo6VmFsdWUpKQogICAgICAgICAgICAgaW50
ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRf
dmFsdWVfaW50ZXJmYWNlKSwgJnNfdmFsdWVGdW5jdGlvbnMgfSk7CisgICAgICAgIGlmIChtX2lu
dGVyZmFjZXMuY29udGFpbnMoSW50ZXJmYWNlOjpIeXBlcmxpbmspKQorICAgICAgICAgICAgaW50
ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRf
aHlwZXJsaW5rX2ludGVyZmFjZSksICZzX2h5cGVybGlua0Z1bmN0aW9ucyB9KTsKICAgICAgICAg
bV9wYXRoID0gYXRzcGlSb290LT5hdHNwaSgpLnJlZ2lzdGVyT2JqZWN0KCp0aGlzLCBXVEZNb3Zl
KGludGVyZmFjZXMpKTsKICAgICB9CiAKQEAgLTEwOTEsNiArMTA5Nyw4IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpOjpidWlsZEludGVyZmFjZXMoR1ZhcmlhbnRCdWlsZGVyKiBidWls
ZGVyKSBjb25zdAogICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgInMiLCB3
ZWJraXRfdGV4dF9pbnRlcmZhY2UubmFtZSk7CiAgICAgaWYgKG1faW50ZXJmYWNlcy5jb250YWlu
cyhJbnRlcmZhY2U6OlZhbHVlKSkKICAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKGJ1aWxk
ZXIsICJzIiwgd2Via2l0X3ZhbHVlX2ludGVyZmFjZS5uYW1lKTsKKyAgICBpZiAobV9pbnRlcmZh
Y2VzLmNvbnRhaW5zKEludGVyZmFjZTo6SHlwZXJsaW5rKSkKKyAgICAgICAgZ192YXJpYW50X2J1
aWxkZXJfYWRkKGJ1aWxkZXIsICJzIiwgd2Via2l0X2h5cGVybGlua19pbnRlcmZhY2UubmFtZSk7
CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZXJpYWxpemUoR1ZhcmlhbnRC
dWlsZGVyKiBidWlsZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgKaW5kZXggM2Nh
MjIzNzM3MjY3Li44OTljNWVjMjU0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaApAQCAt
NDYsNyArNDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFjY2Vzc2libGUgPSAxIDw8IDAsCiAgICAg
ICAgIENvbXBvbmVudCA9IDEgPDwgMSwKICAgICAgICAgVGV4dCA9IDEgPDwgMiwKLSAgICAgICAg
VmFsdWUgPSAxIDw8IDMKKyAgICAgICAgVmFsdWUgPSAxIDw8IDMsCisgICAgICAgIEh5cGVybGlu
ayA9IDEgPDwgNAogICAgIH07CiAgICAgY29uc3QgT3B0aW9uU2V0PEludGVyZmFjZT4mIGludGVy
ZmFjZXMoKSBjb25zdCB7IHJldHVybiBtX2ludGVyZmFjZXM7IH0KIApAQCAtMTE3LDYgKzExOCw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbWluaW11bUluY3JlbWVudCgp
IGNvbnN0OwogICAgIHZvaWQgdmFsdWVDaGFuZ2VkKGRvdWJsZSk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBVUkwgdXJsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpKEFYQ29yZU9iamVjdCopOwogCkBAIC0xMzksNiArMTQyLDcgQEAgcHJp
dmF0ZToKICAgICBDU3RyaW5nIHRleHQoaW50LCBpbnQpIGNvbnN0OwogICAgIENTdHJpbmcgdGV4
dEF0T2Zmc2V0KGludCwgVGV4dEdyYW51bGFyaXR5LCBpbnQmLCBpbnQmKSBjb25zdDsKICAgICBp
bnQgY2hhcmFjdGVyQXRPZmZzZXQoaW50KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBjaGFyYWN0ZXJPZmZzZXQoVUNoYXIsIGludCkgY29uc3Q7CiAgICAgSW50UmVjdCB0ZXh0
RXh0ZW50cyhpbnQsIGludCwgdWludDMyX3QpIGNvbnN0OwogICAgIGludCBvZmZzZXRBdFBvaW50
KGNvbnN0IEludFBvaW50JiwgdWludDMyX3QpIGNvbnN0OwogICAgIEludFBvaW50IGJvdW5kc0Zv
clNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgY29uc3Q7CkBAIC0xNDgsMTIgKzE1
MiwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgc2Nyb2xsVG9NYWtlVmlzaWJsZShpbnQsIGludCwg
dWludDMyX3QpIGNvbnN0OwogICAgIGJvb2wgc2Nyb2xsVG9Qb2ludChpbnQsIGludCwgdWludDMy
X3QsIGludCwgaW50KSBjb25zdDsKIAorICAgIHVuc2lnbmVkIG9mZnNldEluUGFyZW50KCkgY29u
c3Q7CisKICAgICBzdGF0aWMgT3B0aW9uU2V0PEludGVyZmFjZT4gaW50ZXJmYWNlc0Zvck9iamVj
dChBWENvcmVPYmplY3QmKTsKIAogICAgIHN0YXRpYyBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX2Fj
Y2Vzc2libGVGdW5jdGlvbnM7CiAgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfY29t
cG9uZW50RnVuY3Rpb25zOwogICAgIHN0YXRpYyBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX3RleHRG
dW5jdGlvbnM7CiAgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfdmFsdWVGdW5jdGlv
bnM7CisgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaHlwZXJsaW5rRnVuY3Rpb25z
OwogCiAgICAgQVhDb3JlT2JqZWN0KiBtX2F4T2JqZWN0IHsgbnVsbHB0ciB9OwogICAgIEFYQ29y
ZU9iamVjdCogbV9jb3JlT2JqZWN0IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRz
cGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNjM5YjQwMzM3MjVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3Bw
CkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGku
aCIKKworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBVU0UoQVRTUEkpCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaTo6c19oeXBlcmxpbmtGdW5jdGlvbnMgPSB7CisgICAgLy8gbWV0aG9kX2Nh
bGwKKyAgICBbXShHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwg
Y29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciogbWV0aG9kTmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRl
cnMsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgYXV0
byBhdHNwaU9iamVjdCA9IFJlZiB7ICpzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGkqPih1c2VyRGF0YSkgfTsKKyAgICAgICAgYXRzcGlPYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpOworCisgICAgICAgIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRPYmplY3QiKSkg
eworICAgICAgICAgICAgaW50IGluZGV4OworICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJh
bWV0ZXJzLCAiKGkpIiwgJmluZGV4KTsKKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2Nh
dGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsICFp
bmRleCA/IGF0c3BpT2JqZWN0LT5yZWZlcmVuY2UoKSA6IGF0c3BpT2JqZWN0LT5yb290KCktPmF0
c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMCht
ZXRob2ROYW1lLCAiR2V0VVJJIikpIHsKKyAgICAgICAgICAgIGludCBpbmRleDsKKyAgICAgICAg
ICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihpKSIsICZpbmRleCk7CisgICAgICAgICAg
ICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFy
aWFudF9uZXcoIihzKSIsICFpbmRleCA/IGF0c3BpT2JqZWN0LT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpIDogIiIpKTsKKyAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5h
bWUsICJJc1ZhbGlkIikpCisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0
dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihiKSIsIGF0c3BpT2JqZWN0LT5t
X2F4T2JqZWN0ID8gVFJVRSA6IEZBTFNFKSk7CisgICAgfSwKKyAgICAvLyBnZXRfcHJvcGVydHkK
KyAgICBbXShHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgY29u
c3QgZ2NoYXIqLCBjb25zdCBnY2hhciogcHJvcGVydHlOYW1lLCBHRXJyb3IqKiBlcnJvciwgZ3Bv
aW50ZXIgdXNlckRhdGEpIC0+IEdWYXJpYW50KiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisgICAgICAgIGF1dG8gYXRzcGlPYmplY3QgPSBSZWYgeyAqc3RhdGlj
X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKj4odXNlckRhdGEpIH07CisgICAgICAgIGF0
c3BpT2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgICAgICBpZiAoIWdfc3RyY21w
MChwcm9wZXJ0eU5hbWUsICJOQW5jaG9ycyIpKQorICAgICAgICAgICAgcmV0dXJuIGdfdmFyaWFu
dF9uZXdfaW50MzIoMSk7CisgICAgICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIlN0
YXJ0SW5kZXgiKSkKKyAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKGF0c3Bp
T2JqZWN0LT5vZmZzZXRJblBhcmVudCgpKTsKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVy
dHlOYW1lLCAiRW5kSW5kZXgiKSkKKyAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2lu
dDMyKGF0c3BpT2JqZWN0LT5vZmZzZXRJblBhcmVudCgpICsgMSk7CisKKyAgICAgICAgZ19zZXRf
ZXJyb3IoZXJyb3IsIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfTk9UX1NVUFBPUlRFRCwgIlVua25v
d24gcHJvcGVydHkgJyVzJyIsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0sCisgICAgLy8gc2V0X3Byb3BlcnR5LAorICAgIG51bGxwdHIsCisgICAgLy8gcGFk
ZGluZworICAgIG51bGxwdHIKK307CisKK1VSTCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnVy
bCgpIGNvbnN0Cit7CisgICAgQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGlzTWFpblRocmVhZCgp
ID8gbV9jb3JlT2JqZWN0IDogbV9heE9iamVjdDsKKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9i
amVjdC0+dXJsKCkgOiBVUkwoKTsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpvZmZzZXRJblBhcmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6
OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDx1bnNpZ25lZD4oW3RoaXNdKCkgLT4gdW5zaWdu
ZWQgeworICAgICAgICBpZiAobV9jb3JlT2JqZWN0KQorICAgICAgICAgICAgbV9jb3JlT2JqZWN0
LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgICAgICBpZiAoIW1fY29yZU9iamVjdCkKKyAg
ICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGF1dG8qIHBhcmVudCA9IG1fY29yZU9iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIGlmICghcGFyZW50IHx8ICFwYXJl
bnQtPndyYXBwZXIoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGludCBpbmRl
eCA9IC0xOworICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IHBhcmVudC0+Y2hpbGRyZW4o
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7CisgICAgICAg
ICAgICBpZiAoY2hpbGQtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byogd3JhcHBlciA9IGNoaWxkLT53cmFwcGVy
KCk7CisgICAgICAgICAgICBpZiAoIXdyYXBwZXIgfHwgIXdyYXBwZXItPmludGVyZmFjZXMoKS5j
b250YWlucyhJbnRlcmZhY2U6Okh5cGVybGluaykpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGluZGV4Kys7CisgICAgICAgICAgICBpZiAod3JhcHBlciA9PSB0aGlz
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluZGV4
ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+
d3JhcHBlcigpLT5jaGFyYWN0ZXJPZmZzZXQob2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIGlu
ZGV4KS52YWx1ZV9vcigwKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGE5YWUwODA4ODAwYy4uMzdiZjQyZjVl
ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTIxLDEzICsy
MSwxOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5oIgogCiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKKyNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUF0c3BpRW51bXMuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSb290QXRzcGkuaCIKICNpbmNsdWRlICJFZGl0
aW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKKyNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgogI2luY2x1ZGUgIlN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgorI2luY2x1ZGUg
PGdpby9naW8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00ODQsNiArNDg5LDI0IEBA
IGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNoYXJhY3RlckF0T2Zmc2V0KGludCBvZmZz
ZXQpIGNvbnN0CiAgICAgcmV0dXJuIGdfdXRmOF9nZXRfY2hhcihnX3V0Zjhfb2Zmc2V0X3RvX3Bv
aW50ZXIodXRmOFRleHQuZGF0YSgpLCBvZmZzZXQpKTsKIH0KIAorc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjaGFyYWN0ZXJPZmZzZXQoVUNoYXIgY2hh
cmFjdGVyLCBpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgYXV0byB1dGYxNlRleHQgPSB0ZXh0KCk7
CisgICAgdW5zaWduZWQgc3RhcnQgPSAwOworICAgIHNpemVfdCBvZmZzZXQ7CisgICAgd2hpbGUg
KChvZmZzZXQgPSB1dGYxNlRleHQuZmluZChjaGFyYWN0ZXIsIHN0YXJ0KSkgIT0gbm90Rm91bmQp
IHsKKyAgICAgICAgc3RhcnQgPSBvZmZzZXQgKyAxOworICAgICAgICBpZiAoLS1pbmRleCA9PSAt
MSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIG1hcHBpbmcgPSBv
ZmZzZXRNYXBwaW5nKHV0ZjE2VGV4dCk7CisgICAgcmV0dXJuIFVURjE2T2Zmc2V0VG9VVEY4KG1h
cHBpbmcsIG9mZnNldCk7Cit9CisKIEludFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpi
b3VuZHNGb3JSYW5nZSh1bnNpZ25lZCB1dGYxNk9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCB1aW50
MzJfdCBjb29yZGluYXRlVHlwZSkgY29uc3QKIHsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6
cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEludFJlY3Q+KFt0aGlzLCB1dGYxNk9mZnNldCwg
bGVuZ3RoLCBjb29yZGluYXRlVHlwZV0oKSAtPiBJbnRSZWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBiOTRkOWJlZTBlYjkuLmZhMGUwYmY5YmI1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjc3LDYgKzI3NywxMSBA
QCBib29sIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVB
dHRyKSwgImltZyIpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgVVNFKEFUU1BJKQor
ICAgICAgICAvLyBMaW5rcyBhcmUgYWxzbyByZXBsYWNlZCB3aXRoIG9iamVjdCByZXBsYWNlbWVu
dCBjaGFyYWN0ZXIgaW4gQVRTUEkuCisgICAgICAgIGlmIChlbGVtZW50LmlzTGluaygpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7
CkBAIC03NTAsNyArNzU1LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxl
bWVudCgpCiAKICAgICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogCi0gICAgaWYgKG1fYmVoYXZpb3Jz
LmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVycykgJiYgcmVuZGVyZXIuaXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKG1fYmVoYXZpb3Jz
LmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVycykpIHsKICAgICAgICAgZW1pdENoYXJhY3RlcihvYmplY3RSZXBsYWNlbWVudENoYXJh
Y3RlciwgKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUsIDAsIDEpOwogICAgICAgICAvLyBE
b24ndCBwcm9jZXNzIHN1YnRyZWVzIGZvciBlbWJlZGRlZCBvYmplY3RzLiBJZiB0aGUgdGV4dCB0
aGVyZSBpcyByZXF1aXJlZCwKICAgICAgICAgLy8gaXQgbXVzdCBiZSBleHBsaWNpdGx5IGFza2Vk
IGJ5IHNwZWNpZnlpbmcgYSByYW5nZSBmYWxsaW5nIGluc2lkZSBpdHMgYm91bmRhcmllcy4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNjliOTc3
YzE5MTMuLmFlZjM0NjdlOGQ5MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTExLTA0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBBZGQg
aW1wbGVtZW50YXRpb24gb2YgaHlwZXJsaW5rIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGgg
QVRTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjcwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB1bml0IHRlc3RzIHRvIGNoZWNrIGh5cGVybGluayBpbnRlcmZhY2UgYW5kIGltcGxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKSBpbiBXVFIuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHA6CisgICAg
ICAgICh0ZXN0VGV4dFJlcGxhY2VkT2JqZWN0cyk6CisgICAgICAgICh0ZXN0SHlwZXJsaW5rQmFz
aWMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHA6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisKIDIwMjEtMTAtMjYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB2YWx1ZSBpbnRlcmZhY2Ugd2hlbiBidWlsZGlu
ZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKaW5kZXggM2IyMzhkNmIz
ZTA4Li4xOGUwNGI5OGVjMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKQEAgLTE1
MzMsNiArMTUzMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RUZXh0UmVwbGFjZWRPYmplY3RzKEFjY2Vz
c2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAiPGh0bWw+IgogICAg
ICAgICAiICA8Ym9keT4iCiAgICAgICAgICIgICAgPHA+VGhpcyBpcyA8YnV0dG9uPmJ1dHRvbjE8
L2J1dHRvbj4gYW5kIDxidXR0b24+YnV0dG9uMjwvYnV0dG9uPiBpbiBwYXJhZ3JhcGg8L3A+Igor
ICAgICAgICAiICAgIDxwPlRoaXMgaXMgPGEgaHJlZj0nIyc+bGluazE8L2E+IGFuZCA8YSBocmVm
PScjJz5saW5rMjwvYT4gaW4gcGFyYWdyYXBoPC9wPiIKICAgICAgICAgIiAgPC9ib2R5PiIKICAg
ICAgICAgIjwvaHRtbD4iLAogICAgICAgICBudWxscHRyKTsKQEAgLTE1NDMsNyArMTU0NCw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RUZXh0UmVwbGFjZWRPYmplY3RzKEFjY2Vzc2liaWxpdHlUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgYXV0byBkb2N1bWVudFdlYiA9IHRlc3QtPmZpbmRE
b2N1bWVudFdlYih0ZXN0QXBwLmdldCgpKTsKICAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FD
Q0VTU0lCTEUoZG9jdW1lbnRXZWIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlf
YWNjZXNzaWJsZV9nZXRfY2hpbGRfY291bnQoZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpLCA9
PSwgMSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2Nv
dW50KGRvY3VtZW50V2ViLmdldCgpLCBudWxscHRyKSwgPT0sIDIpOwogCiAgICAgYXV0byBwID0g
YWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KGRvY3VtZW50V2Vi
LmdldCgpLCAwLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19URVhUKHAu
Z2V0KCkpKTsKQEAgLTE2MTEsNiArMTYxMiwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0VGV4dFJlcGxh
Y2VkT2JqZWN0cyhBY2Nlc3NpYmlsaXR5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBn
X2Fzc2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA9PSwg
MCk7CiAgICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgMTUpOwogICAgIGdfYXNz
ZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCAyOCk7CisKKyAgICAvLyBMaW5rcyBhcmUgYWxzbyBy
ZXBsYWNlZCBlbGVtZW50cy4KKyAgICBwID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0
X2NoaWxkX2F0X2luZGV4KGRvY3VtZW50V2ViLmdldCgpLCAxLCBudWxscHRyKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShBVFNQSV9JU19URVhUKHAuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
YXRzcGlfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50KEFUU1BJX1RFWFQocC5nZXQoKSksIG51bGxw
dHIpLCA9PSwgMjgpOworICAgIHRleHQucmVzZXQoYXRzcGlfdGV4dF9nZXRfdGV4dChBVFNQSV9U
RVhUKHAuZ2V0KCkpLCAwLCAtMSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0
LmdldCgpLCA9PSwgIlRoaXMgaXMgXDM1N1wyNzdcMjc0IGFuZCBcMzU3XDI3N1wyNzQgaW4gcGFy
YWdyYXBoIik7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxk
X2NvdW50KHAuZ2V0KCksIG51bGxwdHIpLCA9PSwgMik7CisKKyAgICBhdXRvIGxpbmsxID0gYWRv
cHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KHAuZ2V0KCksIDAsIG51
bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX1RFWFQobGluazEuZ2V0KCkpKTsK
KyAgICB0ZXh0LnJlc2V0KGF0c3BpX3RleHRfZ2V0X3RleHQoQVRTUElfVEVYVChsaW5rMS5nZXQo
KSksIDAsIC0xLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQuZ2V0KCksID09
LCAibGluazEiKTsKKworICAgIGF1dG8gbGluazIgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJs
ZV9nZXRfY2hpbGRfYXRfaW5kZXgocC5nZXQoKSwgMSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0
X3RydWUoQVRTUElfSVNfVEVYVChsaW5rMi5nZXQoKSkpOworICAgIHRleHQucmVzZXQoYXRzcGlf
dGV4dF9nZXRfdGV4dChBVFNQSV9URVhUKGxpbmsyLmdldCgpKSwgMCwgLTEsIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dC5nZXQoKSwgPT0sICJsaW5rMiIpOwogI2VuZGlmCiB9
CiAKQEAgLTE2NjUsNiArMTY4NCwxMTIgQEAgc3RhdGljIHZvaWQgdGVzdFZhbHVlQmFzaWMoQWNj
ZXNzaWJpbGl0eVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wZmxv
YXQoYXRzcGlfdmFsdWVfZ2V0X2N1cnJlbnRfdmFsdWUoQVRTUElfVkFMVUUoc2xpZGVyLmdldCgp
KSwgbnVsbHB0ciksID09LCAwKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEh5cGVybGlua0Jhc2lj
KEFjY2Vzc2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPnNo
b3dJbldpbmRvdyg4MDAsIDYwMCk7CisgICAgdGVzdC0+bG9hZEh0bWwoCisgICAgICAgICI8aHRt
bD4iCisgICAgICAgICIgIDxib2R5PiIKKyAgICAgICAgIiAgICA8YSBocmVmPSdodHRwczovL3d3
dy53ZWJraXRndGsub3JnJz5XZWJLaXRHVEs8L2E+IgorICAgICAgICAiICAgIDxkaXYgcm9sZT0n
bGluayc+TGluazwvZGl2PiIKKyAgICAgICAgIiAgICA8cD5UaGlzIGlzIDxidXR0b24+YnV0dG9u
MTwvYnV0dG9uPiBhbmQgPGJ1dHRvbj5idXR0b24yPC9idXR0b24+IGluIGEgcGFyYWdyYXBoPC9w
PiIKKyAgICAgICAgIiAgICA8cD5UaGlzIGlzIDxhIGhyZWY9J2h0dHBzOi8vd3d3LndlYmtpdGd0
ay5vcmcnPmxpbmsxPC9hPiBhbmQgPGEgaHJlZj0naHR0cHM6Ly93d3cuZ25vbWUub3JnJz5saW5r
MjwvYT4gaW4gcGFyYWdyYXBoPC9wPiIKKyAgICAgICAgIiAgPC9ib2R5PiIKKyAgICAgICAgIjwv
aHRtbD4iLAorICAgICAgICBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKworICAgIGF1dG8gdGVzdEFwcCA9IHRlc3QtPmZpbmRUZXN0QXBwbGljYXRpb24oKTsK
KyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUodGVzdEFwcC5nZXQoKSkpOwor
CisgICAgYXV0byBkb2N1bWVudFdlYiA9IHRlc3QtPmZpbmREb2N1bWVudFdlYih0ZXN0QXBwLmdl
dCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoZG9jdW1lbnRXZWIu
Z2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRf
Y291bnQoZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpLCA9PSwgNCk7CisKKyAgICBhdXRvIHNl
Y3Rpb24gPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoZG9j
dW1lbnRXZWIuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lT
X0FDQ0VTU0lCTEUoc2VjdGlvbi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9yb2xlKHNlY3Rpb24uZ2V0KCksIG51bGxwdHIpLCA9PSwgQVRTUElfUk9M
RV9TRUNUSU9OKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hp
bGRfY291bnQoc2VjdGlvbi5nZXQoKSwgbnVsbHB0ciksID09LCAxKTsKKworICAgIGF1dG8gYSA9
IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChzZWN0aW9uLmdl
dCgpLCAwLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxF
KGEuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfcm9s
ZShhLmdldCgpLCBudWxscHRyKSwgPT0sIEFUU1BJX1JPTEVfTElOSyk7CisgICAgYXV0byBsaW5r
ID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2h5cGVybGluayhhLmdldCgpKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19IWVBFUkxJTksobGluay5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X25fYW5jaG9ycyhBVFNQSV9IWVBFUkxJ
TksobGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMSk7CisgICAgZ19hc3NlcnRfdHJ1ZShhdHNw
aV9oeXBlcmxpbmtfaXNfdmFsaWQoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRy
KSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfc3RhcnRfaW5kZXgo
QVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDApOworICAgIGdfYXNz
ZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X2VuZF9pbmRleChBVFNQSV9IWVBFUkxJTkso
bGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMSk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB1cmko
YXRzcGlfaHlwZXJsaW5rX2dldF91cmkoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBu
dWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHVyaS5nZXQoKSwgPT0sICJodHRwczovL3d3
dy53ZWJraXRndGsub3JnLyIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2dl
dF9vYmplY3QoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRyKSA9PSBhLmdl
dCgpKTsKKworICAgIGF1dG8gZGl2ID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2No
aWxkX2F0X2luZGV4KGRvY3VtZW50V2ViLmdldCgpLCAxLCBudWxscHRyKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGRpdi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2Nt
cGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9yb2xlKGRpdi5nZXQoKSwgbnVsbHB0ciksID09LCBB
VFNQSV9ST0xFX0xJTkspOworICAgIGxpbmsgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9n
ZXRfaHlwZXJsaW5rKGRpdi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfSFlQ
RVJMSU5LKGxpbmsuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5r
X2dldF9uX2FuY2hvcnMoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0s
IDEpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2lzX3ZhbGlkKEFUU1BJX0hZ
UEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNw
aV9oeXBlcmxpbmtfZ2V0X3N0YXJ0X2luZGV4KEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwg
bnVsbHB0ciksID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dl
dF9lbmRfaW5kZXgoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDEp
OworICAgIHVyaS5yZXNldChhdHNwaV9oeXBlcmxpbmtfZ2V0X3VyaShBVFNQSV9IWVBFUkxJTkso
bGluay5nZXQoKSksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodXJpLmdldCgp
LCA9PSwgIiIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2dldF9vYmplY3Qo
QVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRyKSA9PSBkaXYuZ2V0KCkpOwor
CisgICAgYXV0byBwID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2lu
ZGV4KGRvY3VtZW50V2ViLmdldCgpLCAyLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShB
VFNQSV9JU19BQ0NFU1NJQkxFKHAuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlf
YWNjZXNzaWJsZV9nZXRfY2hpbGRfY291bnQocC5nZXQoKSwgbnVsbHB0ciksID09LCAyKTsKKyAg
ICBhdXRvIGJ1dHRvbjEgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRf
aW5kZXgocC5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNf
QUNDRVNTSUJMRShidXR0b24xLmdldCgpKSk7CisgICAgbGluayA9IGFkb3B0R1JlZihhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9oeXBlcmxpbmsoYnV0dG9uMS5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3Ry
dWUoQVRTUElfSVNfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
YXRzcGlfaHlwZXJsaW5rX2dldF9uX2FuY2hvcnMoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkp
LCBudWxscHRyKSwgPT0sIDEpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2lz
X3ZhbGlkKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0cikpOworICAgIGdfYXNz
ZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X3N0YXJ0X2luZGV4KEFUU1BJX0hZUEVSTElO
SyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCA4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRz
cGlfaHlwZXJsaW5rX2dldF9lbmRfaW5kZXgoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBu
dWxscHRyKSwgPT0sIDkpOworICAgIHVyaS5yZXNldChhdHNwaV9oeXBlcmxpbmtfZ2V0X3VyaShB
VFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9j
bXBzdHIodXJpLmdldCgpLCA9PSwgIiIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJs
aW5rX2dldF9vYmplY3QoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRyKSA9
PSBidXR0b24xLmdldCgpKTsKKyAgICBhdXRvIGJ1dHRvbjIgPSBhZG9wdEdSZWYoYXRzcGlfYWNj
ZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgocC5nZXQoKSwgMSwgbnVsbHB0cikpOworICAgIGdf
YXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShidXR0b24yLmdldCgpKSk7CisgICAgbGlu
ayA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9oeXBlcmxpbmsoYnV0dG9uMi5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9uX2FuY2hvcnMoQVRTUElf
SFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDEpOworICAgIGdfYXNzZXJ0X3Ry
dWUoYXRzcGlfaHlwZXJsaW5rX2lzX3ZhbGlkKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwg
bnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X3N0YXJ0
X2luZGV4KEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxNCk7Cisg
ICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfZW5kX2luZGV4KEFUU1BJX0hZ
UEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxNSk7CisgICAgdXJpLnJlc2V0KGF0
c3BpX2h5cGVybGlua19nZXRfdXJpKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgMCwgbnVs
bHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih1cmkuZ2V0KCksID09LCAiIik7CisgICAgZ19h
c3NlcnRfdHJ1ZShhdHNwaV9oeXBlcmxpbmtfZ2V0X29iamVjdChBVFNQSV9IWVBFUkxJTksobGlu
ay5nZXQoKSksIDAsIG51bGxwdHIpID09IGJ1dHRvbjIuZ2V0KCkpOworCisgICAgcCA9IGFkb3B0
R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChkb2N1bWVudFdlYi5nZXQo
KSwgMywgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShw
LmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxk
X2NvdW50KHAuZ2V0KCksIG51bGxwdHIpLCA9PSwgMik7CisgICAgYXV0byBsaW5rMSA9IGFkb3B0
R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChwLmdldCgpLCAwLCBudWxs
cHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGxpbmsxLmdldCgp
KSk7CisgICAgbGluayA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9oeXBlcmxpbmso
bGluazEuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0hZUEVSTElOSyhsaW5r
LmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfbl9hbmNo
b3JzKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxKTsKKyAgICBn
X2Fzc2VydF90cnVlKGF0c3BpX2h5cGVybGlua19pc192YWxpZChBVFNQSV9IWVBFUkxJTksobGlu
ay5nZXQoKSksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5r
X2dldF9zdGFydF9pbmRleChBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIpLCA9
PSwgOCk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfZW5kX2luZGV4
KEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCA5KTsKKyAgICB1cmku
cmVzZXQoYXRzcGlfaHlwZXJsaW5rX2dldF91cmkoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkp
LCAwLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHVyaS5nZXQoKSwgPT0sICJodHRw
czovL3d3dy53ZWJraXRndGsub3JnLyIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJs
aW5rX2dldF9vYmplY3QoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRyKSA9
PSBsaW5rMS5nZXQoKSk7CisgICAgYXV0byBsaW5rMiA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3Np
YmxlX2dldF9jaGlsZF9hdF9pbmRleChwLmdldCgpLCAxLCBudWxscHRyKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGxpbmsyLmdldCgpKSk7CisgICAgbGluayA9IGFk
b3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9oeXBlcmxpbmsobGluazIuZ2V0KCkpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0hZUEVSTElOSyhsaW5rLmdldCgpKSk7CisgICAgZ19h
c3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfbl9hbmNob3JzKEFUU1BJX0hZUEVSTElO
SyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxKTsKKyAgICBnX2Fzc2VydF90cnVlKGF0c3Bp
X2h5cGVybGlua19pc192YWxpZChBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIp
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9zdGFydF9pbmRleChB
VFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMTQpOworICAgIGdfYXNz
ZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X2VuZF9pbmRleChBVFNQSV9IWVBFUkxJTkso
bGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMTUpOworICAgIHVyaS5yZXNldChhdHNwaV9oeXBl
cmxpbmtfZ2V0X3VyaShBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIDAsIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIodXJpLmdldCgpLCA9PSwgImh0dHBzOi8vd3d3Lmdub21lLm9y
Zy8iKTsKKyAgICBnX2Fzc2VydF90cnVlKGF0c3BpX2h5cGVybGlua19nZXRfb2JqZWN0KEFUU1BJ
X0hZUEVSTElOSyhsaW5rLmdldCgpKSwgMCwgbnVsbHB0cikgPT0gbGluazIuZ2V0KCkpOworfQor
CiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0
QWNjZXNzaWJpbGl0eSIsICJhY2Nlc3NpYmxlL2Jhc2ljLWhpZXJhcmNoeSIsIHRlc3RBY2Nlc3Np
YmxlQmFzaWNIaWVyYXJjaHkpOwpAQCAtMTY4Niw2ICsxODExLDcgQEAgdm9pZCBiZWZvcmVBbGwo
KQogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAidGV4
dC9zdGF0ZS1jaGFuZ2VkIiwgdGVzdFRleHRTdGF0ZUNoYW5nZWQpOwogICAgIEFjY2Vzc2liaWxp
dHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAidGV4dC9yZXBsYWNlZC1vYmplY3Rz
IiwgdGVzdFRleHRSZXBsYWNlZE9iamVjdHMpOwogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQo
IldlYktpdEFjY2Vzc2liaWxpdHkiLCAidmFsdWUvYmFzaWMiLCB0ZXN0VmFsdWVCYXNpYyk7Cisg
ICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNzaWJpbGl0eSIsICJoeXBlcmxp
bmsvYmFzaWMiLCB0ZXN0SHlwZXJsaW5rQmFzaWMpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcAppbmRleCA2
ODJmYWJmNTJkNDEuLjBkNTg3ZjU5Mzg3MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQWNjZXNzaWJpbGl0eUF0c3BpRW51bXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZUZyYW1lLmg+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgpAQCAtMTEyOCw3ICsxMTI5LDI0IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCiAK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQog
ewotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIGlm
ICghbV9lbGVtZW50LT5pbnRlcmZhY2VzKCkuY29udGFpbnMoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjpJbnRlcmZhY2U6Okh5cGVybGluaykpCisgICAgICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgbV9lbGVtZW50LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKKyAgICBhdXRvIGF4VVJMID0gbV9lbGVtZW50LT51cmwoKTsKKyAgICBp
ZiAoYXhVUkwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiQVhVUkw6IChudWxsKSIpOworCisgICAgaWYgKGF4VVJMLmlzTG9jYWxGaWxlKCkp
IHsKKyAgICAgICAgLy8gRG8gbm90IGV4cG9zZSBhYnNvbHV0ZSBwYXRocy4KKyAgICAgICAgYXV0
byBwYXRoID0gYXhVUkwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgYXV0byBpbmRleCA9IHBh
dGguZmluZCgiTGF5b3V0VGVzdHMiKTsKKyAgICAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQor
ICAgICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKGluZGV4KTsKKyAgICAgICAgcmV0dXJu
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWFrZVN0cmluZygiQVhVUkw6ICIsIHBhdGgpKS5s
ZWFrUmVmKCk7CisgICAgfQorCisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUo
bWFrZVN0cmluZygiQVhVUkw6ICIsIGF4VVJMLnN0cmluZygpKSkubGVha1JlZigpOwogfQogCiBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFs
dWVSZWYgZnVuY3Rpb25DYWxsYmFjaykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444662</attachid>
            <date>2021-11-18 04:52:17 -0800</date>
            <delta_ts>2021-11-18 06:23:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-hyperlink.diff</filename>
            <type>text/plain</type>
            <size>28010</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNjUwZGMxMjJhNGEuLjA1MTI1N2U3ZjA4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDIxLTExLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBBZGQgaW1wbGVtZW50YXRpb24gb2Yg
aHlwZXJsaW5rIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGggQVRTUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjcwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBoeXBlcmxpbmsgaW1wbGVt
ZW50YXRpb24gYW5kIG1ha2UgbGlua3MgYmUgaGFuZGxlZCBhcyByZXBsYWNlZCBvYmplY3RzIHRv
bywgdG8gZW5zdXJlIGFsbCBoeXBlcmxpbmtzIGFyZQorICAgICAgICBoYW5kbGVkIHRoZSBzYW1l
IHdheS4gVGhhdCdzIGNvbnNpc3RlbnQgd2l0aCBjaHJvbWl1bS4KKworICAgICAgICAqIFNvdXJj
ZXNHVEsudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6aW50ZXJmYWNlc0Zvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpidWlsZEludGVyZmFjZXMgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dXJsIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6b2Zmc2V0SW5QYXJlbnQg
Y29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OmNoYXJhY3Rlck9mZnNldCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCk6CisK
IDIwMjEtMTAtMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdW2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB2YWx1ZSBpbnRlcmZh
Y2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IDQ3N2Uz
MTU2ZDc3MS4uMTg4NDVjYzAyMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
R1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNDIsNiArNDIs
NyBAQCBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKIGFjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RDb21wb25lbnRBdHNwaS5jcHAKK2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdEh5cGVybGlua0F0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcAogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0VmFsdWVBdHNwaS5jcHAKIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eVJvb3RBdHNwaS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAppbmRleCAwOGEy
NzJiMzkxNTkuLmFiZmY1YWI3YmEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCIKICNp
bmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgpAQCAtODYsNiArODcs
OSBAQCBPcHRpb25TZXQ8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZhY2U+IEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6aW50ZXJmYQogICAgIGlmIChjb3JlT2JqZWN0LnN1cHBvcnRz
UmFuZ2VWYWx1ZSgpKQogICAgICAgICBpbnRlcmZhY2VzLmFkZChJbnRlcmZhY2U6OlZhbHVlKTsK
IAorICAgIGlmIChjb3JlT2JqZWN0LmlzTGluaygpIHx8IChpc1JlbmRlcmVyUmVwbGFjZWRFbGVt
ZW50KHJlbmRlcmVyKSkpCisgICAgICAgIGludGVyZmFjZXMuYWRkKEludGVyZmFjZTo6SHlwZXJs
aW5rKTsKKwogICAgIHJldHVybiBpbnRlcmZhY2VzOwogfQogCkBAIC00NzQsNiArNDc4LDggQEAg
Y29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnBhdGgoKQogICAgICAgICAg
ICAgaW50ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3
ZWJraXRfdGV4dF9pbnRlcmZhY2UpLCAmc190ZXh0RnVuY3Rpb25zIH0pOwogICAgICAgICBpZiAo
bV9pbnRlcmZhY2VzLmNvbnRhaW5zKEludGVyZmFjZTo6VmFsdWUpKQogICAgICAgICAgICAgaW50
ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRf
dmFsdWVfaW50ZXJmYWNlKSwgJnNfdmFsdWVGdW5jdGlvbnMgfSk7CisgICAgICAgIGlmIChtX2lu
dGVyZmFjZXMuY29udGFpbnMoSW50ZXJmYWNlOjpIeXBlcmxpbmspKQorICAgICAgICAgICAgaW50
ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRf
aHlwZXJsaW5rX2ludGVyZmFjZSksICZzX2h5cGVybGlua0Z1bmN0aW9ucyB9KTsKICAgICAgICAg
bV9wYXRoID0gYXRzcGlSb290LT5hdHNwaSgpLnJlZ2lzdGVyT2JqZWN0KCp0aGlzLCBXVEZNb3Zl
KGludGVyZmFjZXMpKTsKICAgICB9CiAKQEAgLTEwOTEsNiArMTA5Nyw4IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpOjpidWlsZEludGVyZmFjZXMoR1ZhcmlhbnRCdWlsZGVyKiBidWls
ZGVyKSBjb25zdAogICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgInMiLCB3
ZWJraXRfdGV4dF9pbnRlcmZhY2UubmFtZSk7CiAgICAgaWYgKG1faW50ZXJmYWNlcy5jb250YWlu
cyhJbnRlcmZhY2U6OlZhbHVlKSkKICAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKGJ1aWxk
ZXIsICJzIiwgd2Via2l0X3ZhbHVlX2ludGVyZmFjZS5uYW1lKTsKKyAgICBpZiAobV9pbnRlcmZh
Y2VzLmNvbnRhaW5zKEludGVyZmFjZTo6SHlwZXJsaW5rKSkKKyAgICAgICAgZ192YXJpYW50X2J1
aWxkZXJfYWRkKGJ1aWxkZXIsICJzIiwgd2Via2l0X2h5cGVybGlua19pbnRlcmZhY2UubmFtZSk7
CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZXJpYWxpemUoR1ZhcmlhbnRC
dWlsZGVyKiBidWlsZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgKaW5kZXggM2Nh
MjIzNzM3MjY3Li44OTljNWVjMjU0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaApAQCAt
NDYsNyArNDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIEFjY2Vzc2libGUgPSAxIDw8IDAsCiAgICAg
ICAgIENvbXBvbmVudCA9IDEgPDwgMSwKICAgICAgICAgVGV4dCA9IDEgPDwgMiwKLSAgICAgICAg
VmFsdWUgPSAxIDw8IDMKKyAgICAgICAgVmFsdWUgPSAxIDw8IDMsCisgICAgICAgIEh5cGVybGlu
ayA9IDEgPDwgNAogICAgIH07CiAgICAgY29uc3QgT3B0aW9uU2V0PEludGVyZmFjZT4mIGludGVy
ZmFjZXMoKSBjb25zdCB7IHJldHVybiBtX2ludGVyZmFjZXM7IH0KIApAQCAtMTE3LDYgKzExOCw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbWluaW11bUluY3JlbWVudCgp
IGNvbnN0OwogICAgIHZvaWQgdmFsdWVDaGFuZ2VkKGRvdWJsZSk7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBVUkwgdXJsKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpKEFYQ29yZU9iamVjdCopOwogCkBAIC0xMzksNiArMTQyLDcgQEAgcHJp
dmF0ZToKICAgICBDU3RyaW5nIHRleHQoaW50LCBpbnQpIGNvbnN0OwogICAgIENTdHJpbmcgdGV4
dEF0T2Zmc2V0KGludCwgVGV4dEdyYW51bGFyaXR5LCBpbnQmLCBpbnQmKSBjb25zdDsKICAgICBp
bnQgY2hhcmFjdGVyQXRPZmZzZXQoaW50KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBjaGFyYWN0ZXJPZmZzZXQoVUNoYXIsIGludCkgY29uc3Q7CiAgICAgSW50UmVjdCB0ZXh0
RXh0ZW50cyhpbnQsIGludCwgdWludDMyX3QpIGNvbnN0OwogICAgIGludCBvZmZzZXRBdFBvaW50
KGNvbnN0IEludFBvaW50JiwgdWludDMyX3QpIGNvbnN0OwogICAgIEludFBvaW50IGJvdW5kc0Zv
clNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgY29uc3Q7CkBAIC0xNDgsMTIgKzE1
MiwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgc2Nyb2xsVG9NYWtlVmlzaWJsZShpbnQsIGludCwg
dWludDMyX3QpIGNvbnN0OwogICAgIGJvb2wgc2Nyb2xsVG9Qb2ludChpbnQsIGludCwgdWludDMy
X3QsIGludCwgaW50KSBjb25zdDsKIAorICAgIHVuc2lnbmVkIG9mZnNldEluUGFyZW50KCkgY29u
c3Q7CisKICAgICBzdGF0aWMgT3B0aW9uU2V0PEludGVyZmFjZT4gaW50ZXJmYWNlc0Zvck9iamVj
dChBWENvcmVPYmplY3QmKTsKIAogICAgIHN0YXRpYyBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX2Fj
Y2Vzc2libGVGdW5jdGlvbnM7CiAgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfY29t
cG9uZW50RnVuY3Rpb25zOwogICAgIHN0YXRpYyBHREJ1c0ludGVyZmFjZVZUYWJsZSBzX3RleHRG
dW5jdGlvbnM7CiAgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfdmFsdWVGdW5jdGlv
bnM7CisgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfaHlwZXJsaW5rRnVuY3Rpb25z
OwogCiAgICAgQVhDb3JlT2JqZWN0KiBtX2F4T2JqZWN0IHsgbnVsbHB0ciB9OwogICAgIEFYQ29y
ZU9iamVjdCogbV9jb3JlT2JqZWN0IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRz
cGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uNjM5YjQwMzM3MjVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3Bw
CkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGku
aCIKKworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBVU0UoQVRTUEkpCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaTo6c19oeXBlcmxpbmtGdW5jdGlvbnMgPSB7CisgICAgLy8gbWV0aG9kX2Nh
bGwKKyAgICBbXShHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwg
Y29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciogbWV0aG9kTmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRl
cnMsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2NhdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgYXV0
byBhdHNwaU9iamVjdCA9IFJlZiB7ICpzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGkqPih1c2VyRGF0YSkgfTsKKyAgICAgICAgYXRzcGlPYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpOworCisgICAgICAgIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRPYmplY3QiKSkg
eworICAgICAgICAgICAgaW50IGluZGV4OworICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJh
bWV0ZXJzLCAiKGkpIiwgJmluZGV4KTsKKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2Nh
dGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsICFp
bmRleCA/IGF0c3BpT2JqZWN0LT5yZWZlcmVuY2UoKSA6IGF0c3BpT2JqZWN0LT5yb290KCktPmF0
c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMCht
ZXRob2ROYW1lLCAiR2V0VVJJIikpIHsKKyAgICAgICAgICAgIGludCBpbmRleDsKKyAgICAgICAg
ICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihpKSIsICZpbmRleCk7CisgICAgICAgICAg
ICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFy
aWFudF9uZXcoIihzKSIsICFpbmRleCA/IGF0c3BpT2JqZWN0LT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpIDogIiIpKTsKKyAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5h
bWUsICJJc1ZhbGlkIikpCisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0
dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihiKSIsIGF0c3BpT2JqZWN0LT5t
X2F4T2JqZWN0ID8gVFJVRSA6IEZBTFNFKSk7CisgICAgfSwKKyAgICAvLyBnZXRfcHJvcGVydHkK
KyAgICBbXShHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBnY2hhciosIGNvbnN0IGdjaGFyKiwgY29u
c3QgZ2NoYXIqLCBjb25zdCBnY2hhciogcHJvcGVydHlOYW1lLCBHRXJyb3IqKiBlcnJvciwgZ3Bv
aW50ZXIgdXNlckRhdGEpIC0+IEdWYXJpYW50KiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisgICAgICAgIGF1dG8gYXRzcGlPYmplY3QgPSBSZWYgeyAqc3RhdGlj
X2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKj4odXNlckRhdGEpIH07CisgICAgICAgIGF0
c3BpT2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgICAgICBpZiAoIWdfc3RyY21w
MChwcm9wZXJ0eU5hbWUsICJOQW5jaG9ycyIpKQorICAgICAgICAgICAgcmV0dXJuIGdfdmFyaWFu
dF9uZXdfaW50MzIoMSk7CisgICAgICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIlN0
YXJ0SW5kZXgiKSkKKyAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKGF0c3Bp
T2JqZWN0LT5vZmZzZXRJblBhcmVudCgpKTsKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVy
dHlOYW1lLCAiRW5kSW5kZXgiKSkKKyAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2lu
dDMyKGF0c3BpT2JqZWN0LT5vZmZzZXRJblBhcmVudCgpICsgMSk7CisKKyAgICAgICAgZ19zZXRf
ZXJyb3IoZXJyb3IsIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfTk9UX1NVUFBPUlRFRCwgIlVua25v
d24gcHJvcGVydHkgJyVzJyIsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0sCisgICAgLy8gc2V0X3Byb3BlcnR5LAorICAgIG51bGxwdHIsCisgICAgLy8gcGFk
ZGluZworICAgIG51bGxwdHIKK307CisKK1VSTCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnVy
bCgpIGNvbnN0Cit7CisgICAgQVhDb3JlT2JqZWN0KiBheE9iamVjdCA9IGlzTWFpblRocmVhZCgp
ID8gbV9jb3JlT2JqZWN0IDogbV9heE9iamVjdDsKKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9i
amVjdC0+dXJsKCkgOiBVUkwoKTsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpvZmZzZXRJblBhcmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6
OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDx1bnNpZ25lZD4oW3RoaXNdKCkgLT4gdW5zaWdu
ZWQgeworICAgICAgICBpZiAobV9jb3JlT2JqZWN0KQorICAgICAgICAgICAgbV9jb3JlT2JqZWN0
LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAgICAgICBpZiAoIW1fY29yZU9iamVjdCkKKyAg
ICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGF1dG8qIHBhcmVudCA9IG1fY29yZU9iamVj
dC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIGlmICghcGFyZW50IHx8ICFwYXJl
bnQtPndyYXBwZXIoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGludCBpbmRl
eCA9IC0xOworICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IHBhcmVudC0+Y2hpbGRyZW4o
KTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7CisgICAgICAg
ICAgICBpZiAoY2hpbGQtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byogd3JhcHBlciA9IGNoaWxkLT53cmFwcGVy
KCk7CisgICAgICAgICAgICBpZiAoIXdyYXBwZXIgfHwgIXdyYXBwZXItPmludGVyZmFjZXMoKS5j
b250YWlucyhJbnRlcmZhY2U6Okh5cGVybGluaykpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGluZGV4Kys7CisgICAgICAgICAgICBpZiAod3JhcHBlciA9PSB0aGlz
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluZGV4
ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+
d3JhcHBlcigpLT5jaGFyYWN0ZXJPZmZzZXQob2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIGlu
ZGV4KS52YWx1ZV9vcigwKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGE5YWUwODA4ODAwYy4uMzdiZjQyZjVl
ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTIxLDEzICsy
MSwxOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5oIgogCiAjaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKKyNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUF0c3BpRW51bXMuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFj
ZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSb290QXRzcGkuaCIKICNpbmNsdWRlICJFZGl0
aW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKKyNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgogI2luY2x1ZGUgIlN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgorI2luY2x1ZGUg
PGdpby9naW8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00ODQsNiArNDg5LDI0IEBA
IGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNoYXJhY3RlckF0T2Zmc2V0KGludCBvZmZz
ZXQpIGNvbnN0CiAgICAgcmV0dXJuIGdfdXRmOF9nZXRfY2hhcihnX3V0Zjhfb2Zmc2V0X3RvX3Bv
aW50ZXIodXRmOFRleHQuZGF0YSgpLCBvZmZzZXQpKTsKIH0KIAorc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjaGFyYWN0ZXJPZmZzZXQoVUNoYXIgY2hh
cmFjdGVyLCBpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgYXV0byB1dGYxNlRleHQgPSB0ZXh0KCk7
CisgICAgdW5zaWduZWQgc3RhcnQgPSAwOworICAgIHNpemVfdCBvZmZzZXQ7CisgICAgd2hpbGUg
KChvZmZzZXQgPSB1dGYxNlRleHQuZmluZChjaGFyYWN0ZXIsIHN0YXJ0KSkgIT0gbm90Rm91bmQp
IHsKKyAgICAgICAgc3RhcnQgPSBvZmZzZXQgKyAxOworICAgICAgICBpZiAoLS1pbmRleCA9PSAt
MSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIG1hcHBpbmcgPSBv
ZmZzZXRNYXBwaW5nKHV0ZjE2VGV4dCk7CisgICAgcmV0dXJuIFVURjE2T2Zmc2V0VG9VVEY4KG1h
cHBpbmcsIG9mZnNldCk7Cit9CisKIEludFJlY3QgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpi
b3VuZHNGb3JSYW5nZSh1bnNpZ25lZCB1dGYxNk9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCB1aW50
MzJfdCBjb29yZGluYXRlVHlwZSkgY29uc3QKIHsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6
cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEludFJlY3Q+KFt0aGlzLCB1dGYxNk9mZnNldCwg
bGVuZ3RoLCBjb29yZGluYXRlVHlwZV0oKSAtPiBJbnRSZWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBiOTRkOWJlZTBlYjkuLmZhMGUwYmY5YmI1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjc3LDYgKzI3NywxMSBA
QCBib29sIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVB
dHRyKSwgImltZyIpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgVVNFKEFUU1BJKQor
ICAgICAgICAvLyBMaW5rcyBhcmUgYWxzbyByZXBsYWNlZCB3aXRoIG9iamVjdCByZXBsYWNlbWVu
dCBjaGFyYWN0ZXIgaW4gQVRTUEkuCisgICAgICAgIGlmIChlbGVtZW50LmlzTGluaygpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7
CkBAIC03NTAsNyArNzU1LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxl
bWVudCgpCiAKICAgICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogCi0gICAgaWYgKG1fYmVoYXZpb3Jz
LmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVycykgJiYgcmVuZGVyZXIuaXNSZXBsYWNlZCgpKSB7CisgICAgaWYgKG1fYmVoYXZpb3Jz
LmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVycykpIHsKICAgICAgICAgZW1pdENoYXJhY3RlcihvYmplY3RSZXBsYWNlbWVudENoYXJh
Y3RlciwgKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUsIDAsIDEpOwogICAgICAgICAvLyBE
b24ndCBwcm9jZXNzIHN1YnRyZWVzIGZvciBlbWJlZGRlZCBvYmplY3RzLiBJZiB0aGUgdGV4dCB0
aGVyZSBpcyByZXF1aXJlZCwKICAgICAgICAgLy8gaXQgbXVzdCBiZSBleHBsaWNpdGx5IGFza2Vk
IGJ5IHNwZWNpZnlpbmcgYSByYW5nZSBmYWxsaW5nIGluc2lkZSBpdHMgYm91bmRhcmllcy4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNjliOTc3
YzE5MTMuLmFlZjM0NjdlOGQ5MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTExLTA0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBBZGQg
aW1wbGVtZW50YXRpb24gb2YgaHlwZXJsaW5rIGludGVyZmFjZSB3aGVuIGJ1aWxkaW5nIHdpdGgg
QVRTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MjcwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB1bml0IHRlc3RzIHRvIGNoZWNrIGh5cGVybGluayBpbnRlcmZhY2UgYW5kIGltcGxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKSBpbiBXVFIuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHA6CisgICAg
ICAgICh0ZXN0VGV4dFJlcGxhY2VkT2JqZWN0cyk6CisgICAgICAgICh0ZXN0SHlwZXJsaW5rQmFz
aWMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHA6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisKIDIwMjEtMTAtMjYgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W2ExMXldIEFkZCBpbXBsZW1lbnRhdGlvbiBvZiB2YWx1ZSBpbnRlcmZhY2Ugd2hlbiBidWlsZGlu
ZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKaW5kZXggM2IyMzhkNmIz
ZTA4Li45ZmJkNTE0NTg5NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKQEAgLTE1
MzMsNiArMTUzMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RUZXh0UmVwbGFjZWRPYmplY3RzKEFjY2Vz
c2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAiPGh0bWw+IgogICAg
ICAgICAiICA8Ym9keT4iCiAgICAgICAgICIgICAgPHA+VGhpcyBpcyA8YnV0dG9uPmJ1dHRvbjE8
L2J1dHRvbj4gYW5kIDxidXR0b24+YnV0dG9uMjwvYnV0dG9uPiBpbiBwYXJhZ3JhcGg8L3A+Igor
ICAgICAgICAiICAgIDxwPlRoaXMgaXMgPGEgaHJlZj0nIyc+bGluazE8L2E+IGFuZCA8YSBocmVm
PScjJz5saW5rMjwvYT4gaW4gcGFyYWdyYXBoPC9wPiIKICAgICAgICAgIiAgPC9ib2R5PiIKICAg
ICAgICAgIjwvaHRtbD4iLAogICAgICAgICBudWxscHRyKTsKQEAgLTE1NDMsNyArMTU0NCw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RUZXh0UmVwbGFjZWRPYmplY3RzKEFjY2Vzc2liaWxpdHlUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgYXV0byBkb2N1bWVudFdlYiA9IHRlc3QtPmZpbmRE
b2N1bWVudFdlYih0ZXN0QXBwLmdldCgpKTsKICAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FD
Q0VTU0lCTEUoZG9jdW1lbnRXZWIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlf
YWNjZXNzaWJsZV9nZXRfY2hpbGRfY291bnQoZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpLCA9
PSwgMSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2Nv
dW50KGRvY3VtZW50V2ViLmdldCgpLCBudWxscHRyKSwgPT0sIDIpOwogCiAgICAgYXV0byBwID0g
YWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KGRvY3VtZW50V2Vi
LmdldCgpLCAwLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19URVhUKHAu
Z2V0KCkpKTsKQEAgLTE2MTEsNiArMTYxMiwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0VGV4dFJlcGxh
Y2VkT2JqZWN0cyhBY2Nlc3NpYmlsaXR5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBn
X2Fzc2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA9PSwg
MCk7CiAgICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgMTUpOwogICAgIGdfYXNz
ZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCAyOCk7CisKKyAgICAvLyBMaW5rcyBhcmUgYWxzbyBy
ZXBsYWNlZCBlbGVtZW50cy4KKyAgICBwID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0
X2NoaWxkX2F0X2luZGV4KGRvY3VtZW50V2ViLmdldCgpLCAxLCBudWxscHRyKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShBVFNQSV9JU19URVhUKHAuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
YXRzcGlfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50KEFUU1BJX1RFWFQocC5nZXQoKSksIG51bGxw
dHIpLCA9PSwgMjgpOworICAgIHRleHQucmVzZXQoYXRzcGlfdGV4dF9nZXRfdGV4dChBVFNQSV9U
RVhUKHAuZ2V0KCkpLCAwLCAtMSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0
LmdldCgpLCA9PSwgIlRoaXMgaXMgXDM1N1wyNzdcMjc0IGFuZCBcMzU3XDI3N1wyNzQgaW4gcGFy
YWdyYXBoIik7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxk
X2NvdW50KHAuZ2V0KCksIG51bGxwdHIpLCA9PSwgMik7CisKKyAgICBhdXRvIGxpbmsxID0gYWRv
cHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KHAuZ2V0KCksIDAsIG51
bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX1RFWFQobGluazEuZ2V0KCkpKTsK
KyAgICB0ZXh0LnJlc2V0KGF0c3BpX3RleHRfZ2V0X3RleHQoQVRTUElfVEVYVChsaW5rMS5nZXQo
KSksIDAsIC0xLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQuZ2V0KCksID09
LCAibGluazEiKTsKKworICAgIGF1dG8gbGluazIgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJs
ZV9nZXRfY2hpbGRfYXRfaW5kZXgocC5nZXQoKSwgMSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0
X3RydWUoQVRTUElfSVNfVEVYVChsaW5rMi5nZXQoKSkpOworICAgIHRleHQucmVzZXQoYXRzcGlf
dGV4dF9nZXRfdGV4dChBVFNQSV9URVhUKGxpbmsyLmdldCgpKSwgMCwgLTEsIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dC5nZXQoKSwgPT0sICJsaW5rMiIpOwogI2VuZGlmCiB9
CiAKQEAgLTE2NjUsNiArMTY4NCwxMzkgQEAgc3RhdGljIHZvaWQgdGVzdFZhbHVlQmFzaWMoQWNj
ZXNzaWJpbGl0eVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wZmxv
YXQoYXRzcGlfdmFsdWVfZ2V0X2N1cnJlbnRfdmFsdWUoQVRTUElfVkFMVUUoc2xpZGVyLmdldCgp
KSwgbnVsbHB0ciksID09LCAwKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdEh5cGVybGlua0Jhc2lj
KEFjY2Vzc2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPnNo
b3dJbldpbmRvdyg4MDAsIDYwMCk7CisgICAgdGVzdC0+bG9hZEh0bWwoCisgICAgICAgICI8aHRt
bD4iCisgICAgICAgICIgIDxib2R5PiIKKyAgICAgICAgIiAgICA8YSBocmVmPSdodHRwczovL3d3
dy53ZWJraXRndGsub3JnJz5XZWJLaXRHVEs8L2E+IgorICAgICAgICAiICAgIDxkaXYgcm9sZT0n
bGluayc+TGluazwvZGl2PiIKKyAgICAgICAgIiAgICA8cD5UaGlzIGlzIDxidXR0b24+YnV0dG9u
MTwvYnV0dG9uPiBhbmQgPGJ1dHRvbj5idXR0b24yPC9idXR0b24+IGluIGEgcGFyYWdyYXBoPC9w
PiIKKyAgICAgICAgIiAgICA8cD5UaGlzIGlzIDxhIGhyZWY9J2h0dHBzOi8vd3d3LndlYmtpdGd0
ay5vcmcnPmxpbmsxPC9hPiBhbmQgPGEgaHJlZj0naHR0cHM6Ly93d3cuZ25vbWUub3JnJz5saW5r
MjwvYT4gaW4gcGFyYWdyYXBoPC9wPiIKKyAgICAgICAgIiAgPC9ib2R5PiIKKyAgICAgICAgIjwv
aHRtbD4iLAorICAgICAgICBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKworICAgIGF1dG8gdGVzdEFwcCA9IHRlc3QtPmZpbmRUZXN0QXBwbGljYXRpb24oKTsK
KyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUodGVzdEFwcC5nZXQoKSkpOwor
CisgICAgYXV0byBkb2N1bWVudFdlYiA9IHRlc3QtPmZpbmREb2N1bWVudFdlYih0ZXN0QXBwLmdl
dCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoZG9jdW1lbnRXZWIu
Z2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRf
Y291bnQoZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpLCA9PSwgNCk7CisKKyAgICBhdXRvIHNl
Y3Rpb24gPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoZG9j
dW1lbnRXZWIuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lT
X0FDQ0VTU0lCTEUoc2VjdGlvbi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9yb2xlKHNlY3Rpb24uZ2V0KCksIG51bGxwdHIpLCA9PSwgQVRTUElfUk9M
RV9TRUNUSU9OKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hp
bGRfY291bnQoc2VjdGlvbi5nZXQoKSwgbnVsbHB0ciksID09LCAxKTsKKworICAgIGF1dG8gYSA9
IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChzZWN0aW9uLmdl
dCgpLCAwLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxF
KGEuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfcm9s
ZShhLmdldCgpLCBudWxscHRyKSwgPT0sIEFUU1BJX1JPTEVfTElOSyk7CisgICAgYXV0byBsaW5r
ID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2h5cGVybGluayhhLmdldCgpKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19IWVBFUkxJTksobGluay5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X25fYW5jaG9ycyhBVFNQSV9IWVBFUkxJ
TksobGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMSk7CisgICAgZ19hc3NlcnRfdHJ1ZShhdHNw
aV9oeXBlcmxpbmtfaXNfdmFsaWQoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRy
KSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfc3RhcnRfaW5kZXgo
QVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDApOworI2lmIFVTRShB
VFNQSSkKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9lbmRfaW5kZXgo
QVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDEpOworI2Vsc2UKKyAg
ICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9lbmRfaW5kZXgoQVRTUElfSFlQ
RVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDApOworI2VuZGlmCisgICAgR1VuaXF1
ZVB0cjxjaGFyPiB1cmkoYXRzcGlfaHlwZXJsaW5rX2dldF91cmkoQVRTUElfSFlQRVJMSU5LKGxp
bmsuZ2V0KCkpLCAwLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHVyaS5nZXQoKSwg
PT0sICJodHRwczovL3d3dy53ZWJraXRndGsub3JnLyIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRz
cGlfaHlwZXJsaW5rX2dldF9vYmplY3QoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBu
dWxscHRyKSA9PSBhLmdldCgpKTsKKworICAgIGF1dG8gZGl2ID0gYWRvcHRHUmVmKGF0c3BpX2Fj
Y2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KGRvY3VtZW50V2ViLmdldCgpLCAxLCBudWxscHRy
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGRpdi5nZXQoKSkpOwor
ICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9yb2xlKGRpdi5nZXQoKSwg
bnVsbHB0ciksID09LCBBVFNQSV9ST0xFX0xJTkspOworICAgIGxpbmsgPSBhZG9wdEdSZWYoYXRz
cGlfYWNjZXNzaWJsZV9nZXRfaHlwZXJsaW5rKGRpdi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3Ry
dWUoQVRTUElfSVNfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
YXRzcGlfaHlwZXJsaW5rX2dldF9uX2FuY2hvcnMoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkp
LCBudWxscHRyKSwgPT0sIDEpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2lz
X3ZhbGlkKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0cikpOworI2lmIFVTRShB
VFNQSSkKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9zdGFydF9pbmRl
eChBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMCk7CisgICAgZ19h
c3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfZW5kX2luZGV4KEFUU1BJX0hZUEVSTElO
SyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxKTsKKyNlbHNlCisgICAgZ19hc3NlcnRfY21w
aW50KGF0c3BpX2h5cGVybGlua19nZXRfc3RhcnRfaW5kZXgoQVRTUElfSFlQRVJMSU5LKGxpbmsu
Z2V0KCkpLCBudWxscHRyKSwgPT0sIDEwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlw
ZXJsaW5rX2dldF9lbmRfaW5kZXgoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRy
KSwgPT0sIDE0KTsKKyNlbmRpZgorICAgIHVyaS5yZXNldChhdHNwaV9oeXBlcmxpbmtfZ2V0X3Vy
aShBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIodXJpLmdldCgpLCA9PSwgIiIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlw
ZXJsaW5rX2dldF9vYmplY3QoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRy
KSA9PSBkaXYuZ2V0KCkpOworCisgICAgYXV0byBwID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2li
bGVfZ2V0X2NoaWxkX2F0X2luZGV4KGRvY3VtZW50V2ViLmdldCgpLCAyLCBudWxscHRyKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKHAuZ2V0KCkpKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfY291bnQocC5nZXQoKSwgbnVs
bHB0ciksID09LCAyKTsKKyAgICBhdXRvIGJ1dHRvbjEgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNz
aWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgocC5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGdfYXNz
ZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShidXR0b24xLmdldCgpKSk7CisgICAgbGluayA9
IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9oeXBlcmxpbmsoYnV0dG9uMS5nZXQoKSkp
OworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9uX2FuY2hvcnMoQVRTUElfSFlQ
RVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDEpOworICAgIGdfYXNzZXJ0X3RydWUo
YXRzcGlfaHlwZXJsaW5rX2lzX3ZhbGlkKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVs
bHB0cikpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X3N0YXJ0X2lu
ZGV4KEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCA4KTsKKyNpZiBV
U0UoQVRTUEkpCisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfZW5kX2lu
ZGV4KEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCA5KTsKKyNlbHNl
CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfZW5kX2luZGV4KEFUU1BJ
X0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0ciksID09LCAxNik7CisjZW5kaWYKKyAgICB1
cmkucmVzZXQoYXRzcGlfaHlwZXJsaW5rX2dldF91cmkoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0
KCkpLCAwLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHVyaS5nZXQoKSwgPT0sICIi
KTsKKyAgICBnX2Fzc2VydF90cnVlKGF0c3BpX2h5cGVybGlua19nZXRfb2JqZWN0KEFUU1BJX0hZ
UEVSTElOSyhsaW5rLmdldCgpKSwgMCwgbnVsbHB0cikgPT0gYnV0dG9uMS5nZXQoKSk7CisgICAg
YXV0byBidXR0b24yID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2lu
ZGV4KHAuZ2V0KCksIDEsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FD
Q0VTU0lCTEUoYnV0dG9uMi5nZXQoKSkpOworICAgIGxpbmsgPSBhZG9wdEdSZWYoYXRzcGlfYWNj
ZXNzaWJsZV9nZXRfaHlwZXJsaW5rKGJ1dHRvbjIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVl
KEFUU1BJX0lTX0hZUEVSTElOSyhsaW5rLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0
c3BpX2h5cGVybGlua19nZXRfbl9hbmNob3JzKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwg
bnVsbHB0ciksID09LCAxKTsKKyAgICBnX2Fzc2VydF90cnVlKGF0c3BpX2h5cGVybGlua19pc192
YWxpZChBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIpKTsKKyNpZiBVU0UoQVRT
UEkpCisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfc3RhcnRfaW5kZXgo
QVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDE0KTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9lbmRfaW5kZXgoQVRTUElfSFlQRVJMSU5L
KGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDE1KTsKKyNlbHNlCisgICAgZ19hc3NlcnRfY21w
aW50KGF0c3BpX2h5cGVybGlua19nZXRfc3RhcnRfaW5kZXgoQVRTUElfSFlQRVJMSU5LKGxpbmsu
Z2V0KCkpLCBudWxscHRyKSwgPT0sIDIxKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlw
ZXJsaW5rX2dldF9lbmRfaW5kZXgoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRy
KSwgPT0sIDI5KTsKKyNlbmRpZgorICAgIHVyaS5yZXNldChhdHNwaV9oeXBlcmxpbmtfZ2V0X3Vy
aShBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIodXJpLmdldCgpLCA9PSwgIiIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlw
ZXJsaW5rX2dldF9vYmplY3QoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRy
KSA9PSBidXR0b24yLmdldCgpKTsKKworICAgIHAgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJs
ZV9nZXRfY2hpbGRfYXRfaW5kZXgoZG9jdW1lbnRXZWIuZ2V0KCksIDMsIG51bGxwdHIpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUocC5nZXQoKSkpOworICAgIGdfYXNz
ZXJ0X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9jb3VudChwLmdldCgpLCBudWxs
cHRyKSwgPT0sIDIpOworICAgIGF1dG8gbGluazEgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJs
ZV9nZXRfY2hpbGRfYXRfaW5kZXgocC5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0
X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShsaW5rMS5nZXQoKSkpOworICAgIGxpbmsgPSBhZG9w
dEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfaHlwZXJsaW5rKGxpbmsxLmdldCgpKSk7CisgICAg
Z19hc3NlcnRfdHJ1ZShBVFNQSV9JU19IWVBFUkxJTksobGluay5nZXQoKSkpOworICAgIGdfYXNz
ZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X25fYW5jaG9ycyhBVFNQSV9IWVBFUkxJTkso
bGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMSk7CisgICAgZ19hc3NlcnRfdHJ1ZShhdHNwaV9o
eXBlcmxpbmtfaXNfdmFsaWQoQVRTUElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSk7
CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2h5cGVybGlua19nZXRfc3RhcnRfaW5kZXgoQVRT
UElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDgpOworI2lmIFVTRShBVFNQ
SSkKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9lbmRfaW5kZXgoQVRT
UElfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDkpOworI2Vsc2UKKyAgICBn
X2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9lbmRfaW5kZXgoQVRTUElfSFlQRVJM
SU5LKGxpbmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDEzKTsKKyNlbmRpZgorICAgIHVyaS5yZXNl
dChhdHNwaV9oeXBlcmxpbmtfZ2V0X3VyaShBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIDAs
IG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodXJpLmdldCgpLCA9PSwgImh0dHBzOi8v
d3d3LndlYmtpdGd0ay5vcmcvIik7CisgICAgZ19hc3NlcnRfdHJ1ZShhdHNwaV9oeXBlcmxpbmtf
Z2V0X29iamVjdChBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIDAsIG51bGxwdHIpID09IGxp
bmsxLmdldCgpKTsKKyAgICBhdXRvIGxpbmsyID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVf
Z2V0X2NoaWxkX2F0X2luZGV4KHAuZ2V0KCksIDEsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90
cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUobGluazIuZ2V0KCkpKTsKKyAgICBsaW5rID0gYWRvcHRH
UmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2h5cGVybGluayhsaW5rMi5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X3RydWUoQVRTUElfSVNfSFlQRVJMSU5LKGxpbmsuZ2V0KCkpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9uX2FuY2hvcnMoQVRTUElfSFlQRVJMSU5LKGxp
bmsuZ2V0KCkpLCBudWxscHRyKSwgPT0sIDEpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlw
ZXJsaW5rX2lzX3ZhbGlkKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgbnVsbHB0cikpOwor
I2lmIFVTRShBVFNQSSkKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9z
dGFydF9pbmRleChBVFNQSV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMTQp
OworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9oeXBlcmxpbmtfZ2V0X2VuZF9pbmRleChBVFNQ
SV9IWVBFUkxJTksobGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMTUpOworI2Vsc2UKKyAgICBn
X2Fzc2VydF9jbXBpbnQoYXRzcGlfaHlwZXJsaW5rX2dldF9zdGFydF9pbmRleChBVFNQSV9IWVBF
UkxJTksobGluay5nZXQoKSksIG51bGxwdHIpLCA9PSwgMTgpOworICAgIGdfYXNzZXJ0X2NtcGlu
dChhdHNwaV9oeXBlcmxpbmtfZ2V0X2VuZF9pbmRleChBVFNQSV9IWVBFUkxJTksobGluay5nZXQo
KSksIG51bGxwdHIpLCA9PSwgMjMpOworI2VuZGlmCisgICAgdXJpLnJlc2V0KGF0c3BpX2h5cGVy
bGlua19nZXRfdXJpKEFUU1BJX0hZUEVSTElOSyhsaW5rLmdldCgpKSwgMCwgbnVsbHB0cikpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih1cmkuZ2V0KCksID09LCAiaHR0cHM6Ly93d3cuZ25vbWUub3Jn
LyIpOworICAgIGdfYXNzZXJ0X3RydWUoYXRzcGlfaHlwZXJsaW5rX2dldF9vYmplY3QoQVRTUElf
SFlQRVJMSU5LKGxpbmsuZ2V0KCkpLCAwLCBudWxscHRyKSA9PSBsaW5rMi5nZXQoKSk7Cit9CisK
IHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRB
Y2Nlc3NpYmlsaXR5IiwgImFjY2Vzc2libGUvYmFzaWMtaGllcmFyY2h5IiwgdGVzdEFjY2Vzc2li
bGVCYXNpY0hpZXJhcmNoeSk7CkBAIC0xNjg2LDYgKzE4MzgsNyBAQCB2b2lkIGJlZm9yZUFsbCgp
CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNzaWJpbGl0eSIsICJ0ZXh0
L3N0YXRlLWNoYW5nZWQiLCB0ZXN0VGV4dFN0YXRlQ2hhbmdlZCk7CiAgICAgQWNjZXNzaWJpbGl0
eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNzaWJpbGl0eSIsICJ0ZXh0L3JlcGxhY2VkLW9iamVjdHMi
LCB0ZXN0VGV4dFJlcGxhY2VkT2JqZWN0cyk7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgi
V2ViS2l0QWNjZXNzaWJpbGl0eSIsICJ2YWx1ZS9iYXNpYyIsIHRlc3RWYWx1ZUJhc2ljKTsKKyAg
ICBBY2Nlc3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImh5cGVybGlu
ay9iYXNpYyIsIHRlc3RIeXBlcmxpbmtCYXNpYyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCmluZGV4IDY4
MmZhYmY1MmQ0MS4uMGQ1ODdmNTkzODcxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9BY2Nlc3NpYmlsaXR5QXRzcGlFbnVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlRnJhbWUuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CkBAIC0xMTI4LDcgKzExMjksMjQgQEAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKIAog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCiB7
Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAgaWYg
KCFtX2VsZW1lbnQtPmludGVyZmFjZXMoKS5jb250YWlucyhXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OkludGVyZmFjZTo6SHlwZXJsaW5rKSkKKyAgICAgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBtX2VsZW1lbnQtPnVwZGF0ZUJh
Y2tpbmdTdG9yZSgpOworICAgIGF1dG8gYXhVUkwgPSBtX2VsZW1lbnQtPnVybCgpOworICAgIGlm
IChheFVSTC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJBWFVSTDogKG51bGwpIik7CisKKyAgICBpZiAoYXhVUkwuaXNMb2NhbEZpbGUoKSkg
eworICAgICAgICAvLyBEbyBub3QgZXhwb3NlIGFic29sdXRlIHBhdGhzLgorICAgICAgICBhdXRv
IHBhdGggPSBheFVSTC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBhdXRvIGluZGV4ID0gcGF0
aC5maW5kKCJMYXlvdXRUZXN0cyIpOworICAgICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCisg
ICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcoaW5kZXgpOworICAgICAgICByZXR1cm4g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtYWtlU3RyaW5nKCJBWFVSTDogIiwgcGF0aCkpLmxl
YWtSZWYoKTsKKyAgICB9CisKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSht
YWtlU3RyaW5nKCJBWFVSTDogIiwgYXhVUkwuc3RyaW5nKCkpKS5sZWFrUmVmKCk7CiB9CiAKIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1
ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKQo=
</data>
<flag name="review"
          id="469750"
          type_id="1"
          status="+"
          setter="aperez"
    />
    <flag name="commit-queue"
          id="469758"
          type_id="3"
          status="-"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>