<?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>230352</bug_id>
          
          <creation_ts>2021-09-16 08:50:22 -0700</creation_ts>
          <short_desc>Move selection gap adjustment code form LegacyRootInlineBox to RenderBlockFlow</short_desc>
          <delta_ts>2021-09-16 22:18:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dpino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794053</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-09-16 08:50:22 -0700</bug_when>
    <thetext>Move code out of legacy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794060</commentid>
    <comment_count>1</comment_count>
      <attachid>438355</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-09-16 09:27:42 -0700</bug_when>
    <thetext>Created attachment 438355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794115</commentid>
    <comment_count>2</comment_count>
      <attachid>438372</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-09-16 11:09:23 -0700</bug_when>
    <thetext>Created attachment 438372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794124</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-16 11:15:19 -0700</bug_when>
    <thetext>Zalan Bujtas found in /Volumes/Data/worker/Commit-Queue/build/Source/WebCore/ChangeLog does not appear to be a valid reviewer according to contributors.json.
/Volumes/Data/worker/Commit-Queue/build/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794126</commentid>
    <comment_count>4</comment_count>
      <attachid>438374</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-09-16 11:21:41 -0700</bug_when>
    <thetext>Created attachment 438374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794155</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-16 12:19:46 -0700</bug_when>
    <thetext>Committed r282597 (241758@main): &lt;https://commits.webkit.org/241758@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438374.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794156</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-16 12:20:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/83208277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794340</commentid>
    <comment_count>7</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2021-09-16 22:18:23 -0700</bug_when>
    <thetext>The patch broke compilation in Ubuntu LTS/Debian bots:

https://build.webkit.org/#/builders/68/builds/6643/steps/8/logs/stdio

```
In file included from WebCore/DerivedSources/unified-sources/UnifiedSource-207b877e-7.cpp:4:
../../Source/WebCore/layout/integration/LayoutIntegrationRunIterator.cpp: In member function ‘WebCore::RenderObject::HighlightState WebCore::LayoutIntegration::PathRun::selectionState() const’:
../../Source/WebCore/layout/integration/LayoutIntegrationRunIterator.cpp:103:29: error: invalid use of incomplete type ‘class WebCore::RenderView’
  103 |         return renderer.view().selection().highlightStateForTextBox(renderer, text.selectableRange());
      |                ~~~~~~~~~~~~~^~
```

Fixed in https://trac.webkit.org/changeset/282633/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438355</attachid>
            <date>2021-09-16 09:27:42 -0700</date>
            <delta_ts>2021-09-16 11:09:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230352-20210916192740.patch</filename>
            <type>text/plain</type>
            <size>14079</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRjNGU3ZmI1YjEyZGVl
YmViZmNiOTY4NDhjYzdhOWM4ZjA3ZDZkMi4uNzVkZGUzY2I0NWIwNDhmMjkxMjExNjgyYWM3MDNk
OWU2MDMwMzdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA5LTE2ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNlbGVjdGlvbiBn
YXAgYWRqdXN0bWVudCBjb2RlIGZvcm0gTGVnYWN5Um9vdElubGluZUJveCB0byBSZW5kZXJCbG9j
a0Zsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDM1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgdGhlIGNvZGUgb3V0IG9mIGxlZ2FjeSBsaW5lYm94ZXMgYW5kIG1ha2UgaXQgdXNlIGlubGlu
ZSBpdGVyYXRvcnMuCisgICAgICAgIEFsc28gYWRkIHNlbGVjdGlvblN0YXRlKCkgdG8gdGhlIGl0
ZXJhdG9ycy4KKworICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
TGluZUl0ZXJhdG9yOjpmaXJzdFJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpsYXN0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6Zmlyc3RSdW4gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhMaW5lOjpsYXN0UnVuIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6c2VsZWN0aW9u
U3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVJdGVyYXRvci5oOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpQYXRoUnVuOjpzZWxlY3Rpb25TdGF0ZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lSb290SW5saW5lQm94OjpzZWxlY3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmJsb2NrQmVmb3JlV2l0aGluU2VsZWN0aW9uUm9vdCk6
IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdFNlbGVjdGlvblRvcEZvclByZWNl
ZGluZ0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6
CisKIDIwMjEtMDktMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBzdGQ6Om9wdGlvbmFsIGZvciB0cnVuY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUl0ZXJhdG9yLmNwcAppbmRleCBjMWNhZmY4ZjdmOGM0YmJjYTUzYjVkNTE2OGI3OTUxOGY1
Y2NkMjUxLi5hZmJlN2UyMTQ3YzU4NDRlNWNiYWMyNTMxZGM1MjFhZGIyODcxNzRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5jcHAKQEAgLTc4LDE2ICs3OCwxMiBAQCBib29s
IExpbmVJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3ImIG90aGVyKSBjb25z
dAogCiBSdW5JdGVyYXRvciBMaW5lSXRlcmF0b3I6OmZpcnN0UnVuKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2xpbmUubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkg
LT4gUnVuSXRlcmF0b3IgewotICAgICAgICByZXR1cm4geyBwYXRoLmZpcnN0UnVuKCkgfTsKLSAg
ICB9KTsKKyAgICByZXR1cm4gbV9saW5lLmZpcnN0UnVuKCk7CiB9CiAKIFJ1bkl0ZXJhdG9yIExp
bmVJdGVyYXRvcjo6bGFzdFJ1bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
bV9saW5lLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKLSAg
ICAgICAgcmV0dXJuIHsgcGF0aC5sYXN0UnVuKCkgfTsKLSAgICB9KTsKKyAgICByZXR1cm4gbV9s
aW5lLmxhc3RSdW4oKTsKIH0KIAogUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsb2dpY2FsU3Rh
cnRSdW4oKSBjb25zdApAQCAtMTg3LDExICsxODMsNTAgQEAgUnVuSXRlcmF0b3IgTGluZUl0ZXJh
dG9yOjpjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgbGVmdFBvc2l0aW9uLCBi
b28KICAgICByZXR1cm4gY2xvc2VzdFJ1bjsKIH0KIAorUnVuSXRlcmF0b3IgUGF0aExpbmU6OmZp
cnN0UnVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50
LCBbXShhdXRvJiBwYXRoKSAtPiBSdW5JdGVyYXRvciB7CisgICAgICAgIHJldHVybiB7IHBhdGgu
Zmlyc3RSdW4oKSB9OworICAgIH0pOworfQorCitSdW5JdGVyYXRvciBQYXRoTGluZTo6bGFzdFJ1
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
YXV0byYgcGF0aCkgLT4gUnVuSXRlcmF0b3IgeworICAgICAgICByZXR1cm4geyBwYXRoLmxhc3RS
dW4oKSB9OworICAgIH0pOworfQorCiBpbnQgUGF0aExpbmU6OmJsb2NrRGlyZWN0aW9uUG9pbnRJ
bkxpbmUoKSBjb25zdAogewogICAgIHJldHVybiAhY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gc3RkOjptYXgodG9wKCksIHNlbGVjdGlvblRv
cCgpKSA6IHN0ZDo6bWluKGJvdHRvbSgpLCBzZWxlY3Rpb25Cb3R0b20oKSk7CiB9CiAKK1JlbmRl
ck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgUGF0aExpbmU6OnNlbGVjdGlvblN0YXRlKCkgY29uc3QK
K3sKKyAgICBhdXRvJiBibG9jayA9IGNvbnRhaW5pbmdCbG9jaygpOworICAgIGlmIChibG9jay5z
ZWxlY3Rpb25TdGF0ZSgpID09IFJlbmRlck9iamVjdDo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIFJl
bmRlck9iamVjdDo6Tm9uZTsKKworICAgIGF1dG8gc3RhdGUgPSBSZW5kZXJPYmplY3Q6Ok5vbmU7
CisgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0UnVuKCk7IGJveDsgYm94LnRyYXZlcnNlTmV4dE9u
TGluZSgpKSB7CisgICAgICAgIGF1dG8gYm94U3RhdGUgPSBib3gtPnNlbGVjdGlvblN0YXRlKCk7
CisgICAgICAgIGlmICgoYm94U3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6
U3RhcnQgJiYgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6RW5kKQorICAg
ICAgICAgICAgfHwgKGJveFN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OkVu
ZCAmJiBzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpTdGFydCkpCisgICAg
ICAgICAgICBzdGF0ZSA9IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OkJvdGg7CisgICAg
ICAgIGVsc2UgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmUg
fHwgKChib3hTdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpTdGFydCB8fCBi
b3hTdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpFbmQpCisgICAgICAgICAg
ICAmJiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSB8fCBzdGF0
ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpJbnNpZGUpKSkKKyAgICAgICAgICAg
IHN0YXRlID0gYm94U3RhdGU7CisgICAgICAgIGVsc2UgaWYgKGJveFN0YXRlID09IFJlbmRlck9i
amVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmUgJiYgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdo
bGlnaHRTdGF0ZTo6U3RhcnQpIHsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBwYXN0IHRoZSBlbmQg
b2YgdGhlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpIaWdo
bGlnaHRTdGF0ZTo6Qm90aDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhdGUgPT0gUmVuZGVy
T2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Qm90aCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXR1cm4gc3RhdGU7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRl
cmF0b3IuaAppbmRleCA4YmMxYTJiNjM3NThkZmViZjY2NmZkYjI5YmU2YTYxZGQ0YTkzYjZiLi4x
MGYwODc4MTQ3MGJmNmU4NDNhNWNiZDAwOTFhMzNlODUyNjI0MzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lSXRlcmF0b3IuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0
VW5pdCBsaW5lQm94Qm90dG9tKCkgY29uc3Q7CiAKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJl
Y3QoKSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIHNlbGVjdGlvblN0
YXRlKCkgY29uc3Q7CiAKICAgICBmbG9hdCB5KCkgY29uc3Q7CiAgICAgZmxvYXQgY29udGVudExv
Z2ljYWxMZWZ0KCkgY29uc3Q7CkBAIC03Niw3ICs3NywxMCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
UmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25zdDsKICAgICBjb25zdCBMZWdh
Y3lSb290SW5saW5lQm94KiBsZWdhY3lSb290SW5saW5lQm94KCkgY29uc3Q7CiAKLXByb3RlY3Rl
ZDoKK3ByaXZhdGU6CisgICAgUnVuSXRlcmF0b3IgZmlyc3RSdW4oKSBjb25zdDsKKyAgICBSdW5J
dGVyYXRvciBsYXN0UnVuKCkgY29uc3Q7CisKICAgICBmcmllbmQgY2xhc3MgTGluZUl0ZXJhdG9y
OwogCiAgICAgUGF0aFZhcmlhbnQgbV9wYXRoVmFyaWFudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yLmNwcAppbmRleCAyNTc3ZWViZWY2NTM5YjlkOTU2NTliMjc3Y2IwNGYxNDViZmZi
ZmMxLi41MzIyNWZlODIwMzM5OGI0YjBiMTdiODNlNGJiNWZiNDRhZDc5YmM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCkBAIC05NSw2ICs5NSwxNiBAQCBjb25zdCBSZW5k
ZXJTdHlsZSYgUGF0aFJ1bjo6c3R5bGUoKSBjb25zdAogICAgIHJldHVybiBsaW5lKCkuaXNGaXJz
dCgpID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIoKS5zdHlsZSgpOwog
fQogCitSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIFBhdGhSdW46OnNlbGVjdGlvblN0YXRl
KCkgY29uc3QKK3sKKyAgICBpZiAoaXNUZXh0KCkpIHsKKyAgICAgICAgYXV0byYgdGV4dCA9IGRv
d25jYXN0PFBhdGhUZXh0UnVuPigqdGhpcyk7CisgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gdGV4
dC5yZW5kZXJlcigpOworICAgICAgICByZXR1cm4gcmVuZGVyZXIudmlldygpLnNlbGVjdGlvbigp
LmhpZ2hsaWdodFN0YXRlRm9yVGV4dEJveChyZW5kZXJlciwgdGV4dC5zZWxlY3RhYmxlUmFuZ2Uo
KSk7CisgICAgfQorICAgIHJldHVybiByZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7Cit9CisK
IFRleHRSdW5JdGVyYXRvcjo6VGV4dFJ1bkl0ZXJhdG9yKFBhdGhSdW46OlBhdGhWYXJpYW50JiYg
cGF0aFZhcmlhbnQpCiAgICAgOiBSdW5JdGVyYXRvcihXVEZNb3ZlKHBhdGhWYXJpYW50KSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCmluZGV4IGEzMjQ2MDFhNjUyN2Q3YWExZDIy
ZWQ5NGVlZDBiNzBmNjQ0ZTgyNjcuLjlkMTk2ZGNiMzQ4NGE1OTE4YmEwNWU5MjgyZWU5NGU2M2Q4
ZTYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaApAQCAtNzksNiArNzksOCBA
QCBwdWJsaWM6CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBi
aWRpTGV2ZWwoKSAlIDIgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7
IH0KICAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXJl
Y3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFI7IH0KIAorICAgIFJlbmRlck9iamVjdDo6SGln
aGxpZ2h0U3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBjb25zdDsKKwogICAgIGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIoKSBjb25zdDsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJ
bmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVC
b3guY3BwCmluZGV4IDFkNWZlOTUwMjIwMTdlMGVmOWM0ODdmY2UzMmY0NTRiMWE0Njg5YzQuLjY2
YTEyODJmYWMzZjBkOGQwZTYyOGZiYWY5NDdkMWFjZTM2MDZjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKQEAgLTU4Nyw2NSArNTg3
LDkgQEAgTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94OjpzZWxlY3Rpb25Ub3AoRm9ySGl0
VGVzdGluZyBmb3JIaXRUZXN0aW5nKSBjb25zdAogICAgIHJldHVybiBwcmV2Qm90dG9tOwogfQog
Ci1zdGF0aWMgUmVuZGVyQmxvY2sqIGJsb2NrQmVmb3JlV2l0aGluU2VsZWN0aW9uUm9vdChjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdywgTGF5b3V0U2l6ZSYgb2Zmc2V0KQotewotICAg
IGlmIChibG9ja0Zsb3cuaXNTZWxlY3Rpb25Sb290KCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgY29uc3QgUmVuZGVyRWxlbWVudCogb2JqZWN0ID0gJmJsb2NrRmxvdzsKLSAgICBS
ZW5kZXJPYmplY3QqIHNpYmxpbmc7Ci0gICAgZG8gewotICAgICAgICBzaWJsaW5nID0gb2JqZWN0
LT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgd2hpbGUgKHNpYmxpbmcgJiYgKCFpczxSZW5k
ZXJCbG9jaz4oKnNpYmxpbmcpIHx8IGRvd25jYXN0PFJlbmRlckJsb2NrPigqc2libGluZykuaXNT
ZWxlY3Rpb25Sb290KCkpKQotICAgICAgICAgICAgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3Vz
U2libGluZygpOwotCi0gICAgICAgIG9mZnNldCAtPSBMYXlvdXRTaXplKGRvd25jYXN0PFJlbmRl
ckJsb2NrPigqb2JqZWN0KS5sb2dpY2FsTGVmdCgpLCBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9i
amVjdCkubG9naWNhbFRvcCgpKTsKLSAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnQoKTsK
LSAgICB9IHdoaWxlICghc2libGluZyAmJiBpczxSZW5kZXJCbG9jaz4ob2JqZWN0KSAmJiAhZG93
bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmlzU2VsZWN0aW9uUm9vdCgpKTsKLQotICAgIGlm
ICghc2libGluZykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZW5kZXJCbG9jayog
YmVmb3JlQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oc2libGluZyk7Ci0KLSAgICBvZmZz
ZXQgKz0gTGF5b3V0U2l6ZShiZWZvcmVCbG9jay0+bG9naWNhbExlZnQoKSwgYmVmb3JlQmxvY2st
PmxvZ2ljYWxUb3AoKSk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gYmVmb3JlQmxvY2st
Pmxhc3RDaGlsZCgpOwotICAgIHdoaWxlIChpczxSZW5kZXJCbG9jaz4oY2hpbGQpKSB7Ci0gICAg
ICAgIGJlZm9yZUJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KGNoaWxkKTsKLSAgICAgICAg
b2Zmc2V0ICs9IExheW91dFNpemUoYmVmb3JlQmxvY2stPmxvZ2ljYWxMZWZ0KCksIGJlZm9yZUJs
b2NrLT5sb2dpY2FsVG9wKCkpOwotICAgICAgICBjaGlsZCA9IGJlZm9yZUJsb2NrLT5sYXN0Q2hp
bGQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGJlZm9yZUJsb2NrOwotfQotCiBMYXlvdXRVbml0IExl
Z2FjeVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2so
KSBjb25zdAogewotICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290
KCk7Ci0gICAgTGF5b3V0VW5pdCB0b3AgPSBzZWxlY3Rpb25Ub3AoKTsKLQotICAgIGF1dG8gYmxv
Y2tTZWxlY3Rpb25TdGF0ZSA9IHJvb3RCb3guYmxvY2tGbG93KCkuc2VsZWN0aW9uU3RhdGUoKTsK
LSAgICBpZiAoYmxvY2tTZWxlY3Rpb25TdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0
YXRlOjpJbnNpZGUgJiYgYmxvY2tTZWxlY3Rpb25TdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hs
aWdodFN0YXRlOjpFbmQpCi0gICAgICAgIHJldHVybiB0b3A7Ci0KLSAgICBMYXlvdXRTaXplIG9m
ZnNldFRvQmxvY2tCZWZvcmU7Ci0gICAgYXV0byogYmxvY2tCZWZvcmUgPSBibG9ja0JlZm9yZVdp
dGhpblNlbGVjdGlvblJvb3Qocm9vdEJveC5ibG9ja0Zsb3coKSwgb2Zmc2V0VG9CbG9ja0JlZm9y
ZSk7Ci0gICAgaWYgKCFpczxSZW5kZXJCbG9ja0Zsb3c+KGJsb2NrQmVmb3JlKSkKLSAgICAgICAg
cmV0dXJuIHRvcDsKLQotICAgIC8vIERvIG5vdCBhZGp1c3QgYmxvY2tzIHNoYXJpbmcgdGhlIHNh
bWUgbGluZS4KLSAgICBpZiAoIW9mZnNldFRvQmxvY2tCZWZvcmUuaGVpZ2h0KCkpCi0gICAgICAg
IHJldHVybiB0b3A7Ci0KLSAgICBpZiAoYXV0byogbGFzdExpbmUgPSBkb3duY2FzdDxSZW5kZXJC
bG9ja0Zsb3c+KCpibG9ja0JlZm9yZSkubGFzdFJvb3RCb3goKSkgewotICAgICAgICBSZW5kZXJP
YmplY3Q6OkhpZ2hsaWdodFN0YXRlIGxhc3RMaW5lU2VsZWN0aW9uU3RhdGUgPSBsYXN0TGluZS0+
c2VsZWN0aW9uU3RhdGUoKTsKLSAgICAgICAgaWYgKGxhc3RMaW5lU2VsZWN0aW9uU3RhdGUgIT0g
UmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6SW5zaWRlICYmIGxhc3RMaW5lU2VsZWN0aW9u
U3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6U3RhcnQpCi0gICAgICAgICAg
ICByZXR1cm4gdG9wOwotCi0gICAgICAgIExheW91dFVuaXQgbGFzdExpbmVTZWxlY3Rpb25Cb3R0
b20gPSBsYXN0TGluZS0+c2VsZWN0aW9uQm90dG9tKCkgKyBvZmZzZXRUb0Jsb2NrQmVmb3JlLmhl
aWdodCgpOwotICAgICAgICB0b3AgPSBzdGQ6Om1heCh0b3AsIGxhc3RMaW5lU2VsZWN0aW9uQm90
dG9tKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRvcDsKKyAgICByZXR1cm4gYmxvY2tGbG93KCkuYWRq
dXN0U2VsZWN0aW9uVG9wRm9yUHJlY2VkaW5nQmxvY2soc2VsZWN0aW9uVG9wKCkpOwogfQogCiBM
YXlvdXRVbml0IExlZ2FjeVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDQ0NTZh
YjU5NmQxNDAxOTQ5MDliNTgyMmY1YmE3N2M5NDFiYzNkM2QuLjc3MzJhMWY5NGExMjlkYWIzYjhj
ODA0NTdkZDNmYzYyYWM5ZjlkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCkBAIC0zMjE0LDYgKzMyMTQsNjMgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OnNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlIHN0YXRlKQogICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpzZXRTZWxlY3Rpb25TdGF0ZShzdGF0ZSk7CiB9CiAKK0xheW91dFVuaXQg
UmVuZGVyQmxvY2tGbG93OjphZGp1c3RTZWxlY3Rpb25Ub3BGb3JQcmVjZWRpbmdCbG9jayhMYXlv
dXRVbml0IHRvcCkgY29uc3QKK3sKKyAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJP
YmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpJbnNpZGUgJiYgc2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5k
ZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpFbmQpCisgICAgICAgIHJldHVybiB0b3A7CisKKyAg
ICBpZiAoaXNTZWxlY3Rpb25Sb290KCkpCisgICAgICAgIHJldHVybiB0b3A7CisKKyAgICBMYXlv
dXRTaXplIG9mZnNldFRvQmxvY2tCZWZvcmU7CisKKyAgICBhdXRvIGJsb2NrQmVmb3JlV2l0aGlu
U2VsZWN0aW9uUm9vdCA9IFsmXSgpIC0+IGNvbnN0IFJlbmRlckJsb2NrRmxvdyogeworICAgICAg
ICBjb25zdCBSZW5kZXJFbGVtZW50KiBvYmplY3QgPSB0aGlzOworICAgICAgICBSZW5kZXJPYmpl
Y3QqIHNpYmxpbmc7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHNpYmxpbmcgPSBvYmplY3Qt
PnByZXZpb3VzU2libGluZygpOworICAgICAgICAgICAgd2hpbGUgKHNpYmxpbmcgJiYgKCFpczxS
ZW5kZXJCbG9jaz4oKnNpYmxpbmcpIHx8IGRvd25jYXN0PFJlbmRlckJsb2NrPigqc2libGluZyku
aXNTZWxlY3Rpb25Sb290KCkpKQorICAgICAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5w
cmV2aW91c1NpYmxpbmcoKTsKKworICAgICAgICAgICAgb2Zmc2V0VG9CbG9ja0JlZm9yZSAtPSBM
YXlvdXRTaXplKGRvd25jYXN0PFJlbmRlckJsb2NrPigqb2JqZWN0KS5sb2dpY2FsTGVmdCgpLCBk
b3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkubG9naWNhbFRvcCgpKTsKKyAgICAgICAgICAg
IG9iamVjdCA9IG9iamVjdC0+cGFyZW50KCk7CisgICAgICAgIH0gd2hpbGUgKCFzaWJsaW5nICYm
IGlzPFJlbmRlckJsb2NrPihvYmplY3QpICYmICFkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVj
dCkuaXNTZWxlY3Rpb25Sb290KCkpOworCisgICAgICAgIGlmICghc2libGluZykKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8qIGJlZm9yZUJsb2NrID0gZG93bmNh
c3Q8UmVuZGVyQmxvY2s+KHNpYmxpbmcpOworCisgICAgICAgIG9mZnNldFRvQmxvY2tCZWZvcmUg
Kz0gTGF5b3V0U2l6ZShiZWZvcmVCbG9jay0+bG9naWNhbExlZnQoKSwgYmVmb3JlQmxvY2stPmxv
Z2ljYWxUb3AoKSk7CisKKyAgICAgICAgYXV0byogY2hpbGQgPSBiZWZvcmVCbG9jay0+bGFzdENo
aWxkKCk7CisgICAgICAgIHdoaWxlIChpczxSZW5kZXJCbG9jaz4oY2hpbGQpKSB7CisgICAgICAg
ICAgICBiZWZvcmVCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPihjaGlsZCk7CisgICAgICAg
ICAgICBvZmZzZXRUb0Jsb2NrQmVmb3JlICs9IExheW91dFNpemUoYmVmb3JlQmxvY2stPmxvZ2lj
YWxMZWZ0KCksIGJlZm9yZUJsb2NrLT5sb2dpY2FsVG9wKCkpOworICAgICAgICAgICAgY2hpbGQg
PSBiZWZvcmVCbG9jay0+bGFzdENoaWxkKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlz
PFJlbmRlckJsb2NrRmxvdz4oYmVmb3JlQmxvY2spID8gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93
PihiZWZvcmVCbG9jaykgOiBudWxscHRyOworICAgIH07CisKKyAgICBhdXRvKiBibG9ja0JlZm9y
ZSA9IGJsb2NrQmVmb3JlV2l0aGluU2VsZWN0aW9uUm9vdCgpOworICAgIGlmICghYmxvY2tCZWZv
cmUpCisgICAgICAgIHJldHVybiB0b3A7CisKKyAgICAvLyBEbyBub3QgYWRqdXN0IGJsb2NrcyBz
aGFyaW5nIHRoZSBzYW1lIGxpbmUuCisgICAgaWYgKCFvZmZzZXRUb0Jsb2NrQmVmb3JlLmhlaWdo
dCgpKQorICAgICAgICByZXR1cm4gdG9wOworCisgICAgaWYgKGF1dG8gbGFzdExpbmUgPSBMYXlv
dXRJbnRlZ3JhdGlvbjo6bGFzdExpbmVGb3IoKmJsb2NrQmVmb3JlKSkgeworICAgICAgICBSZW5k
ZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIGxhc3RMaW5lU2VsZWN0aW9uU3RhdGUgPSBsYXN0TGlu
ZS0+c2VsZWN0aW9uU3RhdGUoKTsKKyAgICAgICAgaWYgKGxhc3RMaW5lU2VsZWN0aW9uU3RhdGUg
IT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6SW5zaWRlICYmIGxhc3RMaW5lU2VsZWN0
aW9uU3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6U3RhcnQpCisgICAgICAg
ICAgICByZXR1cm4gdG9wOworCisgICAgICAgIExheW91dFVuaXQgbGFzdExpbmVTZWxlY3Rpb25C
b3R0b20gPSBsYXN0TGluZS0+c2VsZWN0aW9uQm90dG9tKCkgKyBvZmZzZXRUb0Jsb2NrQmVmb3Jl
LmhlaWdodCgpOworICAgICAgICB0b3AgPSBzdGQ6Om1heCh0b3AsIGxhc3RMaW5lU2VsZWN0aW9u
Qm90dG9tKTsKKyAgICB9CisgICAgcmV0dXJuIHRvcDsKK30KKwogR2FwUmVjdHMgUmVuZGVyQmxv
Y2tGbG93OjppbmxpbmVTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0
IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRTaXpl
JiBvZmZzZXRGcm9tUm9vdEJsb2NrLAogICAgIExheW91dFVuaXQmIGxhc3RMb2dpY2FsVG9wLCBM
YXlvdXRVbml0JiBsYXN0TG9naWNhbExlZnQsIExheW91dFVuaXQmIGxhc3RMb2dpY2FsUmlnaHQs
IGNvbnN0IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMmIGNhY2hlLCBjb25zdCBQYWludElu
Zm8qIHBhaW50SW5mbykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaAppbmRleCBkZmY2MWNjOTFlNzhjYjIxOGMyOTk5MWM3M2ViMjNjOTUzZmJiNjk2Li43NzU2
NTgzMmE0ODRjODlmNTc3YmQ5M2E5YzljODFmYWEwZjZlNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC00MDQsNiArNDA0LDggQEAgcHVibGljOgog
ICAgIAogICAgIExheW91dFVuaXQgZW5kUGFkZGluZ1dpZHRoRm9yQ2FyZXQoKSBjb25zdDsKIAor
ICAgIExheW91dFVuaXQgYWRqdXN0U2VsZWN0aW9uVG9wRm9yUHJlY2VkaW5nQmxvY2soTGF5b3V0
VW5pdCB0b3ApIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzaG91bGRSZXNldExvZ2lj
YWxIZWlnaHRCZWZvcmVMYXlvdXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438372</attachid>
            <date>2021-09-16 11:09:23 -0700</date>
            <delta_ts>2021-09-16 11:21:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230352-20210916210921.patch</filename>
            <type>text/plain</type>
            <size>14093</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRjNGU3ZmI1YjEyZGVl
YmViZmNiOTY4NDhjYzdhOWM4ZjA3ZDZkMi4uMjZmNjllZTMyNzYyZTdiMzNiODlkZjIwYmU4YjZm
NmRkOGQyY2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA5LTE2ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNlbGVjdGlvbiBn
YXAgYWRqdXN0bWVudCBjb2RlIGZvcm0gTGVnYWN5Um9vdElubGluZUJveCB0byBSZW5kZXJCbG9j
a0Zsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDM1MgorCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICBNb3Zl
IHRoZSBjb2RlIG91dCBvZiBsZWdhY3kgbGluZWJveGVzIGFuZCBtYWtlIGl0IHVzZSBpbmxpbmUg
aXRlcmF0b3JzLgorICAgICAgICBBbHNvIGFkZCBzZWxlY3Rpb25TdGF0ZSgpIHRvIHRoZSBpdGVy
YXRvcnMuCisKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVJdGVyYXRvcjo6Zmlyc3RSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVJdGVyYXRvcjo6bGFzdFJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aExpbmU6OmZpcnN0UnVuIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6bGFzdFJ1biBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aExpbmU6OnNlbGVjdGlvblN0
YXRlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lSXRlcmF0b3IuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6UGF0aFJ1bjo6c2VsZWN0aW9uU3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jayBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpibG9ja0JlZm9yZVdpdGhpblNlbGVjdGlvblJvb3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGp1c3RTZWxlY3Rpb25Ub3BGb3JQcmVjZWRp
bmdCbG9jayBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgor
CiAyMDIxLTA5LTE2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2Ugc3RkOjpvcHRpb25hbCBmb3IgdHJ1bmNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVJdGVyYXRvci5jcHAKaW5kZXggYzFjYWZmOGY3ZjhjNGJiY2E1M2I1ZDUxNjhiNzk1MThmNWNj
ZDI1MS4uYWZiZTdlMjE0N2M1ODQ0ZTVjYmFjMjUzMWRjNTIxYWRiMjg3MTc0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuY3BwCkBAIC03OCwxNiArNzgsMTIgQEAgYm9vbCBM
aW5lSXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgTGluZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QK
IAogUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpmaXJzdFJ1bigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9saW5lLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+
IFJ1bkl0ZXJhdG9yIHsKLSAgICAgICAgcmV0dXJuIHsgcGF0aC5maXJzdFJ1bigpIH07Ci0gICAg
fSk7CisgICAgcmV0dXJuIG1fbGluZS5maXJzdFJ1bigpOwogfQogCiBSdW5JdGVyYXRvciBMaW5l
SXRlcmF0b3I6Omxhc3RSdW4oKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
bGluZS5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSAtPiBSdW5JdGVyYXRvciB7Ci0gICAg
ICAgIHJldHVybiB7IHBhdGgubGFzdFJ1bigpIH07Ci0gICAgfSk7CisgICAgcmV0dXJuIG1fbGlu
ZS5sYXN0UnVuKCk7CiB9CiAKIFJ1bkl0ZXJhdG9yIExpbmVJdGVyYXRvcjo6bG9naWNhbFN0YXJ0
UnVuKCkgY29uc3QKQEAgLTE4NywxMSArMTgzLDUwIEBAIFJ1bkl0ZXJhdG9yIExpbmVJdGVyYXRv
cjo6Y2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9zaXRpb24oaW50IGxlZnRQb3NpdGlvbiwgYm9v
CiAgICAgcmV0dXJuIGNsb3Nlc3RSdW47CiB9CiAKK1J1bkl0ZXJhdG9yIFBhdGhMaW5lOjpmaXJz
dFJ1bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwg
W10oYXV0byYgcGF0aCkgLT4gUnVuSXRlcmF0b3IgeworICAgICAgICByZXR1cm4geyBwYXRoLmZp
cnN0UnVuKCkgfTsKKyAgICB9KTsKK30KKworUnVuSXRlcmF0b3IgUGF0aExpbmU6Omxhc3RSdW4o
KSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGF1
dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKKyAgICAgICAgcmV0dXJuIHsgcGF0aC5sYXN0UnVu
KCkgfTsKKyAgICB9KTsKK30KKwogaW50IFBhdGhMaW5lOjpibG9ja0RpcmVjdGlvblBvaW50SW5M
aW5lKCkgY29uc3QKIHsKICAgICByZXR1cm4gIWNvbnRhaW5pbmdCbG9jaygpLnN0eWxlKCkuaXNG
bGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IHN0ZDo6bWF4KHRvcCgpLCBzZWxlY3Rpb25Ub3Ao
KSkgOiBzdGQ6Om1pbihib3R0b20oKSwgc2VsZWN0aW9uQm90dG9tKCkpOwogfQogCitSZW5kZXJP
YmplY3Q6OkhpZ2hsaWdodFN0YXRlIFBhdGhMaW5lOjpzZWxlY3Rpb25TdGF0ZSgpIGNvbnN0Cit7
CisgICAgYXV0byYgYmxvY2sgPSBjb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAoYmxvY2suc2Vs
ZWN0aW9uU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6Ok5vbmUpCisgICAgICAgIHJldHVybiBSZW5k
ZXJPYmplY3Q6Ok5vbmU7CisKKyAgICBhdXRvIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpOb25lOwor
ICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFJ1bigpOyBib3g7IGJveC50cmF2ZXJzZU5leHRPbkxp
bmUoKSkgeworICAgICAgICBhdXRvIGJveFN0YXRlID0gYm94LT5zZWxlY3Rpb25TdGF0ZSgpOwor
ICAgICAgICBpZiAoKGJveFN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OlN0
YXJ0ICYmIHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OkVuZCkKKyAgICAg
ICAgICAgIHx8IChib3hTdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpFbmQg
JiYgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6U3RhcnQpKQorICAgICAg
ICAgICAgc3RhdGUgPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpCb3RoOworICAgICAg
ICBlbHNlIGlmIChzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lIHx8
ICgoYm94U3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6U3RhcnQgfHwgYm94
U3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6RW5kKQorICAgICAgICAgICAg
JiYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmUgfHwgc3RhdGUg
PT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6SW5zaWRlKSkpCisgICAgICAgICAgICBz
dGF0ZSA9IGJveFN0YXRlOworICAgICAgICBlbHNlIGlmIChib3hTdGF0ZSA9PSBSZW5kZXJPYmpl
Y3Q6OkhpZ2hsaWdodFN0YXRlOjpOb25lICYmIHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxp
Z2h0U3RhdGU6OlN0YXJ0KSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgcGFzdCB0aGUgZW5kIG9m
IHRoZSBzZWxlY3Rpb24uCisgICAgICAgICAgICBzdGF0ZSA9IFJlbmRlck9iamVjdDo6SGlnaGxp
Z2h0U3RhdGU6OkJvdGg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlID09IFJlbmRlck9i
amVjdDo6SGlnaGxpZ2h0U3RhdGU6OkJvdGgpCisgICAgICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIHN0YXRlOworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJh
dG9yLmgKaW5kZXggOGJjMWEyYjYzNzU4ZGZlYmY2NjZmZGIyOWJlNmE2MWRkNGE5M2I2Yi4uMTBm
MDg3ODE0NzBiZjZlODQzYTVjYmQwMDkxYTMzZTg1MjYyNDM1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uTGluZUl0ZXJhdG9yLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIExheW91dFVu
aXQgbGluZUJveEJvdHRvbSgpIGNvbnN0OwogCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
KCkgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBzZWxlY3Rpb25TdGF0
ZSgpIGNvbnN0OwogCiAgICAgZmxvYXQgeSgpIGNvbnN0OwogICAgIGZsb2F0IGNvbnRlbnRMb2dp
Y2FsTGVmdCgpIGNvbnN0OwpAQCAtNzYsNyArNzcsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7CiAgICAgY29uc3QgTGVnYWN5
Um9vdElubGluZUJveCogbGVnYWN5Um9vdElubGluZUJveCgpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6
Citwcml2YXRlOgorICAgIFJ1bkl0ZXJhdG9yIGZpcnN0UnVuKCkgY29uc3Q7CisgICAgUnVuSXRl
cmF0b3IgbGFzdFJ1bigpIGNvbnN0OworCiAgICAgZnJpZW5kIGNsYXNzIExpbmVJdGVyYXRvcjsK
IAogICAgIFBhdGhWYXJpYW50IG1fcGF0aFZhcmlhbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5J
dGVyYXRvci5jcHAKaW5kZXggMjU3N2VlYmVmNjUzOWI5ZDk1NjU5YjI3N2NiMDRmMTQ1YmZmYmZj
MS4uNTMyMjVmZTgyMDMzOThiNGIwYjE3YjgzZTRiYjVmYjQ0YWQ3OWJjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApAQCAtOTUsNiArOTUsMTYgQEAgY29uc3QgUmVuZGVy
U3R5bGUmIFBhdGhSdW46OnN0eWxlKCkgY29uc3QKICAgICByZXR1cm4gbGluZSgpLmlzRmlyc3Qo
KSA/IHJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJlbmRlcmVyKCkuc3R5bGUoKTsKIH0K
IAorUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBQYXRoUnVuOjpzZWxlY3Rpb25TdGF0ZSgp
IGNvbnN0Cit7CisgICAgaWYgKGlzVGV4dCgpKSB7CisgICAgICAgIGF1dG8mIHRleHQgPSBkb3du
Y2FzdDxQYXRoVGV4dFJ1bj4oKnRoaXMpOworICAgICAgICBhdXRvJiByZW5kZXJlciA9IHRleHQu
cmVuZGVyZXIoKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnZpZXcoKS5zZWxlY3Rpb24oKS5o
aWdobGlnaHRTdGF0ZUZvclRleHRCb3gocmVuZGVyZXIsIHRleHQuc2VsZWN0YWJsZVJhbmdlKCkp
OworICAgIH0KKyAgICByZXR1cm4gcmVuZGVyZXIoKS5zZWxlY3Rpb25TdGF0ZSgpOworfQorCiBU
ZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVyYXRvcihQYXRoUnVuOjpQYXRoVmFyaWFudCYmIHBh
dGhWYXJpYW50KQogICAgIDogUnVuSXRlcmF0b3IoV1RGTW92ZShwYXRoVmFyaWFudCkpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25SdW5JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaAppbmRleCBhMzI0NjAxYTY1MjdkN2FhMWQyMmVk
OTRlZWQwYjcwZjY0NGU4MjY3Li45ZDE5NmRjYjM0ODRhNTkxOGJhMDVlOTI4MmVlOTRlNjNkOGU2
MDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKQEAgLTc5LDYgKzc5LDggQEAg
cHVibGljOgogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gYmlk
aUxldmVsKCkgJSAyID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlvbjo6TFRSOyB9
CiAgICAgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0
aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSOyB9CiAKKyAgICBSZW5kZXJPYmplY3Q6OkhpZ2hs
aWdodFN0YXRlIHNlbGVjdGlvblN0YXRlKCkgY29uc3Q7CisKICAgICBjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyKCkgY29uc3Q7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5s
aW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94
LmNwcAppbmRleCAxZDVmZTk1MDIyMDE3ZTBlZjljNDg3ZmNlMzJmNDU0YjFhNDY4OWM0Li42NmEx
MjgyZmFjM2YwZDhkMGU2MjhmYmFmOTQ3ZDFhY2UzNjA2YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3guY3BwCkBAIC01ODcsNjUgKzU4Nyw5
IEBAIExheW91dFVuaXQgTGVnYWN5Um9vdElubGluZUJveDo6c2VsZWN0aW9uVG9wKEZvckhpdFRl
c3RpbmcgZm9ySGl0VGVzdGluZykgY29uc3QKICAgICByZXR1cm4gcHJldkJvdHRvbTsKIH0KIAot
c3RhdGljIFJlbmRlckJsb2NrKiBibG9ja0JlZm9yZVdpdGhpblNlbGVjdGlvblJvb3QoY29uc3Qg
UmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIExheW91dFNpemUmIG9mZnNldCkKLXsKLSAgICBp
ZiAoYmxvY2tGbG93LmlzU2VsZWN0aW9uUm9vdCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LQotICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIG9iamVjdCA9ICZibG9ja0Zsb3c7Ci0gICAgUmVu
ZGVyT2JqZWN0KiBzaWJsaW5nOwotICAgIGRvIHsKLSAgICAgICAgc2libGluZyA9IG9iamVjdC0+
cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgIHdoaWxlIChzaWJsaW5nICYmICghaXM8UmVuZGVy
QmxvY2s+KCpzaWJsaW5nKSB8fCBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnNpYmxpbmcpLmlzU2Vs
ZWN0aW9uUm9vdCgpKSkKLSAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c1Np
YmxpbmcoKTsKLQotICAgICAgICBvZmZzZXQgLT0gTGF5b3V0U2l6ZShkb3duY2FzdDxSZW5kZXJC
bG9jaz4oKm9iamVjdCkubG9naWNhbExlZnQoKSwgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmpl
Y3QpLmxvZ2ljYWxUb3AoKSk7Ci0gICAgICAgIG9iamVjdCA9IG9iamVjdC0+cGFyZW50KCk7Ci0g
ICAgfSB3aGlsZSAoIXNpYmxpbmcgJiYgaXM8UmVuZGVyQmxvY2s+KG9iamVjdCkgJiYgIWRvd25j
YXN0PFJlbmRlckJsb2NrPigqb2JqZWN0KS5pc1NlbGVjdGlvblJvb3QoKSk7Ci0KLSAgICBpZiAo
IXNpYmxpbmcpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmVuZGVyQmxvY2sqIGJl
Zm9yZUJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KHNpYmxpbmcpOwotCi0gICAgb2Zmc2V0
ICs9IExheW91dFNpemUoYmVmb3JlQmxvY2stPmxvZ2ljYWxMZWZ0KCksIGJlZm9yZUJsb2NrLT5s
b2dpY2FsVG9wKCkpOwotCi0gICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGJlZm9yZUJsb2NrLT5s
YXN0Q2hpbGQoKTsKLSAgICB3aGlsZSAoaXM8UmVuZGVyQmxvY2s+KGNoaWxkKSkgewotICAgICAg
ICBiZWZvcmVCbG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPihjaGlsZCk7Ci0gICAgICAgIG9m
ZnNldCArPSBMYXlvdXRTaXplKGJlZm9yZUJsb2NrLT5sb2dpY2FsTGVmdCgpLCBiZWZvcmVCbG9j
ay0+bG9naWNhbFRvcCgpKTsKLSAgICAgICAgY2hpbGQgPSBiZWZvcmVCbG9jay0+bGFzdENoaWxk
KCk7Ci0gICAgfQotICAgIHJldHVybiBiZWZvcmVCbG9jazsKLX0KLQogTGF5b3V0VW5pdCBMZWdh
Y3lSb290SW5saW5lQm94OjpzZWxlY3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCkg
Y29uc3QKIHsKLSAgICBjb25zdCBMZWdhY3lSb290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgp
OwotICAgIExheW91dFVuaXQgdG9wID0gc2VsZWN0aW9uVG9wKCk7Ci0KLSAgICBhdXRvIGJsb2Nr
U2VsZWN0aW9uU3RhdGUgPSByb290Qm94LmJsb2NrRmxvdygpLnNlbGVjdGlvblN0YXRlKCk7Ci0g
ICAgaWYgKGJsb2NrU2VsZWN0aW9uU3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0
ZTo6SW5zaWRlICYmIGJsb2NrU2VsZWN0aW9uU3RhdGUgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGln
aHRTdGF0ZTo6RW5kKQotICAgICAgICByZXR1cm4gdG9wOwotCi0gICAgTGF5b3V0U2l6ZSBvZmZz
ZXRUb0Jsb2NrQmVmb3JlOwotICAgIGF1dG8qIGJsb2NrQmVmb3JlID0gYmxvY2tCZWZvcmVXaXRo
aW5TZWxlY3Rpb25Sb290KHJvb3RCb3guYmxvY2tGbG93KCksIG9mZnNldFRvQmxvY2tCZWZvcmUp
OwotICAgIGlmICghaXM8UmVuZGVyQmxvY2tGbG93PihibG9ja0JlZm9yZSkpCi0gICAgICAgIHJl
dHVybiB0b3A7Ci0KLSAgICAvLyBEbyBub3QgYWRqdXN0IGJsb2NrcyBzaGFyaW5nIHRoZSBzYW1l
IGxpbmUuCi0gICAgaWYgKCFvZmZzZXRUb0Jsb2NrQmVmb3JlLmhlaWdodCgpKQotICAgICAgICBy
ZXR1cm4gdG9wOwotCi0gICAgaWYgKGF1dG8qIGxhc3RMaW5lID0gZG93bmNhc3Q8UmVuZGVyQmxv
Y2tGbG93PigqYmxvY2tCZWZvcmUpLmxhc3RSb290Qm94KCkpIHsKLSAgICAgICAgUmVuZGVyT2Jq
ZWN0OjpIaWdobGlnaHRTdGF0ZSBsYXN0TGluZVNlbGVjdGlvblN0YXRlID0gbGFzdExpbmUtPnNl
bGVjdGlvblN0YXRlKCk7Ci0gICAgICAgIGlmIChsYXN0TGluZVNlbGVjdGlvblN0YXRlICE9IFJl
bmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Okluc2lkZSAmJiBsYXN0TGluZVNlbGVjdGlvblN0
YXRlICE9IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OlN0YXJ0KQotICAgICAgICAgICAg
cmV0dXJuIHRvcDsKLQotICAgICAgICBMYXlvdXRVbml0IGxhc3RMaW5lU2VsZWN0aW9uQm90dG9t
ID0gbGFzdExpbmUtPnNlbGVjdGlvbkJvdHRvbSgpICsgb2Zmc2V0VG9CbG9ja0JlZm9yZS5oZWln
aHQoKTsKLSAgICAgICAgdG9wID0gc3RkOjptYXgodG9wLCBsYXN0TGluZVNlbGVjdGlvbkJvdHRv
bSk7Ci0gICAgfQotICAgIHJldHVybiB0b3A7CisgICAgcmV0dXJuIGJsb2NrRmxvdygpLmFkanVz
dFNlbGVjdGlvblRvcEZvclByZWNlZGluZ0Jsb2NrKHNlbGVjdGlvblRvcCgpKTsKIH0KIAogTGF5
b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94OjpzZWxlY3Rpb25Cb3R0b20oKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA0NDU2YWI1
OTZkMTQwMTk0OTA5YjU4MjJmNWJhNzdjOTQxYmMzZDNkLi5hYTE5NWM5NjgyZTNhODdlYTljMjA2
ODNlN2RmYjg0ODcwNWQ3OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcApAQCAtMzIxNCw2ICszMjE0LDYzIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjpzZXRTZWxlY3Rpb25TdGF0ZShIaWdobGlnaHRTdGF0ZSBzdGF0ZSkKICAgICBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c2V0U2VsZWN0aW9uU3RhdGUoc3RhdGUpOwogfQogCitMYXlvdXRVbml0IFJl
bmRlckJsb2NrRmxvdzo6YWRqdXN0U2VsZWN0aW9uVG9wRm9yUHJlY2VkaW5nQmxvY2soTGF5b3V0
VW5pdCB0b3ApIGNvbnN0Cit7CisgICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2Jq
ZWN0OjpIaWdobGlnaHRTdGF0ZTo6SW5zaWRlICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVy
T2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6RW5kKQorICAgICAgICByZXR1cm4gdG9wOworCisgICAg
aWYgKGlzU2VsZWN0aW9uUm9vdCgpKQorICAgICAgICByZXR1cm4gdG9wOworCisgICAgTGF5b3V0
U2l6ZSBvZmZzZXRUb0Jsb2NrQmVmb3JlOworCisgICAgYXV0byBibG9ja0JlZm9yZVdpdGhpblNl
bGVjdGlvblJvb3QgPSBbJl0oKSAtPiBjb25zdCBSZW5kZXJCbG9ja0Zsb3cqIHsKKyAgICAgICAg
Y29uc3QgUmVuZGVyRWxlbWVudCogb2JqZWN0ID0gdGhpczsKKyAgICAgICAgY29uc3QgUmVuZGVy
T2JqZWN0KiBzaWJsaW5nID0gbnVsbHB0cjsKKyAgICAgICAgZG8geworICAgICAgICAgICAgc2li
bGluZyA9IG9iamVjdC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgICAgICB3aGlsZSAoc2li
bGluZyAmJiAoIWlzPFJlbmRlckJsb2NrPigqc2libGluZykgfHwgZG93bmNhc3Q8UmVuZGVyQmxv
Y2s+KCpzaWJsaW5nKS5pc1NlbGVjdGlvblJvb3QoKSkpCisgICAgICAgICAgICAgICAgc2libGlu
ZyA9IHNpYmxpbmctPnByZXZpb3VzU2libGluZygpOworCisgICAgICAgICAgICBvZmZzZXRUb0Js
b2NrQmVmb3JlIC09IExheW91dFNpemUoZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmxv
Z2ljYWxMZWZ0KCksIGRvd25jYXN0PFJlbmRlckJsb2NrPigqb2JqZWN0KS5sb2dpY2FsVG9wKCkp
OworICAgICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnQoKTsKKyAgICAgICAgfSB3aGls
ZSAoIXNpYmxpbmcgJiYgaXM8UmVuZGVyQmxvY2s+KG9iamVjdCkgJiYgIWRvd25jYXN0PFJlbmRl
ckJsb2NrPigqb2JqZWN0KS5pc1NlbGVjdGlvblJvb3QoKSk7CisKKyAgICAgICAgaWYgKCFzaWJs
aW5nKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byogYmVmb3Jl
QmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oc2libGluZyk7CisKKyAgICAgICAgb2Zmc2V0
VG9CbG9ja0JlZm9yZSArPSBMYXlvdXRTaXplKGJlZm9yZUJsb2NrLT5sb2dpY2FsTGVmdCgpLCBi
ZWZvcmVCbG9jay0+bG9naWNhbFRvcCgpKTsKKworICAgICAgICBhdXRvKiBjaGlsZCA9IGJlZm9y
ZUJsb2NrLT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgd2hpbGUgKGlzPFJlbmRlckJsb2NrPihjaGls
ZCkpIHsKKyAgICAgICAgICAgIGJlZm9yZUJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KGNo
aWxkKTsKKyAgICAgICAgICAgIG9mZnNldFRvQmxvY2tCZWZvcmUgKz0gTGF5b3V0U2l6ZShiZWZv
cmVCbG9jay0+bG9naWNhbExlZnQoKSwgYmVmb3JlQmxvY2stPmxvZ2ljYWxUb3AoKSk7CisgICAg
ICAgICAgICBjaGlsZCA9IGJlZm9yZUJsb2NrLT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gaXM8UmVuZGVyQmxvY2tGbG93PihiZWZvcmVCbG9jaykgPyBkb3duY2FzdDxS
ZW5kZXJCbG9ja0Zsb3c+KGJlZm9yZUJsb2NrKSA6IG51bGxwdHI7CisgICAgfTsKKworICAgIGF1
dG8qIGJsb2NrQmVmb3JlID0gYmxvY2tCZWZvcmVXaXRoaW5TZWxlY3Rpb25Sb290KCk7CisgICAg
aWYgKCFibG9ja0JlZm9yZSkKKyAgICAgICAgcmV0dXJuIHRvcDsKKworICAgIC8vIERvIG5vdCBh
ZGp1c3QgYmxvY2tzIHNoYXJpbmcgdGhlIHNhbWUgbGluZS4KKyAgICBpZiAoIW9mZnNldFRvQmxv
Y2tCZWZvcmUuaGVpZ2h0KCkpCisgICAgICAgIHJldHVybiB0b3A7CisKKyAgICBpZiAoYXV0byBs
YXN0TGluZSA9IExheW91dEludGVncmF0aW9uOjpsYXN0TGluZUZvcigqYmxvY2tCZWZvcmUpKSB7
CisgICAgICAgIFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGUgbGFzdExpbmVTZWxlY3Rpb25T
dGF0ZSA9IGxhc3RMaW5lLT5zZWxlY3Rpb25TdGF0ZSgpOworICAgICAgICBpZiAobGFzdExpbmVT
ZWxlY3Rpb25TdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpJbnNpZGUgJiYg
bGFzdExpbmVTZWxlY3Rpb25TdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpT
dGFydCkKKyAgICAgICAgICAgIHJldHVybiB0b3A7CisKKyAgICAgICAgTGF5b3V0VW5pdCBsYXN0
TGluZVNlbGVjdGlvbkJvdHRvbSA9IGxhc3RMaW5lLT5zZWxlY3Rpb25Cb3R0b20oKSArIG9mZnNl
dFRvQmxvY2tCZWZvcmUuaGVpZ2h0KCk7CisgICAgICAgIHRvcCA9IHN0ZDo6bWF4KHRvcCwgbGFz
dExpbmVTZWxlY3Rpb25Cb3R0b20pOworICAgIH0KKyAgICByZXR1cm4gdG9wOworfQorCiBHYXBS
ZWN0cyBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZVNlbGVjdGlvbkdhcHMoUmVuZGVyQmxvY2smIHJv
b3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNv
bnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290QmxvY2ssCiAgICAgTGF5b3V0VW5pdCYgbGFz
dExvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxhc3RMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCYgbGFz
dExvZ2ljYWxSaWdodCwgY29uc3QgTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcyYgY2FjaGUs
IGNvbnN0IFBhaW50SW5mbyogcGFpbnRJbmZvKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IGRmZjYxY2M5MWU3OGNiMjE4YzI5OTkxYzczZWIyM2M5
NTNmYmI2OTYuLjc3NTY1ODMyYTQ4NGM4OWY1NzdiZDkzYTljOWM4MWZhYTBmNmU2YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTQwNCw2ICs0MDQs
OCBAQCBwdWJsaWM6CiAgICAgCiAgICAgTGF5b3V0VW5pdCBlbmRQYWRkaW5nV2lkdGhGb3JDYXJl
dCgpIGNvbnN0OwogCisgICAgTGF5b3V0VW5pdCBhZGp1c3RTZWxlY3Rpb25Ub3BGb3JQcmVjZWRp
bmdCbG9jayhMYXlvdXRVbml0IHRvcCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBib29sIHNo
b3VsZFJlc2V0TG9naWNhbEhlaWdodEJlZm9yZUxheW91dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438374</attachid>
            <date>2021-09-16 11:21:41 -0700</date>
            <delta_ts>2021-09-16 12:19:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230352-20210916212140.patch</filename>
            <type>text/plain</type>
            <size>14092</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRjNGU3ZmI1YjEyZGVl
YmViZmNiOTY4NDhjYzdhOWM4ZjA3ZDZkMi4uZTRmZjZjNmVkOThmNWFjNzk4YjNhMjlmY2VlNDVk
MWY2YTVjZTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA5LTE2ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNlbGVjdGlvbiBn
YXAgYWRqdXN0bWVudCBjb2RlIGZvcm0gTGVnYWN5Um9vdElubGluZUJveCB0byBSZW5kZXJCbG9j
a0Zsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDM1MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgIE1vdmUg
dGhlIGNvZGUgb3V0IG9mIGxlZ2FjeSBsaW5lYm94ZXMgYW5kIG1ha2UgaXQgdXNlIGlubGluZSBp
dGVyYXRvcnMuCisgICAgICAgIEFsc28gYWRkIHNlbGVjdGlvblN0YXRlKCkgdG8gdGhlIGl0ZXJh
dG9ycy4KKworICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUl0ZXJhdG9yOjpmaXJzdFJ1biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpsYXN0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6Zmlyc3RSdW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlBhdGhMaW5lOjpsYXN0UnVuIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoTGluZTo6c2VsZWN0aW9uU3Rh
dGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVJdGVyYXRvci5oOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpQYXRoUnVuOjpzZWxlY3Rpb25TdGF0ZSBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lS
b290SW5saW5lQm94OjpzZWxlY3Rpb25Ub3BBZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmJsb2NrQmVmb3JlV2l0aGluU2VsZWN0aW9uUm9vdCk6IERl
bGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdFNlbGVjdGlvblRvcEZvclByZWNlZGlu
Z0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisK
IDIwMjEtMDktMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAg
IFVzZSBzdGQ6Om9wdGlvbmFsIGZvciB0cnVuY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUl0ZXJhdG9yLmNwcAppbmRleCBjMWNhZmY4ZjdmOGM0YmJjYTUzYjVkNTE2OGI3OTUxOGY1Y2Nk
MjUxLi5hZmJlN2UyMTQ3YzU4NDRlNWNiYWMyNTMxZGM1MjFhZGIyODcxNzRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5jcHAKQEAgLTc4LDE2ICs3OCwxMiBAQCBib29sIExp
bmVJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3ImIG90aGVyKSBjb25zdAog
CiBSdW5JdGVyYXRvciBMaW5lSXRlcmF0b3I6OmZpcnN0UnVuKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX2xpbmUubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgLT4g
UnVuSXRlcmF0b3IgewotICAgICAgICByZXR1cm4geyBwYXRoLmZpcnN0UnVuKCkgfTsKLSAgICB9
KTsKKyAgICByZXR1cm4gbV9saW5lLmZpcnN0UnVuKCk7CiB9CiAKIFJ1bkl0ZXJhdG9yIExpbmVJ
dGVyYXRvcjo6bGFzdFJ1bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9s
aW5lLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIC0+IFJ1bkl0ZXJhdG9yIHsKLSAgICAg
ICAgcmV0dXJuIHsgcGF0aC5sYXN0UnVuKCkgfTsKLSAgICB9KTsKKyAgICByZXR1cm4gbV9saW5l
Lmxhc3RSdW4oKTsKIH0KIAogUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsb2dpY2FsU3RhcnRS
dW4oKSBjb25zdApAQCAtMTg3LDExICsxODMsNTAgQEAgUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9y
OjpjbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihpbnQgbGVmdFBvc2l0aW9uLCBib28K
ICAgICByZXR1cm4gY2xvc2VzdFJ1bjsKIH0KIAorUnVuSXRlcmF0b3IgUGF0aExpbmU6OmZpcnN0
UnVuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBb
XShhdXRvJiBwYXRoKSAtPiBSdW5JdGVyYXRvciB7CisgICAgICAgIHJldHVybiB7IHBhdGguZmly
c3RSdW4oKSB9OworICAgIH0pOworfQorCitSdW5JdGVyYXRvciBQYXRoTGluZTo6bGFzdFJ1bigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0
byYgcGF0aCkgLT4gUnVuSXRlcmF0b3IgeworICAgICAgICByZXR1cm4geyBwYXRoLmxhc3RSdW4o
KSB9OworICAgIH0pOworfQorCiBpbnQgUGF0aExpbmU6OmJsb2NrRGlyZWN0aW9uUG9pbnRJbkxp
bmUoKSBjb25zdAogewogICAgIHJldHVybiAhY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gc3RkOjptYXgodG9wKCksIHNlbGVjdGlvblRvcCgp
KSA6IHN0ZDo6bWluKGJvdHRvbSgpLCBzZWxlY3Rpb25Cb3R0b20oKSk7CiB9CiAKK1JlbmRlck9i
amVjdDo6SGlnaGxpZ2h0U3RhdGUgUGF0aExpbmU6OnNlbGVjdGlvblN0YXRlKCkgY29uc3QKK3sK
KyAgICBhdXRvJiBibG9jayA9IGNvbnRhaW5pbmdCbG9jaygpOworICAgIGlmIChibG9jay5zZWxl
Y3Rpb25TdGF0ZSgpID09IFJlbmRlck9iamVjdDo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIFJlbmRl
ck9iamVjdDo6Tm9uZTsKKworICAgIGF1dG8gc3RhdGUgPSBSZW5kZXJPYmplY3Q6Ok5vbmU7Cisg
ICAgZm9yIChhdXRvIGJveCA9IGZpcnN0UnVuKCk7IGJveDsgYm94LnRyYXZlcnNlTmV4dE9uTGlu
ZSgpKSB7CisgICAgICAgIGF1dG8gYm94U3RhdGUgPSBib3gtPnNlbGVjdGlvblN0YXRlKCk7Cisg
ICAgICAgIGlmICgoYm94U3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6U3Rh
cnQgJiYgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6RW5kKQorICAgICAg
ICAgICAgfHwgKGJveFN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OkVuZCAm
JiBzdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpTdGFydCkpCisgICAgICAg
ICAgICBzdGF0ZSA9IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OkJvdGg7CisgICAgICAg
IGVsc2UgaWYgKHN0YXRlID09IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmUgfHwg
KChib3hTdGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpTdGFydCB8fCBib3hT
dGF0ZSA9PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpFbmQpCisgICAgICAgICAgICAm
JiAoc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6Tm9uZSB8fCBzdGF0ZSA9
PSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpJbnNpZGUpKSkKKyAgICAgICAgICAgIHN0
YXRlID0gYm94U3RhdGU7CisgICAgICAgIGVsc2UgaWYgKGJveFN0YXRlID09IFJlbmRlck9iamVj
dDo6SGlnaGxpZ2h0U3RhdGU6Ok5vbmUgJiYgc3RhdGUgPT0gUmVuZGVyT2JqZWN0OjpIaWdobGln
aHRTdGF0ZTo6U3RhcnQpIHsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBwYXN0IHRoZSBlbmQgb2Yg
dGhlIHNlbGVjdGlvbi4KKyAgICAgICAgICAgIHN0YXRlID0gUmVuZGVyT2JqZWN0OjpIaWdobGln
aHRTdGF0ZTo6Qm90aDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhdGUgPT0gUmVuZGVyT2Jq
ZWN0OjpIaWdobGlnaHRTdGF0ZTo6Qm90aCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gc3RhdGU7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0
b3IuaAppbmRleCA4YmMxYTJiNjM3NThkZmViZjY2NmZkYjI5YmU2YTYxZGQ0YTkzYjZiLi4xMGYw
ODc4MTQ3MGJmNmU4NDNhNWNiZDAwOTFhMzNlODUyNjI0MzUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lSXRlcmF0b3IuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5p
dCBsaW5lQm94Qm90dG9tKCkgY29uc3Q7CiAKICAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3Qo
KSBjb25zdDsKKyAgICBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIHNlbGVjdGlvblN0YXRl
KCkgY29uc3Q7CiAKICAgICBmbG9hdCB5KCkgY29uc3Q7CiAgICAgZmxvYXQgY29udGVudExvZ2lj
YWxMZWZ0KCkgY29uc3Q7CkBAIC03Niw3ICs3NywxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVu
ZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25zdDsKICAgICBjb25zdCBMZWdhY3lS
b290SW5saW5lQm94KiBsZWdhY3lSb290SW5saW5lQm94KCkgY29uc3Q7CiAKLXByb3RlY3RlZDoK
K3ByaXZhdGU6CisgICAgUnVuSXRlcmF0b3IgZmlyc3RSdW4oKSBjb25zdDsKKyAgICBSdW5JdGVy
YXRvciBsYXN0UnVuKCkgY29uc3Q7CisKICAgICBmcmllbmQgY2xhc3MgTGluZUl0ZXJhdG9yOwog
CiAgICAgUGF0aFZhcmlhbnQgbV9wYXRoVmFyaWFudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yLmNwcAppbmRleCAyNTc3ZWViZWY2NTM5YjlkOTU2NTliMjc3Y2IwNGYxNDViZmZiZmMx
Li41MzIyNWZlODIwMzM5OGI0YjBiMTdiODNlNGJiNWZiNDRhZDc5YmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCkBAIC05NSw2ICs5NSwxNiBAQCBjb25zdCBSZW5kZXJT
dHlsZSYgUGF0aFJ1bjo6c3R5bGUoKSBjb25zdAogICAgIHJldHVybiBsaW5lKCkuaXNGaXJzdCgp
ID8gcmVuZGVyZXIoKS5maXJzdExpbmVTdHlsZSgpIDogcmVuZGVyZXIoKS5zdHlsZSgpOwogfQog
CitSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRlIFBhdGhSdW46OnNlbGVjdGlvblN0YXRlKCkg
Y29uc3QKK3sKKyAgICBpZiAoaXNUZXh0KCkpIHsKKyAgICAgICAgYXV0byYgdGV4dCA9IGRvd25j
YXN0PFBhdGhUZXh0UnVuPigqdGhpcyk7CisgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gdGV4dC5y
ZW5kZXJlcigpOworICAgICAgICByZXR1cm4gcmVuZGVyZXIudmlldygpLnNlbGVjdGlvbigpLmhp
Z2hsaWdodFN0YXRlRm9yVGV4dEJveChyZW5kZXJlciwgdGV4dC5zZWxlY3RhYmxlUmFuZ2UoKSk7
CisgICAgfQorICAgIHJldHVybiByZW5kZXJlcigpLnNlbGVjdGlvblN0YXRlKCk7Cit9CisKIFRl
eHRSdW5JdGVyYXRvcjo6VGV4dFJ1bkl0ZXJhdG9yKFBhdGhSdW46OlBhdGhWYXJpYW50JiYgcGF0
aFZhcmlhbnQpCiAgICAgOiBSdW5JdGVyYXRvcihXVEZNb3ZlKHBhdGhWYXJpYW50KSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvblJ1bkl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCmluZGV4IGEzMjQ2MDFhNjUyN2Q3YWExZDIyZWQ5
NGVlZDBiNzBmNjQ0ZTgyNjcuLjlkMTk2ZGNiMzQ4NGE1OTE4YmEwNWU5MjgyZWU5NGU2M2Q4ZTYw
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuaApAQCAtNzksNiArNzksOCBAQCBw
dWJsaWM6CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaWRp
TGV2ZWwoKSAlIDIgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7IH0K
ICAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rp
b24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFI7IH0KIAorICAgIFJlbmRlck9iamVjdDo6SGlnaGxp
Z2h0U3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBjb25zdDsKKwogICAgIGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyZXIoKSBjb25zdDsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxp
bmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeVJvb3RJbmxpbmVCb3gu
Y3BwCmluZGV4IDFkNWZlOTUwMjIwMTdlMGVmOWM0ODdmY2UzMmY0NTRiMWE0Njg5YzQuLjY2YTEy
ODJmYWMzZjBkOGQwZTYyOGZiYWY5NDdkMWFjZTM2MDZjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lSb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGVnYWN5Um9vdElubGluZUJveC5jcHAKQEAgLTU4Nyw2NSArNTg3LDkg
QEAgTGF5b3V0VW5pdCBMZWdhY3lSb290SW5saW5lQm94OjpzZWxlY3Rpb25Ub3AoRm9ySGl0VGVz
dGluZyBmb3JIaXRUZXN0aW5nKSBjb25zdAogICAgIHJldHVybiBwcmV2Qm90dG9tOwogfQogCi1z
dGF0aWMgUmVuZGVyQmxvY2sqIGJsb2NrQmVmb3JlV2l0aGluU2VsZWN0aW9uUm9vdChjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cmIGJsb2NrRmxvdywgTGF5b3V0U2l6ZSYgb2Zmc2V0KQotewotICAgIGlm
IChibG9ja0Zsb3cuaXNTZWxlY3Rpb25Sb290KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgY29uc3QgUmVuZGVyRWxlbWVudCogb2JqZWN0ID0gJmJsb2NrRmxvdzsKLSAgICBSZW5k
ZXJPYmplY3QqIHNpYmxpbmc7Ci0gICAgZG8gewotICAgICAgICBzaWJsaW5nID0gb2JqZWN0LT5w
cmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgd2hpbGUgKHNpYmxpbmcgJiYgKCFpczxSZW5kZXJC
bG9jaz4oKnNpYmxpbmcpIHx8IGRvd25jYXN0PFJlbmRlckJsb2NrPigqc2libGluZykuaXNTZWxl
Y3Rpb25Sb290KCkpKQotICAgICAgICAgICAgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzU2li
bGluZygpOwotCi0gICAgICAgIG9mZnNldCAtPSBMYXlvdXRTaXplKGRvd25jYXN0PFJlbmRlckJs
b2NrPigqb2JqZWN0KS5sb2dpY2FsTGVmdCgpLCBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVj
dCkubG9naWNhbFRvcCgpKTsKLSAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnQoKTsKLSAg
ICB9IHdoaWxlICghc2libGluZyAmJiBpczxSZW5kZXJCbG9jaz4ob2JqZWN0KSAmJiAhZG93bmNh
c3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmlzU2VsZWN0aW9uUm9vdCgpKTsKLQotICAgIGlmICgh
c2libGluZykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZW5kZXJCbG9jayogYmVm
b3JlQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oc2libGluZyk7Ci0KLSAgICBvZmZzZXQg
Kz0gTGF5b3V0U2l6ZShiZWZvcmVCbG9jay0+bG9naWNhbExlZnQoKSwgYmVmb3JlQmxvY2stPmxv
Z2ljYWxUb3AoKSk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gYmVmb3JlQmxvY2stPmxh
c3RDaGlsZCgpOwotICAgIHdoaWxlIChpczxSZW5kZXJCbG9jaz4oY2hpbGQpKSB7Ci0gICAgICAg
IGJlZm9yZUJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KGNoaWxkKTsKLSAgICAgICAgb2Zm
c2V0ICs9IExheW91dFNpemUoYmVmb3JlQmxvY2stPmxvZ2ljYWxMZWZ0KCksIGJlZm9yZUJsb2Nr
LT5sb2dpY2FsVG9wKCkpOwotICAgICAgICBjaGlsZCA9IGJlZm9yZUJsb2NrLT5sYXN0Q2hpbGQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGJlZm9yZUJsb2NrOwotfQotCiBMYXlvdXRVbml0IExlZ2Fj
eVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSBj
b25zdAogewotICAgIGNvbnN0IExlZ2FjeVJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7
Ci0gICAgTGF5b3V0VW5pdCB0b3AgPSBzZWxlY3Rpb25Ub3AoKTsKLQotICAgIGF1dG8gYmxvY2tT
ZWxlY3Rpb25TdGF0ZSA9IHJvb3RCb3guYmxvY2tGbG93KCkuc2VsZWN0aW9uU3RhdGUoKTsKLSAg
ICBpZiAoYmxvY2tTZWxlY3Rpb25TdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdodFN0YXRl
OjpJbnNpZGUgJiYgYmxvY2tTZWxlY3Rpb25TdGF0ZSAhPSBSZW5kZXJPYmplY3Q6OkhpZ2hsaWdo
dFN0YXRlOjpFbmQpCi0gICAgICAgIHJldHVybiB0b3A7Ci0KLSAgICBMYXlvdXRTaXplIG9mZnNl
dFRvQmxvY2tCZWZvcmU7Ci0gICAgYXV0byogYmxvY2tCZWZvcmUgPSBibG9ja0JlZm9yZVdpdGhp
blNlbGVjdGlvblJvb3Qocm9vdEJveC5ibG9ja0Zsb3coKSwgb2Zmc2V0VG9CbG9ja0JlZm9yZSk7
Ci0gICAgaWYgKCFpczxSZW5kZXJCbG9ja0Zsb3c+KGJsb2NrQmVmb3JlKSkKLSAgICAgICAgcmV0
dXJuIHRvcDsKLQotICAgIC8vIERvIG5vdCBhZGp1c3QgYmxvY2tzIHNoYXJpbmcgdGhlIHNhbWUg
bGluZS4KLSAgICBpZiAoIW9mZnNldFRvQmxvY2tCZWZvcmUuaGVpZ2h0KCkpCi0gICAgICAgIHJl
dHVybiB0b3A7Ci0KLSAgICBpZiAoYXV0byogbGFzdExpbmUgPSBkb3duY2FzdDxSZW5kZXJCbG9j
a0Zsb3c+KCpibG9ja0JlZm9yZSkubGFzdFJvb3RCb3goKSkgewotICAgICAgICBSZW5kZXJPYmpl
Y3Q6OkhpZ2hsaWdodFN0YXRlIGxhc3RMaW5lU2VsZWN0aW9uU3RhdGUgPSBsYXN0TGluZS0+c2Vs
ZWN0aW9uU3RhdGUoKTsKLSAgICAgICAgaWYgKGxhc3RMaW5lU2VsZWN0aW9uU3RhdGUgIT0gUmVu
ZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6SW5zaWRlICYmIGxhc3RMaW5lU2VsZWN0aW9uU3Rh
dGUgIT0gUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZTo6U3RhcnQpCi0gICAgICAgICAgICBy
ZXR1cm4gdG9wOwotCi0gICAgICAgIExheW91dFVuaXQgbGFzdExpbmVTZWxlY3Rpb25Cb3R0b20g
PSBsYXN0TGluZS0+c2VsZWN0aW9uQm90dG9tKCkgKyBvZmZzZXRUb0Jsb2NrQmVmb3JlLmhlaWdo
dCgpOwotICAgICAgICB0b3AgPSBzdGQ6Om1heCh0b3AsIGxhc3RMaW5lU2VsZWN0aW9uQm90dG9t
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHRvcDsKKyAgICByZXR1cm4gYmxvY2tGbG93KCkuYWRqdXN0
U2VsZWN0aW9uVG9wRm9yUHJlY2VkaW5nQmxvY2soc2VsZWN0aW9uVG9wKCkpOwogfQogCiBMYXlv
dXRVbml0IExlZ2FjeVJvb3RJbmxpbmVCb3g6OnNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDQ0NTZhYjU5
NmQxNDAxOTQ5MDliNTgyMmY1YmE3N2M5NDFiYzNkM2QuLmFhMTk1Yzk2ODJlM2E4N2VhOWMyMDY4
M2U3ZGZiODQ4NzA1ZDc5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwCkBAIC0zMjE0LDYgKzMyMTQsNjMgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OnNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlIHN0YXRlKQogICAgIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpzZXRTZWxlY3Rpb25TdGF0ZShzdGF0ZSk7CiB9CiAKK0xheW91dFVuaXQgUmVu
ZGVyQmxvY2tGbG93OjphZGp1c3RTZWxlY3Rpb25Ub3BGb3JQcmVjZWRpbmdCbG9jayhMYXlvdXRV
bml0IHRvcCkgY29uc3QKK3sKKyAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmpl
Y3Q6OkhpZ2hsaWdodFN0YXRlOjpJbnNpZGUgJiYgc2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJP
YmplY3Q6OkhpZ2hsaWdodFN0YXRlOjpFbmQpCisgICAgICAgIHJldHVybiB0b3A7CisKKyAgICBp
ZiAoaXNTZWxlY3Rpb25Sb290KCkpCisgICAgICAgIHJldHVybiB0b3A7CisKKyAgICBMYXlvdXRT
aXplIG9mZnNldFRvQmxvY2tCZWZvcmU7CisKKyAgICBhdXRvIGJsb2NrQmVmb3JlV2l0aGluU2Vs
ZWN0aW9uUm9vdCA9IFsmXSgpIC0+IGNvbnN0IFJlbmRlckJsb2NrRmxvdyogeworICAgICAgICBj
b25zdCBSZW5kZXJFbGVtZW50KiBvYmplY3QgPSB0aGlzOworICAgICAgICBjb25zdCBSZW5kZXJP
YmplY3QqIHNpYmxpbmcgPSBudWxscHRyOworICAgICAgICBkbyB7CisgICAgICAgICAgICBzaWJs
aW5nID0gb2JqZWN0LT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgICAgIHdoaWxlIChzaWJs
aW5nICYmICghaXM8UmVuZGVyQmxvY2s+KCpzaWJsaW5nKSB8fCBkb3duY2FzdDxSZW5kZXJCbG9j
az4oKnNpYmxpbmcpLmlzU2VsZWN0aW9uUm9vdCgpKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5n
ID0gc2libGluZy0+cHJldmlvdXNTaWJsaW5nKCk7CisKKyAgICAgICAgICAgIG9mZnNldFRvQmxv
Y2tCZWZvcmUgLT0gTGF5b3V0U2l6ZShkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkubG9n
aWNhbExlZnQoKSwgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmxvZ2ljYWxUb3AoKSk7
CisgICAgICAgICAgICBvYmplY3QgPSBvYmplY3QtPnBhcmVudCgpOworICAgICAgICB9IHdoaWxl
ICghc2libGluZyAmJiBpczxSZW5kZXJCbG9jaz4ob2JqZWN0KSAmJiAhZG93bmNhc3Q8UmVuZGVy
QmxvY2s+KCpvYmplY3QpLmlzU2VsZWN0aW9uUm9vdCgpKTsKKworICAgICAgICBpZiAoIXNpYmxp
bmcpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvKiBiZWZvcmVC
bG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrPihzaWJsaW5nKTsKKworICAgICAgICBvZmZzZXRU
b0Jsb2NrQmVmb3JlICs9IExheW91dFNpemUoYmVmb3JlQmxvY2stPmxvZ2ljYWxMZWZ0KCksIGJl
Zm9yZUJsb2NrLT5sb2dpY2FsVG9wKCkpOworCisgICAgICAgIGF1dG8qIGNoaWxkID0gYmVmb3Jl
QmxvY2stPmxhc3RDaGlsZCgpOworICAgICAgICB3aGlsZSAoaXM8UmVuZGVyQmxvY2s+KGNoaWxk
KSkgeworICAgICAgICAgICAgYmVmb3JlQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oY2hp
bGQpOworICAgICAgICAgICAgb2Zmc2V0VG9CbG9ja0JlZm9yZSArPSBMYXlvdXRTaXplKGJlZm9y
ZUJsb2NrLT5sb2dpY2FsTGVmdCgpLCBiZWZvcmVCbG9jay0+bG9naWNhbFRvcCgpKTsKKyAgICAg
ICAgICAgIGNoaWxkID0gYmVmb3JlQmxvY2stPmxhc3RDaGlsZCgpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBpczxSZW5kZXJCbG9ja0Zsb3c+KGJlZm9yZUJsb2NrKSA/IGRvd25jYXN0PFJl
bmRlckJsb2NrRmxvdz4oYmVmb3JlQmxvY2spIDogbnVsbHB0cjsKKyAgICB9OworCisgICAgYXV0
byogYmxvY2tCZWZvcmUgPSBibG9ja0JlZm9yZVdpdGhpblNlbGVjdGlvblJvb3QoKTsKKyAgICBp
ZiAoIWJsb2NrQmVmb3JlKQorICAgICAgICByZXR1cm4gdG9wOworCisgICAgLy8gRG8gbm90IGFk
anVzdCBibG9ja3Mgc2hhcmluZyB0aGUgc2FtZSBsaW5lLgorICAgIGlmICghb2Zmc2V0VG9CbG9j
a0JlZm9yZS5oZWlnaHQoKSkKKyAgICAgICAgcmV0dXJuIHRvcDsKKworICAgIGlmIChhdXRvIGxh
c3RMaW5lID0gTGF5b3V0SW50ZWdyYXRpb246Omxhc3RMaW5lRm9yKCpibG9ja0JlZm9yZSkpIHsK
KyAgICAgICAgUmVuZGVyT2JqZWN0OjpIaWdobGlnaHRTdGF0ZSBsYXN0TGluZVNlbGVjdGlvblN0
YXRlID0gbGFzdExpbmUtPnNlbGVjdGlvblN0YXRlKCk7CisgICAgICAgIGlmIChsYXN0TGluZVNl
bGVjdGlvblN0YXRlICE9IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6Okluc2lkZSAmJiBs
YXN0TGluZVNlbGVjdGlvblN0YXRlICE9IFJlbmRlck9iamVjdDo6SGlnaGxpZ2h0U3RhdGU6OlN0
YXJ0KQorICAgICAgICAgICAgcmV0dXJuIHRvcDsKKworICAgICAgICBMYXlvdXRVbml0IGxhc3RM
aW5lU2VsZWN0aW9uQm90dG9tID0gbGFzdExpbmUtPnNlbGVjdGlvbkJvdHRvbSgpICsgb2Zmc2V0
VG9CbG9ja0JlZm9yZS5oZWlnaHQoKTsKKyAgICAgICAgdG9wID0gc3RkOjptYXgodG9wLCBsYXN0
TGluZVNlbGVjdGlvbkJvdHRvbSk7CisgICAgfQorICAgIHJldHVybiB0b3A7Cit9CisKIEdhcFJl
Y3RzIFJlbmRlckJsb2NrRmxvdzo6aW5saW5lU2VsZWN0aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9v
dEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RCbG9jaywKICAgICBMYXlvdXRVbml0JiBsYXN0
TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbGFzdExvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBsYXN0
TG9naWNhbFJpZ2h0LCBjb25zdCBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzJiBjYWNoZSwg
Y29uc3QgUGFpbnRJbmZvKiBwYWludEluZm8pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmgKaW5kZXggZGZmNjFjYzkxZTc4Y2IyMThjMjk5OTFjNzNlYjIzYzk1
M2ZiYjY5Ni4uNzc1NjU4MzJhNDg0Yzg5ZjU3N2JkOTNhOWM5YzgxZmFhMGY2ZTZjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNDA0LDYgKzQwNCw4
IEBAIHB1YmxpYzoKICAgICAKICAgICBMYXlvdXRVbml0IGVuZFBhZGRpbmdXaWR0aEZvckNhcmV0
KCkgY29uc3Q7CiAKKyAgICBMYXlvdXRVbml0IGFkanVzdFNlbGVjdGlvblRvcEZvclByZWNlZGlu
Z0Jsb2NrKExheW91dFVuaXQgdG9wKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIGJvb2wgc2hv
dWxkUmVzZXRMb2dpY2FsSGVpZ2h0QmVmb3JlTGF5b3V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>